
    }j                    $  d dl Z d dlZd dlZddlmZmZmZmZmZ h dZ	da
 G d de      Z G d d	e
      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(ee      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z  G d1 d2e      Z! G d3 d4e      Z" G d5 d6e      Z# G d7 d8e      Z$ G d9 d:e      Z% G d; d<e      Z& G d= d>e      Z' G d? d@e      Z( G dA dBe      Z) G dC dDe      Z* G dE dFe      Z+ G dG dHe+      Z, G dI dJe+      Z- G dK dLe      Z. G dM dNe.      Z/ G dO dPe.      Z0 G dQ dRe      Z1 G dS dTe1      Z2 G dU dVe      Z3 G dW dXe      Z4 G dY dZe      Z5 G d[ d\e5      Z6 G d] d^e5      Z7 G d_ d`e      Z8 G da dbe      Z9 G dc dde      Z: G de dfe      Z; G dg dhe      Z< G di dje      Z= G dk dle=      Z> G dm dne      Z? G do dpe?      Z@ G dq dre?      ZA G ds dte      ZB G du dveB      ZC G dw dxeB      ZD G dy dze      ZE G d{ d|e      ZF G d} d~e      ZG G d de      ZH G d deH      ZI G d deI      ZJ G d de      ZK G d de      ZL G d deL      ZM G d deL      ZN G d deL      ZO G d deL      ZP G d de      ZQ G d de      ZR G d de      ZS G d de      ZT G d de      ZU G d de      ZV G d deV      ZW G d deV      ZX G d de      ZY G d de      ZZ G d de      Z[ G d de      Z\ G d de\      Z] G d de      Z^ G d de^      Z_ G d de_      Z` G d de      Za G d de      Zb G d de      Zc G d dec      Zd G d dec      Ze G d dec      Zf G d de      Zg G d de      Zh G d de      Zi G dÄ de      Zj G dń de      Zk G dǄ de_      Zl G dɄ de      Zm G d˄ dem      Zn G d̈́ dem      Zo G dτ dem      Zp G dф de      Zq G dӄ de      Zr G dՄ de      Zs G dׄ de      Zt G dل de      Zu G dۄ de      Zv G d݄ de      Zw G d߄ de      Zx G d de      Zy G d de      Zz G d dez      Z{ G d de      Z| G d dez      Z} G d dez      Z~ G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z G d1 d2e      Z G d3 d4e      Z G d5 d6e      Z G d7 d8e      Z G d9 d:e      Z G d; d<e      Z G d= d>e      Z G d? d@e      Z G dA dBe      Z G dC dDe      Z G dE dFe      Z G dG dHe      Z G dI dJe      Z G dK dLe      Z G dM dNe      Z G dO dPe      Z G dQ dRe      Z G dS dTe      Z G dU dVe      Z G dW dXe      Z G dY dZe      Z G d[ d\e      Z G d] d^e      Z G d_ d`e      Z G da dbe      Z G dc dde      Z G de dfe      Z G dg dhe      Z G di dje      Z G dk dle      Z G dm dne      Z G do dpe      Z G dq dre      Z G ds dte      Z G du dve      Z G dw dxe      Z G dy dze      Z G d{ d|e      Z G d} d~e      Z G d de      Z G d de      Z G d deɫ      Z G d deɫ      Z G d de      Z G d de      Z G d deͫ      Z G d deͫ      Z G d de      Z G d de      Z G d deѫ      Z G d deѫ      Z G d de      Z G d deԫ      Z G d deի      Z G d deի      Z G d deի      Z G d deի      Z G d deԫ      Z G d deԫ      Z G d deի      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de=      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G dÄ de      Z G dń de      Z G dǄ de      Z G dɄ de      Z G d˄ de      Z G d̈́ de      Z G dτ de      Z G dф de      Z G dӄ de      Z G dՄ de      Z G dׄ de      Z G dل de      Z G dۄ de      Z G d݄ de      Z G d߄ deH      Z G d de      Z G d de      Z G d de      Z G d de      Z G d deH      Z G d de      Z G d de      Z G d de      Z  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d de      Z	 G d de	      Z
 G d de	      Z G d de	      Z G d	 d
e	      Z G d de	      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z  G d1 d2e      Z! G d3 d4e      Z" G d5 d6e      Z# G d7 d8e      Z$ G d9 d:e      Z% G d; d<e      Z& G d= d>e      Z' G d? d@e      Z( G dA dBe      Z) G dC dDe      Z* G dE dFe      Z+ G dG dHe      Z, G dI dJe      Z- G dK dLe      Z. G dM dNe      Z/ G dO dPe      Z0 G dQ dRe      Z1 G dS dTe      Z2 G dU dVe      Z3 G dW dXe      Z4 G dY dZe      Z5 G d[ d\e      Z6 G d] d^e      Z7 G d_ d`e      Z8 G da dbe      Z9 G dc dde      Z: G de dfe      Z; G dg dhe      Z< G di dje      Z= G dk dle      Z> G dm dne      Z? G do dpe?      Z@ G dq dre      ZA G ds dte      ZB G du dve      ZC G dw dxe      ZD G dy dze      ZE G d{ d|eE      ZF G d} d~e      ZG G d de      ZH G d deH      ZI G d deH      ZJ G d de      ZK G d deK      ZL G d deK      ZM G d de      ZN G d de      ZO G d deO      ZP G d de      ZQ G d de      ZR G d de      ZS G d de      ZT G d de      ZU G d de      ZV G d de      ZW G d de      ZX G d deI      ZY G d deY      ZZ G d de      Z[ G d de_      Z\ G d de      Z] G d de      Z^ G d de      Z_ G d de      Z` G d de      Za G d de      Zb G d de      Zc G d de      Zd G d de      Ze G d de      Zf G d de      Zg G d de      Zh G d deh      Zi G dÄ dĐei      Zj G dń dƐeh      Zk G dǄ dȐei      Zl G dɄ de      Zm G d˄ d̐em      Zn G d̈́ dΐem      Zo G dτ de      Zp G dф de      Zq G dӄ de      Zr G dՄ de      Zs G dׄ dؐes      Zt G dل dڐes      Zu G dۄ de      Zv G d݄ de      Zw G d߄ de^      Zx G d de      Zy G d de      Zz G d de      Z{ G d de      Z| G d de      Z} G d de      Z~ G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e_      Z G d1 d2e      Z G d3 d4e      Z G d5 d6e      Z G d7 d8e      Z G d9 d:e      Z G d; d<e      Z G d= d>e      Z G d? d@e      Z G dA dBe_      Z G dC dDe_      Z G dE dFe_      Z G dG dHe_      Z G dI dJe^      Z G dK dLe      Z G dM dNe_      Z G dO dPe      Z G dQ dRe      Z G dS dTe      Z G dU dVe      Z G dW dXe      Z G dY dZe      Z G d[ d\e      Z G d] d^e      Z G d_ d`e      Z G da dbe      Z G dc dde      Z G de dfe      Z G dg dhe      Z G di dje      Z G dk dle      Z G dm dne      Z G do dpe      Z G dq dre      Z G ds dte      Z G du dve      Z G dw dxe      Z G dy dze      Z G d{ d|eū      Z G d} d~eū      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d deͫ      Z G d deͫ      Z G d deͫ      Z G d de      Z G d de      Z G d de      Z G d deӫ      Z G d deӫ      Z G d de      Z G d de֫      Z G d de֫      Z G d de      Z G d de٫      Z G d de٫      Z G d de٫      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G dÄ de      Z G dń de      Z G dǄ de      Z G dɄ de      Z G d˄ de      Z G d̈́ de      Z G dτ de      Z G dф de      Z G dӄ de      Z G dՄ de      Z G dׄ de      Z G dل de      Z G dۄ de      Z G d݄ de      Z G d߄ de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d de      Z	 G d de      Z
 G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de_      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e=      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z  G d1 d2e      Z! G d3 d4e      Z" G d5 d6e"      Z# G d7 d8e"      Z$ G d9 d:e      Z% G d; d<e%      Z& G d= d>e%      Z' G d? d@e      Z( G dA dBe      Z) G dC dDe      Z* G dE dFe*      Z+ G dG dHe+      Z, G dI dJe*      Z- G dK dLe+      Z. G dM dNe      Z/ G dO dPe      Z0 G dQ dRe      Z1 G dS dTe      Z2 G dU dVe      Z3 G dW dXe      Z4 G dY dZe      Z5 G d[ d\e      Z6 G d] d^e      Z7 G d_ d`e      Z8 G da dbe      Z9 G dc dde9      Z: G de dfe:      Z; G dg dhe:      Z< G di dje9      Z= G dk dle9      Z> G dm dne:      Z? G do dpe:      Z@ G dq dre      ZA G ds dte      ZB G du dve      ZC G dw dxe      ZD G dy dze      ZE G d{ d|e      ZF G d} d~e      ZG G d de      ZH G d de      ZI G d de      ZJ G d de      ZK G d deK      ZL G d deK      ZM G d de      ZN G d de      ZO G d deO      ZP G d deO      ZQ G d deO      ZR G d de      ZS G d de      ZT G d deT      ZU G d deT      ZV G d deT      ZW G d deT      ZX G d deT      ZY G d de      ZZ G d de      Z[ G d de      Z\ G d de\      Z] G d de\      Z^ G d de_      Z_ G d deH      Z` G d de      Za G d de      Zb G d de      Zc G d de      Zd G d de      Ze G d de      Zf G d de      Zg G d de      Zh G d de      Zi G dÄ de      Zj G dń de      Zk G dǄ de      Zl G dɄ de      Zm G d˄ de      Zn G d̈́ de      Zo G dτ dАeE      Zp G dф de      Zq G dӄ de_      Zr G dՄ de_      Zs G dׄ de      Zt G dل de      Zu G dۄ dܐeu      Zv G d݄ dސeu      Zw G d߄ de      Zx G d dex      Zy G d dex      Zz G d de      Z{ G d de      Z| G d de      Z} G d de      Z~ G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z G d1 d2e      Z G d3 d4e      Z G d5 d6e      Z G d7 d8e      Z G d9 d:e      Z G d; d<e      Z G d= d>e      Z G d? d@e      Z G dA dBe      Z G dC dDe      Z G dE dFe      Z G dG dHe      Z G dI dJe      Z G dK dLe      Z G dM dNe      Z G dO dPe      Z G dQ dRe      Z G dS dTe      Z G dU dVe      Z G dW dXe      Z G dY dZe      Z G d[ d\e      Z G d] d^e      Z G d_ d`e      Z G da dbe      Z G dc dde      Z G de dfe      Z G dg dhe      Z G di dje      Z G dk dle      Z G dm dne      Z G do dpe      Z G dq dre      Z G ds dte      Z G du dve«      Z G dw dxe      Z G dy dze«      Z G d{ d|e«      Z G d} d~eƫ      Z G d deƫ      Z G d de      Z G d de_      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d deի      Z G d deի      Z G d deի      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d deޫ      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G dÄ de      Z G dń de      Z G dǄ de      Z G dɄ de      Z G d˄ de      Z G d̈́ de      Z G dτ de      Z G dф de      Z G dӄ de      Z G dՄ de      Z G dׄ dؐe      Z G dل dڐe      Z G dۄ de      Z G d݄ dސe      Z G d߄ de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d de      Z	 G d de      Z
 G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z  G d1 d2e       Z! G d3 d4e       Z" G d5 d6e      Z# G d7 d8e      Z$ G d9 d:e$      Z% G d; d<e$      Z& G d= d>e      Z' G d? d@e      Z( G dA dBe      Z) G dC dDe      Z* G dE dFe      Z+ G dG dHe      Z, G dI dJe      Z- G dK dLe      Z. G dM dNe      Z/ G dO dPe/      Z0 G dQ dRe/      Z1 G dS dTe/      Z2 G dU dVe      Z3 G dW dXe      Z4 G dY dZe      Z5 G d[ d\e      Z6 G d] d^e      Z7 G d_ d`e      Z8 G da dbe      Z9 G dc dde      Z: G de dfe      Z; G dg dhe      Z< G di dje      Z= G dk dle      Z> G dm dne>      Z? G do dpe>      Z@ G dq dre      ZA G ds dte      ZB G du dve      ZC G dw dxe      ZD G dy dze      ZE G d{ d|e      ZF G d} d~eF      ZG G d deG      ZH G d deG      ZI G d de      ZJ G d de      ZK G d de      ZL G d de      ZM G d deM      ZN G d de"      ZO G d de      ZP G d de      ZQ G d de      ZR G d de      ZS G d de      ZT G d deT      ZU G d de      ZV G d deT      ZW G d de      ZX G d de      ZY G d deY      ZZ G d deY      Z[ G d deY      Z\ G d de      Z] G d de      Z^ G d de      Z_ G d de      Z` G d de      Za G d de      Zb G d de      Zc G d de      Zd G d ded      Ze G d ded      Zf G d de      Zg G d de      Zh G d deh      Zi G dÄ dĐeh      Zj G dń de      Zk G dǄ de      Zl G dɄ de      Zm G d˄ de      Zn G d̈́ de      Zo G dτ de      Zp G dф de      Zq G dӄ de      Zr G dՄ de      Zs G dׄ dؐes      Zt G dل dڐes      Zu G dۄ de      Zv G d݄ de      Zw G d߄ de      Zx G d de      Zy G d dey      Zz G d de      Z{ G d de      Z| G d de      Z} G d de}      Z~ G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z G d1 d2e      Z G d3 d4e      Z G d5 d6e      Z G d7 d8e      Z G d9 d:e      Z G d; d<e      Z G d= d>e      Z G d? d@e      Z G dA dBe      Z G dC dDe      Z G dE dFe      Z G dG dHe      Z G dI dJe      Z G dK dLe      Z G dM dNe      Z G dO dPe      Z G dQ dRe      Z G dS dTe      Z G dU dVe      Z G dW dXe      Z G dY dZe      Z G d[ d\e      Z G d] d^e      Z G d_ d`e      Z G da dbe      Z G dc dde      Z G de dfe      Z G dg dhe      Z G di dje      Z G dk dle      Z G dm dne      Z G do dpe      Z G dq dre      Z G ds dte      Z G du dve      Z G dw dxe      Z G dy dze      Z G d{ d|e      Z G d} d~e      Z G d deI      Z G d deȫ      Z G d deɫ      Z G d deɫ      Z G d deɫ      Z G d deȫ      Z G d deͫ      Z G d deͫ      Z G d deͫ      Z G d de      Z G d de      Z G d deH      Z G d de      Z G d deH      Z G d de      Z G d de      Z G d de      Z G d deث      Z G d de      Z G d deګ      Z G d de      Z G d de      Z G d deݫ      Z G d deݫ      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d deث      Z G d deګ      Z G dÄ de      Z G dń de      Z G dǄ dȐe      Z G dɄ dʐe      Z G d˄ de      Z G d̈́ de      Z G dτ de      Z G dф de      Z G dӄ dԐe      Z G dՄ de      Z G dׄ dؐe      Z G dل de      Z G dۄ de      Z G d݄ de      Z G d߄ de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d deF      Z  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d de      Z	 G d de      Z
 G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z  G d1 d2e      Z! G d3 d4e      Z" G d5 d6e      Z# G d7 d8e      Z$ G d9 d:e      Z% G d; d<e      Z& G d= d>e&      Z' G d? d@e&      Z( G dA dBe&      Z) G dC dDe      Z* G dE dFe      Z+ G dG dHe      Z, G dI dJe      Z- G dK dLe      Z. G dM dNe      Z/ G dO dPe      Z0 G dQ dRe      Z1 G dS dTe      Z2 G dU dVe      Z3 G dW dXe      Z4 G dY dZe      Z5 G d[ d\e      Z6 G d] d^e      Z7 G d_ d`e      Z8 G da dbe8      Z9 G dc dde8      Z: G de dfe      Z; G dg dhe      Z< G di dje<      Z= G dk dle=      Z> G dm dne=      Z? G do dpe<      Z@ G dq dre      ZA G ds dteA      ZB G du dve      ZC G dw dxeC      ZD G dy dzeC      ZE G d{ d|eA      ZF G d} d~eA      ZG G d de      ZH G d de      ZI G d deIe      ZJ G d deIe      ZK G d deI      ZL G d deI      ZM G d de      ZN G d de      ZO G d de      ZP G d de      ZQ G d de      ZR G d de      ZS G d de      ZT G d de      ZU G d de      ZV G d deM      ZW G d de      ZX G d de      ZY G d de      ZZ G d de      Z[ G d de      Z\ G d de      Z] G d de]      Z^ G d de]      Z_ G d de]      Z` G d de      Za G d de      Zb G d de      Zc G d de      Zd G d de      Ze G d de      Zf G d de      Zg G d de      Zh G d de      Zi G dÄ de      Zj G dń de      Zk G dǄ de      Zl G dɄ de      Zm G d˄ de      Zn G d̈́ de      Zo G dτ de      Zp G dф de      Zq G dӄ dԐeq      Zr G dՄ d֐eq      Zs G dׄ de      Zt G dل de      Zu G dۄ de      Zv G d݄ de      Zw G d߄ de      Zx G d de      Zy G d de      Zz G d deO      Z{ G d deO      Z| G d deO      Z} G d de      Z~ G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d 	d e      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d	 	d
e      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	dee      Z G 	d 	dee      Z G 	d 	d e      Z G 	d! 	d"e      Z G 	d# 	d$e      Z G 	d% 	d&e      Z G 	d' 	d(e      Z G 	d) 	d*e      Z G 	d+ 	d,e      Z G 	d- 	d.e      Z G 	d/ 	d0e      Z G 	d1 	d2e      Z G 	d3 	d4e      Z G 	d5 	d6e      Z G 	d7 	d8e      Z G 	d9 	d:e      Z G 	d; 	d<e      Z G 	d= 	d>e      Z G 	d? 	d@e      Z G 	dA 	dBe      Z G 	dC 	dDe      Z G 	dE 	dFe      Z G 	dG 	dHe      Z G 	dI 	dJe      Z G 	dK 	dLe      Z G 	dM 	dNe      Z G 	dO 	dPe      Z G 	dQ 	dRe      Z G 	dS 	dTe      Z G 	dU 	dVe      Z G 	dW 	dXe      Z G 	dY 	dZe      Z G 	d[ 	d\e      Z G 	d] 	d^e      Z G 	d_ 	d`e      Z G 	da 	dbe      Z G 	dc 	dde      Z G 	de 	dfe      Z G 	dg 	dhe      Z G 	di 	dje      Z G 	dk 	dle      Z G 	dm 	dne      Z G 	do 	dpe      Z G 	dq 	dre      Z G 	ds 	dte      Z G 	du 	dve      Z G 	dw 	dxe      Z G 	dy 	dze      Z G 	d{ 	d|eū      Z G 	d} 	d~eū      Z G 	d 	de      Z G 	d 	deȫ      Z G 	d 	deȫ      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	deϫ      Z G 	d 	deϫ      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	deث      Z G 	d 	deث      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	deޫ      Z G 	d 	deޫ      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	dÄ 	dĐe      Z G 	dń 	dƐe      Z G 	dǄ 	dȐe      Z G 	dɄ 	dʐe      Z G 	d˄ 	d̐e      Z G 	d̈́ 	dΐe      Z G 	dτ 	de      Z G 	dф 	dҐe      Z G 	dӄ 	de      Z G 	dՄ 	d֐e      Z G 	dׄ 	de      Z G 	dل 	de      Z G 	dۄ 	de      Z G 	d݄ 	de      Z G 	d߄ 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z  G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 	de      Z G 	d 
d e      Z G 
d 
de      Z	 G 
d 
de      Z
 G 
d 
de
      Z G 
d 
de
      Z G 
d	 
d
e
      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
d e      Z G 
d! 
d"e      Z G 
d# 
d$e      Z G 
d% 
d&e      Z G 
d' 
d(e      Z G 
d) 
d*e      Z G 
d+ 
d,e      Z G 
d- 
d.e      Z G 
d/ 
d0e      Z  G 
d1 
d2e       Z! G 
d3 
d4e       Z" G 
d5 
d6e       Z# G 
d7 
d8e       Z$ G 
d9 
d:e      Z% G 
d; 
d<e      Z& G 
d= 
d>e      Z' G 
d? 
d@e      Z( G 
dA 
dBe(      Z) G 
dC 
dDe(      Z* G 
dE 
dFe(      Z+ G 
dG 
dHe      Z, G 
dI 
dJe,      Z- G 
dK 
dLe,      Z. G 
dM 
dNe,      Z/ G 
dO 
dPe,      Z0 G 
dQ 
dRe      Z1 G 
dS 
dTe      Z2 G 
dU 
dVe      Z3 G 
dW 
dXe      Z4 G 
dY 
dZe      Z5 G 
d[ 
d\e5      Z6 G 
d] 
d^e5      Z7 G 
d_ 
d`e      Z8 G 
da 
dbe8      Z9 G 
dc 
dde8      Z: G 
de 
dfe      Z; G 
dg 
dhe      Z< G 
di 
dje      Z= G 
dk 
dle      Z> G 
dm 
dne      Z? G 
do 
dpe      Z@ G 
dq 
dre      ZA G 
ds 
dteA      ZB G 
du 
dveA      ZC G 
dw 
dxe      ZD G 
dy 
dze      ZE G 
d{ 
d|e      ZF G 
d} 
d~eF      ZG G 
d 
deF      ZH G 
d 
de      ZI G 
d 
de      ZJ G 
d 
de      ZK G 
d 
deK      ZL G 
d 
deK      ZM G 
d 
deM      ZN G 
d 
deK      ZO G 
d 
deO      ZP G 
d 
de      ZQ G 
d 
deK      ZR G 
d 
deR      ZS G 
d 
de      ZT G 
d 
deK      ZU G 
d 
de      ZV G 
d 
de      ZW G 
d 
de      ZX G 
d 
de      ZY G 
d 
de      ZZ G 
d 
de      Z[ G 
d 
de      Z\ G 
d 
de\      Z] G 
d 
de      Z^ G 
d 
de      Z_ G 
d 
de_      Z` G 
d 
de_      Za G 
d 
de_      Zb G 
d 
de      Zc G 
d 
de      Zd G 
d 
de      Ze G 
d 
de      Zf G 
d 
de      Zg G 
d 
de      Zh G 
d 
de      Zi G 
dÄ 
dĐei      Zj G 
dń 
dƐei      Zk G 
dǄ 
de      Zl G 
dɄ 
de      Zm G 
d˄ 
d̐em      Zn G 
d̈́ 
de      Zo G 
dτ 
de      Zp G 
dф 
dҐem      Zq G 
dӄ 
de      Zr G 
dՄ 
d֐er      Zs G 
dׄ 
dؐer      Zt G 
dل 
de      Zu G 
dۄ 
de      Zv G 
d݄ 
de      Zw G 
d߄ 
de      Zx G 
d 
de      Zy G 
d 
dey      Zz G 
d 
dey      Z{ G 
d 
de      Z| G 
d 
de      Z} G 
d 
de      Z~ G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d 
de      Z G 
d d e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z G d1 d2e      Z G d3 d4e      Z G d5 d6e      Z G d7 d8e      Z G d9 d:e      Z G d; d<e      Z G d= d>e      Z G d? d@e      Z G dA dBe      Z G dC dDe      Z G dE dFe      Z G dG dHe      Z G dI dJe      Z G dK dLe      Z G dM dNe      Z G dO dPe      Z G dQ dRe      Z G dS dTe      Z G dU dVe      Z G dW dXe_      Z G dY dZe      Z G d[ d\e      Z G d] d^e      Z G d_ d`e      Z G da dbe      Z G dc dde      Z G de dfe      Z G dg dhe      Z G di dje      Z G dk dle      Z G dm dne      Z G do dpe      Z G dq dre      Z G ds dte      Z G du dve      Z G dw dxe      Z G dy dze      Z G d{ d|e      Z G d} d~e      Z G d de      Z G d deȫ      Z G d deȫ      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d deϫ      Z G d deϫ      Z G d deϫ      Z G d de      Z G d de      Z G d deԫ      Z G d deԫ      Z G d deԫ      Z G d de      Z G d de      Z G d de      Z G d deګ      Z G d de۫      Z G d de۫      Z G d deګ      Z G d deګ      Z G d deګ      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G dÄ de      Z G dń de      Z G dǄ de      Z G dɄ de      Z G d˄ de      Z G d̈́ dΐe      Z G dτ dАe      Z G dф dҐe      Z G dӄ dԐe      Z G dՄ de      Z G dׄ de      Z G dل de      Z G dۄ de      Z G d݄ de      Z G d߄ de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d dee      Z  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d de      Z	 G d de      Z
 G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z  G d1 d2e      Z! G d3 d4e      Z" G d5 d6e      Z# G d7 d8e      Z$ G d9 d:e$      Z% G d; d<e$      Z& G d= d>e$      Z' G d? d@eF      Z( G dA dBe      Z) G dC dDe      Z* G dE dFe      Z+ G dG dHe      Z, G dI dJe      Z- G dK dLe-      Z. G dM dNe-      Z/ G dO dPe      Z0 G dQ dRe      Z1 G dS dTe      Z2 G dU dVe2      Z3 G dW dXe2      Z4 G dY dZe      Z5 G d[ d\e      Z6 G d] d^eI      Z7 G d_ d`eF      Z8 G da dbe8      Z9 G dc dde8      Z: G de dfe8      Z; G dg dhe      Z< G di dje      Z= G dk dle_      Z> G dm dne      Z? G do dpe      Z@ G dq dre      ZA G ds dte      ZB G du dve      ZC G dw dxe      ZD G dy dze      ZE G d{ d|e      ZF G d} d~e      ZG G d de      ZH G d de      ZI G d de      ZJ G d de      ZK G d de      ZL G d deL      ZM G d deL      ZN G d de߫      ZO G d deګ      ZP G d de      ZQ G d de      ZR G d de      ZS G d de      ZT G d de      ZU G d de      ZV G d de      ZW G d de      ZX G d de      ZY G d de      ZZ G d deZ      Z[ G d deZ      Z\ G d de      Z] G d de      Z^ G d de      Z_ G d de      Z` G d de`      Za G d de`      Zb G d de      Zc G d de      Zd G d deF      Ze G d deF      Zf G d de      Zg G d de      Zh G d deh      Zi G dÄ dĐeh      Zj G dń dƐej      Zk G dǄ dȐeh      Zl G dɄ dʐej      Zm G d˄ de      Zn G d̈́ dΐen      Zo G dτ dАen      Zp G dф dҐen      Zq G dӄ de      Zr G dՄ de      Zs G dׄ dؐes      Zt G dل dڐes      Zu G dۄ de      Zv G d݄ de      Zw G d߄ de      Zx G d de      Zy G d deY      Zz G d de      Z{ G d de      Z| G d de      Z} G d de}      Z~ G d de}      Z G d de}      Z G d de      Z G d de_      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z G d1 d2e      Z G d3 d4e      Z G d5 d6e      Z G d7 d8e      Z G d9 d:e      Z G d; d<e      Z G d= d>e      Z G d? d@e      Z G dA dBe      Z G dC dDe      Z G dE dFe      Z G dG dHe      Z G dI dJe      Z G dK dLe      Z G dM dNe      Z G dO dPe      Z G dQ dRe      Z G dS dTe      Z G dU dVe      Z G dW dXe      Z G dY dZe      Z G d[ d\e      Z G d] d^e      Z G d_ d`e      Z G da dbe      Z G dc dde      Z G de dfe      Z G dg dhe      Z G di dje      Z G dk dle      Z G dm dne      Z G do dpe      Z G dq dre      Z G ds dte      Z G du dve      Z G dw dxe      Z G dy dze      Z G d{ d|e      Z G d} d~e      Z G d de      Z G d de      Z G d de=      Z G d de      Z G d de      Z G d de      Z G d de_      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d deի      Z G d deի      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de۫      Z G d de۫      Z G d de۫      Z G d de      Z G d de۫      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G dÄ de      Z G dń de      Z G dǄ de      Z G dɄ de      Z G d˄ d̐e      Z G d̈́ dΐe      Z G dτ dАe      Z G dф dҐe      Z G dӄ dԐe      Z G dՄ d֐e      Z G dׄ dؐe      Z G dل dڐe      Z G dۄ dܐe      Z G d݄ de      Z G d߄ de      Z G d dee      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z  G d de       Z G d de      Z G d de      Z G d de      Z G d deѫ      Z G d de      Z G d de      Z G d d e      Z G d de      Z	 G d de      Z
 G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z  G d1 d2e      Z! G d3 d4e      Z" G d5 d6e      Z# G d7 d8e      Z$ G d9 d:e      Z% G d; d<e%      Z& G d= d>e%      Z' G d? d@e      Z( G dA dBe}      Z) G dC dDe      Z* G dE dFe      Z+ G dG dHe      Z, G dI dJe,      Z- G dK dLe,      Z. G dM dNe,      Z/ G dO dPe      Z0 G dQ dRe      Z1 G dS dTe      Z2 G dU dVe      Z3 G dW dXe3      Z4 G dY dZe3      Z5 G d[ d\e      Z6 G d] d^e      Z7 G d_ d`e7      Z8 G da dbe7eH      Z9 G dc dde7      Z: G de dfe      Z; G dg dhe      Z< G di dje      Z= G dk dle      Z> G dm dne      Z? G do dpe      Z@ G dq dre      ZA G ds dte      ZB G du dveB      ZC G dw dxeB      ZD G dy dzeB      ZE G d{ d|e      ZF G d} d~e      ZG G d de?      ZH G d de      ZI G d deI      ZJ G d deI      ZK G d de      ZL G d de      ZM G d de      ZN G d de      ZO G d de      ZP G d deO      ZQ G d de      ZR G d deO      ZS G d deR      ZT G d de      ZU G d de      ZV G d deO      ZW G d deO      ZX G d de      ZY G d de      ZZ G d de      Z[ G d de      Z\ G d de\      Z] G d de      Z^ G d de      Z_ G d de_      Z` G d de\      Za G d de      Zb G d de      Zc G d dec      Zd G d dec      Ze G d de      Zf G d def      Zg G d deg      Zh G d deg      Zi G dÄ dĐef      Zj G dń de      Zk G dǄ de      Zl G dɄ de      Zm G d˄ d̐em      Zn G d̈́ de      Zo G dτ dАem      Zp G dф dҐem      Zq G dӄ dԐe      Zr G dՄ de      Zs G dׄ de      Zt G dل dڐet      Zu G dۄ dܐe      Zv G d݄ de      Zw G d߄ dew      Zx G d dew      Zy G d de      Zz G d de      Z{ G d de      Z| G d de|      Z} G d de      Z~ G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d deH      Z G d de      Z G d d e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z G d1 d2ey      Z G d3 d4e      Z G d5 d6e      Z G d7 d8e      Z G d9 d:e      Z G d; d<e      Z G d= d>e      Z G d? d@e      Z G dA dBe      Z G dC dDe      Z G dE dFe      Z G dG dHe      Z G dI dJe      Z G dK dLe      Z G dM dNe      Z G dO dPe      Z G dQ dRe      Z G dS dTe      Z G dU dVe      Z G dW dXe      Z G dY dZe      Z G d[ d\e      Z G d] d^e      Z G d_ d`e      Z G da dbe      Z G dc dde      Z G de dfe      Z G dg dhe      Z G di dje      Z G dk dle      Z G dm dne      Z G do dpe      Z G dq dre      Z G ds dte      Z G du dve      Z G dw dxe      Z G dy dze      Z G d{ d|eū      Z G d} d~eƫ      Z G d deƫ      Z G d deȫ      Z G d deȫ      Z G d deƫ      Z G d deū      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d deث      Z G d deث      Z G d deث      Z G d de      Z G d deث      Z G d deث      Z G d deث      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G dÄ de      Z G dń dƐe      Z G dǄ dȐe      Z G dɄ dʐe      Z G d˄ d̐e      Z G d̈́ de      Z G dτ de      Z G dф de      Z G dӄ dԐe      Z G dՄ d֐e      Z G dׄ de      Z G dل de      Z G dۄ de      Z G d݄ dސe      Z G d߄ de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z  G d de      Z G d de      Z G d de      Z G d de      Zi dedededededed ed"ed$ed&ed(ed*ed,ed.ed0e d2e!d4e"i d6e#d8e$d:e%d<e&d>e'd@e(dBe)dDe*dHe,dJe-dNe/dPe0dTe2dVe3dXe4d\e6d^e7i d`e8dbe9dde:dfe;dhe<dle>dpe@dreAdveCdxeDdzeEd|eFd~eGdeJdeKdeMdeNi deOdePdeQdeRdeSdeTdeUdeWdeXdeYdeZde[de\de]de`deadebi deddeedefdegdehdeidejdekdeldendeodepdeqderdesdetdeui devdewdexdeyde{de|de}de~dededededededed edei deded
ededededededededed ed&ed(ed*ed,ed0ei d2ed4ed6ed8ed:ed<ed>ed@edDedFedHedJedLedNedRedTedVei dXedZed\ed^ed`eddedhedjedlednedpedtedveÓdxeēdzeœd|eƓd~eǓi deȓdeʓde˓de̓deΓdeϓdeГdeғdeӓde֓deדdeؓdeٓdeړdeۓdeܓdeݓi deޓdeߓdededededededededededededededei dededededededededededede dededededei deded ede
deded
edededededededed ed"ed$ei d&ed(ed*ed.ed0e d2e!d4e"d6e#d8e$d:e%d<e&d>e'd@e(dBe)dDe*dFe+dHe,i dJe-dLe.dNe/dPe0dRe1dTe2dVe3dXe4dZe5d\e6d^e7d`e8dbe9dde:dfe;dhe<dje=i dle>dpe@dreAdteBdveCdxeDd|eFd~eGdeIdeJdeLdeMdeNdePdeQdeRdeSi deTdeUdeVdeWdeXdeZde[de\de]de^de_de`deadebdecdeddeei defdegdĐejdƐekdȐeld̐endΐeodАepdҐeqdԐerdؐetdڐeudܐevdސewdexdeydezi de{de|de}de~dededededededededededededei dedededed ed"ed&ed(ed*ed,ed.ed0ed2ed4ed6ed8ed:ei d<ed>ed@edBedDedFedHedLedNedPedRedVedZed\ed^ed`eddei dfedhedjedlednedtedveÓdxeēd|eƓd~eǓdeȓdeɓdeʓde˓de̓deΓdeϓi deГdeѓdeғdeԓdeՓdeדdeؓdeړdeۓdeܓdeݓdeޓdeߓdedededei dededededededĐedƐedȐedʐed̐edΐedАedҐedԐed֐edؐei dڐedܐedސedededededededede dedededededei ded ede	de
deded
edededededededed ed"ed$ei d&ed(ed*ed,ed0e d2e!d6e#d8e$d<e&d>e'd@e(dBe)dHe,dJe-dLe.dNe/dPe0i dRe1dTe2dVe3dXe4dZe5d\e6d^e7d`e8dfe;dhe<dje=dle>dne?dpe@dreAdteBdveCi dxeDdzeEd|eFd~eGdeHdeIdeJdeLdeMdeNdePdeQdeRdeSdeUdeVdeWi deXdeYdeZde[de]de^de_de`deadebdecdeddeedefdegdehdeii dĐejdƐekdȐeldʐemd̐endΐeodАepdҐeqdԐerd֐esdؐetdܐevdސewdeydezde{de|i de}de~dedededededededed edededed
ededei dededededededed"ed$ed&ed*ed,ed.ed0ed4ed6ed8ei d:ed<ed>ed@edBedFedHedJedLedNedVedXedZed\ed^ed`edfei dhedjedlednedpedredveÓdxeēdzeœd~eǓdeȓdeɓdeʓde˓de̓de͓deΓi deϓdeГdeѓdeғdeӓdeԓde֓deדdeؓdeٓdeړdeۓdeܓdeݓdeޓdeߓdei dededededededededĐedƐedȐedʐed̐edΐedАedҐedԐei dؐedڐedސedededededededede dedededededei d ede	de
ded
edededededededededed ed"ed$ei d&ed(ed*ed,ed.ed2e!d4e"d6e#d:e%d<e&d>e'd@e(dBe)dDe*dFe+dHe,dJe-i dLe.dPe0dRe1dTe2dVe3dXe4dZe5d\e6d^e7d`e8dbe9dde:dfe;dhe<dje=dne?dpe@i dreAdteBdveCdxeDdzeEdeHdeIdeJdeKdeLdeNdeOdePdeQdeRdeSdeUi deVdeWdeXdeZde[de\de]de^de_de`deadebdecdeedefdegdeii dĐejdƐekdȐeldʐemd̐endΐeodАepdҐeqdԐerdؐetdڐeudܐevdސewdexdezde{de|i de~dedededededededed ededededed
ededei dededededed ed$ed&ed(ed*ed,ed.ed2ed6ed8ed:ed<ei d>ed@edBedDedFedHedJedLedNedRedTedVedXedZed\ed`edbei ddedhedjedlednedpedredtedveÓdxeēdzeœd|eƓd~eǓdeʓde˓de̓deΓi deϓdeГdeѓdeғdeӓdeԓdeՓde֓deדdeؓdeٓdeۓdeܓdeޓdeߓdedei dededededededĐedƐedʐed̐edΐedАedԐedؐedڐedܐedސei dededededededede dedededededed ede	de
i deded
ededededededededed ed"ed$ed(ed*ed.ei d0e d2e!d4e"d6e#d8e$d:e%d>e'd@e(dBe)dDe*dFe+dHe,dJe-dLe.dNe/dPe0dRe1i dTe2dVe3dXe4dZe5d\e6d^e7dbe9dde:dfe;dle>dne?dpe@dteBdxeDdzeEd|eFd~eGi deHdeJdeKdeLdeMdeNdeOdePdeQdeRdeSdeTdeUdeVdeWdeXdeYi deZde[de\de^de_de`deadebdecdeddeedefdegdehdeidĐejdƐeki dȐeldʐemd̐endΐeodАepdԐerd֐esdؐetdڐeudܐevdސewdexdeydezde{de|de}i de~dedededededede	d e	de	de	de	d
e	de	de	de	dei 	de	de	de	de	de	d e	d$e	d&e	d*e	d,e	d.e	d0e	d4e	d6e	d8e	d:e	d<ei 	d@e	dBe	dFe	dHe	dLe	dNe	dPe	dTe	dVe	dXe	dZe	d\e	d^e	d`e	dde	dfe	dhei 	dje	dle	dne	dpe	dre	dte	dveÓ	dxeē	d|eƓ	d~eǓ	deɓ	deʓ	de˓	de̓	de͓	deΓ	deГi 	deѓ	deғ	deӓ	deԓ	deՓ	de֓	deד	deٓ	deړ	deۓ	deܓ	deݓ	deߓ	de	de	de	dei 	de	de	de	de	dȐe	dʐe	d̐e	dΐe	dАe	dҐe	dԐe	d֐e	dؐe	dڐe	dܐe	dސe	dei 	de	de	de	de	de	de	de	de 	de	de	de	de	de
d e
de	
de
dei 
d
e
de
de
de
de
de
de
de
de
d e
d"e
d$e
d&e
d(e
d*e
d,e
d.ei 
d2e!
d4e"
d6e#
d8e$
d:e%
d<e&
d>e'
dBe)
dDe*
dFe+
dJe-
dLe.
dNe/
dPe0
dRe1
dTe2
dVe3i 
dXe4
dZe5
d\e6
d^e7
dbe9
dde:
dfe;
dhe<
dje=
dle>
dne?
dpe@
dteB
dveC
dxeD
dzeE
d~eGi 
deH
deI
deJ
deL
deM
deN
deO
deP
deQ
deR
deS
deT
deU
deV
deW
deX
deYi 
deZ
de[
de\
de]
de^
de`
dea
deb
dec
ded
dee
def
deg
deh
dĐej
dƐek
dȐeli 
d̐en
dΐeo
dАep
dҐeq
d֐es
dؐet
dڐeu
dܐev
dސew
dex
dez
de{
de|
de}
de~
de
dei 
de
de
de
de
ded ededededed
ededededededei dededed ed"ed$ed&ed(ed,ed.ed2ed4ed6ed:ed<ed>ed@ei dDedFedHedJedLedNedPedRedTedVedXedZed\ed^ed`edbeddei dhedjedlednedpedredtedveÓdxeēdzeœd|eƓd~eǓdeɓdeʓde˓de̓de͓i deΓdeГdeѓdeғdeӓdeՓde֓deדdeؓdeٓdeۓdeܓdeݓdeޓdeߓdedei dededededededĐedƐedȐedʐedΐedАedҐedԐed֐edؐedڐei dܐedސedededededede dededededededed ede	i de
deded
edededededededededed ed"ed(ed*ei d,ed.ed0e d2e!d4e"d6e#d:e%d<e&d>e'd@e(dBe)dDe*dFe+dHe,dLe.dNe/dPe0i dRe1dVe3dXe4dZe5d\e6d^e7dbe9dde:dfe;dhe<dje=dle>dne?dpe@dreAdteBdveCi dxeDdzeEd|eFd~eGdeHdeIdeJdeKdeMdeNdeOdePdeQdeRdeSdeTdeUi deVdeWdeXdeYde[de\de]de^de_deadebdecdeddeedefdegdeii dƐekdȐeldʐemdΐeodАepdҐeqdԐerdؐetdڐeudܐevdސewdexdeydezde{de|de~i dedededededededed ededededededededei dededededed"ed$ed&ed(ed*ed,ed.ed2ed4ed6ed<ed>ei d@edBedDedFedHedJedLedNedRedTedVedXedZed^ed`edbeddei dfedhedlednedpedredtedveÓdxeēdzeœd|eƓd~eǓdeȓdeɓdeʓde˓de̓i de͓deΓdeϓdeГdeѓdeғdeӓdeԓde֓deדdeؓdeٓdeړdeܓdeݓdeޓdeߓi dededededededededededĐedƐedȐed̐edΐedԐed֐ei dؐedڐedܐededededededededededededededei ded ede	de
deded
edededededededededed ei d"ed&ed*ed.ed0e d2e!d4e"d6e#d8e$d<e&d>e'd@e(dBe)dDe*dFe+dJe-dLe.i dNe/dPe0dRe1dTe2dXe4dZe5d\e6d`e8dbe9dde:dfe;dhe<dje=dle>dne?dpe@dreAi dveCdxeDdzeEd|eFd~eGdeHdeJdeKdeLdeMdeNdeOdePdeQdeRdeSdeTi deUdeVdeWdeXdeYdeZde[de]de^de`deadebdeddeedehdeidĐeji dƐekdȐeld̐endΐeodАepdҐeqdԐerd֐esdؐetdڐeudܐevdexdeydezde{de}de~i dedededededededed ededededed
edededei dedededed ed"ed$ed&ed(ed*ed,ed.ed0ed2ed6ed8ed:ei d<ed>ed@edBedDedFedHedLedNedPedRedTedVedXedZed\ed^ei d`edbeddedfedjedlednedpedredtedveÓdxeēd~eǓdeɓdeʓde˓de̓i de͓deΓdeϓdeГdeѓdeғdeӓdeԓdeՓde֓deדdeٓdeړdeۓdeܓdeݓdeޓi deߓdedededededededededƐedȐedʐed̐edΐedАedԐei d֐edؐedڐedސededededededededede dedededeZy(      N   )age_restrictedbug_reports_messageclasspropertyvariadicwrite_string>   get_testcasesextract_from_webpageget_webpage_testcasesFc                       e Zd Zd Zy)LazyLoadMetaClassc                     d| j                   vr6|t        vr.t        s(dat        d| j                   d| t                d       t        | j                  |      S )N_real_classTz?WARNING: Falling back to normal extractor since lazy extractor z does not have attribute 
)__dict__ALLOWED_CLASSMETHODS_WARNEDr   __name__r   getattr
real_class)clsnames     S/root/.hermes/venv/lib/python3.12/site-packages/yt_dlp/extractor/lazy_extractors.py__getattr__zLazyLoadMetaClass.__getattr__   s]    - 44WGZLL>)B4&I\I^H__ac ds~~t,,    N)r   
__module____qualname__r    r   r   r   r      s    -r   r   c                       e Zd Zed        Zd ZdZdZdZdZ	dZ
dZdZdZdZed        Zed        Zed        Zed	        Zed
        Zed        Zedddd       Zed        Zed        Zed        Zy)LazyLoadExtractorc                     d| j                   vr8t        t        j                  | j                        | j
                        | _        | j                  S )Nr   )r   r   	importlibimport_module_moduler   r   r   s    r   r   zLazyLoadExtractor.real_class   s9    ,%i&=&=ckk&JCLLYCOr   c                 t    | j                   j                  | j                         } |j                  |i | |S N)r   __new____init__)r   argskwargsinstances       r   r(   zLazyLoadExtractor.__new__$   s4    >>))#..94*6*r   NTr   c                      | j                   dd S )z>A string for getting the InfoExtractor with get_info_extractorN)r   r%   s    r   ie_keyzLazyLoadExtractor.ie_key3   s     ||CR  r   c                 (    | j                  |      duS )z8Receives a URL and returns True if suitable for this IE.N)_match_valid_urlr   urls     r   suitablezLazyLoadExtractor.suitable8   s    
 ##C(44r   c                    | j                   du ry d| j                  vr;t        t        t        j
                  t        | j                                     | _        t        t        d fd| j                  D              d       S )NF_VALID_URL_REc              3   @   K   | ]  }|j                          y wr'   )match).0regexr3   s     r   	<genexpr>z5LazyLoadExtractor._match_valid_url.<locals>.<genexpr>H   s     !Ru%++c"2!R   )

_VALID_URLr   tuplemaprecompiler   r6   nextfilterr2   s    `r   r1   z"LazyLoadExtractor._match_valid_url?   sb    >>U" #,,. %c"**hs~~6N&O PCF4!R@Q@Q!RSUYZZr   c                     | j                   S )zGetter method for _WORKING.)_WORKINGr%   s    r   workingzLazyLoadExtractor.workingJ   s     ||r   c                 P    	 | j                  |      S # t        t        f$ r Y y w xY wr'   )	_match_id
IndexErrorAttributeErrorr2   s     r   get_temp_idzLazyLoadExtractor.get_temp_idO   s-    	==%%N+ 		s    %%c                 B    | j                  |      j                  d      S )Nid)r1   groupr2   s     r   rH   zLazyLoadExtractor._match_idV   s    ##C(..t44r   )markdownsearch_examplesc                z   d}| j                   r)|r|d| j                    dz  }n|d| j                    dz  }| j                  du r|dz  }n| j                  r|d| j                   z  }| j                  re|| j                  rd	nd d
| j                   dz  }|r@d}|d| j                   t        j                  |       dt        j                  |       dz  }| j                         s	||rdndz  }|r0dj                  t        j                  dd| j                              n| j                  }|r| d| S |S )zDescription of the extractor z [*z*](## "netrc machine")z []Fz	 [HIDDEN] ;z "z	:" prefix)rR   510allz (e.g. ":z")z (**Currently broken**)z (Currently broken)z	 - **{}**z:(\w+:)u	   :​\g<1>)
_NETRC_MACHINEIE_DESC
SEARCH_KEYrandomchoicerF   formatr@   subIE_NAME)r   rO   rP   desc_COUNTSr   s         r   descriptionzLazyLoadExtractor.descriptionZ   sI    #c0011GHH"S//022;;%KD[[a}%%D>>ckksr2"S^^4DINND0(3>>"26==3I2J!FMMZiLjKkkmnn{{}-?TTD Zb""266*os{{#STgjgrgr#'$q1T1r   c                 0    t        | j                  |       S )zHTest whether the extractor is generally suitable for the given age limit)r   	age_limit)r   rf   s     r   is_suitablezLazyLoadExtractor.is_suitables   s     "#--;;;r   c                 ,    t        | j                        S r'   )boolrZ   r%   s    r   supports_loginz LazyLoadExtractor.supports_loginx   s    C&&''r   c                 b    | j                  |      rdddj                  | j                        S y)z=Returns whether the URL is of a single video, None if unknownTF)videoplaylistN)r4   get_RETURN_TYPEr2   s     r   is_single_videoz!LazyLoadExtractor.is_single_video|   s1     <<!u599#:J:JKK r   )r   r   r   r   r   r(   r$   _ENABLEDr=   rE   r[   rZ   r\   rf   ro   classmethodr/   r4   r1   rF   rK   rH   rd   rg   rj   rp   r   r   r   r    r       s    

 GHJHGNJIL! ! 5 5 [ [     5 5 %)4 2 20 < < ( ( L Lr   r    )	metaclassc                       e Zd Zy)LazyLoadSearchExtractorN)r   r   r   r   r   r   ru   ru      s    r   ru   c                       e Zd ZdZdZdZy)YoutubeBaseInfoExtractoryt_dlp.extractor.youtubeYoutubeBaseInfoExtractyoutubeNr   r   r   r$   ra   rZ   r   r   r   rw   rw      s    (G&GNr   rw   c                       e Zd ZdZdZdZy)YoutubeTabBaseInfoExtractorrx   YoutubeTabBaseInfoExtractrz   Nr{   r   r   r   r}   r}      s    (G)GNr   r}   c                        e Zd ZdZdZdZdZdZy)YoutubeClipIErx   zyoutube:clipz4https?://(?:www\.)?youtube\.com/clip/(?P<id>[^/?#]+)rz   rl   Nr   r   r   r$   ra   r=   rZ   ro   r   r   r   r   r      s    (GGIJNLr   r   c                   $    e Zd ZdZdZdZdZdZdZy)YoutubeConsentRedirectIErx   zyoutube:consentz"https?://consent\.youtube\.com/m\?Frz   rl   N	r   r   r   r$   ra   r=   r[   rZ   ro   r   r   r   r   r      s     (GG8JGNLr   r   c                        e Zd ZdZdZdZdZdZy)YoutubeFavouritesIErx   zyoutube:favoritesz:ytfav(?:ou?rite)?s?z9YouTube liked videos; ":ytfav" keyword (requires cookies)rz   Nr   r   r   r$   ra   r=   r[   rZ   r   r   r   r   r      s    (G!G'JIGNr   r   c                       e Zd ZdZdZdZy)YoutubeFeedsInfoExtractorrx   zyoutube:feedsrz   Nr{   r   r   r   r   r      s    (GGNr   r   c                        e Zd ZdZdZdZdZdZy)YoutubeHistoryIErx   zyoutube:historyz:ythis(?:tory)?z:Youtube watch history; ":ythis" keyword (requires cookies)rz   Nr   r   r   r   r   r      s    (GG"JJGNr   r   c                   D     e Zd ZdZdZdZdZdZdZdZ	e
 fd       Z xZS )	YoutubeIErx   rz   a/  (?x)^
                     (
                         (?:https?://|//)                                    # http(s):// or protocol-independent URL
                         (?:(?:(?:(?:\w+\.)?[yY][oO][uU][tT][uU][bB][eE](?:-nocookie|kids)?\.com|
                            (?:www\.)?deturl\.com/www\.youtube\.com|
                            (?:www\.)?pwnyoutube\.com|
                            (?:www\.)?hooktube\.com|
                            (?:www\.)?yourepeat\.com|
                            tube\.majestyc\.net|
                            (?:www\.)?redirect\.invidious\.io|(?:(?:www|dev)\.)?invidio\.us|(?:www\.)?invidious\.pussthecat\.org|(?:www\.)?invidious\.zee\.li|(?:www\.)?invidious\.ethibox\.fr|(?:www\.)?iv\.ggtyler\.dev|(?:www\.)?inv\.vern\.i2p|(?:www\.)?am74vkcrjp2d5v36lcdqgsj2m6x36tbrkhsruoegwfcizzabnfgf5zyd\.onion|(?:www\.)?inv\.riverside\.rocks|(?:www\.)?invidious\.silur\.me|(?:www\.)?inv\.bp\.projectsegfau\.lt|(?:www\.)?invidious\.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid\.onion|(?:www\.)?invidious\.slipfox\.xyz|(?:www\.)?invidious\.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd\.onion|(?:www\.)?inv\.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad\.onion|(?:www\.)?invidious\.tiekoetter\.com|(?:www\.)?iv\.odysfvr23q5wgt7i456o5t3trw2cw5dgn56vbjfbq2m7xsc5vqbqpcyd\.onion|(?:www\.)?invidious\.nerdvpn\.de|(?:www\.)?invidious\.weblibre\.org|(?:www\.)?inv\.odyssey346\.dev|(?:www\.)?invidious\.dhusch\.de|(?:www\.)?iv\.melmac\.space|(?:www\.)?watch\.thekitty\.zone|(?:www\.)?invidious\.privacydev\.net|(?:www\.)?ng27owmagn5amdm7l5s3rsqxwscl5ynppnis5dqcasogkyxcfqn7psid\.onion|(?:www\.)?invidious\.drivet\.xyz|(?:www\.)?vid\.priv\.au|(?:www\.)?euxxcnhsynwmfidvhjf6uzptsmh4dipkmgdmcmxxuo7tunp3ad2jrwyd\.onion|(?:www\.)?inv\.vern\.cc|(?:www\.)?invidious\.esmailelbob\.xyz|(?:www\.)?invidious\.sethforprivacy\.com|(?:www\.)?yt\.oelrichsgarcia\.de|(?:www\.)?yt\.artemislena\.eu|(?:www\.)?invidious\.flokinet\.to|(?:www\.)?invidious\.baczek\.me|(?:www\.)?y\.com\.sb|(?:www\.)?invidious\.epicsite\.xyz|(?:www\.)?invidious\.lidarshield\.cloud|(?:www\.)?yt\.funami\.tech|(?:www\.)?invidious\.3o7z6yfxhbw7n3za4rss6l434kmv55cgw2vuziwuigpwegswvwzqipyd\.onion|(?:www\.)?osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd\.onion|(?:www\.)?u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad\.onion|(?:(?:www|no)\.)?invidiou\.sh|(?:(?:www|fi)\.)?invidious\.snopyta\.org|(?:www\.)?invidious\.kabi\.tk|(?:www\.)?invidious\.mastodon\.host|(?:www\.)?invidious\.zapashcanon\.fr|(?:www\.)?(?:invidious(?:-us)?|piped)\.kavin\.rocks|(?:www\.)?invidious\.tinfoil-hat\.net|(?:www\.)?invidious\.himiko\.cloud|(?:www\.)?invidious\.reallyancient\.tech|(?:www\.)?invidious\.tube|(?:www\.)?invidiou\.site|(?:www\.)?invidious\.site|(?:www\.)?invidious\.xyz|(?:www\.)?invidious\.nixnet\.xyz|(?:www\.)?invidious\.048596\.xyz|(?:www\.)?invidious\.drycat\.fr|(?:www\.)?inv\.skyn3t\.in|(?:www\.)?tube\.poal\.co|(?:www\.)?tube\.connect\.cafe|(?:www\.)?vid\.wxzm\.sx|(?:www\.)?vid\.mint\.lgbt|(?:www\.)?vid\.puffyan\.us|(?:www\.)?yewtu\.be|(?:www\.)?yt\.elukerio\.org|(?:www\.)?yt\.lelux\.fi|(?:www\.)?invidious\.ggc-project\.de|(?:www\.)?yt\.maisputain\.ovh|(?:www\.)?ytprivate\.com|(?:www\.)?invidious\.13ad\.de|(?:www\.)?invidious\.toot\.koeln|(?:www\.)?invidious\.fdn\.fr|(?:www\.)?watch\.nettohikari\.com|(?:www\.)?invidious\.namazso\.eu|(?:www\.)?invidious\.silkky\.cloud|(?:www\.)?invidious\.exonip\.de|(?:www\.)?invidious\.riverside\.rocks|(?:www\.)?invidious\.blamefran\.net|(?:www\.)?invidious\.moomoo\.de|(?:www\.)?ytb\.trom\.tf|(?:www\.)?yt\.cyberhost\.uk|(?:www\.)?kgg2m7yk5aybusll\.onion|(?:www\.)?qklhadlycap4cnod\.onion|(?:www\.)?axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid\.onion|(?:www\.)?c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid\.onion|(?:www\.)?fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad\.onion|(?:www\.)?invidious\.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd\.onion|(?:www\.)?owxfohz4kjyv25fvlqilyxast7inivgiktls3th44jhk3ej3i7ya\.b32\.i2p|(?:www\.)?4l2dgddgsrkf2ous66i6seeyi6etzfgrue332grh2n7madpwopotugyd\.onion|(?:www\.)?w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd\.onion|(?:www\.)?kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad\.onion|(?:www\.)?grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad\.onion|(?:www\.)?hpniueoejy4opn7bc4ftgazyqjoeqwlvh2uiku2xqku6zpoa4bf5ruid\.onion|(?:www\.)?piped\.kavin\.rocks|(?:www\.)?piped\.tokhmi\.xyz|(?:www\.)?piped\.syncpundit\.io|(?:www\.)?piped\.mha\.fi|(?:www\.)?watch\.whatever\.social|(?:www\.)?piped\.garudalinux\.org|(?:www\.)?piped\.rivo\.lol|(?:www\.)?piped-libre\.kavin\.rocks|(?:www\.)?yt\.jae\.fi|(?:www\.)?piped\.mint\.lgbt|(?:www\.)?il\.ax|(?:www\.)?piped\.esmailelbob\.xyz|(?:www\.)?piped\.projectsegfau\.lt|(?:www\.)?piped\.privacydev\.net|(?:www\.)?piped\.palveluntarjoaja\.eu|(?:www\.)?piped\.smnz\.de|(?:www\.)?piped\.adminforge\.de|(?:www\.)?watch\.whatevertinfoil\.de|(?:www\.)?piped\.qdi\.fi|(?:(?:www|cf)\.)?piped\.video|(?:www\.)?piped\.aeong\.one|(?:www\.)?piped\.moomoo\.me|(?:www\.)?piped\.chauvet\.pro|(?:www\.)?watch\.leptons\.xyz|(?:www\.)?pd\.vern\.cc|(?:www\.)?piped\.hostux\.net|(?:www\.)?piped\.lunar\.icu|(?:www\.)?hyperpipe\.surge\.sh|(?:www\.)?hyperpipe\.esmailelbob\.xyz|(?:www\.)?listen\.whatever\.social|(?:www\.)?music\.adminforge\.de|
                            youtube\.googleapis\.com)/                        # the various hostnames, with wildcard subdomains
                         (?:.*?\#/)?                                          # handle anchor (#/) redirect urls
                         (?:                                                  # the various things that can precede the ID:
                             (?:(?:v|embed|e|shorts|live)/(?!videoseries|live_stream))  # v/ or embed/ or e/ or shorts/
                             |(?:                                             # or the v= param in all its forms
                                 (?:(?:watch|movie)(?:_popup)?(?:\.php)?/?)?  # preceding watch(_popup|.php) or nothing (like /?v=xxxx)
                                 (?:\?|\#!?)                                  # the params delimiter ? or # or #!
                                 (?:.*?[&;])??                                # any other preceding param (like /?s=tuff&v=xxxx or ?s=tuff&amp;v=V36LpHqtcDY)
                                 v=
                             )
                         ))
                         |(?:
                            youtu\.be|                                        # just youtu.be/xxxx
                            vid\.plus|                                        # or vid.plus/xxxx
                            zwearz\.com/watch|                                # or zwearz.com/watch/xxxx
                            (?:www\.)?redirect\.invidious\.io|(?:(?:www|dev)\.)?invidio\.us|(?:www\.)?invidious\.pussthecat\.org|(?:www\.)?invidious\.zee\.li|(?:www\.)?invidious\.ethibox\.fr|(?:www\.)?iv\.ggtyler\.dev|(?:www\.)?inv\.vern\.i2p|(?:www\.)?am74vkcrjp2d5v36lcdqgsj2m6x36tbrkhsruoegwfcizzabnfgf5zyd\.onion|(?:www\.)?inv\.riverside\.rocks|(?:www\.)?invidious\.silur\.me|(?:www\.)?inv\.bp\.projectsegfau\.lt|(?:www\.)?invidious\.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid\.onion|(?:www\.)?invidious\.slipfox\.xyz|(?:www\.)?invidious\.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd\.onion|(?:www\.)?inv\.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad\.onion|(?:www\.)?invidious\.tiekoetter\.com|(?:www\.)?iv\.odysfvr23q5wgt7i456o5t3trw2cw5dgn56vbjfbq2m7xsc5vqbqpcyd\.onion|(?:www\.)?invidious\.nerdvpn\.de|(?:www\.)?invidious\.weblibre\.org|(?:www\.)?inv\.odyssey346\.dev|(?:www\.)?invidious\.dhusch\.de|(?:www\.)?iv\.melmac\.space|(?:www\.)?watch\.thekitty\.zone|(?:www\.)?invidious\.privacydev\.net|(?:www\.)?ng27owmagn5amdm7l5s3rsqxwscl5ynppnis5dqcasogkyxcfqn7psid\.onion|(?:www\.)?invidious\.drivet\.xyz|(?:www\.)?vid\.priv\.au|(?:www\.)?euxxcnhsynwmfidvhjf6uzptsmh4dipkmgdmcmxxuo7tunp3ad2jrwyd\.onion|(?:www\.)?inv\.vern\.cc|(?:www\.)?invidious\.esmailelbob\.xyz|(?:www\.)?invidious\.sethforprivacy\.com|(?:www\.)?yt\.oelrichsgarcia\.de|(?:www\.)?yt\.artemislena\.eu|(?:www\.)?invidious\.flokinet\.to|(?:www\.)?invidious\.baczek\.me|(?:www\.)?y\.com\.sb|(?:www\.)?invidious\.epicsite\.xyz|(?:www\.)?invidious\.lidarshield\.cloud|(?:www\.)?yt\.funami\.tech|(?:www\.)?invidious\.3o7z6yfxhbw7n3za4rss6l434kmv55cgw2vuziwuigpwegswvwzqipyd\.onion|(?:www\.)?osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd\.onion|(?:www\.)?u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad\.onion|(?:(?:www|no)\.)?invidiou\.sh|(?:(?:www|fi)\.)?invidious\.snopyta\.org|(?:www\.)?invidious\.kabi\.tk|(?:www\.)?invidious\.mastodon\.host|(?:www\.)?invidious\.zapashcanon\.fr|(?:www\.)?(?:invidious(?:-us)?|piped)\.kavin\.rocks|(?:www\.)?invidious\.tinfoil-hat\.net|(?:www\.)?invidious\.himiko\.cloud|(?:www\.)?invidious\.reallyancient\.tech|(?:www\.)?invidious\.tube|(?:www\.)?invidiou\.site|(?:www\.)?invidious\.site|(?:www\.)?invidious\.xyz|(?:www\.)?invidious\.nixnet\.xyz|(?:www\.)?invidious\.048596\.xyz|(?:www\.)?invidious\.drycat\.fr|(?:www\.)?inv\.skyn3t\.in|(?:www\.)?tube\.poal\.co|(?:www\.)?tube\.connect\.cafe|(?:www\.)?vid\.wxzm\.sx|(?:www\.)?vid\.mint\.lgbt|(?:www\.)?vid\.puffyan\.us|(?:www\.)?yewtu\.be|(?:www\.)?yt\.elukerio\.org|(?:www\.)?yt\.lelux\.fi|(?:www\.)?invidious\.ggc-project\.de|(?:www\.)?yt\.maisputain\.ovh|(?:www\.)?ytprivate\.com|(?:www\.)?invidious\.13ad\.de|(?:www\.)?invidious\.toot\.koeln|(?:www\.)?invidious\.fdn\.fr|(?:www\.)?watch\.nettohikari\.com|(?:www\.)?invidious\.namazso\.eu|(?:www\.)?invidious\.silkky\.cloud|(?:www\.)?invidious\.exonip\.de|(?:www\.)?invidious\.riverside\.rocks|(?:www\.)?invidious\.blamefran\.net|(?:www\.)?invidious\.moomoo\.de|(?:www\.)?ytb\.trom\.tf|(?:www\.)?yt\.cyberhost\.uk|(?:www\.)?kgg2m7yk5aybusll\.onion|(?:www\.)?qklhadlycap4cnod\.onion|(?:www\.)?axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid\.onion|(?:www\.)?c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid\.onion|(?:www\.)?fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad\.onion|(?:www\.)?invidious\.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd\.onion|(?:www\.)?owxfohz4kjyv25fvlqilyxast7inivgiktls3th44jhk3ej3i7ya\.b32\.i2p|(?:www\.)?4l2dgddgsrkf2ous66i6seeyi6etzfgrue332grh2n7madpwopotugyd\.onion|(?:www\.)?w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd\.onion|(?:www\.)?kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad\.onion|(?:www\.)?grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad\.onion|(?:www\.)?hpniueoejy4opn7bc4ftgazyqjoeqwlvh2uiku2xqku6zpoa4bf5ruid\.onion|(?:www\.)?piped\.kavin\.rocks|(?:www\.)?piped\.tokhmi\.xyz|(?:www\.)?piped\.syncpundit\.io|(?:www\.)?piped\.mha\.fi|(?:www\.)?watch\.whatever\.social|(?:www\.)?piped\.garudalinux\.org|(?:www\.)?piped\.rivo\.lol|(?:www\.)?piped-libre\.kavin\.rocks|(?:www\.)?yt\.jae\.fi|(?:www\.)?piped\.mint\.lgbt|(?:www\.)?il\.ax|(?:www\.)?piped\.esmailelbob\.xyz|(?:www\.)?piped\.projectsegfau\.lt|(?:www\.)?piped\.privacydev\.net|(?:www\.)?piped\.palveluntarjoaja\.eu|(?:www\.)?piped\.smnz\.de|(?:www\.)?piped\.adminforge\.de|(?:www\.)?watch\.whatevertinfoil\.de|(?:www\.)?piped\.qdi\.fi|(?:(?:www|cf)\.)?piped\.video|(?:www\.)?piped\.aeong\.one|(?:www\.)?piped\.moomoo\.me|(?:www\.)?piped\.chauvet\.pro|(?:www\.)?watch\.leptons\.xyz|(?:www\.)?pd\.vern\.cc|(?:www\.)?piped\.hostux\.net|(?:www\.)?piped\.lunar\.icu|(?:www\.)?hyperpipe\.surge\.sh|(?:www\.)?hyperpipe\.esmailelbob\.xyz|(?:www\.)?listen\.whatever\.social|(?:www\.)?music\.adminforge\.de
                         )/
                         |(?:www\.)?cleanvideosearch\.com/media/action/yt/watch\?videoId=
                         )
                     )?                                                       # all until now is optional -> you can pass the naked ID
                     (?P<id>[0-9A-Za-z_-]{11})                              # here is it! the YouTube video ID
                     (?(1).+)?                                                # if we found the ID, everything can follow
                     (?:\#|$)YouTube   rl   c                 l    ddl m}  ||      }|j                  dd g      d   ryt        |   |      S )Nr   parse_qslistF)yt_dlp.utilsr   rn   superr4   r   r3   r   qs	__class__s       r   r4   zYoutubeIE.suitable   s7    )c]66&4&!!$w$$r   )r   r   r   r$   ra   r=   r[   rZ   rf   ro   rr   r4   __classcell__r   s   @r   r   r      s<    (GG ZJJGNIL% %r   r   c                        e Zd ZdZdZdZdZdZy)YoutubeLivestreamEmbedIErx   YoutubeLivestreamEmbedzVhttps?://(?:\w+\.)?youtube\.com/embed/live_stream/?\?(?:[^#]+&)?channel=(?P<id>[^&#]+)zYouTube livestream embedsrz   Nr   r   r   r   r   r      s    (G&GmJ)GNr   r   c                   $    e Zd ZdZdZdZdZdZdZy)YoutubeMusicSearchURLIErx   zyoutube:music:search_urlzThttps?://music\.youtube\.com/search\?([^#]+&)?(?:search_query|q)=(?:[^&]+)(?:[&#]|$)z?YouTube music search URLs with selectable sections, e.g. #songsrz   rm   Nr   r   r   r   r   r      s     (G(GjJOGNLr   r   c                        e Zd ZdZdZdZdZdZy)YoutubeNotificationsIErx   zyoutube:notifz:ytnotif(?:ication)?s?z<YouTube notifications; ":ytnotif" keyword (requires cookies)rz   Nr   r   r   r   r   r      s    (GG)JLGNr   r   c                   @     e Zd ZdZdZdZdZdZdZe	 fd       Z
 xZS )YoutubePlaylistIErx   zyoutube:playlista  (?x)(?:
                        (?:https?://)?
                        (?:\w+\.)?
                        (?:
                            (?:
                                youtube(?:kids)?\.com|
                                (?:www\.)?redirect\.invidious\.io|(?:(?:www|dev)\.)?invidio\.us|(?:www\.)?invidious\.pussthecat\.org|(?:www\.)?invidious\.zee\.li|(?:www\.)?invidious\.ethibox\.fr|(?:www\.)?iv\.ggtyler\.dev|(?:www\.)?inv\.vern\.i2p|(?:www\.)?am74vkcrjp2d5v36lcdqgsj2m6x36tbrkhsruoegwfcizzabnfgf5zyd\.onion|(?:www\.)?inv\.riverside\.rocks|(?:www\.)?invidious\.silur\.me|(?:www\.)?inv\.bp\.projectsegfau\.lt|(?:www\.)?invidious\.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid\.onion|(?:www\.)?invidious\.slipfox\.xyz|(?:www\.)?invidious\.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd\.onion|(?:www\.)?inv\.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad\.onion|(?:www\.)?invidious\.tiekoetter\.com|(?:www\.)?iv\.odysfvr23q5wgt7i456o5t3trw2cw5dgn56vbjfbq2m7xsc5vqbqpcyd\.onion|(?:www\.)?invidious\.nerdvpn\.de|(?:www\.)?invidious\.weblibre\.org|(?:www\.)?inv\.odyssey346\.dev|(?:www\.)?invidious\.dhusch\.de|(?:www\.)?iv\.melmac\.space|(?:www\.)?watch\.thekitty\.zone|(?:www\.)?invidious\.privacydev\.net|(?:www\.)?ng27owmagn5amdm7l5s3rsqxwscl5ynppnis5dqcasogkyxcfqn7psid\.onion|(?:www\.)?invidious\.drivet\.xyz|(?:www\.)?vid\.priv\.au|(?:www\.)?euxxcnhsynwmfidvhjf6uzptsmh4dipkmgdmcmxxuo7tunp3ad2jrwyd\.onion|(?:www\.)?inv\.vern\.cc|(?:www\.)?invidious\.esmailelbob\.xyz|(?:www\.)?invidious\.sethforprivacy\.com|(?:www\.)?yt\.oelrichsgarcia\.de|(?:www\.)?yt\.artemislena\.eu|(?:www\.)?invidious\.flokinet\.to|(?:www\.)?invidious\.baczek\.me|(?:www\.)?y\.com\.sb|(?:www\.)?invidious\.epicsite\.xyz|(?:www\.)?invidious\.lidarshield\.cloud|(?:www\.)?yt\.funami\.tech|(?:www\.)?invidious\.3o7z6yfxhbw7n3za4rss6l434kmv55cgw2vuziwuigpwegswvwzqipyd\.onion|(?:www\.)?osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd\.onion|(?:www\.)?u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad\.onion|(?:(?:www|no)\.)?invidiou\.sh|(?:(?:www|fi)\.)?invidious\.snopyta\.org|(?:www\.)?invidious\.kabi\.tk|(?:www\.)?invidious\.mastodon\.host|(?:www\.)?invidious\.zapashcanon\.fr|(?:www\.)?(?:invidious(?:-us)?|piped)\.kavin\.rocks|(?:www\.)?invidious\.tinfoil-hat\.net|(?:www\.)?invidious\.himiko\.cloud|(?:www\.)?invidious\.reallyancient\.tech|(?:www\.)?invidious\.tube|(?:www\.)?invidiou\.site|(?:www\.)?invidious\.site|(?:www\.)?invidious\.xyz|(?:www\.)?invidious\.nixnet\.xyz|(?:www\.)?invidious\.048596\.xyz|(?:www\.)?invidious\.drycat\.fr|(?:www\.)?inv\.skyn3t\.in|(?:www\.)?tube\.poal\.co|(?:www\.)?tube\.connect\.cafe|(?:www\.)?vid\.wxzm\.sx|(?:www\.)?vid\.mint\.lgbt|(?:www\.)?vid\.puffyan\.us|(?:www\.)?yewtu\.be|(?:www\.)?yt\.elukerio\.org|(?:www\.)?yt\.lelux\.fi|(?:www\.)?invidious\.ggc-project\.de|(?:www\.)?yt\.maisputain\.ovh|(?:www\.)?ytprivate\.com|(?:www\.)?invidious\.13ad\.de|(?:www\.)?invidious\.toot\.koeln|(?:www\.)?invidious\.fdn\.fr|(?:www\.)?watch\.nettohikari\.com|(?:www\.)?invidious\.namazso\.eu|(?:www\.)?invidious\.silkky\.cloud|(?:www\.)?invidious\.exonip\.de|(?:www\.)?invidious\.riverside\.rocks|(?:www\.)?invidious\.blamefran\.net|(?:www\.)?invidious\.moomoo\.de|(?:www\.)?ytb\.trom\.tf|(?:www\.)?yt\.cyberhost\.uk|(?:www\.)?kgg2m7yk5aybusll\.onion|(?:www\.)?qklhadlycap4cnod\.onion|(?:www\.)?axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid\.onion|(?:www\.)?c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid\.onion|(?:www\.)?fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad\.onion|(?:www\.)?invidious\.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd\.onion|(?:www\.)?owxfohz4kjyv25fvlqilyxast7inivgiktls3th44jhk3ej3i7ya\.b32\.i2p|(?:www\.)?4l2dgddgsrkf2ous66i6seeyi6etzfgrue332grh2n7madpwopotugyd\.onion|(?:www\.)?w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd\.onion|(?:www\.)?kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad\.onion|(?:www\.)?grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad\.onion|(?:www\.)?hpniueoejy4opn7bc4ftgazyqjoeqwlvh2uiku2xqku6zpoa4bf5ruid\.onion|(?:www\.)?piped\.kavin\.rocks|(?:www\.)?piped\.tokhmi\.xyz|(?:www\.)?piped\.syncpundit\.io|(?:www\.)?piped\.mha\.fi|(?:www\.)?watch\.whatever\.social|(?:www\.)?piped\.garudalinux\.org|(?:www\.)?piped\.rivo\.lol|(?:www\.)?piped-libre\.kavin\.rocks|(?:www\.)?yt\.jae\.fi|(?:www\.)?piped\.mint\.lgbt|(?:www\.)?il\.ax|(?:www\.)?piped\.esmailelbob\.xyz|(?:www\.)?piped\.projectsegfau\.lt|(?:www\.)?piped\.privacydev\.net|(?:www\.)?piped\.palveluntarjoaja\.eu|(?:www\.)?piped\.smnz\.de|(?:www\.)?piped\.adminforge\.de|(?:www\.)?watch\.whatevertinfoil\.de|(?:www\.)?piped\.qdi\.fi|(?:(?:www|cf)\.)?piped\.video|(?:www\.)?piped\.aeong\.one|(?:www\.)?piped\.moomoo\.me|(?:www\.)?piped\.chauvet\.pro|(?:www\.)?watch\.leptons\.xyz|(?:www\.)?pd\.vern\.cc|(?:www\.)?piped\.hostux\.net|(?:www\.)?piped\.lunar\.icu|(?:www\.)?hyperpipe\.surge\.sh|(?:www\.)?hyperpipe\.esmailelbob\.xyz|(?:www\.)?listen\.whatever\.social|(?:www\.)?music\.adminforge\.de
                            )
                            /.*?\?.*?\blist=
                        )?
                        (?P<id>(?:(?:PL|LL|EC|UU|FL|RD|UL|TL|PU|OLAK5uy_)[0-9A-Za-z-_]{10,}|RDMM|WL|LL|LM))
                     )zYouTube playlistsrz   rm   c                     t         j                  |      ryddlm}  ||      }|j	                  dd g      d   ryt
        |   |      S )NFr   r   v)YoutubeTabIEr4   r   r   rn   r   r   s       r   r4   zYoutubePlaylistIE.suitable   sH      %)c]66#vq!w$$r   r   r   r   r$   ra   r=   r[   rZ   ro   rr   r4   r   r   s   @r   r   r      s7    (G G XXJ!GNL% %r   r   c                        e Zd ZdZdZdZdZdZy)YoutubeRecommendedIErx   zyoutube:recommendedz?https?://(?:www\.)?youtube\.com/?(?:[?#]|$)|:ytrec(?:ommended)?z,YouTube recommended videos; ":ytrec" keywordrz   Nr   r   r   r   r   r      s    (G#GTJ<GNr   r   c                   (    e Zd ZdZdZdZdZdZdZdZ	y)	YoutubeSearchIErx   zyoutube:searchz7ytsearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zYouTube searchrz   ytsearchrm   N
r   r   r   r$   ra   r=   r[   rZ   r\   ro   r   r   r   r   r     s%    (GGLJGNJLr   r   c                   $    e Zd ZdZdZdZdZdZdZy)YoutubeSearchURLIErx   zyoutube:search_urlzchttps?://(?:www\.)?youtube\.com/(?:results|search)\?([^#]+&)?(?:search_query|q)=(?:[^&]+)(?:[&#]|$)z3YouTube search URLs with sorting and filter supportrz   rm   Nr   r   r   r   r   r     s     (G"GyJCGNLr   r   c                        e Zd ZdZdZdZdZdZy)YoutubeShortsAudioPivotIErx   zyoutube:shorts:pivot:audioz?https?://(?:www\.)?youtube\.com/source/(?P<id>[\w-]{11})/shortsz@YouTube Shorts audio pivot (Shorts using audio of a given video)rz   Nr   r   r   r   r   r     s    (G*GUJPGNr   r   c                        e Zd ZdZdZdZdZdZy)YoutubeSubscriptionsIErx   zyoutube:subscriptionsz:ytsub(?:scription)?s?z@YouTube subscriptions feed; ":ytsubs" keyword (requires cookies)rz   Nr   r   r   r   r   r     s    (G%G)JPGNr   r   c                   @     e Zd ZdZdZdZdZdZdZe	 fd       Z
 xZS )r   rx   zyoutube:taba  (?x:
        https?://
            (?!consent\.)(?:\w+\.)?
            (?:
                youtube(?:kids)?\.com|
                (?:www\.)?redirect\.invidious\.io|(?:(?:www|dev)\.)?invidio\.us|(?:www\.)?invidious\.pussthecat\.org|(?:www\.)?invidious\.zee\.li|(?:www\.)?invidious\.ethibox\.fr|(?:www\.)?iv\.ggtyler\.dev|(?:www\.)?inv\.vern\.i2p|(?:www\.)?am74vkcrjp2d5v36lcdqgsj2m6x36tbrkhsruoegwfcizzabnfgf5zyd\.onion|(?:www\.)?inv\.riverside\.rocks|(?:www\.)?invidious\.silur\.me|(?:www\.)?inv\.bp\.projectsegfau\.lt|(?:www\.)?invidious\.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid\.onion|(?:www\.)?invidious\.slipfox\.xyz|(?:www\.)?invidious\.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd\.onion|(?:www\.)?inv\.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad\.onion|(?:www\.)?invidious\.tiekoetter\.com|(?:www\.)?iv\.odysfvr23q5wgt7i456o5t3trw2cw5dgn56vbjfbq2m7xsc5vqbqpcyd\.onion|(?:www\.)?invidious\.nerdvpn\.de|(?:www\.)?invidious\.weblibre\.org|(?:www\.)?inv\.odyssey346\.dev|(?:www\.)?invidious\.dhusch\.de|(?:www\.)?iv\.melmac\.space|(?:www\.)?watch\.thekitty\.zone|(?:www\.)?invidious\.privacydev\.net|(?:www\.)?ng27owmagn5amdm7l5s3rsqxwscl5ynppnis5dqcasogkyxcfqn7psid\.onion|(?:www\.)?invidious\.drivet\.xyz|(?:www\.)?vid\.priv\.au|(?:www\.)?euxxcnhsynwmfidvhjf6uzptsmh4dipkmgdmcmxxuo7tunp3ad2jrwyd\.onion|(?:www\.)?inv\.vern\.cc|(?:www\.)?invidious\.esmailelbob\.xyz|(?:www\.)?invidious\.sethforprivacy\.com|(?:www\.)?yt\.oelrichsgarcia\.de|(?:www\.)?yt\.artemislena\.eu|(?:www\.)?invidious\.flokinet\.to|(?:www\.)?invidious\.baczek\.me|(?:www\.)?y\.com\.sb|(?:www\.)?invidious\.epicsite\.xyz|(?:www\.)?invidious\.lidarshield\.cloud|(?:www\.)?yt\.funami\.tech|(?:www\.)?invidious\.3o7z6yfxhbw7n3za4rss6l434kmv55cgw2vuziwuigpwegswvwzqipyd\.onion|(?:www\.)?osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd\.onion|(?:www\.)?u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad\.onion|(?:(?:www|no)\.)?invidiou\.sh|(?:(?:www|fi)\.)?invidious\.snopyta\.org|(?:www\.)?invidious\.kabi\.tk|(?:www\.)?invidious\.mastodon\.host|(?:www\.)?invidious\.zapashcanon\.fr|(?:www\.)?(?:invidious(?:-us)?|piped)\.kavin\.rocks|(?:www\.)?invidious\.tinfoil-hat\.net|(?:www\.)?invidious\.himiko\.cloud|(?:www\.)?invidious\.reallyancient\.tech|(?:www\.)?invidious\.tube|(?:www\.)?invidiou\.site|(?:www\.)?invidious\.site|(?:www\.)?invidious\.xyz|(?:www\.)?invidious\.nixnet\.xyz|(?:www\.)?invidious\.048596\.xyz|(?:www\.)?invidious\.drycat\.fr|(?:www\.)?inv\.skyn3t\.in|(?:www\.)?tube\.poal\.co|(?:www\.)?tube\.connect\.cafe|(?:www\.)?vid\.wxzm\.sx|(?:www\.)?vid\.mint\.lgbt|(?:www\.)?vid\.puffyan\.us|(?:www\.)?yewtu\.be|(?:www\.)?yt\.elukerio\.org|(?:www\.)?yt\.lelux\.fi|(?:www\.)?invidious\.ggc-project\.de|(?:www\.)?yt\.maisputain\.ovh|(?:www\.)?ytprivate\.com|(?:www\.)?invidious\.13ad\.de|(?:www\.)?invidious\.toot\.koeln|(?:www\.)?invidious\.fdn\.fr|(?:www\.)?watch\.nettohikari\.com|(?:www\.)?invidious\.namazso\.eu|(?:www\.)?invidious\.silkky\.cloud|(?:www\.)?invidious\.exonip\.de|(?:www\.)?invidious\.riverside\.rocks|(?:www\.)?invidious\.blamefran\.net|(?:www\.)?invidious\.moomoo\.de|(?:www\.)?ytb\.trom\.tf|(?:www\.)?yt\.cyberhost\.uk|(?:www\.)?kgg2m7yk5aybusll\.onion|(?:www\.)?qklhadlycap4cnod\.onion|(?:www\.)?axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid\.onion|(?:www\.)?c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid\.onion|(?:www\.)?fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad\.onion|(?:www\.)?invidious\.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd\.onion|(?:www\.)?owxfohz4kjyv25fvlqilyxast7inivgiktls3th44jhk3ej3i7ya\.b32\.i2p|(?:www\.)?4l2dgddgsrkf2ous66i6seeyi6etzfgrue332grh2n7madpwopotugyd\.onion|(?:www\.)?w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd\.onion|(?:www\.)?kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad\.onion|(?:www\.)?grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad\.onion|(?:www\.)?hpniueoejy4opn7bc4ftgazyqjoeqwlvh2uiku2xqku6zpoa4bf5ruid\.onion|(?:www\.)?piped\.kavin\.rocks|(?:www\.)?piped\.tokhmi\.xyz|(?:www\.)?piped\.syncpundit\.io|(?:www\.)?piped\.mha\.fi|(?:www\.)?watch\.whatever\.social|(?:www\.)?piped\.garudalinux\.org|(?:www\.)?piped\.rivo\.lol|(?:www\.)?piped-libre\.kavin\.rocks|(?:www\.)?yt\.jae\.fi|(?:www\.)?piped\.mint\.lgbt|(?:www\.)?il\.ax|(?:www\.)?piped\.esmailelbob\.xyz|(?:www\.)?piped\.projectsegfau\.lt|(?:www\.)?piped\.privacydev\.net|(?:www\.)?piped\.palveluntarjoaja\.eu|(?:www\.)?piped\.smnz\.de|(?:www\.)?piped\.adminforge\.de|(?:www\.)?watch\.whatevertinfoil\.de|(?:www\.)?piped\.qdi\.fi|(?:(?:www|cf)\.)?piped\.video|(?:www\.)?piped\.aeong\.one|(?:www\.)?piped\.moomoo\.me|(?:www\.)?piped\.chauvet\.pro|(?:www\.)?watch\.leptons\.xyz|(?:www\.)?pd\.vern\.cc|(?:www\.)?piped\.hostux\.net|(?:www\.)?piped\.lunar\.icu|(?:www\.)?hyperpipe\.surge\.sh|(?:www\.)?hyperpipe\.esmailelbob\.xyz|(?:www\.)?listen\.whatever\.social|(?:www\.)?music\.adminforge\.de
            )/
            (?:
                (?P<channel_type>channel|c|user|browse)/|
                (?P<not_channel>
                    feed/|hashtag/|
                    (?:playlist|watch)\?.*?\blist=
                )|
                (?!(?:channel|c|user|playlist|watch|w|v|embed|e|live|watch_popup|clip|shorts|movies|results|search|shared|hashtag|trending|explore|feed|feeds|browse|oembed|get_video_info|iframe_api|s/player|source|storefront|oops|index|account|t/terms|about|upload|signin|logout)\b)  # Direct URLs
            )
            (?P<id>[^/?\#&]+)
    )zYouTube Tabsrz   anyc                 P    t         j                  |      rdS t        |   |      S NF)r   r4   r   r   r3   r   s     r   r4   zYoutubeTabIE.suitable,  %    !**3/uJUW5Ec5JJr   r   r   s   @r   r   r   $  s9    (GG T\JGNLK Kr   r   c                        e Zd ZdZdZdZdZdZy)YoutubeTruncatedIDIErx   zyoutube:truncated_idzEhttps?://(?:www\.)?youtube\.com/watch\?v=(?P<id>[0-9A-Za-z_-]{1,10})$Frz   Nr   r   r   r   r   r   1  s    (G$G[JGNr   r   c                        e Zd ZdZdZdZdZdZy)YoutubeTruncatedURLIErx   zyoutube:truncated_urlaX  (?x)
        (?:https?://)?
        (?:\w+\.)?[yY][oO][uU][tT][uU][bB][eE](?:-nocookie)?\.com/
        (?:watch\?(?:
            feature=[a-z_]+|
            annotation_id=annotation_[^&]+|
            x-yt-cl=[0-9]+|
            hl=[^&]*|
            t=[0-9]+
        )?
        |
            attribution_link\?a=[^&]+
        )
        $
    Frz   Nr   r   r   r   r   r   9  s    (G%G JGNr   r   c                        e Zd ZdZdZdZdZdZy)YoutubeWatchLaterIErx   zyoutube:watchlaterz:ytwatchlaterzDYoutube watch later list; ":ytwatchlater" keyword (requires cookies)rz   Nr   r   r   r   r   r   A  s    (G"G JTGNr   r   c                   $    e Zd ZdZdZdZdZdZdZy)YoutubeYtBeIErx   YoutubeYtBezhttps?://youtu\.be/(?P<id>[0-9A-Za-z_-]{11})/*?.*?\blist=(?P<playlist_id>(?:(?:PL|LL|EC|UU|FL|RD|UL|TL|PU|OLAK5uy_)[0-9A-Za-z-_]{10,}|RDMM|WL|LL|LM))zyoutu.berz   rl   Nr   r   r   r   r   r   I  s#    (GG kJGNLr   r   c                        e Zd ZdZdZdZdZdZy)YoutubeYtUserIErx   zyoutube:userzytuser:(?P<id>.+)z%YouTube user videos; "ytuser:" prefixrz   Nr   r   r   r   r   r   R  s    (GG$J5GNr   r   c                       e Zd ZdZdZdZdZy)ABCIEyt_dlp.extractor.abcz
abc.net.auzShttps?://(?:www\.)?abc\.net\.au/(?:news|btn|listen)/(?:[^/?#]+/){1,4}(?P<id>\d{5,})rl   Nr   r   r   r$   ra   r=   ro   r   r   r   r   r   Z  s    $GGjJLr   r   c                       e Zd ZdZdZdZdZy)
ABCIViewIEr   zabc.net.au:iviewz=https?://iview\.abc\.net\.au/(?:[^/]+/)*video/(?P<id>[^/?#]+)rl   Nr   r   r   r   r   r   a  s    $G GSJLr   r   c                       e Zd ZdZdZdZdZy)ABCIViewShowSeriesIEr   zabc.net.au:iview:showseriesz@https?://iview\.abc\.net\.au/show/(?P<id>[^/]+)(?:/series/\d+)?$r   Nr   r   r   r   r   r   h  s    $G+GWJLr   r   c                       e Zd ZdZdZdZdZy)ABCOTVSClipsIEyt_dlp.extractor.abcotvszabcotvs:clipsz9https?://clips\.abcotvs\.com/(?:[^/]+/)*video/(?P<id>\d+)rl   Nr   r   r   r   r   r   o      (GGOJLr   r   c                        e Zd ZdZdZdZdZdZy)	ABCOTVSIEr   abcotvszthttps?://(?P<site>abc(?:7(?:news|ny|chicago)?|11|13|30)|6abc)\.com(?:(?:/[^/]+)*/(?P<display_id>[^/]+))?/(?P<id>\d+)zABC Owned Television Stationsrl   Nr   r   r   r$   ra   r=   r[   ro   r   r   r   r   r   v  s    (GG JJ-GLr   r   c                       e Zd ZdZdZy)ACastBaseIEyt_dlp.extractor.acast	ACastBaseNr   r   r   r$   ra   r   r   r   r   r   ~      &GGr   r   c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )ACastChannelIEr   zacast:channela  (?x)
                    https?://
                        (?:
                            (?:(?:www|shows)\.)?acast\.com/|
                            play\.acast\.com/s/
                        )
                        (?P<id>[^/#?]+)
                    rm   c                 P    t         j                  |      rdS t        |   |      S r   )ACastIEr4   r   r   s     r   r4   zACastChannelIE.suitable  %    ((-uH573CC3HHr   
r   r   r   r$   ra   r=   ro   rr   r4   r   r   s   @r   r   r     s.    &GG aJLI Ir   r   c                       e Zd ZdZdZdZdZy)r   r   acasta-  (?x:
                    https?://
                        (?:
                            (?:(?:embed|www|shows)\.)?acast\.com/|
                            play\.acast\.com/s/
                        )
                        (?P<channel>[^/?#]+)/(?:episodes/)?(?P<id>[^/#?"]+)
                    )rl   Nr   r   r   r   r   r     s    &GG LJLr   r   c                       e Zd ZdZdZdZdZy)	ADNBaseIEyt_dlp.extractor.adnADNBaseAnimation Digital NetworkanimationdigitalnetworkN)r   r   r   r$   ra   r[   rZ   r   r   r   r   r     s    $GG)G.Nr   r   c                   $    e Zd ZdZdZdZdZdZdZy)ADNIEr   ADNz[https?://(?:www\.)?animationdigitalnetwork\.com/(?:(?P<lang>de)/)?video/[^/?#]+/(?P<id>\d+)r   r   rl   Nr   r   r   r   r   r     s     $GGqJ)G.NLr   r   c                   $    e Zd ZdZdZdZdZdZdZy)ADNSeasonIEr   	ADNSeasonzfhttps?://(?:www\.)?animationdigitalnetwork\.com/(?:(?P<lang>de)/)?video/(?P<id>\d+)[^/?#]*/?(?:$|[#?])r   r   rm   Nr   r   r   r   r   r     s     $GG|J)G.NLr   r   c                       e Zd ZdZdZy)AGalegaBaseIEyt_dlp.extractor.agalegaAGalegaBaseNr   r   r   r   r   r         (GGr   r   c                       e Zd ZdZdZdZdZy)	AGalegaIEr   zagalega:videoszAhttps?://(?:www\.)?agalega\.gal/videos/(?:detail/)?(?P<id>[0-9]+)rl   Nr   r   r   r   r   r     s    (GGVJLr   r   c                       e Zd ZdZdZdZdZy)AMCNetworksIEzyt_dlp.extractor.amcnetworksAMCNetworkszohttps?://(?:www\.)?(?:amc|bbcamerica|ifc|(?:we|sundance)tv)\.com/(?P<id>(?:movies|shows(?:/[^/?#]+)+)/[^/?#&]+)rl   Nr   r   r   r   r   r     s    ,GG EJLr   r   c                       e Zd ZdZdZdZdZy)APAIEzyt_dlp.extractor.apaAPAzk(?P<base_url>https?://[^/]+\.apa\.at)/embed/(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})rl   Nr   r   r   r   r   r     s    $GG FJLr   r   c                       e Zd ZdZdZy)ARDAudiothekBaseIEyt_dlp.extractor.ardARDAudiothekBaseNr   r   r   r   r   r         $G Gr   r   c                       e Zd ZdZdZdZdZy)ARDAudiothekIEr   ARDAudiothekzmhttps:?//(?:www\.)?ard(?:audiothek|sounds)\.de/episode/(?P<id>urn:ard:(?:episode|section|extra):[a-f0-9]{16})rl   Nr   r   r   r   r  r        $GG CJLr   r  c                       e Zd ZdZdZdZdZy)ARDAudiothekPlaylistIEr   ARDAudiothekPlaylistzmhttps:?//(?:www\.)?ard(?:audiothek|sounds)\.de/sendung/(?P<playlist>[\w-]+)/(?P<id>urn:ard:show:[a-f0-9]{16})rm   Nr   r   r   r   r  r    s    $G$G DJLr   r  c                       e Zd ZdZdZdZdZy)ARDBetaMediathekIEr   ARDMediathekz(?x)https?://
        (?:(?:beta|www)\.)?ardmediathek\.de/
        (?:[^/]+/)?
        (?:player|live|video)/
        (?:[^?#]+/)?
        (?P<id>[a-zA-Z0-9]+)
        /?(?:[?#]|$)rl   Nr   r   r   r   r	  r	    s    $GG PJLr   r	  c                       e Zd ZdZdZdZdZy)ARDIEr   ARDzQ(?P<mainurl>https?://(?:www\.)?daserste\.de/(?:[^/?#&]+/)+(?P<id>[^/?#&]+))\.htmlrl   Nr   r   r   r   r  r    s    $GGgJLr   r  c                       e Zd ZdZdZdZdZy)ARDMediathekCollectionIEr   ARDMediathekCollectiona  (?x)https?://
        (?:(?:beta|www)\.)?ardmediathek\.de/
        (?:[^/?#]+/)?
        (?P<playlist>sendung|serie|sammlung)/
        (?:(?P<display_id>[^?#]+?)/)?
        (?P<id>[a-zA-Z0-9]+)
        (?:/(?P<season>\d+)(?:/(?P<version>OV|AD))?)?/?(?:[?#]|$)rm   Nr   r   r   r   r  r    s    $G&G `JLr   r  c                        e Zd ZdZdZdZdZdZy)
AZMedienIEzyt_dlp.extractor.azmedienAZMediena  (?x)
                    https?://
                        (?:www\.|tv\.)?
                        (?:
                            telezueri\.ch|
                            telebaern\.tv|
                            telem1\.ch|
                            tvo-online\.ch
                        )/
                        [^/?#]+/
                        (?P<id>
                            [^/?#]+-\d+
                        )
                        (?:
                            \#video=
                            (?P<kaltura_id>
                                [_0-9a-z]+
                            )
                        )?
                    zAZ Medien videosrl   Nr   r   r   r   r  r    s    )GG BJ GLr   r  c                       e Zd ZdZdZdZdZy)	AbcNewsIEyt_dlp.extractor.abcnewsabcnewszUhttps?://abcnews\.go\.com/(?:[^/]+/)+(?P<display_id>[0-9a-z-]+)/story\?id=(?P<id>\d+)r   Nr   r   r   r   r  r    s    (GGlJLr   r  c                       e Zd ZdZdZy)AMPIEzyt_dlp.extractor.ampAMPNr   r   r   r   r  r        $GGr   r  c                       e Zd ZdZdZdZdZy)AbcNewsVideoIEr  zabcnews:videoa  (?x)
                    https?://
                        (?:
                            abcnews\.go\.com/
                            (?:
                                (?:[^/]+/)*video/(?P<display_id>[0-9a-z-]+)-|
                                video/(?:embed|itemfeed)\?.*?\bid=
                            )|
                            fivethirtyeight\.abcnews\.go\.com/video/embed/\d+/
                        )
                        (?P<id>\d+)
                    rl   Nr   r   r   r   r  r    s    (GG FJLr   r  c                       e Zd ZdZdZdZy)AbemaTVBaseIEyt_dlp.extractor.abematvAbemaTVBaseabematvNr{   r   r   r   r  r        (GGNr   r  c                        e Zd ZdZdZdZdZdZy)	AbemaTVIEr   AbemaTVzWhttps?://abema\.tv/(?P<type>now-on-air|video/episode|channels/.+?/slots)/(?P<id>[^?/]+)r"  rl   Nr   r   r   r   r%  r%    s    (GGkJNLr   r%  c                        e Zd ZdZdZdZdZdZy)AbemaTVTitleIEr   AbemaTVTitlezVhttps?://abema\.tv/video/title/(?P<id>[^?/#]+)/?(?:\?(?:[^#]+&)?s=(?P<season>[^&#]+))?r"  rm   Nr   r   r   r   r(  r(    s    (GGkJNLr   r(  c                       e Zd ZdZdZy)AcFunVideoBaseIEyt_dlp.extractor.acfunAcFunVideoBaseNr   r   r   r   r+  r+  !  s    &GGr   r+  c                       e Zd ZdZdZdZdZy)AcFunBangumiIEr,  AcFunBangumiz0https?://www\.acfun\.cn/bangumi/(?P<id>aa[_\d]+)rl   Nr   r   r   r   r/  r/  &      &GGFJLr   r/  c                       e Zd ZdZdZdZdZy)AcFunVideoIEr,  
AcFunVideoz*https?://www\.acfun\.cn/v/ac(?P<id>[_\d]+)rl   Nr   r   r   r   r3  r3  -  s    &GG@JLr   r3  c                       e Zd ZdZdZdZdZy)AcademicEarthCourseIEzyt_dlp.extractor.academicearthzAcademicEarth:Coursez?https?://(?:www\.)?academicearth\.org/playlists/(?P<id>[^?#/]+)rm   Nr   r   r   r   r6  r6  4  s    .G$GTJLr   r6  c                       e Zd ZdZdZdZdZy)AdobeConnectIEzyt_dlp.extractor.adobeconnectAdobeConnectz.https?://\w+\.adobeconnect\.com/(?P<id>[\w-]+)FNr   r   r   r$   ra   r=   rE   r   r   r   r8  r8  ;  s    -GGEJHr   r8  c                       e Zd ZdZdZdZdZy)AdobeTVVideoIEzyt_dlp.extractor.adobetvadobetvz,https?://video\.tv\.adobe\.com/v/(?P<id>\d+)rl   Nr   r   r   r   r<  r<  B      (GGCJLr   r<  c                       e Zd ZdZdZy)AdobePassIEzyt_dlp.extractor.adobepass	AdobePassNr   r   r   r   r@  r@  I  s    *GGr   r@  c                       e Zd ZdZdZy)TurnerBaseIEzyt_dlp.extractor.turner
TurnerBaseNr   r   r   r   rC  rC  N      'GGr   rC  c                       e Zd ZdZdZdZdZy)AdultSwimIEzyt_dlp.extractor.adultswim	AdultSwimz^https?://(?:www\.)?adultswim\.com/videos/(?P<show_path>[^/?#]+)(?:/(?P<episode_path>[^/?#]+))?r   Nr   r   r   r   rG  rG  S  s    *GGsJLr   rG  c                       e Zd ZdZdZdZdZy)AeonCoIEzyt_dlp.extractor.aeoncoAeonCoz1https?://(?:www\.)?aeon\.co/videos/(?P<id>[^/?]+)rl   Nr   r   r   r   rJ  rJ  Z  s    'GGFJLr   rJ  c                       e Zd ZdZdZdZy)AfreecaTVBaseIEyt_dlp.extractor.afreecatvAfreecaTVBase	afreecatvNr{   r   r   r   rM  rM  a      *GG Nr   rM  c                   $    e Zd ZdZdZdZdZdZdZy)AfreecaTVCatchStoryIErN  zsoop:catchstoryz9https?://vod\.sooplive\.com/player/(?P<id>\d+)/catchstoryzsooplive.com catch storyrP  rm   Nr   r   r   r   rS  rS  g  s     *GGOJ(G NLr   rS  c                   $    e Zd ZdZdZdZdZdZdZy)AfreecaTVIErN  soopzNhttps?://vod\.sooplive\.com/(?:PLAYER/STATION|player)/(?P<id>\d+)/?(?:$|[?#&])zsooplive.comrP  rl   Nr   r   r   r   rU  rU  p  s     *GGdJG NLr   rU  c                   $    e Zd ZdZdZdZdZdZdZy)AfreecaTVLiveIErN  z	soop:livez>https?://play\.sooplive\.com/(?P<id>[^/?#]+)(?:/(?P<bno>\d+))?zsooplive.com livestreamsrP  rl   Nr   r   r   r   rX  rX  y  s     *GGTJ(G NLr   rX  c                        e Zd ZdZdZdZdZdZy)AfreecaTVUserIErN  z	soop:userzUhttps?://(?:www\.)?sooplive\.com/station/(?P<id>[^/?#]+)/vod/?(?P<slug_type>[^/?#]+)?rP  rm   Nr   r   r   r   rZ  rZ    s    *GGjJ NLr   rZ  c                       e Zd ZdZdZdZdZy)AitubeKZVideoIEzyt_dlp.extractor.aitubeAitubeKZVideozBhttps?://aitube\.kz/(?:video|embed/)\?(?:[^\?]+)?id=(?P<id>[\w-]+)rl   Nr   r   r   r   r\  r\    s    'GGYJLr   r\  c                       e Zd ZdZdZdZdZy)AlJazeeraIEzyt_dlp.extractor.aljazeera	AlJazeerazhttps?://(?P<base>\w+\.aljazeera\.\w+)/(?P<type>programs?/[^/]+|(?:feature|video|new)s)?/\d{4}/\d{1,2}/\d{1,2}/(?P<id>[^/?&#]+)rl   Nr   r   r   r   r_  r_    s    *GG ZJLr   r_  c                       e Zd ZdZdZdZdZy)AliExpressLiveIEzyt_dlp.extractor.aliexpressAliExpressLivez/https?://live\.aliexpress\.com/live/(?P<id>\d+)rl   Nr   r   r   r   rb  rb    s    +GGEJLr   rb  c                       e Zd ZdZdZdZdZy)	AlibabaIEzyt_dlp.extractor.alibabaAlibabazGhttps?://(?:www\.)?alibaba\.com/product-detail/[\w-]+_(?P<id>\d+)\.htmlrl   Nr   r   r   r   re  re    s    (GG_JLr   re  c                       e Zd ZdZdZdZdZy)
AllocineIEzyt_dlp.extractor.allocineAllocinezhttps?://(?:www\.)?allocine\.fr/(?:article|video|film)/(?:fichearticle_gen_carticle=|player_gen_cmedia=|fichefilm_gen_cfilm=|video-)(?P<id>[0-9]+)(?:\.html)?rl   Nr   r   r   r   rh  rh    s    )GG tJLr   rh  c                       e Zd ZdZdZy)AllstarBaseIEyt_dlp.extractor.allstarAllstarBaseNr   r   r   r   rk  rk    r   r   rk  c                       e Zd ZdZdZdZdZy)	AllstarIErl  AllstarzUhttps?://(?:www\.)?allstar\.gg/(?P<type>(?:clip|montage))\?(?P=type)=(?P<id>[^/?#&]+)rl   Nr   r   r   r   ro  ro    s    (GGkJLr   ro  c                       e Zd ZdZdZdZdZy)AllstarProfileIErl  AllstarProfilezDhttps?://(?:www\.)?allstar\.gg/(?:profile\?user=|u/)(?P<id>[^/?#&]+)rm   Nr   r   r   r   rr  rr    s    (GGZJLr   rr  c                        e Zd ZdZdZdZdZdZy)AlphaPornoIEzyt_dlp.extractor.alphaporno
AlphaPornoz7https?://(?:www\.)?alphaporno\.com/videos/(?P<id>[^/]+)r   rl   Nr   r   r   r$   ra   r=   rf   ro   r   r   r   ru  ru    s    +GGLJILr   ru  c                       e Zd ZdZdZdZdZy)AltCensoredChannelIEyt_dlp.extractor.altcensoredzaltcensored:channelzIhttps?://(?:www\.)?altcensored\.com/channel/(?!page|table)(?P<id>[^/?#]+)rm   Nr   r   r   r   ry  ry    s    ,G#G^JLr   ry  c                       e Zd ZdZdZdZdZy)AltCensoredIErz  altcensoredzGhttps?://(?:www\.)?altcensored\.com/(?:watch\?v=|embed/)(?P<id>[^/?#]+)rl   Nr   r   r   r   r|  r|        ,GG]JLr   r|  c                        e Zd ZdZdZdZdZdZy)AluraIEyt_dlp.extractor.aluraAlurazShttps?://(?:cursos\.)?alura\.com\.br/course/(?P<course_name>[^/]+)/task/(?P<id>\d+)alurarl   Nr   r   r   r   r  r    s    &GGjJNLr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )AluraCourseIEr  AluraCoursez9https?://(?:cursos\.)?alura\.com\.br/course/(?P<id>[^/]+)aluracoursec                 P    t         j                  |      rdS t        |   |      S r   )r  r4   r   r   s     r   r4   zAluraCourseIE.suitable  r   r   
r   r   r   r$   ra   r=   rZ   rr   r4   r   r   s   @r   r  r    s+    &GGOJ"NI Ir   r  c                       e Zd ZdZdZy)DPlayBaseIEyt_dlp.extractor.dplay	DPlayBaseNr   r   r   r   r  r    r   r   r  c                       e Zd ZdZdZy)DiscoveryPlusBaseIEr  DiscoveryPlusBaseNr   r   r   r   r  r    s    &G!Gr   r  c                       e Zd ZdZdZdZdZy)AmHistoryChannelIEr  AmHistoryChannelz9https?://(?:www\.)?ahctv\.com/video/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r  r    s    &G GNJLr   r  c                       e Zd ZdZdZdZdZy)AmadeusTVIEzyt_dlp.extractor.amadeustv	AmadeusTVz7https?://(?:www\.)?amadeus\.tv/library/(?P<id>[\da-f]+)rl   Nr   r   r   r   r  r    s    *GGMJLr   r  c                       e Zd ZdZdZdZdZy)AmaraIEzyt_dlp.extractor.amaraAmaraz9https?://(?:www\.)?amara\.org/(?:\w+/)?videos/(?P<id>\w+)rl   Nr   r   r   r   r  r    s    &GGPJLr   r  c                       e Zd ZdZdZy)AmazonMiniTVBaseIEyt_dlp.extractor.amazonminitvAmazonMiniTVBaseNr   r   r   r   r  r        -G Gr   r  c                       e Zd ZdZdZdZdZy)AmazonMiniTVIEr  AmazonMiniTVza(?:https?://(?:www\.)?amazon\.in/minitv/tp/|amazonminitv:(?:amzn1\.dv\.gti\.)?)(?P<id>[a-f0-9-]+)rl   Nr   r   r   r   r  r    s    -GGyJLr   r  c                        e Zd ZdZdZdZdZdZy)AmazonMiniTVSeasonIEr  zamazonminitv:seasonz;amazonminitv:season:(?:amzn1\.dv\.gti\.)?(?P<id>[a-f0-9-]+)z-Amazon MiniTV Season, "minitv:season:" prefixrm   Nr   r   r   r   r  r        -G#GQJ=GLr   r  c                        e Zd ZdZdZdZdZdZy)AmazonMiniTVSeriesIEr  zamazonminitv:seriesz;amazonminitv:series:(?:amzn1\.dv\.gti\.)?(?P<id>[a-f0-9-]+)z-Amazon MiniTV Series, "minitv:series:" prefixrm   Nr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZy)AmazonReviewsIEyt_dlp.extractor.amazonAmazonReviewsz^https?://(?:www\.)?amazon\.(?:[a-z]{2,3})(?:\.[a-z]{2})?/gp/customer-reviews/(?P<id>[^/&#$?]+)rl   Nr   r   r   r   r  r  $  s    'GGtJLr   r  c                       e Zd ZdZdZdZdZy)AmazonStoreIEr  AmazonStorezghttps?://(?:www\.)?amazon\.(?:[a-z]{2,3})(?:\.[a-z]{2})?/(?:[^/]+/)?(?:dp|gp/product)/(?P<id>[^/&#$?]+)rm   Nr   r   r   r   r  r  +  s    'GG}JLr   r  c                       e Zd ZdZdZdZdZy)AmericasTestKitchenIE$yt_dlp.extractor.americastestkitchenAmericasTestKitchenzhttps?://(?:www\.)?(?:americastestkitchen|cooks(?:country|illustrated))\.com/(?:cooks(?:country|illustrated)/)?(?P<resource_type>episode|videos)/(?P<id>\d+)rl   Nr   r   r   r   r  r  2  s    4G#G sJLr   r  c                       e Zd ZdZdZdZdZy)AmericasTestKitchenSeasonIEr  AmericasTestKitchenSeasonzhttps?://(?:www\.)?(?P<show>americastestkitchen|(?P<cooks>cooks(?:country|illustrated)))\.com(?:(?:/(?P<show2>cooks(?:country|illustrated)))?(?:/?$|(?<!ated)(?<!ated\.com)/episodes/browse/season_(?P<season>\d+)))rm   Nr   r   r   r   r  r  9  s    4G)G lJLr   r  c                       e Zd ZdZdZdZdZy)AngelIEzyt_dlp.extractor.angelAngelzhttps?://(?:www\.)?angel\.com/watch/(?P<series>[^/?#]+)/episode/(?P<id>[\w-]+)/season-(?P<season_number>\d+)/episode-(?P<episode_number>\d+)/(?P<title>[^/?#]+)rl   Nr   r   r   r   r  r  @  s    &GG xJLr   r  c                       e Zd ZdZdZdZdZy)AnimalPlanetIEr  AnimalPlanetz@https?://(?:www\.)?animalplanet\.com/video/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r  r  G  s    &GGUJLr   r  c                       e Zd ZdZdZy)AntennaBaseIEyt_dlp.extractor.antennaAntennaBaseNr   r   r   r   r  r  N  r   r   r  c                        e Zd ZdZdZdZdZdZy)Ant1NewsGrArticleIEr  zant1newsgr:articlez:https?://(?:www\.)?ant1news\.gr/[^/]+/article/(?P<id>\d+)/zant1news.gr articlesr   Nr   r   r   r   r  r  S  s    (G"GPJ$GLr   r  c                        e Zd ZdZdZdZdZdZy)Ant1NewsGrEmbedIEr  zant1newsgr:embedzo(?:https?:)?//(?:[a-zA-Z0-9\-]+\.)?(?:antenna|ant1news)\.gr/templates/pages/player\?([^#]+&)?cid=(?P<id>[^#&]+)zant1news.gr embedded videosrl   Nr   r   r   r   r  r  [  s    (G G GJ+GLr   r  c                        e Zd ZdZdZdZdZdZy)AntennaGrWatchIEr  zantenna:watchzJhttps?://(?P<netloc>(?:www\.)?(?:antenna|ant1news)\.gr)/watch/(?P<id>\d+)/z!antenna.gr and ant1news.gr videosrl   Nr   r   r   r   r  r  c  s    (GG`J1GLr   r  c                       e Zd ZdZdZdZdZy)AnvatoIEzyt_dlp.extractor.anvatoAnvatoz/anvato:(?P<access_key_or_mcp>[^:]+):(?P<id>\d+)rl   Nr   r   r   r   r  r  k  s    'GGCJLr   r  c                       e Zd ZdZdZdZdZy)AparatIEzyt_dlp.extractor.aparatAparatzVhttps?://(?:www\.)?aparat\.com/(?:v/|video/video/embed/videohash/)(?P<id>[a-zA-Z0-9]+)rl   Nr   r   r   r   r  r  r  s    'GGkJLr   r  c                        e Zd ZdZdZdZdZdZy)AppleConnectIEzyt_dlp.extractor.appleconnectzapple:music:connectz2https?://music\.apple\.com/[\w-]+/post/(?P<id>\d+)zApple Music Connectrl   Nr   r   r   r   r  r  y  s    -G#GIJ#GLr   r  c                       e Zd ZdZdZdZdZy)ApplePodcastsIEzyt_dlp.extractor.applepodcastsApplePodcastszQhttps?://podcasts\.apple\.com/(?:[^/]+/)?podcast(?:/[^/]+){1,2}.*?\bi=(?P<id>\d+)rl   Nr   r   r   r   r  r    s    .GGhJLr   r  c                       e Zd ZdZdZdZy)ArcPublishingIEzyt_dlp.extractor.arcpublishingArcPublishingzNarcpublishing:(?P<org>[a-z]+):(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})Nr   r   r   r$   ra   r=   r   r   r   r  r    s    .GGdJr   r  c                        e Zd ZdZdZdZdZdZy)ArchiveOrgIEyt_dlp.extractor.archiveorgzarchive.orgzKhttps?://(?:www\.)?archive\.org/(?:details|embed)/(?P<id>[^?#]+)(?:[?].*)?$zarchive.org video and audior   Nr   r   r   r   r  r    s    +GG`J+GLr   r  c                        e Zd ZdZdZdZdZdZy)ArnesIEzyt_dlp.extractor.arneszvideo.arnes.sizjhttps?://video\.arnes\.si/(?:[a-z]{2}/)?(?:watch|embed|api/(?:asset|public/video))/(?P<id>[0-9a-zA-Z]{12})zArnes Videorl   Nr   r   r   r   r  r    s    &GGJGLr   r  c                        e Zd ZdZdZddgZdZy)Art19IEyt_dlp.extractor.art19Art19zxhttps?://(?:www\.)?art19\.com/shows/[^/#?]+/episodes/(?P<id>[\da-f]{8}-?[\da-f]{4}-?[\da-f]{4}-?[\da-f]{4}-?[\da-f]{12})zjhttps?://rss\.art19\.com/episodes/(?P<id>[\da-f]{8}-?[\da-f]{4}-?[\da-f]{4}-?[\da-f]{4}-?[\da-f]{12})\.mp3rl   Nr   r   r   r   r  r    s&    &GG T  VJ  KJLr   r  c                        e Zd ZdZdZddgZdZy)Art19ShowIEr  	Art19ShowzIhttps?://(?:www\.)?art19\.com/shows/(?P<id>[\w-]+)(?:/embed)?/?(?:$|[#?])z3https?://rss\.art19\.com/(?P<id>[\w-]+)/?(?:$|[#?])rm   Nr   r   r   r   r  r    s#    &GG`  c[  \JLr   r  c                       e Zd ZdZdZy)ArteTVBaseIEyt_dlp.extractor.arte
ArteTVBaseNr   r   r   r   r  r    s    %GGr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )ArteTVCategoryIEr  ArteTVCategoryz_https?://(?:www\.)?arte\.tv/(?P<lang>fr|de|en|es|it|pl)/videos/(?P<id>[\w-]+(?:/[\w-]+)*)/?\s*$rm   c                 f    t        fdt        t        fD               xr t        |         S )Nc              3   @   K   | ]  }|j                          y wr'   r4   r9   ier3   s     r   r;   z,ArteTVCategoryIE.suitable.<locals>.<genexpr>  s     LBKK$Lr<   )r   ArteTVIEArteTVPlaylistIEr   r4   r   s    `r   r4   zArteTVCategoryIE.suitable  s3     L:J/KLLL & %	'r   r   r   s   @r   r  r    s)    %GGwJL' 'r   r  c                       e Zd ZdZdZdZdZy)ArteTVEmbedIEr  ArteTVEmbedzDhttps?://(?:www\.)?arte\.tv/player/v\d+/index\.php\?.*?\bjson_url=.+rl   Nr   r   r   r   r  r    s    %GG]JLr   r  c                       e Zd ZdZdZdZdZy)r  r  ArteTVa~  (?x)
                    (?:https?://
                        (?:
                            (?:www\.)?arte\.tv/(?P<lang>fr|de|en|es|it|pl)/videos|
                            api\.arte\.tv/api/player/v\d+/config/(?P<lang_2>fr|de|en|es|it|pl)
                        )
                    |arte://program)
                        /(?P<id>\d{6}-\d{3}-[AF]|LIVE)
                    rl   Nr   r   r   r   r  r    s    %GG aJLr   r  c                       e Zd ZdZdZdZdZy)r  r  ArteTVPlaylistzOhttps?://(?:www\.)?arte\.tv/(?P<lang>fr|de|en|es|it|pl)/videos/(?P<id>RC-\d{6})rm   Nr   r   r   r   r  r    s    %GGeJLr   r  c                       e Zd ZdZdZy)AsobiChannelBaseIEyt_dlp.extractor.asobichannelAsobiChannelBaseNr   r   r   r   r  r    r  r   r  c                        e Zd ZdZdZdZdZdZy)AsobiChannelIEr  asobichannelz:https?://asobichannel\.asobistore\.jp/watch/(?P<id>[\w-]+)ASOBI CHANNELrl   Nr   r   r   r   r  r    s    -GGPJGLr   r  c                        e Zd ZdZdZdZdZdZy)AsobiChannelTagURLIEr  zasobichannel:tagz=https?://asobichannel\.asobistore\.jp/tag/(?P<id>[a-z0-9-_]+)r  rm   Nr   r   r   r   r  r    s    -G GRJGLr   r  c                        e Zd ZdZdZdZdZdZy)AsobiStageIEzyt_dlp.extractor.asobistage
AsobiStagezqhttps?://asobistage\.asobistore\.jp/event/(?P<id>(?P<event>\w+)/(?P<type>archive|player)/(?P<slug>\w+))(?:[?#]|$)u"   ASOBISTAGE (アソビステージ)rm   Nr   r   r   r   r   r     s    +GG IJ2GLr   r   c                       e Zd ZdZdZdZdZy)AtScaleConfEventIEzyt_dlp.extractor.atscaleconfAtScaleConfEventzAhttps?://(?:www\.)?atscaleconference\.com/events/(?P<id>[^/&$?]+)rm   Nr   r   r   r   r  r    s    ,G GVJLr   r  c                        e Zd ZdZdZdZdZdZy)AtresPlayerIEzyt_dlp.extractor.atresplayerAtresPlayerz[https?://(?:www\.)?atresplayer\.com/(?:[^/?#]+/){4}(?P<display_id>.+?)_(?P<id>[0-9a-f]{24})atresplayerrl   Nr   r   r   r   r  r    s    ,GGpJ"NLr   r  c                       e Zd ZdZdZdZdZy)AudiMediaIEzyt_dlp.extractor.audimedia	AudiMediazYhttps?://(?:www\.)?audi-mediacenter\.com/(?:en|de)/audimediatv/(?:video/)?(?P<id>[^/?#]+)rl   Nr   r   r   r   r
  r
    s    *GGnJLr   r
  c                       e Zd ZdZdZdZdZy)AudioBoomIEzyt_dlp.extractor.audioboom	AudioBoomz?https?://(?:www\.)?audioboom\.com/(?:boos|posts)/(?P<id>[0-9]+)rl   Nr   r   r   r   r  r        *GGTJLr   r  c                       e Zd ZdZdZy)AudiodraftBaseIEyt_dlp.extractor.audiodraftAudiodraftBaseNr   r   r   r   r  r        +GGr   r  c                       e Zd ZdZdZdZdZy)AudiodraftCustomIEr  zAudiodraft:customz6https?://(?:[-\w]+)\.audiodraft\.com/entry/(?P<id>\d+)rl   Nr   r   r   r   r  r    s    +G!GMJLr   r  c                       e Zd ZdZdZdZdZy)AudiodraftGenericIEr  zAudiodraft:genericzEhttps?://www\.audiodraft\.com/contests/[^/#]+#entries&eid=(?P<id>\d+)rl   Nr   r   r   r   r  r    s    +G"G[JLr   r  c                       e Zd ZdZdZdZdZy)AudiomackAlbumIEyt_dlp.extractor.audiomackzaudiomack:albumzIhttps?://(?:www\.)?audiomack\.com/(?:album/|(?=.+/album/))(?P<id>[\w/-]+)rm   Nr   r   r   r   r  r     s    *GG_JLr   r  c                       e Zd ZdZdZdZdZy)AudiomackIEr  	audiomackzGhttps?://(?:www\.)?audiomack\.com/(?:song/|(?=.+/song/))(?P<id>[\w/-]+)rl   Nr   r   r   r   r  r  '  s    *GG]JLr   r  c                       e Zd ZdZdZy)AudiusBaseIEyt_dlp.extractor.audius
AudiusBaseNr   r   r   r   r   r   .  rE  r   r   c                        e Zd ZdZdZdZdZdZy)AudiusIEr!  Audiusz_(?x)https?://(?:www\.)?(?:audius\.co/(?P<uploader>[\w\d-]+)(?!/album|/playlist)/(?P<title>\S+))z	Audius.corl   Nr   r   r   r   r$  r$  3  s    'GGwJGLr   r$  c                        e Zd ZdZdZdZdZdZy)AudiusPlaylistIEr!  zaudius:playlistzVhttps?://(?:www\.)?audius\.co/(?P<uploader>[\w\d-]+)/(?:album|playlist)/(?P<title>\S+)zAudius.co playlistsrm   Nr   r   r   r   r'  r'  ;  s    'GGnJ#GLr   r'  c                        e Zd ZdZdZdZdZdZy)AudiusProfileIEr!  zaudius:artistz6https?://(?:www)?audius\.co/(?P<id>[^\/]+)/?(?:[?#]|$)zAudius.co profile/artist pagesrm   Nr   r   r   r   r)  r)  C  s    'GGKJ.GLr   r)  c                       e Zd ZdZdZdZdZy)AudiusTrackIEr!  zaudius:trackzE(?x)(?:audius:)(?:https?://(?:www\.)?.+/v1/tracks/)?(?P<track_id>\w+)z3Audius track ID or API link. Prepend with "audius:"Nr   r   r   r$   ra   r=   r[   r   r   r   r+  r+  K  s    'GGZJCGr   r+  c                        e Zd ZdZdZdZdZdZy)BBCCoUkArticleIEyt_dlp.extractor.bbczbbc.co.uk:articlezGhttps?://(?:www\.)?bbc\.co\.uk/programmes/articles/(?P<id>[a-zA-Z0-9]+)zBBC articlesrm   Nr   r   r   r   r.  r.  R  s    $G!G]JGLr   r.  c                   $    e Zd ZdZdZdZdZdZdZy)	BBCCoUkIEr/  z	bbc.co.uka#  (?x)
                    https?://
                        (?:www\.)?bbc\.co\.uk/
                        (?:
                            programmes/(?!articles/)|
                            iplayer(?:/[^/]+)?/(?:episode/|playlist/)|
                            music/(?:clips|audiovideo/popular)[/#]|
                            radio/player/|
                            events/[^/]+/play/[^/]+/
                        )
                        (?P<id>(?:[pbml][\da-z]{7}|w[\da-z]{7,14}))(?!/(?:episodes|broadcasts|clips))
                    zBBC iPlayerbbcrl   Nr   r   r   r   r1  r1  Z  s#    $GG G	JGNLr   r1  c                       e Zd ZdZdZy)BBCCoUkIPlayerPlaylistBaseIEr/  BBCCoUkIPlayerPlaylistBaseNr   r   r   r   r4  r4  c  s    $G*Gr   r4  c                       e Zd ZdZdZdZdZy)BBCCoUkIPlayerEpisodesIEr/  zbbc.co.uk:iplayer:episodesz[https?://(?:www\.)?bbc\.co\.uk/iplayer/episodes/(?P<id>(?:[pbml][\da-z]{7}|w[\da-z]{7,14}))rm   Nr   r   r   r   r7  r7  h  s    $G*GsJLr   r7  c                       e Zd ZdZdZdZdZy)BBCCoUkIPlayerGroupIEr/  zbbc.co.uk:iplayer:groupzXhttps?://(?:www\.)?bbc\.co\.uk/iplayer/group/(?P<id>(?:[pbml][\da-z]{7}|w[\da-z]{7,14}))rm   Nr   r   r   r   r9  r9  o  s    $G'GpJLr   r9  c                       e Zd ZdZdZy)BBCCoUkPlaylistBaseIEr/  BBCCoUkPlaylistBaseNr   r   r   r   r;  r;  v      $G#Gr   r;  c                       e Zd ZdZdZdZdZy)BBCCoUkPlaylistIEr/  zbbc.co.uk:playlistzshttps?://(?:www\.)?bbc\.co\.uk/programmes/(?P<id>(?:[pbml][\da-z]{7}|w[\da-z]{7,14}))/(?:episodes|broadcasts|clips)rm   Nr   r   r   r   r?  r?  {  s    $G"G LJLr   r?  c                   @     e Zd ZdZdZdZdZdZdZe	 fd       Z
 xZS )BBCIEr/  r2  a  (?x)
        https?://(?:www\.)?(?:
            bbc\.(?:com|co\.uk)|
            bbcnewsd73hkzno2ini43t4gblxvycyac5aw4gnv7t2rccijh7745uqd\.onion|
            bbcweb3hytmzhn5d532owbu6oqadra5z3ar726vq5kgwwn6aucdccrad\.onion
        )/(?:[^/]+/)+(?P<id>[^/#?]+)BBCr   c                     t         t        t        t        t        f}t        fd|D              rdS t        |         S )Nc              3   @   K   | ]  }|j                          y wr'   r  r  s     r   r;   z!BBCIE.suitable.<locals>.<genexpr>  s     C"R[[-Cr<   F)r1  r.  r7  r9  r?  r   r   r4   )r   r3   
EXCLUDE_IEr   s    ` r   r4   zBBCIE.suitable  s>    !13KMbduv
C
CC 	,W%c*	,r   r   r   s   @r   rA  rA    s6    $GG `JGNL, ,r   rA  c                       e Zd ZdZdZy)ZattooPlatformBaseIEyt_dlp.extractor.zattooZattooPlatformBaseNr   r   r   r   rG  rG        'G"Gr   rG  c                       e Zd ZdZdZdZy)BBVTVBaseIErH  	BBVTVBasebbvtvNr{   r   r   r   rL  rL        'GGNr   rL  c                       e Zd ZdZdZdZdZy)BBVTVIErH  BBVTVz(?x)https?://(?:www\.)?bbv\-tv\.net/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )rN  Nr   r   r   r$   ra   r=   rZ   r   r   r   rQ  rQ    s    'GG jJNr   rQ  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )BBVTVLiveIErH  	BBVTVLivez(?x)https?://(?:www\.)?bbv\-tv\.net/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )rN  c                 P    t         j                  |      rdS t        |   |      S r   )rQ  r4   r   r   s     r   r4   zBBVTVLiveIE.suitable  r   r   r  r   s   @r   rU  rU    s.    'GG _JNI Ir   rU  c                       e Zd ZdZdZdZdZy)BBVTVRecordingsIErH  BBVTVRecordingszs(?x)https?://(?:www\.)?bbv\-tv\.net/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )rN  NrS  r   r   r   rY  rY    s    'GG OJNr   rY  c                        e Zd ZdZdZdZdZdZy)BFIPlayerIEzyt_dlp.extractor.bfiz
bfi:playerzDhttps?://player\.bfi\.org\.uk/[^/]+/film/watch-(?P<id>[\w-]+)-onlineFrl   Nr   r   r   r$   ra   r=   rE   ro   r   r   r   r\  r\    s    $GG[JHLr   r\  c                       e Zd ZdZdZy)BFMTVBaseIEyt_dlp.extractor.bfmtv	BFMTVBaseNr   r   r   r   r_  r_    r   r   r_  c                       e Zd ZdZdZdZdZy)BFMTVArticleIEr`  zbfmtv:articlezShttps?://(?:www\.|rmc\.)?bfmtv\.com/(?:[^/]+/)*[^/?&#]+_A[A-Z]-(?P<id>\d{12})\.htmlr   Nr   r   r   r   rc  rc    s    &GGkJLr   rc  c                       e Zd ZdZdZdZdZy)BFMTVIEr`  bfmtvzShttps?://(?:www\.|rmc\.)?bfmtv\.com/(?:[^/]+/)*[^/?&#]+_V[A-Z]-(?P<id>\d{12})\.htmlrl   Nr   r   r   r   re  re    s    &GGkJLr   re  c                       e Zd ZdZdZdZdZy)BFMTVLiveIEr`  z
bfmtv:livez@https?://(?:www\.|rmc\.)?bfmtv\.com/(?P<id>(?:[^/]+/)?en-direct)rl   Nr   r   r   r   rh  rh    s    &GGVJLr   rh  c                   $    e Zd ZdZdZdZdZdZdZy)BRIEzyt_dlp.extractor.brBRza(?P<base_url>https?://(?:www\.)?br(?:-klassik)?\.de)/(?:[a-z0-9\-_]+/)+(?P<id>[a-z0-9\-_]+)\.htmlFzBayerischer Rundfunkrl   N	r   r   r   r$   ra   r=   rE   r[   ro   r   r   r   rj  rj    s     #GGyJH$GLr   rj  c                        e Zd ZdZdZdZdZdZy)BTArticleIEyt_dlp.extractor.vgtvz
bt:articlez<https?://(?:www\.)?bt\.no/(?:[^/]+/)+(?P<id>[^/]+)-\d+\.htmlzBergens Tidende Articlesrl   Nr   r   r   r   rn  rn    s    %GGSJ(GLr   rn  c                       e Zd ZdZdZdZdZy)	BTVPlusIEzyt_dlp.extractor.btvplusBTVPluszQhttps?://(?:www\.)?btvplus\.bg/produkt/(?:predavaniya|seriali|novini)/(?P<id>\d+)rl   Nr   r   r   r   rq  rq    s    (GGgJLr   rq  c                        e Zd ZdZdZdZdZdZy)BTVestlendingenIEro  zbt:vestlendingenz>https?://(?:www\.)?bt\.no/spesial/vestlendingen/#!/(?P<id>\d+)zBergens Tidende - Vestlendingenrl   Nr   r   r   r   rt  rt    s    %G GTJ/GLr   rt  c                        e Zd ZdZdZdZdZdZy)BYUtvIEzyt_dlp.extractor.byutvBYUtvzihttps?://(?:www\.)?byutv\.org/(?:watch|player)/(?!event/)(?P<id>[0-9a-f-]+)(?:/(?P<display_id>[^/?#&]+))?Frl   Nr]  r   r   r   rv  rv    s    &GG~JHLr   rv  c                        e Zd ZdZdZdZdZdZy)BaiduVideoIEzyt_dlp.extractor.baidu
BaiduVideoz8https?://v\.baidu\.com/(?P<type>[a-z]+)/(?P<id>\d+)\.htmu   百度视频rm   Nr   r   r   r   ry  ry    s    &GGOJGLr   ry  c                       e Zd ZdZdZy)BanByeBaseIEyt_dlp.extractor.banbye
BanByeBaseNr   r   r   r   r|  r|    rE  r   r|  c                       e Zd ZdZdZdZdZy)BanByeChannelIEr}  BanByeChannelz:https?://(?:www\.)?banbye\.com/(?:en/)?channel/(?P<id>\w+)rm   Nr   r   r   r   r  r    s    'GGPJLr   r  c                       e Zd ZdZdZdZdZy)BanByeIEr}  BanByez;https?://(?:www\.)?banbye\.com/(?:en/)?watch/(?P<id>[\w-]+)r   Nr   r   r   r   r  r    s    'GGQJLr   r  c                       e Zd ZdZdZdZdZy)
BandcampIEyt_dlp.extractor.bandcampBandcampzBhttps?://(?P<uploader>[^/]+)\.bandcamp\.com/track/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r        )GGWJLr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )BandcampAlbumIEr  zBandcamp:albumzHhttps?://(?:(?P<subdomain>[^.]+)\.)?bandcamp\.com/album/(?P<id>[^/?#&]+)rm   c                 z    t         j                  |      st        j                  |      rdS t        |   |      S r   )BandcampWeeklyIEr4   r  r   r   s     r   r4   zBandcampAlbumIE.suitable'  s<     $,,S1Z5H5H5M  	,W%c*	,r   r   r   s   @r   r  r  !  s)    )GG]JL, ,r   r  c                       e Zd ZdZdZdZdZy)BandcampUserIEr  zBandcamp:userzEhttps?://(?!www\.)(?P<id>[^.]+)\.bandcamp\.com(?:/music)?/?(?:[#?]|$)rm   Nr   r   r   r   r  r  .  s    )GG[JLr   r  c                       e Zd ZdZdZdZdZy)r  r  zBandcamp:weeklyzEhttps?://(?:www\.)?bandcamp\.com/radio/?\?(?:[^#]+&)?show=(?P<id>\d+)rl   Nr   r   r   r   r  r  5  s    )GG\JLr   r  c                       e Zd ZdZdZy)BandlabBaseIEyt_dlp.extractor.bandlabBandlabBaseNr   r   r   r   r  r  <  r   r   r  c                        e Zd ZdZdZddgZdZy)	BandlabIEr  BandlabzShttps?://(?:www\.)?bandlab.com/(?P<url_type>track|post|revision)/(?P<id>[\da-f_-]+)zThttps?://(?:www\.)?bandlab.com/(?P<url_type>embed)/\?(?:[^#]*&)?id=(?P<id>[\da-f-]+)rl   Nr   r   r   r   r  r  A  s#    (GGi  lE  FJLr   r  c                        e Zd ZdZdZddgZdZy)BandlabPlaylistIEr  BandlabPlaylistzXhttps?://(?:www\.)?bandlab.com/(?:[\w]+/)?(?P<type>albums|collections)/(?P<id>[\da-f-]+)z[https?://(?:www\.)?bandlab.com/(?P<type>embed)/collection/\?(?:[^#]*&)?id=(?P<id>[\da-f-]+)rm   Nr   r   r   r   r  r  H  s#    (GGo  rR  SJLr   r  c                       e Zd ZdZdZdZdZy)BannedVideoIEzyt_dlp.extractor.bannedvideoBannedVideoz<https?://(?:www\.)?banned\.video/watch\?id=(?P<id>[0-f]{24})rl   Nr   r   r   r   r  r  O      ,GGRJLr   r  c                       e Zd ZdZdZdZdZy)
BeaconTvIEzyt_dlp.extractor.beaconBeaconTvz4https?://(?:www\.)?beacon\.tv/content/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  V  s    'GGJJLr   r  c                       e Zd ZdZdZdZdZy)
BeatportIEzyt_dlp.extractor.beatportBeatportzQhttps?://(?:www\.|pro\.)?beatport\.com/track/(?P<display_id>[^/]+)/(?P<id>[0-9]+)rl   Nr   r   r   r   r  r  ]  s    )GGgJLr   r  c                        e Zd ZdZdZdZdZdZy)BeegIEzyt_dlp.extractor.beegBeegz9https?://(?:www\.)?beeg\.(?:com(?:/video)?)/-?(?P<id>\d+)r   rl   Nrw  r   r   r   r  r  d  s    %GGOJILr   r  c                   $    e Zd ZdZdZdZdZdZdZy)BehindKinkIEzyt_dlp.extractor.behindkink
BehindKinkzlhttps?://(?:www\.)?behindkink\.com/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/(?P<id>[^/#?_]+)Fr   rl   N	r   r   r   r$   ra   r=   rE   rf   ro   r   r   r   r  r  l  s#    +GG BJHILr   r  c                       e Zd ZdZdZdZdZy)
BerufeTVIEzyt_dlp.extractor.berufetvBerufeTVzUhttps?://(?:www\.)?web\.arbeitsagentur\.de/berufetv/[^?#]+/film;filmId=(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  u  s    )GGlJLr   r  c                       e Zd ZdZdZy)MTVServicesBaseIEyt_dlp.extractor.mtvMTVServicesBaseNr   r   r   r   r  r  |      $GGr   r  c                       e Zd ZdZdZdZdZy)BetIEzyt_dlp.extractor.betBetzGhttps?://(?:www\.)?bet\.com/(?:video-clips|episodes)/(?P<id>[\da-z]{6})rl   Nr   r   r   r   r  r        $GG]JLr   r  c                       e Zd ZdZdZy)BibelTVBaseIEyt_dlp.extractor.bibeltvBibelTVBaseNr   r   r   r   r  r    r   r   r  c                        e Zd ZdZdZdZdZdZy)BibelTVLiveIEr  zbibeltv:livez9https?://(?:www\.)?bibeltv\.de/livestreams/(?P<id>[\w-]+)zBibelTV live programrl   Nr   r   r   r   r  r    s    (GGOJ$GLr   r  c                        e Zd ZdZdZdZdZdZy)BibelTVSeriesIEr  zbibeltv:serieszAhttps?://(?:www\.)?bibeltv\.de/mediathek/serien/(?P<id>\d+)[\w-]+zBibelTV series playlistrm   Nr   r   r   r   r  r    s    (GGXJ'GLr   r  c                        e Zd ZdZdZdZdZdZy)BibelTVVideoIEr  zbibeltv:videozAhttps?://(?:www\.)?bibeltv\.de/mediathek/videos/(?P<id>\d+)[\w-]+zBibelTV single videorl   Nr   r   r   r   r  r    s    (GGXJ$GLr   r  c                       e Zd ZdZdZdZdZy)BigoIEzyt_dlp.extractor.bigoBigoz8https?://(?:www\.)?bigo\.tv/(?:[a-z]{2,}/)?(?P<id>[^/]+)rl   Nr   r   r   r   r  r    s    %GGMJLr   r  c                        e Zd ZdZdZdZdZdZy)BildIEzyt_dlp.extractor.bildBildzchttps?://(?:www\.)?bild\.de/(?:[^/]+/)+(?P<display_id>[^/]+)-(?P<id>\d+)(?:,auto=true)?\.bild\.htmlzBild.derl   Nr   r   r   r   r  r    s    %GG{JGLr   r  c                       e Zd ZdZdZy)BilibiliBaseIEyt_dlp.extractor.bilibiliBilibiliBaseNr   r   r   r   r  r        )GGr   r  c                       e Zd ZdZdZdZdZy)BiliBiliBangumiIEr  BiliBiliBangumiz;https?://(?:www\.)?bilibili\.com/bangumi/play/ep(?P<id>\d+)rl   Nr   r   r   r   r  r    s    )GGQJLr   r  c                       e Zd ZdZdZdZdZy)BiliBiliBangumiMediaIEr  BiliBiliBangumiMediaz<https?://(?:www\.)?bilibili\.com/bangumi/media/md(?P<id>\d+)rm   Nr   r   r   r   r  r    s    )G$GRJLr   r  c                       e Zd ZdZdZdZdZy)BiliBiliBangumiSeasonIEr  BiliBiliBangumiSeasonz?(?x)https?://(?:www\.)?bilibili\.com/bangumi/play/ss(?P<id>\d+)rm   Nr   r   r   r   r  r    s    )G%GUJLr   r  c                       e Zd ZdZdZdZdZy)BiliBiliDynamicIEr  BiliBiliDynamiczFhttps?://(?:t\.bilibili\.com|(?:www\.)?bilibili\.com/opus)/(?P<id>\d+)rl   Nr   r   r   r   r  r    s    )GG^JLr   r  c                       e Zd ZdZdZdZdZy)
BiliBiliIEr  BiliBilizthttps?://(?:www\.)?bilibili\.com/(?:video/|festival/[^/?#]+\?(?:[^#]*&)?bvid=)(?P<prefix>[aAbB][vV])(?P<id>[^/?#&]+)r   Nr   r   r   r   r  r    s    )GG KJLr   r  c                       e Zd ZdZdZdZy)BiliBiliPlayerIEr  BiliBiliPlayerzAhttps?://player\.bilibili\.com/player\.html\?.*?\baid=(?P<id>\d+)Nr  r   r   r   r  r    s    )GGZJr   r  c                   $    e Zd ZdZdZdZdZdZdZy)BiliBiliSearchIEr  BiliBiliSearchz9bilisearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zBilibili video search
bilisearchrm   N	r   r   r   r$   ra   r=   r[   r\   ro   r   r   r   r  r    s     )GGNJ%GJLr   r  c                       e Zd ZdZdZdZy)BiliIntlBaseIEr  BiliIntlBasebiliintlNr{   r   r   r   r  r        )GGNr   r  c                        e Zd ZdZdZdZdZdZy)
BiliIntlIEr  BiliIntlzzhttps?://(?:www\.)?bili(?:bili\.tv|intl\.com)/(?:[a-zA-Z]{2}/)?(play/(?P<season_id>\d+)/(?P<ep_id>\d+)|video/(?P<aid>\d+))r  rl   Nr   r   r   r   r  r    s    )GG TJNLr   r  c                        e Zd ZdZdZdZdZdZy)BiliIntlSeriesIEr  zbiliIntl:serieszehttps?://(?:www\.)?bili(?:bili\.tv|intl\.com)/(?:[a-zA-Z]{2}/)?(?:play|media)/(?P<id>\d+)/?(?:[?#]|$)r  rm   Nr   r   r   r   r  r    s    )GG|JNLr   r  c                       e Zd ZdZdZdZdZy)
BiliLiveIEr  BiliLivez3https?://live\.bilibili\.com/(?:blanc/)?(?P<id>\d+)rl   Nr   r   r   r   r  r    s    )GGIJLr   r  c                       e Zd ZdZdZy)BilibiliAudioBaseIEr  BilibiliAudioBaseNr   r   r   r   r  r        )G!Gr   r  c                       e Zd ZdZdZdZdZy)BilibiliAudioAlbumIEr  BilibiliAudioAlbumz4https?://(?:www\.)?bilibili\.com/audio/am(?P<id>\d+)rm   Nr   r   r   r   r  r    s    )G"GJJLr   r  c                       e Zd ZdZdZdZdZy)BilibiliAudioIEr  BilibiliAudioz4https?://(?:www\.)?bilibili\.com/audio/au(?P<id>\d+)rl   Nr   r   r   r   r  r        )GGJJLr   r  c                       e Zd ZdZdZdZdZy)BilibiliCategoryIEr  zBilibili category extractorz7https?://(?:www\.)?bilibili\.com/v/[a-zA-Z]+\/[a-zA-Z]+rm   Nr   r   r   r   r  r    s    )G+GMJLr   r  c                       e Zd ZdZdZy)BilibiliCheeseBaseIEr  BilibiliCheeseBaseNr   r   r   r   r  r  "  s    )G"Gr   r  c                       e Zd ZdZdZdZdZy)BilibiliCheeseIEr  BilibiliCheesez:https?://(?:www\.)?bilibili\.com/cheese/play/ep(?P<id>\d+)rl   Nr   r   r   r   r  r  '  s    )GGPJLr   r  c                       e Zd ZdZdZdZdZy)BilibiliCheeseSeasonIEr  BilibiliCheeseSeasonz:https?://(?:www\.)?bilibili\.com/cheese/play/ss(?P<id>\d+)rm   Nr   r   r   r   r  r  .  s    )G$GPJLr   r  c                       e Zd ZdZdZy)BilibiliSpaceBaseIEr  BilibiliSpaceBaseNr   r   r   r   r  r  5  r  r   r  c                       e Zd ZdZdZy)BilibiliSpaceListBaseIEr  BilibiliSpaceListBaseNr   r   r   r   r  r  :  s    )G%Gr   r  c                   <     e Zd ZdZdZddgZdZe fd       Z xZ	S )BilibiliCollectionListIEr  BilibiliCollectionListzWhttps?://space\.bilibili\.com/(?P<mid>\d+)/channel/collectiondetail/?\?sid=(?P<sid>\d+)z=https?://space\.bilibili\.com/(?P<mid>\d+)/lists/(?P<sid>\d+)rm   c                 P    t         j                  |      rdS t        |   |      S r   )BilibiliSeriesListIEr4   r   r   s     r   r4   z!BilibiliCollectionListIE.suitableE  &    ,55c:uU@PQT@UUr   r   r   s   @r   r  r  ?  s8    )G&Gp  sv  wJLV Vr   r  c                       e Zd ZdZdZdZdZy)BilibiliFavoritesListIEr  BilibiliFavoritesListzlhttps?://(?:space\.bilibili\.com/\d+/favlist/?\?fid=|(?:www\.)?bilibili\.com/medialist/detail/ml)(?P<id>\d+)rm   Nr   r   r   r   r  r  J  s    )G%G GJLr   r  c                       e Zd ZdZdZdZdZy)BilibiliPlaylistIEr  BilibiliPlaylistzDhttps?://(?:www\.)?bilibili\.com/(?:medialist/play|list)/(?P<id>\w+)r   Nr   r   r   r   r  r  Q  s    )G GZJLr   r  c                        e Zd ZdZdZddgZdZy)r  r  BilibiliSeriesListzUhttps?://space\.bilibili\.com/(?P<mid>\d+)/channel/seriesdetail/?\?\bsid=(?P<sid>\d+)zahttps?://space\.bilibili\.com/(?P<mid>\d+)/lists/(?P<sid>\d+)/?\?(?:[^#]+&)?type=series(?:[&#]|$)rm   Nr   r   r   r   r  r  X  s#    )G"Go  rZ  [JLr   r  c                       e Zd ZdZdZdZdZy)BilibiliSpaceAudioIEr  BilibiliSpaceAudioz;https?://space\.bilibili\.com/(?P<id>\d+)/(?:upload/)?audiorm   Nr   r   r   r   r  r  _  s    )G"GQJLr   r  c                       e Zd ZdZdZdZdZy)BilibiliSpaceVideoIEr  BilibiliSpaceVideozShttps?://space\.bilibili\.com/(?P<id>\d+)(?P<video>(?:/upload)?/video)?/?(?:[?#]|$)rm   Nr   r   r   r   r  r  f  s    )G"GiJLr   r  c                       e Zd ZdZdZdZdZy)BilibiliWatchlaterIEr  BilibiliWatchlaterz7https?://(?:www\.)?bilibili\.com/watchlater/?(?:[?#]|$)rm   Nr   r   r   r   r"  r"  m  s    )G"GLJLr   r"  c                       e Zd ZdZdZdZdZy)BioBioChileTVIEzyt_dlp.extractor.biobiochiletvBioBioChileTVzWhttps?://(?:tv|www)\.biobiochile\.cl/(?:notas|noticias)/(?:[^/]+/)+(?P<id>[^/]+)\.shtmlrl   Nr   r   r   r   r%  r%  t  s    .GGmJLr   r%  c                       e Zd ZdZdZdZdZy)BitChuteChannelIEyt_dlp.extractor.bitchuteBitChuteChannelzThttps?://(?:(?:www|old)\.)?bitchute\.com/(?P<type>channel|playlist)/(?P<id>[^/?#&]+)rm   Nr   r   r   r   r(  r(  {  s    )GGiJLr   r(  c                       e Zd ZdZdZdZdZy)
BitChuteIEr)  BitChutezYhttps?://(?:(?:www|old)\.)?bitchute\.com/(?:video|embed|torrent/[^/?#]+)/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r,  r,    s    )GGnJLr   r,  c                       e Zd ZdZdZdZdZy)
BitmovinIEzyt_dlp.extractor.bitmovinBitmovinz+https?://streams\.bitmovin\.com/(?P<id>\w+)rl   Nr   r   r   r   r/  r/    s    )GGAJLr   r/  c                       e Zd ZdZdZdZdZy)BlackboardCollaborateIE&yt_dlp.extractor.blackboardcollaborateBlackboardCollaboratea,  (?x)
                        https?://
                        (?P<region>[a-z]+)(?:-lti)?\.bbcollab\.com/
                        (?:
                            collab/ui/session/playback/load|
                            recording
                        )/
                        (?P<id>[^/?#]+)rl   Nr   r   r   r   r2  r2    s    6G%G IJLr   r2  c                       e Zd ZdZdZdZy)BlackboardCollaborateLaunchIEr3  BlackboardCollaborateLaunchz5https?://[a-z]+\.bbcollab\.com/launch/(?P<id>[^/?#]+)Nr  r   r   r   r6  r6    s    6G+GJJr   r6  c                        e Zd ZdZdZdZdZdZy)BleacherReportCMSIEyt_dlp.extractor.bleacherreportBleacherReportCMSzRhttps?://(?:www\.)?bleacherreport\.com/video_embed\?id=(?P<id>[0-9a-f-]{36}|\d{5})Frl   Nr]  r   r   r   r9  r9    s    /G!GiJHLr   r9  c                        e Zd ZdZdZdZdZdZy)BleacherReportIEr:  BleacherReportz;https?://(?:www\.)?bleacherreport\.com/articles/(?P<id>\d+)Frl   Nr]  r   r   r   r=  r=    s    /GGQJHLr   r=  c                       e Zd ZdZdZdZdZy)BlerpIEzyt_dlp.extractor.blerpblerpz=https?://(?:www\.)?blerp\.com/soundbites/(?P<id>[0-9a-zA-Z]+)rl   Nr   r   r   r   r@  r@    s    &GGRJLr   r@  c                       e Zd ZdZdZdZdZy)BlobIEyt_dlp.extractor.commonmistakesBlobzblob:FNr,  r   r   r   rC  rC    s    /GGJGr   rC  c                       e Zd ZdZdZdZdZy)	BloggerIEzyt_dlp.extractor.bloggerzblogger.comz:https?://(?:www\.)?blogger\.com/video\.g\?token=(?P<id>.+)rl   Nr   r   r   r   rG  rG    s    (GGQJLr   rG  c                       e Zd ZdZdZdZdZy)BloombergIEzyt_dlp.extractor.bloomberg	Bloombergz<https?://(?:www\.)?bloomberg\.com/(?:[^/]+/)*(?P<id>[^/?#]+)rl   Nr   r   r   r   rI  rI    s    *GGQJLr   rI  c                   $    e Zd ZdZdZddgZdZdZy)	BlueskyIEzyt_dlp.extractor.blueskyBlueskyz_https?://(?:www\.)?(?:bsky\.app|main\.bsky\.dev)/profile/(?P<handle>[\w.:%-]+)/post/(?P<id>\w+)z<at://(?P<handle>[\w.:%-]+)/app\.bsky\.feed\.post/(?P<id>\w+)r   r   Nrw  r   r   r   rL  rL    s(    (GGy  |  @JILr   rL  c                        e Zd ZdZdZdZdZdZy)BongaCamsIEzyt_dlp.extractor.bongacams	BongaCamszIhttps?://(?P<host>(?:[^/]+\.)?bongacams\d*\.(?:com|net))/(?P<id>[^/?&#]+)r   rl   Nrw  r   r   r   rO  rO    s    *GG_JILr   rO  c                       e Zd ZdZdZdZdZy)BoostyIEzyt_dlp.extractor.boostyBoostyzJhttps?://(?:www\.)?boosty\.to/(?P<user>[^/#?]+)/posts/(?P<post_id>[^/#?]+)r   Nr   r   r   r   rR  rR    s    'GG_JLr   rR  c                       e Zd ZdZdZdZdZy)BostonGlobeIEzyt_dlp.extractor.bostonglobeBostonGlobezG(?i)https?://(?:www\.)?bostonglobe\.com/.*/(?P<id>[^/]+)/\w+(?:\.html)?rl   Nr   r   r   r   rU  rU    s    ,GG^JLr   rU  c                       e Zd ZdZdZdZdZy)BoxCastVideoIEzyt_dlp.extractor.boxcastBoxCastVideoz(?x)
        https?://boxcast\.tv/(?:
            view-embed/|
            channel/\w+\?(?:[^#]+&)?b=|
            video-portal/(?:\w+/){2}
        )(?P<id>[\w-]+)rl   Nr   r   r   r   rX  rX    s    (GG AJLr   rX  c                       e Zd ZdZdZdZdZy)BoxIEzyt_dlp.extractor.boxBoxzdhttps?://(?:[^.]+\.)?(?P<service>app|ent)\.box\.com/s/(?P<shared_name>[^/?#]+)(?:/file/(?P<id>\d+))?rl   Nr   r   r   r   r[  r[    s    $GG{JLr   r[  c                        e Zd ZdZdZdZdZdZy)BpbIEzyt_dlp.extractor.bpbBpbzBhttps?://(?:www\.|m\.)?bpb\.de/(?:[^/?#]+/)*(?P<id>\d+)(?:[/?#]|$)u&   Bundeszentrale für politische Bildungrl   Nr   r   r   r   r^  r^    s    $GGYJ6GLr   r^  c                       e Zd ZdZdZdZdZy)BrainPOPBaseIEyt_dlp.extractor.brainpopBrainPOPBase'/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))brainpopNrS  r   r   r   ra  ra    s    )GG:JNr   ra  c                       e Zd ZdZdZdZdZy)BrainPOPLegacyBaseIErb  BrainPOPLegacyBaserd  re  NrS  r   r   r   rg  rg    s    )G"G:JNr   rg  c                        e Zd ZdZdZdZdZdZy)BrainPOPELLIErb  BrainPOPELLzBhttps?://ell\.brainpop\.com/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))re  rl   Nr   r   r   r   rj  rj    s    )GGWJNLr   rj  c                   $    e Zd ZdZdZdZdZdZdZy)BrainPOPEspIErb  BrainPOPEspzBhttps?://esp\.brainpop\.com/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))u   BrainPOP Españolre  rl   Nr   r   r   r   rm  rm    s     )GGWJ!GNLr   rm  c                   $    e Zd ZdZdZdZdZdZdZy)BrainPOPFrIErb  
BrainPOPFrzAhttps?://fr\.brainpop\.com/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))u   BrainPOP Françaisre  rl   Nr   r   r   r   rp  rp    s     )GGVJ"GNLr   rp  c                        e Zd ZdZdZdZdZdZy)
BrainPOPIErb  BrainPOPzGhttps?://(?:www\.)?brainpop\.com/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))re  rl   Nr   r   r   r   rs  rs  %  s    )GG\JNLr   rs  c                   $    e Zd ZdZdZdZdZdZdZy)BrainPOPIlIErb  
BrainPOPIlzAhttps?://il\.brainpop\.com/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))zBrainPOP Hebrewre  rl   Nr   r   r   r   rv  rv  -  s     )GGVJGNLr   rv  c                        e Zd ZdZdZdZdZdZy)BrainPOPJrIErb  
BrainPOPJrzAhttps?://jr\.brainpop\.com/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))re  rl   Nr   r   r   r   ry  ry  6  s    )GGVJNLr   ry  c                       e Zd ZdZdZy)ThePlatformBaseIEyt_dlp.extractor.theplatformThePlatformBaseNr   r   r   r   r|  r|  >      ,GGr   r|  c                       e Zd ZdZdZy)NBCUniversalBaseIEyt_dlp.extractor.nbcNBCUniversalBaseNr   r   r   r   r  r  C  r   r   r  c                        e Zd ZdZdZdZdZdZy)	BravoTVIEr  BravoTVzGhttps?://(?:www\.)?(?:bravotv|oxygen)\.com/(?:[^/?#]+/)+(?P<id>[^/?#]+)   rl   Nrw  r   r   r   r  r  H  s    $GG\JILr   r  c                       e Zd ZdZdZdZdZy)BreitBartIEzyt_dlp.extractor.breitbart	BreitBartz:https?://(?:www\.)?breitbart\.com/videos/v/(?P<id>[^/?#]+)rl   Nr   r   r   r   r  r  P  s    *GGOJLr   r  c                       e Zd ZdZdZdZdZy)BrightcoveLegacyIEyt_dlp.extractor.brightcovezbrightcove:legacyzN(?:https?://.*brightcove\.com/(services|viewer).*?\?|brightcove:)(?P<query>.*)r   Nr   r   r   r   r  r  W  s    +G!GcJLr   r  c                       e Zd ZdZdZy)BrightcoveNewBaseIEr  BrightcoveNewBaseNr   r   r   r   r  r  ^  s    +G!Gr   r  c                       e Zd ZdZdZdZdZy)BrightcoveNewIEr  zbrightcove:newzhttps?://players\.brightcove\.net/(?P<account_id>\d+)/(?P<player_id>[^/]+)_(?P<embed>[^/]+)/index\.html\?.*(?P<content_type>video|playlist)Id=(?P<video_id>\d+|ref:[^&]+)r   Nr   r   r   r   r  r  c  s    +GG CJLr   r  c                       e Zd ZdZdZdZy)BrilliantpalaBaseIEyt_dlp.extractor.brilliantpalaBrilliantpalaBasebrilliantpalaNr{   r   r   r   r  r  j  s    .G!G$Nr   r  c                   $    e Zd ZdZdZdZdZdZdZy)BrilliantpalaClassesIEr  zBrilliantpala:Classesz^https?://classes\.brilliantpala\.org/courses/(?P<course_id>\d+)/contents/(?P<content_id>\d+)/?z VoD on classes.brilliantpala.orgr  rl   Nr   r   r   r   r  r  p  s     .G%GuJ0G$NLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)BrilliantpalaElearnIEr  zBrilliantpala:Elearnz]https?://elearn\.brilliantpala\.org/courses/(?P<course_id>\d+)/contents/(?P<content_id>\d+)/?zVoD on elearn.brilliantpala.orgr  rl   Nr   r   r   r   r  r  y  s     .G$GtJ/G$NLr   r  c                       e Zd ZdZdZdZdZy)BundesligaIEzyt_dlp.extractor.bundesliga
Bundesligazdhttps?://(?:www\.)?bundesliga\.com/[a-z]{2}/bundesliga/videos(?:/[^?]+)?\?vid=(?P<id>[a-zA-Z0-9]{8})rl   Nr   r   r   r   r  r    s    +GGzJLr   r  c                        e Zd ZdZdZddgZdZy)BundestagIEzyt_dlp.extractor.bundestag	Bundestagz%https?://dbtg\.tv/[cf]vid/(?P<id>\d+)zGhttps?://www\.bundestag\.de/mediathek/?\?(?:[^#]+&)?videoid=(?P<id>\d+)rl   Nr   r   r   r   r  r    s"    *GG;  >K  LJLr   r  c                       e Zd ZdZdZdZdZy)
BunnyCdnIEzyt_dlp.extractor.bunnycdnBunnyCdnz|https?://(?:(?:iframe|player)\.mediadelivery\.net|video\.bunnycdn\.com)/(?:embed|play)/(?P<library_id>\d+)/(?P<id>[\da-f-]+)rl   Nr   r   r   r   r  r    s    )GG VJLr   r  c                       e Zd ZdZdZdZdZy)BusinessInsiderIEz yt_dlp.extractor.businessinsiderBusinessInsiderzLhttps?://(?:[^/]+\.)?businessinsider\.(?:com|nl)/(?:[^/]+/)*(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r    s    0GGaJLr   r  c                       e Zd ZdZdZdZdZy)
BuzzFeedIEzyt_dlp.extractor.buzzfeedBuzzFeedz7https?://(?:www\.)?buzzfeed\.com/[^?#]*?/(?P<id>[^?#]+)rm   Nr   r   r   r   r  r    s    )GGLJLr   r  c                       e Zd ZdZdZdZdZy)C56IEzyt_dlp.extractor.c56z56.comzdhttps?://(?:(?:www|player)\.)?56\.com/(?:.+?/)?(?:v_|(?:play_album.+-))(?P<textid>.+?)\.(?:html|swf)r   Nr   r   r   r   r  r    s    $GGzJLr   r  c                        e Zd ZdZdZdZdZdZy)CAM4IEzyt_dlp.extractor.cam4CAM4z1https?://(?:[^/]+\.)?cam4\.com/(?P<id>[a-z0-9_]+)r   rl   Nrw  r   r   r   r  r    s    %GGFJILr   r  c                       e Zd ZdZdZdZy)CBCGemBaseIEyt_dlp.extractor.cbc
CBCGemBasecbcgemNr{   r   r   r   r  r    s    $GGNr   r  c                   $    e Zd ZdZdZdZdZdZdZy)CBCGemContentIEr  zgem.cbc.ca:contentz4https?://gem\.cbc\.ca/(?P<id>[0-9a-z-]+)/?(?:[?#]|$)Fr  r   Nr   r   r   r   r  r    s     $G"GIJGNLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)CBCGemIEr  z
gem.cbc.cazbhttps?://gem\.cbc\.ca/(?:media/)?(?P<id>[0-9a-z-]+/s(?P<season>[0-9]+)[a-z][0-9]{2,4})/?(?:[?#]|$)r  r  rl   N	r   r   r   r$   ra   r=   rZ   rf   ro   r   r   r   r  r    s     $GGwJNILr   r  c                        e Zd ZdZdZdZdZdZy)CBCGemLiveIEr  zgem.cbc.ca:livez1https?://gem\.cbc\.ca/live(?:-event)?/(?P<id>\d+)r  rl   Nr   r   r   r   r  r    s    $GGGJNLr   r  c                        e Zd ZdZdZdZdZdZy)CBCGemOlympicsIEr  zgem.cbc.ca:olympicszRhttps?://gem\.cbc\.ca/(?P<id>(?:[0-9a-z]+-)+[0-9]{5,})/s01e(?P<media_id>[0-9]{5,})r  rl   Nr   r   r   r   r  r    s    $G#GgJNLr   r  c                        e Zd ZdZdZdZdZdZy)CBCGemPlaylistIEr  zgem.cbc.ca:playlistz]https?://gem\.cbc\.ca/(?:media/)?(?P<id>(?P<show>[0-9a-z-]+)/s(?P<season>[0-9]+))/?(?:[?#]|$)r  rm   Nr   r   r   r   r  r    s    $G#GrJNLr   r  c                       e Zd ZdZdZdZdZy)CBCIEr  zcbc.caz`https?://(?:www\.)?cbc\.ca/(?!player/|listen/|i/caffeine/syndicate/)(?:[^/?#]+/)+(?P<id>[^/?#]+)r   Nr   r   r   r   r  r    s    $GGuJLr   r  c                       e Zd ZdZdZdZdZy)CBCListenIEr  zcbc.ca:listenzWhttps?://(?:www\.)?cbc\.ca/listen/(?:cbc-podcasts|live-radio)/[\w-]+/[\w-]+/(?P<id>\d+)rl   Nr   r   r   r   r  r    s    $GGoJLr   r  c                       e Zd ZdZdZdZdZy)CBCPlayerIEr  zcbc.ca:playerzy(?:cbcplayer:|https?://(?:www\.)?cbc\.ca/(?:player/play/(?:video/)?|i/caffeine/syndicate/\?mediaId=))(?P<id>(?:\d\.)?\d+)rl   Nr   r   r   r   r  r    s    $GG SJLr   r  c                       e Zd ZdZdZdZdZy)CBCPlayerPlaylistIEr  zcbc.ca:player:playlistz=https?://(?:www\.)?cbc\.ca/(?:player/)(?!play/)(?P<id>[^?#]+)rm   Nr   r   r   r   r  r    s    $G&GRJLr   r  c                       e Zd ZdZdZy)CBSNewsBaseIEyt_dlp.extractor.cbsnewsCBSNewsBaseNr   r   r   r   r  r     r   r   r  c                       e Zd ZdZdZy)CBSLocalBaseIEr  CBSLocalBaseNr   r   r   r   r  r    s    (GGr   r  c                       e Zd ZdZdZdZdZy)CBSLocalArticleIEr  CBSLocalArticlezhttps?://(?:www\.)?cbsnews\.com/(?:atlanta|baltimore|boston|chicago|colorado|detroit|losangeles|miami|minnesota|newyork|philadelphia|pittsburgh|sacramento|sanfrancisco|texas)/news/(?P<id>[\w-]+)r   Nr   r   r   r   r  r  
  s    (GG YJLr   r  c                       e Zd ZdZdZdZdZy)
CBSLocalIEr  CBSLocalzhttps?://(?:www\.)?cbsnews\.com/(?:atlanta|baltimore|boston|chicago|colorado|detroit|losangeles|miami|minnesota|newyork|philadelphia|pittsburgh|sacramento|sanfrancisco|texas)/(?:live/)?video/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r    s    (GG dJLr   r  c                       e Zd ZdZdZy)CBSNewsLiveBaseIEr  CBSNewsLiveBaseNr   r   r   r   r  r        (GGr   r  c                       e Zd ZdZdZdZdZy)CBSLocalLiveIEr  CBSLocalLivezhttps?://(?:www\.)?cbsnews\.com/(?P<id>atlanta|baltimore|boston|chicago|colorado|detroit|losangeles|miami|minnesota|newyork|philadelphia|pittsburgh|sacramento|sanfrancisco|texas)/live/?(?:[?#]|$)rl   Nr   r   r   r   r  r    s    (GG YJLr   r  c                       e Zd ZdZdZdZdZy)CBSNewsEmbedIEr  zcbsnews:embedz;https?://(?:www\.)?cbsnews\.com/embed/video[^#]*#(?P<id>.+)rl   Nr   r   r   r   r  r  $  s    (GGPJLr   r  c                        e Zd ZdZdZdZdZdZy)	CBSNewsIEr  cbsnewsz=https?://(?:www\.)?cbsnews\.com/(?:news|video)/(?P<id>[\w-]+)zCBS Newsr   Nr   r   r   r   r  r  +  s    (GGSJGLr   r  c                        e Zd ZdZdZdZdZdZy)CBSNewsLiveIEr  zcbsnews:livez0https?://(?:www\.)?cbsnews\.com/live/?(?:[?#]|$)zCBS News Livestreamrl   Nr   r   r   r   r  r  3  s    (GGEJ#GLr   r  c                        e Zd ZdZdZdZdZdZy)CBSNewsLiveVideoIEr  zcbsnews:livevideoz:https?://(?:www\.)?cbsnews\.com/live/video/(?P<id>[^/?#]+)zCBS News Live Videosrl   Nr   r   r   r   r  r  ;  s    (G!GOJ$GLr   r  c                       e Zd ZdZdZdZdZy)CBSSportsEmbedIEyt_dlp.extractor.cbssportszcbssports:embedz(?ix)https?://(?:(?:www\.)?cbs|embed\.247)sports\.com/player/embed.+?
        (?:
            ids%3D(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})|
            pcid%3D(?P<pcid>\d+)
        )FNr:  r   r   r   r  r  C  s    *GG _JHr   r  c                       e Zd ZdZdZy)CBSSportsBaseIEr  CBSSportsBaseNr   r   r   r   r  r  J      *GGr   r  c                        e Zd ZdZdZdZdZdZy)CBSSportsIEr  	cbssportsz>https?://(?:www\.)?cbssports\.com/[^/]+/video/(?P<id>[^/?#&]+)Frl   Nr]  r   r   r   r  r  O  s    *GGSJHLr   r  c                       e Zd ZdZdZdZdZy)CCCIEyt_dlp.extractor.ccczmedia.ccc.dez4https?://(?:www\.)?media\.ccc\.de/v/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r  W  s    $GGJJLr   r  c                       e Zd ZdZdZdZdZy)CCCPlaylistIEr  zmedia.ccc.de:listsz4https?://(?:www\.)?media\.ccc\.de/c/(?P<id>[^/?#&]+)rm   Nr   r   r   r   r  r  ^  s    $G"GJJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)CCMAIEzyt_dlp.extractor.ccmaCCMAzWhttps?://(?:www\.)?3cat\.cat/(?:3cat|tv3/sx3)/[^/?#]+/(?P<type>video|audio)/(?P<id>\d+)u   3Cat, TV3 and Catalunya Ràdio   rl   N	r   r   r   r$   ra   r=   r[   rf   ro   r   r   r   r  r  e  s     %GGmJ.GILr   r  c                        e Zd ZdZdZdZdZdZy)CCTVIEzyt_dlp.extractor.cctvCCTVzhttps?://(?:(?:[^/]+)\.(?:cntv|cctv)\.(?:com|cn)|(?:www\.)?ncpa-classic\.com)/(?:[^/]+/)*?(?P<id>[^/?#&]+?)(?:/index)?(?:\.s?html|[?#&]|$)u	   央视网rl   Nr   r   r   r   r  r  n  s    %GG cJGLr   r  c                       e Zd ZdZdZdZdZy)CDAFolderIEyt_dlp.extractor.cda	CDAFolderzGhttps?://(?:(?:www|m)\.)?cda\.pl/(?P<channel>[\w-]+)/folder/(?P<id>\d+)rm   Nr   r   r   r   r  r  v  s    $GG^JLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)CDAIEr  CDAzWhttps?://(?:(?:(?:www|m)\.)?cda\.pl/video|ebd\.cda\.pl/[0-9]+x[0-9]+)/(?P<id>[0-9a-z]+)cdaplr   rl   Nr  r   r   r   r  r  }  s     $GGnJNILr   r  c                       e Zd ZdZdZdZdZy)CGTNIEzyt_dlp.extractor.cgtnCGTNzhhttps?://news\.cgtn\.com/news/[0-9]{4}-[0-9]{2}-[0-9]{2}/[a-zA-Z0-9-]+-(?P<id>[a-zA-Z0-9-]+)/index\.htmlrl   Nr   r   r   r   r  r    s    %GG~JLr   r  c                       e Zd ZdZdZdZdZy)CHZZKLiveIEyt_dlp.extractor.chzzkz
chzzk:livez0https?://chzzk\.naver\.com/live/(?P<id>[\da-f]+)rl   Nr   r   r   r   r  r    s    &GGFJLr   r  c                       e Zd ZdZdZdZdZy)CHZZKVideoIEr	  zchzzk:videoz,https?://chzzk\.naver\.com/video/(?P<id>\d+)rl   Nr   r   r   r   r  r        &GGBJLr   r  c                       e Zd ZdZdZdZdZy)CJSWIEzyt_dlp.extractor.cjswCJSWzKhttps?://(?:www\.)?cjsw\.com/program/(?P<program>[^/]+)/episode/(?P<id>\d+)rl   Nr   r   r   r   r  r    s    %GGaJLr   r  c                       e Zd ZdZdZdZdZy)CNBCVideoIEzyt_dlp.extractor.cnbc	CNBCVideozGhttps?://(?:www\.)?cnbc\.com/video/(?:[^/?#]+/)+(?P<id>[^./?#&]+)\.htmlrl   Nr   r   r   r   r  r    s    %GG]JLr   r  c                       e Zd ZdZdZdZdZy)CNNIEyt_dlp.extractor.cnnCNNzqhttps?://(?:(?:edition|www|money|cnnespanol)\.)?cnn\.com/(?!audio/)(?P<display_id>[^?#]+?)(?:[?#]|$|/index\.html)r   Nr   r   r   r   r  r    s    $GG HJLr   r  c                       e Zd ZdZdZdZdZy)CNNIndonesiaIEr  CNNIndonesiazghttps?://www\.cnnindonesia\.com/[\w-]+/(?P<upload_date>\d{8})\d+-\d+-(?P<id>\d+)/(?P<display_id>[\w-]+)rl   Nr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZy)CPACIEyt_dlp.extractor.cpaccpaczchttps?://(?:www\.)?cpac\.ca/(?P<fr>l-)?episode\?id=(?P<id>[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12})rl   Nr   r   r   r   r  r    s    %GG|JLr   r  c                       e Zd ZdZdZdZdZy)CPACPlaylistIEr  zcpac:playlistz(?i)https?://(?:www\.)?cpac\.ca/(?:program|search|(?P<fr>emission|rechercher))\?(?:[^&]+&)*?(?P<id>(?:id=\d+|programId=\d+|key=[^&]+))rm   Nr   r   r   r   r  r    s    %GG _JLr   r  c                       e Zd ZdZdZdZdZy)CPTwentyFourIEyt_dlp.extractor.ninecninemediacp24z0https?://(?:www\.)?cp24\.com/news/(?P<id>[^?#]+)rl   Nr   r   r   r   r!  r!    s    /GGEJLr   r!  c                       e Zd ZdZdZdZdZy)CSpanCongressIEyt_dlp.extractor.cspanCSpanCongressz(https?://(?:www\.)?c-span\.org/congress/rl   Nr   r   r   r   r%  r%    s    &GG=JLr   r%  c                        e Zd ZdZdZdZdZdZy)CSpanIEr&  CSpanz8https?://(?:www\.)?c-span\.org/video/\?(?P<id>[0-9a-f]+)zC-SPANr   Nr   r   r   r   r)  r)    s    &GGNJGLr   r)  c                        e Zd ZdZdZg dZdZy)	CTVNewsIEzyt_dlp.extractor.ctvnewsCTVNews)z6https?://(?:[^.]+\.)?ctvnews\.ca/video/c(?P<id>\d{5,})zLhttps?://(?:[^.]+\.)?ctvnews\.ca/video(?:-gallery)?/?\?clipId=(?P<id>\d{5,})zOhttps?://(?:[^.]+\.)?ctvnews\.ca/video/?\?(?:playlist|bin)Id=(?P<id>\d\.\d{5,})zPhttps?://(?:[^.]+\.)?ctvnews\.ca/(?!video/)[^?#]*?(?P<id>\d\.\d{5,})/?(?:$|[?#])zKhttps?://(?:[^.]+\.)?ctvnews\.ca/(?!video/)[^?#]+\?binId=(?P<id>\d\.\d{5,})r   Nr   r   r   r   r,  r,    s    (GG jJLr   r,  c                       e Zd ZdZdZdZdZy)
CaltransIEzyt_dlp.extractor.caltransCaltranszAhttps?://(?:[^/]+\.)?ca\.gov/vm/loc/[^/]+/(?P<id>[a-z0-9_]+)\.htmrl   Nr   r   r   r   r/  r/    r  r   r/  c                       e Zd ZdZdZdZdZy)CamFMEpisodeIEyt_dlp.extractor.camfmCamFMEpisodez5https?://(?:www\.)?camfm\.co\.uk/player/(?P<id>[^/]+)rl   Nr   r   r   r   r2  r2        &GGKJLr   r2  c                       e Zd ZdZdZdZdZy)CamFMShowIEr3  	CamFMShowz4https?://(?:www\.)?camfm\.co\.uk/shows/(?P<id>[^/]+)rm   Nr   r   r   r   r7  r7    s    &GGJJLr   r7  c                       e Zd ZdZdZdZy)CamModelsIEzyt_dlp.extractor.cammodels	CamModelsz6https?://(?:www\.)?cammodels\.com/cam/(?P<id>[^/?#&]+)Nr  r   r   r   r:  r:    s    *GGKJr   r:  c                        e Zd ZdZdZdZdZdZy)	CamsodaIEzyt_dlp.extractor.camsodaCamsodaz)https?://www\.camsoda\.com/(?P<id>[\w-]+)r   rl   Nrw  r   r   r   r=  r=    s    (GG?JILr   r=  c                       e Zd ZdZdZdZy)CamtasiaEmbedIEzyt_dlp.extractor.camtasiaCamtasiaEmbedFNr  r   r   r   r@  r@  	  s    )GGJr   r@  c                       e Zd ZdZdZdZdZy)Canal1IEzyt_dlp.extractor.canal1Canal1zHhttps?://(?:www\.|noticias\.)?canal1\.com\.co/(?:[^?#&])+/(?P<id>[\w-]+)rl   Nr   r   r   r   rC  rC  	  s    'GG`JLr   rC  c                       e Zd ZdZdZdZdZy)CanalAlphaIEzyt_dlp.extractor.canalalpha
CanalAlphazBhttps?://(?:www\.)?canalalpha\.ch/play/[^/]+/[^/]+/(?P<id>\d+)/?.*rl   Nr   r   r   r   rF  rF  	  s    +GGXJLr   rF  c                       e Zd ZdZdZdZdZy)	Canalc2IEzyt_dlp.extractor.canalc2z
canalc2.tvzmhttps?://(?:(?:www\.)?canalc2\.tv/video/|archives-canalc2\.u-strasbg\.fr/video\.asp\?.*\bidVideo=)(?P<id>\d+)rl   Nr   r   r   r   rI  rI  	  s    (GG IJLr   rI  c                        e Zd ZdZdZdZdZdZy)CanalplusIEzyt_dlp.extractor.canalplus	Canalpluszvhttps?://(?:www\.)?(?P<site>mycanal|piwiplus)\.fr/(?:[^/]+/)*(?P<display_id>[^?/]+)(?:\.html\?.*\bvid=|/p/)(?P<id>\d+)zmycanal.fr and piwiplus.frrl   Nr   r   r   r   rK  rK   	  s    *GG PJ*GLr   rK  c                       e Zd ZdZdZdZdZy)CanalsurmasIEzyt_dlp.extractor.canalsurmasCanalsurmasz5https?://(?:www\.)?canalsurmas\.es/videos/(?P<id>\d+)rl   Nr   r   r   r   rN  rN  (	      ,GGKJLr   rN  c                        e Zd ZdZdZdZdZdZy)CaracolTvPlayIEzyt_dlp.extractor.caracoltvCaracolTvPlayz:https?://play\.caracoltv\.com/videoDetails/(?P<id>[^/?#]+)zcaracoltv-playrm   Nr   r   r   r   rR  rR  /	  s    *GGOJ%NLr   rR  c                       e Zd ZdZdZy)VidyardBaseIEyt_dlp.extractor.vidyardVidyardBaseNr   r   r   r   rU  rU  7	  r   r   rU  c                       e Zd ZdZdZdZdZy)CellebriteIEzyt_dlp.extractor.cellebrite
Cellebritez0https?://cellebrite\.com/(?:\w+)?/(?P<id>[\w-]+)rl   Nr   r   r   r   rY  rY  <	  s    +GGFJLr   rY  c                       e Zd ZdZdZdZdZy)CeskaTelevizeIEzyt_dlp.extractor.ceskatelevizeCeskaTelevizez\https?://(?:www\.)?ceskatelevize\.cz/(?:ivysilani|porady|zive)/(?:[^/?#&]+/)*(?P<id>[^/#?]+)r   Nr   r   r   r   r\  r\  C	  s    .GGqJLr   r\  c                       e Zd ZdZdZdZdZy)CharlieRoseIEzyt_dlp.extractor.charlieroseCharlieRosezNhttps?://(?:www\.)?charlierose\.com/(?:video|episode)(?:s|/player)/(?P<id>\d+)rl   Nr   r   r   r   r_  r_  J	  s    ,GGdJLr   r_  c                        e Zd ZdZdZdZdZdZy)ChaturbateIEzyt_dlp.extractor.chaturbate
Chaturbatezahttps?://(?:[^/]+\.)?chaturbate\.(?P<tld>com|eu|global)/(?:fullvideo/?\?.*?\bb=)?(?P<id>[^/?&#]+)r   rl   Nrw  r   r   r   rb  rb  Q	  s    +GGxJILr   rb  c                       e Zd ZdZdZdZdZy)ChilloutzoneIEzyt_dlp.extractor.chilloutzoneChilloutzonez?https?://(?:www\.)?chilloutzone\.net/video/(?P<id>[\w-]+)\.htmlrl   Nr   r   r   r   re  re  Y	  s    -GGVJLr   re  c                       e Zd ZdZdZy)	HBOBaseIEyt_dlp.extractor.hboHBOBaseNr   r   r   r   rh  rh  `	      $GGr   rh  c                        e Zd ZdZdZdZdZdZy)	CinemaxIEzyt_dlp.extractor.cinemaxCinemaxzLhttps?://(?:www\.)?cinemax\.com/(?P<path>[^/]+/video/[0-9a-z-]+-(?P<id>\d+))Frl   Nr]  r   r   r   rm  rm  e	  s    (GGbJHLr   rm  c                       e Zd ZdZdZdZdZy)CinetecaMilanoIEzyt_dlp.extractor.cinetecamilanoCinetecaMilanoz6https?://(?:www\.)?cinetecamilano\.it/film/(?P<id>\d+)rl   Nr   r   r   r   rp  rp  m	  s    /GGLJLr   rp  c                       e Zd ZdZdZy)CineverseBaseIEyt_dlp.extractor.cineverseCineverseBaseNr   r   r   r   rs  rs  t	  r  r   rs  c                       e Zd ZdZdZdZdZy)CineverseDetailsIErt  CineverseDetailszhttps?://www\.(?P<host>cineverse\.com|asiancrush\.com|dovechannel\.com|screambox\.com|midnightpulp\.com|fandor\.com|retrocrush\.tv)/details/(?P<id>[A-Z0-9]+)r   Nr   r   r   r   rw  rw  y	  s    *G G yJLr   rw  c                        e Zd ZdZdZdZdZdZy)CineverseIErt  	Cineversezhttps?://www\.(?P<host>cineverse\.com|asiancrush\.com|dovechannel\.com|screambox\.com|midnightpulp\.com|fandor\.com|retrocrush\.tv)/watch/(?P<id>[A-Z0-9]+)r  rl   Nrw  r   r   r   rz  rz  	  s    *GG wJILr   rz  c                       e Zd ZdZdZy)CiscoLiveBaseIEyt_dlp.extractor.ciscoliveCiscoLiveBaseNr   r   r   r   r}  r}  	  r  r   r}  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )CiscoLiveSearchIEr~  CiscoLiveSearchzWhttps?://(?:www\.)?ciscolive(?:\.cisco)?\.com/(?:global/)?on-demand-library(?:\.html|/)rm   c                 P    t         j                  |      rdS t        |   |      S r   )CiscoLiveSessionIEr4   r   r   s     r   r4   zCiscoLiveSearchIE.suitable	  %    *33C8uSeg>Ns>SSr   r   r   s   @r   r  r  	  s+    *GGnJLT Tr   r  c                       e Zd ZdZdZdZdZy)r  r~  CiscoLiveSessionzLhttps?://(?:www\.)?ciscolive(?:\.cisco)?\.com/[^#]*#/session/(?P<id>[^/?&]+)rl   Nr   r   r   r   r  r  	  s    *G GbJLr   r  c                       e Zd ZdZdZdZdZy)CiscoWebexIEzyt_dlp.extractor.ciscowebex
ciscowebexaU  (?x)
                    (?P<url>https?://(?P<subdomain>[^/#?]*)\.webex\.com/(?:
                        (?P<siteurl_1>[^/#?]*)/(?:ldr|lsr).php\?(?:[^#]*&)*RCID=(?P<rcid>[0-9a-f]{32})|
                        (?:recordingservice|webappng)/sites/(?P<siteurl_2>[^/#?]*)/recording/(?:playback/|play/)?(?P<id>[0-9a-f]{32})
                    ))zCisco WebexNr,  r   r   r   r  r  	  s    +GG pJGr   r  c                       e Zd ZdZdZy)
OnetBaseIEyt_dlp.extractor.onetOnetBaseNr   r   r   r   r  r  	      %GGr   r  c                        e Zd ZdZdZdZdZdZy)ClipRsIEzyt_dlp.extractor.cliprsClipRsz-https?://(?:www\.)?clip\.rs/(?P<id>[^/]+)/\d+Frl   Nr]  r   r   r   r  r  	  s    'GGCJHLr   r  c                       e Zd ZdZdZdZdZy)ClipchampIEzyt_dlp.extractor.clipchamp	Clipchampz6https?://(?:www\.)?clipchamp\.com/watch/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  	      *GGLJLr   r  c                        e Zd ZdZdZdZdZdZy)CloserToTruthIEzyt_dlp.extractor.closertotruthCloserToTruthzAhttps?://(?:www\.)?closertotruth\.com/(?:[^/]+/)*(?P<id>[^/?#&]+)Fr   Nr]  r   r   r   r  r  	  s    .GGVJHLr   r  c                       e Zd ZdZdZdZdZy)CloudflareStreamIEz!yt_dlp.extractor.cloudflarestreamCloudflareStreama9  https?://(?:(?:(?:watch|iframe|customer-\w+)\.)?(?P<domain>(?:cloudflarestream\.com|(?:videodelivery|bytehighway)\.net))/|(?:embed\.|(?:(?:watch|iframe|customer-\w+)\.)?)(?:cloudflarestream\.com|(?:videodelivery|bytehighway)\.net)/embed/[^/?#]+\.js\?(?:[^#]+&)?video=)(?P<id>[\da-f]{32}|eyJ[\w-]+\.[\w-]+\.[\w-]+)rl   Nr   r   r   r   r  r  	  s    1G G ^JLr   r  c                       e Zd ZdZdZdZdZy)CloudyCDNIEzyt_dlp.extractor.cloudycdn	CloudyCDNzn(?:https?:)?//embed\.(?P<domain>cloudycdn\.services|backscreen\.com)/(?P<site_id>[^/?#]+)/media/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  	  s    *GG FJLr   r  c                        e Zd ZdZdZdZdZdZy)ClubicIEzyt_dlp.extractor.clubicClubiczLhttps?://(?:www\.)?clubic\.com/video/(?:[^/]+/)*video.*-(?P<id>[0-9]+)\.htmlFrl   Nr]  r   r   r   r  r  	  s    'GGbJHLr   r  c                       e Zd ZdZdZdZdZy)ClypIEzyt_dlp.extractor.clypClypz-https?://(?:www\.)?clyp\.it/(?P<id>[a-z0-9]+)rl   Nr   r   r   r   r  r  	      %GGBJLr   r  c                       e Zd ZdZdZdZdZy)ComedyCentralIEzyt_dlp.extractor.comedycentralComedyCentralz9https?://(?:www\.)?cc\.com/video-clips/(?P<id>[\da-z]{6})rl   Nr   r   r   r   r  r  	  s    .GGOJLr   r  c                       e Zd ZdZdZdZdZy)CommonMistakesIErD  CommonMistakesz(?:url|URL|yt-dlp)$FNr,  r   r   r   r  r  	  s    /GG&JGr   r  c                       e Zd ZdZdZy)TeamcocoBaseIEyt_dlp.extractor.teamcocoTeamcocoBaseNr   r   r   r   r  r  	  r  r   r  c                        e Zd ZdZdZdZdZdZy)ConanClassicIEr  ConanClassiczShttps?://(?:(?:www\.)?conanclassic|conan25\.teamcoco)\.com/(?P<id>([^/]+/)*[^/?#]+)Frl   Nr]  r   r   r   r  r  	  s    )GGiJHLr   r  c                        e Zd ZdZdZdZdZdZy)CondeNastIEzyt_dlp.extractor.condenast	CondeNasta  (?x)https?://(?:video|www|player(?:-backend)?)\.(?:allure|architecturaldigest|arstechnica|bonappetit|brides|cnevids|cntraveler|details|epicurious|glamour|golfdigest|gq|newyorker|self|teenvogue|vanityfair|vogue|wired|wmagazine)\.com/
        (?:
            (?:
                embed(?:js)?|
                (?:script|inline)/video
            )/(?P<id>[0-9a-f]{24})(?:/(?P<player_id>[0-9a-f]{24}))?(?:.+?\btarget=(?P<target>[^&]+))?|
            (?P<type>watch|series|video)/(?P<display_id>[^/?#]+)
        )u   Condé Nast media group: Allure, Architectural Digest, Ars Technica, Bon Appétit, Brides, Condé Nast, Condé Nast Traveler, Details, Epicurious, GQ, Glamour, Golf Digest, SELF, Teen Vogue, The New Yorker, Vanity Fair, Vogue, W Magazine, WIREDrl   Nr   r   r   r   r  r  	  s!    *GG ZJ EGLr   r  c                       e Zd ZdZdZdZdZy)CookingChannelIEr  CookingChannelzFhttps?://(?:watch\.)?cookingchanneltv\.com/video/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r  r  
  s    &GG[JLr   r  c                       e Zd ZdZdZdZdZy)CoubIEzyt_dlp.extractor.coubCoubzz(?:coub:|https?://(?:coub\.com/(?:view|embed|coubs)/|c-cdn\.coub\.com/fb-player\.swf\?.*\bcoub(?:ID|id)=))(?P<id>[\da-z]+)rl   Nr   r   r   r   r  r  	
  s    %GG UJLr   r  c                       e Zd ZdZdZdZdZy)CozyTVIEzyt_dlp.extractor.cozytvCozyTVzIhttps?://(?:www\.)?cozy\.tv/(?P<uploader>[^/]+)/replays/(?P<id>[^/$#&?]+)rl   Nr   r   r   r   r  r  
  s    'GG^JLr   r  c                       e Zd ZdZdZdZdZy)	CrackedIEzyt_dlp.extractor.crackedCrackedzAhttps?://(?:www\.)?cracked\.com/video_(?P<id>\d+)_[\da-z-]+\.htmlrl   Nr   r   r   r   r  r  
      (GGYJLr   r  c                       e Zd ZdZdZdZdZy)	CraftsyIEzyt_dlp.extractor.craftsyCraftsyz/https?://www\.craftsy\.com/class/(?P<id>[\w-]+)rm   Nr   r   r   r   r  r  
  s    (GGEJLr   r  c                       e Zd ZdZdZdZdZy)CroatianFilmIEzyt_dlp.extractor.croatianfilmzcroatian.filmz>https://?(?:www\.)?croatian\.film/[a-z]{2}/[^/?#]+/(?P<id>\d+)rl   Nr   r   r   r   r  r  %
  s    -GGTJLr   r  c                       e Zd ZdZdZdZdZy)CrooksAndLiarsIEzyt_dlp.extractor.crooksandliarsCrooksAndLiarszDhttps?://embed\.crooksandliars\.com/(?:embed|v)/(?P<id>[A-Za-z0-9]+)rl   Nr   r   r   r   r  r  ,
  s    /GGYJLr   r  c                       e Zd ZdZdZdZdZy)CrowdBunkerChannelIEyt_dlp.extractor.crowdbunkerCrowdBunkerChannelz6https?://(?:www\.)?crowdbunker\.com/@(?P<id>[^/?#$&]+)rm   Nr   r   r   r   r  r  3
  s    ,G"GKJLr   r  c                       e Zd ZdZdZdZdZy)CrowdBunkerIEr  CrowdBunkerz7https?://(?:www\.)?crowdbunker\.com/v/(?P<id>[^/?#$&]+)rl   Nr   r   r   r   r  r  :
  s    ,GGLJLr   r  c                       e Zd ZdZdZdZdZy)CrtvgIEzyt_dlp.extractor.crtvgCrtvgz8https?://(?:www\.)?crtvg\.es/tvg/a-carta/(?P<id>[^/#?]+)rl   Nr   r   r   r   r  r  A
      &GGMJLr   r  c                        e Zd ZdZdZdZdZdZy)	CtsNewsIEzyt_dlp.extractor.ctsnewsCtsNewsz?https?://news\.cts\.com\.tw/[a-z]+/[a-z]+/\d+/(?P<id>\d+)\.htmlu   華視新聞rl   Nr   r   r   r   r  r  H
  s    (GGXJGLr   r  c                       e Zd ZdZdZdZdZy)CultureUnpluggedIEz!yt_dlp.extractor.cultureunpluggedCultureUnpluggedzthttps?://(?:www\.)?cultureunplugged\.com/(?:documentary/watch-online/)?play/(?P<id>\d+)(?:/(?P<display_id>[^/#?]+))?rl   Nr   r   r   r   r  r  P
  s    1G G KJLr   r  c                       e Zd ZdZdZdZy)CuriosityStreamBaseIE yt_dlp.extractor.curiositystreamCuriosityStreamBasecuriositystreamNr{   r   r   r   r  r  W
      0G#G&Nr   r  c                       e Zd ZdZdZdZy)CuriosityStreamCollectionBaseIEr  CuriosityStreamCollectionBaser  Nr{   r   r   r   r  r  ]
  s    0G-G&Nr   r  c                        e Zd ZdZdZdZdZdZy)CuriosityStreamCollectionsIEr  zcuriositystream:collectionsz?https?://(?:app\.)?curiositystream\.com/collections/(?P<id>\d+)r  rm   Nr   r   r   r   r  r  c
  s    0G+GUJ&NLr   r  c                        e Zd ZdZdZdZdZdZy)CuriosityStreamIEr  r  z9https?://(?:app\.)?curiositystream\.com/video/(?P<id>\d+)rl   Nr   r   r   r   r  r  k
  s    0GGOJ&NLr   r  c                        e Zd ZdZdZdZdZdZy)CuriosityStreamSeriesIEr  zcuriositystream:serieszIhttps?://(?:app\.)?curiositystream\.com/(?:series|collection)/(?P<id>\d+)r  rm   Nr   r   r   r   r  r  s
  s    0G&G_J&NLr   r  c                       e Zd ZdZdZdZy)CybraryBaseIEyt_dlp.extractor.cybraryCybraryBasecybraryNr{   r   r   r   r  r  {
  r#  r   r  c                        e Zd ZdZdZdZdZdZy)CybraryCourseIEr  CybraryCoursezBhttps?://app\.cybrary\.it/browse/course/(?P<id>[\w-]+)/?(?:$|[#?])r  rm   Nr   r   r   r   r  r  
  s    (GGXJNLr   r  c                        e Zd ZdZdZdZdZdZy)	CybraryIEr  CybraryzRhttps?://app\.cybrary\.it/immersive/(?P<enrollment>[0-9]+)/activity/(?P<id>[0-9]+)r  rl   Nr   r   r   r   r  r  
  s    (GGgJNLr   r  c                       e Zd ZdZdZdZdZy)DBTVIEzyt_dlp.extractor.dbtvDBTVzthttps?://(?:www\.)?dagbladet\.no/video/(?:(?:embed|(?P<display_id>[^/]+))/)?(?P<id>[0-9A-Za-z_-]{11}|[a-zA-Z0-9]{8})rl   Nr   r   r   r   r  r  
  s    %GG JJLr   r  c                       e Zd ZdZdZdZdZy)DFBIEzyt_dlp.extractor.dfbz	tv.dfb.dez<https?://tv\.dfb\.de/video/(?P<display_id>[^/]+)/(?P<id>\d+)rl   Nr   r   r   r   r  r  
  s    $GGRJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)DHMIEzyt_dlp.extractor.dhmDHMz>https?://(?:www\.)?dhm\.de/filmarchiv/(?:[^/]+/)+(?P<id>[^/]+)Fz*Filmarchiv - Deutsches Historisches Museumrl   Nrl  r   r   r   r  r  
  s     $GGSJH:GLr   r  c                       e Zd ZdZdZy)	DLFBaseIEyt_dlp.extractor.dlfDLFBaseNr   r   r   r   r   r   
  rk  r   r   c                        e Zd ZdZdZdZdZdZy)DLFCorpusIEr  z
dlf:corpuszXhttps?://(?:www\.)?deutschlandfunk\.de/(?P<id>(?![\w-]+-dlf-[\da-f]{8})[\w-]+-\d+)\.htmlzDLF Multi-feed Archivesrm   Nr   r   r   r   r  r  
  s    $GGrJ'GLr   r  c                       e Zd ZdZdZdZdZy)DLFIEr  dlfzNhttps?://(?:www\.)?deutschlandfunk\.de/[\w-]+-dlf-(?P<id>[\da-f]{8})-100\.htmlrl   Nr   r   r   r   r  r  
  s    $GGfJLr   r  c                       e Zd ZdZdZdZy)DLiveStreamIEyt_dlp.extractor.dlivezdlive:streamz2https?://(?:www\.)?dlive\.tv/(?!p/)(?P<id>[\w.-]+)Nr  r   r   r   r	  r	  
  s    &GGHJr   r	  c                       e Zd ZdZdZdZdZy)
DLiveVODIEr
  z	dlive:vodzEhttps?://(?:www\.)?dlive\.tv/p/(?P<uploader_id>.+?)\+(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r  
  s    &GG[JLr   r  c                       e Zd ZdZdZdZdZy)DPlayIEr  DPlayaO  (?x)https?://
        (?P<domain>
            (?:www\.)?(?P<host>d
                (?:
                    play\.(?P<country>dk|fi|jp|se|no)|
                    iscoveryplus\.(?P<plus_country>dk|es|fi|it|se|no)
                )
            )|
            (?P<subdomain_country>es|it)\.dplay\.com
        )/[^/]+/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r  r  
  s    &GG qJLr   r  c                       e Zd ZdZdZdZdZy)DRBonanzaIEzyt_dlp.extractor.drbonanza	DRBonanzazVhttps?://(?:www\.)?dr\.dk/bonanza/[^/]+/\d+/[^/]+/(?P<id>\d+)/(?P<display_id>[^/?#&]+)rl   Nr   r   r   r   r  r  
  s    *GGmJLr   r  c                       e Zd ZdZdZdZdZy)DRTVIEyt_dlp.extractor.drtvdrtvaF  (?x)
                    https?://
                        (?:
                            (?:www\.)?dr\.dk/tv/se(?:/ondemand)?/(?:[^/?#]+/)*|
                            (?:www\.)?(?:dr\.dk|dr-massive\.com)/drtv/(?:se|episode|program)/
                        )
                        (?P<id>[\da-z_-]+)
                    rl   Nr   r   r   r   r  r  
  s    %GG gJLr   r  c                       e Zd ZdZdZdZdZy)
DRTVLiveIEr  z	drtv:livez:https?://(?:www\.)?dr\.dk/(?:tv|TV)/live/(?P<id>[\da-z-]+)rl   Nr   r   r   r   r  r  
  s    %GGPJLr   r  c                       e Zd ZdZdZdZdZy)DRTVSeasonIEr  zdrtv:seasonz\https?://(?:www\.)?(?:dr\.dk|dr-massive\.com)/drtv/saeson/(?P<display_id>[\w-]+)_(?P<id>\d+)rm   Nr   r   r   r   r  r  
  s    %GGtJLr   r  c                       e Zd ZdZdZdZdZy)DRTVSeriesIEr  zdrtv:seriesz[https?://(?:www\.)?(?:dr\.dk|dr-massive\.com)/drtv/serie/(?P<display_id>[\w-]+)_(?P<id>\d+)rm   Nr   r   r   r   r  r  
  s    %GGsJLr   r  c                        e Zd ZdZdZdZdZdZy)DTubeIEzyt_dlp.extractor.dtubeDTubezUhttps?://(?:www\.)?d\.tube/(?:#!/)?v/(?P<uploader_id>[0-9a-z.-]+)/(?P<id>[0-9a-z]{8})Frl   Nr]  r   r   r   r  r  
  s    &GGjJHLr   r  c                        e Zd ZdZdZdZdZdZy)DVTVIEzyt_dlp.extractor.dvtvdvtvz>https?://video\.aktualne\.cz/(?:[^/]+/)+r~(?P<id>[0-9a-f]{32})zhttp://video.aktualne.cz/r   Nr   r   r   r   r!  r!  
  s    %GGSJ)GLr   r!  c                   $    e Zd ZdZdZdZdZdZdZy)DWArticleIEyt_dlp.extractor.dwz
dw:articleNz3https?://(?:www\.)?dw\.com/(?:[^/]+/)+a-(?P<id>\d+)Frl   	r   r   r   r$   ra   rq   r=   rE   ro   r   r   r   r$  r$    s     #GGHIJHLr   r$  c                   $    e Zd ZdZdZdZdZdZdZy)DWIEr%  dwNz:https?://(?:www\.)?dw\.com/(?:[^/]+/)+(?:av|e)-(?P<id>\d+)Frl   r&  r   r   r   r(  r(    s     #GGHPJHLr   r(  c                       e Zd ZdZdZdZy)DacastBaseIEyt_dlp.extractor.dacast
DacastBasezDhttps?://iframe\.dacast\.com/None/(?P<user_id>[\w-]+)/(?P<id>[\w-]+)Nr  r   r   r   r+  r+    s    'GG[Jr   r+  c                       e Zd ZdZdZdZdZy)DacastPlaylistIEr,  DacastPlaylistzHhttps?://iframe\.dacast\.com/playlist/(?P<user_id>[\w-]+)/(?P<id>[\w-]+)rm   Nr   r   r   r   r/  r/    s    'GG_JLr   r/  c                       e Zd ZdZdZdZdZy)DacastVODIEr,  	DacastVODzChttps?://iframe\.dacast\.com/vod/(?P<user_id>[\w-]+)/(?P<id>[\w-]+)rl   Nr   r   r   r   r2  r2  "  s    'GGZJLr   r2  c                       e Zd ZdZdZy)	VRTBaseIEyt_dlp.extractor.vrtVRTBaseNr   r   r   r   r5  r5  )  rk  r   r5  c                        e Zd ZdZdZdZdZdZy)DagelijkseKostIEr6  DagelijkseKostz;https?://dagelijksekost\.een\.be/gerechten/(?P<id>[^/?#&]+)zdagelijksekost.een.berl   Nr   r   r   r   r9  r9  .  s    $GGPJ%GLr   r9  c                       e Zd ZdZdZdZdZy)DailyMailIEzyt_dlp.extractor.dailymail	DailyMailzVhttps?://(?:www\.)?dailymail\.co\.uk/(?:video/[^/]+/video-|embed/video/)(?P<id>[0-9]+)rl   Nr   r   r   r   r<  r<  6      *GGlJLr   r<  c                       e Zd ZdZdZy)DailyWireBaseIEyt_dlp.extractor.dailywireDailyWireBaseNr   r   r   r   r@  r@  =  r  r   r@  c                       e Zd ZdZdZdZdZy)DailyWireIErA  	DailyWirezRhttps?://(?:www\.)dailywire(?:\.com)/(?P<sites_type>episode|videos)/(?P<id>[\w-]+)rl   Nr   r   r   r   rD  rD  B  s    *GGhJLr   rD  c                       e Zd ZdZdZdZdZy)DailyWirePodcastIErA  DailyWirePodcastzbhttps?://(?:www\.)dailywire(?:\.com)/(?P<sites_type>podcasts)/(?P<podcaster>[\w-]+/(?P<id>[\w-]+))rl   Nr   r   r   r   rG  rG  I  s    *G GyJLr   rG  c                       e Zd ZdZdZdZy)DailymotionBaseInfoExtractoryt_dlp.extractor.dailymotionDailymotionBaseInfoExtractdailymotionNr{   r   r   r   rJ  rJ  P  s    ,G*G"Nr   rJ  c                   $    e Zd ZdZdZdZdZdZdZy)DailymotionIErK  rM  a  (?ix)
                    (?:https?:)?//
                    (?:
                        dai\.ly/|
                        (?:
                            (?:(?:www|touch|geo)\.)?dailymotion\.[a-z]{2,3}|
                            (?:www\.)?lequipe\.fr
                        )/
                        (?:
                            swf/(?!video)|
                            (?:(?:crawler|embed|swf)/)?video/|
                            player(?:/[\da-z]+)?\.html\?(?:video|(?P<is_playlist>playlist))=
                        )
                    )
                    (?P<id>[^/?_&#]+)(?:[\w-]*\?playlist=(?P<playlist_id>x[0-9a-z]+))?
    r   rl   Nr  r   r   r   rO  rO  V  s#    ,GG t
J"NILr   rO  c                       e Zd ZdZdZdZy)DailymotionPlaylistBaseIErK  DailymotionPlaylistBaserM  Nr{   r   r   r   rQ  rQ  _  s    ,G'G"Nr   rQ  c                        e Zd ZdZdZdZdZdZy)DailymotionPlaylistIErK  zdailymotion:playlistzK(?:https?://)?(?:www\.)?dailymotion\.[a-z]{2,3}/playlist/(?P<id>x[0-9a-z]+)rM  rm   Nr   r   r   r   rT  rT  e  s    ,G$G`J"NLr   rT  c                        e Zd ZdZdZdZdZdZy)DailymotionSearchIErK  zdailymotion:searchzHhttps?://(?:www\.)?dailymotion\.[a-z]{2,3}/search/(?P<id>[^/?#]+)/videosrM  rm   Nr   r   r   r   rV  rV  m  s    ,G"G]J"NLr   rV  c                        e Zd ZdZdZdZdZdZy)DailymotionUserIErK  zdailymotion:userzhttps?://(?:www\.)?dailymotion\.[a-z]{2,3}/(?!(?:embed|swf|#|video|playlist|search|crawler)/)(?:(?:old/)?user/)?(?P<id>[^/?#]+)rM  rm   Nr   r   r   r   rX  rX  u  s    ,G G UJ"NLr   rX  c                       e Zd ZdZdZy)DamtomoBaseIEyt_dlp.extractor.damtomoDamtomoBaseNr   r   r   r   rZ  rZ  }  r   r   rZ  c                       e Zd ZdZdZdZdZy)DamtomoRecordIEr[  zdamtomo:recordzqhttps?://(?:www\.)?clubdam\.com/app/damtomo/(?:SP/)?karaokePost/StreamingKrk\.do\?karaokeContributeId=(?P<id>\d+)rl   Nr   r   r   r   r^  r^    s    (GG JJLr   r^  c                       e Zd ZdZdZdZdZy)DamtomoVideoIEr[  zdamtomo:videozmhttps?://(?:www\.)?clubdam\.com/app/damtomo/(?:SP/)?karaokeMovie/StreamingDkm\.do\?karaokeMovieId=(?P<id>\d+)rl   Nr   r   r   r   r`  r`    s    (GG FJLr   r`  c                       e Zd ZdZdZdZy)DangalPlayBaseIEyt_dlp.extractor.dangalplayDangalPlayBase
dangalplayNr{   r   r   r   rb  rb        +GG!Nr   rb  c                        e Zd ZdZdZdZdZdZy)DangalPlayIErc  re  zchttps?://(?:www\.)?dangalplay.com/shows/(?P<series>[^/?#]+)/(?P<id>(?!episodes)[^/?#]+)/?(?:$|[?#])rl   Nr   r   r   r   rh  rh    s    +GGwJ!NLr   rh  c                        e Zd ZdZdZdZdZdZy)DangalPlaySeasonIErc  zdangalplay:seasonzehttps?://(?:www\.)?dangalplay.com/shows/(?P<id>[^/?#]+)(?:/(?P<sub>ep-[^/?#]+)/episodes)?/?(?:$|[?#])re  rm   Nr   r   r   r   rj  rj    s    +G!GyJ!NLr   rj  c                       e Zd ZdZdZy)
DaumBaseIEyt_dlp.extractor.daumDaumBaseNr   r   r   r   rl  rl    r  r   rl  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )
DaumClipIErm  zdaum.net:clipzbhttps?://(?:m\.)?tvpot\.daum\.net/(?:clip/ClipView.(?:do|tv)|mypot/View.do)\?.*?clipid=(?P<id>\d+)rl   c                 z    t         j                  |      st        j                  |      rdS t        |   |      S r   )DaumPlaylistIEr4   
DaumUserIEr   r   s     r   r4   zDaumClipIE.suitable  s5    &//4
8K8KC8PukV[V]VfgjVkkr   r   r   s   @r   rp  rp    s+    %GGzJLl lr   rp  c                       e Zd ZdZdZdZdZy)DaumIErm  zdaum.netzshttps?://(?:(?:m\.)?tvpot\.daum\.net/v/|videofarm\.daum\.net/controller/player/VodPlayer\.swf\?vid=)(?P<id>[^?#&]+)rl   Nr   r   r   r   ru  ru    s    %GG NJLr   ru  c                       e Zd ZdZdZy)
DaumListIErm  DaumListNr   r   r   r   rw  rw    r  r   rw  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )rr  rm  zdaum.net:playlistzZhttps?://(?:m\.)?tvpot\.daum\.net/mypot/(?:View\.do|Top\.tv)\?.*?playlistid=(?P<id>[0-9]+)r   c                 P    t         j                  |      rdS t        |   |      S r   )rs  r4   r   r   s     r   r4   zDaumPlaylistIE.suitable  %    "++C0uKeg6Fs6KKr   r   r   s   @r   rr  rr    s+    %G!GsJLL Lr   rr  c                       e Zd ZdZdZdZdZy)rs  rm  zdaum.net:userz`https?://(?:m\.)?tvpot\.daum\.net/mypot/(?:View|Top)\.(?:do|tv)\?.*?ownerid=(?P<id>[0-9a-zA-Z]+)r   Nr   r   r   r   rs  rs    s    %GGxJLr   rs  c                       e Zd ZdZdZdZdZy)DaystarClipIEzyt_dlp.extractor.daystarzdaystar:clipz(https?://player\.daystar\.tv/(?P<id>\w+)rl   Nr   r   r   r   r~  r~    s    (GG>JLr   r~  c                       e Zd ZdZdZdZdZy)DctpTvIEzyt_dlp.extractor.dctpDctpTvz9https?://(?:www\.)?dctp\.tv/(?:#/)?filme/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r    s    %GGNJLr   r  c                       e Zd ZdZdZdZdZy)DemocracynowIEzyt_dlp.extractor.democracynowdemocracynowz3https?://(?:www\.)?democracynow\.org/(?P<id>[^\?]*)rl   Nr   r   r   r   r  r    s    -GGIJLr   r  c                       e Zd ZdZdZdZdZy)DestinationAmericaIEr  DestinationAmericazFhttps?://(?:www\.)?destinationamerica\.com/video/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r  r    s    &G"G[JLr   r  c                       e Zd ZdZdZdZy)DetikEmbedIEzyt_dlp.extractor.detik
DetikEmbedFNr  r   r   r   r  r    s    &GGJr   r  c                       e Zd ZdZdZdZdZy)DeuxMIEyt_dlp.extractor.deuxmDeuxMzDhttps?://(?:www\.)?2m\.ma/[^/]+/replay/single/(?P<id>([\w.]{1,24})+)rl   Nr   r   r   r   r  r    s    &GGZJLr   r  c                       e Zd ZdZdZdZdZy)DeuxMNewsIEr  	DeuxMNewsz<https?://(?:www\.)?2m\.ma/(?P<lang>\w+)/news/(?P<id>[^/#?]+)rl   Nr   r   r   r   r  r    s    &GGRJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)DigitalConcertHallIEz#yt_dlp.extractor.digitalconcerthallDigitalConcertHallz}https?://(?:www\.)?digitalconcerthall\.com/(?P<language>[a-z]+)/(?P<type>film|concert|work)/(?P<id>[0-9]+)-?(?P<part>[0-9]+)?zDigitalConcertHall extractordigitalconcerthallr   Nr   r   r   r   r  r    s#    3G"G SJ,G)NLr   r  c                        e Zd ZdZdZdZdZdZy)DigitallySpeakingIEzyt_dlp.extractor.dispeakDigitallySpeakingz\https?://(?:s?evt\.dispeak|events\.digitallyspeaking)\.com/(?:[^/]+/)+xml/(?P<id>[^.]+)\.xmlFrl   Nr]  r   r   r   r  r    s    (G!GsJHLr   r  c                       e Zd ZdZdZdZdZy)
DigitekaIEzyt_dlp.extractor.digitekaDigitekaa  (?x)
        https?://(?:www\.)?(?:digiteka\.net|ultimedia\.com)/
        (?:
            deliver/
            (?P<embed_type>
                generic|
                musique
            )
            (?:/[^/]+)*/
            (?:
                src|
                article
            )|
            default/index/video
            (?P<site_type>
                generic|
                music
            )
            /id
        )/(?P<id>[\d+a-z]+)rl   Nr   r   r   r   r  r    s    )GG qJLr   r  c                       e Zd ZdZdZdZdZy)
DigiviewIEzyt_dlp.extractor.digiviewDigiviewzAhttps?://(?:www\.)?ladigitale\.dev/digiview/#/v/(?P<id>[0-9a-f]+)rl   Nr   r   r   r   r  r    s    )GGVJLr   r  c                       e Zd ZdZdZdZdZy)DiscogsReleasePlaylistIEzyt_dlp.extractor.discogsDiscogsReleasePlaylistzDhttps?://(?:www\.)?discogs\.com/(?P<type>release|master)/(?P<id>\d+)rm   Nr   r   r   r   r  r  #  s    (G&GZJLr   r  c                       e Zd ZdZdZdZdZy)DiscoveryLifeIEr  DiscoveryLifezAhttps?://(?:www\.)?discoverylife\.com/video/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r  r  *  s    &GGVJLr   r  c                       e Zd ZdZdZdZdZy)DiscoveryNetworksDeIEr  DiscoveryNetworksDezhttps?://(?:www\.)?(?P<domain>(?:tlc|dmax)\.de)/(?:programme|show|sendungen)/(?P<programme>[^/?#]+)/(?:video/)?(?P<alternate_id>[^/?#]+)rl   Nr   r   r   r   r  r  1  s    &G#G ^JLr   r  c                       e Zd ZdZdZdZdZy)DiscoveryPlusIEr  DiscoveryPluszxhttps?://(?:www\.)?discoveryplus\.com/(?!it/)(?:(?P<country>[a-z]{2})/)?video(?:/sport|/olympics)?/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r  r  8  s    &GG NJLr   r  c                       e Zd ZdZdZdZdZy)DiscoveryPlusIndiaIEr  DiscoveryPlusIndiazBhttps?://(?:www\.)?discoveryplus\.in/videos?/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r  r  ?  s    &G"GWJLr   r  c                       e Zd ZdZdZy)DiscoveryPlusShowBaseIEr  DiscoveryPlusShowBaseNr   r   r   r   r  r  F  s    &G%Gr   r  c                       e Zd ZdZdZdZdZy)DiscoveryPlusIndiaShowIEr  DiscoveryPlusIndiaShowzJhttps?://(?:www\.)?discoveryplus\.in/show/(?P<show_name>[^/]+)/?(?:[?#]|$)rm   Nr   r   r   r   r  r  K  s    &G&G_JLr   r  c                       e Zd ZdZdZdZy)DiscoveryPlusItalyIEr  DiscoveryPlusItalyzYhttps?://(?:www\.)?discoveryplus\.com/it/video(?:/sport|/olympics)?/(?P<id>[^/]+/[^/?#]+)Nr  r   r   r   r  r  R  s    &G"GnJr   r  c                       e Zd ZdZdZdZdZy)DiscoveryPlusItalyShowIEr  DiscoveryPlusItalyShowzOhttps?://(?:www\.)?discoveryplus\.it/programmi/(?P<show_name>[^/]+)/?(?:[?#]|$)rm   Nr   r   r   r   r  r  X  s    &G&GdJLr   r  c                       e Zd ZdZdZdZdZy)DisneyIEzyt_dlp.extractor.disneyDisneya  (?x)
        https?://(?P<domain>(?:[^/]+\.)?(?:disney\.[a-z]{2,3}(?:\.[a-z]{2})?|disney(?:(?:me|latino)\.com|turkiye\.com\.tr|channel\.de)|(?:starwars|marvelkids)\.com))/(?:(?:embed/|(?:[^/]+/)+[\w-]+-)(?P<id>[a-z0-9]{24})|(?:[^/]+/)?(?P<display_id>[^/?#]+))rl   Nr   r   r   r   r  r  _  s    'GG aJLr   r  c                       e Zd ZdZdZy)TikTokBaseIEyt_dlp.extractor.tiktok
TikTokBaseNr   r   r   r   r  r  f  rE  r   r  c                       e Zd ZdZdZdZdZy)DouyinIEr  Douyinz3https?://(?:www\.)?douyin\.com/video/(?P<id>[0-9]+)rl   Nr   r   r   r   r  r  k  s    'GGHJLr   r  c                       e Zd ZdZdZy)DouyuBaseIEyt_dlp.extractor.douyutv	DouyuBaseNr   r   r   r   r  r  r      (GGr   r  c                       e Zd ZdZdZdZdZy)DouyuShowIEr  	DouyuShowz;https?://v(?:mobile)?\.douyu\.com/show/(?P<id>[0-9a-zA-Z]+)rl   Nr   r   r   r   r  r  w  s    (GGPJLr   r  c                        e Zd ZdZdZdZdZdZy)	DouyuTVIEr  DouyuTVzVhttps?://(?:www\.)?douyu(?:tv)?\.com/(topic/\w+\?rid=|(?:[^/]+/))*(?P<id>[A-Za-z0-9]+)u   斗鱼直播rl   Nr   r   r   r   r  r  ~  s    (GGmJGLr   r  c                       e Zd ZdZdZdZdZy)	DrTalksIEzyt_dlp.extractor.drtalksDrTalksz5https?://(?:www\.)?drtalks\.com/videos/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r    s    (GGKJLr   r  c                        e Zd ZdZdZdZdZdZy)	DrTuberIEzyt_dlp.extractor.drtuberDrTuberz]https?://(?:(?:www|m)\.)?drtuber\.com/(?:video|embed)/(?P<id>\d+)(?:/(?P<display_id>[\w-]+))?r   rl   Nrw  r   r   r   r  r    s    (GGtJILr   r  c                       e Zd ZdZdZy)	ZDFBaseIEyt_dlp.extractor.zdfZDFBaseNr   r   r   r   r  r    rk  r   r  c                       e Zd ZdZdZdZdZy)	DreiSatIEzyt_dlp.extractor.dreisat3satz?https?://(?:www\.)?3sat\.de/(?:[^/?#]+/)*(?P<id>[^/?#&]+)\.htmlrl   Nr   r   r   r   r  r    s    (GGUJLr   r  c                       e Zd ZdZdZdZdZy)	DropboxIEzyt_dlp.extractor.dropboxDropboxzDhttps?://(?:www\.)?dropbox\.com/(?:(?:e/)?scl/f[io]|sh?)/(?P<id>\w+)rl   Nr   r   r   r   r  r        (GGZJLr   r  c                        e Zd ZdZdZdZdZdZy)	DropoutIEyt_dlp.extractor.dropoutDropoutzPhttps?://(?:watch\.)?dropout\.tv/(?:[^/?#]+/)*videos/(?P<id>[^/?#]+)/?(?:[?#]|$)dropoutrl   Nr   r   r   r   r  r    s    (GGeJNLr   r  c                       e Zd ZdZdZdZdZy)DropoutSeasonIEr  DropoutSeasonzXhttps?://(?:watch\.)?dropout\.tv/(?P<id>[^\/$&?#]+)(?:/?$|/season:(?P<season>[0-9]+)/?$)rm   Nr   r   r   r   r  r    s    (GGnJLr   r  c                       e Zd ZdZdZdZdZy)	DumpertIEzyt_dlp.extractor.dumpertDumpertz(?x)
        (?P<protocol>https?)://(?:(?:www|legacy)\.)?dumpert\.nl/(?:
            (?:mediabase|embed|item)/|
            [^#]*[?&]selectedId=
        )(?P<id>[0-9]+[/_][0-9a-zA-Z]+)rl   Nr   r   r   r   r  r    s    (GG RJLr   r  c                       e Zd ZdZdZdZdZy)	DuoplayIEzyt_dlp.extractor.duoplayDuoplayz+https?://duoplay\.ee/(?P<id>\d+)(?:[/?#]|$)rl   Nr   r   r   r   r  r    s    (GG@JLr   r  c                       e Zd ZdZdZy)TNAFlixNetworkBaseIEyt_dlp.extractor.tnaflixTNAFlixNetworkBaseNr   r   r   r   r  r    s    (G"Gr   r  c                       e Zd ZdZdZy)TNAEMPFlixBaseIEr  TNAEMPFlixBaseNr   r   r   r   r  r        (GGr   r  c                        e Zd ZdZdZdZdZdZy)	EMPFlixIEr  EMPFlixz{https?://(?:www\.)?(?P<host>empflix)\.com/(?:videos/(?P<display_id>.+?)-|[^/]+/(?P<display_id_2>[^/]+)/video)(?P<id>[0-9]+)r   rl   Nrw  r   r   r   r  r    s    (GG QJILr   r  c                       e Zd ZdZdZdZdZy)ERRArhiivIEyt_dlp.extractor.err	ERRArhiivz8https://arhiiv\.err\.ee/video/(?:vaata/)?(?P<id>[^/?#]+)rl   Nr   r   r   r   r  r    s    $GGMJLr   r  c                       e Zd ZdZdZdZdZy)ERRJupiterIEr  
ERRJupiterz?https?://(?:jupiter(?:pluss)?|lasteekraan)\.err\.ee/(?P<id>\d+)rl   Nr   r   r   r   r  r    s    $GGUJLr   r  c                       e Zd ZdZdZy)ERTFlixBaseIEyt_dlp.extractor.ertgrERTFlixBaseNr   r   r   r   r  r    s    &GGr   r  c                        e Zd ZdZdZdZdZdZy)ERTFlixCodenameIEr  zertflix:codenamezertflix:(?P<id>[\w-]+)zERTFLIX videos by codenamerl   Nr   r   r   r   r  r    s    &G G*J*GLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)	ERTFlixIEr  ertflixzIhttps?://www\.ertflix\.gr/(?:[^/]+/)?(?:series|vod)/(?P<id>[a-z]{3}\.\d+)zERTFLIX videos   r   Nr  r   r   r   r  r    s     &GG`JGILr   r  c                        e Zd ZdZdZdZdZdZy)ERTWebtvEmbedIEr  zertwebtv:embedzVhttps?://www\.ert\.gr/webtv/live\-uni/vod/dt\-uni\-vod\.php\?([^#]+&)?f=(?P<id>[^#&]+)zert.gr webtv embedded videosrl   Nr   r   r   r   r  r    s    &GGpJ,GLr   r  c                   4     e Zd ZdZdZdZe fd       Z xZS )ESPNArticleIEyt_dlp.extractor.espnESPNArticlezBhttps?://(?:espn\.go|(?:www\.)?espn)\.com/(?:[^/]+/)*(?P<id>[^/]+)c                 z    t         j                  |      st        j                  |      rdS t        |   |      S r   )ESPNIEr4   WatchESPNIEr   r   s     r   r4   zESPNArticleIE.suitable  s3    -1E1Ec1JufQVQXQabeQffr   )	r   r   r   r$   ra   r=   rr   r4   r   r   s   @r   r  r    s&    %GGXJg gr   r  c                       e Zd ZdZdZdZdZy)ESPNCricInfoIEr  ESPNCricInfozOhttps?://(?:www\.)?espncricinfo\.com/(?:cricket-)?videos?/[^#$&?/]+-(?P<id>\d+)rl   Nr   r   r   r   r  r    s    %GGeJLr   r  c                       e Zd ZdZdZdZdZy)r  r  ESPNa  (?x)
                    https?://
                        (?:
                            (?:
                                (?:
                                    (?:(?:\w+\.)+)?espn\.go|
                                    (?:www\.)?espn
                                )\.com/
                                (?:
                                    (?:
                                        video/(?:clip|iframe/twitter)|
                                    )
                                    (?:
                                        .*?\?.*?\bid=|
                                        /_/id/
                                    )|
                                    [^/]+/video/
                                )
                            )|
                            (?:www\.)espnfc\.(?:com|us)/(?:video/)?[^/]+/\d+/video/
                        )
                        (?P<id>\d+)
                    rl   Nr   r   r   r   r  r    s    %GG VJLr   r  c                       e Zd ZdZdZdZdZy)
EUScreenIEzyt_dlp.extractor.euscreenEUScreenz>https?://(?:www\.)?euscreen\.eu/item.html\?id=(?P<id>[^&?$/]+)rl   Nr   r   r   r   r  r    s    )GGTJLr   r  c                       e Zd ZdZdZdZy)EWETVBaseIErH  	EWETVBaseewetvNr{   r   r   r   r  r  "  rO  r   r  c                       e Zd ZdZdZdZdZy)EWETVIErH  EWETVz(?x)https?://(?:www\.)?tvonline\.ewe\.de/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  NrS  r   r   r   r   r   (  s    'GG oJNr   r   c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )EWETVLiveIErH  	EWETVLivez(?x)https?://(?:www\.)?tvonline\.ewe\.de/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 P    t         j                  |      rdS t        |   |      S r   )r   r4   r   r   s     r   r4   zEWETVLiveIE.suitable5  r   r   r  r   s   @r   r#  r#  /  s.    'GG dJNI Ir   r#  c                       e Zd ZdZdZdZdZy)EWETVRecordingsIErH  EWETVRecordingszx(?x)https?://(?:www\.)?tvonline\.ewe\.de/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  NrS  r   r   r   r'  r'  :  s    'GG TJNr   r'  c                       e Zd ZdZdZdZdZy)EbaumsWorldIEzyt_dlp.extractor.ebaumsworldEbaumsWorldz<https?://(?:www\.)?ebaumsworld\.com/videos/[^/]+/(?P<id>\d+)rl   Nr   r   r   r   r*  r*  A  r  r   r*  c                       e Zd ZdZdZdZdZy)EbayIEzyt_dlp.extractor.ebayEbayz,https?://(?:www\.)?ebay\.com/itm/(?P<id>\d+)rl   Nr   r   r   r   r-  r-  H  r  r   r-  c                       e Zd ZdZdZy)EggheadBaseIEyt_dlp.extractor.eggheadEggheadBaseNr   r   r   r   r0  r0  O  r   r   r0  c                        e Zd ZdZdZdZdZdZy)EggheadCourseIEr1  zegghead:coursezDhttps?://(?:app\.)?egghead\.io/(?:course|playlist)s/(?P<id>[^/?#&]+)zegghead.io courserm   Nr   r   r   r   r4  r4  T  s    (GGYJ!GLr   r4  c                        e Zd ZdZdZdZdZdZy)EggheadLessonIEr1  zegghead:lessonzChttps?://(?:app\.)?egghead\.io/(?:api/v1/)?lessons/(?P<id>[^/?#&]+)zegghead.io lessonrl   Nr   r   r   r   r6  r6  \  s    (GGXJ!GLr   r6  c                       e Zd ZdZdZy)
EggsBaseIEyt_dlp.extractor.eggsEggsBaseNr   r   r   r   r8  r8  d  r  r   r8  c                       e Zd ZdZdZdZdZy)EggsArtistIEr9  zeggs:artistz1https?://eggs\.mu/artist/(?P<id>\w+)/?(?:[?#&]|$)rm   Nr   r   r   r   r<  r<  i  s    %GGFJLr   r<  c                       e Zd ZdZdZdZdZy)EggsIEr9  zeggs:singlez7https?://eggs\.mu/artist/[^/?#]+/song/(?P<id>[\da-f-]+)rl   Nr   r   r   r   r>  r>  p  s    %GGLJLr   r>  c                       e Zd ZdZdZdZy)EinsUndEinsTVBaseIErH  EinsUndEinsTVBase1und1tvNr{   r   r   r   r@  r@  w  s    'G!GNr   r@  c                       e Zd ZdZdZdZdZy)EinsUndEinsTVIErH  EinsUndEinsTVz(?x)https?://(?:www\.)?1und1\.tv/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )rB  NrS  r   r   r   rD  rD  }  s    'GG fJNr   rD  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )EinsUndEinsTVLiveIErH  EinsUndEinsTVLivez(?x)https?://(?:www\.)?1und1\.tv/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )rB  c                 P    t         j                  |      rdS t        |   |      S r   )rD  r4   r   r   s     r   r4   zEinsUndEinsTVLiveIE.suitable  %    '005uP57;KC;PPr   r  r   s   @r   rG  rG    s.    'G!G [JNQ Qr   rG  c                       e Zd ZdZdZdZdZy)EinsUndEinsTVRecordingsIErH  EinsUndEinsTVRecordingszp(?x)https?://(?:www\.)?1und1\.tv/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )rB  NrS  r   r   r   rL  rL    s    'G'G KJNr   rL  c                        e Zd ZdZdZdZdZdZy)ElPaisIEzyt_dlp.extractor.elpaisElPaiszChttps?://(?:[^.]+\.)?elpais\.com/.*/(?P<id>[^/#?]+)\.html(?:$|[?#])u   El Paísrl   Nr   r   r   r   rO  rO    s    'GGYJGLr   rO  c                        e Zd ZdZdZdZdZdZy)ElTreceTVIEzyt_dlp.extractor.eltrecetv	ElTreceTVzShttps?://(?:www\.)?eltrecetv\.com\.ar/[\w-]+/capitulos/temporada-\d+/(?P<id>[\w-]+)zEl Trece TV (Argentina)rl   Nr   r   r   r   rR  rR    s    *GGlJ'GLr   rR  c                       e Zd ZdZdZdZy)ElementorEmbedIEzyt_dlp.extractor.elementorembedElementorEmbedFNr  r   r   r   rU  rU    s    /GGJr   rU  c                       e Zd ZdZdZdZdZy)ElonetIEzyt_dlp.extractor.elonetElonetzEhttps?://elonet\.finna\.fi/Record/kavi\.elonet_elokuva_(?P<id>[0-9]+)rl   Nr   r   r   r   rX  rX    s    'GG[JLr   rX  c                       e Zd ZdZdZdZdZy)	EmbedlyIEzyt_dlp.extractor.embedlyEmbedlyz[https?://(?:www|cdn\.)?embedly\.com/widgets/media\.html\?(?:[^#]*?&)?(?:src|url)=(?:[^#&]+)r   Nr   r   r   r   r[  r[    s    (GGrJLr   r[  c                       e Zd ZdZdZdZdZy)EpiconIEyt_dlp.extractor.epiconEpiconz_https?://(?:www\.)?epicon\.in/(?:documentaries|movies|tv-shows/[^/?#]+/[^/?#]+)/(?P<id>[^/?#]+)rl   Nr   r   r   r   r^  r^    s    'GGtJLr   r^  c                       e Zd ZdZdZdZdZy)EpiconSeriesIEr_  EpiconSerieszB(?!.*season)https?://(?:www\.)?epicon\.in/tv-shows/(?P<id>[^/?#]+)rm   Nr   r   r   r   rb  rb    s    'GGWJLr   rb  c                       e Zd ZdZdZdZdZy)EpidemicSoundIEzyt_dlp.extractor.epidemicsoundEpidemicSoundzchttps?://(?:www\.)?epidemicsound\.com/(?:(?P<sfx>sound-effects/tracks)|track)/(?P<id>[0-9a-zA-Z-]+)rl   Nr   r   r   r   re  re    s    .GGxJLr   re  c                   (    e Zd ZdZdZddgZdZdZdZy)	EplusIbIEzyt_dlp.extractor.eplusepluszGhttps?://live\.eplus\.jp/ex/player\?ib=(?P<id>(?:\w|%2B|%2F){86}%3D%3D)z+https?://live\.eplus\.jp/(?P<id>sample|\d+)u   e+ (イープラス)rl   Nr   r   r   r   rh  rh    s-    &GG_  bR  SJ$GNLr   rh  c                       e Zd ZdZdZdZdZy)EpochIEzyt_dlp.extractor.epochEpochz7https?://www.theepochtimes\.com/[\w-]+_(?P<id>\d+).htmlrl   Nr   r   r   r   rk  rk    r  r   rk  c                        e Zd ZdZdZdZdZdZy)	EpornerIEzyt_dlp.extractor.epornerEpornerzdhttps?://(?:www\.)?eporner\.com/(?:(?:hd-porn|embed)/|video-)(?P<id>\w+)(?:/(?P<display_id>[\w-]+))?r   rl   Nrw  r   r   r   rn  rn        (GG{JILr   rn  c                       e Zd ZdZdZdZdZy)EroProfileAlbumIEyt_dlp.extractor.eroprofilezEroProfile:albumz?https?://(?:www\.)?eroprofile\.com/m/videos/album/(?P<id>[^/]+)rm   Nr   r   r   r   rr  rr    s    +G GTJLr   rr  c                   $    e Zd ZdZdZdZdZdZdZy)EroProfileIErs  
EroProfilez>https?://(?:www\.)?eroprofile\.com/m/videos/view/(?P<id>[^/]+)
eroprofiler   rl   Nr  r   r   r   ru  ru    s     +GGSJ!NILr   ru  c                        e Zd ZdZdZdZdZdZy)	ErocastIEzyt_dlp.extractor.erocastErocastz3https?://(?:www\.)?erocast\.me/track/(?P<id>[0-9]+)r   rl   Nrw  r   r   r   ry  ry    s    (GGHJILr   ry  c                       e Zd ZdZdZdZdZy)EttuTvIEzyt_dlp.extractor.ettutvEttuTvz<https?://(?:www\.)?ettu\.tv/[^?#]+/playerpage/(?P<id>[0-9]+)rl   Nr   r   r   r   r|  r|        'GGQJLr   r|  c                       e Zd ZdZdZdZdZy)EuroParlWebstreamIEyt_dlp.extractor.europaEuroParlWebstreamzu(?x)
        https?://multimedia\.europarl\.europa\.eu/
        (?:\w+/)?webstreaming/(?:[\w-]+_)?(?P<id>[\w-]+)
    rl   Nr   r   r   r   r  r    s    'G!G RJLr   r  c                        e Zd ZdZdZdZdZdZy)EuropaIEr  Europazkhttps?://ec\.europa\.eu/avservices/(?:video/player|audio/audioDetails)\.cfm\?.*?\bref=(?P<id>[A-Za-z0-9-]+)Frl   Nr]  r   r   r   r  r    s    'GG DJHLr   r  c                       e Zd ZdZdZdZdZy)EuropeanTourIEzyt_dlp.extractor.europeantourEuropeanTourzNhttps?://(?:www\.)?europeantour\.com/dpworld-tour/news/video/(?P<id>[^/&?#$]+)rl   Nr   r   r   r   r  r    s    -GGcJLr   r  c                       e Zd ZdZdZdZdZy)EurosportIEzyt_dlp.extractor.eurosport	Eurosportz(?x)
        https?://(?:
            (?:(?:www|espanol)\.)?eurosport\.(?:com(?:\.tr)?|de|dk|es|fr|hu|it|nl|no|ro)|
            eurosport\.tvn24\.pl
        )/[\w-]+/(?:[\w-]+/[\d-]+/)?[\w.-]+_(?P<id>vid\d+)
    rl   Nr   r   r   r   r  r    s    *GG wJLr   r  c                       e Zd ZdZdZdZdZy)ExpressenIEzyt_dlp.extractor.expressen	Expressena  (?x)
                    https?://
                        (?:www\.)?(?:expressen|di)\.se/
                        (?:(?:tvspelare/video|video-?player/embed)/)?
                        (?:tv|nyheter)/(?:[^/?#]+/)*
                        (?P<id>[^/?#&]+)
                    rl   Nr   r   r   r   r  r  #  s    *GG oJLr   r  c                       e Zd ZdZdZdZdZy)
FC2EmbedIEyt_dlp.extractor.fc2z	fc2:embedz1https?://video\.fc2\.com/flv2\.swf\?(?P<query>.+)rl   Nr   r   r   r   r  r  *  s    $GGHJLr   r  c                        e Zd ZdZdZdZdZdZy)FC2IEr  fc2zB(?:https?://video\.fc2\.com/(?:[^/]+/)*content/|fc2:)(?P<id>[^/]+)rl   Nr   r   r   r   r  r  1  s    $GGWJNLr   r  c                       e Zd ZdZdZdZdZy)	FC2LiveIEr  zfc2:livez#https?://live\.fc2\.com/(?P<id>\d+)rl   Nr   r   r   r   r  r  9  s    $GG9JLr   r  c                       e Zd ZdZdZdZy)FOX9IEyt_dlp.extractor.fox9FOX9z.https?://(?:www\.)?fox9\.com/video/(?P<id>\d+)Nr  r   r   r   r  r  @  s    %GGDJr   r  c                       e Zd ZdZdZdZdZy)
FOX9NewsIEr  FOX9Newsz2https?://(?:www\.)?fox9\.com/news/(?P<id>[^/?&#]+)rl   Nr   r   r   r   r  r  F  s    %GGGJLr   r  c                        e Zd ZdZdZdZdZdZy)FOXIEzyt_dlp.extractor.foxFOXzKhttps?://(?:www\.)?fox(?:sports)?\.com/(?:watch|replay)/(?P<id>[\da-fA-F]+)r  rl   Nrw  r   r   r   r  r  M  s    $GGaJILr   r  c                       e Zd ZdZdZdZdZy)FacebookAdsIEyt_dlp.extractor.facebookzfacebook:adszLhttps?://(?:[\w-]+\.)?facebook\.com/ads/library/?\?(?:[^#]+&)?id=(?P<id>\d+)r   Nr   r   r   r   r  r  U  s    )GGdJLr   r  c                       e Zd ZdZdZdZdZy)
FacebookIEr  facebooka(  (?x)
                (?:
                    https?://
                        (?:[\w-]+\.)?(?:facebook\.com|facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd\.onion)/
                        (?:[^#]*?\#!/)?
                        (?:
                            (?:
                                permalink\.php|
                                video/video\.php|
                                photo\.php|
                                video\.php|
                                video/embed|
                                story\.php|
                                watch(?:/live)?/?
                            )\?(?:.*?)(?:v|video_id|story_fbid)=|
                            [^/]+/videos/(?:[^/]+/)?|
                            [^/]+/posts/|
                            events/(?:[^/]+/)?|
                            groups/[^/]+/(?:permalink|posts)/(?:[\da-f]+/)?|
                            watchparty/
                        )|
                    facebook:
                )
                (?P<id>pfbid[A-Za-z0-9]+|\d+)
                r   Nr   r   r   r   r  r  \  s    )GG aJLr   r  c                       e Zd ZdZdZdZdZy)FacebookPluginsVideoIEr  FacebookPluginsVideozQhttps?://(?:[\w-]+\.)?facebook\.com/plugins/video\.php\?.*?\bhref=(?P<id>https.+)rl   Nr   r   r   r   r  r  c  s    )G$GjJLr   r  c                        e Zd ZdZdZdZdZdZy)FacebookRedirectURLIEr  FacebookRedirectURLz0https?://(?:[\w-]+\.)?facebook\.com/flx/warn[/?]Frl   Nr   r   r   r   r  r  j  s    )G#GFJGLr   r  c                       e Zd ZdZdZdZdZy)FacebookReelIEr  zfacebook:reelz4https?://(?:[\w-]+\.)?facebook\.com/reel/(?P<id>\d+)rl   Nr   r   r   r   r  r  r      )GGKJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)FancodeVodIEyt_dlp.extractor.fancodezfancode:vodz6https?://(?:www\.)?fancode\.com/video/(?P<id>[0-9]+)\bFfancoderl   N	r   r   r   r$   ra   r=   rE   rZ   ro   r   r   r   r  r  y  s     (GGLJHNLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)FancodeLiveIEr  zfancode:livez4https?://(www\.)?fancode\.com/match/(?P<id>[0-9]+).+Fr  rl   Nr  r   r   r   r  r    s     (GGIJHNLr   r  c                       e Zd ZdZdZdZdZy)FathomIEzyt_dlp.extractor.fathomFathomz7https?://(?:www\.)?fathom\.video/share/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r        'GGLJLr   r  c                       e Zd ZdZdZy)FaulioBaseIEyt_dlp.extractor.faulio
FaulioBaseNr   r   r   r   r  r    rE  r   r  c                        e Zd ZdZdZdZdZdZy)FaulioIEr  Fauliozhttps?://(?:aloula\.sba\.sa|bahry\.com|maraya\.sba\.net\.ae|sat7plus\.org)/(?:(?:ar|en|fa)/)?(?:episode|media)/(?P<id>[a-zA-Z0-9-]+)   rl   Nrw  r   r   r   r  r    s    'GG _JILr   r  c                       e Zd ZdZdZdZdZy)FaulioLiveIEr  
FaulioLivezwhttps?://(?:aloula\.sba\.sa|bahry\.com|maraya\.sba\.net\.ae|sat7plus\.org)/(?:(?:ar|en|fa)/)?live/(?P<id>[a-zA-Z0-9-]+)rl   Nr   r   r   r   r  r    s    'GG RJLr   r  c                       e Zd ZdZdZdZdZy)FazIEzyt_dlp.extractor.fazzfaz.netz<https?://(?:www\.)?faz\.net/(?:[^/]+/)*.*?-(?P<id>\d+)\.htmlrl   Nr   r   r   r   r  r    s    $GGSJLr   r  c                       e Zd ZdZdZdZdZy)	FczenitIEzyt_dlp.extractor.fczenitFczenitz4https?://(?:www\.)?fc-zenit\.ru/video/(?P<id>[0-9]+)rl   Nr   r   r   r   r  r        (GGIJLr   r  c                       e Zd ZdZdZdZdZy)FifaIEzyt_dlp.extractor.fifaFifazBhttps?://www\.fifa\.com/fifaplus/\w{2}/watch/([^#?]+/)?(?P<id>\w+)rl   Nr   r   r   r   r  r    s    %GGYJLr   r  c                        e Zd ZdZdZdZdZdZy)FilmArchivIEzyt_dlp.extractor.filmarchiv
FilmArchivzRhttps?://(?:www\.)?filmarchiv\.at/de/filmarchiv-on/video/(?P<id>f_[0-9a-zA-Z]{5,})zFILMARCHIV ONrl   Nr   r   r   r   r  r    s    +GGgJGLr   r  c                       e Zd ZdZdZdZdZy)FilmOnChannelIEyt_dlp.extractor.filmonzfilmon:channelz@https?://(?:www\.)?filmon\.com/(?:tv|channel)/(?P<id>[a-z0-9-]+)rl   Nr   r   r   r   r  r        'GGUJLr   r  c                       e Zd ZdZdZdZdZy)FilmOnIEr  filmonz?(?:https?://(?:www\.)?filmon\.com/vod/view/|filmon:)(?P<id>\d+)r   Nr   r   r   r   r  r    s    'GGUJLr   r  c                       e Zd ZdZdZdZdZy)	FilmwebIEzyt_dlp.extractor.filmwebFilmwebzRhttps?://(?:www\.)?filmweb\.no/(?P<type>trailere|filmnytt)/article(?P<id>\d+)\.ecerl   Nr   r   r   r   r  r    s    (GGiJLr   r  c                        e Zd ZdZdZdZdZdZy)	FirstTVIEyt_dlp.extractor.firsttv1tvzAhttps?://(?:www\.)?(?:sport)?1tv\.ru/(?:[^/?#]+/)+(?P<id>[^/?#]+)u   Первый каналr   Nr   r   r   r   r  r    s    (GGVJ'GLr   r  c                        e Zd ZdZdZdZdZdZy)FirstTVLiveIEr  z1tv:livezhttps?://(?:www\.)?1tv\.ru/liveu/   Первый канал (прямой эфир)rl   Nr   r   r   r   r  r    s    (GG4J?GLr   r  c                       e Zd ZdZdZdZdZy)FiveTVIEzyt_dlp.extractor.fivetvFiveTVa  (?x)
                    https?://
                        (?:www\.)?5-tv\.ru/
                        (?:
                            (?:[^/]+/)+(?P<id>\d+)|
                            (?P<path>[^/?#]+)(?:[/?#])?
                        )
                    rl   Nr   r   r   r   r  r    s    'GG cJLr   r  c                       e Zd ZdZdZdZdZy)FiveThirtyEightIEr  FiveThirtyEightz@https?://(?:www\.)?fivethirtyeight\.com/features/(?P<id>[^/?#]+)rl   Nr   r   r   r   r  r    s    %GGUJLr   r  c                        e Zd ZdZdZdZdZdZy)FlexTVIEzyt_dlp.extractor.flextv	ttinglivezNhttps?://(?:www\.)?(?:ttinglive\.com|flextv\.co\.kr)/channels/(?P<id>\d+)/liveu   띵라이브 (formerly FlexTV)rl   Nr   r   r   r   r  r    s    'GGfJ.GLr   r  c                       e Zd ZdZdZdZdZy)FlickrIEzyt_dlp.extractor.flickrFlickrzDhttps?://(?:www\.|secure\.)?flickr\.com/photos/[\w\-_@]+/(?P<id>\d+)rl   Nr   r   r   r   r  r        'GG]JLr   r  c                       e Zd ZdZdZy)FloatplaneChannelBaseIEyt_dlp.extractor.floatplaneFloatplaneChannelBaseNr   r   r   r   r  r    s    +G%Gr   r  c                       e Zd ZdZdZdZdZy)FloatplaneChannelIEr  FloatplaneChannelz`https?://(?:(?:www|beta)\.)?floatplane\.com/channel/(?P<id>[\w-]+)/home(?:/(?P<channel>[\w-]+))?rm   Nr   r   r   r   r  r  
  s    +G!GwJLr   r  c                       e Zd ZdZdZy)FloatplaneBaseIEr  FloatplaneBaseNr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZy)FloatplaneIEr  
Floatplanez<https?://(?:(?:www|beta)\.)?floatplane\.com/post/(?P<id>\w+)r   Nr   r   r   r   r  r    s    +GGRJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)FolketingetIEzyt_dlp.extractor.folketingetFolketingetzChttps?://(?:www\.)?ft\.dk/webtv/video/[^?#]*?\.(?P<id>[0-9]+)\.aspxFz&Folketinget (ft.dk; Danish parliament)rl   Nrl  r   r   r   r  r    s     ,GGZJH6GLr   r  c                       e Zd ZdZdZdZdZy)FoodNetworkIEr  FoodNetworkzAhttps?://(?:watch\.)?foodnetwork\.com/video/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r   r   &  s    &GGVJLr   r   c                       e Zd ZdZdZdZdZy)FootyRoomIEzyt_dlp.extractor.footyroom	FootyRoomz+https?://footyroom\.com/matches/(?P<id>\d+)rm   Nr   r   r   r   r  r  -  s    *GG@JLr   r  c                       e Zd ZdZdZdZdZy)
Formula1IEzyt_dlp.extractor.formula1Formula1zJhttps?://(?:www\.)?formula1\.com/en/latest/video\.[^.]+\.(?P<id>\d+)\.htmlrl   Nr   r   r   r   r  r  4  s    )GGcJLr   r  c                       e Zd ZdZdZy)FourTubeBaseIEyt_dlp.extractor.fourtubeFourTubeBaseNr   r   r   r   r	  r	  ;  r  r   r	  c                        e Zd ZdZdZdZdZdZy)
FourTubeIEr
  4tubezdhttps?://(?:(?P<kind>www|m)\.)?4tube\.com/(?:videos|embed)/(?P<id>\d+)(?:/(?P<display_id>[^/?#&]+))?r   rl   Nrw  r   r   r   r  r  @  s    )GGzJILr   r  c                       e Zd ZdZdZdZdZy)FoxNewsArticleIEyt_dlp.extractor.foxnewszfoxnews:articlezKhttps?://(?:www\.)?(?:insider\.)?foxnews\.com/(?!v)([^/]+/)+(?P<id>[a-z-]+)rl   Nr   r   r   r   r  r  H  s    (GGaJLr   r  c                        e Zd ZdZdZdZdZdZy)	FoxNewsIEr  foxnewszfhttps?://video\.(?:insider\.)?fox(?:news|business)\.com/v/(?:video-embed\.html\?video_id=)?(?P<id>\d+)zFox News and Fox Business Videorl   Nr   r   r   r   r  r  O  s    (GGJ/GLr   r  c                       e Zd ZdZdZdZdZy)FoxNewsVideoIEr  FoxNewsVideoz1https?://(?:www\.)?foxnews\.com/video/(?P<id>\d+)rl   Nr   r   r   r   r  r  W  s    (GGGJLr   r  c                       e Zd ZdZdZdZdZy)FoxSportsIEzyt_dlp.extractor.foxsports	FoxSportsz6https?://(?:www\.)?foxsports\.com/watch/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  ^  r  r   r  c                        e Zd ZdZdZdZdZdZy)	FptplayIEzyt_dlp.extractor.fptplayfptplayzXhttps?://fptplay\.vn/xem-video/[^/]+\-(?P<id>\w+)(?:/tap-(?P<episode>\d+)?/?(?:[?#]|$)|)z
fptplay.vnrl   Nr   r   r   r   r  r  e  s    (GGoJGLr   r  c                       e Zd ZdZdZdZdZy)FrancaisFacileIEzyt_dlp.extractor.francaisfacileFrancaisFacilez]https?://francaisfacile\.rfi\.fr/[a-z]{2}/(?:actualit%C3%A9|podcasts/[^/#?]+)/(?P<id>[^/#?]+)rl   Nr   r   r   r   r  r  m  s    /GGrJLr   r  c                       e Zd ZdZdZy)RadioFranceBaseIEyt_dlp.extractor.radiofranceRadioFranceBaseNr   r   r   r   r"  r"  t  r  r   r"  c                       e Zd ZdZdZdZdZy)FranceCultureIEr#  FranceCulturez(?x)
        https?://(?:www\.)?radiofrance\.fr
        /(?:franceculture|franceinfo|franceinter|francemusique|fip|mouv)
        /podcasts/(?:[^?#]+/)?(?P<display_id>[^?#]+)-(?P<id>\d{6,})(?:$|[?#])
    rl   Nr   r   r   r   r&  r&  y  s    ,GG fJLr   r&  c                       e Zd ZdZdZdZdZy)
FranceTVIEyt_dlp.extractor.francetvfrancetvzfrancetv:(?P<id>[^@#]+)rl   Nr   r   r   r   r)  r)    s    )GG*JLr   r)  c                       e Zd ZdZdZy)FranceTVBaseInfoExtractorr*  FranceTVBaseInfoExtractNr   r   r   r   r-  r-    s    )G'Gr   r-  c                        e Zd ZdZdZdZdZdZy)FranceTVInfoIEr*  
franceinfoz\https?://(?:www|mobile|france3-regions)\.france(?:tv)?info.fr/(?:[^/?#]+/)*(?P<id>[^/?#&.]+)z(franceinfo.fr (formerly francetvinfo.fr)rl   Nr   r   r   r   r0  r0    s    )GGpJ8GLr   r0  c                       e Zd ZdZdZdZdZy)FranceTVSiteIEr*  zfrancetv:sitezShttps?://(?:(?:www\.)?france\.tv|mobile\.france\.tv)/(?:[^/]+/)*(?P<id>[^/]+)\.htmlrl   Nr   r   r   r   r3  r3    s    )GGkJLr   r3  c                       e Zd ZdZdZy)FreeTvBaseIEyt_dlp.extractor.freetv
FreeTvBaseNr   r   r   r   r5  r5    rE  r   r5  c                       e Zd ZdZdZdZdZy)FreeTvIEr6  zfreetv:seriesz3https?://(?:www\.)?freetv\.com/series/(?P<id>[^/]+)rm   Nr   r   r   r   r9  r9    s    'GGHJLr   r9  c                       e Zd ZdZdZdZdZy)FreeTvMoviesIEr6  FreeTvMoviesz6https?://(?:www\.)?freetv\.com/peliculas/(?P<id>[^/]+)rl   Nr   r   r   r   r;  r;    s    'GGKJLr   r;  c                       e Zd ZdZdZdZdZy)FreesoundIEzyt_dlp.extractor.freesound	FreesoundzChttps?://(?:www\.)?freesound\.org/people/[^/]+/sounds/(?P<id>[^/]+)rl   Nr   r   r   r   r>  r>    s    *GGXJLr   r>  c                       e Zd ZdZdZdZdZy)FreespeechIEzyt_dlp.extractor.freespeechzfreespeech.orgz5https?://(?:www\.)?freespeech\.org/stories/(?P<id>.+)rl   Nr   r   r   r   rA  rA    s    +GGJJLr   rA  c                       e Zd ZdZdZdZy)FrontendMastersBaseIE yt_dlp.extractor.frontendmastersFrontendMastersBasefrontendmastersNr{   r   r   r   rC  rC    r  r   rC  c                       e Zd ZdZdZdZy)FrontendMastersPageBaseIErD  FrontendMastersPageBaserF  Nr{   r   r   r   rH  rH    s    0G'G&Nr   rH  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )FrontendMastersCourseIErD  FrontendMastersCoursez=https?://(?:www\.)?frontendmasters\.com/courses/(?P<id>[^/]+)rF  rm   c                 X    t         j                  |      rdS t        t        |   |      S r   )FrontendMastersLessonIEr4   r   rC  r   s     r   r4   z FrontendMastersCourseIE.suitable  s/    /88=u 	65!3D114	6r   r   r   r   r$   ra   r=   rZ   ro   rr   r4   r   r   s   @r   rK  rK    s.    0G%GRJ&NL6 6r   rK  c                        e Zd ZdZdZdZdZdZy)FrontendMastersIErD  FrontendMasterszW(?:frontendmasters:|https?://api\.frontendmasters\.com/v\d+/kabuki/video/)(?P<id>[^/]+)rF  rl   Nr   r   r   r   rQ  rQ    s    0GGmJ&NLr   rQ  c                        e Zd ZdZdZdZdZdZy)rN  rD  FrontendMastersLessonz]https?://(?:www\.)?frontendmasters\.com/courses/(?P<course_name>[^/]+)/(?P<lesson_name>[^/]+)rF  rl   Nr   r   r   r   rN  rN    s    0G%GrJ&NLr   rN  c                       e Zd ZdZdZdZdZy)FunkIEzyt_dlp.extractor.funkFunkzphttps?://(?:(?:www|origin|play)\.)?funk\.net/(?:channel|playlist)/[^/?#]+/(?P<display_id>[0-9a-z-]+)-(?P<id>\d+)rl   Nr   r   r   r   rV  rV    s    %GG GJLr   rV  c                       e Zd ZdZdZdZdZy)Funker530IEzyt_dlp.extractor.funker530	Funker530z7https?://(?:www\.)?funker530\.com/video/(?P<id>[^/?#]+)rl   Nr   r   r   r   rY  rY    r  r   rY  c                        e Zd ZdZdZdZdZdZy)FuxIEr
  Fuxzahttps?://(?:(?P<kind>www|m)\.)?fux\.com/(?:video|embed)/(?P<id>\d+)(?:/(?P<display_id>[^/?#&]+))?r   rl   Nrw  r   r   r   r\  r\    s    )GGwJILr   r\  c                       e Zd ZdZdZdZdZy)	FuyinTVIEzyt_dlp.extractor.fuyintvFuyinTVz;https?://(?:www\.)?fuyin\.tv/html/(?:\d+)/(?P<id>\d+)\.htmlrl   Nr   r   r   r   r_  r_        (GGSJLr   r_  c                        e Zd ZdZdZdZdZdZy)GBNewsIEzyt_dlp.extractor.gbnewsGBNewsz=https?://(?:www\.)?gbnews\.(?:uk|com)/(?:\w+/)?(?P<id>[^#?]+)z(GB News clips, features and live streamsrl   Nr   r   r   r   rc  rc    s    'GGSJ8GLr   rc  c                   $    e Zd ZdZdZdZdZdZdZy)
GDCVaultIEzyt_dlp.extractor.gdcvaultGDCVaultzGhttps?://(?:www\.)?gdcvault\.com/play/(?P<id>\d+)(?:/(?P<name>[\w-]+))?Fgdcvaultrl   Nr  r   r   r   rf  rf  
  s     )GG^JHNLr   rf  c                       e Zd ZdZdZdZdZy)GMANetworkVideoIEzyt_dlp.extractor.gmanetworkGMANetworkVideozUhttps?://(?:www)\.gmanetwork\.com/(?:\w+/){3}(?P<id>\d+)/(?P<display_id>[\w-]+)/videorl   Nr   r   r   r   rj  rj    s    +GGmJLr   rj  c                       e Zd ZdZdZdZdZy)GabIEzyt_dlp.extractor.gabGabz3https?://(?:www\.)?gab\.com/[^/]+/posts/(?P<id>\d+)rl   Nr   r   r   r   rm  rm        $GGIJLr   rm  c                        e Zd ZdZdZdZdZdZy)GaiaIEzyt_dlp.extractor.gaiaGaiazZhttps?://(?:www\.)?gaia\.com/video/(?P<id>[^/?]+).*?\bfullplayer=(?P<type>feature|preview)gaiarl   Nr   r   r   r   rq  rq  !  s    %GGpJNLr   rq  c                        e Zd ZdZdZdZdZdZy)GameDevTVDashboardIEzyt_dlp.extractor.gamedevtvGameDevTVDashboardz\https?://(?:www\.)?gamedev\.tv/dashboard/courses/(?P<course_id>\d+)(?:/(?P<lecture_id>\d+))?	gamedevtvr   Nr   r   r   r   ru  ru  )  s    *G"GsJ NLr   ru  c                       e Zd ZdZdZy)GameJoltBaseIEyt_dlp.extractor.gamejoltGameJoltBaseNr   r   r   r   ry  ry  1  r  r   ry  c                       e Zd ZdZdZy)GameJoltPostListBaseIErz  GameJoltPostListBaseNr   r   r   r   r}  r}  6      )G$Gr   r}  c                       e Zd ZdZdZdZdZy)GameJoltCommunityIErz  GameJoltCommunityzhttps?://(?:www\.)?gamejolt\.com/c/(?P<id>(?P<community>[\w-]+)(?:/(?P<channel>[\w-]+))?)(?:(?:\?|\#!?)(?:.*?[&;])??sort=(?P<sort>\w+))?rm   Nr   r   r   r   r  r  ;  s    )G!G cJLr   r  c                       e Zd ZdZdZdZdZy)GameJoltGameIErz  GameJoltGamez9https?://(?:www\.)?gamejolt\.com/games/[\w-]+/(?P<id>\d+)rm   Nr   r   r   r   r  r  B  s    )GGPJLr   r  c                       e Zd ZdZdZdZdZy)GameJoltGameSoundtrackIErz  GameJoltGameSoundtrackz\https?://(?:www\.)?gamejolt\.com/get/soundtrack(?:\?|\#!?)(?:.*?[&;])??game=(?P<id>(?:\d+)+)rm   Nr   r   r   r   r  r  I  s    )G&GtJLr   r  c                       e Zd ZdZdZdZdZy)
GameJoltIErz  GameJoltz<https?://(?:www\.)?gamejolt\.com/p/(?:[\w-]*-)?(?P<id>\w{8})r   Nr   r   r   r   r  r  P  s    )GGSJLr   r  c                       e Zd ZdZdZdZdZy)GameJoltSearchIErz  GameJoltSearchz}https?://(?:www\.)?gamejolt\.com/search(?:/(?P<filter>communities|users|games))?(?:\?|\#!?)(?:.*?[&;])??q=(?P<id>(?:[^&#]+)+)rm   Nr   r   r   r   r  r  W  s    )GG UJLr   r  c                       e Zd ZdZdZdZdZy)GameJoltUserIErz  GameJoltUserz0https?://(?:www\.)?gamejolt\.com/@(?P<id>[\w-]+)rm   Nr   r   r   r   r  r  ^  s    )GGFJLr   r  c                       e Zd ZdZdZdZdZy)
GameSpotIEzyt_dlp.extractor.gamespotGameSpotz[https?://(?:www\.)?gamespot\.com/(?:video|article|review)s/(?:[^/]+/\d+-|embed/)(?P<id>\d+)rl   Nr   r   r   r   r  r  e      )GGrJLr   r  c                       e Zd ZdZdZdZdZy)
GameStarIEzyt_dlp.extractor.gamestarGameStarzLhttps?://(?:www\.)?game(?P<site>pro|star)\.de/videos/.*,(?P<id>[0-9]+)\.htmlrl   Nr   r   r   r   r  r  l  s    )GGbJLr   r  c                       e Zd ZdZdZdZdZy)
GaskrankIEzyt_dlp.extractor.gaskrankGaskrankzKhttps?://(?:www\.)?gaskrank\.tv/tv/(?P<categories>[^/]+)/(?P<id>[^/]+)\.htmrl   Nr   r   r   r   r  r  s  s    )GGaJLr   r  c                        e Zd ZdZdZdZdZdZy)GazetaIEzyt_dlp.extractor.gazetaGazetazx(?P<url>https?://(?:www\.)?gazeta\.ru/(?:[^/]+/)?video/(?:main/)*(?:\d{4}/\d{2}/\d{2}/)?(?P<id>[A-Za-z0-9-_.]+)\.s?html)Frl   Nr]  r   r   r   r  r  z  s    'GG RJHLr   r  c                       e Zd ZdZdZdZdZy)GediDigitalIEzyt_dlp.extractor.gedidigitalGediDigitala  (?x:(?P<base_url>(?:https?:)//video\.
        (?:
            (?:
                (?:espresso\.)?repubblica
                |lastampa
                |ilsecoloxix
                |huffingtonpost
            )|
            (?:
                iltirreno
                |messaggeroveneto
                |ilpiccolo
                |gazzettadimantova
                |mattinopadova
                |laprovinciapavese
                |tribunatreviso
                |nuovavenezia
                |gazzettadimodena
                |lanuovaferrara
                |corrierealpi
                |lasentinella
            )\.gelocal
        )\.it(?:/[^/]+){2,4}/(?P<id>\d+))(?:$|[?&].*))rl   Nr   r   r   r   r  r    s    ,GG VJLr   r  c                       e Zd ZdZdZdZdZy)GeniusIEyt_dlp.extractor.geniusGeniuszHhttps?://(?:www\.)?genius\.com/(?:videos|(?P<article>a))/(?P<id>[^?/#]+)rl   Nr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZy)GeniusLyricsIEr  GeniusLyricsz@https?://(?:www\.)?genius\.com/(?P<id>[^?/#]+)-lyrics(?:[?/#]|$)rm   Nr   r   r   r   r  r    s    'GGUJLr   r  c                        e Zd ZdZdZdZdZdZy)GermanupaIEzyt_dlp.extractor.germanupa	Germanupaz/https?://germanupa\.de/mediathek/(?P<id>[\w-]+)zgermanupa.derl   Nr   r   r   r   r  r    s    *GGDJGLr   r  c                   $    e Zd ZdZdZddgZdZdZy)GetCourseRuIEyt_dlp.extractor.getcourseruGetCourseRuzhttps?://(?:(?!player02\.)[a-zA-Z0-9-]+\.getcourse\.(?:ru|io)|academymel\.online|marafon\.mani\-beauty\.com|on\.psbook\.ru)/(?!pl/|teach/)(?P<id>[^?#]+)zhttps?://(?:(?!player02\.)[a-zA-Z0-9-]+\.getcourse\.(?:ru|io)|academymel\.online|marafon\.mani\-beauty\.com|on\.psbook\.ru)/(?:pl/)?teach/control/lesson/view\?(?:[^#]+&)?id=(?P<id>\d+)getcourserurm   Nr   r   r   r   r  r    s+    ,GG v  x}  ~J"NLr   r  c                       e Zd ZdZdZdZdZy)GetCourseRuPlayerIEr  GetCourseRuPlayerz_https?://(?:player02\.getcourse\.ru|cf-api-2\.vhcdn\.com)/sign-player/?\?(?:[^#]+&)?json=[^#&]+rl   Nr   r   r   r   r  r    s    ,G!GwJLr   r  c                       e Zd ZdZdZy)GettrBaseIEyt_dlp.extractor.gettr	GettrBaseNr   r   r   r   r  r    r   r   r  c                       e Zd ZdZdZdZdZy)GettrIEr  Gettrz2https?://(www\.)?gettr\.com/post/(?P<id>[a-z0-9]+)rl   Nr   r   r   r   r  r        &GGGJLr   r  c                       e Zd ZdZdZdZdZy)GettrStreamingIEr  GettrStreamingz7https?://(www\.)?gettr\.com/streaming/(?P<id>[a-z0-9]+)rl   Nr   r   r   r   r  r    s    &GGLJLr   r  c                       e Zd ZdZdZdZdZy)GiantBombIEzyt_dlp.extractor.giantbomb	GiantBombzXhttps?://(?:www\.)?giantbomb\.com/(?:videos|shows)/(?P<display_id>[^/]+)/(?P<id>\d+-\d+)rl   Nr   r   r   r   r  r    s    *GGoJLr   r  c                       e Zd ZdZdZdZy)GlattvisionTVBaseIErH  GlattvisionTVBaseglattvisiontvNr{   r   r   r   r  r    s    'G!G$Nr   r  c                       e Zd ZdZdZdZdZy)GlattvisionTVIErH  GlattvisionTVz(?x)https?://(?:www\.)?iptv\.glattvision\.ch/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  NrS  r   r   r   r  r    s    'GG sJ$Nr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )GlattvisionTVLiveIErH  GlattvisionTVLivez(?x)https?://(?:www\.)?iptv\.glattvision\.ch/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 P    t         j                  |      rdS t        |   |      S r   )r  r4   r   r   s     r   r4   zGlattvisionTVLiveIE.suitable  rJ  r   r  r   s   @r   r  r    s.    'G!G hJ$NQ Qr   r  c                       e Zd ZdZdZdZdZy)GlattvisionTVRecordingsIErH  GlattvisionTVRecordingsz|(?x)https?://(?:www\.)?iptv\.glattvision\.ch/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  NrS  r   r   r   r  r    s    'G'G XJ$Nr   r  c                        e Zd ZdZdZdZdZdZy)GlideIEzyt_dlp.extractor.glideGlidez3https?://share\.glide\.me/(?P<id>[A-Za-z0-9\-=_+]+)z&Glide mobile video messages (glide.me)rl   Nr   r   r   r   r  r    s    &GGIJ6GLr   r  c                       e Zd ZdZdZy)GlobalPlayerBaseIEyt_dlp.extractor.globalplayerGlobalPlayerBaseNr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZy)GlobalPlayerAudioEpisodeIEr  GlobalPlayerAudioEpisodezjhttps?://www\.globalplayer\.com/(?:(?P<podcast>podcasts)|catchup/\w+/\w+)/episodes/(?P<id>\w+)/?(?:$|[?#])rl   Nr   r   r   r   r  r    s    -G(G CJLr   r  c                       e Zd ZdZdZdZdZy)GlobalPlayerAudioIEr  GlobalPlayerAudiozbhttps?://www\.globalplayer\.com/(?:(?P<podcast>podcasts)/|catchup/\w+/\w+/)(?P<id>\w+)/?(?:$|[?#])rm   Nr   r   r   r   r  r    s    -G!GzJLr   r  c                       e Zd ZdZdZdZdZy)GlobalPlayerLiveIEr  GlobalPlayerLivez4https?://www\.globalplayer\.com/live/(?P<id>\w+)/\w+rl   Nr   r   r   r   r  r    s    -G GKJLr   r  c                       e Zd ZdZdZdZdZy)GlobalPlayerLivePlaylistIEr  GlobalPlayerLivePlaylistz5https?://www\.globalplayer\.com/playlists/(?P<id>\w+)rl   Nr   r   r   r   r  r  	  s    -G(GKJLr   r  c                       e Zd ZdZdZdZdZy)GlobalPlayerVideoIEr  GlobalPlayerVideoz2https?://www\.globalplayer\.com/videos/(?P<id>\w+)rl   Nr   r   r   r   r  r    s    -G!GHJLr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )GloboArticleIEyt_dlp.extractor.globoGloboArticlezNhttps?://(?!globoplay).+?\.globo\.com/(?:[^/?#]+/)*(?P<id>[^/?#.]+)(?:\.html)?rm   c                 P    t         j                  |      rdS t        |   |      S r   )GloboIEr4   r   r   s     r   r4   zGloboArticleIE.suitable  r   r   r   r   s   @r   r  r    s+    &GGdJLI Ir   r  c                        e Zd ZdZdZdZdZdZy)r  r  GlobozC(?:globo:|https?://[^/?#]+?\.globo\.com/(?:[^/?#]+/))(?P<id>\d{7,})globorl   Nr   r   r   r   r  r  "  s    &GGYJNLr   r  c                       e Zd ZdZdZy)GlomexBaseIEyt_dlp.extractor.glomex
GlomexBaseNr   r   r   r   r  r  *  rE  r   r  c                        e Zd ZdZdZdZdZdZy)GlomexEmbedIEr  zglomex:embedzfhttps?://player\.glomex\.com/integration/[^/]/iframe\-player\.html\?([^#]+&)?playlistId=(?P<id>[^#&]+)zGlomex embedded videosr   Nr   r   r   r   r  r  /  s    'GG~J&GLr   r  c                        e Zd ZdZdZdZdZdZy)GlomexIEr  glomexz1https?://video\.glomex\.com/[^/]+/(?P<id>v-[^-]+)zGlomex videosrl   Nr   r   r   r   r  r  7  s    'GGFJGLr   r  c                       e Zd ZdZdZdZdZy)GoDiscoveryIEr  GoDiscoveryz<https?://(?:go\.)?discovery\.com/video/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r  r  ?  s    &GGQJLr   r  c                   $    e Zd ZdZdZg dZdZdZy)GoIEzyt_dlp.extractor.goGo)z|https?://(?:www\.)?(?P<site>abc)\.com/(?:video|episode|movies-and-specials)/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})zhttps?://(?:www\.)?(?P<site>freeform)\.com/(?:video|episode|movies-and-specials)/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})zhttps?://(?:www\.)?(?P<site>disneynow)\.com/(?:video|episode|movies-and-specials)/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})zhttps?://fxnow\.(?P<site>fxnetworks)\.com/(?:video|episode|movies-and-specials)/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})zhttps?://(?:www\.)?(?P<site>nationalgeographic)\.com/tv/(?:video|episode|movies-and-specials)/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})   rl   Nrw  r   r   r   r  r  F  s    #GG LJILr   r  c                   $    e Zd ZdZdZdZdZdZdZy)GoPlayIEzyt_dlp.extractor.goplayzplay.tvzAhttps?://(www\.)?play\.tv/video/([^/?#]+/[^/?#]+/|)(?P<id>[^/#]+)zPLAY (formerly goplay.be)goplayrl   Nr   r   r   r   r   r   N  s     'GGVJ)GNLr   r   c                       e Zd ZdZdZdZdZy)GoProIEzyt_dlp.extractor.goproGoProz2https?://(www\.)?gopro\.com/v/(?P<id>[A-Za-z0-9]+)rl   Nr   r   r   r   r  r  W  r  r   r  c                       e Zd ZdZdZdZdZy)GoToStageIEzyt_dlp.extractor.gotostage	GoToStagezUhttps?://(?:www\.)?gotostage\.com/channel/[a-z0-9]+/recording/(?P<id>[a-z0-9]+)/watchrl   Nr   r   r   r   r  r  ^  s    *GGjJLr   r  c                       e Zd ZdZdZdZdZy)GodResourceIEzyt_dlp.extractor.godresourceGodResourcez0https?://new\.godresource\.com/video/(?P<id>\w+)rl   Nr   r   r   r   r	  r	  e  s    ,GGFJLr   r	  c                        e Zd ZdZdZdZdZdZy)	GodTubeIEzyt_dlp.extractor.godtubeGodTubez=https?://(?:www\.)?godtube\.com/watch/\?v=(?P<id>[\da-zA-Z]+)Frl   Nr]  r   r   r   r  r  l      (GGTJHLr   r  c                       e Zd ZdZdZdZdZy)GolemIEzyt_dlp.extractor.golemGolemz*https?://video\.golem\.de/.+?/(?P<id>.+?)/rl   Nr   r   r   r   r  r  t  s    &GG?JLr   r  c                        e Zd ZdZdZdZdZdZy)
GoodGameIEzyt_dlp.extractor.goodgamezgoodgame:streamz2https?://goodgame\.ru/(?!channel/)(?P<id>[\w.*-]+)r   rl   Nrw  r   r   r   r  r  {  s    )GGGJILr   r  c                       e Zd ZdZdZdZdZy)GoogleDriveFolderIEyt_dlp.extractor.googledrivezGoogleDrive:FolderzEhttps?://(?:docs|drive)\.google\.com/drive/folders/(?P<id>[\w-]{28,})rm   Nr   r   r   r   r  r    s    ,G"G[JLr   r  c                       e Zd ZdZdZdZdZy)GoogleDriveIEr  GoogleDrivea  (?x)
                        https?://
                            (?:
                                (?:docs|drive|drive\.usercontent)\.google\.com/
                                (?:
                                    (?:uc|open|download)\?.*?id=|
                                    file/d/
                                )|
                                video\.google\.com/get_player\?.*?docid=
                            )
                            (?P<id>[a-zA-Z0-9_-]{28,})
                    rl   Nr   r   r   r   r  r    s    ,GG dJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)GoogleSearchIEzyt_dlp.extractor.googlesearchzvideo.google:searchz7gvsearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zGoogle Video searchgvsearchrm   Nr  r   r   r   r  r    s     -G#GLJ#GJLr   r  c                       e Zd ZdZdZdZdZy)	GraspopIEzyt_dlp.extractor.graspopGraspopz/https?://vod\.graspop\.be/[a-z]{2}/(?P<id>\d+)/rl   Nr   r   r   r   r  r    s    (GGEJLr   r  c                       e Zd ZdZdZdZdZy)GronkhFeedIEyt_dlp.extractor.gronkhzgronkh:feedz0https?://(?:www\.)?gronkh\.tv(?:/feed)?/?(?:#|$)rm   Nr   r   r   r   r!  r!    s    'GGEJLr   r!  c                       e Zd ZdZdZdZdZy)GronkhIEr"  Gronkhz=https?://(?:www\.)?gronkh\.tv/(?:watch/)?streams?/(?P<id>\d+)rl   Nr   r   r   r   r$  r$        'GGSJLr   r$  c                       e Zd ZdZdZdZdZy)GronkhVodsIEr"  zgronkh:vodsz3https?://(?:www\.)?gronkh\.tv/vods/streams/?(?:#|$)rm   Nr   r   r   r   r(  r(    s    'GGHJLr   r(  c                       e Zd ZdZdZdZdZy)	GrouponIEzyt_dlp.extractor.grouponGrouponz6https?://(?:www\.)?groupon\.com/deals/(?P<id>[^/?#&]+)rm   Nr   r   r   r   r*  r*    s    (GGKJLr   r*  c                       e Zd ZdZdZdZdZy)HBOIEri  hbozFhttps?://(?:www\.)?hbo\.com/(?:video|embed)(?:/[^/]+)*/(?P<id>[^/?#]+)rl   Nr   r   r   r   r-  r-    s    $GG[JLr   r-  c                       e Zd ZdZdZdZdZy)HGTVComShowIEzyt_dlp.extractor.hgtvzhgtv.com:showz9https?://(?:www\.)?hgtv\.com/shows/[^/]+/(?P<id>[^/?#&]+)rm   Nr   r   r   r   r0  r0    s    %GGNJLr   r0  c                       e Zd ZdZdZdZdZy)HGTVDeIEr  HGTVDez6https?://de\.hgtv\.com/sendungen/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r2  r2    s    &GGKJLr   r2  c                       e Zd ZdZdZdZdZy)	HGTVUsaIEr  HGTVUsaz:https?://(?:watch\.)?hgtv\.com/video/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r5  r5    s    &GGOJLr   r5  c                       e Zd ZdZdZdZdZy)HRFernsehenIEzyt_dlp.extractor.hrfensehenhrfernsehenzNhttps?://www\.(?:hr-fernsehen|hessenschau)\.de/.*,video-(?P<id>[0-9]{6})\.htmlrl   Nr   r   r   r   r8  r8    s    +GGdJLr   r8  c                       e Zd ZdZdZdZy)
HRTiBaseIEyt_dlp.extractor.hrtiHRTiBasehrtiNr{   r   r   r   r;  r;    s    %GGNr   r;  c                   $    e Zd ZdZdZdZdZdZdZy)HRTiIEr<  HRTia  (?x)
                        (?:
                            hrti:(?P<short_id>[0-9]+)|
                            https?://
                                hrti\.hrt\.hr/(?:\#/)?video/show/(?P<id>[0-9]+)/(?P<display_id>[^/]+)?
                        )
                    r>     rl   Nr  r   r   r   r@  r@    s#    %GG pJNILr   r@  c                        e Zd ZdZdZdZdZdZy)HRTiPlaylistIEr<  HRTiPlaylistzWhttps?://hrti\.hrt\.hr/(?:#/)?video/list/category/(?P<id>[0-9]+)/(?P<display_id>[^/]+)?r>  rm   Nr   r   r   r   rD  rD    s    %GGlJNLr   rD  c                       e Zd ZdZdZy)HSEShowBaseIEyt_dlp.extractor.hseHSEShowBaseNr   r   r   r   rG  rG    s    $GGr   rG  c                       e Zd ZdZdZdZdZy)HSEProductIErH  
HSEProductz7https?://(?:www\.)?hse\.de/dpl/p/product/(?P<id>[0-9]+)rl   Nr   r   r   r   rK  rK    s    $GGLJLr   rK  c                       e Zd ZdZdZdZdZy)	HSEShowIErH  HSEShowz8https?://(?:www\.)?hse\.de/dpl/c/tv-shows/(?P<id>[0-9]+)rl   Nr   r   r   r   rN  rN    s    $GGMJLr   rN  c                       e Zd ZdZdZdZy)HTML5MediaEmbedIEyt_dlp.extractor.genericembedshtml5FNr  r   r   r   rQ  rQ  
  s    .GGJr   rQ  c                       e Zd ZdZdZdZdZy)HarpodeonIEzyt_dlp.extractor.harpodeon	HarpodeonzChttps?://(?:www\.)?harpodeon\.com/(?:video|preview)/\w+/(?P<id>\d+)rl   Nr   r   r   r   rU  rU    s    *GGZJLr   rU  c                       e Zd ZdZdZdZdZy)HearThisAtIEzyt_dlp.extractor.hearthisat
HearThisAtzFhttps?://(?:www\.)?hearthis\.at/(?P<artist>[^/?#]+)/(?P<title>[\w.-]+)rl   Nr   r   r   r   rX  rX    s    +GG\JLr   rX  c                       e Zd ZdZdZdZdZy)HeiseIEzyt_dlp.extractor.heiseHeisezBhttps?://(?:www\.)?heise\.de/(?:[^/]+/)+[^/]+-(?P<id>[0-9]+)\.htmlrl   Nr   r   r   r   r[  r[    s    &GGXJLr   r[  c                        e Zd ZdZdZdZdZdZy)HellPornoIEzyt_dlp.extractor.hellporno	HellPornoz@https?://(?:www\.)?hellporno\.(?:com/videos|net/v)/(?P<id>[^/]+)r   rl   Nrw  r   r   r   r^  r^  %  s    *GGUJILr   r^  c                       e Zd ZdZdZy)NPODataMidEmbedIEyt_dlp.extractor.npoNPODataMidEmbedNr   r   r   r   ra  ra  -  r  r   ra  c                       e Zd ZdZdZdZdZy)HetKlokhuisIErb  hetklokhuisz=https?://(?:www\.)?hetklokhuis\.nl/[^/]+/\d+/(?P<id>[^/?#&]+)rl   Nr   r   r   r   re  re  2  s    $GGSJLr   re  c                        e Zd ZdZdZdZdZdZy)HiDiveIEzyt_dlp.extractor.hidiveHiDivezPhttps?://(?:www\.)?hidive\.com/stream/(?P<id>(?P<title>[^/]+)/(?P<key>[^/?#&]+))hidiverl   Nr   r   r   r   rh  rh  9  s    'GGeJNLr   rh  c                       e Zd ZdZdZdZdZy)HistoricFilmsIEzyt_dlp.extractor.historicfilmsHistoricFilmsz@https?://(?:www\.)?historicfilms\.com/(?:tapes/|play)(?P<id>\d+)rl   Nr   r   r   r   rl  rl  A  s    .GGVJLr   rl  c                       e Zd ZdZdZdZdZy)HitRecordIEzyt_dlp.extractor.hitrecord	HitRecordz5https?://(?:www\.)?hitrecord\.org/records/(?P<id>\d+)rl   Nr   r   r   r   ro  ro  H  s    *GGKJLr   ro  c                       e Zd ZdZdZdZdZy)HollywoodReporterIE"yt_dlp.extractor.hollywoodreporterHollywoodReporterz>https?://(?:www\.)?hollywoodreporter\.com/video/(?P<id>[\w-]+)rl   Nr   r   r   r   rr  rr  O  s    2G!GTJLr   rr  c                       e Zd ZdZdZdZdZy)HollywoodReporterPlaylistIErs  HollywoodReporterPlaylistzPhttps?://(?:www\.)?hollywoodreporter\.com/vcategory/(?P<slug>[\w-]+)-(?P<id>\d+)rm   Nr   r   r   r   rv  rv  V  s    2G)GgJLr   rv  c                       e Zd ZdZdZdZdZy)	HolodexIEzyt_dlp.extractor.holodexHolodexz(?x)https?://(?:www\.|staging\.)?holodex\.net/(?:
            api/v2/playlist/(?P<playlist>\d+)|
            watch/(?P<id>[\w-]{11})(?:\?(?:[^#]+&)?playlist=(?P<playlist2>\d+))?
        )r   Nr   r   r   r   ry  ry  ]  s    (GG YJLr   ry  c                        e Zd ZdZdZdZdZdZy)HotNewHipHopIEzyt_dlp.extractor.hotnewhiphopHotNewHipHopz9https?://(?:www\.)?hotnewhiphop\.com/.*\.(?P<id>.*)\.htmlFrl   Nr]  r   r   r   r|  r|  d  s    -GGPJHLr   r|  c                       e Zd ZdZdZy)HotStarBaseIEyt_dlp.extractor.hotstarHotStarBaseNr   r   r   r   r  r  l  r   r   r  c                        e Zd ZdZdZdZdZdZy)	HotStarIEr  hotstarz(?x)
        https?://(?:www\.)?hotstar\.com(?:/in)?/(?!in/)
        (?:
            (?P<type>movies|sports|clips|episode|(?P<tv>tv|shows))/
            (?(tv)(?:[^/?#]+/){2}|[^?#]*)
        )?
        [^/?#]+/
        (?P<id>\d{10})
    
JioHotstarrl   Nr   r   r   r   r  r  q  s    (GG MJGLr   r  c                        e Zd ZdZdZdZdZdZy)HotStarPrefixIEr  HotStarPrefixz'hotstar:(?:(?P<type>\w+):)?(?P<id>\d+)$Frl   Nr   r   r   r   r  r  y  s    (GG<JGLr   r  c                       e Zd ZdZdZdZdZy)HotStarSeriesIEr  zhotstar:seriesz[(?P<url>https?://(?:www\.)?hotstar\.com(?:/in)?/(?:tv|shows)/[^/]+/(?P<id>\d+))/?(?:[#?]|$)rm   Nr   r   r   r   r  r    s    (GGqJLr   r  c                       e Zd ZdZdZdZdZy)HrefLiRedirectIEzyt_dlp.extractor.hreflizhref.lizhttps?://href\.li/\?(?P<url>.+)FNr,  r   r   r   r  r    s    'GG4JGr   r  c                        e Zd ZdZdZdZdZdZy)	HuajiaoIEzyt_dlp.extractor.huajiaoHuajiaoz0https?://(?:www\.)?huajiao\.com/l/(?P<id>[0-9]+)u   花椒直播rl   Nr   r   r   r   r  r    s    (GGEJGLr   r  c                        e Zd ZdZdZdZdZdZy)
HuffPostIEzyt_dlp.extractor.huffpostHuffPostz(?x)
        https?://(embed\.)?live\.huffingtonpost\.com/
        (?:
            r/segment/[^/]+/|
            HPLEmbedPlayer/\?segmentId=
        )
        (?P<id>[0-9a-f]+)zHuffington Postrl   Nr   r   r   r   r  r    s    )GG NJGLr   r  c                       e Zd ZdZdZy)HungamaBaseIEyt_dlp.extractor.hungamaHungamaBaseNr   r   r   r   r  r    r   r   r  c                       e Zd ZdZdZdZdZy)HungamaAlbumPlaylistIEr  HungamaAlbumPlaylistzPhttps?://(?:www\.|un\.)?hungama\.com/(?P<path>playlists|album)/[^/]+/(?P<id>\d+)rm   Nr   r   r   r   r  r    s    (G$GgJLr   r  c                       e Zd ZdZdZdZdZy)	HungamaIEr  HungamaaI  (?x)
                    https?://
                        (?:www\.|un\.)?hungama\.com/
                        (?:
                            (?:video|movie|short-film)/[^/]+/|
                            tv-show/(?:[^/]+/){2}\d+/episode/[^/]+/
                        )
                        (?P<id>\d+)
                    rl   Nr   r   r   r   r  r    s    (GG jJLr   r  c                       e Zd ZdZdZdZdZy)HungamaSongIEr  HungamaSongz;https?://(?:www\.|un\.)?hungama\.com/song/[^/]+/(?P<id>\d+)rl   Nr   r   r   r   r  r    s    (GGRJLr   r  c                        e Zd ZdZdZdZdZdZy)
HuyaLiveIEyt_dlp.extractor.huyaz	huya:livezLhttps?://(?:www\.|m\.)?huya\.com/(?!(?:video/play/))(?P<id>[^/#?&]+)(?:\D|$)u   虎牙直播rl   Nr   r   r   r   r  r    s    %GGcJGLr   r  c                        e Zd ZdZdZdZdZdZy)HuyaVideoIEr  z
huya:videoz9https?://(?:www\.)?huya\.com/video/play/(?P<id>\d+)\.htmlu   虎牙视频rl   Nr   r   r   r   r  r    s    %GGPJGLr   r  c                       e Zd ZdZdZdZdZy)HypemIEzyt_dlp.extractor.hypemHypemz7https?://(?:www\.)?hypem\.com/track/(?P<id>[0-9a-z]{5})rl   Nr   r   r   r   r  r        &GGLJLr   r  c                       e Zd ZdZdZdZdZy)HytaleIEzyt_dlp.extractor.hytaleHytalez>https?://(?:www\.)?hytale\.com/news/\d+/\d+/(?P<id>[a-z0-9-]+)rm   Nr   r   r   r   r  r        'GGUJLr   r  c                       e Zd ZdZdZy)	IGNBaseIEyt_dlp.extractor.ignIGNBaseNr   r   r   r   r  r    rk  r   r  c                       e Zd ZdZdZdZdZy)IGNArticleIEr  
IGNArticlezrhttps?://.+?\.ign\.com/(?:articles(?:/\d{4}/\d{2}/\d{2})?|(?:[a-z]{2}/)?(?:[\w-]+/)*?feature/\d+)/(?P<id>[^/?&#]+)rm   Nr   r   r   r   r  r    s    $GG MJLr   r  c                       e Zd ZdZdZdZdZy)IGNIEr  zign.comzyhttps?://(?:.+?\.ign|www\.pcmag)\.com/videos(?:/(?:\d{4}/\d{2}/\d{2}/)?(?P<id>.+?)(?:[/?&#]|$)|(?:/?\?(?P<filt>[^&#]+))?)rl   Nr   r   r   r   r  r    s    $GG TJLr   r  c                       e Zd ZdZdZdZdZy)
IGNVideoIEr  IGNVideozIhttps?://.+?\.ign\.com/(?:[a-z]{2}/)?[^/]+/(?P<id>\d+)/(?:video|trailer)/rl   Nr   r   r   r   r  r        $GG_JLr   r  c                       e Zd ZdZdZy)IHeartRadioBaseIEyt_dlp.extractor.iheartIHeartRadioBaseNr   r   r   r   r  r    s    'GGr   r  c                       e Zd ZdZdZdZdZy)IHeartRadioIEr  iheartradiozj(?:https?://(?:www\.)?iheart\.com/podcast/[^/]+/episode/(?P<display_id>[^/?&#]+)-|iheartradio:)(?P<id>\d+)rl   Nr   r   r   r   r  r    s    'GG AJLr   r  c                       e Zd ZdZdZdZdZy)IHeartRadioPodcastIEr  ziheartradio:podcastz[https?://(?:www\.)?iheart(?:podcastnetwork)?\.com/podcast/[^/?&#]+-(?P<id>\d+)/?(?:[?#&]|$)rm   Nr   r   r   r   r  r    s    'G#GqJLr   r  c                       e Zd ZdZdZdZdZy)IPrimaCNNIEyt_dlp.extractor.iprima	IPrimaCNNz4https?://cnn\.iprima\.cz/(?:[^/]+/)*(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r    s    'GGIJLr   r  c                        e Zd ZdZdZdZdZdZy)IPrimaIEr  IPrimazAhttps?://(?!cnn)(?:[^/]+)\.iprima\.cz/(?:[^/]+/)*(?P<id>[^/?#&]+)iprimarl   Nr   r   r   r   r  r        'GGVJNLr   r  c                       e Zd ZdZdZy)ITProTVBaseIEyt_dlp.extractor.itprotvITProTVBaseNr   r   r   r   r  r    r   r   r  c                       e Zd ZdZdZdZdZy)ITProTVCourseIEr  ITProTVCoursez9https?://app\.itpro\.tv/course/(?P<id>[\w-]+)/?(?:$|[#?])rm   Nr   r   r   r   r  r    s    (GGOJLr   r  c                       e Zd ZdZdZdZdZy)	ITProTVIEr  ITProTVz@https?://app\.itpro\.tv/course/(?P<course>[\w-]+)/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r        (GGWJLr   r  c                       e Zd ZdZdZdZdZy)	ITVBTCCIEyt_dlp.extractor.itvITVBTCCzEhttps?://(?:www\.)?itv\.com/(?:news|btcc)/(?:[^/]+/)*(?P<id>[^/?#&]+)rm   Nr   r   r   r   r  r  &  s    $GGZJLr   r  c                       e Zd ZdZdZdZdZy)ITVIEr  ITVz:https?://(?:www\.)?itv\.com/hub/[^/]+/(?P<id>[0-9a-zA-Z]+)rl   Nr   r   r   r   r  r  -  s    $GGOJLr   r  c                       e Zd ZdZdZdZdZy)	IcareusIEzyt_dlp.extractor.icareusIcareusz(?P<base_url>https?://(?:www\.)?(?:asahitv\.fi|helsinkikanava\.fi|hyvinvointitv\.fi|inez\.fi|permanto\.fi|suite\.icareus\.com|videos\.minifiddlers\.org))/[^?#]+/player/[^?#]+\?(?:[^#]+&)?(?:assetId|eventId)=(?P<id>\d+)rl   Nr   r   r   r   r  r  4  s    (GG zJLr   r  c                       e Zd ZdZdZdZdZy)IchinanaLiveClipIEyt_dlp.extractor.ichinanalivez17live:clipzXhttps?://(?:www\.)?17\.live/(?:[^/]+/)*profile/r/(?P<uploader_id>\d+)/clip/(?P<id>[^/]+)rl   Nr   r   r   r   r  r  ;  s    -GGnJLr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )IchinanaLiveIEr  17livezEhttps?://(?:www\.)?17\.live/(?:[^/]+/)*(?:live|profile/r)/(?P<id>\d+)rl   c                 R    t         j                  |       xr t        |   |      S r'   )r  r4   r   r   s     r   r4   zIchinanaLiveIE.suitableH  s&    %..s33M8H8MMr   r   r   s   @r   r  r  B  s+    -GG[JLN Nr   r  c                       e Zd ZdZdZdZdZy)IchinanaLiveVODIEr  z
17live:vodz:https?://(?:www\.)?17\.live/ja/vod/[^/?#]+/(?P<id>[^/?#]+)rl   Nr   r   r   r   r  r  M  s    -GGOJLr   r  c                       e Zd ZdZdZy)IdagioPlaylistBaseIEyt_dlp.extractor.idagioIdagioPlaylistBaseNr   r   r   r   r  r  T  rJ  r   r  c                       e Zd ZdZdZdZdZy)IdagioAlbumIEr  IdagioAlbumzGhttps?://(?:www\.)?app\.idagio\.com(?:/[a-z]{2})?/albums/(?P<id>[\w-]+)rm   Nr   r   r   r   r  r  Y  s    'GG^JLr   r  c                       e Zd ZdZdZdZdZy)IdagioPersonalPlaylistIEr  IdagioPersonalPlaylistzVhttps?://(?:www\.)?app\.idagio\.com(?:/[a-z]{2})?/playlists/personal/(?P<id>[\da-f-]+)rm   Nr   r   r   r   r  r  `  s    'G&GmJLr   r  c                       e Zd ZdZdZdZdZy)IdagioPlaylistIEr  IdagioPlaylistzWhttps?://(?:www\.)?app\.idagio\.com(?:/[a-z]{2})?/playlists/(?!personal/)(?P<id>[\w-]+)rm   Nr   r   r   r   r  r  g  s    'GGnJLr   r  c                       e Zd ZdZdZdZdZy)IdagioRecordingIEr  IdagioRecordingz`https?://(?:www\.)?app\.idagio\.com(?:/[a-z]{2})?/recordings/(?P<id>\d+)(?![^#]*[&?]trackId=\d+)rm   Nr   r   r   r   r  r  n  s    'GGxJLr   r  c                       e Zd ZdZdZdZdZy)IdagioTrackIEr  IdagioTrackz`https?://(?:www\.)?app\.idagio\.com(?:/[a-z]{2})?/recordings/\d+\?(?:[^#]+&)?trackId=(?P<id>\d+)rl   Nr   r   r   r   r  r  u  s    'GGyJLr   r  c                       e Zd ZdZdZy)TencentBaseIEyt_dlp.extractor.tencentTencentBaseNr   r   r   r   r  r  |  r   r   r  c                       e Zd ZdZdZy)
WeTvBaseIEr  WeTvBaseNr   r   r   r   r	  r	    s    (GGr   r	  c                       e Zd ZdZdZy)IflixBaseIEr  	IflixBaseNr   r   r   r   r	  r	    r  r   r	  c                       e Zd ZdZdZdZdZy)IflixEpisodeIEr  ziflix:episodezehttps?://(?:www\.)?iflix\.com/(?:[^?#]+/)?play/(?P<series_id>\w+)(?:-[^?#]+)?/(?P<id>\w+)(?:-[^?#]+)?rl   Nr   r   r   r   r	  r	    s    (GG|JLr   r	  c                       e Zd ZdZdZdZdZy)IflixSeriesIEr  IflixSerieszShttps?://(?:www\.)?iflix\.com/(?:[^?#]+/)?play/(?P<id>\w+)(?:-[^/?#]+)?/?(?:[?#]|$)rm   Nr   r   r   r   r
	  r
	    s    (GGiJLr   r
	  c                       e Zd ZdZdZdZdZy)IlPostIEzyt_dlp.extractor.ilpostIlPostz6https?://(?:www\.)?ilpost\.it/episodes/(?P<id>[^/?#]+)rl   Nr   r   r   r   r	  r	        'GGKJLr   r	  c                       e Zd ZdZdZdZdZy)IltalehtiIEzyt_dlp.extractor.iltalehti	Iltalehtiz9https?://(?:www\.)?iltalehti\.fi/[^/?#]+/a/(?P<id>[^/?#])rl   Nr   r   r   r   r	  r	    s    *GGNJLr   r	  c                        e Zd ZdZdZdZdZdZy)ImdbIEyt_dlp.extractor.imdbimdbzFhttps?://(?:www|m)\.imdb\.com/(?:video|title|list).*?[/-]vi(?P<id>\d+)z Internet Movie Database trailersrl   Nr   r   r   r   r	  r	    s    %GG\J0GLr   r	  c                        e Zd ZdZdZdZdZdZy)
ImdbListIEr	  z	imdb:listzGhttps?://(?:www\.)?imdb\.com/list/ls(?P<id>\d{9})(?!/videoplayer/vi\d+)zInternet Movie Database listsrm   Nr   r   r   r   r	  r	    s    %GG^J-GLr   r	  c                       e Zd ZdZdZy)ImgurBaseIEyt_dlp.extractor.imgur	ImgurBaseNr   r   r   r   r	  r	    r   r   r	  c                       e Zd ZdZdZy)ImgurGalleryBaseIEr	  ImgurGalleryBaseNr   r   r   r   r	  r	    s    &G Gr   r	  c                       e Zd ZdZdZdZdZy)ImgurAlbumIEr	  zimgur:albumz?https?://(?:i\.)?imgur\.com/a/(?:[^/?#]+-)?(?P<id>[a-zA-Z0-9]+)rm   Nr   r   r   r   r!	  r!	    s    &GGTJLr   r!	  c                       e Zd ZdZdZdZdZy)ImgurGalleryIEr	  zimgur:galleryzbhttps?://(?:i\.)?imgur\.com/(?:gallery|(?:t(?:opic)?|r)/[^/?#]+)/(?:[^/?#]+-)?(?P<id>[a-zA-Z0-9]+)r   Nr   r   r   r   r#	  r#	    s    &GGwJLr   r#	  c                       e Zd ZdZdZdZdZy)ImgurIEr	  ImgurzYhttps?://(?:i\.)?imgur\.com/(?!(?:a|gallery|t|topic|r)/)(?:[^/?#]+-)?(?P<id>[a-zA-Z0-9]+)rl   Nr   r   r   r   r%	  r%	    s    &GGnJLr   r%	  c                       e Zd ZdZdZdZdZy)InaIEzyt_dlp.extractor.inaInaz:https?://(?:(?:www|m)\.)?ina\.fr/(?:[^?#]+/)(?P<id>[\w-]+)rl   Nr   r   r   r   r(	  r(	        $GGPJLr   r(	  c                       e Zd ZdZdZdZdZy)IncIEzyt_dlp.extractor.incIncz9https?://(?:www\.)?inc\.com/(?:[^/]+/)+(?P<id>[^.]+).htmlrl   Nr   r   r   r   r,	  r,	        $GGNJLr   r,	  c                       e Zd ZdZdZdZdZy)IndavideoEmbedIEzyt_dlp.extractor.indavideoIndavideoEmbedzhttps?://(?:(?:embed\.)?indavideo\.hu/player/video/|assets\.indavideo\.hu/swf/player\.swf\?.*\b(?:v(?:ID|id))=)(?P<id>[\da-f]+)rl   Nr   r   r   r   r0	  r0	    s    *GG [JLr   r0	  c                       e Zd ZdZdZdZdZy)InfoQIEzyt_dlp.extractor.infoqInfoQz6https?://(?:www\.)?infoq\.com/(?:[^/]+/)+(?P<id>[^/]+)rl   Nr   r   r   r   r3	  r3	        &GGKJLr   r3	  c                       e Zd ZdZdZy)InstagramBaseIEyt_dlp.extractor.instagramInstagramBaseNr   r   r   r   r7	  r7	    r  r   r7	  c                       e Zd ZdZdZdZdZy)InstagramIEr8	  	Instagramzm(?P<url>https?://(?:www\.)?instagram\.com(?:/(?!share/)[^/?#]+)?/(?:p|tv|reels?(?!/audio/))/(?P<id>[^/?#&]+))r   Nr   r   r   r   r;	  r;	    s    *GG CJLr   r;	  c                        e Zd ZdZdZdZdZdZy)InstagramIOSIEr8	  InstagramIOSz$instagram://media\?id=(?P<id>[\d_]+)zIOS instagram:// URLrl   Nr   r   r   r   r>	  r>	    s    *GG9J$GLr   r>	  c                       e Zd ZdZdZdZdZy)InstagramStoryIEr8	  zinstagram:storyzLhttps?://(?:www\.)?instagram\.com/stories/(?P<user>[^/?#]+)(?:/(?P<id>\d+))?rm   Nr   r   r   r   rA	  rA	    s    *GGbJLr   rA	  c                       e Zd ZdZdZy)InstagramPlaylistBaseIEr8	  InstagramPlaylistBaseNr   r   r   r   rC	  rC	    s    *G%Gr   rC	  c                        e Zd ZdZdZdZdZdZy)InstagramTagIEr8	  zinstagram:tagz<https?://(?:www\.)?instagram\.com/explore/tags/(?P<id>[^/]+)zInstagram hashtag search URLsrm   Nr   r   r   r   rF	  rF	    s    *GGQJ-GLr   rF	  c                   $    e Zd ZdZdZdZdZdZdZy)InstagramUserIEr8	  zinstagram:userz>https?://(?:www\.)?instagram\.com/(?P<id>[^/]{2,})/?(?:$|[?#])FzInstagram user profilerm   Nrl  r   r   r   rH	  rH	    s     *GGSJH&GLr   rH	  c                       e Zd ZdZdZdZdZy)InternazionaleIEzyt_dlp.extractor.internazionaleInternazionalezGhttps?://(?:www\.)?internazionale\.it/video/(?:[^/]+/)*(?P<id>[^/?#&]+)rl   Nr   r   r   r   rJ	  rJ	  #  s    /GG\JLr   rJ	  c                       e Zd ZdZdZdZdZy)InvestigationDiscoveryIEr  InvestigationDiscoveryzJhttps?://(?:www\.)?investigationdiscovery\.com/video/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   rM	  rM	  *  s    &G&G_JLr   rM	  c                        e Zd ZdZdZdZdZdZy)	IqAlbumIEyt_dlp.extractor.iqiyiziq.com:albumz9https?://(?:www\.)?iq\.com/album/(?:[\w%-]*-)?(?P<id>\w+)r  r   Nrw  r   r   r   rP	  rP	  1  s    &GGPJILr   rP	  c                   $    e Zd ZdZdZdZdZdZdZy)IqIErQ	  ziq.comz8https?://(?:www\.)?iq\.com/play/(?:[\w%-]*-)?(?P<id>\w+)zInternational version of iQiyir  rl   Nr  r   r   r   rS	  rS	  9  s     &GGOJ.GILr   rS	  c                        e Zd ZdZdZdZdZdZy)IqiyiIErQ	  iqiyiz9https?://(?:(?:[^.]+\.)?iqiyi\.com|www\.pps\.tv)/.+\.htmlu	   爱奇艺r   Nr   r   r   r   rU	  rU	  B  s    &GGQJGLr   rU	  c                       e Zd ZdZdZdZdZy)IslamChannelIEyt_dlp.extractor.islamchannelIslamChannelz2https?://watch\.islamchannel\.tv/watch/(?P<id>\d+)rl   Nr   r   r   r   rX	  rX	  J      -GGHJLr   rX	  c                       e Zd ZdZdZdZdZy)IslamChannelSeriesIErY	  IslamChannelSeriesz9https?://watch\.islamchannel\.tv/series/(?P<id>[a-f\d-]+)rm   Nr   r   r   r   r]	  r]	  Q  s    -G"GOJLr   r]	  c                       e Zd ZdZdZdZdZy)IsraelNationalNewsIEz#yt_dlp.extractor.israelnationalnewsIsraelNationalNewsz;https?://(?:www\.)?israelnationalnews\.com/news/(?P<id>\d+)rm   Nr   r   r   r   r`	  r`	  X  s    3G"GQJLr   r`	  c                        e Zd ZdZdZdZdZdZy)IviCompilationIEyt_dlp.extractor.ivizivi:compilationzchttps?://(?:www\.)?ivi\.ru/watch/(?!\d+)(?P<compilationid>[a-z\d_-]+)(?:/season(?P<seasonid>\d+))?$zivi.ru compilationsrm   Nr   r   r   r   rc	  rc	  _  s    $GG{J#GLr   rc	  c                        e Zd ZdZdZdZdZdZy)IviIErd	  iviz\https?://(?:www\.)?ivi\.(?:ru|tv)/(?:watch/(?:[^/]+/)?|video/player\?.*?videoId=)(?P<id>\d+)zivi.rurl   Nr   r   r   r   rf	  rf	  g  s    $GGsJGLr   rf	  c                        e Zd ZdZdZdZdZdZy)	IvideonIEzyt_dlp.extractor.ivideonivideonz\https?://(?:www\.)?ivideon\.com/tv/(?:[^/]+/)*camera/(?P<id>\d+-[\da-f]+)/(?P<camera_id>\d+)z
Ivideon TVrl   Nr   r   r   r   ri	  ri	  o  s    (GGtJGLr   ri	  c                       e Zd ZdZdZdZdZy)IvooxIEzyt_dlp.extractor.ivooxIvoox)zJhttps?://(?:www\.)?ivoox\.com/(?:\w{2}/)?[^/?#]+_rf_(?P<id>[0-9]+)_1\.htmlz)https?://go\.ivoox\.com/rf/(?P<id>[0-9]+)rl   Nr   r   r   r   rl	  rl	  w  s    &GG SJLr   rl	  c                       e Zd ZdZdZdZy)IwaraBaseIEyt_dlp.extractor.iwara	IwaraBaseiwaraNr{   r   r   r   ro	  ro	  ~      &GGNr   ro	  c                   $    e Zd ZdZdZdZdZdZdZy)IwaraIErp	  rr	  zAhttps?://(?:www\.|ecchi\.)?iwara\.tv/videos?/(?P<id>[a-zA-Z0-9]+)r   rl   Nr  r   r   r   ru	  ru	    s     &GGWJNILr   ru	  c                        e Zd ZdZdZdZdZdZy)IwaraPlaylistIErp	  ziwara:playlistz8https?://(?:www\.)?iwara\.tv/playlist/(?P<id>[0-9a-f-]+)rr	  rm   Nr   r   r   r   rw	  rw	    s    &GGMJNLr   rw	  c                        e Zd ZdZdZdZdZdZy)IwaraUserIErp	  z
iwara:userz5https?://(?:www\.)?iwara\.tv/profile/(?P<id>[^/?#&]+)rr	  rm   Nr   r   r   r   ry	  ry	    s    &GGJJNLr   ry	  c                       e Zd ZdZdZdZdZy)IxiguaIEzyt_dlp.extractor.ixiguaIxiguaz7https?://(?:\w+\.)?ixigua\.com/(?:video/)?(?P<id>\d+).+rl   Nr   r   r   r   r{	  r{	    s    'GGNJLr   r{	  c                       e Zd ZdZdZdZdZy)	JStreamIEzyt_dlp.extractor.jstreamJStreamzFjstream:(?P<host>www\d+):(?P<id>(?P<publisher>[a-z0-9]+):(?P<mid>\d+))rl   Nr   r   r   r   r~	  r~	    s    (GG[JLr   r~	  c                   $    e Zd ZdZdZdZdZdZdZy)JTBCIEyt_dlp.extractor.jtbcJTBCz(?x)
        https?://(?:
            vod\.jtbc\.co\.kr/player/(?:program|clip)
            |tv\.jtbc\.co\.kr/(?:replay|trailer|clip)/pr\d+/pm\d+
        )/(?P<id>(?:ep|vo)\d+)z
jtbc.co.kr   rl   Nr  r   r   r   r	  r	    s#    %GG QJGILr   r	  c                       e Zd ZdZdZdZdZy)JTBCProgramIEr	  zJTBC:programzihttps?://(?:vod\.jtbc\.co\.kr/program|tv\.jtbc\.co\.kr/replay)/(?P<id>pr\d+)/(?:replay|pm\d+)/?(?:$|[?#])rm   Nr   r   r   r   r	  r	    s    %GG EJLr   r	  c                       e Zd ZdZdZdZdZy)JWPlatformIEzyt_dlp.extractor.jwplatform
JWPlatformz(?:https?://(?:content\.jwplatform|cdn\.jwplayer)\.com/(?:(?:feed|player|thumb|preview|manifest)s|jw6|v2/media)/|jwplatform:)(?P<id>[a-zA-Z0-9]{8})rl   Nr   r   r   r   r	  r	    s    +GG jJLr   r	  c                       e Zd ZdZdZdZdZy)	JamendoIEyt_dlp.extractor.jamendoJamendoa'  (?x)
                    https?://
                        (?:
                            licensing\.jamendo\.com/[^/]+|
                            (?:www\.)?jamendo\.com
                        )
                        /track/(?P<id>[0-9]+)(?:/(?P<display_id>[^/?#&]+))?
                    rl   Nr   r   r   r   r	  r	    s    (GG FJLr   r	  c                       e Zd ZdZdZdZdZy)JamendoAlbumIEr	  JamendoAlbumz4https?://(?:www\.)?jamendo\.com/album/(?P<id>[0-9]+)rm   Nr   r   r   r   r	  r	    s    (GGIJLr   r	  c                   $    e Zd ZdZdZdZdZdZdZy)JeuxVideoIEzyt_dlp.extractor.jeuxvideo	JeuxVideoNz*https?://.*?\.jeuxvideo\.com/.*/(.*?)\.htmFrl   r&  r   r   r   r	  r	    s     *GGH@JHLr   r	  c                       e Zd ZdZdZy)JioSaavnBaseIEyt_dlp.extractor.jiosaavnJioSaavnBaseNr   r   r   r   r	  r	    r  r   r	  c                       e Zd ZdZdZdZdZy)JioSaavnAlbumIEr	  zjiosaavn:albumzChttps?://(?:www\.)?(?:jio)?saavn\.com/album/[^/?#]+/(?P<id>[^/?#]+)rm   Nr   r   r   r   r	  r	    s    )GGXJLr   r	  c                       e Zd ZdZdZdZdZy)JioSaavnArtistIEr	  zjiosaavn:artistzDhttps?://(?:www\.)?(?:jio)?saavn\.com/artist/[^/?#]+/(?P<id>[^/?#]+)rm   Nr   r   r   r   r	  r	    s    )GGYJLr   r	  c                       e Zd ZdZdZdZdZy)JioSaavnPlaylistIEr	  zjiosaavn:playlistzehttps?://(?:www\.)?(?:jio)?saavn\.com/(?:s/playlist/(?:[^/?#]+/){2}|featured/[^/?#]+/)(?P<id>[^/?#]+)rm   Nr   r   r   r   r	  r	    s    )G!GzJLr   r	  c                       e Zd ZdZdZdZdZy)JioSaavnShowIEr	  zjiosaavn:showzShttps?://(?:www\.)?(?:jio)?saavn\.com/shows/[^/?#]+/(?P<id>[^/?#]{11,})/?(?:$|[?#])rl   Nr   r   r   r   r	  r	    s    )GGhJLr   r	  c                       e Zd ZdZdZdZdZy)JioSaavnShowPlaylistIEr	  zjiosaavn:show:playlistzUhttps?://(?:www\.)?(?:jio)?saavn\.com/shows/(?P<show>[^#/?]+)/(?P<season>\d+)/[^/?#]+rm   Nr   r   r   r   r	  r	    s    )G&GkJLr   r	  c                       e Zd ZdZdZdZdZy)JioSaavnSongIEr	  zjiosaavn:songz^https?://(?:www\.)?(?:jio)?saavn\.com(?:/song/[^/?#]+/|/s/song/(?:[^/?#]+/){3})(?P<id>[^/?#]+)rl   Nr   r   r   r   r	  r	    s    )GGsJLr   r	  c                       e Zd ZdZdZdZdZy)JojIEzyt_dlp.extractor.jojJojz(?x)
                    (?:
                        joj:|
                        https?://media\.joj\.sk/embed/
                    )
                    (?P<id>[^/?#^]+)
                rl   Nr   r   r   r   r	  r	    s    $GG YJLr   r	  c                       e Zd ZdZdZdZdZy)JoveIEzyt_dlp.extractor.joveJovez1https?://(?:www\.)?jove\.com/video/(?P<id>[0-9]+)rl   Nr   r   r   r   r	  r	    s    %GGFJLr   r	  c                       e Zd ZdZdZdZdZy)KTHIEzyt_dlp.extractor.kthKTHz4https?://play\.kth\.se/(?:[^/]+/)+(?P<id>[a-z0-9_]+)rl   Nr   r   r   r   r	  r	    ro  r   r	  c                       e Zd ZdZdZdZdZy)KakaoIEzyt_dlp.extractor.kakaoKakaoz^https?://(?:play-)?tv\.kakao\.com/(?:channel/\d+|embed/player)/cliplink/(?P<id>\d+|[^?#&]+@my)rl   Nr   r   r   r   r	  r	    s    &GGuJLr   r	  c                       e Zd ZdZdZdZdZy)	KalturaIEzyt_dlp.extractor.kalturaKalturaa  (?x)
                (?:
                    kaltura:(?P<partner_id>\w+):(?P<id>\w+)(?::(?P<player_type>\w+))?|
                    https?://
                        (?:(?:www|cdnapi(?:sec)?)\.)?kaltura\.com(?::\d+)?/
                        (?:
                            (?:
                                # flash player
                                index\.php/(?:kwidget|extwidget/preview)|
                                # html5 player
                                html5/html5lib/[^/]+/mwEmbedFrame\.php
                            )
                        )(?:/(?P<path>[^?]+))?(?:\?(?P<query>.*))?
                )
                r   Nr   r   r   r   r	  r	  $  s    (GG s
JLr   r	  c                        e Zd ZdZdZdZdZdZy)KankaNewsIEzyt_dlp.extractor.kankanews	KankaNewszDhttps?://(?:www\.)?kankanews\.com/a/\d+\-\d+\-\d+/(?P<id>\d+)\.shtmlFrl   Nr]  r   r   r   r	  r	  +  s    *GG`JHLr   r	  c                        e Zd ZdZdZdZdZdZy)KaraoketvIEzyt_dlp.extractor.karaoketv	Karaoketvz6https?://(?:www\.)?karaoketv\.co\.il/[^/]+/(?P<id>\d+)Frl   Nr]  r   r   r   r	  r	  3  s    *GGMJHLr   r	  c                        e Zd ZdZdZdZdZdZy)	KatsomoIEyt_dlp.extractor.tv2Katsomozhttps?://(?:www\.)?(?:katsomo|mtv(uutiset)?)\.fi/(?:sarja/[0-9a-z-]+-\d+/[0-9a-z-]+-|(?:#!/)?jakso/(?:\d+/[^/]+/)?|video/prog)(?P<id>\d+)Frl   Nr]  r   r   r   r	  r	  ;  s    $GG bJHLr   r	  c                        e Zd ZdZdZdZdZdZy)
KelbyOneIEzyt_dlp.extractor.kelbyoneKelbyOnez8https?://members\.kelbyone\.com/course/(?P<id>[^$&?#/]+)Frm   Nr]  r   r   r   r	  r	  C  s    )GGMJHLr   r	  c                       e Zd ZdZdZdZdZy)Kenh14PlaylistIEyt_dlp.extractor.kenh14Kenh14Playlistz>https?://video\.kenh14\.vn/playlist/[\w-]+-(?P<id>[0-9]+)\.chnrm   Nr   r   r   r   r	  r	  K  s    'GGUJLr   r	  c                       e Zd ZdZdZdZdZy)Kenh14VideoIEr	  Kenh14Videoz@https?://video\.kenh14\.vn/(?:video/)?[\w-]+-(?P<id>[0-9]+)\.chnrl   Nr   r   r   r   r	  r	  R  s    'GGWJLr   r	  c                       e Zd ZdZdZy)KhanAcademyBaseIEyt_dlp.extractor.khanacademyKhanAcademyBaseNr   r   r   r   r	  r	  Y  r  r   r	  c                       e Zd ZdZdZdZdZy)KhanAcademyIEr	  khanacademyzChttps?://(?:www\.)?khanacademy\.org/(?P<id>(?:[^/]+/){4}v/[^?#/&]+)rl   Nr   r   r   r   r	  r	  ^      ,GGXJLr   r	  c                       e Zd ZdZdZdZdZy)KhanAcademyUnitIEr	  zkhanacademy:unitzPhttps?://(?:www\.)?khanacademy\.org/(?P<id>(?:[^/]+/){1,2}[^?#/&]+)/?(?:[?#&]|$)rm   Nr   r   r   r   r	  r	  e  s    ,G GeJLr   r	  c                       e Zd ZdZdZy)
KickBaseIEyt_dlp.extractor.kickKickBaseNr   r   r   r   r	  r	  l  r  r   r	  c                        e Zd ZdZdZdZdZdZy)
KickClipIEr	  z
kick:clipszVhttps?://(?:www\.)?kick\.com/[\w-]+(?:/clips/|/?\?(?:[^#]+&)?clip=)(?P<id>clip_[\w-]+)r   rl   Nrw  r   r   r   r	  r	  q  s    %GGnJILr   r	  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )KickIEr	  z	kick:livezZhttps?://(?:www\.)?kick\.com/(?!(?:video|categories|search|auth)(?:[/?#]|$))(?P<id>[\w-]+)r   rl   c                 z    t         j                  |      st        j                  |      rdS t        |   |      S r   )	KickVODIEr4   r	  r   r   s     r   r4   zKickIE.suitable  s5    "++C0J4G4G4LuhSXSZScdgShhr   r   r   r   r$   ra   r=   rf   ro   rr   r4   r   r   s   @r   r	  r	  y  s0    %GGpJILi ir   r	  c                       e Zd ZdZdZdZdZy)KickStarterIEzyt_dlp.extractor.kickstarterKickStarterz=https?://(?:www\.)?kickstarter\.com/projects/(?P<id>[^/]*)/.*rl   Nr   r   r   r   r	  r	    r  r   r	  c                        e Zd ZdZdZdZdZdZy)r	  r	  zkick:vodz[https?://(?:www\.)?kick\.com/[\w-]+/videos/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})r   rl   Nrw  r   r   r   r	  r	    s    %GGtJILr   r	  c                       e Zd ZdZdZdZdZy)KickerIEzyt_dlp.extractor.kickerKickerz5https?://(?:www\.)kicker\.(?:de)/(?P<id>[\w-]+)/videorl   Nr   r   r   r   r	  r	    r	  r   r	  c                        e Zd ZdZdZdZdZdZy)KikaIEyt_dlp.extractor.kikaKikaz=https?://(?:www\.)?kika\.de/[\w/-]+/videos/(?P<id>[a-z-]+\d+)zKiKA.derl   Nr   r   r   r   r	  r	    s    %GGTJGLr   r	  c                       e Zd ZdZdZdZdZy)KikaPlaylistIEr	  KikaPlaylistz5https?://(?:www\.)?kika\.de/[\w-]+/(?P<id>[a-z-]+\d+)rm   Nr   r   r   r   r	  r	    s    %GGLJLr   r	  c                        e Zd ZdZdZdZdZdZy)KinoPoiskIEzyt_dlp.extractor.kinopoisk	KinoPoiskz1https?://(?:www\.)?kinopoisk\.ru/film/(?P<id>\d+)rB  rl   Nrw  r   r   r   r	  r	    s    *GGGJILr   r	  c                       e Zd ZdZdZdZdZy)UnsupportedInfoExtractoryt_dlp.extractor.unsupportedUnsupportedInfoExtractzhttps?://(?:www\.)?(?:)FNr,  r   r   r   r	  r	    s    ,G&G+JGr   r	  c                       e Zd ZdZdZdZdZy)
KnownDRMIEr	  DRMaJ  https?://(?:www\.)?(?:play\.hbomax\.com|channel(?:4|5)\.com|peacocktv\.com|(?:[\w.]+\.)?disneyplus\.com|open\.spotify\.com|tvnz\.co\.nz|oneplus\.ch|artstation\.com/learning/courses|philo\.com|(?:[\w.]+\.)?mech-plus\.com|aha\.video|mubi\.com|vootkids\.com|nowtv\.it/watch|tv\.apple\.com|primevideo\.com|hulu\.com|resource\.inkryptvideos\.com|joyn\.de|amazon\.(?:\w{2}\.)?\w+/gp/video|music\.amazon\.(?:\w{2}\.)?\w+|(?:watch|front)\.njpwworld\.com|qub\.ca/vrai|(?:beta\.)?crunchyroll\.com|viki\.com|deezer\.com|b-ch\.com|ctv\.ca|noovo\.ca|tsn\.ca|paramountplus\.com|(?:m\.)?(?:sony)?crackle\.com|cw(?:tv(?:pr)?|seed)\.com|6play\.fr|rtlplay\.be|play\.rtl\.hr|rtlmost\.hu|plus\.rtl\.de(?!/podcast/)|mediasetinfinity\.es|tv5mondeplus\.com|tv\.rakuten\.co\.jp|watch\.telusoriginals\.com|video\.unext\.jp|www\.web\.nhk|fod\.fujitv\.co\.jp|zee5\.com)FNr,  r   r   r   r	  r	    s    ,GG iJGr   r	  c                       e Zd ZdZdZdZdZy)KnownLiabilityIEr	  	Liabilityz:https?://(?:www\.)?(?:motherless\.\w+|suno\.com|udio\.com)FNr,  r   r   r   r	  r	    s    ,GGRJGr   r	  c                       e Zd ZdZdZdZdZy)KnownPiracyIEr	  Piracyat  https?://(?:www\.)?(?:dood\.(?:to|watch|so|pm|wf|re)|viewsb\.com|filemoon\.sx|hentai\.animestigma\.com|thisav\.com|gounlimited\.to|highstream\.tv|uqload\.com|vedbam\.xyz|vadbam\.netvidlo\.us|wolfstream\.tv|xvideosharing\.com|(?:\w+\.)?viidshar\.com|sxyprn\.com|jable\.tv|91porn\.com|einthusan\.(?:tv|com|ca)|yourupload\.com|xanimu\.com|musicdex\.org|duboku\.io|gofile\.io)FNr,  r   r   r   r	  r	    s    ,GG cJGr   r	  c                       e Zd ZdZdZdZdZy)KommunetvIEzyt_dlp.extractor.kommunetv	Kommunetvz/https?://\w+\.kommunetv\.no/archive/(?P<id>\w+)rl   Nr   r   r   r   r	  r	    s    *GGFJLr   r	  c                       e Zd ZdZdZy)JixieBaseIEzyt_dlp.extractor.jixie	JixieBaseNr   r   r   r   r	  r	    r   r   r	  c                       e Zd ZdZdZdZdZy)KompasVideoIEzyt_dlp.extractor.kompasKompasVideoz<https?://video\.kompas\.com/\w+/(?P<id>\d+)/(?P<slug>[\w-]+)rl   Nr   r   r   r   r
  r
    s    'GGTJLr   r
  c                   $    e Zd ZdZdZdZdZdZdZy)
KrasViewIEzyt_dlp.extractor.krasviewKrasViewz1https?://krasview\.ru/(?:video|embed)/(?P<id>\d+)Fu   Красвьюrl   Nrl  r   r   r   r
  r
    s     )GGFJHGLr   r
  c                       e Zd ZdZdZdZdZy)Ku6IEzyt_dlp.extractor.ku6Ku6z=https?://v\.ku6\.com/show/(?P<id>[a-zA-Z0-9\-\_]+)(?:\.)*htmlrl   Nr   r   r   r   r
  r
        $GGUJLr   r
  c                       e Zd ZdZdZdZdZy)KukuluLiveIEzyt_dlp.extractor.kukululive
KukuluLivez1https?://live\.erinn\.biz/live\.php\?h(?P<id>\d+)rl   Nr   r   r   r   r
  r
    s    +GGIJLr   r
  c                   $    e Zd ZdZdZdZdZdZdZy)KuwoAlbumIEyt_dlp.extractor.kuwoz
kuwo:albumz/https?://(?:www\.)?kuwo\.cn/album/(?P<id>\d+?)/Fu   酷我音乐 - 专辑rm   Nrl  r   r   r   r
  r
    s     %GGEJH%GLr   r
  c                   $    e Zd ZdZdZdZdZdZdZy)KuwoCategoryIEr
  zkuwo:categoryz3https?://yinyue\.kuwo\.cn/yy/cinfo_(?P<id>\d+?).htmFu   酷我音乐 - 分类rm   Nrl  r   r   r   r
  r
    s     %GGIJH%GLr   r
  c                   $    e Zd ZdZdZdZdZdZdZy)KuwoChartIEr
  z
kuwo:chartz5https?://yinyue\.kuwo\.cn/billboard_(?P<id>[^.]+).htmFu   酷我音乐 - 排行榜rm   Nrl  r   r   r   r
  r
  
  s     %GGJJH(GLr   r
  c                       e Zd ZdZdZy)
KuwoBaseIEr
  KuwoBaseNr   r   r   r   r
  r
    r  r   r
  c                   $    e Zd ZdZdZdZdZdZdZy)KuwoIEr
  z	kuwo:songz.https?://(?:www\.)?kuwo\.cn/yinyue/(?P<id>\d+)Fu   酷我音乐rl   Nrl  r   r   r   r
  r
    s     %GGDJHGLr   r
  c                   $    e Zd ZdZdZdZdZdZdZy)KuwoMvIEr
  zkuwo:mvz,https?://(?:www\.)?kuwo\.cn/mv/(?P<id>\d+?)/Fu   酷我音乐 - MVrl   Nrl  r   r   r   r
  r
  !  s     %GGBJH!GLr   r
  c                   $    e Zd ZdZdZdZdZdZdZy)KuwoSingerIEr
  zkuwo:singerz2https?://(?:www\.)?kuwo\.cn/mingxing/(?P<id>[^/]+)Fu   酷我音乐 - 歌手rm   Nrl  r   r   r   r
  r
  *  s     %GGGJH%GLr   r
  c                       e Zd ZdZdZdZdZy)LA7IEyt_dlp.extractor.la7zla7.itz(?x)https?://(?:
        (?:www\.)?la7\.it/([^/]+)/(?:rivedila7|video|news)/|
        tg\.la7\.it/repliche-tgla7\?id=
    )(?P<id>.+)rl   Nr   r   r   r   r
  r
  3  s    $GG aJLr   r
  c                       e Zd ZdZdZdZdZy)LA7PodcastEpisodeIEr
  zla7.it:pod:episodez=https?://(?:www\.)?la7\.it/[^/]+/podcast/([^/]+-)?(?P<id>\d+)rl   Nr   r   r   r   r!
  r!
  :  s    $G"GSJLr   r!
  c                       e Zd ZdZdZdZdZy)LA7PodcastIEr
  zla7.it:podcastz<https?://(?:www\.)?la7\.it/(?P<id>[^/]+)/podcast/?(?:$|[#?])rm   Nr   r   r   r   r#
  r#
  A  s    $GGQJLr   r#
  c                       e Zd ZdZdZy)
LBRYBaseIEyt_dlp.extractor.lbryLBRYBaseNr   r   r   r   r%
  r%
  H  r  r   r%
  c                        e Zd ZdZdZdZdZdZy)LBRYChannelIEr&
  zlbry:channelzs(?x)(?:https?://(?:www\.)?(?:lbry\.tv|odysee\.com)/|lbry://)(?P<id>@[^$@:/?#&]+(?:[:#][0-9a-f]{1,40})?)/?(?:[?&]|$)zodysee.com channelsrm   Nr   r   r   r   r)
  r)
  M  s    %GG JJ#GLr   r)
  c                        e Zd ZdZdZdZdZdZy)LBRYIEr&
  lbryz(?x)(?:https?://(?:www\.)?(?:lbry\.tv|odysee\.com)/|lbry://)
        (?:\$/(?:download|embed)/)?
        (?P<id>
            [^$@:/?#]+/[0-9a-f]{1,40}
            |(?:@[^$@:/?#&]+(?:[:#][0-9a-f]{1,40})?/)?[^$@:/?#&]+(?:[:#][0-9a-f]{1,40})?
        )z
odysee.comrl   Nr   r   r   r   r+
  r+
  U  s    %GG VJGLr   r+
  c                        e Zd ZdZdZdZdZdZy)LBRYPlaylistIEr&
  zlbry:playlistz_(?x)(?:https?://(?:www\.)?(?:lbry\.tv|odysee\.com)/|lbry://)\$/(?:play)?list/(?P<id>[0-9a-f-]+)zodysee.com playlistsrm   Nr   r   r   r   r.
  r.
  ]  s    %GGvJ$GLr   r.
  c                       e Zd ZdZdZdZdZy)LCIIEzyt_dlp.extractor.lciLCIzLhttps?://(?:www\.)?(?:lci|tf1info)\.fr/(?:[^/?#]+/)+[\w-]+-(?P<id>\d+)\.htmlrl   Nr   r   r   r   r0
  r0
  e  s    $GGdJLr   r0
  c                        e Zd ZdZdZdZdZdZy)LEGOIEzyt_dlp.extractor.legoLEGOzthttps?://(?:www\.)?lego\.com/(?P<locale>[a-z]{2}-[a-z]{2})/(?:[^/]+/)*videos/(?:[^/]+/)*[^/?#]+-(?P<id>[0-9a-f]{32})   rl   Nrw  r   r   r   r3
  r3
  l  s    %GG JJILr   r3
  c                       e Zd ZdZdZdZdZy)
LRTRadioIEyt_dlp.extractor.lrtLRTRadiozIhttps?://(?:www\.)?lrt\.lt/radioteka/irasas/(?P<id>\d+)/(?P<path>[^?#/]+)rl   Nr   r   r   r   r7
  r7
  t  r  r   r7
  c                       e Zd ZdZdZdZdZy)LRTStreamIEr8
  	LRTStreamz>https?://(?:www\.)?lrt\.lt/mediateka/tiesiogiai/(?P<id>[\w-]+)rl   Nr   r   r   r   r;
  r;
  {  s    $GGTJLr   r;
  c                        e Zd ZdZdZddgZdZy)LRTVODIEr8
  LRTVODzGhttps?://(?:(?:www|archyvai)\.)?lrt\.lt/mediateka/irasas/(?P<id>[0-9]+)zahttps?://(?:(?:www|archyvai)\.)?lrt\.lt/mediateka/video/[^?#]+\?(?:[^#]*&)?episode=(?P<id>[0-9]+)rl   Nr   r   r   r   r>
  r>
    s#    $GG]  `F  GJLr   r>
  c                       e Zd ZdZdZdZdZy)LSMLREmbedIEyt_dlp.extractor.lsm
LSMLREmbedz(?x)
        https?://(?:
            (?:latvijasradio|lr1|lr2|klasika|lr4|naba|radioteatris)\.lsm|
            pieci
        )\.lv/[^/?#]+/(?:
            pleijeris|embed
        )/?\?(?:[^#]+&)?(?:show|id)=(?P<id>\d+)r   Nr   r   r   r   rA
  rA
    s    $GG yJLr   rA
  c                       e Zd ZdZdZdZdZy)LSMLTVEmbedIErB
  LSMLTVEmbedz8https?://ltv\.lsm\.lv/embed\?(?:[^#]+&)?c=(?P<id>[^#&]+)rl   Nr   r   r   r   rE
  rE
        $GGNJLr   rE
  c                       e Zd ZdZdZdZdZy)LSMReplayIErB
  	LSMReplayz_https?://replay\.lsm\.lv/[^/?#]+/(?:skaties/|klausies/)?(?:ieraksts|statja)/[^/?#]+/(?P<id>\d+)rl   Nr   r   r   r   rI
  rI
    s    $GGuJLr   rI
  c                        e Zd ZdZdZdZdZdZy)LaXarxaMesIEzyt_dlp.extractor.laxarxames
LaXarxaMeszShttps?://(?:www\.)?laxarxames\.cat/(?:[^/?#]+/)*?(player|movie-details)/(?P<id>\d+)
laxarxamesrl   Nr   r   r   r   rL
  rL
    s    +GGiJ!NLr   rL
  c                       e Zd ZdZdZy)LaracastsBaseIEyt_dlp.extractor.laracastsLaracastsBaseNr   r   r   r   rP
  rP
    r  r   rP
  c                       e Zd ZdZdZdZdZy)LaracastsIErQ
  	laracastszPhttps?://(?:www\.)?laracasts\.com/series/(?P<id>[\w-]+/episodes/\d+)/?(?:[?#]|$)rl   Nr   r   r   r   rT
  rT
    s    *GGgJLr   rT
  c                       e Zd ZdZdZdZdZy)LaracastsPlaylistIErQ
  zlaracasts:serieszChttps?://(?:www\.)?laracasts\.com/series/(?P<id>[\w-]+)/?(?:[?#]|$)rm   Nr   r   r   r   rW
  rW
    s    *G GYJLr   rW
  c                       e Zd ZdZdZdZdZy)LastFMIEyt_dlp.extractor.lastfmLastFMz>https?://(?:www\.)?last\.fm/music(?:/[^/]+){2}/(?P<id>[^/#?]+)rl   Nr   r   r   r   rY
  rY
    r&  r   rY
  c                       e Zd ZdZdZy)LastFMPlaylistBaseIErZ
  LastFMPlaylistBaseNr   r   r   r   r]
  r]
    rJ  r   r]
  c                       e Zd ZdZdZdZdZy)LastFMPlaylistIErZ
  LastFMPlaylistzLhttps?://(?:www\.)?last\.fm/(music|tag)/(?P<id>[^/]+)(?:/[^/]+)?/?(?:[?#]|$)rm   Nr   r   r   r   r`
  r`
    s    'GGaJLr   r`
  c                       e Zd ZdZdZdZdZy)LastFMUserIErZ
  
LastFMUserz@https?://(?:www\.)?last\.fm/user/[^/]+/playlists/(?P<id>[^/#?]+)rm   Nr   r   r   r   rc
  rc
    s    'GGUJLr   rc
  c                        e Zd ZdZdZdZdZdZy)LcpIEyt_dlp.extractor.lcpLcpz3https?://(?:www\.)?lcp\.fr/(?:[^/]+/)*(?P<id>[^/]+)Frl   Nr]  r   r   r   rf
  rf
    s    $GGHJHLr   rf
  c                        e Zd ZdZdZdZdZdZy)	LcpPlayIErg
  LcpPlayzLhttps?://play\.lcp\.fr/embed/(?P<id>[^/]+)/(?P<account_id>[^/]+)/[^/]+/[^/]+Frl   Nr]  r   r   r   rj
  rj
    s    $GGaJHLr   rj
  c                       e Zd ZdZdZdZdZy)LeFigaroVideoEmbedIEyt_dlp.extractor.lefigaroLeFigaroVideoEmbedz8https?://video\.lefigaro\.fr/embed/[^?#]+/(?P<id>[\w-]+)rl   Nr   r   r   r   rm
  rm
    s    )G"GNJLr   rm
  c                       e Zd ZdZdZdZdZy)LeFigaroVideoSectionIErn
  LeFigaroVideoSectionz>https?://video\.lefigaro\.fr/figaro/(?P<id>[\w-]+)/?(?:[#?]|$)rm   Nr   r   r   r   rq
  rq
    s    )G$GTJLr   rq
  c                        e Zd ZdZdZdZdZdZy)LeIEyt_dlp.extractor.leecoLezlhttps?://(?:www\.le\.com/ptv/vplay|(?:sports\.le|(?:www\.)?lesports)\.com/(?:match|video))/(?P<id>\d+)\.htmlu	   乐视网rl   Nr   r   r   r   rt
  rt
    s    &GG GJGLr   rt
  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )LePlaylistIEru
  
LePlaylistz;https?://[a-z]+\.le\.com/(?!video)[a-z]+/(?P<id>[a-z0-9_]+)rm   c                 P    t         j                  |      rdS t        |   |      S r   )rt
  r4   r   r   s     r   r4   zLePlaylistIE.suitable  #    c*uE0@0EEr   r   r   s   @r   rx
  rx
    s+    &GGPJLF Fr   rx
  c                       e Zd ZdZdZdZdZy)LearningOnScreenIEz!yt_dlp.extractor.learningonscreenLearningOnScreenzFhttps?://learningonscreen\.ac\.uk/ondemand/index\.php/prog/(?P<id>\w+)rl   Nr   r   r   r   r}
  r}
    s    1G G]JLr   r}
  c                        e Zd ZdZdZdZdZdZy)Lecture2GoIEzyt_dlp.extractor.lecture2go
Lecture2GozDhttps?://lecture2go\.uni-hamburg\.de/veranstaltungen/-/v/(?P<id>\d+)Frl   Nr]  r   r   r   r
  r
    s    +GGZJHLr   r
  c                       e Zd ZdZdZdZy)LecturioBaseIEyt_dlp.extractor.lecturioLecturioBaselecturioNr{   r   r   r   r
  r
    r  r   r
  c                        e Zd ZdZdZdZdZdZy)LecturioCourseIEr
  LecturioCoursezZhttps?://app\.lecturio\.com/(?:[^/]+/(?P<nt>[^/?#&]+)\.course|(?:#/)?course/c/(?P<id>\d+))r
  rm   Nr   r   r   r   r
  r
    s    )GGqJNLr   r
  c                       e Zd ZdZdZdZdZy)LecturioDeCourseIEr
  LecturioDeCoursez<https?://(?:www\.)?lecturio\.de/[^/]+/(?P<id>[^/?#&]+)\.kursr
  NrS  r   r   r   r
  r
  !  s    )G GRJNr   r
  c                        e Zd ZdZdZdZdZdZy)
LecturioIEr
  Lecturioa?  (?x)
                    https://
                        (?:
                            app\.lecturio\.com/([^/?#]+/(?P<nt>[^/?#&]+)\.lecture|(?:\#/)?lecture/c/\d+/(?P<id>\d+))|
                            (?:www\.)?lecturio\.de/(?:[^/?#]+/)+(?P<nt_de>[^/?#&]+)\.vortrag
                        )
                    r
  rl   Nr   r   r   r   r
  r
  (  s    )GG bJNLr   r
  c                       e Zd ZdZdZdZdZy)	LemondeIEzyt_dlp.extractor.lemondeLemondez=https?://(?:.+?\.)?lemonde\.fr/(?:[^/]+/)*(?P<id>[^/]+)\.htmlrl   Nr   r   r   r   r
  r
  0  ra  r   r
  c                        e Zd ZdZdZdZdZdZy)LentaIEzyt_dlp.extractor.lentaLentaz?https?://(?:www\.)?lenta\.ru/[^/]+/\d+/\d+/\d+/(?P<id>[^/?#&]+)Frl   Nr]  r   r   r   r
  r
  7      &GGWJHLr   r
  c                       e Zd ZdZdZdZdZy)LiTVIEzyt_dlp.extractor.litvLiTVzahttps?://(?:www\.)?litv\.tv/(?:[^/?#]+/watch/|vod/[^/?#]+/content\.do\?content_id=)(?P<id>[\w-]+)r   Nr   r   r   r   r
  r
  ?  s    %GGyJLr   r
  c                        e Zd ZdZdZdZdZdZy)LibraryOfCongressIEz"yt_dlp.extractor.libraryofcongressloczchttps?://(?:www\.)?loc\.gov/(?:item/|today/cyberlc/feature_wdesc\.php\?.*\brec=)(?P<id>[0-9a-z_.]+)zLibrary of Congressrl   Nr   r   r   r   r
  r
  F  s    2GG{J#GLr   r
  c                       e Zd ZdZdZdZdZy)LibsynIEzyt_dlp.extractor.libsynLibsynzO(?P<mainurl>https?://html5-player\.libsyn\.com/embed/episode/id/(?P<id>[0-9]+))rl   Nr   r   r   r   r
  r
  N  s    'GGdJLr   r
  c                       e Zd ZdZdZdZdZy)LifeEmbedIEyt_dlp.extractor.lifenewsz
life:embedz<https?://embed\.life\.ru/(?:embed|video)/(?P<id>[\da-f]{32})rl   Nr   r   r   r   r
  r
  U  s    )GGRJLr   r
  c                        e Zd ZdZdZdZdZdZy)
LifeNewsIEr
  lifez%https?://life\.ru/t/[^/]+/(?P<id>\d+)zLife.rur   Nr   r   r   r   r
  r
  \  s    )GG:JGLr   r
  c                       e Zd ZdZdZdZdZy)LikeeIEyt_dlp.extractor.likeelikeezR(?x)https?://(www\.)?likee\.video/(?:(?P<channel_name>[^/]+)/video/|v/)(?P<id>\w+)rl   Nr   r   r   r   r
  r
  d      &GGhJLr   r
  c                       e Zd ZdZdZdZdZy)LikeeUserIEr
  z
likee:userz.https?://(www\.)?likee\.video/(?P<id>[^/]+)/?$rm   Nr   r   r   r   r
  r
  k  s    &GGCJLr   r
  c                       e Zd ZdZdZdZdZy)LinkedInEventsIEyt_dlp.extractor.linkedinzlinkedin:eventsz6https?://(?:www\.)?linkedin\.com/events/(?P<id>[\w-]+)rl   Nr   r   r   r   r
  r
  r      )GGLJLr   r
  c                        e Zd ZdZdZddgZdZy)
LinkedInIEr
  LinkedInzLhttps?://(?:www\.)?linkedin\.com/posts/[^/?#]+-(?P<id>\d+)-\w{4}/?(?:[?#]|$)zHhttps?://(?:www\.)?linkedin\.com/feed/update/urn:li:activity:(?P<id>\d+)rl   Nr   r   r   r   r
  r
  y  #    )GGd  gt  uJLr   r
  c                       e Zd ZdZdZy)LinkedInLearningBaseIEr
  LinkedInLearningBaseNr   r   r   r   r
  r
    r  r   r
  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )LinkedInLearningCourseIEr
  zlinkedin:learning:coursez9https?://(?:www\.)?linkedin\.com/learning/(?P<id>[^/?#]+)rm   c                 P    t         j                  |      rdS t        |   |      S r   )LinkedInLearningIEr4   r   r   s     r   r4   z!LinkedInLearningCourseIE.suitable  r  r   r   r   s   @r   r
  r
    s+    )G(GNJLT Tr   r
  c                       e Zd ZdZdZdZdZy)r
  r
  zlinkedin:learningzPhttps?://(?:www\.)?linkedin\.com/learning/(?P<course_slug>[^/]+)/(?P<id>[^/?#]+)rl   Nr   r   r   r   r
  r
    s    )G!GeJLr   r
  c                       e Zd ZdZdZdZdZy)
Liputan6IEzyt_dlp.extractor.liputan6Liputan6z7https?://www\.liputan6\.com/\w+/read/\d+/(?P<id>[\w-]+)rl   Nr   r   r   r   r
  r
    s    )GGOJLr   r
  c                       e Zd ZdZdZdZdZy)ListenNotesIEzyt_dlp.extractor.listennotesListenNoteszDhttps?://(?:www\.)?listennotes\.com/podcasts/[^/]+/[^/]+-(?P<id>.+)/rl   Nr   r   r   r   r
  r
    s    ,GGYJLr   r
  c                        e Zd ZdZdZdZdZdZy)LiveJournalIEzyt_dlp.extractor.livejournalLiveJournalzHhttps?://(?:[^.]+\.)?livejournal\.com/video/album/\d+.+?\bid=(?P<id>\d+)Frl   Nr]  r   r   r   r
  r
    s    ,GG`JHLr   r
  c                       e Zd ZdZdZdZdZy)LivestreamfailsIEz yt_dlp.extractor.livestreamfailsLivestreamfailszDhttps?://(?:www\.)?livestreamfails\.com/(?:clip|post)/(?P<id>[0-9]+)rl   Nr   r   r   r   r
  r
    s    0GGYJLr   r
  c                       e Zd ZdZdZdZdZy)LnkIEzyt_dlp.extractor.lnkLnkz,https?://(?:www\.)?lnk\.lt/[^/]+/(?P<id>\d+)rl   Nr   r   r   r   r
  r
    s    $GGBJLr   r
  c                       e Zd ZdZdZy)StreaksBaseIEyt_dlp.extractor.streaksStreaksBaseNr   r   r   r   r
  r
    r   r   r
  c                       e Zd ZdZdZy)LocipoBaseIEyt_dlp.extractor.locipo
LocipoBaseNr   r   r   r   r
  r
    rE  r   r
  c                        e Zd ZdZdZddgZdZy)LocipoIEr
  LocipozMhttps?://locipo\.jp/creative/(?P<id>[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12})z[https?://locipo\.jp/embed/?\?(?:[^#]+&)?id=(?P<id>[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12})r   Nr   r   r   r   r
  r
    s#    'GGe  hJ  KJLr   r
  c                        e Zd ZdZdZddgZdZy)LocipoPlaylistIEr
  LocipoPlaylistzWhttps?://locipo\.jp/(?P<type>playlist)/(?P<id>[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12})z0https?://locipo\.jp/(?P<type>series)/(?P<id>\d+)rm   Nr   r   r   r   r
  r
    s#    'GGo  rf  gJLr   r
  c                       e Zd ZdZdZdZdZy)LocoIEzyt_dlp.extractor.locoLocozGhttps?://(?:www\.)?loco\.com/(?P<type>streamers|stream)/(?P<id>[^/?#]+)rl   Nr   r   r   r   r
  r
    s    %GG\JLr   r
  c                        e Zd ZdZdZdZdZdZy)LoomFolderIEyt_dlp.extractor.loomzloom:folderz=https?://(?:www\.)?loom\.com/share/folder/(?P<id>[\da-f]{32})Frm   Nr]  r   r   r   r
  r
    s    %GGSJHLr   r
  c                       e Zd ZdZdZdZdZy)LoomIEr
  loomz@https?://(?:www\.)?loom\.com/(?:share|embed)/(?P<id>[\da-f]{32})rl   Nr   r   r   r   r
  r
    s    %GGVJLr   r
  c                       e Zd ZdZdZy)NuevoBaseIEzyt_dlp.extractor.nuevo	NuevoBaseNr   r   r   r   r
  r
    r   r   r
  c                        e Zd ZdZdZdZdZdZy)LoveHomePornIEzyt_dlp.extractor.lovehomepornLoveHomePornzThttps?://(?:www\.)?lovehomeporn\.com/video/(?P<id>\d+)(?:/(?P<display_id>[^/?#&]+))?r   rl   Nrw  r   r   r   r
  r
    s    -GGjJILr   r
  c                       e Zd ZdZdZdZdZy)LumniIEzyt_dlp.extractor.lumniLumniz1https?://(?:www\.)?lumni\.fr/video/(?P<id>[\w-]+)rl   Nr   r   r   r   r
  r
    r  r   r
  c                        e Zd ZdZdZdZdZdZy)MBNIEzyt_dlp.extractor.mbnMBNzWhttps?://(?:www\.)?mbn\.co\.kr/vod/programContents/preview(?:list)?/\d+/\d+/(?P<id>\d+)u   mbn.co.kr (매일방송)rl   Nr   r   r   r   r
  r
    s    $GGpJ(GLr   r
  c                        e Zd ZdZdZdZdZdZy)MDRIEzyt_dlp.extractor.mdrMDRzEhttps?://(?:www\.)?mdr\.de/(?:.*)/[a-z-]+-?(?P<id>\d+)(?:_.+?)?\.htmlzMDR.DErl   Nr   r   r   r   r
  r
    s    $GG\JGLr   r
  c                        e Zd ZdZdZdZdZdZy)MGTVIEzyt_dlp.extractor.mgtvMangoTVzChttps?://(?:w(?:ww)?\.)?mgtv\.com/[bv]/(?:[^/]+/)*(?P<id>\d+)\.htmlu   芒果TVrl   Nr   r   r   r   r
  r
    s    %GGZJGLr   r
  c                       e Zd ZdZdZdZdZy)MLBArticleIEyt_dlp.extractor.mlb
MLBArticlez*https?://www\.mlb\.com/news/(?P<id>[\w-]+)rm   Nr   r   r   r   r
  r
    s    $GG@JLr   r
  c                       e Zd ZdZdZy)	MLBBaseIEr
  MLBBaseNr   r   r   r   r
  r
    rk  r   r
  c                       e Zd ZdZdZdZdZy)MLBIEr
  MLBa6  (?x)
                    https?://
                        (?:[\da-z_-]+\.)*mlb\.com/
                        (?:
                            (?:
                                (?:[^/]+/)*video/[^/]+/c-|
                                (?:
                                    shared/video/embed/(?:embed|m-internal-embed)\.html|
                                    (?:[^/]+/)+(?:play|index)\.jsp|
                                )\?.*?\bcontent_id=
                            )
                            (?P<id>\d+)
                        )
                    rl   Nr   r   r   r   r
  r
  !  s    $GG _	JLr   r
  c                        e Zd ZdZdZdZdZdZy)MLBTVIEr
  MLBTVz-https?://(?:www\.)?mlb\.com/tv/g(?P<id>\d{6})mlbrl   Nr   r   r   r   r   r   (  s    $GGCJNLr   r   c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )
MLBVideoIEr
  MLBVideoz=https?://(?:www\.)?mlb\.com/(?:[^/]+/)*video/(?P<id>[^/?&#]+)rl   c                 P    t         j                  |      rdS t        |   |      S r   )r
  r4   r   r   s     r   r4   zMLBVideoIE.suitable6  #    s+uF1A#1FFr   r   r   s   @r   r  r  0  s+    $GGRJLG Gr   r  c                       e Zd ZdZdZdZdZy)MLSSoccerIEzyt_dlp.extractor.mlssoccer	MLSSoccera|  https?://(?:www\.)?(?:(?:cfmontreal|intermiamicf|lagalaxy|lafc|houstondynamofc|dcunited|atlutd|mlssoccer|fcdallas|columbuscrew|coloradorapids|fccincinnati|chicagofirefc|austinfc|nashvillesc|whitecapsfc|sportingkc|soundersfc|sjearthquakes|rsl|timbers|philadelphiaunion|orlandocitysc|newyorkredbulls|nycfc)\.com|(?:torontofc)\.ca|(?:revolutionsoccer)\.net)/video/#?(?P<id>[^/&$#?]+)rl   Nr   r   r   r   r	  r	  ;  s    *GG TJLr   r	  c                       e Zd ZdZdZdZy)MNetTVBaseIErH  
MNetTVBasemnettvNr{   r   r   r   r  r  B      'GGNr   r  c                       e Zd ZdZdZdZdZy)MNetTVIErH  MNetTVz(?x)https?://(?:www\.)?tvplus\.m\-net\.de/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  NrS  r   r   r   r  r  H  s    'GG qJNr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )MNetTVLiveIErH  
MNetTVLivez(?x)https?://(?:www\.)?tvplus\.m\-net\.de/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 P    t         j                  |      rdS t        |   |      S r   )r  r4   r   r   s     r   r4   zMNetTVLiveIE.suitableU  %     ))#.uIEG4DS4IIr   r  r   s   @r   r  r  O  s.    'GG fJNJ Jr   r  c                       e Zd ZdZdZdZdZy)MNetTVRecordingsIErH  MNetTVRecordingszy(?x)https?://(?:www\.)?tvplus\.m\-net\.de/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  NrS  r   r   r   r  r  Z  s    'G G VJNr   r  c                       e Zd ZdZdZdZdZy)MSNIEzyt_dlp.extractor.msnMSNzhttps?://(?:(?:www|preview)\.)?msn\.com/(?P<locale>[a-z]{2}-[a-z]{2})/(?:[^/?#]+/)+(?P<display_id>[^/?#]+)/[a-z]{2}-(?P<id>[\da-zA-Z]+)r   Nr   r   r   r   r  r  a  s    $GG ^JLr   r  c                       e Zd ZdZdZdZdZy)MTVIEr  mtvzGhttps?://(?:www\.)?mtv\.com/(?:video-clips|episodes)/(?P<id>[\da-z]{6})rl   Nr   r   r   r   r  r  h  r  r   r  c                        e Zd ZdZdZdZdZdZy)MTVUutisetArticleIEr	  MTVUutisetArticlez<https?://(?:www\.)mtvuutiset\.fi/artikkeli/[^/]+/(?P<id>\d+)Frl   Nr]  r   r   r   r"  r"  o  s    $G!GRJHLr   r"  c                       e Zd ZdZdZdZdZy)MaarivIEzyt_dlp.extractor.maarivzmaariv.co.ilzQhttps?://player\.maariv\.co\.il/public/player\.html\?(?:[^#]+&)?media=(?P<id>\d+)rl   Nr   r   r   r   r%  r%  w  s    'GGjJLr   r%  c                        e Zd ZdZdZdZdZdZy)MagellanTVIEzyt_dlp.extractor.magellantv
MagellanTVzAhttps?://(?:www\.)?magellantv\.com/(?:watch|video)/(?P<id>[\w-]+)r  rl   Nrw  r   r   r   r'  r'  ~  s    +GGWJILr   r'  c                       e Zd ZdZdZdZdZy)MagentaMusikIEzyt_dlp.extractor.magentamusikMagentaMusikz3https?://(?:www\.)?magentamusik\.de/(?P<id>[^/?#]+)rl   Nr   r   r   r   r*  r*    r[	  r   r*  c                        e Zd ZdZdZdZdZdZy)MailRuIEyt_dlp.extractor.mailrumailrua  (?x)
                    https?://
                        (?:(?:www|m|videoapi)\.)?my\.mail\.ru/+
                        (?:
                            video/.*\#video=/?(?P<idv1>(?:[^/]+/){3}\d+)|
                            (?:videos/embed/)?(?:(?P<idv2prefix>(?:[^/]+/+){2})(?:video/(?:embed/)?)?(?P<idv2suffix>[^/]+/\d+))(?:\.html)?|
                            (?:video/embed|\+/video/meta)/(?P<metaid>\d+)
                        )
                    u   Видео@Mail.Rurl   Nr   r   r   r   r-  r-    s    'GG rJ"GLr   r-  c                       e Zd ZdZdZy)MailRuMusicSearchBaseIEr.  MailRuMusicSearchBaseNr   r   r   r   r1  r1    s    'G%Gr   r1  c                        e Zd ZdZdZdZdZdZy)MailRuMusicIEr.  zmailru:musicz>https?://my\.mail\.ru/+music/+songs/+[^/?#&]+-(?P<id>[\da-f]+)   Музыка@Mail.Rurl   Nr   r   r   r   r4  r4    s    'GGTJ$GLr   r4  c                        e Zd ZdZdZdZdZdZy)MailRuMusicSearchIEr.  zmailru:music:searchz6https?://my\.mail\.ru/+music/+search/+(?P<id>[^/?#&]+)r5  rm   Nr   r   r   r   r7  r7    s    'G#GKJ$GLr   r7  c                        e Zd ZdZdZdZdZdZy)MainStreamingIEzyt_dlp.extractor.mainstreamingMainStreamingzchttps?://(?:webtools-?)?(?P<host>[A-Za-z0-9-]*\.msvdn\.net)/(?:embed|amp_embed|content)/(?P<id>\w+)zMainStreaming Playerr   Nr   r   r   r   r9  r9    s    .GGyJ$GLr   r9  c                       e Zd ZdZdZdZy)MangomoloBaseIEyt_dlp.extractor.mangomoloMangomoloBasezl(?:https?:)?//(?:admin\.mangomolo\.com/analytics/index\.php/customers/embed/|player\.mangomolo\.com/v1/)NoneNr  r   r   r   r<  r<    s    *GG EJr   r<  c                       e Zd ZdZdZdZy)MangomoloLiveIEr=  zmangomolo:livez(?:https?:)?//(?:admin\.mangomolo\.com/analytics/index\.php/customers/embed/|player\.mangomolo\.com/v1/)(?:live|index)\?.*?\bchannelid=(?P<id>(?:[A-Za-z0-9+/=]|%2B|%2F|%3D)+)Nr  r   r   r   r@  r@    s    *GG IJr   r@  c                       e Zd ZdZdZdZdZy)MangomoloVideoIEr=  zmangomolo:videoz(?:https?:)?//(?:admin\.mangomolo\.com/analytics/index\.php/customers/embed/|player\.mangomolo\.com/v1/)video\?.*?\bid=(?P<id>\d+)rl   Nr   r   r   r   rB  rB    s    *GG ^JLr   rB  c                       e Zd ZdZdZdZdZy)
ManyVidsIEzyt_dlp.extractor.manyvidsManyVidsz6(?i)https?://(?:www\.)?manyvids\.com/video/(?P<id>\d+)rl   Nr   r   r   r   rD  rD    s    )GGLJLr   rD  c                       e Zd ZdZdZdZdZy)	MaoriTVIEzyt_dlp.extractor.maoritvMaoriTVzIhttps?://(?:www\.)?maoritelevision\.com/shows/(?:[^/]+/)+(?P<id>[^/?&#]+)rl   Nr   r   r   r   rG  rG        (GG^JLr   rG  c                        e Zd ZdZdZdZdZdZy)	MarkizaIEyt_dlp.extractor.markizaMarkizaz]https?://(?:www\.)?videoarchiv\.markiza\.sk/(?:video/(?:[^/]+/)*|embed/)(?P<id>\d+)(?:[_/]|$)Fr   Nr]  r   r   r   rK  rK    s    (GGtJHLr   rK  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )MarkizaPageIErL  MarkizaPagezOhttps?://(?:www\.)?(?:(?:[^/]+\.)?markiza|tvnoviny)\.sk/(?:[^/]+/)*(?P<id>\d+)_Frl   c                 P    t         j                  |      rdS t        |   |      S r   )rK  r4   r   r   s     r   r4   zMarkizaPageIE.suitable  r   r   r   r   r   r$   ra   r=   rE   ro   rr   r4   r   r   s   @r   rO  rO    s0    (GGfJHLK Kr   rO  c                       e Zd ZdZdZdZdZy)MassengeschmackTVIEz"yt_dlp.extractor.massengeschmacktvzmassengeschmack.tvz;https?://(?:www\.)?massengeschmack\.tv/play/(?P<id>[^?&#]+)rl   Nr   r   r   r   rT  rT    s    2G"GPJLr   rT  c                       e Zd ZdZdZdZdZy)	MastersIEzyt_dlp.extractor.mastersMasterszShttps?://(?:www\.)?masters\.com/en_US/watch/(?P<date>\d{4}-\d{2}-\d{2})/(?P<id>\d+)rl   Nr   r   r   r   rV  rV    s    (GGlJLr   rV  c                        e Zd ZdZdZddgZdZy)	MatchTVIEzyt_dlp.extractor.matchtvMatchTVz'https?://matchtv\.ru/on-air/?(?:$|[?#])z:https?://video\.matchtv\.ru/iframe/channel/106/?(?:$|[?#])rl   Nr   r   r   r   rY  rY    s    (GG<>|}JLr   rY  c                       e Zd ZdZdZdZdZy)
MatchiTVIEzyt_dlp.extractor.matchitvMatchiTVzHhttps?://(?:www\.)?matchi\.tv/watch/?\?(?:[^#]+&)?s=(?P<id>[0-9a-zA-Z]+)rl   Nr   r   r   r   r\  r\    s    )GG^JLr   r\  c                       e Zd ZdZdZy)
MaveBaseIEyt_dlp.extractor.maveMaveBaseNr   r   r   r   r_  r_    r  r   r_  c                       e Zd ZdZdZdZdZy)MaveChannelIEr`  zmave:channelz2https?://(?P<id>[\w-]+)\.mave\.digital/?(?:$|[?#])rm   Nr   r   r   r   rc  rc    s    %GGHJLr   rc  c                        e Zd ZdZdZdZdZdZy)MaveIEr`  mavezGhttps?://(?P<channel_id>[\w-]+)\.mave\.digital/ep-(?P<episode_code>\d+)r   rl   Nrw  r   r   r   re  re    s    %GG^JILr   re  c                       e Zd ZdZdZdZdZy)	MeWatchIEyt_dlp.extractor.togglemewatchzEhttps?://(?:(?:www|live)\.)?mewatch\.sg/watch/[^/?#&]+-(?P<id>[0-9]+)rl   Nr   r   r   r   rh  rh    s    'GGZJLr   rh  c                       e Zd ZdZdZdZdZy)	MedalTVIEzyt_dlp.extractor.medaltvMedalTVzBhttps?://(?:www\.)?medal\.tv/games/[^/?#&]+/clips/(?P<id>[^/?#&]+)rl   Nr   r   r   r   rl  rl    r  r   rl  c                       e Zd ZdZdZdZdZy)MediaKlikkIEzyt_dlp.extractor.mediaklikk
MediaKlikkz(?x)https?://(?:www\.)?
                        (?:mediaklikk|m4sport|hirado)\.hu/.*?(?:videok?|cikk)/
                        (?:(?P<year>[0-9]{4})/(?P<month>[0-9]{1,2})/(?P<day>[0-9]{1,2})/)?
                        (?P<id>[^/#?_]+)rl   Nr   r   r   r   ro  ro  %  s    +GG CJLr   ro  c                       e Zd ZdZdZy)MediaStreamBaseIEyt_dlp.extractor.mediastreamMediaStreamBaseNr   r   r   r   rr  rr  ,  r  r   rr  c                       e Zd ZdZdZdZdZy)MediaStreamIErs  MediaStreamz6https?://mdstrm\.com/(?:embed|live-stream)/(?P<id>\w+)rl   Nr   r   r   r   rv  rv  1  rP  r   rv  c                       e Zd ZdZdZdZdZy)MediaWorksNZVODIEzyt_dlp.extractor.mediaworksnzMediaWorksNZVODzThttps?://vodupload-api\.mediaworks\.nz/library/asset/published/(?P<id>[A-Za-z0-9-]+)rl   Nr   r   r   r   ry  ry  8  s    -GGiJLr   ry  c                       e Zd ZdZdZdZdZy)
MediaiteIEzyt_dlp.extractor.mediaiteMediaitez;https?://(?:www\.)?mediaite\.com(?!/category)(?:/[\w-]+){2}rl   Nr   r   r   r   r|  r|  ?  s    )GGQJLr   r|  c                       e Zd ZdZdZy)MedialaanBaseIEyt_dlp.extractor.medialaanMedialaanBaseNr   r   r   r   r  r  F  r  r   r  c                       e Zd ZdZdZdZdZy)MedialaanIEr  	MedialaanaA  (?x)
                    https?://
                        (?:
                            (?:embed\.)?mychannels.video/embed/|
                            embed\.mychannels\.video/(?:s(?:dk|cript)/)?production/|
                            (?:www\.)?(?:
                                (?:
                                    7sur7|
                                    demorgen|
                                    hln|
                                    joe|
                                    qmusic
                                )\.be|
                                (?:
                                    [abe]d|
                                    bndestem|
                                    destentor|
                                    gelderlander|
                                    pzc|
                                    tubantia|
                                    volkskrant
                                )\.nl
                            )/videos?/(?:[^/?#]+/)*[^/?&#]+(?:-|~p)
                        )
                        (?P<id>\d+)
                    rl   Nr   r   r   r   r  r  K  s    *GG uJLr   r  c                       e Zd ZdZdZdZdZy)
MediasetIEyt_dlp.extractor.mediasetMediaseta  (?x)
                    (?:
                        mediaset:|
                        https?://
                            (?:\w+\.)+mediaset\.it/
                            (?:
                                (?:video|on-demand|movie)/(?:[^/]+/)+[^/]+_|
                                player/(?:v\d+/)?index\.html\?\S*?\bprogramGuid=
                            )
                    )(?P<id>F[0-9A-Z]{15})
                    rl   Nr   r   r   r   r  r  R  s    )GG WJLr   r  c                       e Zd ZdZdZdZdZy)MediasetShowIEr  MediasetShowa  (?x)
                    (?:
                        https?://
                            (\w+\.)+mediaset\.it/
                            (?:
                                (?:fiction|programmi-tv|serie-tv|kids)/(?:.+?/)?
                                    (?:[a-z-]+)_SE(?P<id>\d{12})
                                    (?:,ST(?P<st>\d{12}))?
                                    (?:,sb(?P<sb>\d{9}))?$
                            )
                    )
                    rm   Nr   r   r   r   r  r  Y  s    )GG FJLr   r  c                       e Zd ZdZdZdZdZy)MediasiteCatalogIEyt_dlp.extractor.mediasiteMediasiteCatalogaC  (?xi)
                        (?P<url>https?://[^/]+/Mediasite)
                        /Catalog/Full/
                        (?P<catalog_id>(?:[0-9a-f]{32,34}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12,14}))
                        (?:
                            /(?P<current_folder_id>(?:[0-9a-f]{32,34}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12,14}))
                            /(?P<root_dynamic_folder_id>(?:[0-9a-f]{32,34}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12,14}))
                        )?
                    rm   Nr   r   r   r   r  r  `  s    *G G _	JLr   r  c                       e Zd ZdZdZdZdZy)MediasiteIEr  	Mediasitez(?xi)https?://[^/]+/Mediasite/(?:Play|Showcase/[^/#?]+/Presentation)/(?P<id>(?:[0-9a-f]{32,34}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12,14}))(?P<query>\?[^#]+|)rl   Nr   r   r   r   r  r  g  s    *GG HJLr   r  c                       e Zd ZdZdZdZy)MediasiteNamedCatalogIEr  MediasiteNamedCatalogzR(?xi)(?P<url>https?://[^/]+/Mediasite)/Catalog/catalogs/(?P<catalog_name>[^/?#&]+)Nr  r   r   r   r  r  n  s    *G%GeJr   r  c                       e Zd ZdZdZdZdZy)MediciIEzyt_dlp.extractor.mediciMedicizLhttps?://(?:(?P<sub>www|edu)\.)?medici\.tv/[a-z]{2}/[\w.-]+/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r  t  s    'GGbJLr   r  c                       e Zd ZdZdZy)MegaTVComBaseIEyt_dlp.extractor.megatvcomMegaTVComBaseNr   r   r   r   r  r  {  r  r   r  c                        e Zd ZdZdZdZdZdZy)MegaTVComEmbedIEr  zmegatvcom:embedz:(?:https?:)?//(?:www\.)?megatv\.com/embed/?\?p=(?P<id>\d+)zmegatv.com embedded videosrl   Nr   r   r   r   r  r    s    *GGQJ*GLr   r  c                        e Zd ZdZdZdZdZdZy)MegaTVComIEr  	megatvcomzVhttps?://(?:www\.)?megatv\.com/(?:\d{4}/\d{2}/\d{2}|[^/]+/(?P<id>\d+))/(?P<slug>[^/]+)zmegatv.com videosrl   Nr   r   r   r   r  r    s    *GGoJ!GLr   r  c                        e Zd ZdZdZdZdZdZy)MegaphoneIEzyt_dlp.extractor.megaphonezmegaphone.fmz0https?://player\.megaphone\.fm/(?P<id>[A-Z0-9]+)zmegaphone.fm embedded playersrl   Nr   r   r   r   r  r    s    *GGEJ-GLr   r  c                        e Zd ZdZdZdZdZdZy)MeipaiIEzyt_dlp.extractor.meipaiMeipaiz3https?://(?:www\.)?meipai\.com/media/(?P<id>[0-9]+)u   美拍rl   Nr   r   r   r   r  r    s    'GGHJGLr   r  c                       e Zd ZdZdZdZdZy)
MelonVODIEzyt_dlp.extractor.melonvodMelonVODzEhttps?://vod\.melon\.com/video/detail2\.html?\?.*?mvId=(?P<id>[0-9]+)rl   Nr   r   r   r   r  r    s    )GG\JLr   r  c                       e Zd ZdZdZdZdZy)MetacriticIEzyt_dlp.extractor.metacritic
Metacriticz;https?://(?:www\.)?metacritic\.com/.+?/trailers/(?P<id>\d+)rl   Nr   r   r   r   r  r    s    +GGQJLr   r  c                        e Zd ZdZdZddgZdZy)MicrosoftBuildIEyt_dlp.extractor.microsoftembedMicrosoftBuildz@https?://build\.microsoft\.com/[\w-]+/sessions/(?P<id>[\da-f-]+)zBhttps?://build\.microsoft\.com/[\w-]+/(?P<id>sessions)/?(?:[?#]|$)r   Nr   r   r   r   r  r    s#    /GGX  [b  cJLr   r  c                       e Zd ZdZdZdZdZy)MicrosoftEmbedIEr  MicrosoftEmbedzShttps?://(?:www\.)?microsoft\.com/(?:[^/]+/)?videoplayer/embed/(?P<id>[a-z0-9A-Z]+)rl   Nr   r   r   r   r  r    s    /GGhJLr   r  c                       e Zd ZdZdZy)MicrosoftMediusBaseIEr  MicrosoftMediusBaseNr   r   r   r   r  r    s    /G#Gr   r  c                       e Zd ZdZdZdZdZy)MicrosoftLearnEpisodeIEr  MicrosoftLearnEpisodezGhttps?://learn\.microsoft\.com/(?:[\w-]+/)?shows/[\w-]+/(?P<id>[^?#/]+)rl   Nr   r   r   r   r  r    s    /G%G^JLr   r  c                       e Zd ZdZdZdZdZy)MicrosoftLearnPlaylistIEr  MicrosoftLearnPlaylistz\https?://learn\.microsoft\.com/(?:[\w-]+/)?(?P<type>shows|events)/(?P<id>[\w-]+)/?(?:[?#]|$)rm   Nr   r   r   r   r  r    s    /G&GsJLr   r  c                       e Zd ZdZdZdZdZy)MicrosoftLearnSessionIEr  MicrosoftLearnSessionzHhttps?://learn\.microsoft\.com/(?:[\w-]+/)?events/[\w-]+/(?P<id>[^?#/]+)rl   Nr   r   r   r   r  r    s    /G%G_JLr   r  c                       e Zd ZdZdZdZdZy)MicrosoftMediusIEr  MicrosoftMediusz]https?://medius\.microsoft\.com/Embed/(?:Video\?id=|video-nc/|VideoDetails/)(?P<id>[\da-f-]+)rl   Nr   r   r   r   r  r    s    /GGtJLr   r  c                       e Zd ZdZdZy)MindsBaseIEyt_dlp.extractor.minds	MindsBaseNr   r   r   r   r  r    r   r   r  c                       e Zd ZdZdZy)MindsFeedBaseIEr  MindsFeedBaseNr   r   r   r   r  r    s    &GGr   r  c                       e Zd ZdZdZdZdZy)MindsChannelIEr  zminds:channelzXhttps?://(?:www\.)?minds\.com/(?!(?:newsfeed|media|api|archive|groups)/)(?P<id>[^/?&#]+)rm   Nr   r   r   r   r  r    s    &GGmJLr   r  c                       e Zd ZdZdZdZdZy)MindsGroupIEr  zminds:groupz;https?://(?:www\.)?minds\.com/groups/profile/(?P<id>[0-9]+)rm   Nr   r   r   r   r  r    s    &GGPJLr   r  c                       e Zd ZdZdZdZdZy)MindsIEr  mindszLhttps?://(?:www\.)?minds\.com/(?:media|newsfeed|archive/view)/(?P<id>[0-9]+)rl   Nr   r   r   r   r  r        &GGaJLr   r  c                       e Zd ZdZdZdZdZy)	Mir24TvIEzyt_dlp.extractor.mir24tvzmir24.tvz8https?://(?:www\.)?mir24\.tv/news/(?P<id>[0-9]+)/[^/?#]+rl   Nr   r   r   r   r  r    s    (GGMJLr   r  c                       e Zd ZdZdZy)MirrativBaseIEyt_dlp.extractor.mirrativMirrativBaseNr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZy)
MirrativIEr  mirrativz6https?://(?:www\.)?mirrativ\.com/live/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r    s    )GGKJLr   r  c                       e Zd ZdZdZdZy)MirrativUserIEr  zmirrativ:userz1https?://(?:www\.)?mirrativ\.com/user/(?P<id>\d+)Nr  r   r   r   r  r    s    )GGGJr   r  c                       e Zd ZdZdZdZdZy)MirrorCoUKIEzyt_dlp.extractor.mirrorcouk
MirrorCoUKz7https?://(?:www\.)?mirror\.co\.uk/[/+[\w-]+-(?P<id>\d+)rl   Nr   r   r   r   r  r    s    +GGOJLr   r  c                       e Zd ZdZdZdZdZy)MixchArchiveIEyt_dlp.extractor.mixchzmixch:archivez&https?://mixch\.tv/archive/(?P<id>\d+)rl   Nr   r   r   r   r  r    s    &GG;JLr   r  c                       e Zd ZdZdZdZdZy)MixchIEr  mixchz https?://mixch\.tv/u/(?P<id>\d+)rl   Nr   r   r   r   r  r  #  s    &GG5JLr   r  c                       e Zd ZdZdZdZdZy)MixchMovieIEr  zmixch:moviez https?://mixch\.tv/m/(?P<id>\w+)rl   Nr   r   r   r   r  r  *  s    &GG5JLr   r  c                       e Zd ZdZdZy)MixcloudBaseIEyt_dlp.extractor.mixcloudMixcloudBaseNr   r   r   r   r  r  1  r  r   r  c                       e Zd ZdZdZdZdZy)
MixcloudIEr  mixcloudzihttps?://(?:(?:www|beta|m)\.)?mixcloud\.com/([^/]+)/(?!stream|uploads|favorites|listens|playlists)([^/]+)rl   Nr   r   r   r   r  r  6  s    )GG~JLr   r  c                       e Zd ZdZdZy)MixcloudPlaylistBaseIEr  MixcloudPlaylistBaseNr   r   r   r   r  r  =  r  r   r  c                       e Zd ZdZdZdZdZy)MixcloudPlaylistIEr  zmixcloud:playlistzQhttps?://(?:www\.)?mixcloud\.com/(?P<user>[^/]+)/playlists/(?P<playlist>[^/]+)/?$rm   Nr   r   r   r   r  r  B  s    )G!GfJLr   r  c                       e Zd ZdZdZdZdZy)MixcloudUserIEr  zmixcloud:userz]https?://(?:www\.)?mixcloud\.com/(?P<id>[^/]+)/(?P<type>uploads|favorites|listens|stream)?/?$rm   Nr   r   r   r   r  r  I  s    )GGrJLr   r  c                       e Zd ZdZdZdZdZy)MixlrIEyt_dlp.extractor.mixlrMixlrzFhttps?://(?:www\.)?(?P<username>[\w-]+)\.mixlr\.com/events/(?P<id>\d+)rl   Nr   r   r   r   r  r  P  s    &GG^JLr   r  c                       e Zd ZdZdZdZdZy)MixlrRecoringIEr  MixlrRecoringzJhttps?://(?:www\.)?(?P<username>[\w-]+)\.mixlr\.com/recordings/(?P<id>\d+)rl   Nr   r   r   r   r  r  W  s    &GGbJLr   r  c                       e Zd ZdZdZdZdZy)MochaVideoIEzyt_dlp.extractor.mocha
MochaVideoz5https?://video\.mocha\.com\.vn/(?P<video_slug>[\w-]+)rl   Nr   r   r   r   r  r  ^  s    &GGLJLr   r  c                        e Zd ZdZdZdZdZdZy)MojevideoIEzyt_dlp.extractor.mojevideo	MojevideozQhttps?://(?:www\.)?mojevideo\.sk/video/(?P<id>\w+)/(?P<display_id>[\w()]+?)\.htmlzmojevideo.skrl   Nr   r   r   r   r  r  e  s    *GGiJGLr   r  c                        e Zd ZdZdZdZdZdZy)MonsterSirenHypergryphMusicIEzyt_dlp.extractor.hypergryphmonstersirenz9https?://monster-siren\.hypergryph\.com/music/(?P<id>\d+)u   塞壬唱片rl   Nr   r   r   r   r  r  m  s    +GGOJGLr   r  c                       e Zd ZdZdZdZdZy)MonstercatIEzyt_dlp.extractor.monstercat
Monstercatz@https?://www\.monstercat\.com/release/(?P<id>\d{12}|MC[A-Z]+\d+)rm   Nr   r   r   r   r  r  u  s    +GGWJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)MotorsportIEzyt_dlp.extractor.motorsport
MotorsportzVhttps?://(?:www\.)?motorsport\.com/[^/?#]+/video/(?:[^/?#]+/)(?P<id>[^/]+)/?(?:$|[?#])Fzmotorsport.comrl   Nrl  r   r   r   r
  r
  |  s     +GGkJHGLr   r
  c                        e Zd ZdZdZdZdZdZy)
MovieFapIEr  MovieFapz_https?://(?:www\.)?(?P<host>moviefap)\.com/videos/(?P<id>[0-9a-f]+)/(?P<display_id>[^/]+)\.htmlr   rl   Nrw  r   r   r   r  r    s    (GGuJILr   r  c                        e Zd ZdZdZdZdZdZy)MoviepilotIEzyt_dlp.extractor.moviepilot
moviepilotz6https?://(?:www\.)?moviepilot\.de/movies/(?P<id>[^/]+)zMoviepilot trailerrl   Nr   r   r   r   r  r    s    +GGKJ"GLr   r  c                       e Zd ZdZdZdZdZy)MovingImageIEzyt_dlp.extractor.movingimageMovingImagez.https?://movingimage\.nls\.uk/film/(?P<id>\d+)rl   Nr   r   r   r   r  r    s    ,GGDJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)MuenchenTVIEzyt_dlp.extractor.muenchentv
MuenchenTVz*https?://(?:www\.)?muenchen\.tv/livestreamFu   münchen.tvrl   Nrl  r   r   r   r  r    s     +GG?JHGLr   r  c                       e Zd ZdZdZy)RozhlasBaseIEyt_dlp.extractor.rozhlasRozhlasBaseNr   r   r   r   r  r    r   r   r  c                       e Zd ZdZdZdZdZy)MujRozhlasIEr  
MujRozhlasz=https?://(?:www\.)?mujrozhlas\.cz/(?:[^/]+/)*(?P<id>[^/?#&]+)r   Nr   r   r   r   r  r    s    (GGRJLr   r  c                        e Zd ZdZdZdZdZdZy)
MurrtubeIEyt_dlp.extractor.murrtubeMurrtubea7  (?x)
                        (?:
                            murrtube:|
                            https?://murrtube\.net/(?:v/|videos/(?P<slug>[a-z0-9-]+?)-)
                        )
                        (?P<id>[A-Z0-9]{4}|[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})
                    r   rl   Nrw  r   r   r   r   r     s    )GG RJILr   r   c                   $    e Zd ZdZdZdZdZdZdZy)MurrtubeUserIEr!  MurrtubeUserz%https?://murrtube\.net/(?P<id>[^/]+)$FzMurrtube user profilerm   Nrl  r   r   r   r$  r$    s     )GG9JH%GLr   r$  c                       e Zd ZdZdZdZdZy)MuseAIIEzyt_dlp.extractor.museaiMuseAIz3https?://(?:www\.)?muse\.ai/(?:v|embed)/(?P<id>\w+)rl   Nr   r   r   r   r'  r'        'GGIJLr   r'  c                       e Zd ZdZdZdZdZy)MuseScoreIEzyt_dlp.extractor.musescore	MuseScorezPhttps?://(?:www\.)?musescore\.com/(?:user/\d+|[^/]+)(?:/scores)?/(?P<id>[^#&?]+)rl   Nr   r   r   r   r+  r+    s    *GGfJLr   r+  c                       e Zd ZdZdZdZdZy)MuxIEzyt_dlp.extractor.muxMuxzAhttps?://(?:stream\.new/v|player\.mux\.com)/(?P<id>[A-Za-z0-9-]+)rl   Nr   r   r   r   r.  r.        $GGWJLr   r.  c                       e Zd ZdZdZy)	Mx3BaseIEyt_dlp.extractor.mx3Mx3BaseNr   r   r   r   r2  r2    rk  r   r2  c                       e Zd ZdZdZdZdZy)Mx3IEr3  Mx3z(https?://(?:www\.)?mx3\.ch/t/(?P<id>\w+)rl   Nr   r   r   r   r6  r6    s    $GG>JLr   r6  c                       e Zd ZdZdZdZdZy)Mx3NeoIEr3  Mx3Neoz-https?://(?:www\.)?neo\.mx3\.ch/t/(?P<id>\w+)rl   Nr   r   r   r   r9  r9    s    $GGDJLr   r9  c                       e Zd ZdZdZdZdZy)Mx3VolksmusikIEr3  Mx3Volksmusikz4https?://(?:www\.)?volksmusik\.mx3\.ch/t/(?P<id>\w+)rl   Nr   r   r   r   r<  r<    s    $GGKJLr   r<  c                       e Zd ZdZdZy)MxplayerBaseIEyt_dlp.extractor.mxplayerMxplayerBaseNr   r   r   r   r?  r?    r  r   r?  c                   $    e Zd ZdZdZdZdZdZdZy)
MxplayerIEr@  mxplayerz(?x)
        https?://(?:www\.)?mxplayer\.in/
        (?:movie|shorts|show/[\w-]+/(?!seasons/)[\w-]+)/
        (?P<display_id>[\w-]+)-(?P<id>[0-9a-f]{32})(?:[/?#]|$)
    zAmazon MX Playerr   rl   Nr  r   r   r   rC  rC    s#    )GG GJ GILr   rC  c                   $    e Zd ZdZdZdZdZdZdZy)MxplayerRedirectIEr@  zmxplayer:redirectzshttps?://(?:www\.)?mxplayer\.in/detail/(?P<type>episode|movie|season|shorts|tvshow)/(?P<id>[0-9a-f]{32})(?:[/?#]|$)Fr   r   Nr  r   r   r   rF  rF    s#    )G!G IJGILr   rF  c                       e Zd ZdZdZdZdZy)MxplayerSeasonIEr@  zmxplayer:seasonzZhttps?://(?:www\.)?mxplayer\.in/show/[\w-]+/seasons/[\w-]+-(?P<id>[0-9a-f]{32})(?:[/?#]|$)rm   Nr   r   r   r   rH  rH    s    )GGqJLr   rH  c                       e Zd ZdZdZdZdZy)MxplayerShowIEr@  zmxplayer:showzKhttps?://(?:www\.)?mxplayer\.in/show/[\w-]+-(?P<id>[0-9a-f]{32})(?:[/?#]|$)rm   Nr   r   r   r   rJ  rJ    s    )GGaJLr   rJ  c                       e Zd ZdZdZdZdZy)MySpaceAlbumIEyt_dlp.extractor.myspacezMySpace:albumzChttps?://myspace\.com/([^/]+)/music/album/(?P<title>.*-)(?P<id>\d+)rm   Nr   r   r   r   rL  rL        (GGXJLr   rL  c                       e Zd ZdZdZdZdZy)	MySpaceIErM  MySpacea0  (?x)
                    https?://
                        myspace\.com/[^/]+/
                        (?P<mediatype>
                            video/[^/]+/(?P<video_id>\d+)|
                            music/song/[^/?#&]+-(?P<song_id>\d+)-\d+(?:[/?#&]|$)
                        )
                    rl   Nr   r   r   r   rP  rP    s    (GG OJLr   rP  c                       e Zd ZdZdZdZdZy)	MySpassIEzyt_dlp.extractor.myspassMySpassz=https?://(?:www\.)?myspass\.de/(?:[^/]+/)*(?P<id>\d+)/?[^/]*$rl   Nr   r   r   r   rS  rS  $  ra  r   rS  c                       e Zd ZdZdZdZdZy)MyVideoGeIEzyt_dlp.extractor.myvideoge	MyVideoGez/https?://(?:www\.)?myvideo\.ge/v/(?P<id>[0-9]+)rl   Nr   r   r   r   rV  rV  +  s    *GGDJLr   rV  c                        e Zd ZdZdZdZdZdZy)MyVidsterIEzyt_dlp.extractor.myvidster	MyVidsterz3https?://(?:www\.)?myvidster\.com/video/(?P<id>\d+)r   rl   Nrw  r   r   r   rY  rY  2  s    *GGIJILr   rY  c                        e Zd ZdZdZdZdZdZy)MzaaloIEzyt_dlp.extractor.mzaaloMzaalozi(?i)https?://(?:www\.)?mzaalo\.com/(?:play|watch)/(?P<type>movie|original|clip)/(?P<id>[a-f0-9-]+)/[\w-]+r  rl   Nrw  r   r   r   r\  r\  :  s    'GGJILr   r\  c                       e Zd ZdZdZdZdZy)N1InfoAssetIEyt_dlp.extractor.n1N1InfoAssetzFhttps?://best-vod\.umn\.cdn\.united\.cloud/stream\?asset=(?P<id>[^&]+)rl   Nr   r   r   r   r_  r_  B  s    #GG^JLr   r_  c                       e Zd ZdZdZdZdZy)	N1InfoIIEr`  zN1Info:articlezLhttps?://(?:(?:\w+\.)?n1info\.\w+|nova\.rs)/(?:[^/?#]+/){1,2}(?P<id>[^/?#]+)rl   Nr   r   r   r   rc  rc  I  s    #GGdJLr   rc  c                       e Zd ZdZdZy)NBACVPBaseIEyt_dlp.extractor.nba
NBACVPBaseNr   r   r   r   re  re  P      $GGr   re  c                       e Zd ZdZdZy)	NBABaseIErf  NBABaseNr   r   r   r   rj  rj  U  rk  r   rj  c                        e Zd ZdZdZdZdZdZy)NBAChannelIErf  znba:channelak  (?x)
        https?://(?:www\.)?nba\.com/
            (?P<team>
                blazers|
                bucks|
                bulls|
                cavaliers|
                celtics|
                clippers|
                grizzlies|
                hawks|
                heat|
                hornets|
                jazz|
                kings|
                knicks|
                lakers|
                magic|
                mavericks|
                nets|
                nuggets|
                pacers|
                pelicans|
                pistons|
                raptors|
                rockets|
                sixers|
                spurs|
                suns|
                thunder|
                timberwolves|
                warriors|
                wizards
            )
        (?:/play\#)?/(?:video/channel|series)/(?P<id>[^/?#&]+)Frm   Nr]  r   r   r   rm  rm  Z  s    $GG dJHLr   rm  c                       e Zd ZdZdZdZdZy)
NBAEmbedIErf  z	nba:embedzhhttps?://secure\.nba\.com/assets/amp/include/video/(?:topI|i)frame\.html\?.*?\bcontentId=(?P<id>[^?#&]+)FNr:  r   r   r   ro  ro  b  s    $GG AJHr   ro  c                        e Zd ZdZdZdZdZdZy)NBAIErf  nbaa{  (?x)
        https?://(?:www\.)?nba\.com/
            (?P<team>
                blazers|
                bucks|
                bulls|
                cavaliers|
                celtics|
                clippers|
                grizzlies|
                hawks|
                heat|
                hornets|
                jazz|
                kings|
                knicks|
                lakers|
                magic|
                mavericks|
                nets|
                nuggets|
                pacers|
                pelicans|
                pistons|
                raptors|
                rockets|
                sixers|
                spurs|
                suns|
                thunder|
                timberwolves|
                warriors|
                wizards
            )
        (?:/play\#)?/(?!video/channel|series)video/(?P<id>(?:[^/]+/)*[^/?#&]+)Frl   Nr]  r   r   r   rq  rq  i  s    $GG tJHLr   rq  c                       e Zd ZdZdZy)NBAWatchBaseIErf  NBAWatchBaseNr   r   r   r   rt  rt  q  s    $GGr   rt  c                        e Zd ZdZdZdZdZdZy)NBAWatchCollectionIErf  znba:watch:collectionz[https?://(?:(?:www\.)?nba\.com(?:/watch)?|watch\.nba\.com)/list/collection/(?P<id>[^/?#&]+)Frm   Nr]  r   r   r   rw  rw  v  s    $G$GrJHLr   rw  c                        e Zd ZdZdZdZdZdZy)NBAWatchEmbedIErf  znba:watch:embedzUhttps?://(?:(?:www\.)?nba\.com(?:/watch)?|watch\.nba\.com)/embed\?.*?\bid=(?P<id>\d+)Frl   Nr]  r   r   r   ry  ry  ~  s    $GGoJHLr   ry  c                        e Zd ZdZdZdZdZdZy)
NBAWatchIErf  z	nba:watchzyhttps?://(?:(?:www\.)?nba\.com(?:/watch)?|watch\.nba\.com)/(?:nba/)?video/(?P<id>.+?(?=/index\.html)|(?:[^/]+/)*[^/?#&]+)Frl   Nr]  r   r   r   r{  r{    s    $GG RJHLr   r{  c                        e Zd ZdZdZdZdZdZy)NBCIEr  NBCz\https?(?P<permalink>://(?:www\.)?nbc\.com/(?:classic-tv/)?[^/?#]+/video/[^/?#]+/(?P<id>\w+))r  rl   Nrw  r   r   r   r}  r}    s    $GGrJILr   r}  c                       e Zd ZdZdZdZdZy)NBCOlympicsIEr  nbcolympicsz9https?://www\.nbcolympics\.com/videos?/(?P<id>[0-9a-z-]+)rl   Nr   r   r   r   r  r    rG
  r   r  c                        e Zd ZdZdZdZdZdZy)NBCOlympicsStreamIEr  znbcolympics:streamz4https?://stream\.nbcolympics\.com/(?P<id>[0-9a-z-]+)Frl   Nr]  r   r   r   r  r    s    $G"GIJHLr   r  c                        e Zd ZdZdZdZdZdZy)NBCSportsIEr  	NBCSportszMhttps?://(?:www\.)?nbcsports\.com//?(?!vplayer/)(?:[^/]+/)+(?P<id>[0-9a-z-]+)Frl   Nr]  r   r   r   r  r    s    $GGbJHLr   r  c                        e Zd ZdZdZdZdZdZy)NBCSportsStreamIEr  NBCSportsStreamz4https?://stream\.nbcsports\.com/.+?\bpid=(?P<id>\d+)Frl   Nr]  r   r   r   r  r    s    $GGKJHLr   r  c                        e Zd ZdZdZdZdZdZy)NBCSportsVPlayerIEr  NBCSportsVPlayerzfhttps?://(?:vplayer\.nbcsports\.com|(?:www\.)?nbcsports\.com/vplayer)/(?:[^/]+/)+(?P<id>[0-9a-zA-Z_]+)Frl   Nr]  r   r   r   r  r    s    $G G}JHLr   r  c                       e Zd ZdZdZdZdZy)NBCStationsIEr  NBCStationsa  https?://(?:www\.)?(?P<site>nbcbayarea|nbcboston|nbcchicago|nbcconnecticut|nbcdfw|nbclosangeles|nbcmiami|nbcnewyork|nbcphiladelphia|nbcsandiego|nbcwashington|necn|telemundo52|telemundoarizona|telemundochicago|telemundonuevainglaterra)\.com/(?:[^/?#]+/)*(?P<id>[^/?#]+)/?(?:$|[#?])rl   Nr   r   r   r   r  r    s    $GG nJLr   r  c                       e Zd ZdZdZdZy)NDREmbedBaseIEyt_dlp.extractor.ndrzndr:embed:basezN(?:ndr:(?P<id_s>[\da-z]+)|https?://www\.ndr\.de/(?P<id>[\da-z]+)-ppjson\.json)Nr  r   r   r   r  r    s    $GGfJr   r  c                       e Zd ZdZdZdZdZy)
NDREmbedIEr  z	ndr:embedz^https?://(?:\w+\.)*ndr\.de/(?:[^/]+/)*(?P<id>[\da-z]+)-(?:(?:ard)?player|externalPlayer)\.htmlrl   Nr   r   r   r   r  r    s    $GGvJLr   r  c                       e Zd ZdZdZy)	NDRBaseIEr  NDRBaseNr   r   r   r   r  r    rk  r   r  c                        e Zd ZdZdZdZdZdZy)NDRIEr  ndrzDhttps?://(?:\w+\.)*ndr\.de/(?:[^/]+/)*(?P<id>[^/?#]+),[\da-z]+\.htmlzNDR.de - Norddeutscher Rundfunkrl   Nr   r   r   r   r  r    s    $GG\J/GLr   r  c                        e Zd ZdZdZdZdZdZy)NDTVIEzyt_dlp.extractor.ndtvNDTVzRhttps?://(?:[^/]+\.)?ndtv\.com/(?:[^/]+/)*videos?/?(?:[^/]+/)*[^/?^&]+-(?P<id>\d+)Frl   Nr]  r   r   r   r  r    s    %GGhJHLr   r  c                       e Zd ZdZdZy)	NFBBaseIEyt_dlp.extractor.nfbNFBBaseNr   r   r   r   r  r    rk  r   r  c                   $    e Zd ZdZdZddgZdZdZy)NFBIEr  nfbzHhttps?://(?:www\.)?(?P<site>nfb|onf)\.ca/(?P<type>film)/(?P<id>[^/?#&]+)zghttps?://(?:www\.)?(?P<site>nfb|onf)\.ca/(?P<type>series?)/(?P<id>[^/?#&]+/s(?:ea|ai)son\d+/episode\d+)z$nfb.ca and onf.ca films and episodesrl   Nr   r   r   r   r  r    s(    $GG^  aN  OJ4GLr   r  c                        e Zd ZdZdZdZdZdZy)NFBSeriesIEr  z
nfb:serieszWhttps?://(?:www\.)?(?P<site>nfb|onf)\.ca/(?P<type>series?)/(?P<id>[^/?#&]+)/?(?:[?#]|$)znfb.ca and onf.ca seriesrm   Nr   r   r   r   r  r    s    $GGlJ(GLr   r  c                       e Zd ZdZdZdZdZy)NFHSNetworkIEzyt_dlp.extractor.nfhsnetworkNFHSNetworkzVhttps?://(?:www\.)?nfhsnetwork\.com/events/[\w-]+/(?P<id>(?:gam|evt|dd|)?[\w\d]{0,10})rl   Nr   r   r   r   r  r    s    ,GGnJLr   r  c                       e Zd ZdZdZy)	NFLBaseIEyt_dlp.extractor.nflNFLBaseNr   r   r   r   r  r    rk  r   r  c                       e Zd ZdZdZdZdZy)NFLArticleIEr  znfl.com:articlea  (?x)
                    https?://
                        (?P<host>
                            (?:www\.)?
                            (?:
                                (?:
                                    nfl|
                                    buffalobills|
                                    miamidolphins|
                                    patriots|
                                    newyorkjets|
                                    baltimoreravens|
                                    bengals|
                                    clevelandbrowns|
                                    steelers|
                                    houstontexans|
                                    colts|
                                    jaguars|
                                    (?:titansonline|tennesseetitans)|
                                    denverbroncos|
                                    (?:kc)?chiefs|
                                    raiders|
                                    chargers|
                                    dallascowboys|
                                    giants|
                                    philadelphiaeagles|
                                    (?:redskins|washingtonfootball)|
                                    chicagobears|
                                    detroitlions|
                                    packers|
                                    vikings|
                                    atlantafalcons|
                                    panthers|
                                    neworleanssaints|
                                    buccaneers|
                                    azcardinals|
                                    (?:stlouis|the)rams|
                                    49ers|
                                    seahawks
                                )\.com|
                                .+?\.clubs\.nfl\.com
                            )
                        )/
                    news/(?P<id>[^/#?&]+)rm   Nr   r   r   r   r  r    s    $GG [ JLr   r  c                       e Zd ZdZdZdZdZy)NFLIEr  znfl.coma  (?x)
                    https?://
                        (?P<host>
                            (?:www\.)?
                            (?:
                                (?:
                                    nfl|
                                    buffalobills|
                                    miamidolphins|
                                    patriots|
                                    newyorkjets|
                                    baltimoreravens|
                                    bengals|
                                    clevelandbrowns|
                                    steelers|
                                    houstontexans|
                                    colts|
                                    jaguars|
                                    (?:titansonline|tennesseetitans)|
                                    denverbroncos|
                                    (?:kc)?chiefs|
                                    raiders|
                                    chargers|
                                    dallascowboys|
                                    giants|
                                    philadelphiaeagles|
                                    (?:redskins|washingtonfootball)|
                                    chicagobears|
                                    detroitlions|
                                    packers|
                                    vikings|
                                    atlantafalcons|
                                    panthers|
                                    neworleanssaints|
                                    buccaneers|
                                    azcardinals|
                                    (?:stlouis|the)rams|
                                    49ers|
                                    seahawks
                                )\.com|
                                .+?\.clubs\.nfl\.com
                            )
                        )/
                    (?:videos?|listen|audio)/(?P<id>[^/#?&]+)rl   Nr   r   r   r   r  r    s    $GG o JLr   r  c                       e Zd ZdZdZdZdZy)NFLPlusEpisodeIEr  znfl.com:plus:episodez8https?://(?:www\.)?nfl\.com/plus/episodes/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r    s    $G$GNJLr   r  c                       e Zd ZdZdZdZdZy)NFLPlusReplayIEr  znfl.com:plus:replayzHhttps?://(?:www\.)?nfl\.com/plus/games/(?P<slug>[\w-]+)(?:/(?P<id>\d+))?r   Nr   r   r   r   r  r    s    $G#G_JLr   r  c                       e Zd ZdZdZy)	NHLBaseIEyt_dlp.extractor.nhlNHLBaseNr   r   r   r   r  r  #  rk  r   r  c                       e Zd ZdZdZdZdZy)NHLIEr  znhl.comzFhttps?://(?:www\.)?(?P<site>nhl|wch2016)\.com/(?:[^/]+/)*c-(?P<id>\d+)rl   Nr   r   r   r   r  r  (  s    $GG\JLr   r  c                       e Zd ZdZdZdZdZy)NJoyEmbedIEr  z
njoy:embedz^https?://(?:www\.)?n-joy\.de/(?:[^/]+/)*(?P<id>[\da-z]+)-(?:player|externalPlayer)_[^/]+\.htmlrl   Nr   r   r   r   r  r  /  s    $GGuJLr   r  c                        e Zd ZdZdZdZdZdZy)NJoyIEr  njoyz[https?://(?:www\.)?n-joy\.de/(?:[^/]+/)*(?:(?P<display_id>[^/?#]+),)?(?P<id>[\da-z]+)\.htmlzN-JOYrl   Nr   r   r   r   r  r  6  s    $GGrJGLr   r  c                       e Zd ZdZdZdZdZy)NOSNLArticleIEzyt_dlp.extractor.nosnlNOSNLArticlezGhttps?://nos\.nl/(?P<type>video|(\w+/)?\w+)/?\d+-(?P<display_id>[\w-]+)r   Nr   r   r   r   r  r  >  s    &GG_JLr   r  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )NPOIErb  npo  (?x)
                    (?:
                        npo:|
                        https?://
                            (?:www\.)?
                            (?:
                                npo\.nl/(?:[^/]+/)*|
                                (?:ntr|npostart)\.nl/(?:[^/]+/){2,}|
                                omroepwnl\.nl/video/fragment/[^/]+__|
                                (?:zapp|npo3)\.nl/(?:[^/]+/){2,}
                            )
                        )
                        (?P<id>[^/?#]+)
                1npo.nl, ntr.nl, omroepwnl.nl, zapp.nl and npo3.nlrl   c                 n    t        fdt        t        t        fD              rdS t        |         S )Nc              3   @   K   | ]  }|j                          y wr'   r  r  s     r   r;   z!NPOIE.suitable.<locals>.<genexpr>N  $      G  [[- Gr<   Fr   	NPOLiveIE
NPORadioIENPORadioFragmentIEr   r4   r   s    `r   r4   zNPOIE.suitableL  <     G$j2DEG G 	,W%c*	,r   r   r   r   r$   ra   r=   r[   ro   rr   r4   r   r   s   @r   r  r  E  s1    $GG {JAGL, ,r   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )NPOPlaylistBaseIErb  r  r  r  c                 n    t        fdt        t        t        fD              rdS t        |         S )Nc              3   @   K   | ]  }|j                          y wr'   r  r  s     r   r;   z-NPOPlaylistBaseIE.suitable.<locals>.<genexpr>[  r  r<   Fr  r   s    `r   r4   zNPOPlaylistBaseIE.suitableY  r  r   )
r   r   r   r$   ra   r=   r[   rr   r4   r   r   s   @r   r  r  S  s,    $GG {JAG, ,r   r  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )AndereTijdenIErb  anderetijdenzIhttps?://(?:www\.)?anderetijden\.nl/programma/(?:[^/]+/)+(?P<id>[^/?#&]+)r  rm   c                 n    t        fdt        t        t        fD              rdS t        |         S )Nc              3   @   K   | ]  }|j                          y wr'   r  r  s     r   r;   z*AndereTijdenIE.suitable.<locals>.<genexpr>i  r  r<   Fr  r   s    `r   r4   zAndereTijdenIE.suitableg  r  r   r  r   s   @r   r  r  `  s.    $GG^JAGL, ,r   r  c                       e Zd ZdZdZdZdZy)r  rb  znpo.nl:livez?https?://(?:www\.)?npo(?:start)?\.nl/live(?:/(?P<id>[^/?#&]+))?rl   Nr   r   r   r   r  r  n  s    $GGTJLr   r  c                       e Zd ZdZdZdZdZy)r  rb  znpo.nl:radio:fragmentz;https?://(?:www\.)?npo\.nl/radio/[^/]+/fragment/(?P<id>\d+)rl   Nr   r   r   r   r  r  u  s    $G%GQJLr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )r  rb  znpo.nl:radioz.https?://(?:www\.)?npo\.nl/radio/(?P<id>[^/]+)rl   c                 P    t         j                  |      rdS t        |   |      S r   )r  r4   r   r   s     r   r4   zNPORadioIE.suitable  r  r   r   r   s   @r   r  r  |  s+    $GGCJLT Tr   r  c                       e Zd ZdZdZy)	NRKBaseIEyt_dlp.extractor.nrkNRKBaseNr   r   r   r   r  r    rk  r   r  c                       e Zd ZdZdZdZdZy)NRKIEr  NRKa  (?x)
                        (?:
                            nrk:|
                            https?://
                                (?:
                                    (?:www\.)?nrk\.no/video/(?:PS\*|[^_]+_)|
                                    v8[-.]psapi\.nrk\.no/mediaelement/
                                )
                            )
                            (?P<id>[^?\#&]+)
                        rl   Nr   r   r   r   r  r    s    $GG JJLr   r  c                       e Zd ZdZdZy)NRKPlaylistBaseIEr  NRKPlaylistBaseNr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZy)NRKPlaylistIEr  NRKPlaylistzBhttps?://(?:www\.)?nrk\.no/(?!video|skole)(?:[^/]+/)+(?P<id>[^/]+)rm   Nr   r   r   r   r  r    s    $GGWJLr   r  c                       e Zd ZdZdZdZdZy)NRKRadioPodkastIEr  NRKRadioPodkastzohttps?://radio\.nrk\.no/pod[ck]ast/(?:[^/]+/)+(?P<id>l_[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})rl   Nr   r   r   r   r  r    s    $GG JJLr   r  c                        e Zd ZdZdZdZdZdZy)
NRKSkoleIEr  NRKSkolez;https?://(?:www\.)?nrk\.no/skole/?\?.*\bmediaId=(?P<id>\d+)z	NRK Skolerl   Nr   r   r   r   r  r    s    $GGSJGLr   r  c                        e Zd ZdZdZdZdZdZy)NRKTVEpisodeIEr  NRKTVEpisodezhhttps?://tv\.nrk\.no/serie/(?P<id>[^/?#]+/sesong/(?P<season_number>\d+)/episode/(?P<episode_number>\d+))   rl   Nrw  r   r   r   r  r    s    $GGJILr   r  c                       e Zd ZdZdZdZdZy)NRKTVEpisodesIEr  NRKTVEpisodesz:https?://tv\.nrk\.no/program/[Ee]pisodes/[^/]+/(?P<id>\d+)rm   Nr   r   r   r   r  r    s    $GGPJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)NRKTVIEr  NRKTVzLhttps?://(?:tv|radio)\.nrk(?:super)?\.no/(?:[^/]+/)*(?P<id>[a-zA-Z]{4}\d{8})zNRK TV and NRK Radior  rl   Nr  r   r   r   r  r    s     $GGbJ$GILr   r  c                       e Zd ZdZdZdZdZy)NRKTVDirekteIEr  NRKTVDirektez7https?://(?:tv|radio)\.nrk\.no/direkte/(?P<id>[^/?#&]+)z$NRK TV Direkte and NRK Radio DirekteNr,  r   r   r   r  r    s    $GGLJ4Gr   r  c                       e Zd ZdZdZy)NRKTVSerieBaseIEr  NRKTVSerieBaseNr   r   r   r   r   r     s    $GGr   r   c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )NRKTVSeasonIEr  NRKTVSeasonas  (?x)
                    https?://
                        (?P<domain>tv|radio)\.nrk\.no/
                        (?P<serie_kind>serie|pod[ck]ast)/
                        (?P<serie>[^/]+)/
                        (?:
                            (?:sesong/)?(?P<id>\d+)|
                            sesong/(?P<id_2>[^/?#&]+)
                        )
                    rm   c                     t         j                  |      s*t        j                  |      st        j                  |      rdS t        |   |      S r   )r  r4   r  r  r   r   s     r   r4   zNRKTVSeasonIE.suitable  sF     ))#..2I2I#2NRcRlRlmpRq 	,W%c*	,r   r   r   s   @r   r  r    s,    $GG SJL, ,r   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )NRKTVSeriesIEr  NRKTVSerieszkhttps?://(?P<domain>(?:tv|radio)\.nrk|(?:tv\.)?nrksuper)\.no/(?P<serie_kind>serie|pod[ck]ast)/(?P<id>[^/]+)rm   c                 x    t        fdt        t        t        t        fD              rdS t
        |         S )Nc              3   @   K   | ]  }|j                          y wr'   r  r  s     r   r;   z)NRKTVSeriesIE.suitable.<locals>.<genexpr>  s$      ` S) `r<   F)r   r  r  r  r  r   r4   r   s    `r   r4   zNRKTVSeriesIE.suitable  sC      `$+^=NP]#^` `E	( !#&	(r   r   r   s   @r   r  r    s,    $GG BJL( (r   r  c                        e Zd ZdZdZdZdZdZy)NRLTVIEzyt_dlp.extractor.nrlNRLTVz8https?://(?:www\.)?nrl\.com/tv(/[^/]+)*/(?P<id>[^/?&#]+)Frl   Nr]  r   r   r   r  r    s    $GGMJHLr   r  c                       e Zd ZdZdZdZdZy)	NTSLiveIEzyt_dlp.extractor.ntsznts.livezChttps?://(?:www\.)?nts\.live/shows/[^/?#]+/episodes/(?P<id>[^/?#]+)rl   Nr   r   r   r   r  r    s    $GGXJLr   r  c                        e Zd ZdZdZdZdZdZy)NTVCoJpCUIEzyt_dlp.extractor.ntvcojpzcu.ntv.co.jpzJhttps?://cu\.ntv\.co\.jp/(?!program-list|search)(?P<id>[\w-]+)/?(?:[?#]|$)u   日テレ無料TADA!rl   Nr   r   r   r   r  r    s    (GGaJ$GLr   r  c                       e Zd ZdZdZdZdZy)NTVDeIEzyt_dlp.extractor.ntvdezn-tv.dezfhttps?://(?:www\.)?n-tv\.de/mediathek/(?:videos|magazine)/[^/?#]+/[^/?#]+-article(?P<id>[^/?#]+)\.htmlrl   Nr   r   r   r   r  r    s    &GG|JLr   r  c                       e Zd ZdZdZdZdZy)NTVRuIEzyt_dlp.extractor.ntvruzntv.ruz8https?://(?:www\.)?ntv\.ru/(?:[^/#?]+/)*(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r  
  s    &GGMJLr   r  c                       e Zd ZdZdZy)NYTimesBaseIEyt_dlp.extractor.nytimesNYTimesBaseNr   r   r   r   r  r    r   r   r  c                       e Zd ZdZdZdZdZy)NYTimesArticleIEr  NYTimesArticlezphttps?://(?:www\.)?nytimes\.com/\d{4}/\d{2}/\d{2}/(?!books|podcasts)[^/?#]+/(?:\w+/)?(?P<id>[^./?#]+)(?:\.html)?r   Nr   r   r   r   r  r    s    (GG KJLr   r  c                       e Zd ZdZdZdZdZy)NYTimesCookingIEr  NYTimesCookingGuidez4https?://cooking\.nytimes\.com/guides/(?P<id>[\w-]+)r   Nr   r   r   r   r  r    s    (G#GJJLr   r  c                       e Zd ZdZdZdZdZy)NYTimesCookingRecipeIEr  NYTimesCookingRecipez2https?://cooking\.nytimes\.com/recipes/(?P<id>\d+)rl   Nr   r   r   r   r!  r!  $  s    (G$GHJLr   r!  c                       e Zd ZdZdZdZdZy)	NYTimesIEr  NYTimeszhttps?://(?:(?:www\.)?nytimes\.com/video/(?:[^/]+/)+?|graphics8\.nytimes\.com/bcvideo/\d+(?:\.\d+)?/iframe/embed\.html\?videoId=)(?P<id>\d+)rl   Nr   r   r   r   r$  r$  +  s    (GG jJLr   r$  c                       e Zd ZdZdZdZdZy)
NZHeraldIEzyt_dlp.extractor.nzheraldnzheraldz?https?://(?:www\.)?nzherald\.co\.nz/[\w\/-]+\/(?P<id>[A-Z0-9]+)rl   Nr   r   r   r   r'  r'  2  s    )GGXJLr   r'  c                       e Zd ZdZdZdZdZy)NZOnScreenIEzyt_dlp.extractor.nzonscreen
NZOnScreenz3https?://www\.nzonscreen\.com/title/(?P<id>[^/?#]+)rl   Nr   r   r   r   r*  r*  9  s    +GGHJLr   r*  c                       e Zd ZdZdZdZdZy)NZZIEzyt_dlp.extractor.nzzNZZz=https?://(?:www\.)?nzz\.ch/(?:[^/]+/)*[^/?#]+-ld\.(?P<id>\d+)rm   Nr   r   r   r   r-  r-  @  s    $GGTJLr   r-  c                       e Zd ZdZdZdZdZy)NascarClassicsIEzyt_dlp.extractor.nascarNascarClassicsz>https?://(?:www\.)?classics\.nascar\.com/video/(?P<id>[\w~-]+)rl   Nr   r   r   r   r0  r0  G  r  r   r0  c                        e Zd ZdZdZdZdZdZy)NateIEyt_dlp.extractor.nateNatez*https?://tv\.nate\.com/clip/(?P<id>[0-9]+)r	  rl   Nrw  r   r   r   r3  r3  N  s    %GG?JILr   r3  c                       e Zd ZdZdZdZdZy)NateProgramIEr4  NateProgramz3https?://tv\.nate\.com/program/clips/(?P<id>[0-9]+)rm   Nr   r   r   r   r7  r7  V  s    %GGHJLr   r7  c                        e Zd ZdZdZdZdZdZy)NationalGeographicTVIEz#yt_dlp.extractor.nationalgeographicNationalGeographicTVzGhttps?://(?:www\.)?nationalgeographic\.com/tv/watch/(?P<id>[\da-fA-F]+)r  rl   Nrw  r   r   r   r:  r:  ]  s    3G$G]JILr   r:  c                       e Zd ZdZdZy)NaverBaseIEyt_dlp.extractor.naver	NaverBaseNr   r   r   r   r=  r=  e  r   r   r=  c                       e Zd ZdZdZdZdZy)NaverIEr>  Naverz@https?://(?:m\.)?tv(?:cast)?\.naver\.com/(?:v|embed)/(?P<id>\d+)rl   Nr   r   r   r   rA  rA  j  s    &GGWJLr   rA  c                       e Zd ZdZdZdZdZy)NaverLiveIEr>  z
Naver:livez6https?://(?:m\.)?tv(?:cast)?\.naver\.com/l/(?P<id>\d+)rl   Nr   r   r   r   rD  rD  q  s    &GGMJLr   rD  c                       e Zd ZdZdZdZy)NebulaBaseIEyt_dlp.extractor.nebula
NebulaBasewatchnebulaNr{   r   r   r   rF  rF  x  s    'GG"Nr   rF  c                        e Zd ZdZdZdZdZdZy)NebulaChannelIErG  znebula:channelzzhttps?://(?:www\.|beta\.)?(?:watchnebula\.com|nebula\.app|nebula\.tv)/(?!myshows|library|videos)(?P<id>[\w-]+)/?(?:$|[?#])rI  rm   Nr   r   r   r   rK  rK  ~  s    'GG TJ"NLr   rK  c                        e Zd ZdZdZdZdZdZy)NebulaClassIErG  znebula:mediazhttps?://(?:www\.|beta\.)?(?:watchnebula\.com|nebula\.app|nebula\.tv)/(?!(?:myshows|library|videos)/)(?P<id>[\w-]+)/(?P<ep>[\w-]+)/?(?:$|[?#])rI  rl   Nr   r   r   r   rM  rM    s    'GG iJ"NLr   rM  c                        e Zd ZdZdZdZdZdZy)NebulaIErG  znebula:videoz[https?://(?:www\.|beta\.)?(?:watchnebula\.com|nebula\.app|nebula\.tv)/videos/(?P<id>[\w-]+)rI  rl   Nr   r   r   r   rO  rO    s    'GGtJ"NLr   rO  c                        e Zd ZdZdZdZdZdZy)NebulaSeasonIErG  znebula:seasonzyhttps?://(?:www\.|beta\.)?(?:watchnebula\.com|nebula\.app|nebula\.tv)/(?P<series>[\w-]+)/season/(?P<season_number>[\w-]+)rI  rm   Nr   r   r   r   rQ  rQ    s    'GG TJ"NLr   rQ  c                        e Zd ZdZdZdZdZdZy)NebulaSubscriptionsIErG  znebula:subscriptionszwhttps?://(?:www\.|beta\.)?(?:watchnebula\.com|nebula\.app|nebula\.tv)/(?P<id>myshows|library/latest-videos)/?(?:$|[?#])rI  rm   Nr   r   r   r   rS  rS    s    'G$G PJ"NLr   rS  c                       e Zd ZdZdZdZdZy)NekoHackerIEzyt_dlp.extractor.nekohacker
NekoHackerz<https?://(?:www\.)?nekohacker\.com/(?P<id>(?!free-dl)[\w-]+)rm   Nr   r   r   r   rU  rU    s    +GGRJLr   rU  c                       e Zd ZdZdZdZdZy)
NestClipIEyt_dlp.extractor.nestNestClipz8https?://video\.nest\.com/(?:embedded/)?clip/(?P<id>\w+)rl   Nr   r   r   r   rX  rX    s    %GGNJLr   rX  c                       e Zd ZdZdZdZdZy)NestIErY  Nestz8https?://video\.nest\.com/(?:embedded/)?live/(?P<id>\w+)rl   Nr   r   r   r   r\  r\    s    %GGNJLr   r\  c                       e Zd ZdZdZy)NetAppBaseIEyt_dlp.extractor.netapp
NetAppBaseNr   r   r   r   r_  r_    rE  r   r_  c                       e Zd ZdZdZdZdZy)NetAppCollectionIEr`  NetAppCollectionz9https?://media\.netapp\.com/collection/(?P<id>[0-9a-f-]+)rm   Nr   r   r   r   rc  rc    s    'G GNJLr   rc  c                       e Zd ZdZdZdZdZy)NetAppVideoIEr`  NetAppVideoz;https?://media\.netapp\.com/video-detail/(?P<id>[0-9a-f-]+)rl   Nr   r   r   r   rf  rf    s    'GGPJLr   rf  c                       e Zd ZdZdZy)NetEaseMusicBaseIEyt_dlp.extractor.neteasemusicNetEaseMusicBaseNr   r   r   r   ri  ri    r  r   ri  c                        e Zd ZdZdZdZdZdZy)NetEaseMusicAlbumIErj  znetease:albumz8https?://music\.163\.com/(?:#/)?album\?id=(?P<id>[0-9]+)u   网易云音乐 - 专辑rm   Nr   r   r   r   rm  rm    s    -GGNJ(GLr   rm  c                        e Zd ZdZdZdZdZdZy)NetEaseMusicDjRadioIErj  znetease:djradioz:https?://music\.163\.com/(?:#/)?djradio\?id=(?P<id>[0-9]+)u   网易云音乐 - 电台rm   Nr   r   r   r   ro  ro    s    -GGPJ(GLr   ro  c                        e Zd ZdZdZdZdZdZy)NetEaseMusicIErj  znetease:songzGhttps?://(?:y\.)?music\.163\.com/(?:[#m]/)?song\?.*?\bid=(?P<id>[0-9]+)u   网易云音乐rl   Nr   r   r   r   rq  rq    s    -GG_JGLr   rq  c                        e Zd ZdZdZdZdZdZy)NetEaseMusicListIErj  znetease:playlistzPhttps?://music\.163\.com/(?:#/)?(?:playlist|discover/toplist)\?id=(?P<id>[0-9]+)u   网易云音乐 - 歌单rm   Nr   r   r   r   rs  rs    s    -G GfJ(GLr   rs  c                        e Zd ZdZdZdZdZdZy)NetEaseMusicMvIErj  z
netease:mvz5https?://music\.163\.com/(?:#/)?mv\?id=(?P<id>[0-9]+)u   网易云音乐 - MVrl   Nr   r   r   r   ru  ru    s    -GGKJ$GLr   ru  c                        e Zd ZdZdZdZdZdZy)NetEaseMusicProgramIErj  znetease:programzAhttps?://music\.163\.com/(?:#/)?(?:dj|program)\?id=(?P<id>[0-9]+)u   网易云音乐 - 电台节目r   Nr   r   r   r   rw  rw    s    -GGWJ.GLr   rw  c                        e Zd ZdZdZdZdZdZy)NetEaseMusicSingerIErj  znetease:singerz9https?://music\.163\.com/(?:#/)?artist\?id=(?P<id>[0-9]+)u   网易云音乐 - 歌手rm   Nr   r   r   r   ry  ry    s    -GGOJ(GLr   ry  c                       e Zd ZdZdZdZy)NetPlusTVBaseIErH  NetPlusTVBasenetplusNr{   r   r   r   r{  r{    s    'GGNr   r{  c                       e Zd ZdZdZdZdZy)NetPlusTVIErH  	NetPlusTVz(?x)https?://(?:www\.)?netplus\.tv/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r}  NrS  r   r   r   r  r    s    'GG hJNr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )NetPlusTVLiveIErH  NetPlusTVLivez(?x)https?://(?:www\.)?netplus\.tv/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r}  c                 P    t         j                  |      rdS t        |   |      S r   )r  r4   r   r   s     r   r4   zNetPlusTVLiveIE.suitable  %    #,,S1uLuw7G7LLr   r  r   s   @r   r  r    s.    'GG ]JNM Mr   r  c                       e Zd ZdZdZdZdZy)NetPlusTVRecordingsIErH  NetPlusTVRecordingszr(?x)https?://(?:www\.)?netplus\.tv/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r}  NrS  r   r   r   r  r  #  s    'G#G MJNr   r  c                        e Zd ZdZdZdZdZdZy)
NetzkinoIEzyt_dlp.extractor.netzkinoNetzkinoz7https?://(?:www\.)?netzkino\.de/details/(?P<id>[^/?#]+)rB  rl   Nrw  r   r   r   r  r  *  s    )GGLJILr   r  c                   $    e Zd ZdZdZdZdZdZdZy)NewgroundsIEyt_dlp.extractor.newgrounds
Newgroundsz]https?://(?:www\.)?newgrounds\.com/(?:audio/listen|portal/view)/(?P<id>\d+)(?:/format/flash)?
newgroundsr   rl   Nr  r   r   r   r  r  2  s     +GGsJ!NILr   r  c                       e Zd ZdZdZdZdZy)NewgroundsPlaylistIEr  zNewgrounds:playlistzUhttps?://(?:www\.)?newgrounds\.com/(?:collection|[^/]+/search/[^/]+)/(?P<id>[^/?#&]+)rm   Nr   r   r   r   r  r  ;  s    +G#GjJLr   r  c                       e Zd ZdZdZdZdZy)NewgroundsUserIEr  zNewgrounds:userzEhttps?://(?P<id>[^\.]+)\.newgrounds\.com/(?:movies|audio)/?(?:[#?]|$)rm   Nr   r   r   r   r  r  B  s    +GG[JLr   r  c                       e Zd ZdZdZdZdZy)NewsPicksIEzyt_dlp.extractor.newspicks	NewsPicksz4https?://newspicks\.com/movie-series/(?P<id>[^?/#]+)rl   Nr   r   r   r   r  r  I      *GGHJLr   r  c                       e Zd ZdZdZdZdZy)NewsyIEzyt_dlp.extractor.newsyNewsyz7https?://(?:www\.)?newsy\.com/stories/(?P<id>[^/?#$&]+)rl   Nr   r   r   r   r  r  P  r  r   r  c                       e Zd ZdZdZdZdZy)NexxEmbedIEyt_dlp.extractor.nexx	NexxEmbedzHhttps?://embed\.nexx(?:\.cloud|cdn\.com)/\d+/(?:video/)?(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r  W  s    %GG_JLr   r  c                       e Zd ZdZdZdZdZy)NexxIEr  Nexxaa  (?x)
                        (?:
                            https?://api\.nexx(?:\.cloud|cdn\.com)/v3(?:\.\d)?/(?P<domain_id>\d+)/videos/byid/|
                            nexx:(?:(?P<domain_id_s>\d+):)?|
                            https?://arc\.nexx\.cloud/api/video/
                        )
                        (?P<id>\d+)
                    rl   Nr   r   r   r   r  r  ^  s    %GG FJLr   r  c                       e Zd ZdZdZdZdZy)NhkForSchoolBangumiIEyt_dlp.extractor.nhkNhkForSchoolBangumizbhttps?://www2\.nhk\.or\.jp/school/movie/(?P<type>bangumi|clip)\.cgi\?das_id=(?P<id>[a-zA-Z0-9_-]+)rl   Nr   r   r   r   r  r  e  s    $G#GzJLr   r  c                       e Zd ZdZdZdZdZy)NhkForSchoolProgramListIEr  NhkForSchoolProgramListzhttps?://www\.nhk\.or\.jp/school/(?P<id>(?:rika|syakai|kokugo|sansuu|seikatsu|doutoku|ongaku|taiiku|zukou|gijutsu|katei|sougou|eigo|tokkatsu|tokushi|sonota)/[a-zA-Z0-9_-]+)rm   Nr   r   r   r   r  r  l  s    $G'G CJLr   r  c                        e Zd ZdZdZdZdZdZy)NhkForSchoolSubjectIEr  NhkForSchoolSubjectzhttps?://www\.nhk\.or\.jp/school/(?P<id>rika|syakai|kokugo|sansuu|seikatsu|doutoku|ongaku|taiiku|zukou|gijutsu|katei|sougou|eigo|tokkatsu|tokushi|sonota)/?(?:[\?#].*)?$up   Portal page for each school subjects, like Japanese (kokugo, 国語) or math (sansuu/suugaku or 算数・数学)rm   Nr   r   r   r   r  r  s  s!    $G#G @J AGLr   r  c                       e Zd ZdZdZdZdZy)NhkRadioNewsPageIEr  NhkRadioNewsPagez/https?://www\.nhk\.or\.jp/radionews/?(?:$|[?#])rm   Nr   r   r   r   r  r  {  s    $G GEJLr   r  c                        e Zd ZdZdZdZdZdZy)NhkRadiruIEr  	NhkRadiruzhttps?://www\.nhk\.or\.jp/radio/(?:player/ondemand|ondemand/detail)\.html\?p=(?P<site>[\da-zA-Z]+)_(?P<corner>[\da-zA-Z]+)(?:_(?P<headline>[\da-zA-Z]+))?u   NHK らじる (Radiru/Rajiru)r   Nr   r   r   r   r  r    s    $GG uJ-GLr   r  c                       e Zd ZdZdZdZdZy)NhkRadiruLiveIEr  NhkRadiruLivez<https?://www\.nhk\.or\.jp/radio/player/\?ch=(?P<id>r[12]|fm)rl   Nr   r   r   r   r  r    s    $GGSJLr   r  c                       e Zd ZdZdZy)	NhkBaseIEr  NhkBaseNr   r   r   r   r  r    rk  r   r  c                        e Zd ZdZdZg dZdZy)NhkVodIEr  NhkVod)zuhttps?://www3\.nhk\.or\.jp/nhkworld/(?P<lang>[a-z]{2})/shows/(?:(?P<type>video)/)?(?P<id>\d{4}[\da-z]\d+)/?(?:$|[?#])zyhttps?://www3\.nhk\.or\.jp/nhkworld/(?P<lang>[a-z]{2})/(?:ondemand|shows)/(?P<type>audio)/(?P<id>[^/?#]+?-\d{8}-[\da-z]+)zghttps?://www3\.nhk\.or\.jp/nhkworld/(?P<lang>[a-z]{2})/ondemand/(?P<type>video)/(?P<id>\d{4}[\da-z]\d+)rl   Nr   r   r   r   r  r    s    $GG DJLr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )NhkVodProgramIEr  NhkVodProgramz(?x)
        https?://www3\.nhk\.or\.jp/nhkworld/(?P<lang>[a-z]{2})/(?:shows|tv)/
        (?:(?P<type>audio)/programs/)?(?P<id>\w+)/?
        (?:\?(?:[^#]+&)?type=(?P<episode_type>clip|(?:radio|tv)Episode))?rm   c                 P    t         j                  |      rdS t        |   |      S r   )r  r4   r   r   s     r   r4   zNhkVodProgramIE.suitable  r  r   r   r   s   @r   r  r    s.    $GG kJLJ Jr   r  c                       e Zd ZdZdZdZdZy)NickIEzyt_dlp.extractor.nickznick.comzHhttps?://(?:www\.)?nick\.com/(?:video-clips|episodes)/(?P<id>[\da-z]{6})rl   Nr   r   r   r   r  r    s    %GG^JLr   r  c                       e Zd ZdZdZy)NiconicoChannelPlusBaseIE$yt_dlp.extractor.niconicochannelplusNiconicoChannelPlusBaseNr   r   r   r   r  r    s    4G'Gr   r  c                       e Zd ZdZdZy) NiconicoChannelPlusChannelBaseIEr  NiconicoChannelPlusChannelBaseNr   r   r   r   r  r    s    4G.Gr   r  c                        e Zd ZdZdZdZdZdZy)!NiconicoChannelPlusChannelLivesIEr  z!NiconicoChannelPlus:channel:livesz3https?://nicochannel\.jp/(?P<id>[a-z\d\._-]+)/livesui   ニコニコチャンネルプラス - チャンネル - ライブリスト. nicochannel.jp/channel/livesrm   Nr   r   r   r   r  r    s    4G1GIJyGLr   r  c                        e Zd ZdZdZdZdZdZy)"NiconicoChannelPlusChannelVideosIEr  z"NiconicoChannelPlus:channel:videosz=https?://nicochannel\.jp/(?P<id>[a-z\d\._-]+)/videos(?:\?.*)?ug   ニコニコチャンネルプラス - チャンネル - 動画リスト. nicochannel.jp/channel/videosrm   Nr   r   r   r   r  r    s    4G2GTJwGLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)NiconicoChannelPlusIEr  NiconicoChannelPluszLhttps?://nicochannel\.jp/(?P<channel>[\w.-]+)/(?:video|live)/(?P<code>sm\w+)u$   ニコニコチャンネルプラスr   rl   Nr  r   r   r   r  r    s     4G#GbJ4GILr   r  c                       e Zd ZdZdZy)NiconicoPlaylistBaseIEyt_dlp.extractor.niconicoNiconicoPlaylistBaseNr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZy)NiconicoHistoryIEr  zniconico:historyzBhttps?://(?:www\.|sp\.)?nicovideo\.jp/my/(?P<id>history(?:/like)?)z1NicoNico user history or likes. Requires cookies.Nr,  r   r   r   r  r    s    )G GXJAGr   r  c                       e Zd ZdZdZdZy)NiconicoBaseIEr  NiconicoBaseniconicoNr{   r   r   r   r  r    r  r   r  c                   $    e Zd ZdZdZdZdZdZdZy)
NiconicoIEr  r  zWhttps?://(?:(?:embed|sp|www)\.)?nicovideo\.jp/(?:shorts|watch)/(?P<id>(?:[a-z]{2})?\d+)u   ニコニコ動画rl   Nr   r   r   r   r  r    s     )GGmJ"GNLr   r  c                   (    e Zd ZdZdZdZdZdZdZdZ	y)	NiconicoLiveIEr  zniconico:livezDhttps?://(?:sp\.)?live2?\.nicovideo\.jp/(?:watch|gate)/(?P<id>lv\d+)u   ニコニコ生放送r  r   rl   N
r   r   r   r$   ra   r=   r[   rZ   rf   ro   r   r   r   r  r    s%    )GG[J%GNILr   r  c                       e Zd ZdZdZdZdZy)NiconicoPlaylistIEr  zniconico:playlistzbhttps?://(?:(?:www\.|sp\.)?nicovideo\.jp|nico\.ms)/(?:user/\d+/)?(?:my/)?mylist/(?:#/)?(?P<id>\d+)rm   Nr   r   r   r   r  r    s    )G!G{JLr   r  c                       e Zd ZdZdZdZdZy)NiconicoSeriesIEr  zniconico:serieszShttps?://(?:(?:www\.|sp\.)?nicovideo\.jp(?:/user/\d+)?|nico\.ms)/series/(?P<id>\d+)rm   Nr   r   r   r   r  r    s    )GGlJLr   r  c                       e Zd ZdZdZdZdZy)NiconicoUserIEr  NiconicoUserzHhttps?://(?:www\.)?nicovideo\.jp/user/(?P<id>\d+)(?:/video)?/?(?:$|[#?])rm   Nr   r   r   r   r  r    s    )GG^JLr   r  c                       e Zd ZdZdZy)NicovideoSearchBaseIEr  NicovideoSearchBaseNr   r   r   r   r  r    s    )G#Gr   r  c                   $    e Zd ZdZdZdZdZdZdZy)NicovideoSearchDateIEr  znicovideo:search:datez=nicosearchdate(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zNico video search, newest firstnicosearchdaterm   Nr  r   r   r   r  r    s     )G%GRJ/G!JLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)NicovideoSearchIEr  znicovideo:searchz9nicosearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zNico video search
nicosearchrm   Nr  r   r   r   r  r    s     )G GNJ!GJLr   r  c                        e Zd ZdZdZdZdZdZy)NicovideoSearchURLIEr  znicovideo:search_urlz8https?://(?:www\.)?nicovideo\.jp/search/(?P<id>[^?#&]+)?zNico video search URLsrm   Nr   r   r   r   r  r  #  s    )G$GMJ&GLr   r  c                        e Zd ZdZdZdZdZdZy)NicovideoTagURLIEr  zniconico:tagz5https?://(?:www\.)?nicovideo\.jp/tag/(?P<id>[^?#&]+)?zNicoNico video tag URLsrm   Nr   r   r   r   r  r  +  s    )GGJJ'GLr   r  c                       e Zd ZdZdZdZdZy)NinaProtocolIEzyt_dlp.extractor.ninaprotocolNinaProtocolz=https?://(?:www\.)?ninaprotocol\.com/releases/(?P<id>[^/#?]+)rm   Nr   r   r   r   r  r  3  s    -GGRJLr   r  c                       e Zd ZdZdZdZy)NineCNineMediaIEr"  9c9mediaz09c9media:(?P<destination_code>[^:]+):(?P<id>\d+)Nr  r   r   r   r  r  :  s    /GGDJr   r  c                        e Zd ZdZdZdZdZdZy)	NineGagIEzyt_dlp.extractor.ninegag9gagz1https?://(?:www\.)?9gag\.com/gag/(?P<id>[^/?&#]+)9GAGrl   Nr   r   r   r   r  r  @  s    (GGFJGLr   r  c                       e Zd ZdZdZdZdZy)
NineNewsIEzyt_dlp.extractor.ninenews9NewszLhttps?://(?:www\.)?9news\.com\.au/(?:[\w-]+/){2,3}(?P<id>[\w-]+)/?(?:$|[?#])rl   Nr   r   r   r   r  r  H  s    )GGdJLr   r  c                       e Zd ZdZdZdZdZy)	NineNowIEzyt_dlp.extractor.ninenowz9now.com.auzVhttps?://(?:www\.)?9now\.com\.au/(?:[^/?#]+/){2}(?P<id>(?P<type>clip|episode)-[^/?#]+)rl   Nr   r   r   r   r  r  O  s    (GGlJLr   r  c                        e Zd ZdZdZdZdZdZy)
NintendoIEzyt_dlp.extractor.nintendoNintendozdhttps?://(?:www\.)?nintendo\.com/(?:(?P<locale>\w{2}(?:-\w{2})?)/)?nintendo-direct/(?P<slug>[^/?#]+)r  rl   Nrw  r   r   r   r  r  V  s    )GG{JILr   r  c                       e Zd ZdZdZdZdZy)NitterIEzyt_dlp.extractor.nitterNittera  https?://(?:3nzoldnxplag42gqjs23xvghtzf6t6yzssrtytnntc6ppc7xxuoneoad\.onion|nitter\.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd\.onion|nitter7bryz3jv7e3uekphigvmoyoem4al3fynerxkj22dmoxoq553qd\.onion|npf37k3mtzwxreiw52ccs5ay4e6qt2fkcs2ndieurdyn2cuzzsfyfvid\.onion|nitter\.v6vgyqpa7yefkorazmg5d5fimstmvm2vtbirt6676mt7qmllrcnwycqd\.onion|i23nv6w3juvzlw32xzoxcqzktegd4i4fu3nmnc2ewv4ggiu4ledwklad\.onion|26oq3gioiwcmfojub37nz5gzbkdiqp7fue5kvye7d4txv4ny6fb4wwid\.onion|vfaomgh4jxphpbdfizkm5gbtjahmei234giqj4facbwhrfjtcldauqad\.onion|iwgu3cv7ywf3gssed5iqtavmrlszgsxazkmwwnt4h2kdait75thdyrqd\.onion|erpnncl5nhyji3c32dcfmztujtl3xaddqb457jsbkulq24zqq7ifdgad\.onion|ckzuw5misyahmg7j5t5xwwuj3bwy62jfolxyux4brfflramzsvvd3syd\.onion|jebqj47jgxleaiosfcxfibx2xdahjettuydlxbg64azd4khsxv6kawid\.onion|nttr2iupbb6fazdpr2rgbooon2tzbbsvvkagkgkwohhodjzj43stxhad\.onion|nitraeju2mipeziu2wtcrqsxg7h62v5y4eqgwi75uprynkj74gevvuqd\.onion|nitter\.lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd\.onion|ibsboeui2im5o7dxnik3s5yghufumgy5abevtij5nbizequfpu4qi4ad\.onion|ec5nvbycpfa5k6ro77blxgkyrzbkv7uy6r5cngcbkadtjj2733nm3uyd\.onion|nitter\.i2p|u6ikd6zndl3c4dsdq4mmujpntgeevdk5qzkfb57r4tnfeccrn2qa\.b32\.i2p|nitterlgj3n5fgwesu3vxc5h67ruku33nqaoeoocae2mvlzhsu6k7fqd\.onion|nitter\.lacontrevoie\.fr|nitter\.fdn\.fr|nitter\.1d4\.us|nitter\.kavin\.rocks|nitter\.unixfox\.eu|nitter\.domain\.glass|nitter\.namazso\.eu|birdsite\.xanny\.family|nitter\.moomoo\.me|bird\.trom\.tf|nitter\.it|twitter\.censors\.us|nitter\.grimneko\.de|twitter\.076\.ne\.jp|nitter\.fly\.dev|notabird\.site|nitter\.weiler\.rocks|nitter\.sethforprivacy\.com|nitter\.cutelab\.space|nitter\.nl|nitter\.mint\.lgbt|nitter\.bus\-hit\.me|nitter\.esmailelbob\.xyz|tw\.artemislena\.eu|nitter\.winscloud\.net|nitter\.tiekoetter\.com|nitter\.spaceint\.fr|nitter\.privacy\.com\.de|nitter\.poast\.org|nitter\.bird\.froth\.zone|nitter\.dcs0\.hu|twitter\.dr460nf1r3\.org|nitter\.garudalinux\.org|twitter\.femboy\.hu|nitter\.cz|nitter\.privacydev\.net|nitter\.evil\.site|tweet\.lambda\.dance|nitter\.kylrth\.com|nitter\.foss\.wtf|nitter\.priv\.pw|nitter\.tokhmi\.xyz|nitter\.catalyst\.sx|unofficialbird\.com|nitter\.projectsegfau\.lt|nitter\.eu\.projectsegfau\.lt|singapore\.unofficialbird\.com|canada\.unofficialbird\.com|india\.unofficialbird\.com|nederland\.unofficialbird\.com|uk\.unofficialbird\.com|n\.l5\.ca|nitter\.slipfox\.xyz|nitter\.soopy\.moe|nitter\.qwik\.space|read\.whatever\.social|nitter\.rawbit\.ninja|nt\.vern\.cc|ntr\.odyssey346\.dev|nitter\.ir|nitter\.privacytools\.io|nitter\.sneed\.network|n\.sneed\.network|nitter\.manasiwibi\.com|nitter\.smnz\.de|nitter\.twei\.space|nitter\.inpt\.fr|nitter\.d420\.de|nitter\.caioalonso\.com|nitter\.at|nitter\.drivet\.xyz|nitter\.pw|nitter\.nicfab\.eu|bird\.habedieeh\.re|nitter\.hostux\.net|nitter\.adminforge\.de|nitter\.platypush\.tech|nitter\.mask\.sh|nitter\.pufe\.org|nitter\.us\.projectsegfau\.lt|nitter\.arcticfoxes\.net|t\.com\.sb|nitter\.kling\.gg|nitter\.ktachibana\.party|nitter\.riverside\.rocks|nitter\.girlboss\.ceo|nitter\.lunar\.icu|twitter\.moe\.ngo|nitter\.freedit\.eu|ntr\.frail\.duckdns\.org|nitter\.librenode\.org|n\.opnxng\.com|nitter\.plus\.st|nitter\.ethibox\.fr|nitter\.net|is\-nitter\.resolv\.ee|lu\-nitter\.resolv\.ee|nitter\.13ad\.de|nitter\.40two\.app|nitter\.cattube\.org|nitter\.cc|nitter\.dark\.fail|nitter\.himiko\.cloud|nitter\.koyu\.space|nitter\.mailstation\.de|nitter\.mastodont\.cat|nitter\.tedomum\.net|nitter\.tokhmi\.xyz|nitter\.weaponizedhumiliation\.com|nitter\.vxempire\.xyz|tweet\.lambda\.dance|nitter\.ca|nitter\.42l\.fr|nitter\.pussthecat\.org|nitter\.nixnet\.services|nitter\.eu|nitter\.actionsack\.com|nitter\.hu|twitr\.gq|nittereu\.moomoo\.me|bird\.from\.tf|twitter\.grimneko\.de|nitter\.alefvanoon\.xyz|n\.hyperborea\.cloud|twitter\.mstdn\.social|nitter\.silkky\.cloud|nttr\.stream|fuckthesacklers\.network|nitter\.govt\.land|nitter\.datatunnel\.xyz|de\.nttr\.stream|twtr\.bch\.bar|nitter\.exonip\.de|nitter\.mastodon\.pro|nitter\.notraxx\.ch|nitter\.skrep\.in|nitter\.snopyta\.org)/(?P<uploader_id>.+)/status/(?P<id>[0-9]+)(#.)?rl   Nr   r   r   r   r  r  ^  s    'GG kDJLr   r  c                       e Zd ZdZdZdZdZy)NobelPrizeIEzyt_dlp.extractor.nobelprize
NobelPrizez?https?://(?:(?:mediaplayer|www)\.)?nobelprize\.org/mediaplayer/rl   Nr   r   r   r   r	  r	  e      +GGTJLr   r	  c                       e Zd ZdZdZdZdZy)NoicePodcastIEzyt_dlp.extractor.noiceNoicePodcastz6https?://open\.noice\.id/content/(?P<id>[a-fA-F0-9-]+)rl   Nr   r   r   r   r  r  l  r5  r   r  c                        e Zd ZdZdZdZdZdZy)
NonkTubeIEzyt_dlp.extractor.nonktubeNonkTubezahttps?://(?:www\.)?nonktube\.com/(?:(?:video|embed)/|media/nuevo/embed\.php\?.*?\bid=)(?P<id>\d+)r   rl   Nrw  r   r   r   r  r  s  s    )GGzJILr   r  c                        e Zd ZdZdZdZdZdZy)NoodleMagazineIEzyt_dlp.extractor.noodlemagazineNoodleMagazinezChttps?://(?:www|adult\.)?noodlemagazine\.com/watch/(?P<id>[0-9-_]+)r   rl   Nrw  r   r   r   r  r  {  s    /GGXJILr   r  c                       e Zd ZdZdZdZdZy)NovaEmbedIEyt_dlp.extractor.nova	NovaEmbedz;https?://media(?:tn)?\.cms\.nova\.cz/embed/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r    s    %GGQJLr   r  c                        e Zd ZdZdZdZdZdZy)NovaIEr  Novazhttps?://(?:[^.]+\.)?(?P<site>tv(?:noviny)?|tn|novaplus|vymena|fanda|krasna|doma|prask)\.nova\.cz/(?:[^/]+/)+(?P<id>[^/]+?)(?:\.html|/|$)uI   TN.cz, Prásk.tv, Nova.cz, Novaplus.cz, FANDA.tv, Krásná.cz and Doma.czrl   Nr   r   r   r   r  r    s    %GG aJYGLr   r  c                       e Zd ZdZdZdZdZy)
NovaPlayIEzyt_dlp.extractor.novaplayNovaPlayz0https?://play\.nova\.bg/video/[^?#]+/(?P<id>\d+)rl   Nr   r   r   r   r  r        )GGFJLr   r  c                       e Zd ZdZdZdZdZy)
NowCanalIEzyt_dlp.extractor.nowcanalNowCanalzBhttps?://(?:www\.)?nowcanal\.pt(?:/[\w-]+)+/detalhe/(?P<id>[\w-]+)rl   Nr   r   r   r   r!  r!    s    )GGYJLr   r!  c                       e Zd ZdZdZy)NownessBaseIEyt_dlp.extractor.nownessNownessBaseNr   r   r   r   r$  r$    r   r   r$  c                       e Zd ZdZdZdZdZy)	NownessIEr%  nownesszchttps?://(?:(?:www|cn)\.)?nowness\.com/(?:story|(?:series|category)/[^/]+)/(?P<id>[^/]+?)(?:$|[?#])rl   Nr   r   r   r   r(  r(    s    (GGxJLr   r(  c                       e Zd ZdZdZdZdZy)NownessPlaylistIEr%  znowness:playlistz;https?://(?:(?:www|cn)\.)?nowness\.com/playlist/(?P<id>\d+)rm   Nr   r   r   r   r+  r+    s    (G GQJLr   r+  c                       e Zd ZdZdZdZdZy)NownessSeriesIEr%  znowness:serieszFhttps?://(?:(?:www|cn)\.)?nowness\.com/series/(?P<id>[^/]+?)(?:$|[?#])rm   Nr   r   r   r   r-  r-    s    (GG[JLr   r-  c                        e Zd ZdZdZdZdZdZy)NozIEzyt_dlp.extractor.nozNozz0https?://(?:www\.)?noz\.de/video/(?P<id>[0-9]+)/Frl   Nr]  r   r   r   r/  r/    s    $GGEJHLr   r/  c                       e Zd ZdZdZdZdZy)NprIEzyt_dlp.extractor.nprNprzMhttps?://(?:www\.)?npr\.org/(?:sections/[^/]+/)?\d{4}/\d{2}/\d{2}/(?P<id>\d+)r   Nr   r   r   r   r2  r2    s    $GGfJLr   r2  c                   $    e Zd ZdZdZdZdZdZdZy)NubilesPornIEzyt_dlp.extractor.nubilespornNubilesPornz(?x)
        https://members\.nubiles-porn\.com/video/watch/(?P<id>\d+)
        (?:/(?P<display_id>[\w\-]+-s(?P<season>\d+)e(?P<episode>\d+)))?
    znubiles-pornr   rl   Nr  r   r   r   r5  r5    s#    ,GG rJ#NILr   r5  c                        e Zd ZdZdZdZdZdZy)NuvidIEzyt_dlp.extractor.nuvidNuvidz3https?://(?:www|m)\.nuvid\.com/video/(?P<id>[0-9]+)r   rl   Nrw  r   r   r   r8  r8    s    &GGHJILr   r8  c                       e Zd ZdZdZdZdZy)OCWMITIEyt_dlp.extractor.mitzocw.mit.eduz5https?://ocw\.mit\.edu/courses/(?P<topic>[a-z0-9\-]+)rl   Nr   r   r   r   r;  r;    s    $GGKJLr   r;  c                        e Zd ZdZdZdZdZdZy)ORFFM4StoryIEyt_dlp.extractor.orfzorf:fm4:storyz)https?://fm4\.orf\.at/stories/(?P<id>\d+)zfm4.orf.at storiesrm   Nr   r   r   r   r>  r>    s    $GG?J"GLr   r>  c                        e Zd ZdZdZdZdZdZy)	ORFIPTVIEr?  zorf:iptvz1https?://iptv\.orf\.at/(?:#/)?stories/(?P<id>\d+)ziptv.ORF.atrl   Nr   r   r   r   rA  rA    s    $GGGJGLr   rA  c                       e Zd ZdZdZdZdZy)ORFONIEr?  zorf:onz<https?://on\.orf\.at/video/(?P<id>\d+)(?:/(?P<segment>\d+))?r   Nr   r   r   r   rC  rC    s    $GGSJLr   rC  c                       e Zd ZdZdZdZdZy)ORFPodcastIEr?  zorf:podcastzhttps?://sound\.orf\.at/podcast/(?P<station>bgl|fm4|ktn|noe|oe1|oe3|ooe|sbg|stm|tir|tv|vbg|wie)/(?P<show>[\w-]+)/(?P<id>[\w-]+)rl   Nr   r   r   r   rE  rE    s    $GG WJLr   rE  c                       e Zd ZdZdZdZdZy)
ORFRadioIEr?  z	orf:radioa=  (?x)
        https?://(?:
            (?P<station>fm4|noe|wien|burgenland|ooe|steiermark|kaernten|salzburg|tirol|vorarlberg|oe3|oe1)\.orf\.at/player|
            radiothek\.orf\.at/(?P<station2>fm4|noe|wien|burgenland|ooe|steiermark|kaernten|salzburg|tirol|vorarlberg|oe3|oe1)
        )/(?P<date>[0-9]+)/(?P<show>\w+)r   Nr   r   r   r   rG  rG    s    $GG ZJLr   rG  c                       e Zd ZdZdZdZdZy)OdnoklassnikiIEzyt_dlp.extractor.odnoklassnikiOdnoklassnikia  (?x)
                https?://
                    (?:(?:www|m|mobile)\.)?
                    (?:odnoklassniki|ok)\.ru/
                    (?:
                        video(?P<embed>embed)?/|
                        web-api/video/moviePlayer/|
                        live/|
                        dk\?.*?st\.mvId=
                    )
                    (?P<id>[\d-]+)
                rl   Nr   r   r   r   rI  rI     s    .GG kJLr   rI  c                       e Zd ZdZdZdZdZy)OfTVIEyt_dlp.extractor.oftvOfTVz+https?://(?:www\.)?of\.tv/video/(?P<id>\w+)rl   Nr   r   r   r   rL  rL     s    %GGAJLr   rL  c                       e Zd ZdZdZdZdZy)OfTVPlaylistIErM  OfTVPlaylistzDhttps?://(?:www\.)?of\.tv/creators/(?P<id>[a-zA-Z0-9-]+)/?(?:$|[?#])rm   Nr   r   r   r   rP  rP     s    %GGYJLr   rP  c                        e Zd ZdZdZdZdZdZy)OktoberfestTVIEzyt_dlp.extractor.oktoberfesttvOktoberfestTVzGhttps?://(?:www\.)?oktoberfest-tv\.de/[^/]+/[^/]+/video/(?P<id>[^/?#]+)Frl   Nr]  r   r   r   rS  rS     s    .GG\JHLr   rS  c                       e Zd ZdZdZdZdZy)OlympicsReplayIEzyt_dlp.extractor.olympicsOlympicsReplayzshttps?://(?:www\.)?olympics\.com/[a-z]{2}/(?:paris-2024/)?(?:replay|videos?|original-series/episode)/(?P<id>[\w-]+)rl   Nr   r   r   r   rV  rV  #   s    )GG JJLr   rV  c                       e Zd ZdZdZdZdZy)OmnyfmIEyt_dlp.extractor.omnyfmOmnyfmzqhttps?://omny\.fm/shows/(?P<uploader_id>[\w-]+)/(?P<id>(?!playlists(?:[/?#"\']|$))[\w-]+)(?:/embed)?(?=[?#"\']|$)rl   Nr   r   r   r   rY  rY  *   s    'GG LJLr   rY  c                       e Zd ZdZdZy)OmnyfmPlaylistBaseIErZ  OmnyfmPlaylistBaseNr   r   r   r   r]  r]  1   rJ  r   r]  c                       e Zd ZdZdZdZdZy)OmnyfmPlaylistIErZ  OmnyfmPlaylistzghttps?://omny\.fm/shows/(?P<uploader_id>[\w-]+)/playlists(?:/(?P<id>[\w-]+))?(?:/embed)?/?(?=[?#"\']|$)rm   Nr   r   r   r   r`  r`  6   s    'GGJLr   r`  c                       e Zd ZdZdZdZdZy)OmnyfmShowIErZ  
OmnyfmShowz2https?://omny\.fm/shows/(?P<id>[\w-]+)/?(?:[?#]|$)rm   Nr   r   r   r   rc  rc  =   s    'GGGJLr   rc  c                   $    e Zd ZdZdZg dZdZdZy)On24IEzyt_dlp.extractor.on24on24)zChttps?://event\.on24\.com/wcc/r/(?P<id>\d{7})/(?P<key>[0-9A-F]{32})zhttps?://event\.on24\.com/eventRegistration/console/(?:EventConsoleApollo\.jsp|apollox/mainEvent/?)\?(?:[^#]*&)?eventid=(?P<id>\d{7})&(?:[^#]+&)?key=(?P<key>[0-9A-F]{32})zhttps?://event\.on24\.com/eventRegistration/EventLobbyServlet/?\?(?:[^#]*&)?eventid=(?P<id>\d{7})&(?:[^#]+&)?key=(?P<key>[0-9A-F]{32})ON24rl   Nr   r   r   r   rf  rf  D   s    %GG ]JGLr   rf  c                       e Zd ZdZdZdZdZy)OnDemandChinaEpisodeIEzyt_dlp.extractor.odkmediaOnDemandChinaEpisodezThttps?://www\.ondemandchina\.com/\w+/watch/(?P<series>[\w-]+)/(?P<id>ep-(?P<ep>\d+))rl   Nr   r   r   r   rj  rj  L   s    )G$GlJLr   rj  c                        e Zd ZdZdZdZdZdZy)OnDemandKoreaIEyt_dlp.extractor.ondemandkoreaOnDemandKoreazehttps?://(?:www\.)?ondemandkorea\.com/(?:en/)?player/vod/[a-z0-9-]+\?(?:[^#]+&)?contentId=(?P<id>\d+)r   rl   Nrw  r   r   r   rm  rm  S   s    .GG|JILr   rm  c                       e Zd ZdZdZdZdZy)OnDemandKoreaProgramIErn  OnDemandKoreaProgramzRhttps?://(?:www\.)?ondemandkorea\.com/(?:en/)?player/vod/(?P<id>[a-z0-9-]+)(?:$|#)rm   Nr   r   r   r   rq  rq  [   s    .G$GgJLr   rq  c                       e Zd ZdZdZdZdZy)OneFootballIEzyt_dlp.extractor.onefootballOneFootballzGhttps?://(?:www\.)?onefootball\.com/[a-z]{2}/video/[^/&?#]+-(?P<id>\d+)rl   Nr   r   r   r   rt  rt  b   r~  r   rt  c                        e Zd ZdZdZdZdZdZy)OneNewsNZIEzyt_dlp.extractor.onenewsnz1NewszEhttps?://(?:www\.)?(?:1|one)news\.co\.nz/\d+/\d+/\d+/(?P<id>[^/?#&]+)z1news.co.nz article videosrm   Nr   r   r   r   rw  rw  i   s    *GG^J*GLr   rw  c                       e Zd ZdZdZdZdZy)OnePlacePodcastIEzyt_dlp.extractor.oneplaceOnePlacePodcastzAhttps?://www\.oneplace\.com/[\w]+/[^/]+/listen/[\w-]+-(?P<id>\d+)rl   Nr   r   r   r   rz  rz  q   s    )GGYJLr   rz  c                       e Zd ZdZdZdZdZy)OnetChannelIEr  zonet.tv:channelzOhttps?://(?:(?:www\.)?onet\.tv|onet100\.vod\.pl)/[a-z]/(?P<id>[a-z]+)(?:[?#]|$)rm   Nr   r   r   r   r}  r}  x   s    %GGfJLr   r}  c                       e Zd ZdZdZdZdZy)OnetIEr  zonet.tvzjhttps?://(?:(?:www\.)?onet\.tv|onet100\.vod\.pl)/[a-z]/[a-z]+/(?P<display_id>[0-9a-z-]+)/(?P<id>[0-9a-z]+)rl   Nr   r   r   r   r  r     s    %GG BJLr   r  c                       e Zd ZdZdZdZy)	OnetMVPIEr  OnetMVPzonetmvp:(?P<id>\d+\.\d+)Nr  r   r   r   r  r     s    %GG.Jr   r  c                       e Zd ZdZdZdZdZy)OnetPlIEr  zonet.plz[https?://(?:[^/]+\.)?(?:onet|businessinsider\.com|plejada)\.pl/(?:[^/]+/)+(?P<id>[0-9a-z]+)rl   Nr   r   r   r   r  r     s    %GGqJLr   r  c                   @     e Zd ZdZdZdZdZdZdZe	 fd       Z
 xZS )OnsenIEzyt_dlp.extractor.onsenonsenz=https?://(?:(?:share|www)\.)onsen\.ag/program/(?P<id>[^/?#]+)u<   インターネットラジオステーション＜音泉＞r   c                    dd l }dd l}|j                  j                  |j                  j	                  |      j
                        j                  d      x}r%|j                  |d    d      j                         S t        | )  |      S )Nr   cz===)base64urllib.parseparser   urlparsequeryrn   urlsafe_b64decodedecoder   rK   )r   r3   r  urllibr  r   s        r   rK   zOnsenIE.get_temp_id   sw    %%fll&;&;C&@&F&FGKKCPP1P++qugSM:AACCw"3''r   )r   r   r   r$   ra   r=   r[   rZ   ro   rr   rK   r   r   s   @r   r  r     s3    &GGRJLGNL( (r   r  c                       e Zd ZdZdZdZy)OpenRecBaseIEyt_dlp.extractor.openrecOpenRecBase	mellowfanNr{   r   r   r   r  r     s    (GG Nr   r  c                        e Zd ZdZdZdZdZdZy)OpenRecCaptureIEr  zmellowfan:capturezQhttps?://(?:www\.)?(?:mellow-fan\.com|openrec\.tv)/(?:m/)?capture/(?P<id>[^/?#]+)r  rl   Nr   r   r   r   r  r     s    (G!GgJ NLr   r  c                        e Zd ZdZdZdZdZdZy)OpenRecChannelIEr  zmellowfan:channelzOhttps?://(?:www\.)?(?:mellow-fan\.com|openrec\.tv)/(?:m/)?user/(?P<id>[^/?#]+)$r  rm   Nr   r   r   r   r  r     s    (G!GeJ NLr   r  c                        e Zd ZdZdZdZdZdZy)OpenRecChannelSearchIEr  zmellowfan:channel:searchz}https?://(?:www\.)?(?:mellow-fan\.com|openrec\.tv)/(?:m/)?user/(?P<id>[^/?#]+)/search(?:/(?P<type>capture|movie))?(?:[/?#]|$)r  rm   Nr   r   r   r   r  r     s    (G(G TJ NLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)	OpenRecIEr  r  zNhttps?://(?:www\.)?(?:mellow-fan\.com|openrec\.tv)/(?:m/)?live/(?P<id>[^/?#]+)z
mellow-fanrl   Nr   r   r   r   r  r     s     (GGdJG NLr   r  c                        e Zd ZdZdZdZdZdZy)OpenRecMovieIEr  zmellowfan:moviezOhttps?://(?:www\.)?(?:mellow-fan\.com|openrec\.tv)/(?:m/)?movie/(?P<id>[^/?#]+)r  rl   Nr   r   r   r   r  r     s    (GGeJ NLr   r  c                        e Zd ZdZdZdZdZdZy)OpenRecPlaylistIEr  zmellowfan:playlistz_https?://(?:www\.)?(?:mellow-fan\.com|openrec\.tv)/(?:m/)?user/[^/?#]+/playlist/(?P<id>[^/?#]+)r  rm   Nr   r   r   r   r  r     s    (G"GuJ NLr   r  c                       e Zd ZdZdZy)OpencastBaseIEyt_dlp.extractor.opencastOpencastBaseNr   r   r   r   r  r     r  r   r  c                       e Zd ZdZdZdZdZy)
OpencastIEr  Opencasta  (?x)
        https?://(?P<host>(?:
                            opencast\.informatik\.kit\.edu|
                            electures\.uni-muenster\.de|
                            oc-presentation\.ltcc\.tuwien\.ac\.at|
                            medien\.ph-noe\.ac\.at|
                            oc-video\.ruhr-uni-bochum\.de|
                            oc-video1\.ruhr-uni-bochum\.de|
                            opencast\.informatik\.uni-goettingen\.de|
                            heicast\.uni-heidelberg\.de|
                            opencast\.hawk\.de:8080|
                            opencast\.hs-osnabrueck\.de|
                            video[0-9]+\.virtuos\.uni-osnabrueck\.de|
                            opencast\.uni-koeln\.de|
                            media\.opencast\.hochschule-rhein-waal\.de|
                            matterhorn\.dce\.harvard\.edu|
                            hs-harz\.opencast\.uni-halle\.de|
                            videocampus\.urz\.uni-leipzig\.de|
                            media\.uct\.ac\.za|
                            vid\.igb\.illinois\.edu|
                            cursosabertos\.c3sl\.ufpr\.br|
                            mcmedia\.missioncollege\.org|
                            clases\.odon\.edu\.uy|
                            oc-p\.uni-jena\.de
                        ))/paella[0-9]*/ui/watch\.html\?
        (?:[^#]+&)?id=(?P<id>[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12})rl   Nr   r   r   r   r  r     s    )GG uJLr   r  c                       e Zd ZdZdZdZdZy)OpencastPlaylistIEr  OpencastPlaylista  (?x)
        https?://(?P<host>(?:
                            opencast\.informatik\.kit\.edu|
                            electures\.uni-muenster\.de|
                            oc-presentation\.ltcc\.tuwien\.ac\.at|
                            medien\.ph-noe\.ac\.at|
                            oc-video\.ruhr-uni-bochum\.de|
                            oc-video1\.ruhr-uni-bochum\.de|
                            opencast\.informatik\.uni-goettingen\.de|
                            heicast\.uni-heidelberg\.de|
                            opencast\.hawk\.de:8080|
                            opencast\.hs-osnabrueck\.de|
                            video[0-9]+\.virtuos\.uni-osnabrueck\.de|
                            opencast\.uni-koeln\.de|
                            media\.opencast\.hochschule-rhein-waal\.de|
                            matterhorn\.dce\.harvard\.edu|
                            hs-harz\.opencast\.uni-halle\.de|
                            videocampus\.urz\.uni-leipzig\.de|
                            media\.uct\.ac\.za|
                            vid\.igb\.illinois\.edu|
                            cursosabertos\.c3sl\.ufpr\.br|
                            mcmedia\.missioncollege\.org|
                            clases\.odon\.edu\.uy|
                            oc-p\.uni-jena\.de
                        ))(?:
            /engage/ui/index\.html\?(?:[^#]+&)?epFrom=|
            /ltitools/index\.html\?(?:[^#]+&)?series=
        )(?P<id>[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12})rm   Nr   r   r   r   r  r     s    )G G JLr   r  c                       e Zd ZdZdZdZy)OsnatelTVBaseIErH  OsnatelTVBase	osnateltvNr{   r   r   r   r  r         'GG Nr   r  c                       e Zd ZdZdZdZdZy)OsnatelTVIErH  	OsnatelTVz(?x)https?://(?:www\.)?tvonline\.osnatel\.de/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  NrS  r   r   r   r  r     s    'GG sJ Nr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )OsnatelTVLiveIErH  OsnatelTVLivez(?x)https?://(?:www\.)?tvonline\.osnatel\.de/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 P    t         j                  |      rdS t        |   |      S r   )r  r4   r   r   s     r   r4   zOsnatelTVLiveIE.suitable!  r  r   r  r   s   @r   r  r     s.    'GG hJ NM Mr   r  c                       e Zd ZdZdZdZdZy)OsnatelTVRecordingsIErH  OsnatelTVRecordingsz|(?x)https?://(?:www\.)?tvonline\.osnatel\.de/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  NrS  r   r   r   r  r  !  s    'G#G XJ Nr   r  c                       e Zd ZdZdZdZdZy)OutsideTVIEzyt_dlp.extractor.outsidetv	OutsideTVz`https?://(?:www\.)?outsidetv\.com/(?:[^/]+/)*?play/[a-zA-Z0-9]{8}/\d+/\d+/(?P<id>[a-zA-Z0-9]{8})rl   Nr   r   r   r   r  r  !  s    *GGwJLr   r  c                       e Zd ZdZdZdZdZy)
OwnCloudIEzyt_dlp.extractor.owncloudOwnCloudzThttps?://(?:(?:[^\.]+\.)?sciebo\.de|cloud\.uni-koblenz-landau\.de)/s/(?P<id>[\w.-]+)rl   Nr   r   r   r   r  r  !  s    )GGmJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)PBSIEyt_dlp.extractor.pbspbsa  (?x)https?://
        (?:
            # Player
            (?:video|player)\.pbs\.org/(?:widget/)?partnerplayer/(?P<player_id>[^/?#]+) |
            # Direct video URL, or article with embedded player
            (?:(?:video|www|player)\.pbs\.org|video\.aptv\.org|video\.gpb\.org|video\.mpbonline\.org|video\.wnpt\.org|video\.wfsu\.org|video\.wsre\.org|video\.wtcitv\.org|video\.pba\.org|video\.alaskapublic\.org|video\.azpbs\.org|portal\.knme\.org|video\.vegaspbs\.org|watch\.aetn\.org|video\.ket\.org|video\.wkno\.org|video\.lpb\.org|videos\.oeta\.tv|video\.optv\.org|watch\.wsiu\.org|video\.keet\.org|pbs\.kixe\.org|video\.kpbs\.org|video\.kqed\.org|vids\.kvie\.org|(?:video\.|www\.)pbssocal\.org|video\.valleypbs\.org|video\.cptv\.org|watch\.knpb\.org|video\.soptv\.org|video\.rmpbs\.org|video\.kenw\.org|video\.kued\.org|video\.wyomingpbs\.org|video\.cpt12\.org|video\.kbyueleven\.org|(?:video\.|www\.)thirteen\.org|video\.wgbh\.org|video\.wgby\.org|watch\.njtvonline\.org|watch\.wliw\.org|video\.mpt\.tv|watch\.weta\.org|video\.whyy\.org|video\.wlvt\.org|video\.wvpt\.net|video\.whut\.org|video\.wedu\.org|video\.wgcu\.org|video\.wpbt2\.org|video\.wucftv\.org|video\.wuft\.org|watch\.wxel\.org|video\.wlrn\.org|video\.wusf\.usf\.edu|video\.scetv\.org|video\.unctv\.org|video\.pbshawaii\.org|video\.idahoptv\.org|video\.ksps\.org|watch\.opb\.org|watch\.nwptv\.org|video\.will\.illinois\.edu|video\.networkknowledge\.tv|video\.wttw\.com|video\.iptv\.org|video\.ninenet\.org|video\.wfwa\.org|video\.wfyi\.org|video\.mptv\.org|video\.wnin\.org|video\.wnit\.org|video\.wpt\.org|video\.wvut\.org|video\.weiu\.net|video\.wqpt\.org|video\.wycc\.org|video\.wipb\.org|video\.indianapublicmedia\.org|watch\.cetconnect\.org|video\.thinktv\.org|video\.wbgu\.org|video\.wgvu\.org|video\.netnebraska\.org|video\.pioneer\.org|watch\.sdpb\.org|video\.tpt\.org|watch\.ksmq\.org|watch\.kpts\.org|watch\.ktwu\.org|watch\.easttennesseepbs\.org|video\.wcte\.tv|video\.wljt\.org|video\.wosu\.org|video\.woub\.org|video\.wvpublic\.org|video\.wkyupbs\.org|video\.kera\.org|video\.mpbn\.net|video\.mountainlake\.org|video\.nhptv\.org|video\.vpt\.org|video\.witf\.org|watch\.wqed\.org|video\.wmht\.org|video\.deltabroadcasting\.org|video\.dptv\.org|video\.wcmu\.org|video\.wkar\.org|wnmuvideo\.nmu\.edu|video\.wdse\.org|video\.wgte\.org|video\.lptv\.org|video\.kmos\.org|watch\.montanapbs\.org|video\.krwg\.org|video\.kacvtv\.org|video\.kcostv\.org|video\.wcny\.org|video\.wned\.org|watch\.wpbstv\.org|video\.wskg\.org|video\.wxxi\.org|video\.wpsu\.org|on-demand\.wvia\.org|video\.wtvi\.org|video\.westernreservepublicmedia\.org|video\.ideastream\.org|video\.kcts9\.org|video\.basinpbs\.org|video\.houstonpbs\.org|video\.klrn\.org|video\.klru\.tv|video\.wtjx\.org|video\.ideastations\.org|video\.kbtc\.org)/(?:
              (?:(?:vir|port)alplayer|video)/(?P<id>[0-9]+)(?:[?/#]|$) |
              (?:[^/?#]+/){1,5}(?P<presumptive_id>[^/?#]+?)(?:\.html)?/?(?:$|[?#])
            )
        )
    ap  Public Broadcasting Service (PBS) and member stations: PBS: Public Broadcasting Service, APT - Alabama Public Television (WBIQ), GPB/Georgia Public Broadcasting (WGTV), Mississippi Public Broadcasting (WMPN), Nashville Public Television (WNPT), WFSU-TV (WFSU), WSRE (WSRE), WTCI (WTCI), WPBA/Channel 30 (WPBA), Alaska Public Media (KAKM), Arizona PBS (KAET), KNME-TV/Channel 5 (KNME), Vegas PBS (KLVX), AETN/ARKANSAS ETV NETWORK (KETS), KET (WKLE), WKNO/Channel 10 (WKNO), LPB/LOUISIANA PUBLIC BROADCASTING (WLPB), OETA (KETA), Ozarks Public Television (KOZK), WSIU Public Broadcasting (WSIU), KEET TV (KEET), KIXE/Channel 9 (KIXE), KPBS San Diego (KPBS), KQED (KQED), KVIE Public Television (KVIE), PBS SoCal/KOCE (KOCE), ValleyPBS (KVPT), CONNECTICUT PUBLIC TELEVISION (WEDH), KNPB Channel 5 (KNPB), SOPTV (KSYS), Rocky Mountain PBS (KRMA), KENW-TV3 (KENW), KUED Channel 7 (KUED), Wyoming PBS (KCWC), Colorado Public Television / KBDI 12 (KBDI), KBYU-TV (KBYU), Thirteen/WNET New York (WNET), WGBH/Channel 2 (WGBH), WGBY (WGBY), NJTV Public Media NJ (WNJT), WLIW21 (WLIW), mpt/Maryland Public Television (WMPB), WETA Television and Radio (WETA), WHYY (WHYY), PBS 39 (WLVT), WVPT - Your Source for PBS and More! (WVPT), Howard University Television (WHUT), WEDU PBS (WEDU), WGCU Public Media (WGCU), WPBT2 (WPBT), WUCF TV (WUCF), WUFT/Channel 5 (WUFT), WXEL/Channel 42 (WXEL), WLRN/Channel 17 (WLRN), WUSF Public Broadcasting (WUSF), ETV (WRLK), UNC-TV (WUNC), PBS Hawaii - Oceanic Cable Channel 10 (KHET), Idaho Public Television (KAID), KSPS (KSPS), OPB (KOPB), KWSU/Channel 10 & KTNW/Channel 31 (KWSU), WILL-TV (WILL), Network Knowledge - WSEC/Springfield (WSEC), WTTW11 (WTTW), Iowa Public Television/IPTV (KDIN), Nine Network (KETC), PBS39 Fort Wayne (WFWA), WFYI Indianapolis (WFYI), Milwaukee Public Television (WMVS), WNIN (WNIN), WNIT Public Television (WNIT), WPT (WPNE), WVUT/Channel 22 (WVUT), WEIU/Channel 51 (WEIU), WQPT-TV (WQPT), WYCC PBS Chicago (WYCC), WIPB-TV (WIPB), WTIU (WTIU), CET  (WCET), ThinkTVNetwork (WPTD), WBGU-TV (WBGU), WGVU TV (WGVU), NET1 (KUON), Pioneer Public Television (KWCM), SDPB Television (KUSD), TPT (KTCA), KSMQ (KSMQ), KPTS/Channel 8 (KPTS), KTWU/Channel 11 (KTWU), East Tennessee PBS (WSJK), WCTE-TV (WCTE), WLJT, Channel 11 (WLJT), WOSU TV (WOSU), WOUB/WOUC (WOUB), WVPB (WVPB), WKYU-PBS (WKYU), KERA 13 (KERA), MPBN (WCBB), Mountain Lake PBS (WCFE), NHPTV (WENH), Vermont PBS (WETK), witf (WITF), WQED Multimedia (WQED), WMHT Educational Telecommunications (WMHT), Q-TV (WDCQ), WTVS Detroit Public TV (WTVS), CMU Public Television (WCMU), WKAR-TV (WKAR), WNMU-TV Public TV 13 (WNMU), WDSE - WRPT (WDSE), WGTE TV (WGTE), Lakeland Public Television (KAWE), KMOS-TV - Channels 6.1, 6.2 and 6.3 (KMOS), MontanaPBS (KUSM), KRWG/Channel 22 (KRWG), KACV (KACV), KCOS/Channel 13 (KCOS), WCNY/Channel 24 (WCNY), WNED (WNED), WPBS (WPBS), WSKG Public TV (WSKG), WXXI (WXXI), WPSU (WPSU), WVIA Public Media Studios (WVIA), WTVI (WTVI), Western Reserve PBS (WNEO), WVIZ/PBS ideastream (WVIZ), KCTS 9 (KCTS), Basin PBS (KPBT), KUHT / Channel 8 (KUHT), KLRN (KLRN), KLRU (KLRU), WTJX Channel 12 (WTJX), WCVE PBS (WCVE), KBTC Public Television (KBTC)
   r   Nr  r   r   r   r  r  !  s&    $GG S3J A2GILr   r  c                       e Zd ZdZdZdZdZy)	PBSKidsIEr  PBSKidsz8https?://(?:www\.)?pbskids\.org/video/[\w-]+/(?P<id>\d+)rl   Nr   r   r   r   r  r  %!  s    $GGOJLr   r  c                       e Zd ZdZdZdZdZy)	PGATourIEzyt_dlp.extractor.pgatourPGATourzBhttps?://(?:www\.)?pgatour\.com/video/[\w-]+/(?P<tc>T)?(?P<id>\d+)rl   Nr   r   r   r   r  r  ,!  r  r   r  c                       e Zd ZdZdZy)	PRXBaseIEyt_dlp.extractor.prxPRXBaseNr   r   r   r   r  r  3!  rk  r   r  c                       e Zd ZdZdZdZdZy)PRXAccountIEr  
PRXAccountz;https?://(?:(?:beta|listen)\.)?prx.org/accounts/(?P<id>\d+)rm   Nr   r   r   r   r  r  8!  s    $GGPJLr   r  c                       e Zd ZdZdZdZdZy)PRXSeriesIEr  	PRXSeriesz9https?://(?:(?:beta|listen)\.)?prx.org/series/(?P<id>\d+)rm   Nr   r   r   r   r  r  ?!  s    $GGNJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)PRXSeriesSearchIEr  zprxseries:searchz8prxseries(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zPRX Series Search	prxseriesrm   Nr  r   r   r   r  r  F!  s     $G GMJ!GJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)PRXStoriesSearchIEr  zprxstories:searchz9prxstories(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zPRX Stories Search
prxstoriesrm   Nr  r   r   r   r  r  O!  s     $G!GNJ"GJLr   r  c                       e Zd ZdZdZdZdZy)
PRXStoryIEr  PRXStoryz:https?://(?:(?:beta|listen)\.)?prx.org/stories/(?P<id>\d+)r   Nr   r   r   r   r  r  X!  s    $GGOJLr   r  c                       e Zd ZdZdZy)PacktPubBaseIEyt_dlp.extractor.packtpubPacktPubBaseNr   r   r   r   r  r  _!  r  r   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )PacktPubCourseIEr  PacktPubCoursezf(?P<url>https?://(?:(?:www\.)?packtpub\.com/mapt|subscription\.packtpub\.com)/video/[^/]+/(?P<id>\d+))rm   c                 P    t         j                  |      rdS t        |   |      S r   )
PacktPubIEr4   r   r   s     r   r4   zPacktPubCourseIE.suitablej!  r{  r   r   r   s   @r   r  r  d!  s+    )GG~JLL Lr   r  c                        e Zd ZdZdZdZdZdZy)r  r  PacktPubzhttps?://(?:(?:www\.)?packtpub\.com/mapt|subscription\.packtpub\.com)/video/[^/]+/(?P<course_id>\d+)/(?P<chapter_id>[^/]+)/(?P<id>[^/]+)(?:/(?P<display_id>[^/?&#]+))?packtpubrl   Nr   r   r   r   r  r  o!  s    )GG JNLr   r  c                       e Zd ZdZdZy)PalcoMP3BaseIEyt_dlp.extractor.palcomp3PalcoMP3BaseNr   r   r   r   r  r  w!  r  r   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )PalcoMP3ArtistIEr  zPalcoMP3:artistz:https?://(?:www\.)?palcomp3\.com(?:\.br)?/(?P<id>[^/?&#]+)rm   c                 P    t         j                  |      rdS t        |   |      S r   )
PalcoMP3IEr1   r   r4   r   s     r   r4   zPalcoMP3ArtistIE.suitable!  s%    "33C8uSeg>Ns>SSr   r   r   s   @r   r  r  |!  s+    )GGPJLT Tr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )r  r  zPalcoMP3:songzLhttps?://(?:www\.)?palcomp3\.com(?:\.br)?/(?P<artist>[^/]+)/(?P<id>[^/?&#]+)rl   c                 P    t         j                  |      rdS t        |   |      S r   )PalcoMP3VideoIEr4   r   r   s     r   r4   zPalcoMP3IE.suitable!  rJ  r   r   r   s   @r   r  r  !  s+    )GGbJLQ Qr   r  c                       e Zd ZdZdZdZdZy)r  r  zPalcoMP3:videozThttps?://(?:www\.)?palcomp3\.com(?:\.br)?/(?P<artist>[^/]+)/(?P<id>[^/?&#]+)/?#cliperl   Nr   r   r   r   r  r  !  s    )GGjJLr   r  c                        e Zd ZdZdZdZdZdZy)	PandaTvIEzyt_dlp.extractor.pandatvPandaTvz9https?://(?:www\.|m\.)?pandalive\.co\.kr/play/(?P<id>\w+)u   pandalive.co.kr (팬더티비)rl   Nr   r   r   r   r  r  !  s    (GGQJ.GLr   r  c                       e Zd ZdZdZy)PanoptoBaseIEyt_dlp.extractor.panoptoPanoptoBaseNr   r   r   r   r  r  !  r   r   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )	PanoptoIEr  Panoptozt(?P<base_url>https?://[\w.-]+\.panopto.(?:com|eu)/Panopto)/Pages/(Viewer|Embed)\.aspx.*(?:\?|&)id=(?P<id>[a-f0-9-]+)rl   c                 P    t         j                  |      rdS t        |   |      S r   )PanoptoPlaylistIEr4   r   r   s     r   r4   zPanoptoIE.suitable!  s%    )2237uRUW=Mc=RRr   r   r   s   @r   r  r  !  s.    (GG LJLS Sr   r  c                       e Zd ZdZdZdZdZy)PanoptoListIEr  PanoptoListzT(?P<base_url>https?://[\w.-]+\.panopto.(?:com|eu)/Panopto)/Pages/Sessions/List\.aspxrm   Nr   r   r   r   r  r  !  s    (GGjJLr   r  c                       e Zd ZdZdZdZdZy)r  r  PanoptoPlaylistzu(?P<base_url>https?://[\w.-]+\.panopto.(?:com|eu)/Panopto)/Pages/(Viewer|Embed)\.aspx.*(?:\?|&)pid=(?P<id>[a-f0-9-]+)rm   Nr   r   r   r   r  r  !  s    (GG MJLr   r  c                       e Zd ZdZdZdZdZy)ParamountPressExpressIEyt_dlp.extractor.cbsParamountPressExpresszchttps?://(?:www\.)?paramountpressexpress\.com(?:/[\w-]+)+/(?P<yt>yt-)?video/?\?watch=(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  !  s    $G%G{JLr   r  c                        e Zd ZdZdZdZdZdZy)ParlerIEzyt_dlp.extractor.parlerParlerzMhttps?://parler\.com/feed/(?P<id>[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12})zPosts on parler.comrl   Nr   r   r   r   r  r  !  s    'GGaJ#GLr   r  c                       e Zd ZdZdZy)RedBeeBaseIEyt_dlp.extractor.redbee
RedBeeBaseNr   r   r   r   r  r  !  rE  r   r  c                        e Zd ZdZdZdZdZdZy)ParliamentLiveUKIEr  zparliamentlive.tvzu(?i)https?://(?:www\.)?parliamentlive\.tv/Event/Index/(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})zUK parliament videosrl   Nr   r   r   r   r  r  !  s    'G!G PJ$GLr   r  c                       e Zd ZdZdZdZdZy)
ParlviewIEzyt_dlp.extractor.parlviewParlviewz`https?://(?:www\.)?aph\.gov\.au/News_and_Events/Watch_Read_Listen/ParlView/video/(?P<id>[^/?#]+)rl   Nr   r   r   r   r  r  !  s    )GGvJLr   r  c                       e Zd ZdZdZy)PartiBaseIEyt_dlp.extractor.parti	PartiBaseNr   r   r   r   r  r  !  r   r   r  c                       e Zd ZdZdZdZdZy)PartiLivestreamIEr  zparti:livestreamz7https?://(?:www\.)?parti\.com/(?!video/)(?P<id>[\w/-]+)rl   Nr   r   r   r   r  r  !  s    &G GMJLr   r  c                       e Zd ZdZdZdZdZy)PartiVideoIEr  zparti:videoz/https?://(?:www\.)?parti\.com/video/(?P<id>\d+)rl   Nr   r   r   r   r!  r!  !  s    &GGEJLr   r!  c                       e Zd ZdZdZy)PatreonBaseIEyt_dlp.extractor.patreonPatreonBaseNr   r   r   r   r#  r#  !  r   r   r#  c                       e Zd ZdZdZdZdZy)PatreonCampaignIEr$  zpatreon:campaignz(?x)
        https?://(?:www\.)?patreon\.com/(?:
            (?:m|api/campaigns)/(?P<campaign_id>\d+)|
            (?:cw?/)?(?P<vanity>(?!creation[?/]|posts/|rss[?/])[\w-]+)
        )(?:/posts)?/?(?:$|[?#])rm   Nr   r   r   r   r'  r'  !  s    (G G jJLr   r'  c                       e Zd ZdZdZdZdZy)	PatreonIEr$  patreonz]https?://(?:www\.)?patreon\.com/(?:creation\?hid=|(?:[^/?#]+/)?posts/(?:[\w-]+-)?)(?P<id>\d+)rl   Nr   r   r   r   r)  r)  "  s    (GGuJLr   r)  c                       e Zd ZdZdZdZdZy)PearVideoIEzyt_dlp.extractor.pearvideo	PearVideoz3https?://(?:www\.)?pearvideo\.com/video_(?P<id>\d+)rl   Nr   r   r   r   r,  r,  "  s    *GGIJLr   r,  c                       e Zd ZdZdZy)PeekVidsBaseIEyt_dlp.extractor.peekvidsPeekVidsBaseNr   r   r   r   r/  r/  "  r  r   r/  c                        e Zd ZdZdZdZdZdZy)
PeekVidsIEr0  PeekVidsz(?x)
        https?://(?:www\.)?(?P<domain>peekvids\.com)/
        (?:(?:[^/?#]+/){2}|embed/?\?(?:[^#]*&)?v=)
        (?P<id>[^/?&#]*)
    r   rl   Nrw  r   r   r   r3  r3  "  s    )GG fJILr   r3  c                       e Zd ZdZdZdZdZy)PeerTVIEzyt_dlp.extractor.peertvzpeer.tvz4https?://(?:www\.)?peer\.tv/(?:de|it|en)/(?P<id>\d+)rl   Nr   r   r   r   r6  r6  "  s    'GGJJLr   r6  c                       e Zd ZdZdZdZdZy)
PeerTubeIEyt_dlp.extractor.peertubePeerTubea  (?x)
                    (?:
                        peertube:(?P<host>[^:]+):|
                        https?://(?P<host_2>(?:
                            # Taken from https://instances.joinpeertube.org/instances
                            0ch\.tv|
                            3dctube\.3dcandy\.social|
                            all\.electric\.kitchen|
                            alterscope\.fr|
                            anarchy\.tube|
                            apathy\.tv|
                            apertatube\.net|
                            archive\.nocopyrightintended\.tv|
                            archive\.reclaim\.tv|
                            area51\.media|
                            astrotube-ufe\.obspm\.fr|
                            astrotube\.obspm\.fr|
                            audio\.freediverse\.com|
                            azxtube\.youssefc\.tn|
                            bark\.video|
                            battlepenguin\.video|
                            bava\.tv|
                            bee-tube\.fr|
                            beetoons\.tv|
                            biblion\.refchat\.net|
                            biblioteca\.theowlclub\.net|
                            bideoak\.argia\.eus|
                            bideoteka\.eus|
                            birdtu\.be|
                            bitcointv\.com|
                            bonn\.video|
                            breeze\.tube|
                            brioco\.live|
                            brocosoup\.fr|
                            canal\.facil\.services|
                            canard\.tube|
                            cdn01\.tilvids\.com|
                            celluloid-media\.huma-num\.fr|
                            chicago1\.peertube\.support|
                            cliptube\.org|
                            cloudtube\.ise\.fraunhofer\.de|
                            comf\.tube|
                            comics\.peertube\.biz|
                            commons\.tube|
                            communitymedia\.video|
                            conspiracydistillery\.com|
                            crank\.recoil\.org|
                            dalek\.zone|
                            dalliance\.network|
                            dangly\.parts|
                            darkvapor\.nohost\.me|
                            daschauher\.aksel\.rocks|
                            digitalcourage\.video|
                            displayeurope\.video|
                            ds106\.tv|
                            dud-video\.inf\.tu-dresden\.de|
                            dud175\.inf\.tu-dresden\.de|
                            dytube\.com|
                            ebildungslabor\.video|
                            evangelisch\.video|
                            fair\.tube|
                            fedi\.video|
                            fedimovie\.com|
                            fediverse\.tv|
                            film\.k-prod\.fr|
                            flipboard\.video|
                            foss\.video|
                            fossfarmers\.company|
                            fotogramas\.politicaconciencia\.org|
                            freediverse\.com|
                            freesoto-u2151\.vm\.elestio\.app|
                            freesoto\.tv|
                            garr\.tv|
                            greatview\.video|
                            grypstube\.uni-greifswald\.de|
                            habratube\.site|
                            ilbjach\.ru|
                            infothema\.net|
                            itvplus\.iiens\.net|
                            johnydeep\.net|
                            juggling\.digital|
                            jupiter\.tube|
                            kadras\.live|
                            kino\.kompot\.si|
                            kino\.schuerz\.at|
                            kinowolnosc\.pl|
                            kirche\.peertube-host\.de|
                            kiwi\.froggirl\.club|
                            kodcast\.com|
                            kolektiva\.media|
                            kpop\.22x22\.ru|
                            kumi\.tube|
                            la2\.peertube\.support|
                            la3\.peertube\.support|
                            la4\.peertube\.support|
                            lastbreach\.tv|
                            lawsplaining\.peertube\.biz|
                            leopard\.tube|
                            live\.codinglab\.ch|
                            live\.libratoi\.org|
                            live\.oldskool\.fi|
                            live\.solari\.com|
                            lucarne\.balsamine\.be|
                            luxtube\.lu|
                            makertube\.net|
                            media\.econoalchemist\.com|
                            media\.exo\.cat|
                            media\.fsfe\.org|
                            media\.gzevd\.de|
                            media\.interior\.edu\.uy|
                            media\.krashboyz\.org|
                            media\.mzhd\.de|
                            media\.smz-ma\.de|
                            media\.theplattform\.net|
                            media\.undeadnetwork\.de|
                            medias\.debrouillonet\.org|
                            medias\.pingbase\.net|
                            mediatube\.fermalo\.fr|
                            melsungen\.peertube-host\.de|
                            merci-la-police\.fr|
                            mindlyvideos\.com|
                            mirror\.peertube\.metalbanana\.net|
                            mirrored\.rocks|
                            mix\.video|
                            mountaintown\.video|
                            movies\.metricsmaster\.eu|
                            mtube\.mooo\.com|
                            mytube\.kn-cloud\.de|
                            mytube\.le5emeaxe\.fr|
                            mytube\.madzel\.de|
                            nadajemy\.com|
                            nanawel-peertube\.dyndns\.org|
                            neat\.tube|
                            nethack\.tv|
                            nicecrew\.tv|
                            nightshift\.minnix\.dev|
                            nolog\.media|
                            nyltube\.nylarea\.com|
                            ocfedtest\.hosted\.spacebear\.ee|
                            openmedia\.edunova\.it|
                            p2ptv\.ru|
                            p\.eertu\.be|
                            p\.lu|
                            pastafriday\.club|
                            patriottube\.sonsofliberty\.red|
                            pcbu\.nl|
                            peer\.azurs\.fr|
                            peer\.d0g4\.me|
                            peer\.lukeog\.com|
                            peer\.madiator\.cloud|
                            peer\.raise-uav\.com|
                            peershare\.togart\.de|
                            peertube-blablalinux\.be|
                            peertube-demo\.learning-hub\.fr|
                            peertube-docker\.cpy\.re|
                            peertube-eu\.howlround\.com|
                            peertube-u5014\.vm\.elestio\.app|
                            peertube-us\.howlround\.com|
                            peertube\.020\.pl|
                            peertube\.0x5e\.eu|
                            peertube\.1984\.cz|
                            peertube\.2i2l\.net|
                            peertube\.adjutor\.xyz|
                            peertube\.adresse\.data\.gouv\.fr|
                            peertube\.alpharius\.io|
                            peertube\.am-networks\.fr|
                            peertube\.anduin\.net|
                            peertube\.anti-logic\.com|
                            peertube\.arch-linux\.cz|
                            peertube\.art3mis\.de|
                            peertube\.artsrn\.ualberta\.ca|
                            peertube\.askan\.info|
                            peertube\.astral0pitek\.synology\.me|
                            peertube\.atsuchan\.page|
                            peertube\.automat\.click|
                            peertube\.b38\.rural-it\.org|
                            peertube\.be|
                            peertube\.beeldengeluid\.nl|
                            peertube\.bgzashtita\.es|
                            peertube\.bike|
                            peertube\.bildung-ekhn\.de|
                            peertube\.biz|
                            peertube\.br0\.fr|
                            peertube\.bridaahost\.ynh\.fr|
                            peertube\.bubbletea\.dev|
                            peertube\.bubuit\.net|
                            peertube\.cabaal\.net|
                            peertube\.chatinbit\.com|
                            peertube\.chaunchy\.com|
                            peertube\.chir\.rs|
                            peertube\.christianpacaud\.com|
                            peertube\.chtisurel\.net|
                            peertube\.chuggybumba\.com|
                            peertube\.cipherbliss\.com|
                            peertube\.cirkau\.art|
                            peertube\.cloud\.nerdraum\.de|
                            peertube\.cloud\.sans\.pub|
                            peertube\.coko\.foundation|
                            peertube\.communecter\.org|
                            peertube\.concordia\.social|
                            peertube\.corrigan\.xyz|
                            peertube\.cpge-brizeux\.fr|
                            peertube\.ctseuro\.com|
                            peertube\.cuatrolibertades\.org|
                            peertube\.cube4fun\.net|
                            peertube\.dair-institute\.org|
                            peertube\.davigge\.com|
                            peertube\.dc\.pini\.fr|
                            peertube\.deadtom\.me|
                            peertube\.debian\.social|
                            peertube\.delta0189\.xyz|
                            peertube\.demonix\.fr|
                            peertube\.designersethiques\.org|
                            peertube\.desmu\.fr|
                            peertube\.devol\.it|
                            peertube\.dk|
                            peertube\.doesstuff\.social|
                            peertube\.eb8\.org|
                            peertube\.education-forum\.com|
                            peertube\.elforcer\.ru|
                            peertube\.em\.id\.lv|
                            peertube\.ethibox\.fr|
                            peertube\.eu\.org|
                            peertube\.european-pirates\.eu|
                            peertube\.eus|
                            peertube\.euskarabildua\.eus|
                            peertube\.expi\.studio|
                            peertube\.familie-berner\.de|
                            peertube\.familleboisteau\.fr|
                            peertube\.fedihost\.website|
                            peertube\.fenarinarsa\.com|
                            peertube\.festnoz\.de|
                            peertube\.forteza\.fr|
                            peertube\.freestorm\.online|
                            peertube\.functional\.cafe|
                            peertube\.gaminglinux\.fr|
                            peertube\.gargantia\.fr|
                            peertube\.geekgalaxy\.fr|
                            peertube\.gemlog\.ca|
                            peertube\.genma\.fr|
                            peertube\.get-racing\.de|
                            peertube\.ghis94\.ovh|
                            peertube\.gidikroon\.eu|
                            peertube\.giftedmc\.com|
                            peertube\.grosist\.fr|
                            peertube\.gruntwerk\.org|
                            peertube\.gsugambit\.com|
                            peertube\.hackerfoo\.com|
                            peertube\.hellsite\.net|
                            peertube\.helvetet\.eu|
                            peertube\.histoirescrepues\.fr|
                            peertube\.home\.x0r\.fr|
                            peertube\.hyperfreedom\.org|
                            peertube\.ichigo\.everydayimshuflin\.com|
                            peertube\.ifwo\.eu|
                            peertube\.in\.ua|
                            peertube\.inapurna\.org|
                            peertube\.informaction\.info|
                            peertube\.interhop\.org|
                            peertube\.it|
                            peertube\.it-arts\.net|
                            peertube\.jensdiemer\.de|
                            peertube\.johntheserg\.al|
                            peertube\.kaleidos\.net|
                            peertube\.kalua\.im|
                            peertube\.kcore\.org|
                            peertube\.keazilla\.net|
                            peertube\.klaewyss\.fr|
                            peertube\.kleph\.eu|
                            peertube\.kodein\.be|
                            peertube\.kooperatywa\.tech|
                            peertube\.kriom\.net|
                            peertube\.kx\.studio|
                            peertube\.kyriog\.eu|
                            peertube\.la-famille-muller\.fr|
                            peertube\.labeuropereunion\.eu|
                            peertube\.lagvoid\.com|
                            peertube\.lhc\.net\.br|
                            peertube\.libresolutions\.network|
                            peertube\.libretic\.fr|
                            peertube\.librosphere\.fr|
                            peertube\.logilab\.fr|
                            peertube\.lon\.tv|
                            peertube\.louisematic\.site|
                            peertube\.luckow\.org|
                            peertube\.luga\.at|
                            peertube\.lyceeconnecte\.fr|
                            peertube\.madixam\.xyz|
                            peertube\.magicstone\.dev|
                            peertube\.marienschule\.de|
                            peertube\.marud\.fr|
                            peertube\.maxweiss\.io|
                            peertube\.miguelcr\.me|
                            peertube\.mikemestnik\.net|
                            peertube\.mobilsicher\.de|
                            peertube\.monlycee\.net|
                            peertube\.mxinfo\.fr|
                            peertube\.naln1\.ca|
                            peertube\.netzbegruenung\.de|
                            peertube\.nicolastissot\.fr|
                            peertube\.nogafam\.fr|
                            peertube\.normalgamingcommunity\.cz|
                            peertube\.nz|
                            peertube\.offerman\.com|
                            peertube\.ohioskates\.com|
                            peertube\.onionstorm\.net|
                            peertube\.opencloud\.lu|
                            peertube\.otakufarms\.com|
                            peertube\.paladyn\.org|
                            peertube\.pix-n-chill\.fr|
                            peertube\.r2\.enst\.fr|
                            peertube\.r5c3\.fr|
                            peertube\.redpill-insight\.com|
                            peertube\.researchinstitute\.at|
                            peertube\.revelin\.fr|
                            peertube\.rlp\.schule|
                            peertube\.rokugan\.fr|
                            peertube\.rougevertbleu\.tv|
                            peertube\.roundpond\.net|
                            peertube\.rural-it\.org|
                            peertube\.satoshishop\.de|
                            peertube\.scyldings\.com|
                            peertube\.securitymadein\.lu|
                            peertube\.semperpax\.com|
                            peertube\.semweb\.pro|
                            peertube\.sensin\.eu|
                            peertube\.sidh\.bzh|
                            peertube\.skorpil\.cz|
                            peertube\.smertrios\.com|
                            peertube\.sqweeb\.net|
                            peertube\.stattzeitung\.org|
                            peertube\.stream|
                            peertube\.su|
                            peertube\.swrs\.net|
                            peertube\.takeko\.cyou|
                            peertube\.taxinachtegel\.de|
                            peertube\.teftera\.com|
                            peertube\.teutronic-services\.de|
                            peertube\.ti-fr\.com|
                            peertube\.tiennot\.net|
                            peertube\.tmp\.rcp\.tf|
                            peertube\.tspu\.edu\.ru|
                            peertube\.tv|
                            peertube\.tweb\.tv|
                            peertube\.underworld\.fr|
                            peertube\.vapronva\.pw|
                            peertube\.veen\.world|
                            peertube\.vesdia\.eu|
                            peertube\.virtual-assembly\.org|
                            peertube\.viviers-fibre\.net|
                            peertube\.vlaki\.cz|
                            peertube\.wiesbaden\.social|
                            peertube\.wivodaim\.net|
                            peertube\.wtf|
                            peertube\.wtfayla\.net|
                            peertube\.xrcb\.cat|
                            peertube\.xwiki\.com|
                            peertube\.zd\.do|
                            peertube\.zetamc\.net|
                            peertube\.zmuuf\.org|
                            peertube\.zoz-serv\.org|
                            peertube\.zwindler\.fr|
                            peervideo\.ru|
                            periscope\.numenaute\.org|
                            pete\.warpnine\.de|
                            petitlutinartube\.fr|
                            phijkchu\.com|
                            phoenixproject\.group|
                            piraten\.space|
                            pirtube\.calut\.fr|
                            pityu\.flaki\.hu|
                            play\.mittdata\.se|
                            player\.ojamajo\.moe|
                            podlibre\.video|
                            portal\.digilab\.nfa\.cz|
                            private\.fedimovie\.com|
                            pt01\.lehrerfortbildung-bw\.de|
                            pt\.diaspodon\.fr|
                            pt\.freedomwolf\.cc|
                            pt\.gordons\.gen\.nz|
                            pt\.ilyamikcoder\.com|
                            pt\.irnok\.net|
                            pt\.mezzo\.moe|
                            pt\.na4\.eu|
                            pt\.netcraft\.ch|
                            pt\.rwx\.ch|
                            pt\.sfunk1x\.com|
                            pt\.thishorsie\.rocks|
                            pt\.vern\.cc|
                            ptb\.lunarviews\.net|
                            ptube\.de|
                            ptube\.ranranhome\.info|
                            puffy\.tube|
                            puppet\.zone|
                            qtube\.qlyoung\.net|
                            quantube\.win|
                            rankett\.net|
                            replay\.jres\.org|
                            review\.peertube\.biz|
                            sdmtube\.fr|
                            secure\.direct-live\.net|
                            secure\.scanovid\.com|
                            seka\.pona\.la|
                            serv3\.wiki-tube\.de|
                            skeptube\.fr|
                            social\.fedimovie\.com|
                            socpeertube\.ru|
                            sovran\.video|
                            special\.videovortex\.tv|
                            spectra\.video|
                            stl1988\.peertube-host\.de|
                            stream\.biovisata\.lt|
                            stream\.conesphere\.cloud|
                            stream\.elven\.pw|
                            stream\.jurnalfm\.md|
                            stream\.k-prod\.fr|
                            stream\.litera\.tools|
                            stream\.nuemedia\.se|
                            stream\.rlp-media\.de|
                            stream\.vrse\.be|
                            studios\.racer159\.com|
                            styxhexenhammer666\.com|
                            syrteplay\.obspm\.fr|
                            t\.0x0\.st|
                            tbh\.co-shaoghal\.net|
                            test-fab\.ynh\.fr|
                            testube\.distrilab\.fr|
                            tgi\.hosted\.spacebear\.ee|
                            theater\.ethernia\.net|
                            thecool\.tube|
                            thevideoverse\.com|
                            tilvids\.com|
                            tinkerbetter\.tube|
                            tinsley\.video|
                            trailers\.ddigest\.com|
                            tube-action-educative\.apps\.education\.fr|
                            tube-arts-lettres-sciences-humaines\.apps\.education\.fr|
                            tube-cycle-2\.apps\.education\.fr|
                            tube-cycle-3\.apps\.education\.fr|
                            tube-education-physique-et-sportive\.apps\.education\.fr|
                            tube-enseignement-professionnel\.apps\.education\.fr|
                            tube-institutionnel\.apps\.education\.fr|
                            tube-langues-vivantes\.apps\.education\.fr|
                            tube-maternelle\.apps\.education\.fr|
                            tube-numerique-educatif\.apps\.education\.fr|
                            tube-sciences-technologies\.apps\.education\.fr|
                            tube-test\.apps\.education\.fr|
                            tube1\.perron-service\.de|
                            tube\.9minuti\.it|
                            tube\.abolivier\.bzh|
                            tube\.alado\.space|
                            tube\.amic37\.fr|
                            tube\.area404\.cloud|
                            tube\.arthack\.nz|
                            tube\.asulia\.fr|
                            tube\.awkward\.company|
                            tube\.azbyka\.ru|
                            tube\.azkware\.net|
                            tube\.bartrip\.me\.uk|
                            tube\.belowtoxic\.media|
                            tube\.bingle\.plus|
                            tube\.bit-friends\.de|
                            tube\.bstly\.de|
                            tube\.chosto\.me|
                            tube\.cms\.garden|
                            tube\.communia\.org|
                            tube\.cyberia\.club|
                            tube\.cybershock\.life|
                            tube\.dembased\.xyz|
                            tube\.dev\.displ\.eu|
                            tube\.digitalesozialearbeit\.de|
                            tube\.distrilab\.fr|
                            tube\.doortofreedom\.org|
                            tube\.dsocialize\.net|
                            tube\.e-jeremy\.com|
                            tube\.ebin\.club|
                            tube\.elemac\.fr|
                            tube\.erzbistum-hamburg\.de|
                            tube\.exozy\.me|
                            tube\.fdn\.fr|
                            tube\.fedi\.quebec|
                            tube\.fediverse\.at|
                            tube\.felinn\.org|
                            tube\.flokinet\.is|
                            tube\.foad\.me\.uk|
                            tube\.freepeople\.fr|
                            tube\.friloux\.me|
                            tube\.froth\.zone|
                            tube\.fulda\.social|
                            tube\.futuretic\.fr|
                            tube\.g1zm0\.de|
                            tube\.g4rf\.net|
                            tube\.gaiac\.io|
                            tube\.geekyboo\.net|
                            tube\.genb\.de|
                            tube\.ghk-academy\.info|
                            tube\.gi-it\.de|
                            tube\.grap\.coop|
                            tube\.graz\.social|
                            tube\.grin\.hu|
                            tube\.hokai\.lol|
                            tube\.int5\.net|
                            tube\.interhacker\.space|
                            tube\.invisible\.ch|
                            tube\.io18\.top|
                            tube\.itsg\.host|
                            tube\.jeena\.net|
                            tube\.kh-berlin\.de|
                            tube\.kockatoo\.org|
                            tube\.kotur\.org|
                            tube\.koweb\.fr|
                            tube\.la-dina\.net|
                            tube\.lab\.nrw|
                            tube\.lacaveatonton\.ovh|
                            tube\.laurent-malys\.fr|
                            tube\.leetdreams\.ch|
                            tube\.linkse\.media|
                            tube\.lokad\.com|
                            tube\.lucie-philou\.com|
                            tube\.media-techport\.de|
                            tube\.morozoff\.pro|
                            tube\.neshweb\.net|
                            tube\.nestor\.coop|
                            tube\.network\.europa\.eu|
                            tube\.nicfab\.eu|
                            tube\.nieuwwestbrabant\.nl|
                            tube\.nogafa\.org|
                            tube\.novg\.net|
                            tube\.nox-rhea\.org|
                            tube\.nuagelibre\.fr|
                            tube\.numerique\.gouv\.fr|
                            tube\.nuxnik\.com|
                            tube\.nx12\.net|
                            tube\.octaplex\.net|
                            tube\.oisux\.org|
                            tube\.okcinfo\.news|
                            tube\.onlinekirche\.net|
                            tube\.opportunis\.me|
                            tube\.oraclefilms\.com|
                            tube\.org\.il|
                            tube\.pacapime\.ovh|
                            tube\.parinux\.org|
                            tube\.pastwind\.top|
                            tube\.picasoft\.net|
                            tube\.pilgerweg-21\.de|
                            tube\.pmj\.rocks|
                            tube\.pol\.social|
                            tube\.ponsonaille\.fr|
                            tube\.portes-imaginaire\.org|
                            tube\.public\.apolut\.net|
                            tube\.pustule\.org|
                            tube\.pyngu\.com|
                            tube\.querdenken-711\.de|
                            tube\.rebellion\.global|
                            tube\.reseau-canope\.fr|
                            tube\.rhythms-of-resistance\.org|
                            tube\.risedsky\.ovh|
                            tube\.rooty\.fr|
                            tube\.rsi\.cnr\.it|
                            tube\.ryne\.moe|
                            tube\.schleuss\.online|
                            tube\.schule\.social|
                            tube\.sekretaerbaer\.net|
                            tube\.shanti\.cafe|
                            tube\.shela\.nu|
                            tube\.skrep\.in|
                            tube\.sleeping\.town|
                            tube\.sp-codes\.de|
                            tube\.spdns\.org|
                            tube\.systerserver\.net|
                            tube\.systest\.eu|
                            tube\.tappret\.fr|
                            tube\.techeasy\.org|
                            tube\.thierrytalbert\.fr|
                            tube\.tinfoil-hat\.net|
                            tube\.toldi\.eu|
                            tube\.tpshd\.de|
                            tube\.trax\.im|
                            tube\.troopers\.agency|
                            tube\.ttk\.is|
                            tube\.tuxfriend\.fr|
                            tube\.tylerdavis\.xyz|
                            tube\.ullihome\.de|
                            tube\.ulne\.be|
                            tube\.undernet\.uy|
                            tube\.vrpnet\.org|
                            tube\.wolfe\.casa|
                            tube\.xd0\.de|
                            tube\.xn--baw-joa\.social|
                            tube\.xy-space\.de|
                            tube\.yapbreak\.fr|
                            tubedu\.org|
                            tubulus\.openlatin\.org|
                            turtleisland\.video|
                            tututu\.tube|
                            tv\.adast\.dk|
                            tv\.adn\.life|
                            tv\.arns\.lt|
                            tv\.atmx\.ca|
                            tv\.based\.quest|
                            tv\.farewellutopia\.com|
                            tv\.filmfreedom\.net|
                            tv\.gravitons\.org|
                            tv\.io\.seg\.br|
                            tv\.lumbung\.space|
                            tv\.pirateradio\.social|
                            tv\.pirati\.cz|
                            tv\.santic-zombie\.ru|
                            tv\.undersco\.re|
                            tv\.zonepl\.net|
                            tvox\.ru|
                            twctube\.twc-zone\.eu|
                            twobeek\.com|
                            urbanists\.video|
                            v\.9tail\.net|
                            v\.basspistol\.org|
                            v\.j4\.lc|
                            v\.kisombrella\.top|
                            v\.koa\.im|
                            v\.kyaru\.xyz|
                            v\.lor\.sh|
                            v\.mkp\.ca|
                            v\.posm\.gay|
                            v\.slaycer\.top|
                            veedeo\.org|
                            vhs\.absturztau\.be|
                            vid\.cthos\.dev|
                            vid\.kinuseka\.us|
                            vid\.mkp\.ca|
                            vid\.nocogabriel\.fr|
                            vid\.norbipeti\.eu|
                            vid\.northbound\.online|
                            vid\.ohboii\.de|
                            vid\.plantplotting\.co\.uk|
                            vid\.pretok\.tv|
                            vid\.prometheus\.systems|
                            vid\.soafen\.love|
                            vid\.twhtv\.club|
                            vid\.wildeboer\.net|
                            video-cave-v2\.de|
                            video-liberty\.com|
                            video\.076\.ne\.jp|
                            video\.1146\.nohost\.me|
                            video\.9wd\.eu|
                            video\.abraum\.de|
                            video\.ados\.accoord\.fr|
                            video\.amiga-ng\.org|
                            video\.anartist\.org|
                            video\.asgardius\.company|
                            video\.audiovisuel-participatif\.org|
                            video\.bards\.online|
                            video\.barkoczy\.social|
                            video\.benetou\.fr|
                            video\.beyondwatts\.social|
                            video\.bgeneric\.net|
                            video\.bilecik\.edu\.tr|
                            video\.blast-info\.fr|
                            video\.bmu\.cloud|
                            video\.catgirl\.biz|
                            video\.causa-arcana\.com|
                            video\.chasmcity\.net|
                            video\.chbmeyer\.de|
                            video\.cigliola\.com|
                            video\.citizen4\.eu|
                            video\.clumsy\.computer|
                            video\.cnnumerique\.fr|
                            video\.cnr\.it|
                            video\.cnt\.social|
                            video\.coales\.co|
                            video\.comune\.trento\.it|
                            video\.coyp\.us|
                            video\.csc49\.fr|
                            video\.davduf\.net|
                            video\.davejansen\.com|
                            video\.dlearning\.nl|
                            video\.dnfi\.no|
                            video\.dresden\.network|
                            video\.drgnz\.club|
                            video\.dudenas\.lt|
                            video\.eientei\.org|
                            video\.ellijaymakerspace\.org|
                            video\.emergeheart\.info|
                            video\.eradicatinglove\.xyz|
                            video\.everythingbagel\.me|
                            video\.extremelycorporate\.ca|
                            video\.fabiomanganiello\.com|
                            video\.fedi\.bzh|
                            video\.fhtagn\.org|
                            video\.firehawk-systems\.com|
                            video\.fox-romka\.ru|
                            video\.fuss\.bz\.it|
                            video\.glassbeadcollective\.org|
                            video\.graine-pdl\.org|
                            video\.gyt\.is|
                            video\.hainry\.fr|
                            video\.hardlimit\.com|
                            video\.hostux\.net|
                            video\.igem\.org|
                            video\.infojournal\.fr|
                            video\.internet-czas-dzialac\.pl|
                            video\.interru\.io|
                            video\.ipng\.ch|
                            video\.ironsysadmin\.com|
                            video\.islameye\.com|
                            video\.jacen\.moe|
                            video\.jadin\.me|
                            video\.jeffmcbride\.net|
                            video\.jigmedatse\.com|
                            video\.kuba-orlik\.name|
                            video\.lacalligramme\.fr|
                            video\.lanceurs-alerte\.fr|
                            video\.laotra\.red|
                            video\.lapineige\.fr|
                            video\.laraffinerie\.re|
                            video\.lavolte\.net|
                            video\.liberta\.vip|
                            video\.libreti\.net|
                            video\.licentia\.net|
                            video\.linc\.systems|
                            video\.linux\.it|
                            video\.linuxtrent\.it|
                            video\.liveitlive\.show|
                            video\.lono\.space|
                            video\.lrose\.de|
                            video\.lunago\.net|
                            video\.lundi\.am|
                            video\.lycee-experimental\.org|
                            video\.maechler\.cloud|
                            video\.marcorennmaus\.de|
                            video\.mass-trespass\.uk|
                            video\.matomocamp\.org|
                            video\.medienzentrum-harburg\.de|
                            video\.mentality\.rip|
                            video\.metaversum\.wtf|
                            video\.midreality\.com|
                            video\.mttv\.it|
                            video\.mugoreve\.fr|
                            video\.mxtthxw\.art|
                            video\.mycrowd\.ca|
                            video\.niboe\.info|
                            video\.nogafam\.es|
                            video\.nstr\.no|
                            video\.occm\.cc|
                            video\.off-investigation\.fr|
                            video\.olos311\.org|
                            video\.ordinobsolete\.fr|
                            video\.osvoj\.ru|
                            video\.ourcommon\.cloud|
                            video\.ozgurkon\.org|
                            video\.pcf\.fr|
                            video\.pcgaldo\.com|
                            video\.phyrone\.de|
                            video\.poul\.org|
                            video\.publicspaces\.net|
                            video\.pullopen\.xyz|
                            video\.r3s\.nrw|
                            video\.rainevixen\.com|
                            video\.resolutions\.it|
                            video\.retroedge\.tech|
                            video\.rhizome\.org|
                            video\.rlp-media\.de|
                            video\.rs-einrich\.de|
                            video\.rubdos\.be|
                            video\.sadmin\.io|
                            video\.sftblw\.moe|
                            video\.shitposter\.club|
                            video\.simplex-software\.ru|
                            video\.slipfox\.xyz|
                            video\.snug\.moe|
                            video\.software-fuer-engagierte\.de|
                            video\.soi\.ch|
                            video\.sonet\.ws|
                            video\.surazal\.net|
                            video\.taskcards\.eu|
                            video\.team-lcbs\.eu|
                            video\.techforgood\.social|
                            video\.telemillevaches\.net|
                            video\.thepolarbear\.co\.uk|
                            video\.thinkof\.name|
                            video\.tii\.space|
                            video\.tkz\.es|
                            video\.trankil\.info|
                            video\.triplea\.fr|
                            video\.tum\.social|
                            video\.turbo\.chat|
                            video\.uriopss-pdl\.fr|
                            video\.ustim\.ru|
                            video\.ut0pia\.org|
                            video\.vaku\.org\.ua|
                            video\.vegafjord\.me|
                            video\.veloma\.org|
                            video\.violoncello\.ch|
                            video\.voidconspiracy\.band|
                            video\.wakkeren\.nl|
                            video\.windfluechter\.org|
                            video\.ziez\.eu|
                            videos-passages\.huma-num\.fr|
                            videos\.aadtp\.be|
                            videos\.ahp-numerique\.fr|
                            videos\.alamaisondulibre\.org|
                            videos\.archigny\.net|
                            videos\.aroaduntraveled\.com|
                            videos\.b4tech\.org|
                            videos\.benjaminbrady\.ie|
                            videos\.bik\.opencloud\.lu|
                            videos\.cloudron\.io|
                            videos\.codingotaku\.com|
                            videos\.coletivos\.org|
                            videos\.collate\.social|
                            videos\.danksquad\.org|
                            videos\.digitaldragons\.eu|
                            videos\.dromeadhere\.fr|
                            videos\.explain-it\.org|
                            videos\.factsonthegroundshow\.com|
                            videos\.foilen\.com|
                            videos\.fsci\.in|
                            videos\.gamercast\.net|
                            videos\.gianmarco\.gg|
                            videos\.globenet\.org|
                            videos\.grafo\.zone|
                            videos\.hauspie\.fr|
                            videos\.hush\.is|
                            videos\.hyphalfusion\.network|
                            videos\.icum\.to|
                            videos\.im\.allmendenetz\.de|
                            videos\.jacksonchen666\.com|
                            videos\.john-livingston\.fr|
                            videos\.knazarov\.com|
                            videos\.kuoushi\.com|
                            videos\.laliguepaysdelaloire\.org|
                            videos\.lemouvementassociatif-pdl\.org|
                            videos\.leslionsfloorball\.fr|
                            videos\.librescrum\.org|
                            videos\.mastodont\.cat|
                            videos\.metus\.ca|
                            videos\.miolo\.org|
                            videos\.offroad\.town|
                            videos\.openmandriva\.org|
                            videos\.parleur\.net|
                            videos\.pcorp\.us|
                            videos\.pop\.eu\.com|
                            videos\.rampin\.org|
                            videos\.rauten\.co\.za|
                            videos\.ritimo\.org|
                            videos\.sarcasmstardust\.com|
                            videos\.scanlines\.xyz|
                            videos\.shmalls\.pw|
                            videos\.stadtfabrikanten\.org|
                            videos\.supertuxkart\.net|
                            videos\.testimonia\.org|
                            videos\.thinkerview\.com|
                            videos\.torrenezzi10\.xyz|
                            videos\.trom\.tf|
                            videos\.utsukta\.org|
                            videos\.viorsan\.com|
                            videos\.wherelinux\.xyz|
                            videos\.wikilibriste\.fr|
                            videos\.yesil\.club|
                            videos\.yeswiki\.net|
                            videotube\.duckdns\.org|
                            vids\.capypara\.de|
                            vids\.roshless\.me|
                            vids\.stary\.pc\.pl|
                            vids\.tekdmn\.me|
                            vidz\.julien\.ovh|
                            views\.southfox\.me|
                            virtual-girls-are\.definitely-for\.me|
                            viste\.pt|
                            vnchich\.com|
                            vnop\.org|
                            vod\.newellijay\.tv|
                            voluntarytube\.com|
                            vtr\.chikichiki\.tube|
                            vulgarisation-informatique\.fr|
                            watch\.easya\.solutions|
                            watch\.goodluckgabe\.life|
                            watch\.ignorance\.eu|
                            watch\.jimmydore\.com|
                            watch\.libertaria\.space|
                            watch\.nuked\.social|
                            watch\.ocaml\.org|
                            watch\.thelema\.social|
                            watch\.tubelab\.video|
                            web-fellow\.de|
                            webtv\.vandoeuvre\.net|
                            wetubevid\.online|
                            wikileaks\.video|
                            wiwi\.video|
                            wow\.such\.disappointment\.fail|
                            www\.jvideos\.net|
                            www\.kotikoff\.net|
                            www\.makertube\.net|
                            www\.mypeer\.tube|
                            www\.nadajemy\.com|
                            www\.neptube\.io|
                            www\.rocaguinarda\.tv|
                            www\.vnshow\.net|
                            xxivproduction\.video|
                            yt\.orokoro\.ru|
                            ytube\.retronerd\.at|
                            zumvideo\.de|

                            # from youtube-dl
                            peertube\.rainbowswingers\.net|
                            tube\.stanisic\.nl|
                            peer\.suiri\.us|
                            medias\.libox\.fr|
                            videomensoif\.ynh\.fr|
                            peertube\.travelpandas\.eu|
                            peertube\.rachetjay\.fr|
                            peertube\.montecsys\.fr|
                            tube\.eskuero\.me|
                            peer\.tube|
                            peertube\.umeahackerspace\.se|
                            tube\.nx-pod\.de|
                            video\.monsieurbidouille\.fr|
                            tube\.openalgeria\.org|
                            vid\.lelux\.fi|
                            video\.anormallostpod\.ovh|
                            tube\.crapaud-fou\.org|
                            peertube\.stemy\.me|
                            lostpod\.space|
                            exode\.me|
                            peertube\.snargol\.com|
                            vis\.ion\.ovh|
                            videosdulib\.re|
                            v\.mbius\.io|
                            videos\.judrey\.eu|
                            peertube\.osureplayviewer\.xyz|
                            peertube\.mathieufamily\.ovh|
                            www\.videos-libr\.es|
                            fightforinfo\.com|
                            peertube\.fediverse\.ru|
                            peertube\.oiseauroch\.fr|
                            video\.nesven\.eu|
                            v\.bearvideo\.win|
                            video\.qoto\.org|
                            justporn\.cc|
                            video\.vny\.fr|
                            peervideo\.club|
                            tube\.taker\.fr|
                            peertube\.chantierlibre\.org|
                            tube\.ipfixe\.info|
                            tube\.kicou\.info|
                            tube\.dodsorf\.as|
                            videobit\.cc|
                            video\.yukari\.moe|
                            videos\.elbinario\.net|
                            hkvideo\.live|
                            pt\.tux\.tf|
                            www\.hkvideo\.live|
                            FIGHTFORINFO\.com|
                            pt\.765racing\.com|
                            peertube\.gnumeria\.eu\.org|
                            nordenmedia\.com|
                            peertube\.co\.uk|
                            tube\.darfweb\.eu|
                            tube\.kalah-france\.org|
                            0ch\.in|
                            vod\.mochi\.academy|
                            film\.node9\.org|
                            peertube\.hatthieves\.es|
                            video\.fitchfamily\.org|
                            peertube\.ddns\.net|
                            video\.ifuncle\.kr|
                            video\.fdlibre\.eu|
                            tube\.22decembre\.eu|
                            peertube\.harmoniescreatives\.com|
                            tube\.fabrigli\.fr|
                            video\.thedwyers\.co|
                            video\.bruitbruit\.com|
                            peertube\.foxfam\.club|
                            peer\.philoxweb\.be|
                            videos\.bugs\.social|
                            peertube\.malbert\.xyz|
                            peertube\.bilange\.ca|
                            libretube\.net|
                            diytelevision\.com|
                            peertube\.fedilab\.app|
                            libre\.video|
                            video\.mstddntfdn\.online|
                            us\.tv|
                            peertube\.sl-network\.fr|
                            peertube\.dynlinux\.io|
                            peertube\.david\.durieux\.family|
                            peertube\.linuxrocks\.online|
                            peerwatch\.xyz|
                            v\.kretschmann\.social|
                            tube\.otter\.sh|
                            yt\.is\.nota\.live|
                            tube\.dragonpsi\.xyz|
                            peertube\.boneheadmedia\.com|
                            videos\.funkwhale\.audio|
                            watch\.44con\.com|
                            peertube\.gcaillaut\.fr|
                            peertube\.icu|
                            pony\.tube|
                            spacepub\.space|
                            tube\.stbr\.io|
                            v\.mom-gay\.faith|
                            tube\.port0\.xyz|
                            peertube\.simounet\.net|
                            play\.jergefelt\.se|
                            peertube\.zeteo\.me|
                            tube\.danq\.me|
                            peertube\.kerenon\.com|
                            tube\.fab-l3\.org|
                            tube\.calculate\.social|
                            peertube\.mckillop\.org|
                            tube\.netzspielplatz\.de|
                            vod\.ksite\.de|
                            peertube\.laas\.fr|
                            tube\.govital\.net|
                            peertube\.stephenson\.cc|
                            bistule\.nohost\.me|
                            peertube\.kajalinifi\.de|
                            video\.ploud\.jp|
                            video\.omniatv\.com|
                            peertube\.ffs2play\.fr|
                            peertube\.leboulaire\.ovh|
                            peertube\.tronic-studio\.com|
                            peertube\.public\.cat|
                            peertube\.metalbanana\.net|
                            video\.1000i100\.fr|
                            peertube\.alter-nativ-voll\.de|
                            tube\.pasa\.tf|
                            tube\.worldofhauru\.xyz|
                            pt\.kamp\.site|
                            peertube\.teleassist\.fr|
                            videos\.mleduc\.xyz|
                            conf\.tube|
                            media\.privacyinternational\.org|
                            pt\.forty-two\.nl|
                            video\.halle-leaks\.de|
                            video\.grosskopfgames\.de|
                            peertube\.schaeferit\.de|
                            peertube\.jackbot\.fr|
                            tube\.extinctionrebellion\.fr|
                            peertube\.f-si\.org|
                            video\.subak\.ovh|
                            videos\.koweb\.fr|
                            peertube\.zergy\.net|
                            peertube\.roflcopter\.fr|
                            peertube\.floss-marketing-school\.com|
                            vloggers\.social|
                            peertube\.iriseden\.eu|
                            videos\.ubuntu-paris\.org|
                            peertube\.mastodon\.host|
                            armstube\.com|
                            peertube\.s2s\.video|
                            peertube\.lol|
                            tube\.open-plug\.eu|
                            open\.tube|
                            peertube\.ch|
                            peertube\.normandie-libre\.fr|
                            peertube\.slat\.org|
                            video\.lacaveatonton\.ovh|
                            peertube\.uno|
                            peertube\.servebeer\.com|
                            peertube\.fedi\.quebec|
                            tube\.h3z\.jp|
                            tube\.plus200\.com|
                            peertube\.eric\.ovh|
                            tube\.metadocs\.cc|
                            tube\.unmondemeilleur\.eu|
                            gouttedeau\.space|
                            video\.antirep\.net|
                            nrop\.cant\.at|
                            tube\.ksl-bmx\.de|
                            tube\.plaf\.fr|
                            tube\.tchncs\.de|
                            video\.devinberg\.com|
                            hitchtube\.fr|
                            peertube\.kosebamse\.com|
                            yunopeertube\.myddns\.me|
                            peertube\.varney\.fr|
                            peertube\.anon-kenkai\.com|
                            tube\.maiti\.info|
                            tubee\.fr|
                            videos\.dinofly\.com|
                            toobnix\.org|
                            videotape\.me|
                            voca\.tube|
                            video\.heromuster\.com|
                            video\.lemediatv\.fr|
                            video\.up\.edu\.ph|
                            balafon\.video|
                            video\.ivel\.fr|
                            thickrips\.cloud|
                            pt\.laurentkruger\.fr|
                            video\.monarch-pass\.net|
                            peertube\.artica\.center|
                            video\.alternanet\.fr|
                            indymotion\.fr|
                            fanvid\.stopthatimp\.net|
                            video\.farci\.org|
                            v\.lesterpig\.com|
                            video\.okaris\.de|
                            tube\.pawelko\.net|
                            peertube\.mablr\.org|
                            tube\.fede\.re|
                            pytu\.be|
                            evertron\.tv|
                            devtube\.dev-wiki\.de|
                            raptube\.antipub\.org|
                            video\.selea\.se|
                            peertube\.mygaia\.org|
                            video\.oh14\.de|
                            peertube\.livingutopia\.org|
                            peertube\.the-penguin\.de|
                            tube\.thechangebook\.org|
                            tube\.anjara\.eu|
                            pt\.pube\.tk|
                            video\.samedi\.pm|
                            mplayer\.demouliere\.eu|
                            widemus\.de|
                            peertube\.me|
                            peertube\.zapashcanon\.fr|
                            video\.latavernedejohnjohn\.fr|
                            peertube\.pcservice46\.fr|
                            peertube\.mazzonetto\.eu|
                            video\.irem\.univ-paris-diderot\.fr|
                            video\.livecchi\.cloud|
                            alttube\.fr|
                            video\.coop\.tools|
                            video\.cabane-libre\.org|
                            peertube\.openstreetmap\.fr|
                            videos\.alolise\.org|
                            irrsinn\.video|
                            video\.antopie\.org|
                            scitech\.video|
                            tube2\.nemsia\.org|
                            video\.amic37\.fr|
                            peertube\.freeforge\.eu|
                            video\.arbitrarion\.com|
                            video\.datsemultimedia\.com|
                            stoptrackingus\.tv|
                            peertube\.ricostrongxxx\.com|
                            docker\.videos\.lecygnenoir\.info|
                            peertube\.togart\.de|
                            tube\.postblue\.info|
                            videos\.domainepublic\.net|
                            peertube\.cyber-tribal\.com|
                            video\.gresille\.org|
                            peertube\.dsmouse\.net|
                            cinema\.yunohost\.support|
                            tube\.theocevaer\.fr|
                            repro\.video|
                            tube\.4aem\.com|
                            quaziinc\.com|
                            peertube\.metawurst\.space|
                            videos\.wakapo\.com|
                            video\.ploud\.fr|
                            video\.freeradical\.zone|
                            tube\.valinor\.fr|
                            refuznik\.video|
                            pt\.kircheneuenburg\.de|
                            peertube\.asrun\.eu|
                            peertube\.lagob\.fr|
                            videos\.side-ways\.net|
                            91video\.online|
                            video\.valme\.io|
                            video\.taboulisme\.com|
                            videos-libr\.es|
                            tv\.mooh\.fr|
                            nuage\.acostey\.fr|
                            video\.monsieur-a\.fr|
                            peertube\.librelois\.fr|
                            videos\.pair2jeux\.tube|
                            videos\.pueseso\.club|
                            peer\.mathdacloud\.ovh|
                            media\.assassinate-you\.net|
                            vidcommons\.org|
                            ptube\.rousset\.nom\.fr|
                            tube\.cyano\.at|
                            videos\.squat\.net|
                            video\.iphodase\.fr|
                            peertube\.makotoworkshop\.org|
                            peertube\.serveur\.slv-valbonne\.fr|
                            vault\.mle\.party|
                            hostyour\.tv|
                            videos\.hack2g2\.fr|
                            libre\.tube|
                            pire\.artisanlogiciel\.net|
                            videos\.numerique-en-commun\.fr|
                            video\.netsyms\.com|
                            video\.die-partei\.social|
                            video\.writeas\.org|
                            peertube\.swarm\.solvingmaz\.es|
                            tube\.pericoloso\.ovh|
                            watching\.cypherpunk\.observer|
                            videos\.adhocmusic\.com|
                            tube\.rfc1149\.net|
                            peertube\.librelabucm\.org|
                            videos\.numericoop\.fr|
                            peertube\.koehn\.com|
                            peertube\.anarchmusicall\.net|
                            tube\.kampftoast\.de|
                            vid\.y-y\.li|
                            peertube\.xtenz\.xyz|
                            diode\.zone|
                            tube\.egf\.mn|
                            peertube\.nomagic\.uk|
                            visionon\.tv|
                            videos\.koumoul\.com|
                            video\.rastapuls\.com|
                            video\.mantlepro\.com|
                            video\.deadsuperhero\.com|
                            peertube\.musicstudio\.pro|
                            peertube\.we-keys\.fr|
                            artitube\.artifaille\.fr|
                            peertube\.ethernia\.net|
                            tube\.midov\.pl|
                            peertube\.fr|
                            watch\.snoot\.tube|
                            peertube\.donnadieu\.fr|
                            argos\.aquilenet\.fr|
                            tube\.nemsia\.org|
                            tube\.bruniau\.net|
                            videos\.darckoune\.moe|
                            tube\.traydent\.info|
                            dev\.videos\.lecygnenoir\.info|
                            peertube\.nayya\.org|
                            peertube\.live|
                            peertube\.mofgao\.space|
                            video\.lequerrec\.eu|
                            peertube\.amicale\.net|
                            aperi\.tube|
                            tube\.ac-lyon\.fr|
                            video\.lw1\.at|
                            www\.yiny\.org|
                            videos\.pofilo\.fr|
                            tube\.lou\.lt|
                            choob\.h\.etbus\.ch|
                            tube\.hoga\.fr|
                            peertube\.heberge\.fr|
                            video\.obermui\.de|
                            videos\.cloudfrancois\.fr|
                            betamax\.video|
                            video\.typica\.us|
                            tube\.piweb\.be|
                            video\.blender\.org|
                            peertube\.cat|
                            tube\.kdy\.ch|
                            pe\.ertu\.be|
                            peertube\.social|
                            videos\.lescommuns\.org|
                            tv\.datamol\.org|
                            videonaute\.fr|
                            dialup\.express|
                            peertube\.nogafa\.org|
                            megatube\.lilomoino\.fr|
                            peertube\.tamanoir\.foucry\.net|
                            peertube\.devosi\.org|
                            peertube\.1312\.media|
                            tube\.bootlicker\.party|
                            skeptikon\.fr|
                            video\.blueline\.mg|
                            tube\.homecomputing\.fr|
                            tube\.ouahpiti\.info|
                            video\.tedomum\.net|
                            video\.g3l\.org|
                            fontube\.fr|
                            peertube\.gaialabs\.ch|
                            tube\.kher\.nl|
                            peertube\.qtg\.fr|
                            video\.migennes\.net|
                            tube\.p2p\.legal|
                            troll\.tv|
                            videos\.iut-orsay\.fr|
                            peertube\.solidev\.net|
                            videos\.cemea\.org|
                            video\.passageenseine\.fr|
                            videos\.festivalparminous\.org|
                            peertube\.touhoppai\.moe|
                            sikke\.fi|
                            peer\.hostux\.social|
                            share\.tube|
                            peertube\.walkingmountains\.fr|
                            videos\.benpro\.fr|
                            peertube\.parleur\.net|
                            peertube\.heraut\.eu|
                            tube\.aquilenet\.fr|
                            peertube\.gegeweb\.eu|
                            framatube\.org|
                            thinkerview\.video|
                            tube\.conferences-gesticulees\.net|
                            peertube\.datagueule\.tv|
                            video\.lqdn\.fr|
                            tube\.mochi\.academy|
                            media\.zat\.im|
                            video\.colibris-outilslibres\.org|
                            tube\.svnet\.fr|
                            peertube\.video|
                            peertube2\.cpy\.re|
                            peertube3\.cpy\.re|
                            videos\.tcit\.fr|
                            peertube\.cpy\.re|
                            canard\.tube
                        ))/(?:videos/(?:watch|embed)|api/v\d/videos|w)/
                    )
                    (?P<id>[\da-zA-Z]{22}|[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12})
                    rl   Nr   r   r   r   r8  r8  #"  s    )GG {uJLr   r8  c                       e Zd ZdZdZdZdZy)PeerTubePlaylistIEr9  zPeerTube:Playlista  (?x)
                        https?://(?P<host>(?:
                            # Taken from https://instances.joinpeertube.org/instances
                            0ch\.tv|
                            3dctube\.3dcandy\.social|
                            all\.electric\.kitchen|
                            alterscope\.fr|
                            anarchy\.tube|
                            apathy\.tv|
                            apertatube\.net|
                            archive\.nocopyrightintended\.tv|
                            archive\.reclaim\.tv|
                            area51\.media|
                            astrotube-ufe\.obspm\.fr|
                            astrotube\.obspm\.fr|
                            audio\.freediverse\.com|
                            azxtube\.youssefc\.tn|
                            bark\.video|
                            battlepenguin\.video|
                            bava\.tv|
                            bee-tube\.fr|
                            beetoons\.tv|
                            biblion\.refchat\.net|
                            biblioteca\.theowlclub\.net|
                            bideoak\.argia\.eus|
                            bideoteka\.eus|
                            birdtu\.be|
                            bitcointv\.com|
                            bonn\.video|
                            breeze\.tube|
                            brioco\.live|
                            brocosoup\.fr|
                            canal\.facil\.services|
                            canard\.tube|
                            cdn01\.tilvids\.com|
                            celluloid-media\.huma-num\.fr|
                            chicago1\.peertube\.support|
                            cliptube\.org|
                            cloudtube\.ise\.fraunhofer\.de|
                            comf\.tube|
                            comics\.peertube\.biz|
                            commons\.tube|
                            communitymedia\.video|
                            conspiracydistillery\.com|
                            crank\.recoil\.org|
                            dalek\.zone|
                            dalliance\.network|
                            dangly\.parts|
                            darkvapor\.nohost\.me|
                            daschauher\.aksel\.rocks|
                            digitalcourage\.video|
                            displayeurope\.video|
                            ds106\.tv|
                            dud-video\.inf\.tu-dresden\.de|
                            dud175\.inf\.tu-dresden\.de|
                            dytube\.com|
                            ebildungslabor\.video|
                            evangelisch\.video|
                            fair\.tube|
                            fedi\.video|
                            fedimovie\.com|
                            fediverse\.tv|
                            film\.k-prod\.fr|
                            flipboard\.video|
                            foss\.video|
                            fossfarmers\.company|
                            fotogramas\.politicaconciencia\.org|
                            freediverse\.com|
                            freesoto-u2151\.vm\.elestio\.app|
                            freesoto\.tv|
                            garr\.tv|
                            greatview\.video|
                            grypstube\.uni-greifswald\.de|
                            habratube\.site|
                            ilbjach\.ru|
                            infothema\.net|
                            itvplus\.iiens\.net|
                            johnydeep\.net|
                            juggling\.digital|
                            jupiter\.tube|
                            kadras\.live|
                            kino\.kompot\.si|
                            kino\.schuerz\.at|
                            kinowolnosc\.pl|
                            kirche\.peertube-host\.de|
                            kiwi\.froggirl\.club|
                            kodcast\.com|
                            kolektiva\.media|
                            kpop\.22x22\.ru|
                            kumi\.tube|
                            la2\.peertube\.support|
                            la3\.peertube\.support|
                            la4\.peertube\.support|
                            lastbreach\.tv|
                            lawsplaining\.peertube\.biz|
                            leopard\.tube|
                            live\.codinglab\.ch|
                            live\.libratoi\.org|
                            live\.oldskool\.fi|
                            live\.solari\.com|
                            lucarne\.balsamine\.be|
                            luxtube\.lu|
                            makertube\.net|
                            media\.econoalchemist\.com|
                            media\.exo\.cat|
                            media\.fsfe\.org|
                            media\.gzevd\.de|
                            media\.interior\.edu\.uy|
                            media\.krashboyz\.org|
                            media\.mzhd\.de|
                            media\.smz-ma\.de|
                            media\.theplattform\.net|
                            media\.undeadnetwork\.de|
                            medias\.debrouillonet\.org|
                            medias\.pingbase\.net|
                            mediatube\.fermalo\.fr|
                            melsungen\.peertube-host\.de|
                            merci-la-police\.fr|
                            mindlyvideos\.com|
                            mirror\.peertube\.metalbanana\.net|
                            mirrored\.rocks|
                            mix\.video|
                            mountaintown\.video|
                            movies\.metricsmaster\.eu|
                            mtube\.mooo\.com|
                            mytube\.kn-cloud\.de|
                            mytube\.le5emeaxe\.fr|
                            mytube\.madzel\.de|
                            nadajemy\.com|
                            nanawel-peertube\.dyndns\.org|
                            neat\.tube|
                            nethack\.tv|
                            nicecrew\.tv|
                            nightshift\.minnix\.dev|
                            nolog\.media|
                            nyltube\.nylarea\.com|
                            ocfedtest\.hosted\.spacebear\.ee|
                            openmedia\.edunova\.it|
                            p2ptv\.ru|
                            p\.eertu\.be|
                            p\.lu|
                            pastafriday\.club|
                            patriottube\.sonsofliberty\.red|
                            pcbu\.nl|
                            peer\.azurs\.fr|
                            peer\.d0g4\.me|
                            peer\.lukeog\.com|
                            peer\.madiator\.cloud|
                            peer\.raise-uav\.com|
                            peershare\.togart\.de|
                            peertube-blablalinux\.be|
                            peertube-demo\.learning-hub\.fr|
                            peertube-docker\.cpy\.re|
                            peertube-eu\.howlround\.com|
                            peertube-u5014\.vm\.elestio\.app|
                            peertube-us\.howlround\.com|
                            peertube\.020\.pl|
                            peertube\.0x5e\.eu|
                            peertube\.1984\.cz|
                            peertube\.2i2l\.net|
                            peertube\.adjutor\.xyz|
                            peertube\.adresse\.data\.gouv\.fr|
                            peertube\.alpharius\.io|
                            peertube\.am-networks\.fr|
                            peertube\.anduin\.net|
                            peertube\.anti-logic\.com|
                            peertube\.arch-linux\.cz|
                            peertube\.art3mis\.de|
                            peertube\.artsrn\.ualberta\.ca|
                            peertube\.askan\.info|
                            peertube\.astral0pitek\.synology\.me|
                            peertube\.atsuchan\.page|
                            peertube\.automat\.click|
                            peertube\.b38\.rural-it\.org|
                            peertube\.be|
                            peertube\.beeldengeluid\.nl|
                            peertube\.bgzashtita\.es|
                            peertube\.bike|
                            peertube\.bildung-ekhn\.de|
                            peertube\.biz|
                            peertube\.br0\.fr|
                            peertube\.bridaahost\.ynh\.fr|
                            peertube\.bubbletea\.dev|
                            peertube\.bubuit\.net|
                            peertube\.cabaal\.net|
                            peertube\.chatinbit\.com|
                            peertube\.chaunchy\.com|
                            peertube\.chir\.rs|
                            peertube\.christianpacaud\.com|
                            peertube\.chtisurel\.net|
                            peertube\.chuggybumba\.com|
                            peertube\.cipherbliss\.com|
                            peertube\.cirkau\.art|
                            peertube\.cloud\.nerdraum\.de|
                            peertube\.cloud\.sans\.pub|
                            peertube\.coko\.foundation|
                            peertube\.communecter\.org|
                            peertube\.concordia\.social|
                            peertube\.corrigan\.xyz|
                            peertube\.cpge-brizeux\.fr|
                            peertube\.ctseuro\.com|
                            peertube\.cuatrolibertades\.org|
                            peertube\.cube4fun\.net|
                            peertube\.dair-institute\.org|
                            peertube\.davigge\.com|
                            peertube\.dc\.pini\.fr|
                            peertube\.deadtom\.me|
                            peertube\.debian\.social|
                            peertube\.delta0189\.xyz|
                            peertube\.demonix\.fr|
                            peertube\.designersethiques\.org|
                            peertube\.desmu\.fr|
                            peertube\.devol\.it|
                            peertube\.dk|
                            peertube\.doesstuff\.social|
                            peertube\.eb8\.org|
                            peertube\.education-forum\.com|
                            peertube\.elforcer\.ru|
                            peertube\.em\.id\.lv|
                            peertube\.ethibox\.fr|
                            peertube\.eu\.org|
                            peertube\.european-pirates\.eu|
                            peertube\.eus|
                            peertube\.euskarabildua\.eus|
                            peertube\.expi\.studio|
                            peertube\.familie-berner\.de|
                            peertube\.familleboisteau\.fr|
                            peertube\.fedihost\.website|
                            peertube\.fenarinarsa\.com|
                            peertube\.festnoz\.de|
                            peertube\.forteza\.fr|
                            peertube\.freestorm\.online|
                            peertube\.functional\.cafe|
                            peertube\.gaminglinux\.fr|
                            peertube\.gargantia\.fr|
                            peertube\.geekgalaxy\.fr|
                            peertube\.gemlog\.ca|
                            peertube\.genma\.fr|
                            peertube\.get-racing\.de|
                            peertube\.ghis94\.ovh|
                            peertube\.gidikroon\.eu|
                            peertube\.giftedmc\.com|
                            peertube\.grosist\.fr|
                            peertube\.gruntwerk\.org|
                            peertube\.gsugambit\.com|
                            peertube\.hackerfoo\.com|
                            peertube\.hellsite\.net|
                            peertube\.helvetet\.eu|
                            peertube\.histoirescrepues\.fr|
                            peertube\.home\.x0r\.fr|
                            peertube\.hyperfreedom\.org|
                            peertube\.ichigo\.everydayimshuflin\.com|
                            peertube\.ifwo\.eu|
                            peertube\.in\.ua|
                            peertube\.inapurna\.org|
                            peertube\.informaction\.info|
                            peertube\.interhop\.org|
                            peertube\.it|
                            peertube\.it-arts\.net|
                            peertube\.jensdiemer\.de|
                            peertube\.johntheserg\.al|
                            peertube\.kaleidos\.net|
                            peertube\.kalua\.im|
                            peertube\.kcore\.org|
                            peertube\.keazilla\.net|
                            peertube\.klaewyss\.fr|
                            peertube\.kleph\.eu|
                            peertube\.kodein\.be|
                            peertube\.kooperatywa\.tech|
                            peertube\.kriom\.net|
                            peertube\.kx\.studio|
                            peertube\.kyriog\.eu|
                            peertube\.la-famille-muller\.fr|
                            peertube\.labeuropereunion\.eu|
                            peertube\.lagvoid\.com|
                            peertube\.lhc\.net\.br|
                            peertube\.libresolutions\.network|
                            peertube\.libretic\.fr|
                            peertube\.librosphere\.fr|
                            peertube\.logilab\.fr|
                            peertube\.lon\.tv|
                            peertube\.louisematic\.site|
                            peertube\.luckow\.org|
                            peertube\.luga\.at|
                            peertube\.lyceeconnecte\.fr|
                            peertube\.madixam\.xyz|
                            peertube\.magicstone\.dev|
                            peertube\.marienschule\.de|
                            peertube\.marud\.fr|
                            peertube\.maxweiss\.io|
                            peertube\.miguelcr\.me|
                            peertube\.mikemestnik\.net|
                            peertube\.mobilsicher\.de|
                            peertube\.monlycee\.net|
                            peertube\.mxinfo\.fr|
                            peertube\.naln1\.ca|
                            peertube\.netzbegruenung\.de|
                            peertube\.nicolastissot\.fr|
                            peertube\.nogafam\.fr|
                            peertube\.normalgamingcommunity\.cz|
                            peertube\.nz|
                            peertube\.offerman\.com|
                            peertube\.ohioskates\.com|
                            peertube\.onionstorm\.net|
                            peertube\.opencloud\.lu|
                            peertube\.otakufarms\.com|
                            peertube\.paladyn\.org|
                            peertube\.pix-n-chill\.fr|
                            peertube\.r2\.enst\.fr|
                            peertube\.r5c3\.fr|
                            peertube\.redpill-insight\.com|
                            peertube\.researchinstitute\.at|
                            peertube\.revelin\.fr|
                            peertube\.rlp\.schule|
                            peertube\.rokugan\.fr|
                            peertube\.rougevertbleu\.tv|
                            peertube\.roundpond\.net|
                            peertube\.rural-it\.org|
                            peertube\.satoshishop\.de|
                            peertube\.scyldings\.com|
                            peertube\.securitymadein\.lu|
                            peertube\.semperpax\.com|
                            peertube\.semweb\.pro|
                            peertube\.sensin\.eu|
                            peertube\.sidh\.bzh|
                            peertube\.skorpil\.cz|
                            peertube\.smertrios\.com|
                            peertube\.sqweeb\.net|
                            peertube\.stattzeitung\.org|
                            peertube\.stream|
                            peertube\.su|
                            peertube\.swrs\.net|
                            peertube\.takeko\.cyou|
                            peertube\.taxinachtegel\.de|
                            peertube\.teftera\.com|
                            peertube\.teutronic-services\.de|
                            peertube\.ti-fr\.com|
                            peertube\.tiennot\.net|
                            peertube\.tmp\.rcp\.tf|
                            peertube\.tspu\.edu\.ru|
                            peertube\.tv|
                            peertube\.tweb\.tv|
                            peertube\.underworld\.fr|
                            peertube\.vapronva\.pw|
                            peertube\.veen\.world|
                            peertube\.vesdia\.eu|
                            peertube\.virtual-assembly\.org|
                            peertube\.viviers-fibre\.net|
                            peertube\.vlaki\.cz|
                            peertube\.wiesbaden\.social|
                            peertube\.wivodaim\.net|
                            peertube\.wtf|
                            peertube\.wtfayla\.net|
                            peertube\.xrcb\.cat|
                            peertube\.xwiki\.com|
                            peertube\.zd\.do|
                            peertube\.zetamc\.net|
                            peertube\.zmuuf\.org|
                            peertube\.zoz-serv\.org|
                            peertube\.zwindler\.fr|
                            peervideo\.ru|
                            periscope\.numenaute\.org|
                            pete\.warpnine\.de|
                            petitlutinartube\.fr|
                            phijkchu\.com|
                            phoenixproject\.group|
                            piraten\.space|
                            pirtube\.calut\.fr|
                            pityu\.flaki\.hu|
                            play\.mittdata\.se|
                            player\.ojamajo\.moe|
                            podlibre\.video|
                            portal\.digilab\.nfa\.cz|
                            private\.fedimovie\.com|
                            pt01\.lehrerfortbildung-bw\.de|
                            pt\.diaspodon\.fr|
                            pt\.freedomwolf\.cc|
                            pt\.gordons\.gen\.nz|
                            pt\.ilyamikcoder\.com|
                            pt\.irnok\.net|
                            pt\.mezzo\.moe|
                            pt\.na4\.eu|
                            pt\.netcraft\.ch|
                            pt\.rwx\.ch|
                            pt\.sfunk1x\.com|
                            pt\.thishorsie\.rocks|
                            pt\.vern\.cc|
                            ptb\.lunarviews\.net|
                            ptube\.de|
                            ptube\.ranranhome\.info|
                            puffy\.tube|
                            puppet\.zone|
                            qtube\.qlyoung\.net|
                            quantube\.win|
                            rankett\.net|
                            replay\.jres\.org|
                            review\.peertube\.biz|
                            sdmtube\.fr|
                            secure\.direct-live\.net|
                            secure\.scanovid\.com|
                            seka\.pona\.la|
                            serv3\.wiki-tube\.de|
                            skeptube\.fr|
                            social\.fedimovie\.com|
                            socpeertube\.ru|
                            sovran\.video|
                            special\.videovortex\.tv|
                            spectra\.video|
                            stl1988\.peertube-host\.de|
                            stream\.biovisata\.lt|
                            stream\.conesphere\.cloud|
                            stream\.elven\.pw|
                            stream\.jurnalfm\.md|
                            stream\.k-prod\.fr|
                            stream\.litera\.tools|
                            stream\.nuemedia\.se|
                            stream\.rlp-media\.de|
                            stream\.vrse\.be|
                            studios\.racer159\.com|
                            styxhexenhammer666\.com|
                            syrteplay\.obspm\.fr|
                            t\.0x0\.st|
                            tbh\.co-shaoghal\.net|
                            test-fab\.ynh\.fr|
                            testube\.distrilab\.fr|
                            tgi\.hosted\.spacebear\.ee|
                            theater\.ethernia\.net|
                            thecool\.tube|
                            thevideoverse\.com|
                            tilvids\.com|
                            tinkerbetter\.tube|
                            tinsley\.video|
                            trailers\.ddigest\.com|
                            tube-action-educative\.apps\.education\.fr|
                            tube-arts-lettres-sciences-humaines\.apps\.education\.fr|
                            tube-cycle-2\.apps\.education\.fr|
                            tube-cycle-3\.apps\.education\.fr|
                            tube-education-physique-et-sportive\.apps\.education\.fr|
                            tube-enseignement-professionnel\.apps\.education\.fr|
                            tube-institutionnel\.apps\.education\.fr|
                            tube-langues-vivantes\.apps\.education\.fr|
                            tube-maternelle\.apps\.education\.fr|
                            tube-numerique-educatif\.apps\.education\.fr|
                            tube-sciences-technologies\.apps\.education\.fr|
                            tube-test\.apps\.education\.fr|
                            tube1\.perron-service\.de|
                            tube\.9minuti\.it|
                            tube\.abolivier\.bzh|
                            tube\.alado\.space|
                            tube\.amic37\.fr|
                            tube\.area404\.cloud|
                            tube\.arthack\.nz|
                            tube\.asulia\.fr|
                            tube\.awkward\.company|
                            tube\.azbyka\.ru|
                            tube\.azkware\.net|
                            tube\.bartrip\.me\.uk|
                            tube\.belowtoxic\.media|
                            tube\.bingle\.plus|
                            tube\.bit-friends\.de|
                            tube\.bstly\.de|
                            tube\.chosto\.me|
                            tube\.cms\.garden|
                            tube\.communia\.org|
                            tube\.cyberia\.club|
                            tube\.cybershock\.life|
                            tube\.dembased\.xyz|
                            tube\.dev\.displ\.eu|
                            tube\.digitalesozialearbeit\.de|
                            tube\.distrilab\.fr|
                            tube\.doortofreedom\.org|
                            tube\.dsocialize\.net|
                            tube\.e-jeremy\.com|
                            tube\.ebin\.club|
                            tube\.elemac\.fr|
                            tube\.erzbistum-hamburg\.de|
                            tube\.exozy\.me|
                            tube\.fdn\.fr|
                            tube\.fedi\.quebec|
                            tube\.fediverse\.at|
                            tube\.felinn\.org|
                            tube\.flokinet\.is|
                            tube\.foad\.me\.uk|
                            tube\.freepeople\.fr|
                            tube\.friloux\.me|
                            tube\.froth\.zone|
                            tube\.fulda\.social|
                            tube\.futuretic\.fr|
                            tube\.g1zm0\.de|
                            tube\.g4rf\.net|
                            tube\.gaiac\.io|
                            tube\.geekyboo\.net|
                            tube\.genb\.de|
                            tube\.ghk-academy\.info|
                            tube\.gi-it\.de|
                            tube\.grap\.coop|
                            tube\.graz\.social|
                            tube\.grin\.hu|
                            tube\.hokai\.lol|
                            tube\.int5\.net|
                            tube\.interhacker\.space|
                            tube\.invisible\.ch|
                            tube\.io18\.top|
                            tube\.itsg\.host|
                            tube\.jeena\.net|
                            tube\.kh-berlin\.de|
                            tube\.kockatoo\.org|
                            tube\.kotur\.org|
                            tube\.koweb\.fr|
                            tube\.la-dina\.net|
                            tube\.lab\.nrw|
                            tube\.lacaveatonton\.ovh|
                            tube\.laurent-malys\.fr|
                            tube\.leetdreams\.ch|
                            tube\.linkse\.media|
                            tube\.lokad\.com|
                            tube\.lucie-philou\.com|
                            tube\.media-techport\.de|
                            tube\.morozoff\.pro|
                            tube\.neshweb\.net|
                            tube\.nestor\.coop|
                            tube\.network\.europa\.eu|
                            tube\.nicfab\.eu|
                            tube\.nieuwwestbrabant\.nl|
                            tube\.nogafa\.org|
                            tube\.novg\.net|
                            tube\.nox-rhea\.org|
                            tube\.nuagelibre\.fr|
                            tube\.numerique\.gouv\.fr|
                            tube\.nuxnik\.com|
                            tube\.nx12\.net|
                            tube\.octaplex\.net|
                            tube\.oisux\.org|
                            tube\.okcinfo\.news|
                            tube\.onlinekirche\.net|
                            tube\.opportunis\.me|
                            tube\.oraclefilms\.com|
                            tube\.org\.il|
                            tube\.pacapime\.ovh|
                            tube\.parinux\.org|
                            tube\.pastwind\.top|
                            tube\.picasoft\.net|
                            tube\.pilgerweg-21\.de|
                            tube\.pmj\.rocks|
                            tube\.pol\.social|
                            tube\.ponsonaille\.fr|
                            tube\.portes-imaginaire\.org|
                            tube\.public\.apolut\.net|
                            tube\.pustule\.org|
                            tube\.pyngu\.com|
                            tube\.querdenken-711\.de|
                            tube\.rebellion\.global|
                            tube\.reseau-canope\.fr|
                            tube\.rhythms-of-resistance\.org|
                            tube\.risedsky\.ovh|
                            tube\.rooty\.fr|
                            tube\.rsi\.cnr\.it|
                            tube\.ryne\.moe|
                            tube\.schleuss\.online|
                            tube\.schule\.social|
                            tube\.sekretaerbaer\.net|
                            tube\.shanti\.cafe|
                            tube\.shela\.nu|
                            tube\.skrep\.in|
                            tube\.sleeping\.town|
                            tube\.sp-codes\.de|
                            tube\.spdns\.org|
                            tube\.systerserver\.net|
                            tube\.systest\.eu|
                            tube\.tappret\.fr|
                            tube\.techeasy\.org|
                            tube\.thierrytalbert\.fr|
                            tube\.tinfoil-hat\.net|
                            tube\.toldi\.eu|
                            tube\.tpshd\.de|
                            tube\.trax\.im|
                            tube\.troopers\.agency|
                            tube\.ttk\.is|
                            tube\.tuxfriend\.fr|
                            tube\.tylerdavis\.xyz|
                            tube\.ullihome\.de|
                            tube\.ulne\.be|
                            tube\.undernet\.uy|
                            tube\.vrpnet\.org|
                            tube\.wolfe\.casa|
                            tube\.xd0\.de|
                            tube\.xn--baw-joa\.social|
                            tube\.xy-space\.de|
                            tube\.yapbreak\.fr|
                            tubedu\.org|
                            tubulus\.openlatin\.org|
                            turtleisland\.video|
                            tututu\.tube|
                            tv\.adast\.dk|
                            tv\.adn\.life|
                            tv\.arns\.lt|
                            tv\.atmx\.ca|
                            tv\.based\.quest|
                            tv\.farewellutopia\.com|
                            tv\.filmfreedom\.net|
                            tv\.gravitons\.org|
                            tv\.io\.seg\.br|
                            tv\.lumbung\.space|
                            tv\.pirateradio\.social|
                            tv\.pirati\.cz|
                            tv\.santic-zombie\.ru|
                            tv\.undersco\.re|
                            tv\.zonepl\.net|
                            tvox\.ru|
                            twctube\.twc-zone\.eu|
                            twobeek\.com|
                            urbanists\.video|
                            v\.9tail\.net|
                            v\.basspistol\.org|
                            v\.j4\.lc|
                            v\.kisombrella\.top|
                            v\.koa\.im|
                            v\.kyaru\.xyz|
                            v\.lor\.sh|
                            v\.mkp\.ca|
                            v\.posm\.gay|
                            v\.slaycer\.top|
                            veedeo\.org|
                            vhs\.absturztau\.be|
                            vid\.cthos\.dev|
                            vid\.kinuseka\.us|
                            vid\.mkp\.ca|
                            vid\.nocogabriel\.fr|
                            vid\.norbipeti\.eu|
                            vid\.northbound\.online|
                            vid\.ohboii\.de|
                            vid\.plantplotting\.co\.uk|
                            vid\.pretok\.tv|
                            vid\.prometheus\.systems|
                            vid\.soafen\.love|
                            vid\.twhtv\.club|
                            vid\.wildeboer\.net|
                            video-cave-v2\.de|
                            video-liberty\.com|
                            video\.076\.ne\.jp|
                            video\.1146\.nohost\.me|
                            video\.9wd\.eu|
                            video\.abraum\.de|
                            video\.ados\.accoord\.fr|
                            video\.amiga-ng\.org|
                            video\.anartist\.org|
                            video\.asgardius\.company|
                            video\.audiovisuel-participatif\.org|
                            video\.bards\.online|
                            video\.barkoczy\.social|
                            video\.benetou\.fr|
                            video\.beyondwatts\.social|
                            video\.bgeneric\.net|
                            video\.bilecik\.edu\.tr|
                            video\.blast-info\.fr|
                            video\.bmu\.cloud|
                            video\.catgirl\.biz|
                            video\.causa-arcana\.com|
                            video\.chasmcity\.net|
                            video\.chbmeyer\.de|
                            video\.cigliola\.com|
                            video\.citizen4\.eu|
                            video\.clumsy\.computer|
                            video\.cnnumerique\.fr|
                            video\.cnr\.it|
                            video\.cnt\.social|
                            video\.coales\.co|
                            video\.comune\.trento\.it|
                            video\.coyp\.us|
                            video\.csc49\.fr|
                            video\.davduf\.net|
                            video\.davejansen\.com|
                            video\.dlearning\.nl|
                            video\.dnfi\.no|
                            video\.dresden\.network|
                            video\.drgnz\.club|
                            video\.dudenas\.lt|
                            video\.eientei\.org|
                            video\.ellijaymakerspace\.org|
                            video\.emergeheart\.info|
                            video\.eradicatinglove\.xyz|
                            video\.everythingbagel\.me|
                            video\.extremelycorporate\.ca|
                            video\.fabiomanganiello\.com|
                            video\.fedi\.bzh|
                            video\.fhtagn\.org|
                            video\.firehawk-systems\.com|
                            video\.fox-romka\.ru|
                            video\.fuss\.bz\.it|
                            video\.glassbeadcollective\.org|
                            video\.graine-pdl\.org|
                            video\.gyt\.is|
                            video\.hainry\.fr|
                            video\.hardlimit\.com|
                            video\.hostux\.net|
                            video\.igem\.org|
                            video\.infojournal\.fr|
                            video\.internet-czas-dzialac\.pl|
                            video\.interru\.io|
                            video\.ipng\.ch|
                            video\.ironsysadmin\.com|
                            video\.islameye\.com|
                            video\.jacen\.moe|
                            video\.jadin\.me|
                            video\.jeffmcbride\.net|
                            video\.jigmedatse\.com|
                            video\.kuba-orlik\.name|
                            video\.lacalligramme\.fr|
                            video\.lanceurs-alerte\.fr|
                            video\.laotra\.red|
                            video\.lapineige\.fr|
                            video\.laraffinerie\.re|
                            video\.lavolte\.net|
                            video\.liberta\.vip|
                            video\.libreti\.net|
                            video\.licentia\.net|
                            video\.linc\.systems|
                            video\.linux\.it|
                            video\.linuxtrent\.it|
                            video\.liveitlive\.show|
                            video\.lono\.space|
                            video\.lrose\.de|
                            video\.lunago\.net|
                            video\.lundi\.am|
                            video\.lycee-experimental\.org|
                            video\.maechler\.cloud|
                            video\.marcorennmaus\.de|
                            video\.mass-trespass\.uk|
                            video\.matomocamp\.org|
                            video\.medienzentrum-harburg\.de|
                            video\.mentality\.rip|
                            video\.metaversum\.wtf|
                            video\.midreality\.com|
                            video\.mttv\.it|
                            video\.mugoreve\.fr|
                            video\.mxtthxw\.art|
                            video\.mycrowd\.ca|
                            video\.niboe\.info|
                            video\.nogafam\.es|
                            video\.nstr\.no|
                            video\.occm\.cc|
                            video\.off-investigation\.fr|
                            video\.olos311\.org|
                            video\.ordinobsolete\.fr|
                            video\.osvoj\.ru|
                            video\.ourcommon\.cloud|
                            video\.ozgurkon\.org|
                            video\.pcf\.fr|
                            video\.pcgaldo\.com|
                            video\.phyrone\.de|
                            video\.poul\.org|
                            video\.publicspaces\.net|
                            video\.pullopen\.xyz|
                            video\.r3s\.nrw|
                            video\.rainevixen\.com|
                            video\.resolutions\.it|
                            video\.retroedge\.tech|
                            video\.rhizome\.org|
                            video\.rlp-media\.de|
                            video\.rs-einrich\.de|
                            video\.rubdos\.be|
                            video\.sadmin\.io|
                            video\.sftblw\.moe|
                            video\.shitposter\.club|
                            video\.simplex-software\.ru|
                            video\.slipfox\.xyz|
                            video\.snug\.moe|
                            video\.software-fuer-engagierte\.de|
                            video\.soi\.ch|
                            video\.sonet\.ws|
                            video\.surazal\.net|
                            video\.taskcards\.eu|
                            video\.team-lcbs\.eu|
                            video\.techforgood\.social|
                            video\.telemillevaches\.net|
                            video\.thepolarbear\.co\.uk|
                            video\.thinkof\.name|
                            video\.tii\.space|
                            video\.tkz\.es|
                            video\.trankil\.info|
                            video\.triplea\.fr|
                            video\.tum\.social|
                            video\.turbo\.chat|
                            video\.uriopss-pdl\.fr|
                            video\.ustim\.ru|
                            video\.ut0pia\.org|
                            video\.vaku\.org\.ua|
                            video\.vegafjord\.me|
                            video\.veloma\.org|
                            video\.violoncello\.ch|
                            video\.voidconspiracy\.band|
                            video\.wakkeren\.nl|
                            video\.windfluechter\.org|
                            video\.ziez\.eu|
                            videos-passages\.huma-num\.fr|
                            videos\.aadtp\.be|
                            videos\.ahp-numerique\.fr|
                            videos\.alamaisondulibre\.org|
                            videos\.archigny\.net|
                            videos\.aroaduntraveled\.com|
                            videos\.b4tech\.org|
                            videos\.benjaminbrady\.ie|
                            videos\.bik\.opencloud\.lu|
                            videos\.cloudron\.io|
                            videos\.codingotaku\.com|
                            videos\.coletivos\.org|
                            videos\.collate\.social|
                            videos\.danksquad\.org|
                            videos\.digitaldragons\.eu|
                            videos\.dromeadhere\.fr|
                            videos\.explain-it\.org|
                            videos\.factsonthegroundshow\.com|
                            videos\.foilen\.com|
                            videos\.fsci\.in|
                            videos\.gamercast\.net|
                            videos\.gianmarco\.gg|
                            videos\.globenet\.org|
                            videos\.grafo\.zone|
                            videos\.hauspie\.fr|
                            videos\.hush\.is|
                            videos\.hyphalfusion\.network|
                            videos\.icum\.to|
                            videos\.im\.allmendenetz\.de|
                            videos\.jacksonchen666\.com|
                            videos\.john-livingston\.fr|
                            videos\.knazarov\.com|
                            videos\.kuoushi\.com|
                            videos\.laliguepaysdelaloire\.org|
                            videos\.lemouvementassociatif-pdl\.org|
                            videos\.leslionsfloorball\.fr|
                            videos\.librescrum\.org|
                            videos\.mastodont\.cat|
                            videos\.metus\.ca|
                            videos\.miolo\.org|
                            videos\.offroad\.town|
                            videos\.openmandriva\.org|
                            videos\.parleur\.net|
                            videos\.pcorp\.us|
                            videos\.pop\.eu\.com|
                            videos\.rampin\.org|
                            videos\.rauten\.co\.za|
                            videos\.ritimo\.org|
                            videos\.sarcasmstardust\.com|
                            videos\.scanlines\.xyz|
                            videos\.shmalls\.pw|
                            videos\.stadtfabrikanten\.org|
                            videos\.supertuxkart\.net|
                            videos\.testimonia\.org|
                            videos\.thinkerview\.com|
                            videos\.torrenezzi10\.xyz|
                            videos\.trom\.tf|
                            videos\.utsukta\.org|
                            videos\.viorsan\.com|
                            videos\.wherelinux\.xyz|
                            videos\.wikilibriste\.fr|
                            videos\.yesil\.club|
                            videos\.yeswiki\.net|
                            videotube\.duckdns\.org|
                            vids\.capypara\.de|
                            vids\.roshless\.me|
                            vids\.stary\.pc\.pl|
                            vids\.tekdmn\.me|
                            vidz\.julien\.ovh|
                            views\.southfox\.me|
                            virtual-girls-are\.definitely-for\.me|
                            viste\.pt|
                            vnchich\.com|
                            vnop\.org|
                            vod\.newellijay\.tv|
                            voluntarytube\.com|
                            vtr\.chikichiki\.tube|
                            vulgarisation-informatique\.fr|
                            watch\.easya\.solutions|
                            watch\.goodluckgabe\.life|
                            watch\.ignorance\.eu|
                            watch\.jimmydore\.com|
                            watch\.libertaria\.space|
                            watch\.nuked\.social|
                            watch\.ocaml\.org|
                            watch\.thelema\.social|
                            watch\.tubelab\.video|
                            web-fellow\.de|
                            webtv\.vandoeuvre\.net|
                            wetubevid\.online|
                            wikileaks\.video|
                            wiwi\.video|
                            wow\.such\.disappointment\.fail|
                            www\.jvideos\.net|
                            www\.kotikoff\.net|
                            www\.makertube\.net|
                            www\.mypeer\.tube|
                            www\.nadajemy\.com|
                            www\.neptube\.io|
                            www\.rocaguinarda\.tv|
                            www\.vnshow\.net|
                            xxivproduction\.video|
                            yt\.orokoro\.ru|
                            ytube\.retronerd\.at|
                            zumvideo\.de|

                            # from youtube-dl
                            peertube\.rainbowswingers\.net|
                            tube\.stanisic\.nl|
                            peer\.suiri\.us|
                            medias\.libox\.fr|
                            videomensoif\.ynh\.fr|
                            peertube\.travelpandas\.eu|
                            peertube\.rachetjay\.fr|
                            peertube\.montecsys\.fr|
                            tube\.eskuero\.me|
                            peer\.tube|
                            peertube\.umeahackerspace\.se|
                            tube\.nx-pod\.de|
                            video\.monsieurbidouille\.fr|
                            tube\.openalgeria\.org|
                            vid\.lelux\.fi|
                            video\.anormallostpod\.ovh|
                            tube\.crapaud-fou\.org|
                            peertube\.stemy\.me|
                            lostpod\.space|
                            exode\.me|
                            peertube\.snargol\.com|
                            vis\.ion\.ovh|
                            videosdulib\.re|
                            v\.mbius\.io|
                            videos\.judrey\.eu|
                            peertube\.osureplayviewer\.xyz|
                            peertube\.mathieufamily\.ovh|
                            www\.videos-libr\.es|
                            fightforinfo\.com|
                            peertube\.fediverse\.ru|
                            peertube\.oiseauroch\.fr|
                            video\.nesven\.eu|
                            v\.bearvideo\.win|
                            video\.qoto\.org|
                            justporn\.cc|
                            video\.vny\.fr|
                            peervideo\.club|
                            tube\.taker\.fr|
                            peertube\.chantierlibre\.org|
                            tube\.ipfixe\.info|
                            tube\.kicou\.info|
                            tube\.dodsorf\.as|
                            videobit\.cc|
                            video\.yukari\.moe|
                            videos\.elbinario\.net|
                            hkvideo\.live|
                            pt\.tux\.tf|
                            www\.hkvideo\.live|
                            FIGHTFORINFO\.com|
                            pt\.765racing\.com|
                            peertube\.gnumeria\.eu\.org|
                            nordenmedia\.com|
                            peertube\.co\.uk|
                            tube\.darfweb\.eu|
                            tube\.kalah-france\.org|
                            0ch\.in|
                            vod\.mochi\.academy|
                            film\.node9\.org|
                            peertube\.hatthieves\.es|
                            video\.fitchfamily\.org|
                            peertube\.ddns\.net|
                            video\.ifuncle\.kr|
                            video\.fdlibre\.eu|
                            tube\.22decembre\.eu|
                            peertube\.harmoniescreatives\.com|
                            tube\.fabrigli\.fr|
                            video\.thedwyers\.co|
                            video\.bruitbruit\.com|
                            peertube\.foxfam\.club|
                            peer\.philoxweb\.be|
                            videos\.bugs\.social|
                            peertube\.malbert\.xyz|
                            peertube\.bilange\.ca|
                            libretube\.net|
                            diytelevision\.com|
                            peertube\.fedilab\.app|
                            libre\.video|
                            video\.mstddntfdn\.online|
                            us\.tv|
                            peertube\.sl-network\.fr|
                            peertube\.dynlinux\.io|
                            peertube\.david\.durieux\.family|
                            peertube\.linuxrocks\.online|
                            peerwatch\.xyz|
                            v\.kretschmann\.social|
                            tube\.otter\.sh|
                            yt\.is\.nota\.live|
                            tube\.dragonpsi\.xyz|
                            peertube\.boneheadmedia\.com|
                            videos\.funkwhale\.audio|
                            watch\.44con\.com|
                            peertube\.gcaillaut\.fr|
                            peertube\.icu|
                            pony\.tube|
                            spacepub\.space|
                            tube\.stbr\.io|
                            v\.mom-gay\.faith|
                            tube\.port0\.xyz|
                            peertube\.simounet\.net|
                            play\.jergefelt\.se|
                            peertube\.zeteo\.me|
                            tube\.danq\.me|
                            peertube\.kerenon\.com|
                            tube\.fab-l3\.org|
                            tube\.calculate\.social|
                            peertube\.mckillop\.org|
                            tube\.netzspielplatz\.de|
                            vod\.ksite\.de|
                            peertube\.laas\.fr|
                            tube\.govital\.net|
                            peertube\.stephenson\.cc|
                            bistule\.nohost\.me|
                            peertube\.kajalinifi\.de|
                            video\.ploud\.jp|
                            video\.omniatv\.com|
                            peertube\.ffs2play\.fr|
                            peertube\.leboulaire\.ovh|
                            peertube\.tronic-studio\.com|
                            peertube\.public\.cat|
                            peertube\.metalbanana\.net|
                            video\.1000i100\.fr|
                            peertube\.alter-nativ-voll\.de|
                            tube\.pasa\.tf|
                            tube\.worldofhauru\.xyz|
                            pt\.kamp\.site|
                            peertube\.teleassist\.fr|
                            videos\.mleduc\.xyz|
                            conf\.tube|
                            media\.privacyinternational\.org|
                            pt\.forty-two\.nl|
                            video\.halle-leaks\.de|
                            video\.grosskopfgames\.de|
                            peertube\.schaeferit\.de|
                            peertube\.jackbot\.fr|
                            tube\.extinctionrebellion\.fr|
                            peertube\.f-si\.org|
                            video\.subak\.ovh|
                            videos\.koweb\.fr|
                            peertube\.zergy\.net|
                            peertube\.roflcopter\.fr|
                            peertube\.floss-marketing-school\.com|
                            vloggers\.social|
                            peertube\.iriseden\.eu|
                            videos\.ubuntu-paris\.org|
                            peertube\.mastodon\.host|
                            armstube\.com|
                            peertube\.s2s\.video|
                            peertube\.lol|
                            tube\.open-plug\.eu|
                            open\.tube|
                            peertube\.ch|
                            peertube\.normandie-libre\.fr|
                            peertube\.slat\.org|
                            video\.lacaveatonton\.ovh|
                            peertube\.uno|
                            peertube\.servebeer\.com|
                            peertube\.fedi\.quebec|
                            tube\.h3z\.jp|
                            tube\.plus200\.com|
                            peertube\.eric\.ovh|
                            tube\.metadocs\.cc|
                            tube\.unmondemeilleur\.eu|
                            gouttedeau\.space|
                            video\.antirep\.net|
                            nrop\.cant\.at|
                            tube\.ksl-bmx\.de|
                            tube\.plaf\.fr|
                            tube\.tchncs\.de|
                            video\.devinberg\.com|
                            hitchtube\.fr|
                            peertube\.kosebamse\.com|
                            yunopeertube\.myddns\.me|
                            peertube\.varney\.fr|
                            peertube\.anon-kenkai\.com|
                            tube\.maiti\.info|
                            tubee\.fr|
                            videos\.dinofly\.com|
                            toobnix\.org|
                            videotape\.me|
                            voca\.tube|
                            video\.heromuster\.com|
                            video\.lemediatv\.fr|
                            video\.up\.edu\.ph|
                            balafon\.video|
                            video\.ivel\.fr|
                            thickrips\.cloud|
                            pt\.laurentkruger\.fr|
                            video\.monarch-pass\.net|
                            peertube\.artica\.center|
                            video\.alternanet\.fr|
                            indymotion\.fr|
                            fanvid\.stopthatimp\.net|
                            video\.farci\.org|
                            v\.lesterpig\.com|
                            video\.okaris\.de|
                            tube\.pawelko\.net|
                            peertube\.mablr\.org|
                            tube\.fede\.re|
                            pytu\.be|
                            evertron\.tv|
                            devtube\.dev-wiki\.de|
                            raptube\.antipub\.org|
                            video\.selea\.se|
                            peertube\.mygaia\.org|
                            video\.oh14\.de|
                            peertube\.livingutopia\.org|
                            peertube\.the-penguin\.de|
                            tube\.thechangebook\.org|
                            tube\.anjara\.eu|
                            pt\.pube\.tk|
                            video\.samedi\.pm|
                            mplayer\.demouliere\.eu|
                            widemus\.de|
                            peertube\.me|
                            peertube\.zapashcanon\.fr|
                            video\.latavernedejohnjohn\.fr|
                            peertube\.pcservice46\.fr|
                            peertube\.mazzonetto\.eu|
                            video\.irem\.univ-paris-diderot\.fr|
                            video\.livecchi\.cloud|
                            alttube\.fr|
                            video\.coop\.tools|
                            video\.cabane-libre\.org|
                            peertube\.openstreetmap\.fr|
                            videos\.alolise\.org|
                            irrsinn\.video|
                            video\.antopie\.org|
                            scitech\.video|
                            tube2\.nemsia\.org|
                            video\.amic37\.fr|
                            peertube\.freeforge\.eu|
                            video\.arbitrarion\.com|
                            video\.datsemultimedia\.com|
                            stoptrackingus\.tv|
                            peertube\.ricostrongxxx\.com|
                            docker\.videos\.lecygnenoir\.info|
                            peertube\.togart\.de|
                            tube\.postblue\.info|
                            videos\.domainepublic\.net|
                            peertube\.cyber-tribal\.com|
                            video\.gresille\.org|
                            peertube\.dsmouse\.net|
                            cinema\.yunohost\.support|
                            tube\.theocevaer\.fr|
                            repro\.video|
                            tube\.4aem\.com|
                            quaziinc\.com|
                            peertube\.metawurst\.space|
                            videos\.wakapo\.com|
                            video\.ploud\.fr|
                            video\.freeradical\.zone|
                            tube\.valinor\.fr|
                            refuznik\.video|
                            pt\.kircheneuenburg\.de|
                            peertube\.asrun\.eu|
                            peertube\.lagob\.fr|
                            videos\.side-ways\.net|
                            91video\.online|
                            video\.valme\.io|
                            video\.taboulisme\.com|
                            videos-libr\.es|
                            tv\.mooh\.fr|
                            nuage\.acostey\.fr|
                            video\.monsieur-a\.fr|
                            peertube\.librelois\.fr|
                            videos\.pair2jeux\.tube|
                            videos\.pueseso\.club|
                            peer\.mathdacloud\.ovh|
                            media\.assassinate-you\.net|
                            vidcommons\.org|
                            ptube\.rousset\.nom\.fr|
                            tube\.cyano\.at|
                            videos\.squat\.net|
                            video\.iphodase\.fr|
                            peertube\.makotoworkshop\.org|
                            peertube\.serveur\.slv-valbonne\.fr|
                            vault\.mle\.party|
                            hostyour\.tv|
                            videos\.hack2g2\.fr|
                            libre\.tube|
                            pire\.artisanlogiciel\.net|
                            videos\.numerique-en-commun\.fr|
                            video\.netsyms\.com|
                            video\.die-partei\.social|
                            video\.writeas\.org|
                            peertube\.swarm\.solvingmaz\.es|
                            tube\.pericoloso\.ovh|
                            watching\.cypherpunk\.observer|
                            videos\.adhocmusic\.com|
                            tube\.rfc1149\.net|
                            peertube\.librelabucm\.org|
                            videos\.numericoop\.fr|
                            peertube\.koehn\.com|
                            peertube\.anarchmusicall\.net|
                            tube\.kampftoast\.de|
                            vid\.y-y\.li|
                            peertube\.xtenz\.xyz|
                            diode\.zone|
                            tube\.egf\.mn|
                            peertube\.nomagic\.uk|
                            visionon\.tv|
                            videos\.koumoul\.com|
                            video\.rastapuls\.com|
                            video\.mantlepro\.com|
                            video\.deadsuperhero\.com|
                            peertube\.musicstudio\.pro|
                            peertube\.we-keys\.fr|
                            artitube\.artifaille\.fr|
                            peertube\.ethernia\.net|
                            tube\.midov\.pl|
                            peertube\.fr|
                            watch\.snoot\.tube|
                            peertube\.donnadieu\.fr|
                            argos\.aquilenet\.fr|
                            tube\.nemsia\.org|
                            tube\.bruniau\.net|
                            videos\.darckoune\.moe|
                            tube\.traydent\.info|
                            dev\.videos\.lecygnenoir\.info|
                            peertube\.nayya\.org|
                            peertube\.live|
                            peertube\.mofgao\.space|
                            video\.lequerrec\.eu|
                            peertube\.amicale\.net|
                            aperi\.tube|
                            tube\.ac-lyon\.fr|
                            video\.lw1\.at|
                            www\.yiny\.org|
                            videos\.pofilo\.fr|
                            tube\.lou\.lt|
                            choob\.h\.etbus\.ch|
                            tube\.hoga\.fr|
                            peertube\.heberge\.fr|
                            video\.obermui\.de|
                            videos\.cloudfrancois\.fr|
                            betamax\.video|
                            video\.typica\.us|
                            tube\.piweb\.be|
                            video\.blender\.org|
                            peertube\.cat|
                            tube\.kdy\.ch|
                            pe\.ertu\.be|
                            peertube\.social|
                            videos\.lescommuns\.org|
                            tv\.datamol\.org|
                            videonaute\.fr|
                            dialup\.express|
                            peertube\.nogafa\.org|
                            megatube\.lilomoino\.fr|
                            peertube\.tamanoir\.foucry\.net|
                            peertube\.devosi\.org|
                            peertube\.1312\.media|
                            tube\.bootlicker\.party|
                            skeptikon\.fr|
                            video\.blueline\.mg|
                            tube\.homecomputing\.fr|
                            tube\.ouahpiti\.info|
                            video\.tedomum\.net|
                            video\.g3l\.org|
                            fontube\.fr|
                            peertube\.gaialabs\.ch|
                            tube\.kher\.nl|
                            peertube\.qtg\.fr|
                            video\.migennes\.net|
                            tube\.p2p\.legal|
                            troll\.tv|
                            videos\.iut-orsay\.fr|
                            peertube\.solidev\.net|
                            videos\.cemea\.org|
                            video\.passageenseine\.fr|
                            videos\.festivalparminous\.org|
                            peertube\.touhoppai\.moe|
                            sikke\.fi|
                            peer\.hostux\.social|
                            share\.tube|
                            peertube\.walkingmountains\.fr|
                            videos\.benpro\.fr|
                            peertube\.parleur\.net|
                            peertube\.heraut\.eu|
                            tube\.aquilenet\.fr|
                            peertube\.gegeweb\.eu|
                            framatube\.org|
                            thinkerview\.video|
                            tube\.conferences-gesticulees\.net|
                            peertube\.datagueule\.tv|
                            video\.lqdn\.fr|
                            tube\.mochi\.academy|
                            media\.zat\.im|
                            video\.colibris-outilslibres\.org|
                            tube\.svnet\.fr|
                            peertube\.video|
                            peertube2\.cpy\.re|
                            peertube3\.cpy\.re|
                            videos\.tcit\.fr|
                            peertube\.cpy\.re|
                            canard\.tube
                        ))/(?P<type>(?:a|c|w/p))/
                    (?P<id>[^/]+)
                    rm   Nr   r   r   r   r<  r<  *"  s    )G!G hrJLr   r<  c                        e Zd ZdZdZdZdZdZy)	PelotonIEyt_dlp.extractor.pelotonpelotonzBhttps?://members\.onepeloton\.com/classes/player/(?P<id>[a-f0-9]+)rl   Nr   r   r   r   r>  r>  1"  s    (GGWJNLr   r>  c                        e Zd ZdZdZdZdZdZy)PelotonLiveIEr?  zpeloton:livez?https?://members\.onepeloton\.com/player/live/(?P<id>[a-f0-9]+)zPeloton Liverl   Nr   r   r   r   rB  rB  9"  s    (GGTJGLr   rB  c                       e Zd ZdZdZdZdZy)PerformGroupIEzyt_dlp.extractor.performgroupPerformGroupzvhttps?://player\.performgroup\.com/eplayer(?:/eplayer\.html|\.js)#/?(?P<id>[0-9a-f]{26})\.(?P<auth_token>[0-9a-z]{26})rl   Nr   r   r   r   rD  rD  A"  s    -GG OJLr   rD  c                       e Zd ZdZdZy)PeriscopeBaseIEyt_dlp.extractor.periscopePeriscopeBaseNr   r   r   r   rG  rG  H"  r  r   rG  c                        e Zd ZdZdZdZdZdZy)PeriscopeIErH  	periscopezAhttps?://(?:www\.)?(?:periscope|pscp)\.tv/[^/?#]+/(?P<id>[^/?#]+)	Periscoperl   Nr   r   r   r   rK  rK  M"  s    *GGVJGLr   rK  c                        e Zd ZdZdZdZdZdZy)PeriscopeUserIErH  zperiscope:userz:https?://(?:www\.)?(?:periscope|pscp)\.tv/(?P<id>[^/]+)/?$zPeriscope user videosrm   Nr   r   r   r   rO  rO  U"  s    *GGOJ%GLr   rO  c                        e Zd ZdZdZdZdZdZy)PhilharmonieDeParisIEz$yt_dlp.extractor.philharmoniedeparisPhilharmonieDeParisa  (?x)
                    https?://
                        (?:
                            live\.philharmoniedeparis\.fr/(?:[Cc]oncert/|embed(?:app)?/|misc/Playlist\.ashx\?id=)|
                            pad\.philharmoniedeparis\.fr/(?:doc/CIMU/|player\.aspx\?id=)|
                            philharmoniedeparis\.fr/fr/live/concert/|
                            otoplayer\.philharmoniedeparis\.fr/fr/embed/
                        )
                        (?P<id>\d+)
                    zPhilharmonie de Parisr   Nr   r   r   r   rQ  rQ  ]"  s    4G#G VJ%GLr   rQ  c                       e Zd ZdZdZdZdZy)	PhoenixIEzyt_dlp.extractor.phoenixz
phoenix.dezHhttps?://(?:www\.)?phoenix\.de/(?:[^/?#]+/)*[^/?#&]*-a-(?P<id>\d+)\.htmlrl   Nr   r   r   r   rT  rT  e"  s    (GG_JLr   rT  c                       e Zd ZdZdZdZdZy)PhotobucketIEzyt_dlp.extractor.photobucketPhotobucketz`https?://(?:[a-z0-9]+\.)?photobucket\.com/.*(([\?\&]current=)|_)(?P<id>.*)\.(?P<ext>(flv)|(mp4))rl   Nr   r   r   r   rV  rV  l"  s    ,GGxJLr   rV  c                       e Zd ZdZdZdZdZy)	PiaLiveIEzyt_dlp.extractor.pialivePiaLivez3https?://player\.pia-live\.jp/stream/(?P<id>[\w-]+)rl   Nr   r   r   r   rY  rY  s"  r  r   rY  c                        e Zd ZdZdZdZdZdZy)PiaproIEzyt_dlp.extractor.piaproPiaproz2https?://piapro\.jp/(?:t|content)/(?P<id>[\w-]+)/?piaprorl   Nr   r   r   r   r\  r\  z"  s    'GGGJNLr   r\  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )	PicartoIEyt_dlp.extractor.picartopicartoz9https?://(?:www.)?picarto\.tv/(?P<id>[^/#?]+)/?(?:$|[?#])rl   c                 P    t         j                  |      rdS t        |   |      S r   )PicartoVodIEr4   r   r   s     r   r4   zPicartoIE.suitable"  s%    $--c2uM8H8MMr   r   r   s   @r   r`  r`  "  s+    (GGMJLN Nr   r`  c                        e Zd ZdZdZdZdZdZy)rd  ra  zpicarto:vodzWhttps?://(?:www\.)?picarto\.tv/(?:videopopout|\w+(?:/profile)?/videos)/(?P<id>[^/?#&]+)r   rl   Nrw  r   r   r   rd  rd  "  s    (GGmJILr   rd  c                       e Zd ZdZdZdZdZy)PikselIEzyt_dlp.extractor.pikselPiksela  (?x)https?://
        (?:
            (?:
                player\.
                    (?:
                        olympusattelecom|
                        vibebyvista
                    )|
                (?:api|player)\.multicastmedia|
                (?:api-ovp|player)\.piksel
            )\.(?:com|tech)|
            (?:
                mz-edge\.stream\.co|
                movie-s\.nhk\.or
            )\.jp|
            vidego\.baltimorecity\.gov
        )/v/(?:refid/(?P<refid>[^/]+)/prefid/)?(?P<id>[\w-]+)rl   Nr   r   r   r   rg  rg  "  s    'GG uJLr   rg  c                       e Zd ZdZdZdZdZy)
PinkbikeIEzyt_dlp.extractor.pinkbikePinkbikezdhttps?://(?:(?:www\.)?pinkbike\.com/video/|es\.pinkbike\.org/i/kvid/kvid-y5\.swf\?id=)(?P<id>[0-9]+)rl   Nr   r   r   r   rj  rj  "  s    )GG}JLr   rj  c                       e Zd ZdZdZy)PinterestBaseIEyt_dlp.extractor.pinterestPinterestBaseNr   r   r   r   rm  rm  "  r  r   rm  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )PinterestCollectionIErn  PinterestCollectiona?  (?x)
        https?://(?:[^/]+\.)?pinterest\.(?:
            com|fr|de|ch|jp|cl|ca|it|co\.uk|nz|ru|com\.au|at|pt|co\.kr|es|com\.mx|
            dk|ph|th|com\.uy|co|nl|info|kr|ie|vn|com\.vn|ec|mx|in|pe|co\.at|hu|
            co\.in|co\.nz|id|com\.ec|com\.py|tw|be|uk|com\.bo|com\.pe)/(?P<username>[^/]+)/(?P<id>[^/?#&]+)rm   c                 P    t         j                  |      rdS t        |   |      S r   )PinterestIEr4   r   r   s     r   r4   zPinterestCollectionIE.suitable"  r  r   r   r   s   @r   rq  rq  "  s.    *G#G fJLM Mr   rq  c                       e Zd ZdZdZdZdZy)rt  rn  	Pinteresta7  (?x)
        https?://(?:[^/]+\.)?pinterest\.(?:
            com|fr|de|ch|jp|cl|ca|it|co\.uk|nz|ru|com\.au|at|pt|co\.kr|es|com\.mx|
            dk|ph|th|com\.uy|co|nl|info|kr|ie|vn|com\.vn|ec|mx|in|pe|co\.at|hu|
            co\.in|co\.nz|id|com\.ec|com\.py|tw|be|uk|com\.bo|com\.pe)/pin/(?:[\w-]+--)?(?P<id>\d+)rl   Nr   r   r   r   rt  rt  "  s    *GG `JLr   rt  c                       e Zd ZdZdZdZy)PlatziBaseIEyt_dlp.extractor.platzi
PlatziBaseplatziNr{   r   r   r   rx  rx  "  r  r   rx  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )PlatziCourseIEry  PlatziCoursea  (?x)
                    https?://
                        (?:
                            platzi\.com/clases|           # es version
                            courses\.platzi\.com/classes  # en version
                        )/(?P<id>[^/?\#&]+)
                    r{  rm   c                 P    t         j                  |      rdS t        |   |      S r   )PlatziIEr4   r   r   s     r   r4   zPlatziCourseIE.suitable"  r  r   rO  r   s   @r   r}  r}  "  s3    'GG kJNLJ Jr   r}  c                        e Zd ZdZdZdZdZdZy)r  ry  Platzia  (?x)
                    https?://
                        (?:
                            platzi\.com/clases|           # es version
                            courses\.platzi\.com/classes  # en version
                        )/[^/]+/(?P<id>\d+)-[^/?\#&]+
                    r{  rl   Nr   r   r   r   r  r  "  s    'GG vJNLr   r  c                        e Zd ZdZdZdZdZdZy)PlaySuisseIEzyt_dlp.extractor.playsuisse
PlaySuissezYhttps?://(?:www\.)?playsuisse\.ch/(?:watch|detail)/(?:[^#]*[?&]episodeId=)?(?P<id>[0-9]+)
playsuisser   Nr   r   r   r   r  r  "  s    +GGnJ!NLr   r  c                        e Zd ZdZdZdZdZdZy)
PlayVidsIEr0  PlayVidszNhttps?://(?:www\.)?(?P<domain>playvids\.com)/(?:embed/|\w\w?/)?(?P<id>[^/?#]*)r   rl   Nrw  r   r   r   r  r  "  s    )GGeJILr   r  c                       e Zd ZdZdZdZdZy)
PlayerFmIEzyt_dlp.extractor.playerfmPlayerFmzH(?P<url>https?://(?:www\.)?player\.fm/(?:series/)?[\w-]+/(?P<id>[\w-]+))rl   Nr   r   r   r   r  r  "  s    )GG_JLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)
PlaytvakIEzyt_dlp.extractor.playtvakPlaytvakzWhttps?://(?:.+?\.)?(?:playtvak|idnes|lidovky|metro)\.cz/.*\?(?:c|idvideo)=(?P<id>[^&]+)Fz$Playtvak.cz, iDNES.cz and Lidovky.czrl   Nrl  r   r   r   r  r  "  s     )GGmJH4GLr   r  c                       e Zd ZdZdZy)PluralsightBaseIEyt_dlp.extractor.pluralsightPluralsightBaseNr   r   r   r   r  r  "  r  r   r  c                       e Zd ZdZdZdZdZy)PluralsightCourseIEr  zpluralsight:coursezNhttps?://(?:(?:www|app)\.)?pluralsight\.com/(?:library/)?courses/(?P<id>[^/]+)rm   Nr   r   r   r   r  r  "  s    ,G"GcJLr   r  c                        e Zd ZdZdZdZdZdZy)PluralsightIEr  pluralsightzBhttps?://(?:(?:www|app)\.)?pluralsight\.com/(?:training/)?player\?rl   Nr   r   r   r   r  r   #  s    ,GGXJ"NLr   r  c                        e Zd ZdZdZdZdZdZy)	PlutoTVIEzyt_dlp.extractor.plutotvPlutoTVa  (?x)
        https?://(?:www\.)?pluto\.tv(?:/[^/]+)?/on-demand
        /(?P<video_type>movies|series)
        /(?P<series_or_movie_slug>[^/]+)
        (?:
            (?:/seasons?/(?P<season_no>\d+))?
            (?:/episode/(?P<episode_slug>[^/]+))?
        )?
        /?(?:$|[#?])Fr   Nr]  r   r   r   r  r  #  s    (GG yJHLr   r  c                       e Zd ZdZdZdZy)PlyrEmbedIEzyt_dlp.extractor.plyr	PlyrEmbedFNr  r   r   r   r  r  #  s    %GGJr   r  c                       e Zd ZdZdZdZdZy)PodbayFMChannelIEyt_dlp.extractor.podbayfmPodbayFMChannelz1https?://podbay\.fm/p/(?P<id>[^/?#]+)/?(?:$|[?#])rm   Nr   r   r   r   r  r  #  s    )GGEJLr   r  c                       e Zd ZdZdZdZdZy)
PodbayFMIEr  PodbayFMz+https?://podbay\.fm/p/[^/?#]+/e/(?P<id>\d+)rl   Nr   r   r   r   r  r  #  s    )GG@JLr   r  c                       e Zd ZdZdZdZdZy)PodchaserIEzyt_dlp.extractor.podchaser	Podchaserzfhttps?://(?:www\.)?podchaser\.com/podcasts/[\w-]+-(?P<podcast_id>\d+)(?:/episodes/[\w-]+-(?P<id>\d+))?r   Nr   r   r   r   r  r  $#  s    *GGJLr   r  c                        e Zd ZdZdZdZdZdZy)PodomaticIEzyt_dlp.extractor.podomatic	podomatica@  (?x)
                    (?P<proto>https?)://
                        (?:
                            (?P<channel>[^.]+)\.podomatic\.com/entry|
                            (?:www\.)?podomatic\.com/podcasts/(?P<channel_2>[^/]+)/episodes
                        )/
                        (?P<id>[^/?#&]+)
                Frl   Nr]  r   r   r   r  r  +#  s    *GG _JHLr   r  c                       e Zd ZdZdZdZy)PokerGoBaseIEyt_dlp.extractor.pokergoPokerGoBasepokergoNr{   r   r   r   r  r  3#  r#  r   r  c                        e Zd ZdZdZdZdZdZy)PokerGoCollectionIEr  PokerGoCollectionz=https?://(?:www\.)?pokergo\.com/collections/(?P<id>[^&$#/?]+)r  rm   Nr   r   r   r   r  r  9#  s    (G!GRJNLr   r  c                        e Zd ZdZdZdZdZdZy)	PokerGoIEr  PokerGoz8https?://(?:www\.)?pokergo\.com/videos/(?P<id>[^&$#/?]+)r  rl   Nr   r   r   r   r  r  A#  s    (GGMJNLr   r  c                        e Zd ZdZdZdZdZdZy)
PolsatGoIEzyt_dlp.extractor.polsatgoPolsatGozJhttps?://(?:www\.)?polsat(?:box)?go\.pl/.+/(?P<id>[0-9a-fA-F]+)(?:[/#?]|$)rB  rl   Nrw  r   r   r   r  r  I#  s    )GG_JILr   r  c                       e Zd ZdZdZdZdZy)PolskieRadioAuditionIEyt_dlp.extractor.polskieradiozpolskieradio:auditionz<https?://(?:[^/]+\.)?polskieradio\.pl/audycj[ae]/(?P<id>\d+)rm   Nr   r   r   r   r  r  Q#  s    -G%GRJLr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )PolskieRadioCategoryIEr  zpolskieradio:categoryzLhttps?://(?:www\.)?polskieradio\.pl/(?:\d+(?:,[^/]+)?/|[^/]+/Tag)(?P<id>\d+)rm   c                 P    t         j                  |      rdS t        |   |      S r   )PolskieRadioLegacyIEr4   r   r   s     r   r4   zPolskieRadioCategoryIE.suitable^#  r  r   r   r   s   @r   r  r  X#  s+    -G%GcJLV Vr   r  c                       e Zd ZdZdZy)PolskieRadioBaseIEr  PolskieRadioBaseNr   r   r   r   r  r  c#  r  r   r  c                       e Zd ZdZdZdZdZy)PolskieRadioIEr  PolskieRadiozShttps?://(?:[^/]+\.)?(?:polskieradio(?:24)?|radiokierowcow)\.pl/artykul/(?P<id>\d+)rm   Nr   r   r   r   r  r  h#  s    -GGiJLr   r  c                       e Zd ZdZdZdZdZy)r  r  zpolskieradio:legacyzIhttps?://(?:www\.)?polskieradio(?:24)?\.pl/\d+/\d+/[Aa]rtykul/(?P<id>\d+)r   Nr   r   r   r   r  r  o#  s    -G#GaJLr   r  c                       e Zd ZdZdZdZdZy)PolskieRadioPlayerIEr  zpolskieradio:playerz6https?://player\.polskieradio\.pl/anteny/(?P<id>[^/]+)rl   Nr   r   r   r   r  r  v#  s    -G#GKJLr   r  c                       e Zd ZdZdZy)PolskieRadioPodcastBaseIEr  PolskieRadioPodcastBaseNr   r   r   r   r  r  }#  s    -G'Gr   r  c                       e Zd ZdZdZdZdZy)PolskieRadioPodcastIEr  zpolskieradio:podcastzXhttps?://podcasty\.polskieradio\.pl/track/(?P<id>[a-f\d]{8}(?:-[a-f\d]{4}){4}[a-f\d]{8})rl   Nr   r   r   r   r  r  #  s    -G$GpJLr   r  c                       e Zd ZdZdZdZdZy)PolskieRadioPodcastListIEr  zpolskieradio:podcast:listz7https?://podcasty\.polskieradio\.pl/podcast/(?P<id>\d+)rm   Nr   r   r   r   r  r  #  s    -G)GMJLr   r  c                       e Zd ZdZdZdZdZy)PopcornTVIEzyt_dlp.extractor.popcorntv	PopcornTVzFhttps?://[^/]+\.popcorntv\.it/guarda/(?P<display_id>[^/]+)/(?P<id>\d+)rl   Nr   r   r   r   r  r  #      *GG\JLr   r  c                       e Zd ZdZdZdZdZy)PopcorntimesIEzyt_dlp.extractor.popcorntimesPopcorntimeszHhttps?://popcorntimes\.tv/[^/]+/m/(?P<id>[^/]+)/(?P<display_id>[^/?#&]+)rl   Nr   r   r   r   r  r  #      -GG\JLr   r  c                        e Zd ZdZdZdZdZdZy)
PornFlipIEzyt_dlp.extractor.pornflipPornFlipz@https?://(?:www\.)?pornflip\.com/(?:(embed|sv|v)/)?(?P<id>[^/]+)r   rl   Nrw  r   r   r   r  r  #  s    )GGUJILr   r  c                       e Zd ZdZdZdZy)PornHubBaseIEyt_dlp.extractor.pornhubPornHubBasepornhubNr{   r   r   r   r  r  #  r#  r   r  c                   (    e Zd ZdZdZdZdZdZdZdZ	y)		PornHubIEr  PornHuba  (?x)
                    https?://
                        (?:
                            (?:[a-zA-Z0-9.-]+\.)?
                            (?:(?P<host>pornhub(?:premium)?\.(?:com|net|org))|pornhubvybmsymdol4iibwgwtkpwmeyd6luq2gxajgjzfjvotyt5zhyd\.onion)
                            /(?:(?:view_video\.php|video/show)\?viewkey=|embed/)|
                            (?:www\.)?thumbzilla\.com/video/
                        )
                        (?P<id>[\da-z]+)
                    zPornHub and Thumbzillar  r   rl   Nr  r   r   r   r  r  #  s(    (GG KJ&GNILr   r  c                       e Zd ZdZdZdZy)PornHubPlaylistBaseIEr  PornHubPlaylistBaser  Nr{   r   r   r   r  r  #  s    (G#GNr   r  c                       e Zd ZdZdZdZy)PornHubPagedPlaylistBaseIEr  PornHubPagedPlaylistBaser  Nr{   r   r   r   r  r  #  s    (G(GNr   r  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )PornHubPagedVideoListIEr  PornHubPagedVideoListzhttps?://(?:[^/]+\.)?(?:(?P<host>pornhub(?:premium)?\.(?:com|net|org))|pornhubvybmsymdol4iibwgwtkpwmeyd6luq2gxajgjzfjvotyt5zhyd\.onion)/(?!playlist/)(?P<id>(?:[^/]+/)*[^/?#&]+)r  rm   c                     t         j                  |      s*t        j                  |      st        j                  |      rdS t        |   |      S r   )r  r4   PornHubUserIEPornHubUserVideosUploadIEr   r   s     r   r4   z PornHubPagedVideoListIE.suitable#  sK     %%c*m.D.DS.IMfMoMopsMt  	,W%c*	,r   rO  r   s   @r   r  r  #  s1    (G%G GJNL, ,r   r  c                        e Zd ZdZdZdZdZdZy)PornHubPlaylistIEr  PornHubPlaylistz(?P<url>https?://(?:[^/]+\.)?(?:(?P<host>pornhub(?:premium)?\.(?:com|net|org))|pornhubvybmsymdol4iibwgwtkpwmeyd6luq2gxajgjzfjvotyt5zhyd\.onion)/playlist/(?P<id>[^/?#&]+))r  rm   Nr   r   r   r   r  r  #  s    (GG AJNLr   r  c                        e Zd ZdZdZdZdZdZy)r  r  PornHubUserz(?P<url>https?://(?:[a-zA-Z0-9.-]+\.)?(?:(?P<host>pornhub(?:premium)?\.(?:com|net|org))|pornhubvybmsymdol4iibwgwtkpwmeyd6luq2gxajgjzfjvotyt5zhyd\.onion)/(?:(?:user|channel)s|model|pornstar)/(?P<id>[^/?#&]+))(?:[?#&]|/(?!videos)|$)r  rm   Nr   r   r   r   r  r  #  s    (GG }JNLr   r  c                        e Zd ZdZdZdZdZdZy)r  r  PornHubUserVideosUploadz(?P<url>https?://(?:[^/]+\.)?(?:(?P<host>pornhub(?:premium)?\.(?:com|net|org))|pornhubvybmsymdol4iibwgwtkpwmeyd6luq2gxajgjzfjvotyt5zhyd\.onion)/(?:(?:user|channel)s|model|pornstar)/(?P<id>[^/]+)/videos/upload)r  rm   Nr   r   r   r   r  r  #  s    (G'G hJNLr   r  c                        e Zd ZdZdZdZdZdZy)	PornTopIEyt_dlp.extractor.txxxPornTopzWhttps?://(?P<host>(?:www\.)?porntop\.com)/video/(?P<id>\d+)(?:/(?P<display_id>[^/?]+))?r   rl   Nrw  r   r   r   r  r  #  s    %GGmJILr   r  c                        e Zd ZdZdZdZdZdZy)
PornTubeIEr
  PornTubez`https?://(?:(?P<kind>www|m)\.)?porntube\.com/(?:videos/(?P<display_id>[^/]+)_|embed/)(?P<id>\d+)r   rl   Nrw  r   r   r   r  r  #  s    )GGvJILr   r  c                        e Zd ZdZdZdZdZdZy)	PornboxIEzyt_dlp.extractor.pornboxPornboxzEhttps?://(?:www\.)?pornbox\.com/application/watch-page/(?P<id>[0-9]+)r   rl   Nrw  r   r   r   r  r  #  s    (GGZJILr   r  c                        e Zd ZdZdZdZdZdZy)PornerBrosIEr
  
PornerBroszbhttps?://(?:(?P<kind>www|m)\.)?pornerbros\.com/(?:videos/(?P<display_id>[^/]+)_|embed/)(?P<id>\d+)r   rl   Nrw  r   r   r   r  r   $  s    )GGxJILr   r  c                   $    e Zd ZdZdZdZdZdZdZy)PornoVoisinesIEzyt_dlp.extractor.pornovoisinesPornoVoisineszThttps?://(?:www\.)?pornovoisines\.com/videos/show/(?P<id>\d+)/(?P<display_id>[^/.]+)Fr   rl   Nr  r   r   r   r  r  $  s     .GGjJHILr   r  c                   $    e Zd ZdZdZdZdZdZdZy)	PornoXOIEzyt_dlp.extractor.pornoxoPornoXOzNhttps?://(?:www\.)?pornoxo\.com/videos/(?P<id>\d+)/(?P<display_id>[^/]+)\.htmlFr   rl   Nr  r   r   r   r  r  $  s     (GGeJHILr   r  c                        e Zd ZdZdZdZdZdZy)PornotubeIEzyt_dlp.extractor.pornotube	PornotubezBhttps?://(?:\w+\.)?pornotube\.com/(?:[^?#]*?)/video/(?P<id>[0-9]+)r   rl   Nrw  r   r   r   r  r  $  s    *GGXJILr   r  c                        e Zd ZdZdZdZdZdZy)
Pr0grammIEzyt_dlp.extractor.pr0grammPr0grammz>https?://pr0gramm\.com\/(?:[^/?#]+/)+(?P<id>[\d]+)(?:[/?#:]|$)r   rl   Nrw  r   r   r   r  r  "$  s    )GGTJILr   r  c                       e Zd ZdZdZdZdZy)PrankCastIEyt_dlp.extractor.prankcast	PrankCastzVhttps?://(?:www\.)?prankcast\.com/[^/?#]+/showreel/(?P<id>\d+)-(?P<display_id>[^/?#]+)rl   Nr   r   r   r   r  r  *$  r>  r   r  c                       e Zd ZdZdZdZdZy)PrankCastPostIEr  PrankCastPostzShttps?://(?:www\.)?prankcast\.com/[^/?#]+/posts/(?P<id>\d+)-(?P<display_id>[^/?#]+)rl   Nr   r   r   r   r  r  1$  s    *GGiJLr   r  c                       e Zd ZdZdZdZdZy)PremiershipRugbyIEz!yt_dlp.extractor.premiershiprugbyPremiershipRugbyz@https?://(?:\w+\.)premiershiprugby\.(?:com)/watch/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  8$  s    1G GWJLr   r  c                       e Zd ZdZdZdZdZy)	PressTVIEzyt_dlp.extractor.presstvPressTVzhhttps?://(?:www\.)?presstv\.ir/[^/]+/(?P<y>\d+)/(?P<m>\d+)/(?P<d>\d+)/(?P<id>\d+)/(?P<display_id>[^/]+)?rl   Nr   r   r   r   r  r  ?$  s    (GG BJLr   r  c                        e Zd ZdZdZdZdZdZy)ProjectVeritasIEzyt_dlp.extractor.projectveritasProjectVeritaszKhttps?://(?:www\.)?projectveritas\.com/(?P<type>news|video)/(?P<id>[^/?#]+)Frl   Nr]  r   r   r   r  r  F$  s    /GG`JHLr   r  c                       e Zd ZdZdZdZdZy)PuhuTVIEyt_dlp.extractor.puhutvpuhutvz4https?://(?:www\.)?puhutv\.com/(?P<id>[^/?#&]+)-izlerl   Nr   r   r   r   r!  r!  N$  r)  r   r!  c                       e Zd ZdZdZdZdZy)PuhuTVSerieIEr"  zpuhutv:seriez5https?://(?:www\.)?puhutv\.com/(?P<id>[^/?#&]+)-detayrm   Nr   r   r   r   r%  r%  U$  s    'GGJJLr   r%  c                       e Zd ZdZdZdZdZy)	PyvideoIEzyt_dlp.extractor.pyvideoPyvideozEhttps?://(?:www\.)?pyvideo\.org/(?P<category>[^/]+)/(?P<id>[^/?#&.]+)r   Nr   r   r   r   r'  r'  \$  s    (GGZJLr   r'  c                        e Zd ZdZdZdZdZdZy)QDanceIEzyt_dlp.extractor.qdanceQDancezGhttps?://(?:www\.)?q-dance\.com/network/(?:library|live)/(?P<id>[\w-]+)qdancerl   Nr   r   r   r   r*  r*  c$  s    'GG]JNLr   r*  c                       e Zd ZdZdZy)QQPlaylistBaseIEyt_dlp.extractor.qqmusicQQPlaylistBaseNr   r   r   r   r.  r.  k$  r  r   r.  c                        e Zd ZdZdZdZdZdZy)QQMusicAlbumIEr/  zqqmusic:albumz;https?://y\.qq\.com/n/ryqq/albumDetail/(?P<id>[0-9A-Za-z]+)u   QQ音乐 - 专辑rm   Nr   r   r   r   r2  r2  p$  s    (GGPJ!GLr   r2  c                       e Zd ZdZdZy)QQMusicBaseIEr/  QQMusicBaseNr   r   r   r   r4  r4  x$  r   r   r4  c                        e Zd ZdZdZdZdZdZy)	QQMusicIEr/  qqmusicz:https?://y\.qq\.com/n/ryqq/songDetail/(?P<id>[0-9A-Za-z]+)u   QQ音乐rl   Nr   r   r   r   r7  r7  }$  s    (GGOJGLr   r7  c                        e Zd ZdZdZdZdZdZy)QQMusicPlaylistIEr/  zqqmusic:playlistz2https?://y\.qq\.com/n/ryqq/playlist/(?P<id>[0-9]+)u   QQ音乐 - 歌单rm   Nr   r   r   r   r:  r:  $  s    (G GGJ!GLr   r:  c                        e Zd ZdZdZdZdZdZy)QQMusicSingerIEr/  zqqmusic:singerz6https?://y\.qq\.com/n/ryqq/singer/(?P<id>[0-9A-Za-z]+)u   QQ音乐 - 歌手rm   Nr   r   r   r   r<  r<  $  s    (GGKJ!GLr   r<  c                        e Zd ZdZdZdZdZdZy)QQMusicToplistIEr/  zqqmusic:toplistz1https?://y\.qq\.com/n/ryqq/toplist/(?P<id>[0-9]+)u   QQ音乐 - 排行榜rm   Nr   r   r   r   r>  r>  $  s    (GGFJ$GLr   r>  c                        e Zd ZdZdZdZdZdZy)QQMusicVideoIEr/  z
qqmusic:mvz2https?://y\.qq\.com/n/ryqq/mv/(?P<id>[0-9A-Za-z]+)u   QQ音乐 - MVrl   Nr   r   r   r   r@  r@  $  s    (GGGJGLr   r@  c                       e Zd ZdZdZdZdZy)
QingTingIEzyt_dlp.extractor.qingtingQingTingzahttps?://(?:www\.|m\.)?(?:qingting\.fm|qtfm\.cn)/v?channels/(?P<channel>\d+)/programs/(?P<id>\d+)rl   Nr   r   r   r   rB  rB  $  s    )GGzJLr   rB  c                       e Zd ZdZdZdZy)QuantumTVBaseIErH  QuantumTVBase	quantumtvNr{   r   r   r   rE  rE  $  r  r   rE  c                       e Zd ZdZdZdZdZy)QuantumTVIErH  	QuantumTVz(?x)https?://(?:www\.)?quantum\-tv\.com/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )rG  NrS  r   r   r   rI  rI  $  s    'GG nJ Nr   rI  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )QuantumTVLiveIErH  QuantumTVLivez(?x)https?://(?:www\.)?quantum\-tv\.com/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )rG  c                 P    t         j                  |      rdS t        |   |      S r   )rI  r4   r   r   s     r   r4   zQuantumTVLiveIE.suitable$  r  r   r  r   s   @r   rL  rL  $  s.    'GG cJ NM Mr   rL  c                       e Zd ZdZdZdZdZy)QuantumTVRecordingsIErH  QuantumTVRecordingszw(?x)https?://(?:www\.)?quantum\-tv\.com/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )rG  NrS  r   r   r   rP  rP  $  s    'G#G SJ Nr   rP  c                       e Zd ZdZdZdZdZy)QuotedHTMLIErR  zgeneric:quoted-htmlFNr,  r   r   r   rS  rS  $  s    .G#GJGr   rS  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )R7ArticleIEyt_dlp.extractor.r7	R7ArticleNz?https?://(?:[a-zA-Z]+)\.r7\.com/(?:[^/]+/)+[^/?#&]+-(?P<id>\d+)Fc                 P    t         j                  |      rdS t        |   |      S r   )R7IEr4   r   r   s     r   r4   zR7ArticleIE.suitable$  r{
  r   )r   r   r   r$   ra   rq   r=   rE   rr   r4   r   r   s   @r   rU  rU  $  s0    #GGHUJHF Fr   rU  c                   $    e Zd ZdZdZdZdZdZdZy)rY  rV  R7Na[  (?x)
                        https?://
                        (?:
                            (?:[a-zA-Z]+)\.r7\.com(?:/[^/]+)+/idmedia/|
                            noticias\.r7\.com(?:/[^/]+)+/[^/]+-|
                            player\.r7\.com/video/i/
                        )
                        (?P<id>[\da-f]{24})
                    Frl   r&  r   r   r   rY  rY  $  s#    #GGH ~JHLr   rY  c                       e Zd ZdZdZy)	RCSBaseIEyt_dlp.extractor.rcsRCSBaseNr   r   r   r   r]  r]  $  rk  r   r]  c                       e Zd ZdZdZdZdZy)RCSEmbedsIEr^  	RCSEmbedsa?  (?x)
                    https?://(?P<vid>video)\.
                    (?P<cdn>
                    (?:
                        rcs|
                        (?:corriere\w+\.)?corriere|
                        (?:gazzanet\.)?gazzetta
                    )\.it)
                    /video-embed/(?P<id>[^/=&\?]+?)(?:$|\?)rl   Nr   r   r   r   ra  ra  $  s    $GG bJLr   ra  c                       e Zd ZdZdZdZdZy)RCSIEr^  RCSa  (?x)https?://(?P<vid>video|viaggi)\.
                    (?P<cdn>
                    (?:
                        corrieredelmezzogiorno\.
                        |corrieredelveneto\.
                        |corrieredibologna\.
                        |corrierefiorentino\.
                    )?corriere\.it
                    |(?:gazzanet\.)?gazzetta\.it)
                    /(?!video-embed/)[^?#]+?/(?P<id>[^/\?]+)(?=\?|/$|$)rl   Nr   r   r   r   rd  rd  $  s    $GG VJLr   rd  c                       e Zd ZdZdZdZdZy)RCSVariousIEr^  
RCSVariousz(?x)https?://www\.
                    (?P<cdn>
                        leitv\.it|
                        youreporter\.it|
                        amica\.it
                    )/(?:[^/]+/)?(?P<id>[^/]+?)(?:$|\?|/)rl   Nr   r   r   r   rg  rg  $  s    $GG uJLr   rg  c                       e Zd ZdZdZy)RCTIPlusBaseIEyt_dlp.extractor.rctiRCTIPlusBaseNr   r   r   r   rj  rj  %  s    %GGr   rj  c                       e Zd ZdZdZdZdZy)
RCTIPlusIErk  RCTIPluszhttps?://www\.rctiplus\.com/(?:programs/\d+?/.*?/)?(?P<type>episode|clip|extra|live-event|missed-event)/(?P<id>\d+)/(?P<display_id>[^/?#&]+)rl   Nr   r   r   r   rn  rn  %  s    %GG dJLr   rn  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )RCTIPlusSeriesIErk  RCTIPlusSeriesznhttps?://www\.rctiplus\.com/programs/(?P<id>\d+)/(?P<display_id>[^/?#&]+)(?:/(?P<type>episodes|extras|clips))?r   rm   c                 P    t         j                  |      rdS t        |   |      S r   rn  r4   r   r   s     r   r4   zRCTIPlusSeriesIE.suitable%  r{  r   r	  r   s   @r   rq  rq  %  s3    %GG EJILL Lr   rq  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )RCTIPlusTVIErk  
RCTIPlusTVzYhttps?://www\.rctiplus\.com/((tv/(?P<tvname>\w+))|(?P<eventname>live-event|missed-event))rl   c                 P    t         j                  |      rdS t        |   |      S r   rt  r   s     r   r4   zRCTIPlusTVIE.suitable%  r{  r   r   r   s   @r   rv  rv  %  s+    %GGoJLL Lr   rv  c                   $    e Zd ZdZdZdZdZdZdZy)RDSIEzyt_dlp.extractor.rdsRDSuR   https?://(?:www\.)?rds\.ca/vid(?:[eé]|%C3%A9)os/(?:[^/]+/)*(?P<id>[^/]+)-\d+\.\d+FzRDS.carl   Nrl  r   r   r   rz  rz  $%  s     $GGjJHGLr   rz  c                        e Zd ZdZdZdZdZdZy)RENTVArticleIEyt_dlp.extractor.rentvRENTVArticlezDhttps?://(?:www\.)?ren\.tv/novosti/\d{4}-\d{2}-\d{2}/(?P<id>[^/?#]+)Frl   Nr]  r   r   r   r}  r}  -%  s    &GG\JHLr   r}  c                        e Zd ZdZdZdZdZdZy)RENTVIEr~  RENTVzI(?:rentv:|https?://(?:www\.)?ren\.tv/(?:player|video/epizod)/)(?P<id>\d+)Frl   Nr]  r   r   r   r  r  5%  s    &GG_JHLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)RTBFIEr  RTBFz(?x)
        https?://(?:www\.)?rtbf\.be/
        (?:
            video/[^?]+\?.*\bid=|
            ouftivi/(?:[^/]+/)*[^?]+\?.*\bvideoId=|
            auvio/[^/]+\?.*\b(?P<live>l)?id=
        )(?P<id>\d+)Frtbfrl   Nr  r   r   r   r  r  =%  s#    'GG pJHNLr   r  c                       e Zd ZdZdZdZdZy)RTDocumentryIEyt_dlp.extractor.rtnewsRTDocumentryzHhttps?://rtd\.rt\.com/(?:(?:series|shows)/[^/]+|films)/(?P<id>[^/?$&#]+)rl   Nr   r   r   r   r  r  F%  s    'GG]JLr   r  c                       e Zd ZdZdZdZdZy)RTDocumentryPlaylistIEr  RTDocumentryPlaylistz6https?://rtd\.rt\.com/(?:series|shows)/(?P<id>[^/]+)/$rm   Nr   r   r   r   r  r  M%  s    'G$GKJLr   r  c                        e Zd ZdZdZdZdZdZy)RTL2IEzyt_dlp.extractor.rtl2rtl2zqhttps?://(?:www\.)?rtl2\.de/sendung/[^/]+/(?:video/(?P<vico_id>\d+)[^/]+/(?P<vivi_id>\d+)-|folge/)(?P<id>[^/?#]+)Frl   Nr]  r   r   r   r  r  T%  s    %GG IJHLr   r  c                       e Zd ZdZdZy)RTLLuBaseIEyt_dlp.extractor.rtlnl	RTLLuBaseNr   r   r   r   r  r  \%  r   r   r  c                       e Zd ZdZdZdZdZy)RTLLuArticleIEr  zrtl.lu:articlezThttps?://(?:(www|5minutes|today)\.)rtl\.lu/(?:[\w-]+)/(?:[\w-]+)/a/(?P<id>\d+)\.htmlrl   Nr   r   r   r   r  r  a%  s    &GGmJLr   r  c                       e Zd ZdZdZdZdZy)RTLLuLiveIEr  	RTLLuLivezFhttps?://www\.rtl\.lu/(?:tele|radio)/(?P<id>live(?:-\d+)?|lauschteren)rl   Nr   r   r   r   r  r  h%  s    &GG\JLr   r  c                       e Zd ZdZdZdZdZy)RTLLuRadioIEr  
RTLLuRadioz=https?://www\.rtl\.lu/radio/(?:[\w-]+)/s/(?P<id>\d+)(\.html)?rl   Nr   r   r   r   r  r  o%  s    &GGUJLr   r  c                       e Zd ZdZdZdZdZy)RTLLuTeleVODIEr  zrtl.lu:tele-vodzPhttps?://(?:www\.)?rtl\.lu/(tele/(?P<slug>[\w-]+)/v/|video/)(?P<id>\d+)(\.html)?rl   Nr   r   r   r   r  r  v%  s    &GGhJLr   r  c                       e Zd ZdZdZdZdZy)RTNewsIEr  RTNewsz7https?://(?:www\.)?rt\.com/[^/]+/(?:[^/]+/)?(?P<id>\d+)rm   Nr   r   r   r   r  r  }%  s    'GGMJLr   r  c                       e Zd ZdZdZdZdZy)RTPIEzyt_dlp.extractor.rtpRTPzuhttps?://(?:www\.)?rtp\.pt/play/(?:[^/#?]+/)?(?P<program_id>p\d+)/(?P<episode_id>e\d+)(?:/[^/#?]+/(?P<asset_id>\d+))?r   Nr   r   r   r   r  r  %  s    $GG NJLr   r  c                       e Zd ZdZdZdZdZy)RTRFMIEzyt_dlp.extractor.rtrfmRTRFMzJhttps?://(?:www\.)?rtrfm\.com\.au/(?:shows|show-episode)/(?P<id>[^/?\#&]+)rl   Nr   r   r   r   r  r  %  r  r   r  c                       e Zd ZdZdZy)RTVCPlayBaseIEyt_dlp.extractor.rtvcplayRTVCPlayBaseNr   r   r   r   r  r  %  r  r   r  c                       e Zd ZdZdZdZdZy)RTVCKalturaIEr  RTVCKalturaz8https?://media\.rtvc\.gov\.co/kalturartvc/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  %  s    )GGOJLr   r  c                       e Zd ZdZdZdZdZy)RTVCPlayEmbedIEr  RTVCPlayEmbedz4https?://(?:www\.)?rtvcplay\.co/embed/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  %  r  r   r  c                       e Zd ZdZdZdZdZy)
RTVCPlayIEr  RTVCPlayzWhttps?://(?:www\.)?rtvcplay\.co/(?P<category>(?!embed)[^/]+)/(?:[^?#]+/)?(?P<id>[\w-]+)r   Nr   r   r   r   r  r  %  s    )GGmJLr   r  c                       e Zd ZdZdZy)
RTVEBaseIEyt_dlp.extractor.rtveRTVEBaseNr   r   r   r   r  r  %  r  r   r  c                   $    e Zd ZdZdZddgZdZdZy)RTVEALaCartaIEr  zrtve.es:alacartazohttps?://(?:www\.)?rtve\.es/(?:m/)?(?:(?:alacarta|play)/videos|filmoteca)/(?!directo)(?:[^/?#]+/){2}(?P<id>\d+)zLhttps?://(?:www\.)?rtve\.es/infantil/serie/[^/?#]+/video/[^/?#]+/(?P<id>\d+)zRTVE a la carta and Playrl   Nr   r   r   r   r  r  %  s+    %G G G  IZ  [J(GLr   r  c                        e Zd ZdZdZdZdZdZy)RTVEAudioIEr  zrtve.es:audiozMhttps?://(?:www\.)?rtve\.es/(alacarta|play)/audios/(?:[^/?#]+/){2}(?P<id>\d+)z
RTVE audiorl   Nr   r   r   r   r  r  %  s    %GGcJGLr   r  c                   $    e Zd ZdZdZddgZdZdZy)
RTVELiveIEr  zrtve.es:livez9https?://(?:www\.)?rtve\.es/directo/(?P<id>[a-zA-Z0-9-]+)zMhttps?://(?:www\.)?rtve\.es/play/videos/directo/[^/?#]+/(?P<id>[a-zA-Z0-9-]+)zRTVE.es live streamsrl   Nr   r   r   r   r  r  %  s(    %GGO  Rc  dJ$GLr   r  c                        e Zd ZdZdZdZdZdZy)RTVEProgramIEr  zrtve.es:programzBhttps?://(?:www\.)?rtve\.es/play/videos/(?P<id>[\w-]+)/?(?:[?#]|$)zRTVE.es programsrm   Nr   r   r   r   r  r  %  s    %GGXJ GLr   r  c                       e Zd ZdZdZdZdZy)RTVETelevisionIEr  zrtve.es:televisionzHhttps?://(?:www\.)?rtve\.es/television/[^/?#]+/[^/?#]+/(?P<id>\d+).shtmlrl   Nr   r   r   r   r  r  %  s    %G"G^JLr   r  c                        e Zd ZdZdZdZdZdZy)RTVSIEzyt_dlp.extractor.rtvsstvrz`https?://(?:www\.)?(?:rtvs|stvr)\.sk/(?:radio|televizia)/archiv(?:/\d+)?/(?P<id>\d+)/?(?:[#?]|$)z+Slovak Television and Radio (formerly RTVS)rl   Nr   r   r   r   r  r  %  s    %GGwJ;GLr   r  c                       e Zd ZdZdZdZdZy)RTVSLOIEyt_dlp.extractor.rtvsloz	rtvslo.siz(?x)
        https?://(?:
            (?:365|4d)\.rtvslo.si/arhiv/[^/?#&;]+|
            (?:www\.)?rtvslo\.si/rtv365/arhiv
        )/(?P<id>\d+)rl   Nr   r   r   r   r  r  %  s    'GG lJLr   r  c                       e Zd ZdZdZdZdZy)RTVSLOShowIEr  zrtvslo.si:showz:https?://(?:365|4d)\.rtvslo.si/oddaja/[^/?#&]+/(?P<id>\d+)rm   Nr   r   r   r   r  r  %  s    'GGOJLr   r  c                       e Zd ZdZdZdZdZy)	RadLiveIEyt_dlp.extractor.radliveradlivezYhttps?://(?:www\.)?rad\.live/content/(?P<content_type>feature|episode)/(?P<id>[a-f0-9-]+)rl   Nr   r   r   r   r  r  %  s    (GGnJLr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )RadLiveChannelIEr  zradlive:channelz?https?://(?:www\.)?rad\.live/content/channel/(?P<id>[a-f0-9-]+)rm   c                 P    t         j                  |      rdS t        |   |      S r   r  r4   r   r   s     r   r4   zRadLiveChannelIE.suitable%  r   r   r   r   s   @r   r  r  %  s+    (GGTJLK Kr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )RadLiveSeasonIEr  zradlive:seasonz>https?://(?:www\.)?rad\.live/content/season/(?P<id>[a-f0-9-]+)rm   c                 P    t         j                  |      rdS t        |   |      S r   r  r   s     r   r4   zRadLiveSeasonIE.suitable&  r   r   r   r   s   @r   r  r   &  s+    (GGSJLK Kr   r  c                       e Zd ZdZdZy)RadikoBaseIEyt_dlp.extractor.radiko
RadikoBaseNr   r   r   r   r  r  &  rE  r   r  c                       e Zd ZdZdZdZy)RadikoIEr  RadikozOhttps?://(?:www\.)?radiko\.jp/#!/ts/(?P<station>[A-Z0-9-]+)/(?P<timestring>\d+)Nr  r   r   r   r  r  &  s    'GGeJr   r  c                       e Zd ZdZdZdZy)RadikoRadioIEr  RadikoRadioz8https?://(?:www\.)?radiko\.jp/#!/live/(?P<id>[A-Z0-9-]+)Nr  r   r   r   r  r  &  s    'GGMJr   r  c                       e Zd ZdZdZdZdZy)
Radio1BeIEr6  Radio1Bez;https?://radio1\.be/(?:lees|luister/select)/(?P<id>[\w/-]+)rm   Nr   r   r   r   r  r  &  s    $GGPJLr   r  c                       e Zd ZdZdZdZdZy)RadioCanadaAudioVideoIEyt_dlp.extractor.radiocanadazradiocanada:audiovideoz<https?://ici\.radio-canada\.ca/([^/]+/)*media-(?P<id>[0-9]+)rl   Nr   r   r   r   r  r  #&  s    ,G&GQJLr   r  c                       e Zd ZdZdZdZdZy)RadioCanadaIEr  radiocanadazk(?:radiocanada:|https?://ici\.radio-canada\.ca/widgets/mediaconsole/)(?P<app_code>[^:/]+)[:/](?P<id>[0-9]+)rl   Nr   r   r   r   r  r  *&  s    ,GG AJLr   r  c                        e Zd ZdZdZdZdZdZy)	RadioDeIEzyt_dlp.extractor.radiodezradio.dezAhttps?://(?P<id>.+?)\.(?:radio\.(?:de|at|fr|pt|es|pl|it)|rad\.io)Frl   Nr]  r   r   r   r  r  1&  s    (GGWJHLr   r  c                       e Zd ZdZdZdZdZy)RadioFranceIEr#  radiofrancez<https?://maison\.radiofrance\.fr/radiovisions/(?P<id>[^?#]+)rl   Nr   r   r   r   r  r  9&      ,GGQJLr   r  c                       e Zd ZdZdZdZdZy)RadioFranceLiveIEr#  RadioFranceLivez(?x)
        https?://(?:www\.)?radiofrance\.fr
        /(?P<id>franceculture|franceinfo|franceinter|francemusique|fip|mouv)
        /?(?P<substation_id>radio-[\w-]+)?(?:[#?]|$)
    rl   Nr   r   r   r   r  r  @&  s    ,GG QJLr   r  c                       e Zd ZdZdZy)RadioFrancePlaylistBaseIEr#  RadioFrancePlaylistBaseNr   r   r   r   r  r  G&      ,G'Gr   r  c                       e Zd ZdZdZdZdZy)RadioFrancePodcastIEr#  RadioFrancePodcastz(?x)
        https?://(?:www\.)?radiofrance\.fr
        /(?:franceculture|franceinfo|franceinter|francemusique|fip|mouv)
        /podcasts/(?P<id>[\w-]+)/?(?:[?#]|$)
    rm   Nr   r   r   r   r  r  L&  s    ,G"G EJLr   r  c                       e Zd ZdZdZdZdZy)RadioFranceProfileIEr#  RadioFranceProfilez;https?://(?:www\.)?radiofrance\.fr/personnes/(?P<id>[\w-]+)rm   Nr   r   r   r   r  r  S&  s    ,G"GQJLr   r  c                       e Zd ZdZdZdZdZy)RadioFranceProgramScheduleIEr#  RadioFranceProgramSchedulez(?x)
        https?://(?:www\.)?radiofrance\.fr
        /(?P<station>franceculture|franceinfo|franceinter|francemusique|fip|mouv)
        /grille-programmes
    rm   Nr   r   r   r   r  r  Z&  s    ,G*G {JLr   r  c                        e Zd ZdZdZdZdZdZy)RadioJavanIEzyt_dlp.extractor.radiojavan
RadioJavanz?https?://(?:www\.)?radiojavan\.com/videos/video/(?P<id>[^/]+)/?Frl   Nr]  r   r   r   r   r   a&  s    +GGTJHLr   r   c                       e Zd ZdZdZy)RadioKapitalBaseIEyt_dlp.extractor.radiokapitalRadioKapitalBaseNr   r   r   r   r  r  i&  r  r   r  c                       e Zd ZdZdZdZdZy)RadioKapitalIEr  radiokapitalzEhttps?://(?:www\.)?radiokapital\.pl/shows/[a-z\d-]+/(?P<id>[a-z\d-]+)rl   Nr   r   r   r   r  r  n&  r  r   r  c                       e Zd ZdZdZdZdZy)RadioKapitalShowIEr  zradiokapital:showzGhttps?://(?:www\.)?radiokapital\.pl/shows/(?P<id>[a-z\d-]+)/?(?:$|[?#])rm   Nr   r   r   r   r
  r
  u&  s    -G!G]JLr   r
  c                       e Zd ZdZdZdZdZy)RadioRadicaleIEzyt_dlp.extractor.radioradicaleRadioRadicalez:https?://(?:www\.)?radioradicale\.it/scheda/(?P<id>[0-9]+)r   Nr   r   r   r   r  r  |&  s    .GGOJLr   r  c                       e Zd ZdZdZdZdZy)RadioZetPodcastIEzyt_dlp.extractor.radiozetRadioZetPodcastz6https?://player\.radiozet\.pl\/Podcasty/.*?/(?P<id>.+)rl   Nr   r   r   r   r  r  &  r
  r   r  c                       e Zd ZdZdZy)	RaiBaseIEyt_dlp.extractor.raiRaiBaseNr   r   r   r   r  r  &  rk  r   r  c                       e Zd ZdZdZdZdZy)RaiIEr  Raizuhttps?://[^/]+\.(?:rai\.(?:it|tv))/.+?-(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})(?:-.+?)?\.htmlrl   Nr   r   r   r   r  r  &  s    $GG QJLr   r  c                       e Zd ZdZdZdZdZy)	RaiNewsIEr  RaiNewszhttps?://(www\.)?rainews\.it/(?!articoli)[^?#]+-(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})(?:-[^/?#]+)?\.htmlrl   Nr   r   r   r   r  r  &  s    $GG ^JLr   r  c                       e Zd ZdZdZdZdZy)RaiCulturaIEr  
RaiCulturazhttps?://(www\.)?raicultura\.it/(?!articoli)[^?#]+-(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})(?:-[^/?#]+)?\.htmlrl   Nr   r   r   r   r  r  &  s    $GG aJLr   r  c                       e Zd ZdZdZdZdZy)	RaiPlayIEr  RaiPlayz{(?P<base>https?://(?:www\.)?raiplay\.it/.+?-(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}))\.(?:html|json)rl   Nr   r   r   r   r  r  &  s    $GG WJLr   r  c                       e Zd ZdZdZdZdZy)RaiPlayLiveIEr  RaiPlayLivezA(?P<base>https?://(?:www\.)?raiplay\.it/dirette/(?P<id>[^/?#&]+))rl   Nr   r   r   r   r"  r"  &  s    $GGVJLr   r"  c                       e Zd ZdZdZdZdZy)RaiPlayPlaylistIEr  RaiPlayPlaylistz^(?P<base>https?://(?:www\.)?raiplay\.it/programmi/(?P<id>[^/?#&]+))(?:/(?P<extra_id>[^?#&]+))?rm   Nr   r   r   r   r%  r%  &  s    $GGsJLr   r%  c                       e Zd ZdZdZdZdZy)RaiPlaySoundIEr  RaiPlaySoundz(?P<base>https?://(?:www\.)?raiplaysound\.it/.+?-(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}))\.(?:html|json)rl   Nr   r   r   r   r(  r(  &  s    $GG \JLr   r(  c                       e Zd ZdZdZdZdZy)RaiPlaySoundLiveIEr  RaiPlaySoundLivez?(?P<base>https?://(?:www\.)?raiplaysound\.it/(?P<id>[^/?#&]+)$)rl   Nr   r   r   r   r+  r+  &  s    $G GTJLr   r+  c                       e Zd ZdZdZdZdZy)RaiPlaySoundPlaylistIEr  RaiPlaySoundPlaylistz{(?P<base>https?://(?:www\.)?raiplaysound\.it/(?:programmi|playlist|audiolibri)/(?P<id>[^/?#&]+))(?:/(?P<extra_id>[^?#&]+))?rm   Nr   r   r   r   r.  r.  &  s    $G$G QJLr   r.  c                       e Zd ZdZdZdZdZy)RaiSudtirolIEr  RaiSudtirolz8https?://rai(?:bz|sudtirol)\.rai\.it/.+media=(?P<id>\w+)rl   Nr   r   r   r   r1  r1  &  rG
  r   r1  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )RayWenderlichCourseIEyt_dlp.extractor.raywenderlichRayWenderlichCoursea  (?x)
                    https?://
                        (?:
                            videos\.raywenderlich\.com/courses|
                            (?:www\.)?raywenderlich\.com
                        )/
                        (?P<id>[^/]+)
                    rm   c                 P    t         j                  |      rdS t        |   |      S r   )RayWenderlichIEr4   r   r   s     r   r4   zRayWenderlichCourseIE.suitable&  rJ  r   r   r   s   @r   r4  r4  &  s.    .G#G lJLQ Qr   r4  c                       e Zd ZdZdZdZdZy)r8  r5  RayWenderlicha(  (?x)
                    https?://
                        (?:
                            videos\.raywenderlich\.com/courses|
                            (?:www\.)?raywenderlich\.com
                        )/
                        (?P<course_id>[^/]+)/lessons/(?P<id>\d+)
                    rl   Nr   r   r   r   r8  r8  &  s    .GG HJLr   r8  c                       e Zd ZdZdZdZdZy)RbgTumCourseIEyt_dlp.extractor.rbgtumRbgTumCoursezxhttps?://(?P<hostname>(?:live\.rbg\.tum\.de|tum\.live))/old/course/(?P<id>(?P<year>\d+)/(?P<term>\w+)/(?P<slug>[^/?#]+))rm   Nr   r   r   r   r<  r<  &  s    'GG RJLr   r<  c                       e Zd ZdZdZdZdZy)RbgTumIEr=  RbgTumz:https?://(?:live\.rbg\.tum\.de|tum\.live)/w/(?P<id>[^?#]+)rl   Nr   r   r   r   r@  r@  &  r~  r   r@  c                       e Zd ZdZdZdZdZy)RbgTumNewCourseIEr=  RbgTumNewCoursez:https?://(?P<hostname>(?:live\.rbg\.tum\.de|tum\.live))/\?rm   Nr   r   r   r   rC  rC  &  s    'GGRJLr   rC  c                       e Zd ZdZdZdZdZy)	RedBullIEyt_dlp.extractor.redbulltvRedBullzhttps?://(?:www\.)?redbull\.com/(?P<region>[a-z]{2,3})-(?P<lang>[a-z]{2})/(?P<type>(?:episode|film|(?:(?:recap|trailer)-)?video)s|live)/(?!AP-|rrn:content:)(?P<id>[^/?#&]+)rl   Nr   r   r   r   rF  rF  &  s    *GG BJLr   rF  c                       e Zd ZdZdZdZdZy)RedBullTVIErG  	RedBullTVzhttps?://(?:www\.)?redbull(?:\.tv|\.com(?:/[^/]+)?(?:/tv)?)(?:/events/[^/]+)?/(?:videos?|live|(?:film|episode)s)/(?P<id>AP-\w+)rl   Nr   r   r   r   rJ  rJ  '  s    *GG WJLr   rJ  c                       e Zd ZdZdZdZy)RedBullEmbedIErG  RedBullEmbedzhttps?://(?:www\.)?redbull\.com/embed/(?P<id>rrn:content:[^:]+:[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}:[a-z]{2}-[A-Z]{2,3})Nr  r   r   r   rM  rM  
'  s    *GG fJr   rM  c                       e Zd ZdZdZdZy)RedBullTVRrnContentIErG  RedBullTVRrnContentzhttps?://(?:www\.)?redbull\.com/(?P<region>[a-z]{2,3})-(?P<lang>[a-z]{2})/tv/(?:video|live|film)/(?P<id>rrn:content:[^:]+:[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})Nr  r   r   r   rP  rP  '  s    *G#G MJr   rP  c                       e Zd ZdZdZy)RedGifsBaseIEyt_dlp.extractor.redgifsRedGifsBaseNr   r   r   r   rS  rS  '  r   r   rS  c                        e Zd ZdZdZdZdZdZy)	RedGifsIErT  RedGifsz[https?://(?:(?:www\.)?redgifs\.com/(?:watch|ifr)/|thumbs2\.redgifs\.com/)(?P<id>[^-/?#\.]+)r   rl   Nrw  r   r   r   rW  rW  '  s    (GGsJILr   rW  c                        e Zd ZdZdZdZdZdZy)RedGifsSearchIErT  RedGifsSearchz8https?://(?:www\.)?redgifs\.com/browse\?(?P<query>[^#]+)zRedgifs searchrm   Nr   r   r   r   rZ  rZ  #'  s    (GGNJGLr   rZ  c                        e Zd ZdZdZdZdZdZy)RedGifsUserIErT  RedGifsUserzRhttps?://(?:www\.)?redgifs\.com/users/(?P<username>[^/?#]+)(?:\?(?P<query>[^#]+))?zRedgifs userrm   Nr   r   r   r   r]  r]  +'  s    (GGhJGLr   r]  c                        e Zd ZdZdZdZdZdZy)	RedTubeIEzyt_dlp.extractor.redtubeRedTubezZhttps?://(?:(?:\w+\.)?redtube\.com(?:\.br)?/|embed\.redtube\.com/\?.*?\bid=)(?P<id>[0-9]+)r   rl   Nrw  r   r   r   r`  r`  3'      (GGuJILr   r`  c                        e Zd ZdZdZdZdZdZy)RedditIEzyt_dlp.extractor.redditRedditzbhttps?://(?:\w+\.)?reddit(?:media)?\.com/(?P<slug>(?:(?:r|user)/[^/]+/)?comments/(?P<id>[^/?#&]+))r   r   Nrw  r   r   r   rd  rd  ;'  s    'GGxJILr   rd  c                        e Zd ZdZdZdZdZdZy)	RestudyIEzyt_dlp.extractor.restudyRestudyzGhttps?://(?:(?:www|portal)\.)?restudy\.dk/video/[^/]+/id/(?P<id>[0-9]+)Frl   Nr]  r   r   r   rg  rg  C'  s    (GG\JHLr   rg  c                        e Zd ZdZdZdZdZdZy)	ReutersIEzyt_dlp.extractor.reutersReutersz>https?://(?:www\.)?reuters\.com/.*?\?.*?videoId=(?P<id>[0-9]+)Frl   Nr]  r   r   r   rj  rj  K'  r  r   rj  c                       e Zd ZdZdZdZdZy)ReverbNationIEzyt_dlp.extractor.reverbnationReverbNationz=https?://(?:www\.)?reverbnation\.com/.*?/song/(?P<id>\d+).*?$rl   Nr   r   r   r   rm  rm  S'  s    -GGSJLr   rm  c                       e Zd ZdZdZdZdZy)
RideHomeIEzyt_dlp.extractor.ridehomeRideHomezHhttps?://(?:www\.)?ridehome\.info/show/[\w-]+/(?P<id>[\w-]+)/?(?:$|[?#])rm   Nr   r   r   r   rp  rp  Z'  s    )GG_JLr   rp  c                       e Zd ZdZdZy)RinseFMBaseIEyt_dlp.extractor.rinsefmRinseFMBaseNr   r   r   r   rs  rs  a'  r   r   rs  c                       e Zd ZdZdZdZdZy)RinseFMArtistPlaylistIErt  RinseFMArtistPlaylistz2https?://(?:www\.)?rinse\.fm/shows/(?P<id>[^/?#]+)rm   Nr   r   r   r   rw  rw  f'  s    (G%GGJLr   rw  c                       e Zd ZdZdZdZdZy)	RinseFMIErt  RinseFMz5https?://(?:www\.)?rinse\.fm/episodes/(?P<id>[^/?#]+)rl   Nr   r   r   r   rz  rz  m'  s    (GGJJLr   rz  c                        e Zd ZdZdZdZdZdZy)RockstarGamesIEzyt_dlp.extractor.rockstargamesRockstarGameszShttps?://(?:www\.)?rockstargames\.com/videos(?:/video/|#?/?\?.*\bvideo=)(?P<id>\d+)Frl   Nr]  r   r   r   r}  r}  t'  s    .GGkJHLr   r}  c                       e Zd ZdZdZy)RokfinPlaylistBaseIEyt_dlp.extractor.rokfinRokfinPlaylistBaseNr   r   r   r   r  r  |'  rJ  r   r  c                        e Zd ZdZdZdZdZdZy)RokfinChannelIEr  zrokfin:channelzXhttps?://(?:www\.)?rokfin\.com/(?!((feed/?)|(discover/?)|(channels/?))$)(?P<id>[^/]+)/?$zRokfin Channelsrm   Nr   r   r   r   r  r  '  s    'GGmJGLr   r  c                        e Zd ZdZdZdZdZdZy)RokfinIEr  Rokfinz@https?://(?:www\.)?rokfin\.com/(?P<id>(?P<type>post|stream)/\d+)rokfinrl   Nr   r   r   r   r  r  '  r  r   r  c                   $    e Zd ZdZdZdZdZdZdZy)RokfinSearchIEr  zrokfin:searchz9rkfnsearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zRokfin Search
rkfnsearchrm   Nr  r   r   r   r  r  '  s     'GGNJGJLr   r  c                        e Zd ZdZdZdZdZdZy)RokfinStackIEr  zrokfin:stackz2https?://(?:www\.)?rokfin\.com/stack/(?P<id>[^/]+)zRokfin Stacksrm   Nr   r   r   r   r  r  '  s    'GGGJGLr   r  c                       e Zd ZdZdZdZy)RoosterTeethBaseIEyt_dlp.extractor.roosterteethRoosterTeethBaseroosterteethNr{   r   r   r   r  r  '  s    -G G#Nr   r  c                        e Zd ZdZdZdZdZdZy)RoosterTeethIEr  RoosterTeethzUhttps?://(?:.+?\.)?roosterteeth\.com/(?:bonus-feature|episode|watch)/(?P<id>[^/?#&]+)r  rl   Nr   r   r   r   r  r  '  s    -GGjJ#NLr   r  c                        e Zd ZdZdZdZdZdZy)RoosterTeethSeriesIEr  RoosterTeethSeriesz<https?://(?:.+?\.)?roosterteeth\.com/series/(?P<id>[^/?#&]+)r  rm   Nr   r   r   r   r  r  '  s    -G"GQJ#NLr   r  c                       e Zd ZdZdZdZdZy)RottenTomatoesIEzyt_dlp.extractor.rottentomatoesRottenTomatoeszchttps?://(?:www\.)?rottentomatoes\.com/m/(?P<playlist>[^/]+)(?:/(?P<tr>trailers)(?:/(?P<id>\w+))?)?r   Nr   r   r   r   r  r  '  s    /GGyJLr   r  c                       e Zd ZdZdZdZdZy)
RoyaLiveIEzyt_dlp.extractor.royaRoyaLivez2https?://(?:en\.)?roya\.tv/live-stream/(?P<id>\d+)rl   Nr   r   r   r   r  r  '  s    %GGHJLr   r  c                       e Zd ZdZdZdZdZy)	RozhlasIEr  Rozhlasz>https?://(?:www\.)?prehravac\.rozhlas\.cz/audio/(?P<id>[0-9]+)rl   Nr   r   r   r   r  r  '  s    (GGTJLr   r  c                       e Zd ZdZdZdZdZy)RozhlasVltavaIEr  RozhlasVltavaz?https?://(?:\w+\.rozhlas|english\.radio)\.cz/[\w-]+-(?P<id>\d+)rm   Nr   r   r   r   r  r  '  rN  r   r  c                       e Zd ZdZdZy)	RteBaseIEyt_dlp.extractor.rteRteBaseNr   r   r   r   r  r  '  rk  r   r  c                        e Zd ZdZdZdZdZdZy)RteIEr  rtezEhttps?://(?:www\.)?rte\.ie/player/[^/]{2,3}/show/[^/]+/(?P<id>[0-9]+)u   Raidió Teilifís Éireann TVrl   Nr   r   r   r   r  r  '  s    $GGZJ-GLr   r  c                        e Zd ZdZdZdZdZdZy)
RteRadioIEr  z	rte:radiozshttps?://(?:www\.)?rte\.ie/radio/utils/radioplayer/rteradioweb\.html#!rii=(?:b?[0-9]*)(?:%3A|:|%5F|_)(?P<id>[0-9]+)u    Raidió Teilifís Éireann radiorl   Nr   r   r   r   r  r  '  s    $GG JJ0GLr   r  c                        e Zd ZdZdZdZdZdZy)RtlNlIEr  zrtl.nla   (?x)
        https?://(?:(?:www|static)\.)?
        (?:
            rtlxl\.nl/(?:[^\#]*\#!|programma)/[^/]+/|
            rtl\.nl/(?:(?:system/videoplayer/(?:[^/]+/)+(?:video_)?embed\.html|embed)\b.+?\buuid=|video/)|
            embed\.rtl\.nl/\#uuid=
        )
        (?P<id>[0-9a-f-]+)zrtl.nl and rtlxl.nlrl   Nr   r   r   r   r  r  '  s    &GG FJ#GLr   r  c                       e Zd ZdZdZdZdZy)RtmpIE yt_dlp.extractor.commonprotocolsRtmpz(?i)rtmp[est]?://.+FNr,  r   r   r   r  r  '  s    0GG&JGr   r  c                       e Zd ZdZdZdZdZy)RudoVideoIEzyt_dlp.extractor.rudovideo	RudoVideoz@https?://rudo\.video/(?P<type>vod|podcast|live)/(?P<id>[^/?&#]+)rl   Nr   r   r   r   r  r  '  r  r   r  c                        e Zd ZdZdZdZdZdZy)Rule34VideoIEzyt_dlp.extractor.rule34videoRule34Videoz7https?://(?:www\.)?rule34video\.com/videos?/(?P<id>\d+)r   rl   Nrw  r   r   r   r  r  '  s    ,GGMJILr   r  c                       e Zd ZdZdZdZdZy)RumbleChannelIEyt_dlp.extractor.rumbleRumbleChannelzD(?P<url>https?://(?:www\.)?rumble\.com/(?:c|user)/(?P<id>[^&?#$/]+))rm   Nr   r   r   r   r  r  (  s    'GGYJLr   r  c                       e Zd ZdZdZdZdZy)RumbleEmbedIEr  RumbleEmbedzFhttps?://(?:www\.)?rumble\.com/embed/(?:[0-9a-z]+\.)?(?P<id>[0-9a-z]+)rl   Nr   r   r   r   r  r  (  s    'GG\JLr   r  c                       e Zd ZdZdZdZdZy)RumbleIEr  Rumblez>https?://(?:www\.)?rumble\.com/(?P<id>v(?!ideos)[\w.-]+)[^/]*$rl   Nr   r   r   r   r  r  (      'GGTJLr   r  c                       e Zd ZdZdZdZdZy)RuptlyIEr  Ruptlyz=https?://(?:www\.)?ruptly\.tv/[a-z]{2}/videos/(?P<id>\d+-\d+)rl   Nr   r   r   r   r  r  (  r  r   r  c                       e Zd ZdZdZy)RutubeBaseIEyt_dlp.extractor.rutube
RutubeBaseNr   r   r   r   r  r  #(  rE  r   r  c                       e Zd ZdZdZy)RutubePlaylistBaseIEr  RutubePlaylistBaseNr   r   r   r   r  r  ((  rJ  r   r  c                        e Zd ZdZdZdZdZdZy)RutubeChannelIEr  zrutube:channelzehttps?://rutube\.ru/(?:channel/(?P<id>\d+)|u/(?P<slug>\w+))(?:/(?P<section>videos|shorts|playlists))?zRutube channelrm   Nr   r   r   r   r  r  -(  s    'GG{JGLr   r  c                        e Zd ZdZdZdZdZdZy)RutubeEmbedIEr  zrutube:embedzBhttps?://rutube\.ru/(?:video|play)/embed/(?P<id>[0-9]+)(?:[?#/]|$)zRutube embedded videosrl   Nr   r   r   r   r  r  5(  s    'GGVJ&GLr   r  c                        e Zd ZdZdZdZdZdZy)RutubeIEr  rutubezXhttps?://rutube\.ru/(?:(?:live/)?video(?:/private)?|(?:play/)?embed)/(?P<id>[\da-z]{32})zRutube videosrl   Nr   r   r   r   r  r  =(  s    'GGmJGLr   r  c                       e Zd ZdZdZdZdZy)RutubeMovieIEr  zrutube:moviez+https?://rutube\.ru/metainfo/tv/(?P<id>\d+)zRutube moviesNr,  r   r   r   r  r  E(  s    'GG@JGr   r  c                        e Zd ZdZdZdZdZdZy)RutubePersonIEr  zrutube:personz,https?://rutube\.ru/video/person/(?P<id>\d+)zRutube person videosrm   Nr   r   r   r   r  r  L(  s    'GGAJ$GLr   r  c                        e Zd ZdZdZdZdZdZy)RutubePlaylistIEr  zrutube:playlistz$https?://rutube\.ru/plst/(?P<id>\d+)zRutube playlistsrm   Nr   r   r   r   r  r  T(  s    'GG9J GLr   r  c                        e Zd ZdZdZdZdZdZy)RutubeTagsIEr  zrutube:tagsz*https?://rutube\.ru/tags/video/(?P<id>\d+)zRutube tagsrm   Nr   r   r   r   r  r  \(  s    'GG?JGLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)RuutuIEzyt_dlp.extractor.ruutuRuutuaB  (?x)
                    https?://
                        (?:
                            (?:www\.)?(?:ruutu|supla)\.fi/(?:video|supla|audio)/|
                            static\.nelonenmedia\.fi/player/misc/embed_player\.html\?.*?\bnid=
                        )
                        (?P<id>\d+)
                    FrB  rl   Nr  r   r   r   r  r  d(  s#    &GG eJHILr   r  c                       e Zd ZdZdZdZdZy)RuvIEyt_dlp.extractor.ruvRuvzJhttps?://(?:www\.)?ruv\.is/(?:sarpurinn/[^/]+|node)/(?P<id>[^/]+(?:/\d+)?)rl   Nr   r   r   r   r  r  m(  s    $GG`JLr   r  c                       e Zd ZdZdZdZdZy)
RuvSpilaIEr  zruv.is:spilazqhttps?://(?:www\.)?ruv\.is/(?:(?:sjon|ut)varp|(?:krakka|ung)ruv)/spila/.+/(?P<series_id>[0-9]+)/(?P<id>[a-z0-9]+)rl   Nr   r   r   r   r  r  t(  s    $GG GJLr   r  c                       e Zd ZdZdZdZdZy)S4CIEyt_dlp.extractor.s4cS4Cz8https?://(?:www\.)?s4c\.cymru/clic/programme/(?P<id>\d+)rl   Nr   r   r   r   r  r  {(  r.	  r   r  c                       e Zd ZdZdZdZdZy)S4CSeriesIEr  	S4CSeriesz5https?://(?:www\.)?s4c\.cymru/clic/series/(?P<id>\d+)rm   Nr   r   r   r   r  r  (  s    $GGKJLr   r  c                       e Zd ZdZdZdZy)SAKTVBaseIErH  	SAKTVBasesaktvNr{   r   r   r   r  r  (  rO  r   r  c                       e Zd ZdZdZdZdZy)SAKTVIErH  SAKTVz(?x)https?://(?:www\.)?saktv\.ch/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  NrS  r   r   r   r  r  (      'GG fJNr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )SAKTVLiveIErH  	SAKTVLivez(?x)https?://(?:www\.)?saktv\.ch/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 P    t         j                  |      rdS t        |   |      S r   )r  r4   r   r   s     r   r4   zSAKTVLiveIE.suitable(  r   r   r  r   s   @r   r  r  (  .    'GG [JNI Ir   r  c                       e Zd ZdZdZdZdZy)SAKTVRecordingsIErH  SAKTVRecordingszp(?x)https?://(?:www\.)?saktv\.ch/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  NrS  r   r   r   r  r  (      'GG KJNr   r  c                       e Zd ZdZdZdZdZy)SBSCoKrAllvodProgramIEyt_dlp.extractor.sbscokrzsbs.co.kr:allvod_programzahttps?://allvod\.sbs\.co\.kr/allvod/vod(?:Free)?ProgramDetail\.do\?(?:[^#]+&)?pgmId=(?P<id>P?\d+)rm   Nr   r   r   r   r   r   (  s    (G(GzJLr   r   c                   $    e Zd ZdZdZddgZdZdZy)	SBSCoKrIEr  z	sbs.co.krz\https?://allvod\.sbs\.co\.kr/allvod/vod(?:Package)?EndPage\.do\?(?:[^#]+&)?mdaId=(?P<id>\d+)z~https?://programs\.sbs\.co\.kr/(?:enter|drama|culture|sports|plus|mtv|kth)/[a-z0-9]+/(?:vod|clip|movie)/\d+/(?P<id>(?:OC)?\d+)r	  rl   Nrw  r   r   r   r  r  (  s(    (GGv  y~  JILr   r  c                       e Zd ZdZdZdZdZy)SBSCoKrProgramsVodIEr  zsbs.co.kr:programs_vodz]https?://programs\.sbs\.co\.kr/(?:enter|drama|culture|sports|plus|mtv)/(?P<id>[a-z0-9]+)/vodsrm   Nr   r   r   r   r  r  (  s    (G&GsJLr   r  c                        e Zd ZdZdZdZdZdZy)SBSIEzyt_dlp.extractor.sbsSBSa/  (?x)
        https?://(?:www\.)?sbs\.com\.au/(?:
            ondemand(?:
                /video/(?:single/)?|
                /(?:movie|tv-program)/[^/]+/|
                /(?:tv|news)-series/(?:[^/]+/){3}|
                .*?\bplay=|/watch/
            )|news/(?:embeds/)?video/
        )(?P<id>[0-9]+)z
sbs.com.aurl   Nr   r   r   r   r  r  (  s    $GG OJGLr   r  c                       e Zd ZdZdZdZy)SRGSSRIEyt_dlp.extractor.srgssrSRGSSRa  (?x)
                    (?:
                        https?://tp\.srgssr\.ch/p(?:/[^/]+)+\?urn=urn|
                        srgssr
                    ):
                    (?P<bu>
                        srf|rts|rsi|rtr|swi
                    ):(?:[^:]+:)?
                    (?P<type>
                        video|audio
                    ):
                    (?P<id>
                        [0-9a-f\-]{36}|\d+
                    )
                    Nr  r   r   r   r
  r
  (  s    'GG uJr   r
  c                   $    e Zd ZdZdZdZdZdZdZy)RTSIEzyt_dlp.extractor.rtsRTSzerts:(?P<rts_id>\d+)|https?://(?:.+?\.)?rts\.ch/(?:[^/]+/){2,}(?P<id>[0-9]+)-(?P<display_id>.+?)\.htmlFzRTS.chr   Nrl  r   r   r   r  r  (  s     $GG|JHGLr   r  c                        e Zd ZdZdZdZdZdZy)SRGSSRPlayIEr  
SRGSSRPlaya  (?x)
                    https?://
                        (?:(?:www|play)\.)?
                        (?P<bu>srf|rts|rsi|rtr|swissinfo)\.ch/play/(?:tv|radio)/
                        (?:
                            [^/]+/(?P<type>video|audio)/[^?]+|
                            popup(?P<type_2>video|audio)player
                        )
                        \?.*?\b(?:id=|urn=urn:[^:]+:video:)(?P<id>[0-9a-f\-]{36}|\d+)
                    z:srf.ch, rts.ch, rsi.ch, rtr.ch and swissinfo.ch play sitesrl   Nr   r   r   r   r  r  (  s    'GG aJJGLr   r  c                       e Zd ZdZdZy)ARDMediathekBaseIEr   ARDMediathekBaseNr   r   r   r   r  r  (  r   r   r  c                        e Zd ZdZdZdZdZdZy)SRMediathekIEzyt_dlp.extractor.srmediathekzsr:mediathekzBhttps?://(?:www\.)?sr-mediathek\.de/index\.php\?.*?&id=(?P<id>\d+)u   Saarländischer Rundfunkrl   Nr   r   r   r   r  r  (  s    ,GGZJ(GLr   r  c                       e Zd ZdZdZdZdZy)STVPlayerIEzyt_dlp.extractor.stvz
stv:playerzDhttps?://player\.stv\.tv/(?P<type>episode|video)/(?P<id>[a-z0-9]{4})rl   Nr   r   r   r   r  r  (  s    $GGYJLr   r  c                       e Zd ZdZdZy)	SVTBaseIEyt_dlp.extractor.svtSVTBaseNr   r   r   r   r  r  (  rk  r   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )	SVTPageIEr  zsvt:pagez8https?://(?:www\.)?svt\.se/(?:[^/?#]+/)*(?P<id>[^/?&#]+)r   c                 P    t         j                  |      rdS t        |   |      S r   	SVTPlayIEr4   r   r   s     r   r4   zSVTPageIE.suitable(  r   r   r   r   s   @r   r  r  (  s+    $GGMJLK Kr   r  c                        e Zd ZdZdZdZdZdZy)r"  r  zsvt:playa  (?x)
                    (?:
                        (?:
                            svt:|
                            https?://(?:www\.)?svt\.se/barnkanalen/barnplay/[^/]+/
                        )
                        (?P<svt_id>[^/?#&]+)|
                        https?://(?:www\.)?(?:svtplay|oppetarkiv)\.se/(?:video|klipp|kanaler)/(?P<id>[^/?#&]+)
                        (?:.*?(?:modalId|id)=(?P<modal_id>[\da-zA-Z-]+))?
                    )
                    u   SVT Play and Öppet arkivrl   Nr   r   r   r   r"  r"  )  s    $GG |J)GLr   r"  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )SVTSeriesIEr  zsvt:play:serieszThttps?://(?:www\.)?svtplay\.se/(?P<id>[^/?&#]+)(?:.+?\btab=(?P<season_slug>[^&#]+))?rm   c                 P    t         j                  |      rdS t        |   |      S r   r!  r   s     r   r4   zSVTSeriesIE.suitable)  r   r   r   r   s   @r   r%  r%  	)  s+    $GGjJLK Kr   r%  c                       e Zd ZdZdZdZy)SafariBaseIEyt_dlp.extractor.safari
SafariBasesafariNr{   r   r   r   r(  r(  )  r  r   r(  c                       e Zd ZdZdZdZdZy)SafariApiIEr)  z
safari:apizhttps?://(?:www\.)?(?:safaribooksonline|(?:learning\.)?oreilly)\.com/api/v1/book/(?P<course_id>[^/]+)/chapter(?:-content)?/(?P<part>[^/?#&]+)\.htmlr+  NrS  r   r   r   r-  r-  )  s    'GG kJNr   r-  c                   @     e Zd ZdZdZdZdZdZdZe	 fd       Z
 xZS )SafariCourseIEr)  zsafari:coursea  (?x)
                    https?://
                        (?:
                            (?:www\.)?(?:safaribooksonline|(?:learning\.)?oreilly)\.com/
                            (?:
                                library/view/[^/]+|
                                api/v1/book|
                                videos/[^/]+
                            )|
                            techbus\.safaribooksonline\.com
                        )
                        /(?P<id>[^/]+)
                    z$safaribooksonline.com online coursesr+  rm   c                 z    t         j                  |      st        j                  |      rdS t        |   |      S r   )SafariIEr4   r-  r   r   s     r   r4   zSafariCourseIE.suitable))  s7    !**3/;3G3G3L 	,W%c*	,r   r   r   s   @r   r/  r/  !)  s6    'GG [J4GNL, ,r   r/  c                   $    e Zd ZdZdZdZdZdZdZy)r1  r)  r+  a  (?x)
                        https?://
                            (?:www\.)?(?:safaribooksonline|(?:learning\.)?oreilly)\.com/
                            (?:
                                library/view/[^/]+/(?P<course_id>[^/]+)/(?P<part>[^/?\#&]+)\.html|
                                videos/[^/]+/[^/]+/(?P<reference_id>[^-]+-[^/?\#&]+)
                            )
                    z"safaribooksonline.com online videorl   Nr   r   r   r   r1  r1  /)  s#    'GG kJ2GNLr   r1  c                        e Zd ZdZdZdZdZdZy)
SaitosanIEzyt_dlp.extractor.saitosanSaitosanz>https?://(?:www\.)?saitosan\.net/bview.html\?id=(?P<id>[0-9]+)Frl   Nr]  r   r   r   r4  r4  8)  s    )GGTJHLr   r4  c                       e Zd ZdZdZdZy)SaltTVBaseIErH  
SaltTVBasesalttvNr{   r   r   r   r7  r7  @)  r  r   r7  c                       e Zd ZdZdZdZdZy)SaltTVIErH  SaltTVz(?x)https?://(?:www\.)?tv\.salt\.ch/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r9  NrS  r   r   r   r;  r;  F)  s    'GG jJNr   r;  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )SaltTVLiveIErH  
SaltTVLivez(?x)https?://(?:www\.)?tv\.salt\.ch/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r9  c                 P    t         j                  |      rdS t        |   |      S r   )r;  r4   r   r   s     r   r4   zSaltTVLiveIE.suitableS)  r  r   r  r   s   @r   r>  r>  M)  s.    'GG _JNJ Jr   r>  c                       e Zd ZdZdZdZdZy)SaltTVRecordingsIErH  SaltTVRecordingszs(?x)https?://(?:www\.)?tv\.salt\.ch/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r9  NrS  r   r   r   rB  rB  X)  s    'G G OJNr   rB  c                       e Zd ZdZdZdZdZy)SampleFocusIEzyt_dlp.extractor.samplefocusSampleFocusz<https?://(?:www\.)?samplefocus\.com/samples/(?P<id>[^/?&#]+)rl   Nr   r   r   r   rE  rE  _)  r  r   rE  c                        e Zd ZdZdZdZdZdZy)	SangiinIEyt_dlp.extractor.japandietSangiinzGhttps?://www\.webtv\.sangiin\.go\.jp/webtv/detail\.php\?sid=(?P<id>\d+)u4   参議院インターネット審議中継 (archive)rl   Nr   r   r   r   rH  rH  f)  s    *GGaJDGLr   rH  c                       e Zd ZdZdZdZdZy)SangiinInstructionIErI  SangiinInstructionz5https?://www\.webtv\.sangiin\.go\.jp/webtv/index\.phpFNr,  r   r   r   rL  rL  n)  s    *G"GMJGr   rL  c                        e Zd ZdZdZdZdZdZy)SapoIEzyt_dlp.extractor.sapoSapozQhttps?://(?:(?:v2|www)\.)?videos\.sapo\.(?:pt|cv|ao|mz|tl)/(?P<id>[\da-zA-Z]{20})u   SAPO Vídeosrl   Nr   r   r   r   rO  rO  u)  s    %GGhJGLr   rO  c                       e Zd ZdZdZdZdZy)SaucePlusChannelIEyt_dlp.extractor.sauceplusSaucePlusChannelz_https?://(?:(?:www|beta)\.)?sauceplus\.com/channel/(?P<id>[\w-]+)/home(?:/(?P<channel>[\w-]+))?rm   Nr   r   r   r   rR  rR  })  s    *G GvJLr   rR  c                        e Zd ZdZdZdZdZdZy)SaucePlusIErS  	SaucePlusz;https?://(?:(?:www|beta)\.)?sauceplus\.com/post/(?P<id>\w+)zSauce+rl   Nr   r   r   r   rV  rV  )  s    *GGQJGLr   rV  c                       e Zd ZdZdZdZdZy)
SchoolTVIErb  schooltvz6https?://(?:www\.)?schooltv\.nl/video/(?P<id>[^/?#&]+)rl   Nr   r   r   r   rY  rY  )  s    $GGKJLr   rY  c                       e Zd ZdZdZdZdZy)ScienceChannelIEr  ScienceChannelzBhttps?://(?:www\.)?sciencechannel\.com/video/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r\  r\  )  s    &GGWJLr   r\  c                       e Zd ZdZdZdZdZy)	Screen9IEzyt_dlp.extractor.screen9Screen9zRhttps?://(?:\w+\.screen9\.(?:tv|com)|play\.su\.se)/(?:embed|media)/(?P<id>[^?#/]+)rl   Nr   r   r   r   r_  r_  )  s    (GGjJLr   r_  c                       e Zd ZdZdZdZdZy)ScreenRecIEzyt_dlp.extractor.screenrec	ScreenRecz6https?://(?:www\.)?screenrec\.com/share/(?P<id>\w{10})rl   Nr   r   r   r   rb  rb  )  r  r   rb  c                       e Zd ZdZdZdZdZy)ScreencastIEzyt_dlp.extractor.screencast
Screencastz9https?://(?:www\.)?screencast\.com/t/(?P<id>[a-zA-Z0-9]+)rl   Nr   r   r   r   re  re  )  s    +GGNJLr   re  c                       e Zd ZdZdZdZdZy)ScreencastOMaticIEz!yt_dlp.extractor.screencastomaticScreencastOMaticzZhttps?://screencast-o-matic\.com/(?:(?:watch|player)/|embed\?.*?\bsc=)(?P<id>[0-9a-zA-Z]+)rl   Nr   r   r   r   rh  rh  )  s    1G GpJLr   rh  c                        e Zd ZdZdZddgZdZy)ScreencastifyIEzyt_dlp.extractor.screencastifyScreencastifyz4https?://watch\.screencastify\.com/v/(?P<id>[^/?#]+)z<https?://app\.screencastify\.com/v[23]/watch/(?P<id>[^/?#]+)rl   Nr   r   r   r   rk  rk  )  s#    .GGJ  MM  NJLr   rk  c                       e Zd ZdZdZdZdZy)ScrippsNetworksIE yt_dlp.extractor.scrippsnetworksScrippsNetworkszhttps?://(?:www\.)?(?P<site>cookingchanneltv|discovery|(?:diy|food)network|hgtv|travelchannel)\.com/videos/[0-9a-z-]+-(?P<id>\d+)rl   Nr   r   r   r   rn  rn  )  s    0GG XJLr   rn  c                       e Zd ZdZdZy)AWSIEzyt_dlp.extractor.awsAWSNr   r   r   r   rr  rr  )  r  r   rr  c                       e Zd ZdZdZdZdZy)ScrippsNetworksWatchIEro  zscrippsnetworks:watchar  (?x)
                    https?://
                        watch\.
                        (?P<site>geniuskitchen)\.com/
                        (?:
                            player\.[A-Z0-9]+\.html\#|
                            show/(?:[^/]+/){2}|
                            player/
                        )
                        (?P<id>\d+)
                    rl   Nr   r   r   r   ru  ru  )  s    0G%G VJLr   ru  c                        e Zd ZdZdZdZdZdZy)ScrolllerIEzyt_dlp.extractor.scrolller	Scrolllerz0https?://(?:www\.)?scrolller\.com/(?P<id>[\w-]+)r   rl   Nrw  r   r   r   rw  rw  )  s    *GGFJILr   rw  c                        e Zd ZdZdZdZdZdZy)SejmIEzyt_dlp.extractor.sejmplsejm)zqhttps?://(?:www\.)?sejm\.gov\.pl/[Ss]ejm(?P<term>\d+)\.nsf/transmisje(?:_arch)?\.xsp(?:\?[^#]*)?#(?P<id>[\dA-F]+)zvhttps?://(?:www\.)?sejm\.gov\.pl/[Ss]ejm(?P<term>\d+)\.nsf/transmisje(?:_arch)?\.xsp\?(?:[^#]+&)?unid=(?P<id>[\dA-F]+)zZhttps?://sejm-embed\.redcdn\.pl/[Ss]ejm(?P<term>\d+)\.nsf/VideoFrame\.xsp/(?P<id>[\dA-F]+)Frm   Nr]  r   r   r   rz  rz  )  s    'GG uJHLr   rz  c                       e Zd ZdZdZdZdZy)SenIEzyt_dlp.extractor.senSenz4https?://(?:www\.)?sen\.com/video/(?P<id>[0-9a-f-]+)rl   Nr   r   r   r   r}  r}  )  ro  r   r}  c                        e Zd ZdZdZdZdZdZy)SenalColombiaLiveIEzyt_dlp.extractor.senalcolombiaSenalColombiaLivez:https?://(?:www\.)?senalcolombia\.tv/(?P<id>senal-en-vivo)Frl   Nr]  r   r   r   r  r  )  s    .G!GOJHLr   r  c                       e Zd ZdZdZdZdZy)SenateGovIEyt_dlp.extractor.senategovz
senate.govzhttps?://(?:www\.)?(?:agriculture|aging|appropriations|armed\-services|banking|budget|commerce|energy|epw|finance|foreign|help|intelligence|inaugural|judiciary|rules|sbc|veterans)\.senate\.govrl   Nr   r   r   r   r  r  )  s    *GG XJLr   r  c                       e Zd ZdZdZdZdZy)SenateISVPIEr  zsenate.gov:isvpz1https?://(?:www\.)?senate\.gov/isvp/?\?(?P<qs>.+)rl   Nr   r   r   r   r  r  )  s    *GGGJLr   r  c                       e Zd ZdZdZdZdZy)ServusIEzyt_dlp.extractor.servusServusa^  (?x)
                    https?://
                        (?:www\.)?
                        (?:
                            servus\.com/(?:(?:at|de)/p/[^/]+|tv/videos)|
                            (?:servustv|pm-wissen)\.com/(?:[^/]+/)?v(?:ideos)?
                        )
                        /(?P<id>[aA]{2}-?\w+|\d+-\d+)
                    rl   Nr   r   r   r   r  r  )  s    'GG @JLr   r  c                       e Zd ZdZdZdZdZy)SevenPlusIEzyt_dlp.extractor.sevenplus7pluszQhttps?://(?:www\.)?7plus\.com\.au/(?P<path>[^?]+\?.*?\bepisode-id=(?P<id>[^&#]+))rl   Nr   r   r   r   r  r  *  s    *GGiJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)SexuIEzyt_dlp.extractor.sexuSexuz(https?://(?:www\.)?sexu\.com/(?P<id>\d+)Fr   rl   Nr  r   r   r   r  r  *  s     %GG>JHILr   r  c                       e Zd ZdZdZdZdZy)SeznamZpravyArticleIEyt_dlp.extractor.seznamzpravySeznamZpravyArticlezYhttps?://(?:www\.)?(?:seznam\.cz/zpravy|seznamzpravy\.cz)/clanek/(?:[^/?#&]+)-(?P<id>\d+)rm   Nr   r   r   r   r  r  *  s    -G#GpJLr   r  c                       e Zd ZdZdZdZdZy)SeznamZpravyIEr  SeznamZpravyz;https?://(?:www\.)?seznamzpravy\.cz/iframe/player\?.*\bsrc=rl   Nr   r   r   r   r  r  *  s    -GGRJLr   r  c                       e Zd ZdZdZy)ShahidBaseIEyt_dlp.extractor.shahid
ShahidBaseNr   r   r   r   r  r  "*  rE  r   r  c                        e Zd ZdZdZdZdZdZy)ShahidIEr  Shahidzghttps?://shahid\.mbc\.net/[a-z]{2}/(?:serie|show|movie)s/[^/]+/(?P<type>episode|clip|movie)-(?P<id>\d+)shahidrl   Nr   r   r   r   r  r  '*  s    'GG}JNLr   r  c                       e Zd ZdZdZdZdZy)ShahidShowIEr  
ShahidShowzThttps?://shahid\.mbc\.net/[a-z]{2}/(?:show|serie)s/[^/]+/(?:show|series)-(?P<id>\d+)rm   Nr   r   r   r   r  r  /*  s    'GGjJLr   r  c                        e Zd ZdZdZddgZdZy)SharePointIEzyt_dlp.extractor.sharepoint
SharePointzVhttps?://[\w-]+\.sharepoint\.com/:v:/[a-z]/(?:[^/?#]+/)*(?P<id>[^/?#]{46})/?(?:$|[?#])z_https?://[\w-]+\.sharepoint\.com/(?!:v:)(?:[^/?#]+/)*stream\.aspx\?(?:[^#]+&)?id=(?P<id>[^&#]+)rl   Nr   r   r   r   r  r  6*  s#    +GGm  pV  WJLr   r  c                       e Zd ZdZdZdZdZy)ShemarooMeIEzyt_dlp.extractor.shemaroome
ShemarooMezBhttps?://(?:www\.)?shemaroome\.com/(?:movies|shows)/(?P<id>[^?#]+)rl   Nr   r   r   r   r  r  =*  s    +GGWJLr   r  c                       e Zd ZdZdZdZdZy)ShieyIEzyt_dlp.extractor.shieyShieyz6https?://(?:www\.)?shiey\.com/videos/v/(?P<id>[^/?#]+)rl   Nr   r   r   r   r  r  D*  r5	  r   r  c                       e Zd ZdZdZdZdZy)ShowRoomLiveIEzyt_dlp.extractor.showroomliveShowRoomLivezkhttps?://(?:www\.)?showroom-live\.com/(?!onlive|timetable|event|campaign|news|ranking|room)(?P<id>[^/?#&]+)FNr:  r   r   r   r  r  K*  s    -GG AJHr   r  c                       e Zd ZdZdZy)ShugiinItvBaseIErI  ShugiinItvBaseNr   r   r   r   r  r  R*  s    *GGr   r  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )ShugiinItvLiveIErI  ShugiinItvLivez?https?://(?:www\.)?shugiintv\.go\.jp/(?:jp|en)(?:/index\.php)?$u*   衆議院インターネット審議中継rm   c                 f    t         |         xr t        fdt        t        fD               S )Nc              3   @   K   | ]  }|j                          y wr'   r  )r9   xr3   s     r   r;   z,ShugiinItvLiveIE.suitable.<locals>.<genexpr>`*  s     0rQC0rr<   )r   r4   r   ShugiinItvLiveRoomIEShugiinItvVodIEr   s    `r   r4   zShugiinItvLiveIE.suitable^*  s-    w$rS0rK_apJq0r-r)rrr   r  r   s   @r   r  r  W*  s0    *GGVJ:GLs sr   r  c                        e Zd ZdZdZdZdZdZy)r  rI  ShugiinItvLiveRoomzRhttps?://(?:www\.)?shugiintv\.go\.jp/(?:jp|en)/index\.php\?room_id=(?P<id>room\d+)u3   衆議院インターネット審議中継 (中継)rl   Nr   r   r   r   r  r  c*  s    *G"GkJCGLr   r  c                        e Zd ZdZdZdZdZdZy)r  rI  ShugiinItvVodzghttps?://(?:www\.)?shugiintv\.go\.jp/(?:jp|en)/index\.php\?ex=VL(?:\&[^=]+=[^&]*)*\&deli_id=(?P<id>\d+)uE   衆議院インターネット審議中継 (ビデオライブラリ)rl   Nr   r   r   r   r  r  k*  s    *GG CJUGLr   r  c                       e Zd ZdZdZdZy)SibnetEmbedIEzyt_dlp.extractor.sibnetSibnetEmbedFNr  r   r   r   r  r  s*  s    'GGJr   r  c                       e Zd ZdZdZy)SimplecastBaseIEyt_dlp.extractor.simplecastSimplecastBaseNr   r   r   r   r  r  y*  r  r   r  c                       e Zd ZdZdZdZdZy)SimplecastEpisodeIEr  zsimplecast:episodezBhttps?://(?!api\.)[^/]+\.simplecast\.com/episodes/(?P<id>[^/?&#]+)rl   Nr   r   r   r   r  r  ~*  s    +G"GXJLr   r  c                       e Zd ZdZdZdZdZy)SimplecastIEr  
simplecastzshttps?://(?:api\.simplecast\.com/episodes|player\.simplecast\.com)/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})rl   Nr   r   r   r   r  r  *  s    +GG NJLr   r  c                       e Zd ZdZdZdZdZy)SimplecastPodcastIEr  zsimplecast:podcastzahttps?://(?!(?:api|cdn|embed|feeds|player)\.)(?P<id>[^/]+)\.simplecast\.com(?!/episodes/[^/?&#]+)rm   Nr   r   r   r   r  r  *  s    +G"GwJLr   r  c                       e Zd ZdZdZdZdZy)SinaIEzyt_dlp.extractor.sinaSinaa  (?x)https?://(?:[^/?#]+\.)?video\.sina\.com\.cn/
                        (?:
                            (?:view/|.*\#)(?P<id>\d+)|
                            .+?/(?P<pseudo_id>[^/?#]+)(?:\.s?html)|
                            # This is used by external sites like Weibo
                            api/sinawebApi/outplay.php/(?P<token>.+?)\.swf
                        )
                  rl   Nr   r   r   r   r  r  *  s    %GG jJLr   r  c                       e Zd ZdZdZdZdZy)SkebIEzyt_dlp.extractor.skebSkebz=https?://skeb\.jp/@(?P<uploader_id>[^/?#]+)/works/(?P<id>\d+)r   Nr   r   r   r   r  r  *  s    %GGRJLr   r  c                       e Zd ZdZdZy)SkyItBaseIEyt_dlp.extractor.skyit	SkyItBaseNr   r   r   r   r  r  *  r   r   r  c                       e Zd ZdZdZdZdZy)SkyItIEr  zsky.itzNhttps?://(?:sport|tg24)\.sky\.it(?:/[^/]+)*/\d{4}/\d{2}/\d{2}/(?P<id>[^/?&#]+)rl   Nr   r   r   r   r  r  *  s    &GGfJLr   r  c                       e Zd ZdZdZdZdZy)CieloTVItIEr  z
cielotv.itz8https?://(?:www\.)?cielotv\.it/video/(?P<id>[^.]+)\.htmlrl   Nr   r   r   r   r  r  *      &GGNJLr   r  c                       e Zd ZdZdZdZdZy)SkyItArteIEr  zarte.sky.itz-https?://arte\.sky\.it/video/(?P<id>[^/?&#]+)rl   Nr   r   r   r   r  r  *  r  r   r  c                       e Zd ZdZdZdZy)SkyItPlayerIEr  zplayer.sky.itzNhttps?://player\.sky\.it/player/(?:external|social)\.html\?.*?\bid=(?P<id>\d+)Nr  r   r   r   r  r  *  s    &GGgJr   r  c                       e Zd ZdZdZdZdZy)SkyItVideoIEr  zvideo.sky.itzVhttps?://(?:masterchef|video|xfactor)\.sky\.it(?:/[^/]+)*/video/[0-9a-z-]+-(?P<id>\d+)rl   Nr   r   r   r   r  r  *  s    &GGlJLr   r  c                       e Zd ZdZdZdZdZy)SkyItVideoLiveIEr  zvideo.sky.it:livez0https?://video\.sky\.it/diretta/(?P<id>[^/?&#]+)rl   Nr   r   r   r   r  r  *  s    &G!GEJLr   r  c                       e Zd ZdZdZdZdZy)SkyNewsAUIEzyt_dlp.extractor.skynewsau	SkyNewsAUzMhttps?://(?:www\.)?skynews\.com\.au/[^/]+/[^/]+/[^/]+/video/(?P<id>[a-z0-9]+)rl   Nr   r   r   r   r  r  *  s    *GGcJLr   r  c                       e Zd ZdZdZy)SkyNewsArabiaBaseIEyt_dlp.extractor.skynewsarabiaSkyNewsArabiaBaseNr   r   r   r   r  r  *      .G!Gr   r  c                        e Zd ZdZdZdZdZdZy)SkyNewsArabiaArticleIEr  zskynewsarabia:articlez@https?://(?:www\.)?skynewsarabia\.com/web/article/(?P<id>[0-9]+)Fr   Nr]  r   r   r   r  r  *  s    .G%GUJHLr   r  c                        e Zd ZdZdZdZdZdZy)SkyNewsArabiaIEr  zskynewsarabia:videoz>https?://(?:www\.)?skynewsarabia\.com/web/video/(?P<id>[0-9]+)Frl   Nr]  r   r   r   r  r  *  s    .G#GSJHLr   r  c                       e Zd ZdZdZy)	SkyBaseIEyt_dlp.extractor.skySkyBaseNr   r   r   r   r  r  *  rk  r   r  c                       e Zd ZdZdZdZdZy)	SkyNewsIEr  zsky:newsz7https?://news\.sky\.com/video/[0-9a-z-]+-(?P<id>[0-9]+)rl   Nr   r   r   r   r  r  *  s    $GGLJLr   r  c                       e Zd ZdZdZdZdZy)SkyNewsStoryIEr  zsky:news:storyz7https?://news\.sky\.com/story/[0-9a-z-]+-(?P<id>[0-9]+)rl   Nr   r   r   r   r  r  *  s    $GGLJLr   r  c                       e Zd ZdZdZdZdZy)SkySportsIEr  z
sky:sportszEhttps?://(?:www\.)?skysports\.com/watch/video/([^/]+/)*(?P<id>[0-9]+)rl   Nr   r   r   r   r  r  *      $GGZJLr   r  c                       e Zd ZdZdZdZdZy)SkySportsNewsIEr  zsky:sports:newsz?https?://(?:www\.)?skysports\.com/([^/]+/)*news/\d+/(?P<id>\d+)rm   Nr   r   r   r   r  r  +  s    $GGVJLr   r  c                        e Zd ZdZdZdZdZdZy)SkylineWebcamsIEzyt_dlp.extractor.skylinewebcamsSkylineWebcamszRhttps?://(?:www\.)?skylinewebcams\.com/[^/]+/webcam/(?:[^/]+/)+(?P<id>[^/]+)\.htmlFrl   Nr]  r   r   r   r  r  +  s    /GGhJHLr   r  c                       e Zd ZdZdZdZdZy)SlidesLiveIEzyt_dlp.extractor.slideslive
SlidesLivezDhttps?://slideslive\.com/(?:embed/(?:presentation/)?)?(?P<id>[0-9]+)r   Nr   r   r   r   r  r  +  s    +GGXJLr   r  c                       e Zd ZdZdZdZdZy)SlideshareIEzyt_dlp.extractor.slideshare
Slidesharez>https?://(?:www\.)?slideshare\.net/[^/]+?/(?P<title>.+?)($|\?)rl   Nr   r   r   r   r  r  +  r  r   r  c                        e Zd ZdZdZdZdZdZy)
SlutloadIEzyt_dlp.extractor.slutloadSlutloadzQhttps?://(?:\w+\.)?slutload\.com/(?:video/[^/]+|embed_player|watch)/(?P<id>[^/]+)r   rl   Nrw  r   r   r   r  r  "+  s    )GGgJILr   r  c                       e Zd ZdZdZy)SmotrimBaseIEyt_dlp.extractor.smotrimSmotrimBaseNr   r   r   r   r  r  *+  r   r   r  c                       e Zd ZdZdZdZdZy)SmotrimAudioIEr	  zsmotrim:audiozOhttps?://(?:(?:player|www)\.)?smotrim\.ru(?:/iframe)?/audio(?:/id)?/(?P<id>\d+)rl   Nr   r   r   r   r  r  /+  s    (GGeJLr   r  c                        e Zd ZdZdZdZdZdZy)	SmotrimIEr	  smotrimzT(?:https?:)?//(?:(?:player|www)\.)?smotrim\.ru(?:/iframe)?/video(?:/id)?/(?P<id>\d+)   rl   Nrw  r   r   r   r  r  6+  s    (GGjJILr   r  c                       e Zd ZdZdZdZdZy)SmotrimLiveIEr	  zsmotrim:liveaB  (?x:
        (?:https?:)?//
            (?:(?:(?:test)?player|www)\.)?
            (?:
                smotrim\.ru|
                vgtrk\.com
            )
            (?:/iframe)?/
            (?P<type>
                channel|
                (?:audio-)?live
            )
            (?:/u?id)?/(?P<id>[\da-f-]+)
    )rl   Nr   r   r   r   r  r  >+  s    (GG gJLr   r  c                       e Zd ZdZdZdZdZy)SmotrimPlaylistIEr	  zsmotrim:playlistzMhttps?://smotrim\.ru/(?P<type>brand|podcast)/(?P<id>\d+)/?(?P<season>[\w-]+)?rm   Nr   r   r   r   r  r  E+  s    (G GcJLr   r  c                       e Zd ZdZdZdZdZy)SnapchatSpotlightIEzyt_dlp.extractor.snapchatSnapchatSpotlightz6https?://(?:www\.)?snapchat\.com/spotlight/(?P<id>\w+)rl   Nr   r   r   r   r  r  L+  s    )G!GLJLr   r  c                        e Zd ZdZdZdZdZdZy)SoftWhiteUnderbellyIEz$yt_dlp.extractor.softwhiteunderbellySoftWhiteUnderbellyzAhttps?://(?:www\.)?softwhiteunderbelly\.com/videos/(?P<id>[\w-]+)softwhiteunderbellyrl   Nr   r   r   r   r  r  S+  s    4G#GWJ*NLr   r  c                       e Zd ZdZdZdZdZy)SohuIEyt_dlp.extractor.sohuSohuzJhttps?://(?P<mytv>my\.)?tv\.sohu\.com/.+?/(?(mytv)|n)(?P<id>\d+)\.shtml.*?r   Nr   r   r   r   r  r  [+  s    %GGbJLr   r  c                       e Zd ZdZdZdZdZy)SohuVIEr  SohuVz8https?://tv\.sohu\.com/v/(?P<id>[\w=-]+)\.html(?:$|[#?])r   Nr   r   r   r   r!  r!  b+  s    %GGOJLr   r!  c                        e Zd ZdZdZdZdZdZy)	SonyLIVIEyt_dlp.extractor.sonylivSonyLIVa  (?x)
                     (?:
                        sonyliv:|
                        https?://(?:www\.)?sonyliv\.com/(?:s(?:how|port)s/[^/]+|movies|clip|trailer|music-videos)/[^/?#&]+-
                    )
                    (?P<id>\d+)
                  sonylivrl   Nr   r   r   r   r$  r$  i+  s    (GG aJNLr   r$  c                       e Zd ZdZdZdZdZy)SonyLIVSeriesIEr%  SonyLIVSerieszIhttps?://(?:www\.)?sonyliv\.com/shows/[^/?#&]+-(?P<id>\d{10})/?(?:$|[?#])rm   Nr   r   r   r   r)  r)  q+  s    (GG_JLr   r)  c                       e Zd ZdZdZdZy)SoundcloudEmbedIEyt_dlp.extractor.soundcloudSoundcloudEmbedzDhttps?://(?:w|player|p)\.soundcloud\.com/player/?.*?\burl=(?P<id>.+)Nr  r   r   r   r,  r,  x+  s    +GGZJr   r,  c                       e Zd ZdZdZdZy)SoundcloudBaseIEr-  SoundcloudBase
soundcloudNr{   r   r   r   r0  r0  ~+  rf  r   r0  c                        e Zd ZdZdZdZdZdZy)SoundcloudIEr-  r2  a  (?x)^(?:https?://)?
                    (?:(?:(?:www\.|m\.)?soundcloud\.com/
                            (?!stations/track)
                            (?P<uploader>[\w\d-]+)/
                            (?!(?:tracks|albums|sets(?:/.+?)?|reposts|likes|spotlight|comments)/?(?:$|[?#]))
                            (?P<title>[\w\d-]+)
                            (?:/(?P<token>(?!(?:albums|sets|recommended))[^?]+?))?
                            (?:[?].*)?$)
                       |(?:api(?:-v2)?\.soundcloud\.com/tracks/(?:soundcloud%3Atracks%3A)?(?P<track_id>\d+)
                          (?:/?\?secret_token=(?P<secret_token>[^&]+))?)
                    )
                    rl   Nr   r   r   r   r4  r4  +  s    +GG RJ!NLr   r4  c                       e Zd ZdZdZdZy)SoundcloudPlaylistBaseIEr-  SoundcloudPlaylistBaser2  Nr{   r   r   r   r6  r6  +  s    +G&G!Nr   r6  c                        e Zd ZdZdZdZdZdZy)SoundcloudPlaylistIEr-  zsoundcloud:playlistzhttps?://api(?:-v2)?\.soundcloud\.com/playlists/(?:soundcloud(?:%3A|:)playlists(?:%3A|:))?(?P<id>[0-9]+)(?:/?\?secret_token=(?P<token>[^&]+?))?$r2  rm   Nr   r   r   r   r9  r9  +  s    +G#G gJ!NLr   r9  c                       e Zd ZdZdZdZy)SoundcloudPagedPlaylistBaseIEr-  SoundcloudPagedPlaylistBaser2  Nr{   r   r   r   r;  r;  +  s    +G+G!Nr   r;  c                        e Zd ZdZdZdZdZdZy)SoundcloudRelatedIEr-  zsoundcloud:relatedzjhttps?://(?:(?:www|m)\.)?soundcloud\.com/(?P<slug>[\w\d-]+/[\w\d-]+)/(?P<relation>albums|sets|recommended)r2  rm   Nr   r   r   r   r>  r>  +  s    +G"G DJ!NLr   r>  c                   (    e Zd ZdZdZdZdZdZdZdZ	y)	SoundcloudSearchIEr-  zsoundcloud:searchz7scsearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zSoundcloud searchr2  scsearchrm   Nr   r   r   r   r@  r@  +  s%    +G!GLJ!G!NJLr   r@  c                        e Zd ZdZdZdZdZdZy)SoundcloudSetIEr-  zsoundcloud:setzuhttps?://(?:(?:www|m)\.)?soundcloud\.com/(?P<uploader>[\w\d-]+)/sets/(?P<slug_title>[:\w\d-]+)(?:/(?P<token>[^?/]+))?r2  rm   Nr   r   r   r   rC  rC  +  s    +GG OJ!NLr   rC  c                        e Zd ZdZdZdZdZdZy)SoundcloudTrackStationIEr-  zsoundcloud:trackstationzNhttps?://(?:(?:www|m)\.)?soundcloud\.com/stations/track/[^/]+/(?P<id>[^/?#&]+)r2  rm   Nr   r   r   r   rE  rE  +  s    +G'GcJ!NLr   rE  c                        e Zd ZdZdZdZdZdZy)SoundcloudUserIEr-  zsoundcloud:useram  (?x)
                        https?://
                            (?:(?:www|m)\.)?soundcloud\.com/
                            (?P<user>[^/]+)
                            (?:/
                                (?P<rsrc>tracks|albums|sets|reposts|likes|spotlight|comments)
                            )?
                            /?(?:[?#].*)?$
                    r2  rm   Nr   r   r   r   rG  rG  +  s    +GG KJ!NLr   rG  c                        e Zd ZdZdZdZdZdZy)SoundcloudUserPermalinkIEr-  zsoundcloud:user:permalinkz/https?://api\.soundcloud\.com/users/(?P<id>\d+)r2  rm   Nr   r   r   r   rI  rI  +  s    +G)GEJ!NLr   rI  c                       e Zd ZdZdZdZdZy)SoundgasmIEyt_dlp.extractor.soundgasm	soundgasmz[https?://(?:www\.)?soundgasm\.net/u/(?P<user>[0-9a-zA-Z_-]+)/(?P<display_id>[0-9a-zA-Z_-]+)rl   Nr   r   r   r   rK  rK  +  s    *GGpJLr   rK  c                       e Zd ZdZdZdZdZy)SoundgasmProfileIErL  zsoundgasm:profilez=https?://(?:www\.)?soundgasm\.net/u/(?P<id>[^/]+)/?(?:\#.*)?$rm   Nr   r   r   r   rO  rO  +  s    *G!GSJLr   rO  c                       e Zd ZdZdZdZdZy)SouthParkCoUkIEyt_dlp.extractor.southparkzsouthparkstudios.co.ukz_https?://(?:www\.)?southparkstudios\.co\.uk/(?:video-clips|collections|episodes)/(?P<id>[^?#]+)rl   Nr   r   r   r   rQ  rQ  +  s    *G&GuJLr   rQ  c                       e Zd ZdZdZdZdZy)SouthParkComBrIErR  zsouthparkstudios.com.brzrhttps?://(?:www\.)?southparkstudios\.com\.br/(?:en/)?(?:video-clips|episodios|collections|episodes)/(?P<id>[^?#]+)rl   Nr   r   r   r   rT  rT  +  s    *G'G IJLr   rT  c                       e Zd ZdZdZdZdZy)SouthParkDeIErR  zsouthpark.dezmhttps?://(?:www\.)?southpark\.de/(?:en/)?(?:videoclip|collections|episodes|video-clips|folgen)/(?P<id>[^?#]+)rl   Nr   r   r   r   rV  rV  +  s    *GG CJLr   rV  c                       e Zd ZdZdZdZdZy)SouthParkDkIErR  zsouthparkstudios.nuz[https?://(?:www\.)?southparkstudios\.nu/(?:video-clips|episodes|collections)/(?P<id>[^?#]+)rl   Nr   r   r   r   rX  rX  +  s    *G#GpJLr   rX  c                       e Zd ZdZdZdZdZy)SouthParkEsIErR  u   southpark.cc.com:españolzAhttps?://(?:www\.)?southpark\.cc\.com/es/episodios/(?P<id>[^?#]+)rl   Nr   r   r   r   rZ  rZ  +  s    *G)GWJLr   rZ  c                       e Zd ZdZdZdZdZy)SouthParkIErR  zsouthpark.cc.comzehttps?://(?:www\.)?southpark(?:\.cc|studios)\.com/(?:video-clips|episodes|collections)/(?P<id>[^?#]+)rl   Nr   r   r   r   r\  r\  ,  s    *G G{JLr   r\  c                       e Zd ZdZdZdZdZy)SouthParkLatIErR  zsouthpark.latzfhttps?://(?:www\.)?southpark\.lat/(?:en/)?(?:video-?clips?|collections|episod(?:e|io)s)/(?P<id>[^?#]+)rl   Nr   r   r   r   r^  r^  
,  s    *GG{JLr   r^  c                       e Zd ZdZdZy)SovietsClosetBaseIEyt_dlp.extractor.sovietsclosetSovietsClosetBaseNr   r   r   r   r`  r`  ,  r  r   r`  c                       e Zd ZdZdZdZdZy)SovietsClosetIEra  SovietsClosetz<https?://(?:www\.)?sovietscloset\.com/video/(?P<id>[0-9]+)/?rl   Nr   r   r   r   rd  rd  ,  s    .GGQJLr   rd  c                       e Zd ZdZdZdZdZy)SovietsClosetPlaylistIEra  SovietsClosetPlaylistz=https?://(?:www\.)?sovietscloset\.com/(?!video)(?P<id>[^#?]+)rm   Nr   r   r   r   rg  rg  ,  s    .G%GRJLr   rg  c                        e Zd ZdZdZdZdZdZy)SpankBangIEyt_dlp.extractor.spankbang	SpankBanga0  (?x)
                    https?://
                        (?:[^/]+\.)?spankbang\.com/
                        (?:
                            (?P<id>[\da-z]+)/(?:video|play|embed)\b|
                            [\da-z]+-(?P<id_2>[\da-z]+)/playlist/[^/?#&]+
                        )
                    r   rl   Nrw  r   r   r   rj  rj  $,  s    *GG QJILr   rj  c                       e Zd ZdZdZdZdZy)SpankBangPlaylistIErk  SpankBangPlaylistzShttps?://(?:[^/]+\.)?spankbang\.com/(?P<id>[\da-z]+)/playlist/(?P<display_id>[^/]+)rm   Nr   r   r   r   rn  rn  ,,  s    *G!GiJLr   rn  c                       e Zd ZdZdZdZdZy)	SpiegelIEzyt_dlp.extractor.spiegelSpiegelzhttps?://(?:www\.)?(?:spiegel|manager-magazin)\.de(?:/[^/]+)+/[^/]*-(?P<id>[0-9]+|[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})(?:-embed|-iframe)?(?:\.html)?(?:$|[#?])rl   Nr   r   r   r   rq  rq  3,  s    (GG NJLr   rq  c                       e Zd ZdZdZdZdZy)Sport5IEzyt_dlp.extractor.sport5Sport5zBhttps?://(?:www|vod)?\.sport5\.co\.il/.*\b(?:Vi|docID)=(?P<id>\d+)rl   Nr   r   r   r   rt  rt  :,  s    'GGZJLr   rt  c                        e Zd ZdZdZdZdZdZy)
SportBoxIEzyt_dlp.extractor.sportboxSportBoxzUhttps?://(?:news\.sportbox|matchtv)\.ru/vdl/player(?:/[^/]+/|\?.*?\bn?id=)(?P<id>\d+)Frl   Nr]  r   r   r   rw  rw  A,  s    )GGmJHLr   rw  c                       e Zd ZdZdZdZdZy)SportDeutschlandIEz!yt_dlp.extractor.sportdeutschlandsporteuropezChttps?://(?:player\.)?sporteurope\.tv/(?P<id>(?:[^/?#]+/)?[^?#/&]+)r   Nr   r   r   r   rz  rz  I,  s    1GGXJLr   rz  c                        e Zd ZdZdZddgZdZy)
SpreakerIEyt_dlp.extractor.spreakerSpreakerzMhttps?://api\.spreaker\.com/(?:(?:download/)?episode|v2/episodes)/(?P<id>\d+)zHhttps?://(?:www\.)?spreaker\.com/episode/[^#?/]*?(?P<id>\d+)/?(?:[?#]|$)rl   Nr   r   r   r   r}  r}  P,  r
  r   r}  c                        e Zd ZdZdZg dZdZy)SpreakerShowIEr~  SpreakerShow)z,https?://api\.spreaker\.com/show/(?P<id>\d+)z>https?://(?:www\.)?spreaker\.com/podcast/[\w-]+--(?P<id>[\d]+)z?https?://(?:www\.)?spreaker\.com/show/(?P<id>\d+)/episodes/feedrm   Nr   r   r   r   r  r  W,  s    )GG QJLr   r  c                       e Zd ZdZdZdZdZy)SproutVideoIEyt_dlp.extractor.sproutvideoSproutVideozAhttps?://videos\.sproutvideo\.com/embed/(?P<id>[\da-f]+)/[\da-f]+rl   Nr   r   r   r   r  r  ^,  r	  r   r  c                       e Zd ZdZdZdZy)WrestleUniverseBaseIE yt_dlp.extractor.wrestleuniverseWrestleUniverseBasewrestleuniverseNr{   r   r   r   r  r  e,  r  r   r  c                       e Zd ZdZdZdZy)StacommuBaseIEyt_dlp.extractor.stacommuStacommuBasestacommuNr{   r   r   r   r  r  k,  r  r   r  c                        e Zd ZdZdZdZdZdZy)StacommuLiveIEr  StacommuLivez;https?://www\.stacommu\.jp/(?:en/)?live/(?P<id>[\da-zA-Z]+)r  rl   Nr   r   r   r   r  r  q,  s    )GGQJNLr   r  c                        e Zd ZdZdZdZdZdZy)StacommuVODIEr  StacommuVODzFhttps?://www\.stacommu\.jp/(?:en/)?videos/episodes/(?P<id>[\da-zA-Z]+)r  rl   Nr   r   r   r   r  r  y,  s    )GG\JNLr   r  c                        e Zd ZdZdZdZdZdZy)StagePlusVODConcertIEzyt_dlp.extractor.stageplusStagePlusVODConcertz@https?://(?:www\.)?stage-plus\.com/video/(?P<id>vod_concert_\w+)	stageplusrm   Nr   r   r   r   r  r  ,  s    *G#GVJ NLr   r  c                       e Zd ZdZdZdZdZy)StarTVIEzyt_dlp.extractor.startvstartvz(?x)
        https?://(?:www\.)?startv\.com\.tr/
        (?:
            (?:dizi|program)/(?:[^/?#&]+)/(?:bolumler|fragmanlar|ekstralar)|
            video/arsiv/(?:dizi|program)/(?:[^/?#&]+)
        )/
        (?P<id>[^/?#&]+)
    rl   Nr   r   r   r   r  r  ,  s    'GG FJLr   r  c                        e Zd ZdZdZdZdZdZy)
StarTrekIEzyt_dlp.extractor.startrekstartrekzIhttps?://(?:www\.)?startrek\.com(?:/en-(?:ca|un))?/videos/(?P<id>[^/?#]+)z	STAR TREKrl   Nr   r   r   r   r  r  ,  s    )GG^JGLr   r  c                       e Zd ZdZdZdZdZy)SteamCommunityBroadcastIEyt_dlp.extractor.steamSteamCommunityBroadcastzBhttps?://(?:www\.)?steamcommunity\.com/broadcast/watch/(?P<id>\d+)rl   Nr   r   r   r   r  r  ,  s    &G'GXJLr   r  c                       e Zd ZdZdZdZdZy)SteamCommunityIEr  SteamCommunityzahttps?://(?:www\.)?steamcommunity\.com/sharedfiles/filedetails(?:/?\?(?:[^#]+&)?id=|/)(?P<id>\d+)rl   Nr   r   r   r   r  r  ,  s    &GGxJLr   r  c                       e Zd ZdZdZdZdZy)SteamIEr  SteamzYhttps?://store\.steampowered\.com(?:/agecheck)?/app/(?P<id>\d+)/?(?:[^?/#]+/?)?(?:[?#]|$)rm   Nr   r   r   r   r  r  ,  s    &GGoJLr   r  c                       e Zd ZdZdZy)StoryFireBaseIEyt_dlp.extractor.storyfireStoryFireBaseNr   r   r   r   r  r  ,  r  r   r  c                       e Zd ZdZdZdZdZy)StoryFireIEr  	StoryFirezDhttps?://(?:www\.)?storyfire\.com/video-details/(?P<id>[0-9a-f]{24})rl   Nr   r   r   r   r  r  ,      *GGYJLr   r  c                       e Zd ZdZdZdZdZy)StoryFireSeriesIEr  StoryFireSerieszGhttps?://(?:www\.)?storyfire\.com/write/series/stories/(?P<id>[^/?&#]+)rm   Nr   r   r   r   r  r  ,  s    *GG\JLr   r  c                       e Zd ZdZdZdZdZy)StoryFireUserIEr  StoryFireUserz:https?://(?:www\.)?storyfire\.com/user/(?P<id>[^/]+)/videorm   Nr   r   r   r   r  r  ,  s    *GGOJLr   r  c                        e Zd ZdZdZddgZdZy)	StreaksIEr
  Streaksz|https?://players\.streaks\.jp/(?P<project_id>[\w-]+)/(?P<api_key>[\da-f]+)/index\.html\?(?:[^#]+&)?m=(?P<id>(?:ref:)?[\w-]+)zehttps?://playback\.api\.streaks\.jp/v1/projects/(?P<project_id>[\w-]+)/medias/(?P<id>(?:ref:)?[\w-]+)rl   Nr   r   r   r   r  r  ,  s&    (GG X  ZF  GJLr   r  c                       e Zd ZdZdZdZdZy)
StreamCZIEzyt_dlp.extractor.streamczStreamCZz]https?://(?:www\.)?(?:stream|televizeseznam)\.cz/[^?#]+/(?P<display_id>[^?#]+)-(?P<id>[0-9]+)rl   Nr   r   r   r   r  r  ,  r  r   r  c                       e Zd ZdZdZdZdZy)StreamableIEzyt_dlp.extractor.streamable
Streamablez.https?://streamable\.com/(?:[es]/)?(?P<id>\w+)rl   Nr   r   r   r   r  r  ,  s    +GGCJLr   r  c                       e Zd ZdZdZdZdZy)StreetVoiceIEzyt_dlp.extractor.streetvoiceStreetVoicez>https?://(?:.+?\.)?streetvoice\.com/[^/]+/songs/(?P<id>[0-9]+)rl   Nr   r   r   r   r  r  ,      ,GGSJLr   r  c                        e Zd ZdZdZdZdZdZy)StripchatIEzyt_dlp.extractor.stripchat	Stripchatz'https?://stripchat\.com/(?P<id>[^/?#]+)r   rl   Nrw  r   r   r   r  r  ,  s    *GG;JILr   r  c                       e Zd ZdZdZy)SubsplashBaseIEyt_dlp.extractor.subsplashSubsplashBaseNr   r   r   r   r  r  ,  r  r   r  c                        e Zd ZdZdZddgZdZy)SubsplashIEr  	SubsplashzPhttps?://(?:www\.)?subsplash\.com/(?:u/)?[^/?#]+/[^/?#]+/(?:d/|mi/\+)(?P<id>\w+)z*https?://(?:\w+\.)?subspla\.sh/(?P<id>\w+)rl   Nr   r   r   r   r  r  ,  s#    *GGh  k[  \JLr   r  c                       e Zd ZdZdZdZdZy)SubsplashPlaylistIEr  zsubsplash:playlistzOhttps?://(?:www\.)?subsplash\.com/[^/?#]+/(?:our-videos|media)/ms/\+(?P<id>\w+)rm   Nr   r   r   r   r  r  ,  s    *G"GfJLr   r  c                       e Zd ZdZdZdZdZy)
SubstackIEzyt_dlp.extractor.substackSubstackz/https?://[\w-]+\.substack\.com/p/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  ,  r  r   r  c                        e Zd ZdZdZdZdZdZy)
SunPornoIEzyt_dlp.extractor.sunpornoSunPornozShttps?://(?:(?:www\.)?sunporno\.com/videos|embeds\.sunporno\.com/embed)/(?P<id>\d+)r   rl   Nrw  r   r   r   r  r  -  s    )GGkJILr   r  c                       e Zd ZdZdZy)SverigesRadioBaseIEyt_dlp.extractor.sverigesradioSverigesRadioBaseNr   r   r   r   r  r  -  r  r   r  c                       e Zd ZdZdZdZdZy)SverigesRadioEpisodeIEr  zsverigesradio:episodezahttps?://(?:www\.)?sverigesradio\.se/(?:sida/)?avsnitt/(?:(?P<id>\d+)|(?P<slug>[\w-]+))(?:$|[#?])rl   Nr   r   r   r   r  r  -  s    .G%GxJLr   r  c                       e Zd ZdZdZdZdZy)SverigesRadioPublicationIEr  zsverigesradio:publicationz}https?://(?:www\.)?sverigesradio\.se/(?:sida/)?(?:artikel|gruppsida)(?:\.aspx\?.*?\bartikel=(?P<id>[0-9]+)|/(?P<slug>[\w-]+))rl   Nr   r   r   r   r  r  -  s    .G)G WJLr   r  c                        e Zd ZdZdZdZdZdZy)SyfyIEr  Syfyzchttps?://(?:www\.)?syfy\.com/[^/?#]+/(?:season-\d+/episode-\d+/(?:videos/)?|videos/)(?P<id>[^/?#]+)r  rl   Nrw  r   r   r   r  r   -  s    $GGzJILr   r  c                       e Zd ZdZdZdZdZy)SztvHuIEzyt_dlp.extractor.sztvhuSztvHuzRhttps?://(?:(?:www\.)?sztv\.hu|www\.tvszombathely\.hu)/(?:[^/]+)/.+-(?P<id>[0-9]+)rl   Nr   r   r   r   r  r  (-  s    'GGiJLr   r  c                       e Zd ZdZdZdZdZy)TBSIEzyt_dlp.extractor.tbsTBSz(?x)
        https?://(?:www\.)?(?P<site>tbs|tntdrama|trutv)\.com
        (?P<path>/(?:
            (?P<watch>watch(?:tnt|tbs|trutv))|
            movies|shows/[^/?#]+/(?:clips|season-\d+/episode-\d+)
        )/(?P<id>[^/?#]+))
    rl   Nr   r   r   r   r  r  /-  s    $GG FJLr   r  c                       e Zd ZdZdZy)TBSJPBaseIEyt_dlp.extractor.tbsjp	TBSJPBaseNr   r   r   r   r  r  6-  r   r   r  c                       e Zd ZdZdZdZdZy)TBSJPEpisodeIEr  TBSJPEpisodez/https?://cu\.tbs\.co\.jp/episode/(?P<id>[\d_]+)rl   Nr   r   r   r   r  r  ;-  r1  r   r  c                       e Zd ZdZdZdZdZy)TBSJPPlaylistIEr  TBSJPPlaylistz2https?://cu\.tbs\.co\.jp/playlist/(?P<id>[\da-f]+)rm   Nr   r   r   r   r  r  B-  s    &GGIJLr   r  c                       e Zd ZdZdZdZdZy)TBSJPProgramIEr  TBSJPProgramz,https?://cu\.tbs\.co\.jp/program/(?P<id>\d+)rm   Nr   r   r   r   r  r  I-  s    &GGCJLr   r  c                       e Zd ZdZdZdZdZy)TF1IEzyt_dlp.extractor.tf1TF1zVhttps?://(?:www\.)?tf1\.fr/[^/]+/(?P<program_slug>[^/]+)/videos/(?P<id>[^/?&#]+)\.htmlrl   Nr   r   r   r   r  r  P-      $GGlJLr   r  c                        e Zd ZdZdZdZdZdZy)TFOIEzyt_dlp.extractor.tfoTFOz>https?://(?:www\.)?tfo\.org/(?:en|fr)/(?:[^/]+/){2}(?P<id>\d+)Frl   Nr]  r   r   r   r  r  W-  s    $GGTJHLr   r  c                       e Zd ZdZdZdZdZy)TLCIEr  TLCz6https?://(?:go\.)?tlc\.com/video/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r  r  _-  s    &GGKJLr   r  c                       e Zd ZdZdZdZdZy)TMZIEzyt_dlp.extractor.tmzTMZzhttps?://(?:www\.)?tmz\.com/.*rl   Nr   r   r   r   r  r  f-  s    $GG3JLr   r  c                        e Zd ZdZdZdZdZdZy)	TNAFlixIEr  TNAFlixzVhttps?://(?:www\.)?(?P<host>tnaflix)\.com/[^/]+/(?P<display_id>[^/]+)/video(?P<id>\d+)r   rl   Nrw  r   r   r   r  r  m-  s    (GGlJILr   r  c                        e Zd ZdZdZdZdZdZy)TNAFlixNetworkEmbedIEr  TNAFlixNetworkEmbedzAhttps?://player\.(?P<host>tnaflix|empflix)\.com/video/(?P<id>\d+)r   rl   Nrw  r   r   r   r  r  u-  s    (G#GWJILr   r  c                   $    e Zd ZdZdZdZdZdZdZy)	TOnlineIEzyt_dlp.extractor.tonlinezt-online.deNz<https?://(?:www\.)?t-online\.de/tv/(?:[^/]+/)*id_(?P<id>\d+)Frl   r&  r   r   r   r
  r
  }-  s     (GGHRJHLr   r
  c                       e Zd ZdZdZdZdZy)TV24UAVideoIEzyt_dlp.extractor.tv24uaz24tv.uazDhttps?://24tv\.ua/news/showPlayer\.do.*?(?:\?|&)objectId=(?P<id>\d+)rl   Nr   r   r   r   r  r  -  s    'GG[JLr   r  c                       e Zd ZdZdZdZdZy)TV2ArticleIEr	  
TV2Articlez?https?://(?:www\.)?tv2\.no/(?!v(?:ideo)?\d*/)[^?#]+/(?P<id>\d+)rm   Nr   r   r   r   r  r  -  s    $GGVJLr   r  c                       e Zd ZdZdZdZdZy)TV2DKBornholmPlayIEyt_dlp.extractor.tv2dkTV2DKBornholmPlayz4https?://play\.tv2bornholm\.dk/\?.*?\bid=(?P<id>\d+)rl   Nr   r   r   r   r  r  -  s    &G!GLJLr   r  c                       e Zd ZdZdZdZdZy)TV2DKIEr  TV2DKa  (?x)
                    https?://
                        (?:www\.)?
                        (?:
                            tvsyd|
                            tv2ostjylland|
                            tvmidtvest|
                            tv2fyn|
                            tv2east|
                            tv2lorry|
                            tv2nord|
                            tv2kosmopol
                        )\.dk/
                        (?:[^/?#]+/)*
                        (?P<id>[^/?\#&]+)
                    r   Nr   r   r   r   r  r  -  s    &GG }JLr   r  c                       e Zd ZdZdZdZdZy)TV2HuIEyt_dlp.extractor.tv2huz
tv2play.huz9https?://(?:www\.)?tv2play\.hu/(?!szalag/)(?P<id>[^#&?]+)rl   Nr   r   r   r   r  r  -  r  r   r  c                       e Zd ZdZdZdZdZy)TV2HuSeriesIEr  ztv2playseries.huz5https?://(?:www\.)?tv2play\.hu/szalag/(?P<id>[^#&?]+)rm   Nr   r   r   r   r  r  -  s    &G GJJLr   r  c                       e Zd ZdZdZdZdZy)TV2IEr	  TV2z@https?://(?:www\.)?tv2\.no/v(?:ideo)?\d*/(?:[^?#]+/)*(?P<id>\d+)rl   Nr   r   r   r   r  r  -  r0  r   r  c                        e Zd ZdZdZdZdZdZy)TV4IEzyt_dlp.extractor.tv4TV4a9  (?x)https?://(?:www\.)?
        (?:
            tv4\.se/(?:[^/]+)/klipp/(?:.*)-|
            tv4play\.se/
            (?:
                (?:program|barn)/(?:(?:[^/]+/){1,2}|(?:[^\?]+)\?video_id=)|
                iframe/video/|
                film/|
                sport/|
            )
        )(?P<id>[0-9]+)ztv4.se and tv4play.serl   Nr   r   r   r   r   r   -  s    $GG \J%GLr   r   c                       e Zd ZdZdZdZdZy)TV5MondePlusIEzyt_dlp.extractor.tv5mondeplusTV5MONDEz9https?://(?:www\.)?tv5monde\.com/tv/video/(?P<id>[^/?#]+)rl   Nr   r   r   r   r#  r#  -  s    -GGNJLr   r#  c                       e Zd ZdZdZy)TV5UnisBaseIEyt_dlp.extractor.tv5unisTV5UnisBaseNr   r   r   r   r&  r&  -  r   r   r&  c                        e Zd ZdZdZdZdZdZy)	TV5UnisIEr'  tv5uniszhttps?://(?:www\.)?tv5unis\.ca/videos/(?P<id>[^/?#]+)(?:/saisons/(?P<season_number>\d+)/episodes/(?P<episode_number>\d+))?/?(?:[?#&]|$)r	  rl   Nrw  r   r   r   r*  r*  -  s    (GG _JILr   r*  c                       e Zd ZdZdZdZdZy)TV5UnisVideoIEr'  ztv5unis:videoz9https?://(?:www\.)?tv5unis\.ca/videos/[^/?#]+/(?P<id>\d+)rl   Nr   r   r   r   r-  r-  -  r   r   r-  c                       e Zd ZdZdZdZdZy)TV8ItIEr  ztv8.itzEhttps?://(?:www\.)?tv8\.it/(?:show)?video/(?:[0-9a-z-]+-)?(?P<id>\d+)rl   Nr   r   r   r   r/  r/  -  s    &GG[JLr   r/  c                        e Zd ZdZdZdZdZdZy)TV8ItLiveIEr  ztv8.it:livez$https?://(?:www\.)?tv8\.it/streamingzTV8 Liverl   Nr   r   r   r   r1  r1  -  s    &GG9JGLr   r1  c                        e Zd ZdZdZdZdZdZy)TV8ItPlaylistIEr  ztv8.it:playlistz;https?://(?:www\.)?tv8\.it/(?!video)[^/#?]+/(?P<id>[^/#?]+)zTV8 Playlistrm   Nr   r   r   r   r3  r3  -  s    &GGPJGLr   r3  c                        e Zd ZdZdZdZdZdZy)TVAIEzyt_dlp.extractor.tvatvapluszHhttps?://(?:www\.)?tvaplus\.ca/(?:[^/?#]+/)*[\w-]+-(?P<id>\d+)(?:$|[#?])zTVA+rl   Nr   r   r   r   r5  r5  -  s    $GG_JGLr   r5  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )TVANouvellesArticleIEyt_dlp.extractor.tvanouvellesTVANouvellesArticlez?https?://(?:www\.)?tvanouvelles\.ca/(?:[^/]+/)+(?P<id>[^/?#&]+)rm   c                 P    t         j                  |      rdS t        |   |      S r   )TVANouvellesIEr4   r   r   s     r   r4   zTVANouvellesArticleIE.suitable-  s%    &//4uO%':J3:OOr   r   r   s   @r   r8  r8  -  s+    -G#GTJLP Pr   r8  c                       e Zd ZdZdZdZdZy)r<  r9  TVANouvellesz6https?://(?:www\.)?tvanouvelles\.ca/videos/(?P<id>\d+)rl   Nr   r   r   r   r<  r<  .      -GGLJLr   r<  c                       e Zd ZdZdZdZdZy)TVCArticleIEyt_dlp.extractor.tvc
TVCArticlez=https?://(?:www\.)?tvc\.ru/(?!video/iframe/id/)(?P<id>[^?#]+)rl   Nr   r   r   r   rA  rA  .  s    $GGRJLr   rA  c                       e Zd ZdZdZdZdZy)TVCIErB  TVCz6https?://(?:www\.)?tvc\.ru/video/iframe/id/(?P<id>\d+)rl   Nr   r   r   r   rE  rE  .  s    $GGLJLr   rE  c                       e Zd ZdZdZdZdZy)TVIPlayerIEzyt_dlp.extractor.tviplayer	TVIPlayerzHhttps?://tviplayer\.iol\.pt(/programa/[\w-]+/[a-f0-9]+)?/\w+/(?P<id>\w+)rl   Nr   r   r   r   rH  rH  .  s    *GG`JLr   rH  c                        e Zd ZdZdZdZdZdZy)TVN24IEzyt_dlp.extractor.tvn24TVN24zPhttps?://(?:(?!eurosport)[^/]+\.)?tvn24(?:bis)?\.pl/(?:[^/?#]+/)*(?P<id>[^/?#]+)Frl   Nr]  r   r   r   rK  rK   .  s    &GGeJHLr   rK  c                        e Zd ZdZdZdZdZdZy)TVNoeIEzyt_dlp.extractor.tvnoetvnoez1https?://(?:www\.)?tvnoe\.cz/porad/(?P<id>[\w-]+)zTelevize Noerl   Nr   r   r   r   rN  rN  (.  s    &GGGJGLr   rN  c                       e Zd ZdZdZy)TVOpenGrBaseIEyt_dlp.extractor.tvopengrTVOpenGrBaseNr   r   r   r   rQ  rQ  0.  r  r   rQ  c                        e Zd ZdZdZdZdZdZy)TVOpenGrEmbedIErR  ztvopengr:embedzD(?:https?:)?//(?:www\.|cdn\.|)(?:tvopen|ethnos).gr/embed/(?P<id>\d+)ztvopen.gr embedded videosrl   Nr   r   r   r   rU  rU  5.  s    )GGZJ)GLr   rU  c                        e Zd ZdZdZdZdZdZy)TVOpenGrWatchIErR  ztvopengr:watchzVhttps?://(?P<netloc>(?:www\.)?(?:tvopen|ethnos)\.gr)/watch/(?P<id>\d+)/(?P<slug>[^/]+)z tvopen.gr (and ethnos.gr) videosrl   Nr   r   r   r   rW  rW  =.  s    )GGlJ0GLr   rW  c                   $    e Zd ZdZdZdZdZdZdZy)
TVPEmbedIEyt_dlp.extractor.tvpz	tvp:embeda  (?x)
        (?:
            tvp:
            |https?://
                (?:[^/]+\.)?
                (?:tvp(?:parlament)?\.pl|tvp\.info|tvpworld\.com|swipeto\.pl)/
                (?:sess/
                        (?:tvplayer\.php\?.*?object_id
                        |TVPlayer2/(?:embed|api)\.php\?.*[Ii][Dd])
                    |shared/details\.php\?.*?object_id)
                =)
        (?P<id>\d+)
    Telewizja PolskarB  rl   Nr  r   r   r   rY  rY  E.  s#    $GG GJ GILr   rY  c                   $    e Zd ZdZdZdZdZdZdZy)TVPIErZ  tvpz{https?://(?:[^/]+\.)?(?:tvp(?:parlament)?\.(?:pl|info)|tvpworld\.com|swipeto\.pl)/(?:(?!\d+/)[^/]+/)*(?P<id>\d+)(?:[/?#]|$)r[  rB  r   Nr  r   r   r   r]  r]  N.  s#    $GG UJ GILr   r]  c                       e Zd ZdZdZdZy)TVPStreamIErZ  z
tvp:streamzf(?:tvpstream:|https?://(?:tvpstream\.vod|stream)\.tvp\.pl/(?:\?(?:[^&]+[&;])*channel_id=)?)(?P<id>\d*)Nr  r   r   r   r`  r`  W.  s    $GG~Jr   r`  c                       e Zd ZdZdZy)TVPVODBaseIErZ  
TVPVODBaseNr   r   r   r   rb  rb  ].  rh  r   rb  c                        e Zd ZdZdZdZdZdZy)TVPVODSeriesIErZ  ztvp:vod:serieszVhttps?://vod\.tvp\.pl/[a-z\d-]+,\d+/[a-z\d-]+-odcinki,(?P<id>\d+)(?:\?[^#]+)?(?:#.+)?$rB  rm   Nrw  r   r   r   re  re  b.  s    $GGpJILr   re  c                        e Zd ZdZdZdZdZdZy)TVPVODVideoIErZ  ztvp:vodzhttps?://vod\.tvp\.pl/(?P<category>[a-z\d-]+,\d+)/[a-z\d-]+(?<!-odcinki)(?:-odcinki,\d+/odcinek--?\d+,S-?\d+E-?\d+)?,(?P<id>\d+)/?(?:[?#]|$)r  rl   Nrw  r   r   r   rg  rg  j.  s    $GG jJILr   rg  c                       e Zd ZdZdZdZdZy)TVPlayHomeIEyt_dlp.extractor.tvplay
TVPlayHomez(?x)
            https?://
            (?:tv3?)?
            play\.(?:tv3|skaties)\.(?P<country>lv|lt|ee)/
            (?P<live>lives/)?
            [^?#&]+(?:episode|programme|clip)-(?P<id>\d+)
    rl   Nr   r   r   r   ri  ri  r.  s    'GG dJLr   ri  c                        e Zd ZdZdZdZdZdZy)TVPlayIErj  mtga  (?x)
                    (?:
                        mtg:|
                        https?://
                            (?:www\.)?
                            (?:
                                tvplay(?:\.skaties)?\.lv(?:/parraides)?|
                                (?:tv3play|play\.tv3)\.lt(?:/programos)?|
                                tv3play(?:\.tv3)?\.ee/sisu
                            )
                            /(?:[^/]+/)+
                        )
                        (?P<id>\d+)
                    zMTG servicesrl   Nr   r   r   r   rm  rm  y.  s    'GG tJGLr   rm  c                       e Zd ZdZdZdZdZy)TVerIEyt_dlp.extractor.tverTVerzbhttps?://(?:www\.)?tver\.jp/(?:(?P<type>lp|corner|series|episodes?|feature)/)+(?P<id>[a-zA-Z0-9]+)r   Nr   r   r   r   rp  rp  .  s    %GGwJLr   rp  c                       e Zd ZdZdZdZdZy)TVerOlympicIErq  ztver:olympicz[https?://(?:www\.)?tver\.jp/olympic/milanocortina2026/(?P<type>live|video)/play/(?P<id>\w+)rl   Nr   r   r   r   rt  rt  .  s    %GGqJLr   rt  c                        e Zd ZdZdZdZdZdZy)TagesschauIEzyt_dlp.extractor.tagesschau
Tagesschauzqhttps?://(?:www\.)?tagesschau\.de/(?P<path>[^/]+/(?:[^/]+/)*?(?P<id>[^/#?]+?(?:-?[0-9]+)?))(?:~_?[^/#?]+?)?\.htmlFr   Nr]  r   r   r   rv  rv  .  s    +GG HJHLr   rv  c                       e Zd ZdZdZy)TapTapBaseIEyt_dlp.extractor.taptap
TapTapBaseNr   r   r   r   ry  ry  .  rE  r   ry  c                       e Zd ZdZdZdZdZy)TapTapAppIErz  	TapTapAppz(https?://www\.taptap\.cn/app/(?P<id>\d+)rm   Nr   r   r   r   r}  r}  .  s    'GG>JLr   r}  c                       e Zd ZdZdZy)TapTapIntlBaseIErz  TapTapIntlBaseNr   r   r   r   r  r  .      'GGr   r  c                       e Zd ZdZdZdZdZy)TapTapAppIntlIErz  TapTapAppIntlz(https?://www\.taptap\.io/app/(?P<id>\d+)rm   Nr   r   r   r   r  r  .  s    'GG>JLr   r  c                       e Zd ZdZdZdZdZy)TapTapMomentIErz  TapTapMomentz+https?://www\.taptap\.cn/moment/(?P<id>\d+)rm   Nr   r   r   r   r  r  .  s    'GGAJLr   r  c                       e Zd ZdZdZdZdZy)TapTapPostIntlIErz  TapTapPostIntlz)https?://www\.taptap\.io/post/(?P<id>\d+)rm   Nr   r   r   r   r  r  .  s    'GG?JLr   r  c                       e Zd ZdZdZy)TarangPlusBaseIEyt_dlp.extractor.tarangplusTarangPlusBaseNr   r   r   r   r  r  .  r  r   r  c                       e Zd ZdZdZdZdZy)TarangPlusEpisodesIEr  ztarangplus:episodeszXhttps?://(?:www\.)?tarangplus\.in/(?P<type>[^#?/]+)/(?P<id>[^#?/]+)/episodes/?(?:$|[?#])rm   Nr   r   r   r   r  r  .  s    +G#GmJLr   r  c                       e Zd ZdZdZdZdZy)TarangPlusPlaylistIEr  ztarangplus:playlistzAhttps?://(?:www\.)?tarangplus\.in/(?P<id>[^#?/]+)/all/?(?:$|[?#])rm   Nr   r   r   r   r  r  .  s    +G#GVJLr   r  c                       e Zd ZdZdZdZdZy)TarangPlusVideoIEr  ztarangplus:videozXhttps?://(?:www\.)?tarangplus\.in/(?:movies|[^#?/]+/[^#?/]+)/(?!episodes)(?P<id>[^#?/]+)rl   Nr   r   r   r   r  r  .  s    +G GmJLr   r  c                        e Zd ZdZdZdZdZdZy)TassIEzyt_dlp.extractor.tassTassz6https?://(?:tass\.ru|itar-tass\.com)/[^/]+/(?P<id>\d+)Frl   Nr]  r   r   r   r  r  .  s    %GGLJHLr   r  c                       e Zd ZdZdZdZy)TeachableBaseIEyt_dlp.extractor.teachableTeachableBase	teachableNr{   r   r   r   r  r  .  rQ  r   r  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )TeachableCourseIEr  TeachableCoursea  (?x)
                        (?:
                            teachable:https?://(?P<site_t>[a-zA-Z0-9.-]+)|
                            https?://(?:www\.)?(?P<site>v1\.upskillcourses\.com|gns3\.teachable\.com|academyhacker\.com|stackskills\.com|market\.saleshacker\.com|learnability\.org|edurila\.com|courses\.workitdaily\.com)
                        )
                        /(?:courses|p)/(?:enrolled/)?(?P<id>[^/?#&]+)
                    r  rm   c                 P    t         j                  |      rdS t        |   |      S r   )TeachableIEr4   r   r   s     r   r4   zTeachableCourseIE.suitable.  r  r   rO  r   s   @r   r  r  .  s3    *GG cJ NLM Mr   r  c                   $    e Zd ZdZdZdZdZdZdZy)r  r  	Teachablea  (?x)
                    (?:
                        teachable:https?://(?P<site_t>[a-zA-Z0-9.-]+)|
                        https?://(?:www\.)?(?P<site>v1\.upskillcourses\.com|gns3\.teachable\.com|academyhacker\.com|stackskills\.com|market\.saleshacker\.com|learnability\.org|edurila\.com|courses\.workitdaily\.com)
                    )
                    /courses/[^/]+/lectures/(?P<id>\d+)
                    Fr  rl   Nr  r   r   r   r  r  .  s#    *GG FJH NLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)TeacherTubeIEyt_dlp.extractor.teachertubeteachertubez}https?://(?:www\.)?teachertube\.com/(viewVideo\.php\?video_id=|music\.php\?music_id=|video/(?:[\da-z-]+-)?|audio/)(?P<id>\d+)Fzteachertube.com videosrl   Nrl  r   r   r   r  r  .  s#    ,GG YJH&GLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)TeacherTubeUserIEr  zteachertube:user:collectionzVhttps?://(?:www\.)?teachertube\.com/(user/profile|collection)/(?P<user>[0-9a-zA-Z]+)/?Fz*teachertube.com user and collection videosrm   Nrl  r   r   r   r  r  /  s     ,G+GkJH:GLr   r  c                        e Zd ZdZdZdZdZdZy)TeachingChannelIEz yt_dlp.extractor.teachingchannelTeachingChannelz@https?://(?:www\.)?teachingchannel\.org/videos?/(?P<id>[^/?&#]+)Frl   Nr]  r   r   r   r  r  /  s    0GGUJHLr   r  c                        e Zd ZdZdZdZdZdZy)TeamTreeHouseIEzyt_dlp.extractor.teamtreehouseTeamTreeHousez;https?://(?:www\.)?teamtreehouse\.com/library/(?P<id>[^/]+)teamtreehouser   Nr   r   r   r   r  r  /  s    .GGPJ$NLr   r  c                       e Zd ZdZdZdZdZy)
TeamcocoIEr  Teamcocoz9https?://(?:www\.)?teamcoco\.com/(?P<id>([^/]+/)*[^/?#]+)rl   Nr   r   r   r   r  r  /  s    )GGNJLr   r  c                       e Zd ZdZdZdZdZy)TechTVMITIEr<  ztechtv.mit.eduz7https?://techtv\.mit\.edu/(?:videos|embeds)/(?P<id>\d+)rl   Nr   r   r   r   r  r  #/  s    $GGMJLr   r  c                       e Zd ZdZdZdZdZy)
TedEmbedIEyt_dlp.extractor.tedTedEmbedz"https?://embed(?:-ssl)?\.ted\.com/rl   Nr   r   r   r   r  r  */  s    $GG7JLr   r  c                       e Zd ZdZdZy)	TedBaseIEr  TedBaseNr   r   r   r   r  r  1/  rk  r   r  c                       e Zd ZdZdZdZdZy)TedPlaylistIEr  TedPlaylistzNhttps?://www\.ted\.com/(?:playlists(?:/\d+)?)(?:/lang/[^/#?]+)?/(?P<id>[\w-]+)rm   Nr   r   r   r   r  r  6/  s    $GGeJLr   r  c                       e Zd ZdZdZdZdZy)TedSeriesIEr  	TedSeriesz^https?://www\.ted\.com/(?:series)(?:/lang/[^/#?]+)?/(?P<id>[\w-]+)(?:#season_(?P<season>\d+))?rm   Nr   r   r   r   r  r  =/  s    $GGuJLr   r  c                       e Zd ZdZdZdZdZy)	TedTalkIEr  TedTalkzAhttps?://www\.ted\.com/(?:talks)(?:/lang/[^/#?]+)?/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  D/  s    $GGWJLr   r  c                       e Zd ZdZdZdZdZy)Tele13IEzyt_dlp.extractor.tele13Tele13z;https?://(?:www\.)?t13\.cl/videos(?:/[^/]+)+/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  K/  r~  r   r  c                       e Zd ZdZdZdZdZy)Tele5IEzyt_dlp.extractor.tele5Tele5z_https?://(?:www\.)?tele5\.de/(?P<parent_slug>[\w-]+)/(?P<slug_a>[\w-]+)(?:/(?P<slug_b>[\w-]+))?r   Nr   r   r   r   r  r  R/  s    &GGwJLr   r  c                       e Zd ZdZdZdZdZy)TeleBruxellesIEzyt_dlp.extractor.telebruxellesTeleBruxelleszGhttps?://(?:www\.)?(?:telebruxelles|bx1)\.be/(?:[^/]+/)*(?P<id>[^/#?]+)rl   Nr   r   r   r   r  r  Y/  s    .GG\JLr   r  c                        e Zd ZdZdZdZdZdZy)TeleMBIEzyt_dlp.extractor.telembTeleMBzEhttps?://(?:www\.)?telemb\.be/(?P<display_id>.+?)_d_(?P<id>\d+)\.htmlFrl   Nr]  r   r   r   r  r  `/  s    'GG\JHLr   r  c                       e Zd ZdZdZdZdZy)TeleQuebecEmissionIEyt_dlp.extractor.telequebecTeleQuebecEmissiona	  (?x)
                    https?://
                        (?:
                            [^/]+\.telequebec\.tv/emissions/|
                            (?:www\.)?telequebec\.tv/
                        )
                        (?P<id>[^?#&]+)
                    rl   Nr   r   r   r   r  r  h/  s    +G"G hJLr   r  c                       e Zd ZdZdZy)TeleQuebecBaseIEr  TeleQuebecBaseNr   r   r   r   r  r  o/  r  r   r  c                       e Zd ZdZdZdZdZy)TeleQuebecIEr  
TeleQuebecz(?x)
                    https?://
                        (?:
                            zonevideo\.telequebec\.tv/media|
                            coucou\.telequebec\.tv/videos
                        )/(?P<id>\d+)
                    rl   Nr   r   r   r   r  r  t/  s    +GG OJLr   r  c                       e Zd ZdZdZdZdZy)TeleQuebecLiveIEr  TeleQuebecLivez3https?://zonevideo\.telequebec\.tv/(?P<id>endirect)rl   Nr   r   r   r   r  r  {/  s    +GGHJLr   r  c                       e Zd ZdZdZdZdZy)TeleQuebecSquatIEr  TeleQuebecSquatz1https?://squat\.telequebec\.tv/videos/(?P<id>\d+)rl   Nr   r   r   r   r  r  /  s    +GGGJLr   r  c                       e Zd ZdZdZdZdZy)TeleQuebecVideoIEr  TeleQuebecVideoz;https?://video\.telequebec\.tv/player(?:-live)?/(?P<id>\d+)rl   Nr   r   r   r   r  r  /  s    +GGQJLr   r  c                        e Zd ZdZdZdZdZdZy)
TeleTaskIEzyt_dlp.extractor.teletaskTeleTaskzChttps?://(?:www\.)?tele-task\.de/archive/video/html5/(?P<id>[0-9]+)Frm   Nr]  r   r   r   r  r  /  s    )GGXJHLr   r  c                       e Zd ZdZdZdZdZy)TelecaribePlayIEzyt_dlp.extractor.telecaribeTelecaribePlayz6https?://(?:www\.)?play\.telecaribe\.co/(?P<id>[\w-]+)r   Nr   r   r   r   r  r  /  s    +GGMJLr   r  c                       e Zd ZdZdZy)TelecincoBaseIEyt_dlp.extractor.telecincoTelecincoBaseNr   r   r   r   r  r  /  r  r   r  c                        e Zd ZdZdZdZdZdZy)TelecincoIEr  	TelecincozZhttps?://(?:www\.)?(?:telecinco\.es|cuatro\.com|mediaset\.es)/(?:[^/]+/)+(?P<id>.+?)\.htmlz(telecinco.es, cuatro.com and mediaset.esr   Nr   r   r   r   r  r  /  s    *GGrJ8GLr   r  c                       e Zd ZdZdZdZdZy)TelegraafIEzyt_dlp.extractor.telegraaf	Telegraafz2https?://(?:www\.)?telegraaf\.nl/video/(?P<id>\d+)rl   Nr   r   r   r   r  r  /  r  r   r  c                       e Zd ZdZdZdZdZy)TelegramEmbedIEzyt_dlp.extractor.telegramztelegram:embedz0https?://t\.me/(?P<channel_id>[^/]+)/(?P<id>\d+)r   Nr   r   r   r   r  r  /  s    )GGEJLr   r  c                        e Zd ZdZdZdZdZdZy)TelemundoIEzyt_dlp.extractor.telemundo	TelemundozFhttps?:\/\/(?:www\.)?telemundo\.com\/.+?video\/[^\/]+(?P<id>tmvo\d{7})Frl   Nr]  r   r   r   r  r  /  s    *GGaJHLr   r  c                       e Zd ZdZdZdZdZy)TelewebionIEzyt_dlp.extractor.telewebion
TelewebionzGhttps?://(?:www\.)?telewebion\.ir/episode/(?P<id>(?:0x[a-fA-F\d]+|\d+))rl   Nr   r   r   r   r  r  /  s    +GG^JLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)	TenPlayIEyt_dlp.extractor.tenplay10playzMhttps?://(?:www\.)?10(?:play)?\.com\.au/(?:[^/?#]+/)+(?P<id>tpv\d{6}[a-z]{5})r	  rl   Nr  r   r   r   r  r  /  s     (GGdJNILr   r  c                       e Zd ZdZdZdZdZy)TenPlaySeasonIEr   z10play:seasonzbhttps?://(?:www\.)?10(?:play)?\.com\.au/(?P<show>[^/?#]+)/episodes/(?P<season>[^/?#]+)/?(?:$|[?#])rm   Nr   r   r   r   r  r  /      (GGxJLr   r  c                        e Zd ZdZdZdZdZdZy)
TennisTVIEzyt_dlp.extractor.tennistvTennisTVz:https?://(?:www\.)?tennistv\.com/videos/(?P<id>[-a-z0-9]+)tennistvrl   Nr   r   r   r   r  r  /  s    )GGOJNLr   r  c                       e Zd ZdZdZdZdZy)	TestURLIEzyt_dlp.extractor.testurlTestURLz6test(?:url)?:(?P<extractor>.*?)(?:_(?P<num>\d+|all))?$FNr,  r   r   r   r
  r
  /  s    (GGJJGr   r
  c                       e Zd ZdZdZy)FrontoBaseIEyt_dlp.extractor.frontro
FrontoBaseNr   r   r   r   r  r  /  s    (GGr   r  c                       e Zd ZdZdZy)FrontroGroupBaseIEr  FrontroGroupBaseNr   r   r   r   r  r  /  s    (G Gr   r  c                        e Zd ZdZdZdZdZdZy)TheChosenGroupIEyt_dlp.extractor.thechosenTheChosenGroupz<https?://(?:www\.)?watch\.thechosen\.tv/group/(?P<id>[0-9]+)Frm   Nr]  r   r   r   r  r  /  s    *GGRJHLr   r  c                       e Zd ZdZdZdZdZy)TheChosenIEr  	TheChosenzFhttps?://(?:www\.)?watch\.thechosen\.tv/(?:video|watch)/(?P<id>[0-9]+)rl   Nr   r   r   r   r  r  /  r  r   r  c                       e Zd ZdZdZdZdZy)TheGuardianPodcastIEyt_dlp.extractor.theguardianTheGuardianPodcastzPhttps?://(?:www\.)?theguardian\.com/\w+/audio/\d{4}/\w{3}/\d{1,2}/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  0  s    ,G"GjJLr   r  c                       e Zd ZdZdZdZdZy)TheGuardianPodcastPlaylistIEr  TheGuardianPodcastPlaylistzLhttps?://(?:www\.)?theguardian\.com/\w+/series/(?P<id>[\w-]+)(?:\?page=\d+)?rm   Nr   r   r   r   r  r  0  s    ,G*GeJLr   r  c                       e Zd ZdZdZdZdZy)TheHighWireIEzyt_dlp.extractor.thehighwireTheHighWirez>https?://(?:www\.)?thehighwire\.com/ark-videos/(?P<id>[^/?#]+)rl   Nr   r   r   r   r"  r"  0  r  r   r"  c                       e Zd ZdZdZdZdZy)TheInterceptIEzyt_dlp.extractor.theinterceptTheInterceptz8https?://theintercept\.com/fieldofvision/(?P<id>[^/?#]+)rl   Nr   r   r   r   r%  r%  0  r?  r   r%  c                       e Zd ZdZdZdZdZy)ThePlatformFeedIEr}  ThePlatformFeedhttps?://feed\.theplatform\.com/f/(?P<provider_id>[^/]+)/(?P<feed_id>[^?/]+)\?(?:[^&]+&)*(?P<filter>by(?:Gui|I)d=(?P<id>[^&]+))rl   Nr   r   r   r   r(  r(  0  s    ,GG VJLr   r(  c                       e Zd ZdZdZdZy)	CBSBaseIEr  CBSBaser*  Nr  r   r   r   r,  r,  $0  s    $GG VJr   r,  c                        e Zd ZdZdZdZdZdZy)CBSIEr  CBSz(?x)
        (?:
            cbs:|
            https?://(?:www\.)?(?:
                cbs\.com/(?:shows|movies)/(?:video|[^/]+/video|[^/]+)/|
                colbertlateshow\.com/(?:video|podcasts)/)
        )(?P<id>[\w-]+)Frl   Nr]  r   r   r   r/  r/  *0  s    $GG }JHLr   r/  c                       e Zd ZdZdZdZdZy)CorusIEzyt_dlp.extractor.corusCorusa  (?x)
                    https?://
                        (?:www\.)?
                        (?P<domain>
                            (?:
                                globaltv|
                                etcanada|
                                seriesplus|
                                wnetwork|
                                ytv
                            )\.com|
                            (?:
                                hgtv|
                                foodnetwork|
                                slice|
                                history|
                                showcase|
                                bigbrothercanada|
                                abcspark|
                                disney(?:channel|lachaine)
                            )\.ca
                        )
                        /(?:[^/]+/)*
                        (?:
                            video\.html\?.*?\bv=|
                            videos?/(?:[^/]+/)*(?:[a-z0-9-]+-)?
                        )
                        (?P<id>
                            [\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}|
                            (?:[A-Z]{4})?\d{12,20}
                        )
                    rl   Nr   r   r   r   r2  r2  20  s    &GG ^JLr   r2  c                       e Zd ZdZdZdZdZy)ThePlatformIEr}  ThePlatform(?x)
        (?:https?://(?:link|player)\.theplatform\.com/[sp]/(?P<provider_id>[^/]+)/
           (?:(?:(?:[^/]+/)+select/)?(?P<media>media/(?:guid/\d+/)?)?|(?P<config>(?:[^/\?]+/(?:swf|config)|onsite)/select/))?
         |theplatform:)(?P<id>[^/\?&]+)rl   Nr   r   r   r   r5  r5  90  s    ,GG YJLr   r5  c                       e Zd ZdZdZdZy)AENetworksBaseIEyt_dlp.extractor.aenetworksAENetworksBaser7  Nr  r   r   r   r9  r9  @0  s    +GG YJr   r9  c                       e Zd ZdZdZdZy)AENetworksListBaseIEr:  AENetworksListBaser7  Nr  r   r   r   r=  r=  F0  s    +G"G YJr   r=  c                       e Zd ZdZdZdZdZy)AENetworksCollectionIEr:  zaenetworks:collectionz(?x)https?://
        (?:(?:www|play|watch)\.)?
        (?P<domain>
            (?:history(?:vault)?|aetv|mylifetime|lifetimemovieclub)\.com|
            fyi\.tv
        )/(?:[^/]+/)*(?:list|collections)/(?P<id>[^/?#&]+)/?(?:[?#&]|$)rm   Nr   r   r   r   r@  r@  L0  s    +G%G EJLr   r@  c                   $    e Zd ZdZdZdZdZdZdZy)AENetworksIEr:  
aenetworksaO  (?x)https?://
        (?:(?:www|play|watch)\.)?
        (?P<domain>
            (?:history(?:vault)?|aetv|mylifetime|lifetimemovieclub)\.com|
            fyi\.tv
        )/(?P<id>
        shows/[^/?#]+/season-\d+/episode-\d+|
        (?P<type>movie|special)s/[^/?#]+(?P<extra>/[^/?#]+)?|
        (?:shows/[^/?#]+/)?videos/[^/?#]+
    )zGA+E Networks: A&E, Lifetime, History.com, FYI Network and History Vaultr  rl   Nr  r   r   r   rB  rB  S0  s#    +GG qJWGILr   rB  c                       e Zd ZdZdZdZdZy)AENetworksShowIEr:  zaenetworks:showz(?x)https?://
        (?:(?:www|play|watch)\.)?
        (?P<domain>
            (?:history(?:vault)?|aetv|mylifetime|lifetimemovieclub)\.com|
            fyi\.tv
        )/shows/(?P<id>[^/?#&]+)/?(?:[?#&]|$)rm   Nr   r   r   r   rE  rE  \0  s    +GG kJLr   rE  c                       e Zd ZdZdZdZdZy)BiographyIEr:  	Biographyz8https?://(?:www\.)?biography\.com/video/(?P<id>[^/?#&]+)rl   Nr   r   r   r   rG  rG  c0  s    +GGMJLr   rG  c                       e Zd ZdZdZdZy)HistoryPlayerIEr:  zhistory:playerzLhttps?://(?:www\.)?(?P<domain>(?:history|biography)\.com)/player/(?P<id>\d+)Nr  r   r   r   rJ  rJ  j0  s    +GGbJr   rJ  c                        e Zd ZdZdZdZdZdZy)HistoryTopicIEr:  zhistory:topiczChttps?://(?:www\.)?history\.com/topics/[^/]+/(?P<id>[\w+-]+?)-videozHistory.com Topicrl   Nr   r   r   r   rL  rL  p0  s    +GGYJ!GLr   rL  c                       e Zd ZdZdZdZdZy)	NBCNewsIEr  NBCNewszS(?x)https?://(?:www\.)?(?:nbcnews|today|msnbc)\.com/([^/]+/)*(?:.*-)?(?P<id>[^/?]+)rl   Nr   r   r   r   rN  rN  x0  s    $GGhJLr   rN  c                       e Zd ZdZdZdZdZy)	TheStarIEzyt_dlp.extractor.thestarTheStarz;https?://(?:www\.)?thestar\.com/(?:[^/]+/)*(?P<id>.+)\.htmlrl   Nr   r   r   r   rQ  rQ  0  s    (GGQJLr   rQ  c                       e Zd ZdZdZdZdZy)TheSunIEzyt_dlp.extractor.thesunTheSunz=https?://(?:www\.)?the-?sun(\.co\.uk|\.com)/[^/]+/(?P<id>\d+)rm   Nr   r   r   r   rT  rT  0  r  r   rT  c                       e Zd ZdZdZdZdZy)TheWeatherChannelIEz"yt_dlp.extractor.theweatherchannelTheWeatherChannelzshttps?://(?:www\.)?weather\.com(?P<asset_name>(?:/(?P<locale>[a-z]{2}-[A-Z]{2}))?/(?:[^/]+/)*video/(?P<id>[^/?#]+))rl   Nr   r   r   r   rW  rW  0  s    2G!G IJLr   rW  c                       e Zd ZdZdZdZy)TheaterComplexTownBaseIEr  TheaterComplexTownBasetheatercomplextownNr{   r   r   r   rZ  rZ  0  s    )G&G)Nr   rZ  c                        e Zd ZdZdZdZdZdZy)TheaterComplexTownPPVIEr  ztheatercomplextown:ppvzPhttps?://(?:www\.)?theater-complex\.town/(?:(?:en|ja)/)?(?:ppv|live)/(?P<id>\w+)r\  rl   Nr   r   r   r   r^  r^  0  s    )G&GfJ)NLr   r^  c                        e Zd ZdZdZdZdZdZy)TheaterComplexTownVODIEr  ztheatercomplextown:vodzShttps?://(?:www\.)?theater-complex\.town/(?:(?:en|ja)/)?videos/episodes/(?P<id>\w+)r\  rl   Nr   r   r   r   r`  r`  0  s    )G&GiJ)NLr   r`  c                       e Zd ZdZdZdZdZy)ThisAmericanLifeIEz!yt_dlp.extractor.thisamericanlifeThisAmericanLifezehttps?://(?:www\.)?thisamericanlife\.org/(?:radio-archives/episode/|play_full\.php\?play=)(?P<id>\d+)rl   Nr   r   r   r   rb  rb  0  s    1G G}JLr   rb  c                        e Zd ZdZdZdZdZdZy)ThisOldHouseIEzyt_dlp.extractor.thisoldhouseThisOldHousea  (?x)
            https?://(?:www\.)?thisoldhouse\.com/(?:
                watch|
                how-to|
                tv-episode|
                (?:[^/?#]+/)?\d+|
                (?P<ask>ask-this-old-house)
            )/(?P<id>(?(ask)season-\d+/episode-\d+|[^/?#]+))
        thisoldhouserl   Nr   r   r   r   re  re  0  s    -GG yJ#NLr   re  c                        e Zd ZdZdZdZdZdZy)	ThisVidIEyt_dlp.extractor.thisvidThisVidzLhttps?://(?:www\.)?thisvid\.com/(?P<type>videos|embed)/(?P<id>[A-Za-z0-9-]+)r   rl   Nrw  r   r   r   ri  ri  0  s    (GGaJILr   ri  c                       e Zd ZdZdZy)ThisVidPlaylistBaseIErj  ThisVidPlaylistBaseNr   r   r   r   rm  rm  0      (G#Gr   rm  c                       e Zd ZdZdZdZdZy)ThisVidMemberIErj  ThisVidMemberz)https?://thisvid\.com/members/(?P<id>\d+)rm   Nr   r   r   r   rq  rq  0  s    (GG>JLr   rq  c                        e Zd ZdZdZdZdZdZy)ThisVidPlaylistIErj  ThisVidPlaylistzLhttps?://thisvid\.com/playlist/(?P<id>\d+)/video/(?P<video_id>[A-Za-z0-9-]+)r   r   Nrw  r   r   r   rt  rt  0  s    (GGaJILr   rt  c                        e Zd ZdZdZdZdZdZy)ThreeQSDNIEzyt_dlp.extractor.threeqsdn3qsdnz\https?://playout\.3qsdn\.com/(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})z3Q SDNrl   Nr   r   r   r   rw  rw  0  s    *GGvJGLr   rw  c                       e Zd ZdZdZdZdZy)ThreeSpeakIEyt_dlp.extractor.threespeak
ThreeSpeakz?https?://(?:www\.)?3speak\.tv/watch\?v\=[^/]+/(?P<id>[^/$&#?]+)rl   Nr   r   r   r   rz  rz  0  s    +GGVJLr   rz  c                       e Zd ZdZdZdZdZy)ThreeSpeakUserIEr{  ThreeSpeakUserz4https?://(?:www\.)?3speak\.tv/user/(?P<id>[^/$&?#]+)rm   Nr   r   r   r   r~  r~  0  s    +GGIJLr   r~  c                       e Zd ZdZdZdZdZy)TikTokCollectionIEr  ztiktok:collectionzehttps?://www\.tiktok\.com/@(?P<user_id>[\w.-]+)/collection/(?P<title>[^/?#]+)-(?P<id>\d+)/?(?:[?#]|$)rm   Nr   r   r   r   r  r  0  s    'G!G|JLr   r  c                       e Zd ZdZdZy)TikTokBaseListIEr  TikTokBaseListNr   r   r   r   r  r  0  r  r   r  c                        e Zd ZdZdZdZdZdZy)TikTokEffectIEr  ztiktok:effectzDhttps?://(?:www\.)?tiktok\.com/sticker/[\w\.-]+-(?P<id>[\d]+)[/?#&]?Frm   Nr]  r   r   r   r  r  0  s    'GG\JHLr   r  c                       e Zd ZdZdZdZdZy)TikTokIEr  TikTokzMhttps?://www\.tiktok\.com/(?:embed|@(?P<user_id>[\w\.-]+)?/video)/(?P<id>\d+)rl   Nr   r   r   r   r  r  0  s    'GGeJLr   r  c                       e Zd ZdZdZdZdZy)TikTokLiveIEr  ztiktok:livez(?x)https?://(?:
        (?:www\.)?tiktok\.com/@(?P<uploader>[\w.-]+)/live|
        m\.tiktok\.com/share/live/(?P<id>\d+)
    )rl   Nr   r   r   r   r  r  1  s    'GG \JLr   r  c                        e Zd ZdZdZdZdZdZy)TikTokSoundIEr  ztiktok:soundzBhttps?://(?:www\.)?tiktok\.com/music/[\w\.-]+-(?P<id>[\d]+)[/?#&]?Frm   Nr]  r   r   r   r  r  1  s    'GGZJHLr   r  c                        e Zd ZdZdZdZdZdZy)TikTokTagIEr  z
tiktok:tagz3https?://(?:www\.)?tiktok\.com/tag/(?P<id>[^/?#&]+)Frm   Nr]  r   r   r   r  r  1  s    'GGHJHLr   r  c                       e Zd ZdZdZdZdZy)TikTokUserIEr  ztiktok:userzK(?:tiktokuser:|https?://(?:www\.)?tiktok\.com/@)(?P<id>[\w.-]+)/?(?:$|[#?])rm   Nr   r   r   r   r  r  1  s    'GGaJLr   r  c                       e Zd ZdZdZdZdZy)
TikTokVMIEr  z	vm.tiktokzFhttps?://(?:(?:vm|vt)\.tiktok\.com|(?:www\.)tiktok\.com/t)/(?P<id>\w+)rl   Nr   r   r   r   r  r  $1  s    'GG^JLr   r  c                       e Zd ZdZdZdZdZy)ToggleIEri  togglezc(?:https?://(?:(?:www\.)?mewatch|video\.toggle)\.sg/(?:en|zh)/(?:[^/]+/){2,}|toggle:)(?P<id>[0-9]+)rl   Nr   r   r   r   r  r  +1  s    'GGyJLr   r  c                       e Zd ZdZdZdZdZy)ToggoIEzyt_dlp.extractor.toggotoggozShttps?://(?:www\.)?toggo\.de/(?:toggolino/)?[^/?#]+/(?:folge|video)/(?P<id>[^/?#]+)rl   Nr   r   r   r   r  r  21  r
  r   r  c                       e Zd ZdZdZdZdZy)TokFMAuditionIEyt_dlp.extractor.agoraztokfm:auditionzE(?:https?://audycje\.tokfm\.pl/audycja/|tokfm:audition:)(?P<id>\d+),?rm   Nr   r   r   r   r  r  91  s    &GG[JLr   r  c                       e Zd ZdZdZdZdZy)TokFMPodcastIEr  ztokfm:podcastzD(?:https?://audycje\.tokfm\.pl/podcast/|tokfm:podcast:)(?P<id>\d+),?rl   Nr   r   r   r   r  r  @1  s    &GGZJLr   r  c                       e Zd ZdZdZdZdZy)ToonGogglesIEzyt_dlp.extractor.toongogglesToonGoggleszbhttps?://(?:www\.)?toongoggles\.com/shows/(?P<show_id>\d+)(?:/[^/]+/episodes/(?P<episode_id>\d+))?r   Nr   r   r   r   r  r  G1  s    ,GGyJLr   r  c                        e Zd ZdZdZdZdZdZy)TouTvIEzyt_dlp.extractor.toutvztou.tvzChttps?://ici\.tou\.tv/(?P<id>[a-zA-Z0-9_-]+(?:/S[0-9]+[EC][0-9]+)?)toutvrl   Nr   r   r   r   r  r  N1  s    &GGXJNLr   r  c                        e Zd ZdZdZdZdZdZy)	ToutiaoIEzyt_dlp.extractor.toutiaotoutiaoz8https?://www\.toutiao\.com/video/(?P<id>\d+)/?(?:[?#]|$)u   今日头条rl   Nr   r   r   r   r  r  V1  s    (GGNJGLr   r  c                   (    e Zd ZdZdZdZdZdZdZdZ	y)		ToypicsIEyt_dlp.extractor.toypicsToypicsz1https?://videos\.toypics\.net/view/(?P<id>[0-9]+)FzToypics videor   rl   N)
r   r   r   r$   ra   r=   rE   r[   rf   ro   r   r   r   r  r  ^1  s%    (GGFJHGILr   r  c                   $    e Zd ZdZdZdZdZdZdZy)ToypicsUserIEr  ToypicsUserz6https?://videos\.toypics\.net/(?!view)(?P<id>[^/?#&]+)FzToypics user profilerm   Nrl  r   r   r   r  r  h1  s     (GGKJH$GLr   r  c                       e Zd ZdZdZdZdZy)TravelChannelIEr  TravelChannelzChttps?://(?:watch\.)?travelchannel\.com/video/(?P<id>[^/]+/[^/?#]+)rl   Nr   r   r   r   r  r  q1  s    &GGXJLr   r  c                       e Zd ZdZdZdZdZy)TrtCocukVideoIEzyt_dlp.extractor.trtcocukTrtCocukVideoz4https?://www\.trtcocuk\.net\.tr/video/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  x1  r  r   r  c                       e Zd ZdZdZdZdZy)
TrtWorldIEzyt_dlp.extractor.trtworldTrtWorldz;https?://www\.trtworld\.com/video/[\w-]+/[\w-]+-(?P<id>\d+)rl   Nr   r   r   r   r  r  1  s    )GGSJLr   r  c                       e Zd ZdZdZdZdZy)	TruNewsIEzyt_dlp.extractor.trunewsTruNewsz7https?://(?:www\.)?trunews\.com/stream/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r  1  s    (GGLJLr   r  c                        e Zd ZdZdZdZdZdZy)TrueIDIEzyt_dlp.extractor.trueidTrueIDz^https?://(?P<domain>vn\.trueid\.net|trueid\.(?:id|ph))/(?:movie|series/[^/]+)/(?P<id>[^/?#&]+)r  rl   Nrw  r   r   r   r  r  1  s    'GGtJILr   r  c                       e Zd ZdZdZdZdZy)TruthIEzyt_dlp.extractor.truthTruthz9https?://truthsocial\.com/@[^/?#]+(?:/posts)?/(?P<id>\d+)rl   Nr   r   r   r   r  r  1  s    &GGNJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)Tube8IEzyt_dlp.extractor.tube8Tube8zJhttps?://(?:www\.)?tube8\.com/(?:[^/]+/)+(?P<display_id>[^/]+)/(?P<id>\d+)Fr   rl   Nr  r   r   r   r  r  1  s     &GG`JHILr   r  c                       e Zd ZdZdZdZy)TubeTuGrazBaseIEyt_dlp.extractor.tubetugrazTubeTuGrazBase
tubetugrazNr{   r   r   r   r  r  1  rf  r   r  c                   $    e Zd ZdZdZdZdZdZdZy)TubeTuGrazIEr  
TubeTuGrazz(?x)
        https?://tube\.tugraz\.at/(?:
            paella/ui/watch\.html\?(?:[^#]*&)?id=|
            portal/watch/
        )(?P<id>[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12})
    ztube.tugraz.atr  rl   Nr   r   r   r   r  r  1  s#    +GG _JG!NLr   r  c                        e Zd ZdZdZdZdZdZy)TubeTuGrazSeriesIEr  TubeTuGrazSeriesz(?x)
        https?://tube\.tugraz\.at/paella/ui/browse\.html\?series=
        (?P<id>[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12})
    r  rm   Nr   r   r   r   r  r  1  s    +G G kJ!NLr   r  c                        e Zd ZdZdZdZdZdZy)TubiTvIEyt_dlp.extractor.tubitvtubitvzahttps?://(?:www\.)?tubitv\.com/(?:[a-z]{2}-[a-z]{2}/)?(?P<type>video|movies|tv-shows)/(?P<id>\d+)rl   Nr   r   r   r   r  r  1  s    'GGwJNLr   r  c                       e Zd ZdZdZdZdZy)TubiTvShowIEr  ztubitv:seriesz\https?://(?:www\.)?tubitv\.com/series/\d+/(?P<show_name>[^/?#]+)(?:/season-(?P<season>\d+))?rm   Nr   r   r   r   r  r  1  s    'GGsJLr   r  c                        e Zd ZdZdZdZdZdZy)TumblrIEzyt_dlp.extractor.tumblrTumblrzvhttps?://(?P<blog_name_1>[^/?#&]+)\.tumblr\.com/(?:post|video|(?P<blog_name_2>[a-zA-Z\d-]+))/(?P<id>[0-9]+)(?:$|[/?#])tumblrr   Nr   r   r   r   r  r  1  s    'GG MJNLr   r  c                       e Zd ZdZdZy)TuneInBaseIEyt_dlp.extractor.tunein
TuneInBaseNr   r   r   r   r  r  1  rE  r   r  c                       e Zd ZdZdZdZdZy)TuneInEmbedIEr  ztunein:embedz1https?://tunein\.com/embed/player/(?P<id>[^/?#]+)r   Nr   r   r   r   r  r  1  s    'GGEJLr   r  c                       e Zd ZdZdZdZdZy)TuneInPodcastEpisodeIEr  ztunein:podcastzhhttps?://tunein\.com/podcasts(?:/[^/?#]+){1,2}(?P<series_id>p\d+)/?\?(?:[^#]+&)?(?i:topicid)=(?P<id>\d+)rl   Nr   r   r   r   r  r  1  s    'GGJLr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )TuneInPodcastIEr  ztunein:podcast:programz:https?://tunein\.com/podcasts(?:/[^/?#]+){1,2}(?P<id>p\d+)rm   c                 P    t         j                  |      rdS t        |   |      S r   )r  r4   r   r   s     r   r4   zTuneInPodcastIE.suitable1  s&    .77<uW%'BRSVBWWr   r   r   s   @r   r  r  1  s+    'G&GOJLX Xr   r  c                        e Zd ZdZdZdZdZdZy)TuneInShortenerIEr  ztunein:shortenerz https?://tun\.in/(?P<id>[^/?#]+)Fr   Nr   r   r   r   r  r  1  s    'G G4JGLr   r  c                       e Zd ZdZdZdZdZy)TuneInStationIEr  ztunein:stationz.https?://tunein\.com/radio/[^/?#]+(?P<id>s\d+)rl   Nr   r   r   r   r  r  1  s    'GGCJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)TvigleIEzyt_dlp.extractor.tvigletviglezhhttps?://(?:www\.)?(?:tvigle\.ru/(?:[^/]+/)+(?P<display_id>[^/]+)/$|cloud\.tvigle\.ru/video/(?P<id>\d+))u1   Интернет-телевидение Tvigle.rurB  rl   Nr  r   r   r   r  r   2  s#    'GG AJAGILr   r  c                       e Zd ZdZdZdZdZy)TvoIEzyt_dlp.extractor.tvoTVOzChttps?://(?:www\.)?tvo\.org/video(?:/documentaries)?/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  	2  s    $GGYJLr   r  c                        e Zd ZdZdZddgZdZy)TvwIEyt_dlp.extractor.tvwtvwz1https?://(?:www\.)?tvw\.org/video/(?P<id>[^/?#]+)zChttps?://(?:www\.)?tvw\.org/watch/?\?(?:[^#]+&)?eventID=(?P<id>\d+)rl   Nr   r   r   r   r  r  2  s#    $GGG  JS  TJLr   r  c                       e Zd ZdZdZdZdZy)	TvwNewsIEr  ztvw:newsz7https?://(?:www\.)?tvw\.org/\d{4}/\d{2}/(?P<id>[^/?#]+)rm   Nr   r   r   r   r  r  2  s    $GGNJLr   r  c                       e Zd ZdZdZdZdZy)TvwTvChannelsIEr  ztvw:tvchannelsz6https?://(?:www\.)?tvw\.org/tvchannels/(?P<id>[^/?#]+)rl   Nr   r   r   r   r  r  2  s    $GGKJLr   r  c                       e Zd ZdZdZdZdZy)
TweakersIEzyt_dlp.extractor.tweakersTweakersz(https?://tweakers\.net/video/(?P<id>\d+)rl   Nr   r   r   r   r  r  %2  s    )GG=JLr   r  c                        e Zd ZdZdZdZdZdZy)TwentyFourSevenSportsIEr  	247sportszAhttps?://(?:www\.)?247sports\.com/Video/(?:[^/?#&]+-)?(?P<id>\d+)Frl   Nr]  r   r   r   r  r  ,2  s    *GGWJHLr   r  c                        e Zd ZdZdZdZdZdZy)TwentyMinutenIEzyt_dlp.extractor.twentymin20mina9  (?x)
                    https?://
                        (?:www\.)?20min\.ch/
                        (?:
                            videotv/*\?.*?\bvid=|
                            videoplayer/videoplayer\.html\?.*?\bvideoId@
                        )
                        (?P<id>\d+)
                    Frl   Nr]  r   r   r   r  r  42  s    *GG ]JHLr   r  c                       e Zd ZdZdZdZdZy)TwentyThreeVideoIEz!yt_dlp.extractor.twentythreevideo23videozhttps?://(?P<domain>[^.]+\.(?:twentythree\.net|23video\.com|filmweb\.no))/v\.ihtml/player\.html\?(?P<query>.*?\bphoto(?:_|%5f)id=(?P<id>\d+).*)rl   Nr   r   r   r   r   r   <2  s    1GG lJLr   r   c                       e Zd ZdZdZdZdZy)TwitCastingIEyt_dlp.extractor.twitcastingTwitCastingz^https?://(?:[^/?#]+\.)?twitcasting\.tv/(?P<uploader_id>[^/?#]+)/(?:movie|twplayer)/(?P<id>\d+)rl   Nr   r   r   r   r  r  C2  s    ,GGtJLr   r  c                       e Zd ZdZdZdZdZy)TwitCastingLiveIEr  TwitCastingLivezBhttps?://(?:[^/?#]+\.)?twitcasting\.tv/(?P<id>[^/?#]+)/?(?:[#?]|$)rl   Nr   r   r   r   r  r  J2  s    ,GGWJLr   r  c                       e Zd ZdZdZdZdZy)TwitCastingUserIEr  TwitCastingUserzShttps?://(?:[^/?#]+\.)?twitcasting\.tv/(?P<id>[^/?#]+)/(?:show|archive)/?(?:[#?]|$)rm   Nr   r   r   r   r
  r
  Q2  s    ,GGhJLr   r
  c                       e Zd ZdZdZdZy)TwitchBaseIEyt_dlp.extractor.twitch
TwitchBasetwitchNr{   r   r   r   r  r  X2  r  r   r  c                        e Zd ZdZdZdZdZdZy)TwitchClipsIEr  ztwitch:clipsa2  (?x)
                    https?://
                        (?:
                            clips\.twitch\.tv/(?:embed\?.*?\bclip=|(?:[^/]+/)*)|
                            (?:(?:www|go|m)\.)?twitch\.tv/(?:[^/]+/)?clip/
                        )
                        (?P<id>[^/?#&]+)
                    r  rl   Nr   r   r   r   r  r  ^2  s    'GG SJNLr   r  c                        e Zd ZdZdZdZdZdZy)TwitchCollectionIEr  ztwitch:collectionz@https?://(?:(?:www|go|m)\.)?twitch\.tv/collections/(?P<id>[^/]+)r  rm   Nr   r   r   r   r  r  f2  s    'G!GUJNLr   r  c                       e Zd ZdZdZdZy)TwitchPlaylistBaseIEr  TwitchPlaylistBaser  Nr{   r   r   r   r  r  n2  s    'G"GNr   r  c                       e Zd ZdZdZdZy)TwitchVideosBaseIEr  TwitchVideosBaser  Nr{   r   r   r   r  r  t2  s    'G GNr   r  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )TwitchStreamIEr  ztwitch:streama  (?x)
                    https?://
                        (?:
                            (?:(?:www|go|m)\.)?twitch\.tv/|
                            player\.twitch\.tv/\?.*?\bchannel=
                        )
                        (?P<id>[^/#?]+)
                    r  rl   c           	          t        fdt        t        t        t        t
        t        fD              rdS t        | !        S )Nc              3   @   K   | ]  }|j                          y wr'   r  r  s     r   r;   z*TwitchStreamIE.suitable.<locals>.<genexpr>2  s      $Br{{3' $r<   F)	r   TwitchVodIEr  TwitchVideosIETwitchVideosClipsIETwitchVideosCollectionsIEr  r   r4   r   s    `r   r4   zTwitchStreamIE.suitable2  sL      $&"'-!3# $ $  	, W%c*	,r   rO  r   s   @r   r  r  z2  s1    'GG qJNL	, 	,r   r  c                        e Zd ZdZdZdZdZdZy)r!  r  ztwitch:videos:clipsz[https?://(?:(?:www|go|m)\.)?twitch\.tv/(?P<id>[^/]+)/(?:clips|videos/*?\?.*?\bfilter=clips)r  rm   Nr   r   r   r   r!  r!  2  s    'G#GrJNLr   r!  c                        e Zd ZdZdZdZdZdZy)r"  r  ztwitch:videos:collectionszWhttps?://(?:(?:www|go|m)\.)?twitch\.tv/(?P<id>[^/]+)/videos/*?\?.*?\bfilter=collectionsr  rm   Nr   r   r   r   r"  r"  2  s    'G)GnJNLr   r"  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )r   r  ztwitch:videoszGhttps?://(?:(?:www|go|m)\.)?twitch\.tv/(?P<id>[^/]+)/(?:videos|profile)r  rm   c                 d    t        fdt        t        fD              rdS t        |         S )Nc              3   @   K   | ]  }|j                          y wr'   r  r  s     r   r;   z*TwitchVideosIE.suitable.<locals>.<genexpr>2  s      0Br{{3' 0r<   F)r   r!  r"  r   r4   r   s    `r   r4   zTwitchVideosIE.suitable2  s@      0'-3/ 0 0  	, W%c*		,r   rO  r   s   @r   r   r   2  s.    'GG\JNL, ,r   r   c                        e Zd ZdZdZdZdZdZy)r  r  z
twitch:vodal  (?x)
                    https?://
                        (?:
                            (?:(?:www|go|m)\.)?twitch\.tv/(?:[^/]+/v(?:ideo)?|videos)/|
                            player\.twitch\.tv/\?.*?\bvideo=v?|
                            www\.twitch\.tv/[^/]+/schedule\?vodID=
                        )
                        (?P<id>\d+)
                    r  rl   Nr   r   r   r   r  r  2  s    'GG RJNLr   r  c                       e Zd ZdZdZy)TwitterBaseIEyt_dlp.extractor.twitterTwitterBaseNr   r   r   r   r*  r*  2  r   r   r*  c                       e Zd ZdZdZdZdZy)TwitterAmplifyIEr+  ztwitter:amplifyz1https?://amp\.twimg\.com/v/(?P<id>[0-9a-f\-]{36})rl   Nr   r   r   r   r.  r.  2  s    (GGGJLr   r.  c                       e Zd ZdZdZdZdZy)TwitterBroadcastIEr+  ztwitter:broadcastzhttps?://(?:(?:www|m(?:obile)?)\.)?(?:(?:twitter|x)\.com|twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid\.onion)/i/(?P<type>broadcasts|events)/(?P<id>\w+)rl   Nr   r   r   r   r0  r0  2  s    (G!G {JLr   r0  c                       e Zd ZdZdZdZdZy)TwitterCardIEr+  ztwitter:cardzhttps?://(?:(?:www|m(?:obile)?)\.)?(?:(?:twitter|x)\.com|twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid\.onion)/i/(?:cards/tfw/v1|videos(?:/tweet)?)/(?P<id>\d+)rl   Nr   r   r   r   r2  r2  2  s    (GG BJLr   r2  c                        e Zd ZdZdZdZdZdZy)	TwitterIEr+  twitterzhttps?://(?:(?:www|m(?:obile)?)\.)?(?:(?:twitter|x)\.com|twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid\.onion)/(?:(?:i/web|[^/]+)/status|statuses)/(?P<id>\d+)(?:/(?:video|photo)/(?P<index>\d+))?r   r   Nrw  r   r   r   r4  r4  2  s    (GG fJILr   r4  c                       e Zd ZdZdZdZy)TwitterShortenerIEr+  ztwitter:shortenerz1https?://t\.co/(?P<id>[^?#]+)|tco:(?P<eid>[^?#]+)Nr  r   r   r   r7  r7  2  s    (G!GEJr   r7  c                       e Zd ZdZdZdZdZy)TwitterSpacesIEr+  ztwitter:spaceszhttps?://(?:(?:www|m(?:obile)?)\.)?(?:(?:twitter|x)\.com|twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid\.onion)/i/spaces/(?P<id>[0-9a-zA-Z]{13})rl   Nr   r   r   r   r9  r9  2  s    (GG qJLr   r9  c                        e Zd ZdZdZdZdZdZy)TxxxIEr  TxxxaY  (?x)
        https?://(?:www\.)?(?P<host>hclips\.com|hdzog\.com|hdzog\.tube|hotmovs\.com|hotmovs\.tube|inporn\.com|privatehomeclips\.com|tubepornclassic\.com|txxx\.com|txxx\.tube|upornia\.com|upornia\.tube|vjav\.com|vjav\.tube|vxxx\.com|voyeurhit\.com|voyeurhit\.tube)/
        (?:videos?[/-]|embed/)(?P<id>\d+)(?:/(?P<display_id>[^/?#]+))?
    r   rl   Nrw  r   r   r   r;  r;  2  s    %GG CJILr   r;  c                        e Zd ZdZdZdZdZdZy)
UDNEmbedIEzyt_dlp.extractor.udnUDNEmbedz8https?://video\.udn\.com/(?:embed|play)/news/(?P<id>\d+)u   聯合影音rl   Nr   r   r   r   r>  r>  2  s    $GGNJGLr   r>  c                       e Zd ZdZdZy)ImgGamingBaseIEzyt_dlp.extractor.imggamingImgGamingBaseNr   r   r   r   rA  rA  2  r  r   rA  c                       e Zd ZdZdZdZdZy)UFCTVIEzyt_dlp.extractor.ufctvUFCTVzhttps?://(?P<domain>(?:(?:app|www)\.)?(?:ufc\.tv|(?:ufc)?fightpass\.com)|ufcfightpass\.img(?:dge|gaming)\.com)/(?P<type>live|playlist|video)/(?P<id>\d+)(?:\?.*?\bplaylistId=(?P<playlist_id>\d+))?ufctvNrS  r   r   r   rD  rD  2  s    &GG `JNr   rD  c                        e Zd ZdZdZdZdZdZy)UMGDeIEzyt_dlp.extractor.umgzumg:dezShttps?://(?:www\.)?universal-music\.de/[^/?#]+/videos/(?P<slug>[^/?#]+-(?P<id>\d+))zUniversal Music Deutschlandrl   Nr   r   r   r   rH  rH  3  s    $GGiJ+GLr   rH  c                       e Zd ZdZdZdZdZy)UOLIEzyt_dlp.extractor.uolz
uol.com.brzhttps?://(?:.+?\.)?uol\.com\.br/.*?(?:(?:mediaId|v)=|view/(?:[a-z0-9]+/)?|video(?:=|/(?:\d{4}/\d{2}/\d{2}/)?))(?P<id>\d+|[\w-]+-[A-Z0-9]+)rl   Nr   r   r   r   rJ  rJ  	3  s    $GG fJLr   rJ  c                        e Zd ZdZdZdZdZdZy)URPlayIEzyt_dlp.extractor.urplayURPlayzLhttps?://(?:www\.)?ur(?:play|skola)\.se/(?:program|Produkter)/(?P<id>[0-9]+)r	  rl   Nrw  r   r   r   rL  rL  3  s    'GGaJILr   rL  c                       e Zd ZdZdZdZdZy)USANetworkIEzyt_dlp.extractor.usanetwork
USANetworkzbhttps?(?P<permalink>://(?:www\.)?usanetwork\.com/(?:[^/]+/videos?|movies?)/(?:[^/]+/)?(?P<id>\d+))rl   Nr   r   r   r   rO  rO  3  s    +GGxJLr   rO  c                       e Zd ZdZdZdZdZy)
USATodayIEzyt_dlp.extractor.usatodayUSATodayz;https?://(?:www\.)?usatoday\.com/(?:[^/]+/)*(?P<id>[^?/#]+)rl   Nr   r   r   r   rR  rR  3  s    )GGPJLr   rR  c                        e Zd ZdZdZdZdZdZy)UdemyIEyt_dlp.extractor.udemyudemya]  (?x)
                    https?://
                        (?:[^/]+\.)?udemy\.com/
                        (?:
                            [^#]+\#/lecture/|
                            lecture/view/?\?lectureId=|
                            [^/]+/learn/v4/t/lecture/
                        )
                        (?P<id>\d+)
                    rl   Nr   r   r   r   rU  rU  &3  s    &GG JNLr   rU  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )UdemyCourseIErV  zudemy:coursez0https?://(?:[^/]+\.)?udemy\.com/(?P<id>[^/?#&]+)rW  c                 P    t         j                  |      rdS t        |   |      S r   )rU  r4   r   r   s     r   r4   zUdemyCourseIE.suitable43  r   r   r  r   s   @r   rY  rY  .3  s+    &GGEJNI Ir   rY  c                        e Zd ZdZdZdZdZdZy)
UkColumnIEzyt_dlp.extractor.ukcolumnukcolumnz](?i)https?://(?:www\.)?ukcolumn\.org(/index\.php)?/(?:video|ukcolumn-news)/(?P<id>[-a-z0-9]+)Frl   Nr]  r   r   r   r\  r\  93  s    )GGsJHLr   r\  c                       e Zd ZdZdZdZdZy)UlizaPlayerIEyt_dlp.extractor.ulizaUlizaPlayerzRhttps://player-api\.p\.uliza\.jp/v1/players/[^?#]+\?(?:[^#]*&)?name=(?P<id>[^#&]+)rl   Nr   r   r   r   r_  r_  A3  s    &GGiJLr   r_  c                        e Zd ZdZdZdZdZdZy)UlizaPortalIEr`  UlizaPortalzYhttps?://(?:www\.)?ulizaportal\.jp/pages/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})zulizaportal.jprl   Nr   r   r   r   rc  rc  H3  s    &GGqJGLr   rc  c                       e Zd ZdZdZdZdZy)UnicodeBOMIErD  
UnicodeBOMz(?P<bom>\ufeff)(?P<id>.*)$FNr,  r   r   r   rf  rf  P3  s    /GG.JGr   rf  c                       e Zd ZdZdZdZdZy)	UnistraIEzyt_dlp.extractor.unistraUnistrazEhttps?://utv\.unistra\.fr/(?:index|video)\.php\?id_video\=(?P<id>\d+)rl   Nr   r   r   r   ri  ri  W3  rI  r   ri  c                       e Zd ZdZdZdZdZy)UnitedNationsWebTvIEzyt_dlp.extractor.unitednationsUnitedNationsWebTvzChttps?://webtv\.un\.org/(?:ar|zh|en|fr|ru|es)/asset/\w+/(?P<id>\w+)rl   Nr   r   r   r   rl  rl  ^3  s    .G"GZJLr   rl  c                        e Zd ZdZdZdZdZdZy)UnityIEzyt_dlp.extractor.unityUnityzKhttps?://(?:www\.)?unity3d\.com/learn/tutorials/(?:[^/]+/)*(?P<id>[^/?#&]+)Frl   Nr]  r   r   r   ro  ro  e3  s    &GG`JHLr   ro  c                       e Zd ZdZdZy)UplynkBaseIEyt_dlp.extractor.uplynk
UplynkBaseNr   r   r   r   rr  rr  m3  rE  r   rr  c                       e Zd ZdZdZdZdZy)UplynkIErs  uplynkz(?x)
        https?://[\w-]+\.uplynk\.com/(?P<path>
            ext/[0-9a-f]{32}/(?P<external_id>[^/?&]+)|
            (?P<id>[0-9a-f]{32})
        )\.(?:m3u8|json)
        (?:.*?\bpbs=(?P<session_id>[^&]+))?rl   Nr   r   r   r   rv  rv  r3  s    'GG nJLr   rv  c                       e Zd ZdZdZdZy)UplynkPreplayIErs  zuplynk:preplayzuhttps?://[\w-]+\.uplynk\.com/preplay2?/(?P<path>ext/[0-9a-f]{32}/(?P<external_id>[^/?&]+)|(?P<id>[0-9a-f]{32}))\.jsonNr  r   r   r   ry  ry  y3  s    'GG MJr   ry  c                   $    e Zd ZdZdZdZdZdZdZy)UrortIEzyt_dlp.extractor.urortUrortz7https?://(?:www\.)?urort\.p3\.no/#!/Band/(?P<id>[^/]+)$Fu   NRK P3 Urørtrl   Nrl  r   r   r   r{  r{  3  s     &GGMJHGLr   r{  c                       e Zd ZdZdZdZdZy)UstreamChannelIEyt_dlp.extractor.ustreamzustream:channelz3https?://(?:www\.)?ustream\.tv/channel/(?P<slug>.+)rm   Nr   r   r   r   r~  r~  3  s    (GGHJLr   r~  c                       e Zd ZdZdZdZdZy)	UstreamIEr  ustreamzfhttps?://(?:www\.)?(?:ustream\.tv|video\.ibm\.com)/(?P<type>recorded|embed|embed/recorded)/(?P<id>\d+)r   Nr   r   r   r   r  r  3  s    (GG~JLr   r  c                       e Zd ZdZdZdZdZy)UstudioEmbedIEyt_dlp.extractor.ustudiozustudio:embedzLhttps?://(?:(?:app|embed)\.)?ustudio\.com/embed/(?P<uid>[^/]+)/(?P<id>[^/]+)rl   Nr   r   r   r   r  r  3  s    (GGaJLr   r  c                       e Zd ZdZdZdZdZy)	UstudioIEr  ustudiozShttps?://(?:(?:www|v1)\.)?ustudio\.com/video/(?P<id>[^/]+)/(?P<display_id>[^/?#&]+)rl   Nr   r   r   r   r  r  3  s    (GGhJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)VGTVIEro  VGTVa  (?x)
                    (?:https?://(?:www\.)?
                    (?P<host>
                        tv.vg.no|vgtv.no|bt.no/tv|aftenbladet.no/tv|fvn.no/fvntv|aftenposten.no/webtv|ap.vgtv.no/webtv|tv.aftonbladet.se|tv.aftonbladet.se/abtv|www.aftonbladet.se/tv
                    )
                    /?
                    (?:
                        (?:\#!/)?(?:video|live)/|
                        embed?.*id=|
                        a(?:rticles)?/
                    )|
                    (?P<appname>
                        vgtv|bttv|satv|fvntv|aptv|abtv
                    ):)
                    (?P<id>\d+)
                    Fz,VGTV, BTTV, FTV, Aftenposten and Aftonbladetrl   Nrl  r   r   r   r  r  3  s#    %GG h
JH<GLr   r  c                       e Zd ZdZdZdZdZy)VH1IEzyt_dlp.extractor.vh1zvh1.comzGhttps?://(?:www\.)?vh1\.com/(?:video-clips|episodes)/(?P<id>[\da-z]{6})rl   Nr   r   r   r   r  r  3  s    $GG]JLr   r  c                       e Zd ZdZdZdZy)VimeoBaseInfoExtractoryt_dlp.extractor.vimeoVimeoBaseInfoExtractvimeoNr{   r   r   r   r  r  3  s    &G$GNr   r  c                       e Zd ZdZdZdZdZy)
VHXEmbedIEr  z	vhx:embedz*https?://embed\.vhx\.tv/videos/(?P<id>\d+)r  NrS  r   r   r   r  r  3  s    &GG@JNr   r  c                       e Zd ZdZdZdZy)VKBaseIEyt_dlp.extractor.vkVKBasevkNr{   r   r   r   r  r  3  s    #GGNr   r  c                   $    e Zd ZdZdZdZdZdZdZy)VKIEr  r  a  (?x)
                    https?://
                        (?:
                            (?:
                                (?:(?:m|new|vksport)\.)?vk(?:(?:video)?\.ru|\.com)/video_|
                                (?:www\.)?daxab\.com/
                            )
                            ext\.php\?(?P<embed_query>.*?\boid=(?P<oid>-?\d+).*?\bid=(?P<id>\d+).*)|
                            (?:
                                (?:(?:m|new|vksport)\.)?vk(?:(?:video)?\.ru|\.com)/(?:.+?\?.*?z=)?(?:video|clip)|
                                (?:www\.)?daxab\.com/embed/
                            )
                            (?P<videoid>-?\d+_\d+)(?:.*\blist=(?P<list_id>([\da-f]+)|(ln-[\da-zA-Z]+)))?
                        )
                    VKrl   Nr   r   r   r   r  r  3  s#    #GG nJGNLr   r  c                       e Zd ZdZdZy)VKPlayBaseIEr  
VKPlayBaseNr   r   r   r   r  r  3  s    #GGr   r  c                       e Zd ZdZdZdZdZy)VKPlayIEr  VKPlayzchttps?://(?:vkplay\.live|live\.vk(?:play|video)\.ru)/(?P<username>[^/#?]+)/record/(?P<id>[\da-f-]+)rl   Nr   r   r   r   r  r  3  s    #GGzJLr   r  c                       e Zd ZdZdZdZdZy)VKPlayLiveIEr  
VKPlayLivezPhttps?://(?:vkplay\.live|live\.vk(?:play|video)\.ru)/(?P<id>[^/#?]+)/?(?:[#?]|$)rl   Nr   r   r   r   r  r  3  s    #GGfJLr   r  c                   (    e Zd ZdZdZddgZdZdZdZy)	VKUserVideosIEr  zvk:uservideoszQhttps?://(?:(?:m|new)\.)?vk(?:video\.ru|\.com/video)/playlist/(?P<id>-?\d+_-?\d+)zkhttps?://(?:(?:m|new)\.)?vk(?:video\.ru|\.com/video)/(?P<id>@[^/?#]+)(?:/all)?/?(?!\?.*\bz=video)(?:[?#]|$)zVK - User's Videosr  rm   Nr   r   r   r   r  r  3  s-    #GGj  m_  `J"GNLr   r  c                        e Zd ZdZdZdZdZdZy)VKWallPostIEr  zvk:wallpostzPhttps?://(?:(?:(?:(?:m|new)\.)?vk\.com/(?:[^?]+\?.*\bw=)?wall(?P<id>-?\d+_\d+)))r  rm   Nr   r   r   r   r  r  3  s    #GGiJNLr   r  c                       e Zd ZdZdZdZdZy)VODPlatformIEzyt_dlp.extractor.vodplatformVODPlatformzXhttps?://(?:(?:www\.)?vod-platform\.net|embed\.kwikmotion\.com)/[eE]mbed/(?P<id>[^/?#]+)rl   Nr   r   r   r   r  r  3  s    ,GGoJLr   r  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )VPROIErb  vprozThttps?://(?:www\.)?(?:(?:tegenlicht\.)?vpro|2doc)\.nl/(?:[^/]+/)*(?P<id>[^/]+)\.htmlr  r   c                 n    t        fdt        t        t        fD              rdS t        |         S )Nc              3   @   K   | ]  }|j                          y wr'   r  r  s     r   r;   z"VPROIE.suitable.<locals>.<genexpr>4  r  r<   Fr  r   s    `r   r4   zVPROIE.suitable4  r  r   r  r   s   @r   r  r  3  s.    $GGkJAGL, ,r   r  c                       e Zd ZdZdZy)	VQQBaseIEr  VQQBaseNr   r   r   r   r  r  	4  s    (GGr   r  c                       e Zd ZdZdZdZdZy)VQQSeriesIEr  z
vqq:seriesz9https?://v\.qq\.com/x/cover/(?P<id>\w+)\.html/?(?:[?#]|$)rm   Nr   r   r   r   r  r  4  s    (GGPJLr   r  c                       e Zd ZdZdZdZdZy)
VQQVideoIEr  z	vqq:videozChttps?://v\.qq\.com/x/(?:page|cover/(?P<series_id>\w+))/(?P<id>\w+)rl   Nr   r   r   r   r  r  4  s    (GGZJLr   r  c                        e Zd ZdZdZdZdZdZy)VRTIEr6  VRTzbhttps?://(?:www\.)?(?P<site>vrt\.be/vrtnws|sporza\.be)/[a-z]{2}/\d{4}/\d{2}/\d{2}/(?P<id>[^/?&#]+)z0VRT NWS, Flanders News, Flandern Info and Sporzarl   Nr   r   r   r   r  r  4  s    $GG{J@GLr   r  c                       e Zd ZdZdZdZdZy)VTMIEzyt_dlp.extractor.vtmVTMzThttps?://(?:www\.)?vtm\.be/[^/?#]+~v(?P<id>[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12})rl   Nr   r   r   r   r  r  $4  r  r   r  c                        e Zd ZdZdZddgZdZy)VTVGoIEyt_dlp.extractor.vtvVTVGoz]https?://(?:www\.)?vtvgo\.vn/(kho-video|tin-tuc)/[\w.-]*?(?P<id>\d+)(?:\.[a-z]+|/)?(?:$|[?#])zShttps?://(?:www\.)?vtvgo\.vn/digital/detail\.php\?(?:[^#]+&)?content_id=(?P<id>\d+)rl   Nr   r   r   r   r  r  +4  s#    $GGv  yS  TJLr   r  c                       e Zd ZdZdZdZdZy)VTVIEr  VTVz8https?://(?:www\.)?vtv\.vn/video/[\w-]*?(?P<id>\d+)\.htmrl   Nr   r   r   r   r  r  24  r*	  r   r  c                       e Zd ZdZdZdZy)VTXTVBaseIErH  	VTXTVBasevtxtvNr{   r   r   r   r  r  94  rO  r   r  c                       e Zd ZdZdZdZdZy)VTXTVIErH  VTXTVz(?x)https?://(?:www\.)?vtxtv\.ch/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  NrS  r   r   r   r  r  ?4  r  r   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )VTXTVLiveIErH  	VTXTVLivez(?x)https?://(?:www\.)?vtxtv\.ch/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 P    t         j                  |      rdS t        |   |      S r   )r  r4   r   r   s     r   r4   zVTXTVLiveIE.suitableL4  r   r   r  r   s   @r   r  r  F4  r  r   r  c                       e Zd ZdZdZdZdZy)VTXTVRecordingsIErH  VTXTVRecordingszp(?x)https?://(?:www\.)?vtxtv\.ch/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  NrS  r   r   r   r  r  Q4  r  r   r  c                        e Zd ZdZdZdZdZdZy)
Varzesh3IEzyt_dlp.extractor.varzesh3Varzesh3zBhttps?://(?:www\.)?video\.varzesh3\.com/(?:[^/]+/)+(?P<id>[^/]+)/?Frl   Nr]  r   r   r   r  r  X4  s    )GGXJHLr   r  c                       e Zd ZdZdZdZdZy)Vbox7IEzyt_dlp.extractor.vbox7Vbox7a  (?x)
                    https?://
                        (?:[^/]+\.)?vbox7\.com/
                        (?:
                            play:|
                            (?:
                                emb/external\.php|
                                player/ext\.swf
                            )\?.*?\bvid=
                        )
                        (?P<id>[\da-fA-F]+)
                    rl   Nr   r   r   r   r  r  `4  s    &GG ~JLr   r  c                       e Zd ZdZdZdZdZy)VeoIEzyt_dlp.extractor.veoVeoz4https?://app\.veo\.co/matches/(?P<id>[0-9A-Za-z-_]+)rl   Nr   r   r   r   r  r  g4  ro  r   r  c                       e Zd ZdZdZy)
VevoBaseIEyt_dlp.extractor.vevoVevoBaseNr   r   r   r   r  r  n4  r  r   r  c                        e Zd ZdZdZdZdZdZy)VevoIEr  Vevoaz  (?x)
        (?:https?://(?:www\.)?vevo\.com/watch/(?!playlist|genre)(?:[^/]+/(?:[^/]+/)?)?|
           https?://cache\.vevo\.com/m/html/embed\.html\?video=|
           https?://videoplayer\.vevo\.com/embed/embedded\?videoId=|
           https?://embed\.vevo\.com/.*?[?&]isrc=|
           https?://tv\.vevo\.com/watch/artist/(?:[^/]+)/|
           vevo:)
        (?P<id>[^&?#]+)r   rl   Nrw  r   r   r   r  r  s4  s    %GG bJILr   r  c                       e Zd ZdZdZdZdZy)VevoPlaylistIEr  VevoPlaylistzLhttps?://(?:www\.)?vevo\.com/watch/(?P<kind>playlist|genre)/(?P<id>[^/?#&]+)rm   Nr   r   r   r   r  r  {4  s    %GGaJLr   r  c                       e Zd ZdZdZdZdZy)ViMPPlaylistIE$yt_dlp.extractor.videocampus_sachsenzViMP:Playlista  (?x)(?P<host>https?://(?:bergauf\.tv|campus\.demo\.vimp\.com|corporate\.demo\.vimp\.com|dancehalldatabase\.com|drehzahl\.tv|educhannel\.hs\-gesundheit\.de|emedia\.ls\.haw\-hamburg\.de|globale\-evolution\.net|hohu\.tv|htvideos\.hightechhigh\.org|k210039\.vimp\.mivitec\.net|media\.cmslegal\.com|media\.fh\-swf\.de|media\.hs\-furtwangen\.de|media\.hwr\-berlin\.de|mediathek\.dkfz\.de|mediathek\.htw\-berlin\.de|mediathek\.polizei\-bw\.de|medien\.hs\-merseburg\.de|mitmedia\.manukau\.ac\.nz|mportal\.europa\-uni\.de|pacific\.demo\.vimp\.com|slctv\.com|streaming\.prairiesouth\.ca|tube\.isbonline\.cn|univideo\.uni\-kassel\.de|ursula2\.genetics\.emory\.edu|ursulablicklevideoarchiv\.com|v\.agrarumweltpaedagogik\.at|video\.eplay\-tv\.de|video\.fh\-dortmund\.de|video\.hs\-nb\.de|video\.hs\-offenburg\.de|video\.hs\-pforzheim\.de|video\.hspv\.nrw\.de|video\.irtshdf\.fr|video\.pareygo\.de|video\.tu\-dortmund\.de|video\.tu\-freiberg\.de|videocampus\.sachsen\.de|videoportal\.uni\-freiburg\.de|videoportal\.vm\.uni\-freiburg\.de|videos\.duoc\.cl|videos\.uni\-paderborn\.de|vimp\-bemus\.udk\-berlin\.de|vimp\.aekwl\.de|vimp\.hs\-mittweida\.de|vimp\.landesfilmdienste\.de|vimp\.oth\-regensburg\.de|vimp\.ph\-heidelberg\.de|vimp\.sma\-events\.com|vimp\.weka\-fachmedien\.de|vimpdesk\.com|webtv\.univ\-montp3\.fr|www\.b\-tu\.de/media|www\.bergauf\.tv|www\.bigcitytv\.de|www\.cad\-videos\.de|www\.drehzahl\.tv|www\.hohu\.tv|www\.hsbi\.de/medienportal|www\.logistic\.tv|www\.orvovideo\.com|www\.printtube\.co\.uk|www\.rwe\.tv|www\.salzi\.tv|www\.signtube\.co\.uk|www\.twb\-power\.com|www\.wenglor\-media\.com|www2\.univ\-sba\.dz))/(?:
        (?P<mode1>album)/view/aid/(?P<album_id>[0-9]+)|
        (?P<mode2>category|channel)/(?P<name>[\w-]+)/(?P<channel_id>[0-9]+)|
        (?P<mode3>tag)/(?P<tag_id>[0-9]+)
    )rm   Nr   r   r   r   r  r  4  s    4GG UJLr   r  c                       e Zd ZdZdZy)
ViceBaseIEyt_dlp.extractor.viceViceBaseNr   r   r   r   r  r  4  r  r   r  c                   $    e Zd ZdZdZdZdZdZdZy)ViceArticleIEr  zvice:articlezVhttps?://(?:www\.)?vice\.com/(?P<locale>[^/]+)/article/(?:[0-9a-z]{6}/)?(?P<id>[^?#]+)Fr  rl   Nr  r   r   r   r  r  4  s     %GGkJHILr   r  c                   $    e Zd ZdZdZdZdZdZdZy)ViceIEr  vicez{https?://(?:(?:video|vms)\.vice|(?:www\.)?vice(?:land|tv))\.com/(?P<locale>[^/]+)/(?:video/[^/]+|embed)/(?P<id>[\da-f]{24})Fr  rl   Nr  r   r   r   r  r  4  s#    %GG SJHILr   r  c                        e Zd ZdZdZdZdZdZy)
ViceShowIEr  z	vice:showz_https?://(?:video\.vice|(?:www\.)?vice(?:land|tv))\.com/(?P<locale>[^/]+)/show/(?P<id>[^/?#&]+)Frm   Nr]  r   r   r   r  r  4  s    %GGuJHLr   r  c                       e Zd ZdZdZdZdZy)VidLiiIEzyt_dlp.extractor.vidliiVidLiizPhttps?://(?:www\.)?vidlii\.com/(?:watch|embed)\?.*?\bv=(?P<id>[0-9A-Za-z_-]{11})rl   Nr   r   r   r   r  r  4  s    'GGgJLr   r  c                        e Zd ZdZdZdZdZdZy)	ViddlerIEzyt_dlp.extractor.viddlerViddlerzZhttps?://(?:www\.)?viddler\.com/(?:v|embed|player)/(?P<id>[a-z0-9]+)(?:.+?\bsecret=(\d+))?Frl   Nr]  r   r   r   r  r  4  s    (GGqJHLr   r  c                       e Zd ZdZdZdZdZy)VideaIEzyt_dlp.extractor.videaVideaaX  (?x)
                    https?://
                        videa(?:kid)?\.hu/
                        (?:
                            videok/(?:[^/]+/)*[^?#&]+-|
                            (?:videojs_)?player\?.*?\bv=|
                            player/v/
                        )
                        (?P<id>[^?#&]+)
                    rl   Nr   r   r   r   r  r  4  s    &GG xJLr   r  c                       e Zd ZdZdZdZdZy)VideoKenPlayerIEzyt_dlp.extractor.videokenVideoKenPlayerz;https?://player\.videoken\.com/embed/slideslive-(?P<id>\d+)rl   Nr   r   r   r   r  r  4  s    )GGQJLr   r  c                       e Zd ZdZdZdZdZy)VideoPressIEzyt_dlp.extractor.videopress
VideoPressz?https?://video(?:\.word)?press\.com/embed/(?P<id>[\da-zA-Z]{8})rl   Nr   r   r   r   r  r  4  s    +GGUJLr   r  c                       e Zd ZdZdZdZdZy)VideocampusSachsenIEr  ViMPa   (?x)https?://(?P<host>bergauf\.tv|campus\.demo\.vimp\.com|corporate\.demo\.vimp\.com|dancehalldatabase\.com|drehzahl\.tv|educhannel\.hs\-gesundheit\.de|emedia\.ls\.haw\-hamburg\.de|globale\-evolution\.net|hohu\.tv|htvideos\.hightechhigh\.org|k210039\.vimp\.mivitec\.net|media\.cmslegal\.com|media\.fh\-swf\.de|media\.hs\-furtwangen\.de|media\.hwr\-berlin\.de|mediathek\.dkfz\.de|mediathek\.htw\-berlin\.de|mediathek\.polizei\-bw\.de|medien\.hs\-merseburg\.de|mitmedia\.manukau\.ac\.nz|mportal\.europa\-uni\.de|pacific\.demo\.vimp\.com|slctv\.com|streaming\.prairiesouth\.ca|tube\.isbonline\.cn|univideo\.uni\-kassel\.de|ursula2\.genetics\.emory\.edu|ursulablicklevideoarchiv\.com|v\.agrarumweltpaedagogik\.at|video\.eplay\-tv\.de|video\.fh\-dortmund\.de|video\.hs\-nb\.de|video\.hs\-offenburg\.de|video\.hs\-pforzheim\.de|video\.hspv\.nrw\.de|video\.irtshdf\.fr|video\.pareygo\.de|video\.tu\-dortmund\.de|video\.tu\-freiberg\.de|videocampus\.sachsen\.de|videoportal\.uni\-freiburg\.de|videoportal\.vm\.uni\-freiburg\.de|videos\.duoc\.cl|videos\.uni\-paderborn\.de|vimp\-bemus\.udk\-berlin\.de|vimp\.aekwl\.de|vimp\.hs\-mittweida\.de|vimp\.landesfilmdienste\.de|vimp\.oth\-regensburg\.de|vimp\.ph\-heidelberg\.de|vimp\.sma\-events\.com|vimp\.weka\-fachmedien\.de|vimpdesk\.com|webtv\.univ\-montp3\.fr|www\.b\-tu\.de/media|www\.bergauf\.tv|www\.bigcitytv\.de|www\.cad\-videos\.de|www\.drehzahl\.tv|www\.hohu\.tv|www\.hsbi\.de/medienportal|www\.logistic\.tv|www\.orvovideo\.com|www\.printtube\.co\.uk|www\.rwe\.tv|www\.salzi\.tv|www\.signtube\.co\.uk|www\.twb\-power\.com|www\.wenglor\-media\.com|www2\.univ\-sba\.dz)/(?:
        m/(?P<tmp_id>[0-9a-f]+)|
        (?:category/)?video/(?P<display_id>[\w-]+)/(?P<id>[0-9a-f]{32})|
        media/embed.*(?:\?|&)key=(?P<embed_id>[0-9a-f]{32}&?)
    )rl   Nr   r   r   r   r  r  4  s    4GG KJLr   r  c                       e Zd ZdZdZdZdZy)	VidflexIEzyt_dlp.extractor.vidflexVidflexa  https?://(?:[^.]+\.vidflex\.tv|(?:www\.)?acactv\.ca|(?:www\.)?albertalacrossetv\.com|(?:www\.)?cjfltv\.com|(?:www\.)?figureitoutbaseball\.com|(?:www\.)?ocaalive\.com|(?:www\.)?pegasussports\.tv|(?:www\.)?praxisseries\.ca|(?:www\.)?silenticetv\.com|(?:www\.)?tuffhedemantv\.com|(?:www\.)?watchfuntv\.com|live\.ofsaa\.on\.ca|tv\.procoro\.ca|tv\.realcastmedia\.net|tv\.fringetheatre\.ca|video\.haisla\.ca|video\.hockeycanada\.ca|video\.huuayaht\.org|video\.turningpointensemble\.ca|videos\.livingworks\.net|videos\.telusworldofscienceedmonton\.ca|watch\.binghamtonbulldogs\.com|watch\.rekindle\.tv|watch\.wpca\.com)/[a-z]{2}(?:-[a-z]{2})?/c/[\w-]+\.(?P<id>\d+)rl   Nr   r   r   r   r  r  4  s    (GG YJLr   r  c                       e Zd ZdZdZdZy)VidioBaseIEyt_dlp.extractor.vidio	VidioBasevidioNr{   r   r   r   r  r  4  rs	  r   r  c                        e Zd ZdZdZdZdZdZy)VidioIEr  VidiozPhttps?://(?:www\.)?vidio\.com/(watch|embed)/(?P<id>\d+)-(?P<display_id>[^/?#&]+)r  rl   Nr   r   r   r   r  r  4  s    &GGfJNLr   r  c                        e Zd ZdZdZdZdZdZy)VidioLiveIEr  	VidioLivezGhttps?://(?:www\.)?vidio\.com/live/(?P<id>\d+)-(?P<display_id>[^/?#&]+)r  rl   Nr   r   r   r   r  r  4  s    &GG]JNLr   r  c                        e Zd ZdZdZdZdZdZy)VidioPremierIEr  VidioPremierzJhttps?://(?:www\.)?vidio\.com/premier/(?P<id>\d+)/(?P<display_id>[^/?#&]+)r  rm   Nr   r   r   r   r  r  4  s    &GG`JNLr   r  c                       e Zd ZdZdZdZdZy)VidlyIEzyt_dlp.extractor.vidlyVidlyzPhttps?://(?:vid\.ly/|(?:s\.)?vid\.ly/embeded\.html\?(?:[^#]+&)?link=)(?P<id>\w+)rl   Nr   r   r   r   r  r  4  s    &GGiJLr   r  c                       e Zd ZdZdZdZdZy)VidsIoIEr  zvids.iozHhttps?://[\w-]+\.vids\.io/videos/(?P<id>[\da-f]+)/(?P<display_id>[\w-]+)rl   Nr   r   r   r   r  r  4  s    ,GG`JLr   r  c                        e Zd ZdZdZg dZdZy)	VidyardIErV  Vidyard)z=https?://[\w-]+(?:\.hubs)?\.vidyard\.com/watch/(?P<id>[\w-]+)z;https?://(?:embed|share)\.vidyard\.com/share/(?P<id>[\w-]+)z6https?://play\.vidyard\.com/(?:player/)?(?P<id>[\w-]+)r   Nr   r   r   r   r  r  5  s    (GG WJLr   r  c                       e Zd ZdZdZy)ViewLiftBaseIEyt_dlp.extractor.viewliftViewLiftBaseNr   r   r   r   r!  r!  5  r  r   r!  c                       e Zd ZdZdZdZdZy)ViewLiftEmbedIEr"  zviewlift:embeda  https?://(?:(?:www|embed)\.)?(?P<domain>(?:(?:main\.)?snagfilms|snagxtreme|funnyforfree|kiddovid|winnersview|(?:monumental|lax)sportsnetwork|vayafilm|failarmy|ftfnext|lnppass\.legapallacanestro|moviespree|app\.myoutdoortv|neoufitness|pflmma|theidentitytb|chorki)\.com|(?:hoichoi|app\.horseandcountry|kronon|marquee|supercrosslive)\.tv)/embed/player\?.*\bfilmId=(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})rl   Nr   r   r   r   r%  r%  5  s    )GG yJLr   r%  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )
ViewLiftIEr"  viewlifta  https?://(?:www\.)?(?P<domain>(?:(?:main\.)?snagfilms|snagxtreme|funnyforfree|kiddovid|winnersview|(?:monumental|lax)sportsnetwork|vayafilm|failarmy|ftfnext|lnppass\.legapallacanestro|moviespree|app\.myoutdoortv|neoufitness|pflmma|theidentitytb|chorki)\.com|(?:hoichoi|app\.horseandcountry|kronon|marquee|supercrosslive)\.tv)(?P<path>(?:/(?:films/title|show|(?:news/)?videos?|watch))?/(?P<id>[^?#]+))r  r   c                 P    t         j                  |      rdS t        |   |      S r   )r%  r4   r   r   s     r   r4   zViewLiftIE.suitable 5  rJ  r   r	  r   s   @r   r'  r'  5  s3    )GG kJILQ Qr   r'  c                       e Zd ZdZdZdZdZy)ViewSourceIEr  
ViewSourcezview-source:(?P<url>.+)FNr,  r   r   r   r+  r+  %5  s    0GG*JGr   r+  c                       e Zd ZdZdZdZdZy)ViideaIEzyt_dlp.extractor.viideaViideaa;  (?x)https?://(?:www\.)?(?:
            videolectures\.net|
            flexilearn\.viidea\.net|
            presentations\.ocwconsortium\.org|
            video\.travel-zoom\.si|
            video\.pomp-forum\.si|
            tv\.nil\.si|
            video\.hekovnik.com|
            video\.szko\.si|
            kpk\.viidea\.com|
            inside\.viidea\.net|
            video\.kiberpipa\.org|
            bvvideo\.si|
            kongres\.viidea\.net|
            edemokracija\.viidea\.com
        )(?:/lecture)?/(?P<id>[^/]+)(?:/video/(?P<part>\d+))?/*(?:[#?].*)?$r   Nr   r   r   r   r.  r.  ,5  s    'GG y	JLr   r.  c                        e Zd ZdZdZdZdZdZy)VimeoAlbumIEr  zvimeo:albumzThttps://vimeo\.com/(?:album|showcase)/(?P<id>[^/?#]+)(?:$|[?#]|(?P<is_embed>/embed))r  rm   Nr   r   r   r   r1  r1  35  s    &GGhJNLr   r1  c                        e Zd ZdZdZdZdZdZy)VimeoChannelIEr  zvimeo:channelz7https://vimeo\.com/channels/(?P<id>[^/?#]+)/?(?:$|[?#])r  rm   Nr   r   r   r   r3  r3  ;5  s    &GGKJNLr   r3  c                        e Zd ZdZdZdZdZdZy)VimeoEventIEr  zvimeo:eventz(?x)
        https?://(?:www\.)?vimeo\.com/event/(?P<id>\d+)(?:/
            (?:
                (?:embed/)?(?P<unlisted_hash>[\da-f]{10})|
                videos/(?P<video_id>\d+)
            )
        )?r  rl   Nr   r   r   r   r5  r5  C5  s    &GG lJNLr   r5  c                        e Zd ZdZdZdZdZdZy)VimeoGroupsIEr  zvimeo:groupz=https://vimeo\.com/groups/(?P<id>[^/]+)(?:/(?!videos?/\d+)|$)r  rm   Nr   r   r   r   r7  r7  K5  s    &GGRJNLr   r7  c                        e Zd ZdZdZdZdZdZy)VimeoIEr  r  al  (?x)
                     https?://
                         (?:
                             (?:
                                 www|
                                 player
                             )
                             \.
                         )?
                         vimeo\.com/
                         (?:
                             (?P<u>user)|
                             (?!(?:channels|album|showcase)/[^/?#]+/?(?:$|[?#])|[^/]+/review/|ondemand/)
                             (?:(?!event/).*?/)??
                             (?P<q>
                                 (?:
                                     play_redirect_hls|
                                     moogaloop\.swf)\?clip_id=
                             )?
                             (?:videos?/)?
                         )
                         (?P<id>[0-9]+)
                         (?(u)
                             /(?!videos|likes)[^/?#]+/?|
                             (?(q)|/(?P<unlisted_hash>[\da-f]{10}))?
                         )
                         (?:(?(q)[&]|(?(u)|/?)[?]).*?)?(?:[#].*)?$
                 rl   Nr   r   r   r   r9  r9  S5  s    &GG `JNLr   r9  c                   $    e Zd ZdZdZdZdZdZdZy)VimeoLikesIEr  zvimeo:likeszBhttps://(?:www\.)?vimeo\.com/(?P<id>[^/]+)/likes/?(?:$|[?#]|sort:)zVimeo user likesr  rm   Nr   r   r   r   r;  r;  [5  s     &GGWJ GNLr   r;  c                        e Zd ZdZdZdZdZdZy)VimeoOndemandIEr  zvimeo:ondemandzBhttps?://(?:www\.)?vimeo\.com/ondemand/(?:[^/]+/)?(?P<id>[^/?#&]+)r  rl   Nr   r   r   r   r=  r=  d5  s    &GGWJNLr   r=  c                        e Zd ZdZdZdZdZdZy)
VimeoProIEr  z	vimeo:prozZhttps?://(?:www\.)?vimeopro\.com/[^/?#]+/(?P<slug>[^/?#]+)(?:(?:/videos?/(?P<id>[0-9]+)))?r  rl   Nr   r   r   r   r?  r?  l5  s    &GGoJNLr   r?  c                   $    e Zd ZdZdZdZdZdZdZy)VimeoReviewIEr  zvimeo:reviewzNhttps?://vimeo\.com/(?P<user>[^/?#]+)/review/(?P<id>\d+)/(?P<hash>[\da-f]{10})zReview pages on vimeor  rl   Nr   r   r   r   rA  rA  t5  s     &GGdJ%GNLr   rA  c                        e Zd ZdZdZdZdZdZy)VimeoUserIEr  z
vimeo:userz\https://vimeo\.com/(?!(?:[0-9]+|watchlater)(?:$|[?#/]))(?P<id>[^/]+)(?:/videos)?/?(?:$|[?#])r  rm   Nr   r   r   r   rC  rC  }5  s    &GGpJNLr   rC  c                        e Zd ZdZdZdZdZdZy)VimeoWatchLaterIEr  zvimeo:watchlaterz8https://vimeo\.com/(?:home/)?watchlater|:vimeowatchlaterzLVimeo watch later list, ":vimeowatchlater" keyword (requires authentication)r  Nr   r   r   r   rE  rE  5  s    &G GLJ\GNr   rE  c                       e Zd ZdZdZdZy)	ViouslyIEzyt_dlp.extractor.viouslyViouslyFNr  r   r   r   rG  rG  5  s    (GGJr   rG  c                        e Zd ZdZdZdZdZdZy)ViqeoIEzyt_dlp.extractor.viqeoViqeoaE  (?x)
                        (?:
                            viqeo:|
                            https?://cdn\.viqeo\.tv/embed/*\?.*?\bvid=|
                            https?://api\.viqeo\.tv/v\d+/data/startup?.*?\bvideo(?:%5B%5D|\[\])=
                        )
                        (?P<id>[\da-f]+)
                    Frl   Nr]  r   r   r   rJ  rJ  5  s    &GG kJHLr   rJ  c                        e Zd ZdZdZdZdZdZy)VisirIEzyt_dlp.extractor.visirVisirzXhttps?://(?:www\.)?visir\.is/(?P<type>k|player)/(?P<id>[\da-f-]+)(?:/(?P<slug>[\w.-]+))?u   Vísirrl   Nr   r   r   r   rM  rM  5  s    &GGoJGLr   rM  c                       e Zd ZdZdZy)	ViuBaseIEyt_dlp.extractor.viuViuBaseNr   r   r   r   rP  rP  5  rk  r   rP  c                       e Zd ZdZdZdZdZy)ViuIErQ  Viuz<(?:viu:|https?://[^/]+\.viu\.com/[a-z]{2}/media/)(?P<id>\d+)rl   Nr   r   r   r   rT  rT  5  s    $GGRJLr   rT  c                        e Zd ZdZdZdZdZdZy)ViuOTTIErQ  zviu:ottzkhttps?://(?:www\.)?viu\.com/ott/(?P<country_code>[a-z]{2})/(?P<lang_code>[a-z]{2}-[a-z]{2})/vod/(?P<id>\d+)viur   Nr   r   r   r   rW  rW  5  s    $GG BJNLr   rW  c                       e Zd ZdZdZy)ViuOTTIndonesiaBaseIErQ  ViuOTTIndonesiaBaseNr   r   r   r   rZ  rZ  5  r=  r   rZ  c                        e Zd ZdZdZdZdZdZy)ViuOTTIndonesiaIErQ  ViuOTTIndonesiaz?https?://www\.viu\.com/ott/\w+/\w+/all/video-[\w-]+-(?P<id>\d+)r  rl   Nrw  r   r   r   r]  r]  5  s    $GGXJILr   r]  c                       e Zd ZdZdZdZdZy)ViuPlaylistIErQ  zviu:playlistz9https?://www\.viu\.com/[^/]+/listing/playlist-(?P<id>\d+)rm   Nr   r   r   r   r`  r`  5  s    $GGOJLr   r`  c                       e Zd ZdZdZdZdZy)	VocarooIEzyt_dlp.extractor.vocarooVocaroozChttps?://(?:www\.)?(?:vocaroo\.com|voca\.ro)/(?:embed/)?(?P<id>\w+)rl   Nr   r   r   r   rb  rb  5  r  r   rb  c                       e Zd ZdZdZy)VoicyBaseIEyt_dlp.extractor.voicy	VoicyBaseNr   r   r   r   re  re  5  r   r   re  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )VoicyChannelIErf  zvoicy:channelz&https?://voicy\.jp/channel/(?P<id>\d+)Frm   c                 R    t         j                  |       xr t        |   |      S r'   )VoicyIEr4   r   r   s     r   r4   zVoicyChannelIE.suitable5  s&    ##C((BUW-=c-BBr   rR  r   s   @r   ri  ri  5  s0    &GG;JHLC Cr   ri  c                        e Zd ZdZdZdZdZdZy)rk  rf  voicyz:https?://voicy\.jp/channel/(?P<channel_id>\d+)/(?P<id>\d+)Frm   Nr]  r   r   r   rk  rk  5  s    &GGPJHLr   rk  c                       e Zd ZdZdZy)VolejTVBaseIEyt_dlp.extractor.volejtvVolejTVBaseNr   r   r   r   ro  ro  5  r   r   ro  c                       e Zd ZdZdZy)VolejTVPlaylistBaseIErp  VolejTVPlaylistBaseNr   r   r   r   rs  rs  5  ro  r   rs  c                       e Zd ZdZdZdZdZy)VolejTVCategoryPlaylistIErp  zvolejtv:categoryz,https?://volej\.tv/kategorie/(?P<id>[^/$?]+)rm   Nr   r   r   r   rv  rv  5  s    (G G@JLr   rv  c                       e Zd ZdZdZdZdZy)VolejTVClubPlaylistIErp  zvolejtv:clubz#https?://volej\.tv/klub/(?P<id>\d+)rm   Nr   r   r   r   rx  rx  5  s    (GG8JLr   rx  c                       e Zd ZdZdZdZdZy)	VolejTVIErp  zvolejtv:matchz$https?://volej\.tv/match/(?P<id>\d+)rl   Nr   r   r   r   rz  rz  6  s    (GG9JLr   rz  c                       e Zd ZdZdZdZdZy)
VoxMediaIEyt_dlp.extractor.voxmediaVoxMediazhttps?://(?:www\.)?(?:(?:theverge|vox|sbnation|eater|polygon|curbed|racked|funnyordie)\.com|recode\.net)/(?:[^/]+/)*(?P<id>[^/?]+)r   Nr   r   r   r   r|  r|  
6  s    )GG YJLr   r|  c                       e Zd ZdZdZdZy)VoxMediaVolumeIEr}  VoxMediaVolumez7https?://volume\.vox-cdn\.com/embed/(?P<id>[0-9a-f]{9})Nr  r   r   r   r  r  6  s    )GGLJr   r  c                       e Zd ZdZdZy)VrSquarePlaylistBaseIEyt_dlp.extractor.vrsquareVrSquarePlaylistBaseNr   r   r   r   r  r  6  r  r   r  c                       e Zd ZdZdZdZdZy)VrSquareChannelIEr  zvrsquare:channelz%https?://livr\.jp/channel/(?P<id>\w+)rm   Nr   r   r   r   r  r  6  s    )G G:JLr   r  c                        e Zd ZdZdZdZdZdZy)
VrSquareIEr  vrsquarez)https?://livr\.jp/contents/(?P<id>[\w-]+)z	VR SQUARErl   Nr   r   r   r   r  r  #6  s    )GG>JGLr   r  c                       e Zd ZdZdZdZdZy)VrSquareSearchIEr  zvrsquare:searchz2https?://livr\.jp/web-search/?\?(?:[^#]+&)?w=[^#]+rm   Nr   r   r   r   r  r  +6  s    )GGGJLr   r  c                       e Zd ZdZdZdZdZy)VrSquareSectionIEr  zvrsquare:sectionz3https?://livr\.jp/(?:category|headline)/(?P<id>\w+)rm   Nr   r   r   r   r  r  26  s    )G GHJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)VrtNUIEr6  vrtmaxzMhttps?://(?:www\.)?vrt\.be/(?:vrtnu|vrtmax)/a-z/(?:[^/]+/){2}(?P<id>[^/?#&]+)zVRT MAX (formerly VRT NU)vrtnurl   Nr   r   r   r   r  r  96  s     $GGbJ)GNLr   r  c                       e Zd ZdZdZdZdZy)WDRElefantIEyt_dlp.extractor.wdr
WDRElefantz8https?://(?:www\.)wdrmaus\.de/elefantenseite/#(?P<id>.+)rl   Nr   r   r   r   r  r  B6  s    $GGMJLr   r  c                       e Zd ZdZdZdZdZy)WDRIEr  WDRz(?x)https?://
        (?:deviceids-medp\.wdr\.de/ondemand/\d+/|
           kinder\.wdr\.de/(?!mediathek/)[^#?]+-)
        (?P<id>\d+)\.(?:js|assetjsonp)
    rl   Nr   r   r   r   r  r  I6  s    $GG |JLr   r  c                       e Zd ZdZdZdZdZy)	WDRPageIEr  WDRPagezhttps?://(?:www\d?\.)?(?:(?:kinder\.)?wdr\d?|sportschau)\.de/(?:mediathek/)?(?:[^/]+/)*(?P<display_id>[^/]+)\.html|https?://(?:www\.)wdrmaus.de/(?:[^/]+/)*?(?P<maus_id>[^/?#.]+)(?:/?|/index\.php5|\.php5)$r   Nr   r   r   r   r  r  P6  s    $GG iJLr   r  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )WNLIErb  wnlz@https?://(?:www\.)?omroepwnl\.nl/video/detail/(?P<id>[^/]+)__\d+r  rm   c                 n    t        fdt        t        t        fD              rdS t        |         S )Nc              3   @   K   | ]  }|j                          y wr'   r  r  s     r   r;   z!WNLIE.suitable.<locals>.<genexpr>`6  r  r<   Fr  r   s    `r   r4   zWNLIE.suitable^6  r  r   r  r   s   @r   r  r  W6  s.    $GGVJAGL, ,r   r  c                       e Zd ZdZdZy)WPPilotBaseIEyt_dlp.extractor.wppilotWPPilotBaseNr   r   r   r   r  r  e6  r   r   r  c                       e Zd ZdZdZdZdZy)WPPilotChannelsIEr  zwppilot:channelsz<(?:https?://pilot\.wp\.pl/(?:tv/?)?(?:\?[^#]*)?#?|wppilot:)$rm   Nr   r   r   r   r  r  j6  s    (G GRJLr   r  c                       e Zd ZdZdZdZdZy)	WPPilotIEr  wppilotz:(?:https?://pilot\.wp\.pl/tv/?#|wppilot:)(?P<id>[a-z\d-]+)rl   Nr   r   r   r   r  r  q6  s    (GGPJLr   r  c                       e Zd ZdZdZdZdZy)WSJArticleIEyt_dlp.extractor.wsj
WSJArticlezE(?i)https?://(?:www\.)?wsj\.com/(?:articles|opinion)/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r  x6  r  r   r  c                        e Zd ZdZdZdZdZdZy)WSJIEr  WSJa\  (?x)
                        (?:
                            https?://video-api\.wsj\.com/api-video/player/iframe\.html\?.*?\bguid=|
                            https?://(?:www\.)?(?:wsj|barrons)\.com/video/(?:[^/]+/)+|
                            wsj:
                        )
                        (?P<id>[a-fA-F0-9-]{36})
                    zWall Street Journalrl   Nr   r   r   r   r  r  6  s    $GG ~J#GLr   r  c                       e Zd ZdZdZy)	WWEBaseIEyt_dlp.extractor.wweWWEBaseNr   r   r   r   r  r  6  rk  r   r  c                       e Zd ZdZdZdZdZy)WWEIEr  WWEz@https?://(?:[^/]+\.)?wwe\.com/(?:[^/]+/)*videos/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r  6  r	
  r   r  c                        e Zd ZdZdZdZdZdZy)WallaIEzyt_dlp.extractor.wallaWallaz@https?://vod\.walla\.co\.il/[^/]+/(?P<id>\d+)/(?P<display_id>.+)Frl   Nr]  r   r   r   r  r  6  r
  r   r  c                       e Zd ZdZdZdZy)WalyTVBaseIErH  
WalyTVBasewalytvNr{   r   r   r   r  r  6  r  r   r  c                       e Zd ZdZdZdZdZy)WalyTVIErH  WalyTVz(?x)https?://(?:www\.)?player\.waly\.tv/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  NrS  r   r   r   r  r  6  s    'GG nJNr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )WalyTVLiveIErH  
WalyTVLivez(?x)https?://(?:www\.)?player\.waly\.tv/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 P    t         j                  |      rdS t        |   |      S r   )r  r4   r   r   s     r   r4   zWalyTVLiveIE.suitable6  r  r   r  r   s   @r   r  r  6  s.    'GG cJNJ Jr   r  c                       e Zd ZdZdZdZdZy)WalyTVRecordingsIErH  WalyTVRecordingszw(?x)https?://(?:www\.)?player\.waly\.tv/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  NrS  r   r   r   r  r  6  s    'G G SJNr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )WashingtonPostArticleIEyt_dlp.extractor.washingtonpostzwashingtonpost:articlezAhttps?://(?:www\.)?washingtonpost\.com/(?:[^/]+/)*(?P<id>[^/?#]+)rm   c                 P    t         j                  |      rdS t        |   |      S r   )WashingtonPostIEr4   r   r   s     r   r4   z WashingtonPostArticleIE.suitable6  s%    (11#6uQEG<LS<QQr   r   r   s   @r   r  r  6  s+    /G&GVJLR Rr   r  c                       e Zd ZdZdZdZdZy)r  r  washingtonpostz(?:washingtonpost:|https?://(?:www\.)?washingtonpost\.com/(?:video|posttv)/(?:[^/]+/)*)(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})rl   Nr   r   r   r   r  r  6  s    /GG qJLr   r  c                       e Zd ZdZdZdZdZy)WatIEzyt_dlp.extractor.watzwat.tvz>(?:wat:|https?://(?:www\.)?wat\.tv/video/.*-)(?P<id>[0-9a-z]+)rl   Nr   r   r   r   r  r  6  s    $GGSJLr   r  c                       e Zd ZdZdZdZdZy)r  r  	WatchESPNzhttps?://(?:www\.)?espn\.com/(?:watch|espnplus)/player/_/id/(?P<id>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})rl   Nr   r   r   r   r  r  6  s    %GG VJLr   r  c                       e Zd ZdZdZdZdZy)WeTvEpisodeIEr  zwetv:episodezdhttps?://(?:www\.)?wetv\.vip/(?:[^?#]+/)?play/(?P<series_id>\w+)(?:-[^?#]+)?/(?P<id>\w+)(?:-[^?#]+)?rl   Nr   r   r   r   r  r  6  s    (GG{JLr   r  c                       e Zd ZdZdZdZdZy)WeTvSeriesIEr  
WeTvSerieszRhttps?://(?:www\.)?wetv\.vip/(?:[^?#]+/)?play/(?P<id>\w+)(?:-[^/?#]+)?/?(?:[?#]|$)rm   Nr   r   r   r   r  r  6  s    (GGhJLr   r  c                       e Zd ZdZdZdZdZy)WeVidiIEzyt_dlp.extractor.wevidiWeVidiz6https?://(?:www\.)?wevidi\.net/watch/(?P<id>[\w-]{11})rl   Nr   r   r   r   r  r  6  r  r   r  c                       e Zd ZdZdZdZdZy)WebOfStoriesIEyt_dlp.extractor.webofstoriesWebOfStorieszChttps?://(?:www\.)?webofstories\.com/play/(?:[^/]+/)?(?P<id>[0-9]+)rl   Nr   r   r   r   r  r  6  s    -GGXJLr   r  c                       e Zd ZdZdZdZdZy)WebOfStoriesPlaylistIEr  WebOfStoriesPlaylistz:https?://(?:www\.)?webofstories\.com/playAll/(?P<id>[^/]+)rm   Nr   r   r   r   r  r  6  s    -G$GOJLr   r  c                       e Zd ZdZdZdZdZy)WebcameraplIEzyt_dlp.extractor.webcameraplWebcameraplz&https?://(?P<id>[\w-]+)\.webcamera\.plrl   Nr   r   r   r   r  r  6  s    ,GG<JLr   r  c                       e Zd ZdZdZdZy)WebcasterFeedIEyt_dlp.extractor.webcasterWebcasterFeedz9https?://bl\.webcaster\.pro/feed/start/free_(?P<id>[^/]+)Nr  r   r   r   r  r  7  s    *GGNJr   r  c                       e Zd ZdZdZdZdZy)WebcasterIEr  	WebcasterzDhttps?://bl\.webcaster\.pro/(?:quote|media)/start/free_(?P<id>[^/]+)rl   Nr   r   r   r   r  r  
7  r  r   r  c                       e Zd ZdZdZy)WeiboBaseIEyt_dlp.extractor.weibo	WeiboBaseNr   r   r   r   r  r  7  r   r   r  c                       e Zd ZdZdZdZdZy)WeiboIEr  WeibozYhttps?://(?:m\.weibo\.cn/(?:status|detail)|(?:www\.)?weibo\.com/\d+)/(?P<id>[a-zA-Z0-9]+)r   Nr   r   r   r   r  r  7  s    &GGqJLr   r  c                       e Zd ZdZdZdZdZy)WeiboUserIEr  	WeiboUserz+https?://(?:www\.)?weibo\.com/u/(?P<id>\d+)r   Nr   r   r   r   r  r  7  s    &GGAJLr   r  c                        e Zd ZdZdZddgZdZy)WeiboVideoIEr  
WeiboVideozIhttps?://(?:www\.)?weibo\.com/tv/show/(?P<id>\d+:(?:[\da-f]{32}|\d{16,}))zUhttps?://video\.weibo\.com/show/?\?(?:[^#]+&)?fid=(?P<id>\d+:(?:[\da-f]{32}|\d{16,}))rl   Nr   r   r   r   r  r  $7  s#    &GGb  eB  CJLr   r  c                   $    e Zd ZdZdZdZdZdZdZy)	WeiqiTVIEzyt_dlp.extractor.weiqitvWeiqiTVzNhttps?://(?:www\.)?weiqitv\.com/index/video_play\?videoId=(?P<id>[A-Za-z0-9]+)FWQTVrl   Nrl  r   r   r   r  r  +7  s     (GGdJHGLr   r  c                       e Zd ZdZdZdZy)WeverseBaseIEyt_dlp.extractor.weverseWeverseBaseweverseNr{   r   r   r   r   r   47  r#  r   r   c                        e Zd ZdZdZdZdZdZy)	WeverseIEr  WeversezJhttps?://(?:www\.|m\.)?weverse\.io/(?P<artist>[^/?#]+)/live/(?P<id>[\d-]+)r  rl   Nr   r   r   r   r  r  :7  s    (GGaJNLr   r  c                        e Zd ZdZdZdZdZdZy)WeverseLiveIEr  WeverseLivez>https?://(?:www\.|m\.)?weverse\.io/(?P<id>[^/?#]+)/?(?:[?#]|$)r  rl   Nr   r   r   r   r  r  B7  s    (GGTJNLr   r  c                       e Zd ZdZdZdZy)WeverseTabBaseIEr  WeverseTabBaser  Nr{   r   r   r   r  r  J7  s    (GGNr   r  c                        e Zd ZdZdZdZdZdZy)WeverseLiveTabIEr  WeverseLiveTabzChttps?://(?:www\.|m\.)?weverse\.io/(?P<id>[^/?#]+)/live/?(?:[?#]|$)r  rm   Nr   r   r   r   r  r  P7  s    (GGYJNLr   r  c                        e Zd ZdZdZdZdZdZy)WeverseMediaIEr  WeverseMediazKhttps?://(?:www\.|m\.)?weverse\.io/(?P<artist>[^/?#]+)/media/(?P<id>[\d-]+)r  rl   Nr   r   r   r   r  r  X7  s    (GGbJNLr   r  c                        e Zd ZdZdZdZdZdZy)WeverseMediaTabIEr  WeverseMediaTabzRhttps?://(?:www\.|m\.)?weverse\.io/(?P<id>[^/?#]+)/media(?:/|/all|/new)?(?:[?#]|$)r  rm   Nr   r   r   r   r  r  `7  s    (GGhJNLr   r  c                        e Zd ZdZdZdZdZdZy)WeverseMomentIEr  WeverseMomentzchttps?://(?:www\.|m\.)?weverse\.io/(?P<artist>[^/?#]+)/moment/(?P<uid>[\da-f]+)/post/(?P<id>[\d-]+)r  rl   Nr   r   r   r   r  r  h7  s    (GG{JNLr   r  c                       e Zd ZdZdZdZdZy)
WhoWatchIEzyt_dlp.extractor.whowatchwhowatchz(https?://whowatch\.tv/viewer/(?P<id>\d+)FNr:  r   r   r   r  r  p7  s    )GG=JHr   r  c                       e Zd ZdZdZdZdZy)WhypIEzyt_dlp.extractor.whypWhypz.https?://(?:www\.)?whyp\.it/tracks/(?P<id>\d+)rl   Nr   r   r   r   r  r  w7  s    %GGDJLr   r  c                       e Zd ZdZdZdZdZy)WikimediaIEzyt_dlp.extractor.wikimediazwikimedia.orgz:https?://commons\.wikimedia\.org/wiki/File:(?P<id>[^/#?]+)rl   Nr   r   r   r   r   r   ~7  s    *GGOJLr   r   c                       e Zd ZdZdZdZdZy)WimTVIEzyt_dlp.extractor.wimtvWimTVz(?x:
        https?://platform\.wim\.tv/
        (?:
            (?:embed/)?\?
            |\#/webtv/.+?/
        )
        (?P<type>vod|live|cast)[=/]
        (?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}).*?)rl   Nr   r   r   r   r"  r"  7  s    &GG GJLr   r"  c                       e Zd ZdZdZdZdZy)WimbledonIEzyt_dlp.extractor.wimbledon	WimbledonzChttps?://(?:www\.)?wimbledon\.com/\w+/video/media/(?P<id>\d+)\.htmlrl   Nr   r   r   r   r%  r%  7  s    *GG[JLr   r%  c                       e Zd ZdZdZdZdZy)WinSportsVideoIErs  WinSportsVideoz1https?://www\.winsports\.co/videos/(?P<id>[\w-]+)rl   Nr   r   r   r   r(  r(  7  s    ,GGGJLr   r(  c                       e Zd ZdZdZy)WistiaBaseIEyt_dlp.extractor.wistia
WistiaBaseNr   r   r   r   r+  r+  7  rE  r   r+  c                       e Zd ZdZdZdZdZy)WistiaChannelIEr,  WistiaChannelza(?:wistiachannel:|https?://(?:\w+\.)?wistia\.(?:net|com)/(?:embed/)?channel/)(?P<id>[a-z0-9]{10})r   Nr   r   r   r   r/  r/  7  s    'GGwJLr   r/  c                       e Zd ZdZdZdZdZy)WistiaIEr,  Wistiazd(?:wistia:|https?://(?:\w+\.)?wistia\.(?:net|com)/(?:embed/)?(?:iframe|medias)/)(?P<id>[a-z0-9]{10})rl   Nr   r   r   r   r2  r2  7  s    'GGzJLr   r2  c                       e Zd ZdZdZdZdZy)WistiaPlaylistIEr,  WistiaPlaylistzPhttps?://(?:\w+\.)?wistia\.(?:net|com)/(?:embed/)?playlists/(?P<id>[a-z0-9]{10})rm   Nr   r   r   r   r5  r5  7  s    'GGfJLr   r5  c                       e Zd ZdZdZdZy)WordpressMiniAudioPlayerEmbedIEyt_dlp.extractor.wordpresszwordpress:mb.miniAudioPlayerFNr  r   r   r   r8  r8  7  s    *G,GJr   r8  c                       e Zd ZdZdZdZy)WordpressPlaylistEmbedIEr9  zwordpress:playlistFNr  r   r   r   r;  r;  7  s    *G"GJr   r;  c                       e Zd ZdZdZdZdZy)WorldStarHipHopIEz yt_dlp.extractor.worldstarhiphopWorldStarHipHopzfhttps?://(?:www|m)\.worldstar(?:candy|hiphop)\.com/(?:videos|android)/video\.php\?.*?\bv=(?P<id>[^&]+)rl   Nr   r   r   r   r=  r=  7  s    0GG~JLr   r=  c                        e Zd ZdZdZdZdZdZy)WrestleUniversePPVIEr  zwrestleuniverse:ppvzOhttps?://(?:www\.)?wrestle-universe\.com/(?:(?P<lang>\w{2})/)?lives/(?P<id>\w+)r  rl   Nr   r   r   r   r@  r@  7  s    0G#GfJ&NLr   r@  c                        e Zd ZdZdZdZdZdZy)WrestleUniverseVODIEr  zwrestleuniverse:vodzPhttps?://(?:www\.)?wrestle-universe\.com/(?:(?P<lang>\w{2})/)?videos/(?P<id>\w+)r  rl   Nr   r   r   r   rB  rB  7  s    0G#GgJ&NLr   rB  c                       e Zd ZdZdZdZdZy)WyborczaPodcastIEr  WyborczaPodcastz(?x)
        https?://(?:www\.)?(?:
            wyborcza\.pl/podcast(?:/0,172673\.html)?|
            wysokieobcasy\.pl/wysokie-obcasy/0,176631\.html
        )(?:\?(?:[^&#]+?&)*podcast=(?P<id>\d+))?
    r   Nr   r   r   r   rD  rD  7  s    &GG kJLr   rD  c                       e Zd ZdZdZdZdZy)WyborczaVideoIEr  zwyborcza:videozD(?:wyborcza:video:|https?://wyborcza\.pl/(?:api-)?video/)(?P<id>\d+)rl   Nr   r   r   r   rG  rG  7  s    &GGYJLr   rG  c                       e Zd ZdZdZy)WykopBaseIEyt_dlp.extractor.wykop	WykopBaseNr   r   r   r   rI  rI  7  r   r   rI  c                       e Zd ZdZdZdZdZy)WykopDigCommentIErJ  zwykop:dig:commentzMhttps?://(?:www\.)?wykop\.pl/link/(?P<dig_id>\d+)/[^/]+/komentarz/(?P<id>\d+)rl   Nr   r   r   r   rM  rM  7  s    &G!GdJLr   rM  c                   ,    e Zd ZdZdZdZdZed        Zy)
WykopDigIErJ  z	wykop:digz-https?://(?:www\.)?wykop\.pl/link/(?P<id>\d+)rl   c                 T    | j                  |      xr t        j                  |       S r'   )r1   rM  r4   r2   s     r   r4   zWykopDigIE.suitable7  s'    ##C(P1B1K1KC1P-PPr   N	r   r   r   r$   ra   r=   ro   rr   r4   r   r   r   rO  rO  7  s*    &GGCJLQ Qr   rO  c                       e Zd ZdZdZdZdZy)WykopPostCommentIErJ  zwykop:post:commentzEhttps?://(?:www\.)?wykop\.pl/wpis/(?P<post_id>\d+)/[^/#]+#(?P<id>\d+)rl   Nr   r   r   r   rS  rS  7  s    &G"G\JLr   rS  c                   ,    e Zd ZdZdZdZdZed        Zy)WykopPostIErJ  z
wykop:postz-https?://(?:www\.)?wykop\.pl/wpis/(?P<id>\d+)rm   c                 T    | j                  |      xr t        j                  |       S r'   )r1   rS  r4   r2   s     r   r4   zWykopPostIE.suitable	8  s'    ##C(Q1C1L1LS1Q-QQr   NrQ  r   r   r   rU  rU  8  s*    &GGCJLR Rr   rU  c                        e Zd ZdZdZdZdZdZy)XHamsterEmbedIEyt_dlp.extractor.xhamsterXHamsterEmbedzhttps?://(?:[^/?#]+\.)?(?:xhamster\.(?:com|one|desi)|xhms\.pro|xhamster\d+\.(?:com|desi)|xhday\.com|xhvid\.com)/xembed\.php\?video=(?P<id>\d+)r   rl   Nrw  r   r   r   rX  rX  8  s    )GG lJILr   rX  c                        e Zd ZdZdZdZdZdZy)
XHamsterIErY  XHamstera  (?x)
                    https?://
                        (?:[^/?#]+\.)?(?:xhamster\.(?:com|one|desi)|xhms\.pro|xhamster\d+\.(?:com|desi)|xhday\.com|xhvid\.com)/
                        (?:
                            movies/(?P<id>[\dA-Za-z]+)/(?P<display_id>[^/]*)\.html|
                            videos/(?P<display_id_2>[^/]*)-(?P<id_2>[\dA-Za-z]+)
                        )
                    r   rl   Nrw  r   r   r   r\  r\  8  s    )GG wJILr   r\  c                       e Zd ZdZdZdZdZy)XHamsterUserIErY  XHamsterUserzhttps?://(?:[^/?#]+\.)?(?:xhamster\.(?:com|one|desi)|xhms\.pro|xhamster\d+\.(?:com|desi)|xhday\.com|xhvid\.com)/(?:(?P<user>users)|creators)/(?P<id>[^/?#&]+)rm   Nr   r   r   r   r_  r_  8  s    )GG xJLr   r_  c                        e Zd ZdZdZdZdZdZy)XMinusIEzyt_dlp.extractor.xminusXMinusz4https?://(?:www\.)?x-minus\.org/track/(?P<id>[0-9]+)Frl   Nr]  r   r   r   rb  rb  %8  s    'GGIJHLr   rb  c                        e Zd ZdZdZdZdZdZy)XNXXIEzyt_dlp.extractor.xnxxXNXXz=https?://(?:video|www)\.xnxx3?\.com/video-?(?P<id>[0-9a-z]+)/r   rl   Nrw  r   r   r   re  re  -8  s    %GGRJILr   re  c                        e Zd ZdZdZdZdZdZy)	XVideosIEyt_dlp.extractor.xvideosXVideosa  (?x)
                    https?://
                        (?:
                            (?:[^/]+\.)?xvideos2?\.com/video\.?|
                            (?:www\.)?xvideos\.es/video\.?|
                            (?:www|flashservice)\.xvideos\.com/embedframe/|
                            static-hw\.xvideos\.com/swf/xv-player\.swf\?.*?\bid_video=
                        )
                        (?P<id>[0-9a-z]+)
                    r   rl   Nrw  r   r   r   rh  rh  58  s    (GG aJILr   rh  c                        e Zd ZdZdZdZdZdZy)XVideosQuickiesIEri  zxvideos:quickieszphttps?://(?P<domain>(?:[^/?#]+\.)?xvideos2?\.com)/(?:profiles/|amateur-channels/)?[^/?#]+#quickies/a/(?P<id>\w+)r   rl   Nrw  r   r   r   rl  rl  =8  s    (G G GJILr   rl  c                        e Zd ZdZdZdZdZdZy)XXXYMoviesIEzyt_dlp.extractor.xxxymovies
XXXYMovieszKhttps?://(?:www\.)?xxxymovies\.com/videos/(?P<id>\d+)/(?P<display_id>[^/]+)r   rl   Nrw  r   r   r   rn  rn  E8  s    +GGaJILr   rn  c                       e Zd ZdZdZdZdZy)XboxClipsIEzyt_dlp.extractor.xboxclips	XboxClipszhttps?://(?:www\.)?(?:xboxclips\.com|gameclips\.io)/(?:video\.php\?.*vid=|[^/]+/)(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})rl   Nr   r   r   r   rq  rq  M8  s    *GG ]JLr   rq  c                        e Zd ZdZdZdZdZdZy)XiaoHongShuIEzyt_dlp.extractor.xiaohongshuXiaoHongShuzJhttps?://www\.xiaohongshu\.com/(?:explore|discovery/item)/(?P<id>[\da-f]+)u	   小红书rl   Nr   r   r   r   rt  rt  T8  s    ,GG`JGLr   rt  c                       e Zd ZdZdZy)XimalayaBaseIEyt_dlp.extractor.ximalayaXimalayaBaseNr   r   r   r   rw  rw  \8  r  r   rw  c                        e Zd ZdZdZdZdZdZy)XimalayaAlbumIErx  zximalaya:albumzBhttps?://(?:www\.|m\.)?ximalaya\.com/(?:\d+/)?album/(?P<id>[0-9]+)u   喜马拉雅FM 专辑rm   Nr   r   r   r   r{  r{  a8  s    )GGYJ%GLr   r{  c                        e Zd ZdZdZdZdZdZy)
XimalayaIErx  ximalayazKhttps?://(?:www\.|m\.)?ximalaya\.com/(?:(?P<uid>\d+)/)?sound/(?P<id>[0-9]+)u   喜马拉雅FMrl   Nr   r   r   r   r}  r}  i8  s    )GGbJGLr   r}  c                        e Zd ZdZdZdZdZdZy)XinpianchangIEzyt_dlp.extractor.xinpianchangXinpianchangz/https?://(www\.)?xinpianchang\.com/(?P<id>a\d+)u	   新片场rl   Nr   r   r   r   r  r  q8  s    -GGEJGLr   r  c                       e Zd ZdZdZdZdZy)YahooIEyt_dlp.extractor.yahooyahooz(?P<url>https?://(?:(?P<country>[a-zA-Z]{2}(?:-[a-zA-Z]{2})?|malaysia)\.)?(?:[\da-zA-Z_-]+\.)?yahoo\.com/(?:[^/]+/)*(?P<id>[^?&#]*-[0-9]+(?:-[a-z]+)?)\.html)r   Nr   r   r   r   r  r  y8  s    &GG vJLr   r  c                        e Zd ZdZdZdZdZdZy)AolIEzyt_dlp.extractor.aolzaol.comz(?:aol-video:|https?://(?:www\.)?aol\.(?:com|ca|co\.uk|de|jp)/video/(?:[^/]+/)*)(?P<id>\d{9}|[0-9a-f]{24}|[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12})Frl   Nr]  r   r   r   r  r  8  s    $GG nJHLr   r  c                        e Zd ZdZdZdZdZdZy)YahooJapanNewsIEr  zyahoo:japannewszFhttps?://news\.yahoo\.co\.jp/(?:articles|feature)/(?P<id>[a-zA-Z0-9]+)zYahoo! Japan Newsrl   Nr   r   r   r   r  r  8  s    &GG\J!GLr   r  c                        e Zd ZdZdZdZdZdZy)YahooSearchIEr  zyahoo:searchz7yvsearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)yvsearchrm   N)r   r   r   r$   ra   r=   r\   ro   r   r   r   r  r  8  s    &GGLJJLr   r  c                       e Zd ZdZdZdZdZy)YandexDiskIEzyt_dlp.extractor.yandexdisk
YandexDiska  (?x)https?://
        (?P<domain>
            yadi\.sk|
            disk\.(?:360\.)?yandex\.
                (?:
                    az|
                    by|
                    co(?:m(?:\.(?:am|ge|tr))?|\.il)|
                    ee|
                    fr|
                    k[gz]|
                    l[tv]|
                    md|
                    t[jm]|
                    u[az]|
                    ru
                )
        )/(?:[di]/|public.*?\bhash=)(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r  8  s    +GG SJLr   r  c                       e Zd ZdZdZy)YandexMusicBaseIEyt_dlp.extractor.yandexmusicYandexMusicBaseNr   r   r   r   r  r  8  r  r   r  c                       e Zd ZdZdZy)YandexMusicPlaylistBaseIEr  YandexMusicPlaylistBaseNr   r   r   r   r  r  8  r  r   r  c                   <     e Zd ZdZdZdZdZdZe fd       Z	 xZ
S )YandexMusicAlbumIEr  zyandexmusic:albumzBhttps?://music\.yandex\.(?P<tld>ru|kz|ua|by|com)/album/(?P<id>\d+)u(   Яндекс.Музыка - Альбомrm   c                 P    t         j                  |      rdS t        |   |      S r   )YandexMusicTrackIEr4   r   r   s     r   r4   zYandexMusicAlbumIE.suitable8  r  r   r  r   s   @r   r  r  8  s0    ,G!GXJ8GLT Tr   r  c                       e Zd ZdZdZy)YandexMusicArtistBaseIEr  YandexMusicArtistBaseNr   r   r   r   r  r  8  s    ,G%Gr   r  c                        e Zd ZdZdZdZdZdZy)YandexMusicArtistAlbumsIEr  zyandexmusic:artist:albumszJhttps?://music\.yandex\.(?P<tld>ru|kz|ua|by|com)/artist/(?P<id>\d+)/albumsu9   Яндекс.Музыка - Артист - Альбомыrm   Nr   r   r   r   r  r  8  s    ,G)G`JIGLr   r  c                        e Zd ZdZdZdZdZdZy)YandexMusicArtistTracksIEr  zyandexmusic:artist:trackszJhttps?://music\.yandex\.(?P<tld>ru|kz|ua|by|com)/artist/(?P<id>\d+)/tracksu5   Яндекс.Музыка - Артист - Трекиrm   Nr   r   r   r   r  r  8  s    ,G)G`JEGLr   r  c                        e Zd ZdZdZdZdZdZy)YandexMusicPlaylistIEr  zyandexmusic:playlistz\https?://music\.yandex\.(?P<tld>ru|kz|ua|by|com)/users/(?P<user>[^/]+)/playlists/(?P<id>\d+)u,   Яндекс.Музыка - Плейлистrm   Nr   r   r   r   r  r  8  s    ,G$GrJ<GLr   r  c                        e Zd ZdZdZdZdZdZy)r  r  zyandexmusic:trackzZhttps?://music\.yandex\.(?P<tld>ru|kz|ua|by|com)/album/(?P<album_id>\d+)/track/(?P<id>\d+)u$   Яндекс.Музыка - Трекrl   Nr   r   r   r   r  r  8  s    ,G!GqJ4GLr   r  c                        e Zd ZdZdZdZdZdZy)YandexVideoIEyt_dlp.extractor.yandexvideoYandexVideoaA  (?x)
                    https?://
                        (?:
                            yandex\.ru(?:/(?:portal/(?:video|efir)|efir))?/?\?.*?stream_id=|
                            frontend\.vh\.yandex\.ru/player/
                        )
                        (?P<id>(?:[\da-f]{32}|[\w-]{12}))
                    r   rl   Nrw  r   r   r   r  r  8  s    ,GG cJILr   r  c                       e Zd ZdZdZdZdZy)YandexVideoPreviewIEr  YandexVideoPreviewzehttps?://(?:www\.)?yandex\.\w{2,3}(?:\.(?:am|ge|il|tr))?/video/preview(?:/?\?.*?filmId=|/)(?P<id>\d+)rl   Nr   r   r   r   r  r  8  s    ,G"G~JLr   r  c                        e Zd ZdZdZdZdZdZy)
YapFilesIEzyt_dlp.extractor.yapfilesYapFileszHhttps?://(?:(?:www|api)\.)?yapfiles\.ru/get_player/*\?.*?\bv=(?P<id>\w+)Frl   Nr]  r   r   r   r  r  8  s    )GG`JHLr   r  c                        e Zd ZdZdZdZdZdZy)YappyIEyt_dlp.extractor.yappyYappyz'https?://yappy\.media/video/(?P<id>\w+)Frl   Nr]  r   r   r   r  r  8  s    &GG<JHLr   r  c                       e Zd ZdZdZdZdZy)YappyProfileIEr  YappyProfilez)https?://yappy\.media/profile/(?P<id>\w+)rm   Nr   r   r   r   r  r  8  s    &GG>JLr   r  c                       e Zd ZdZdZdZdZy)	YfanefaIEzyt_dlp.extractor.yfanefayfanefaz.https?://(?:www\.)?yfanefa\.com/(?P<id>[^?#]+)rl   Nr   r   r   r   r  r   9  r>  r   r  c                        e Zd ZdZdZdZdZdZy)YleAreenaIEzyt_dlp.extractor.yle_areena	YleAreenaz?https?://areena\.yle\.fi/(?P<podcast>podcastit/)?(?P<id>[\d-]+)   rl   Nrw  r   r   r   r  r  9  s    +GGUJILr   r  c                        e Zd ZdZdZdZdZdZy)	YouJizzIEzyt_dlp.extractor.youjizzYouJizzz\https?://(?:\w+\.)?youjizz\.com/videos/(?:[^/#?]*-(?P<id>\d+)\.html|embed/(?P<embed_id>\d+))r   rl   Nrw  r   r   r   r  r  9  rb  r   r  c                       e Zd ZdZdZdZdZy)YouNowChannelIEyt_dlp.extractor.younowYouNowChannelz4https?://(?:www\.)?younow\.com/(?P<id>[^/]+)/channelrm   Nr   r   r   r   r  r  9  s    'GGIJLr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )YouNowLiveIEr  
YouNowLivez/https?://(?:www\.)?younow\.com/(?P<id>[^/?#&]+)rl   c                 z    t         j                  |      st        j                  |      rdS t        |   |      S r   )r  r4   YouNowMomentIEr   r   s     r   r4   zYouNowLiveIE.suitable$9  s<     #++C0N4K4KC4P  	,W%c*	,r   r   r   s   @r   r  r  9  s)    'GGDJL, ,r   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )r  r  YouNowMomentz5https?://(?:www\.)?younow\.com/[^/]+/(?P<id>[^/?#&]+)rl   c                 P    t         j                  |      rdS t        |   |      S r   )r  r4   r   r   s     r   r4   zYouNowMomentIE.suitable19  s/     #++C0  	,W%c*	,r   r   r   s   @r   r  r  +9  s)    'GGJJL, ,r   r  c                       e Zd ZdZdZy)YouPornListBaseIEyt_dlp.extractor.youpornYouPornListBaseNr   r   r   r   r  r  89  r  r   r  c                        e Zd ZdZdZdZdZdZy)YouPornCategoryIEr  YouPornCategoryz(?x)
        https?://(?:www\.)?youporn\.com/
        (?P<type>category)/(?P<id>[^/?#&]+)
        (?:/(?P<sort>popular|views|rating|time|duration))?/?(?:[#?]|$)
    z8YouPorn category, with sorting, filtering and paginationrm   Nr   r   r   r   r  r  =9  s    (GG JHGLr   r  c                        e Zd ZdZdZdZdZdZy)YouPornChannelIEr  YouPornChannelz(?x)
        https?://(?:www\.)?youporn\.com/
        (?P<type>channel)/(?P<id>[^/?#&]+)
        (?:/(?P<sort>rating|views|duration))?/?(?:[#?]|$)
    z,YouPorn channel, with sorting and paginationrm   Nr   r   r   r   r  r  E9  s    (GG qJ<GLr   r  c                        e Zd ZdZdZdZdZdZy)YouPornCollectionIEr  YouPornCollectionz(?x)
        https?://(?:www\.)?youporn\.com/
        (?P<type>collection)s/videos/(?P<id>\d+)
        (?:/(?P<sort>rating|views|time|duration))?/?(?:[#?]|$)
    z?YouPorn collection (user playlist), with sorting and paginationrm   Nr   r   r   r   r  r  M9  s    (G!G }JOGLr   r  c                        e Zd ZdZdZdZdZdZy)	YouPornIEr  YouPornzehttps?://(?:www\.)?youporn\.com/(?:watch|embed)/(?P<id>\d+)(?:/(?P<display_id>[^/?#&]+))?/?(?:[#?]|$)r   rl   Nrw  r   r   r   r  r  U9  rp  r   r  c                        e Zd ZdZdZdZdZdZy)YouPornStarIEr  YouPornStarz(?x)
        https?://(?:www\.)?youporn\.com/
        (?P<type>pornstar)/(?P<id>[^/?#&]+)
        (?:/(?P<sort>rating|views|duration))?/?(?:[#?]|$)
    z:YouPorn Pornstar, with description, sorting and paginationrm   Nr   r   r   r   r  r  ]9  s    (GG rJJGLr   r  c                        e Zd ZdZdZdZdZdZy)YouPornTagIEr  
YouPornTagz(?x)
        https?://(?:www\.)?youporn\.com/
        porn(?P<type>tag)s/(?P<id>[^/?#&]+)
        (?:/(?P<sort>views|rating|time|duration))?/?(?:[#?]|$)
    z>YouPorn tag (porntags), with sorting, filtering and paginationrm   Nr   r   r   r   r  r  e9  s    (GG wJNGLr   r  c                        e Zd ZdZdZdZdZdZy)YouPornVideosIEr  YouPornVideosz(?x)
        https?://(?:www\.)?youporn\.com/
            (?:(?P<id>browse)/)?
            (?P<sort>(?(id)
                (?:duration|rating|time|views)|
                (?:most_(?:favou?rit|view)ed|recommended|top_rated)?))
            (?:[/#?]|$)
    zHYouPorn video (browse) playlists, with sorting, filtering and paginationrm   Nr   r   r   r   r  r  m9  s    (GG [JXGLr   r  c                        e Zd ZdZdZdZdZdZy)YoukuIEyt_dlp.extractor.youkuyoukuz(?x)
        (?:
            https?://(
                (?:v|play(?:er)?)\.(?:youku|tudou)\.com/(?:v_show/id_|player\.php/sid/)|
                video\.tudou\.com/v/)|
            youku:)
        (?P<id>[A-Za-z0-9]+)(?:\.html|/v\.swf|)
    u   优酷rl   Nr   r   r   r   r  r  u9  s    &GG RJGLr   r  c                       e Zd ZdZdZdZdZy)YoukuShowIEr  z
youku:showz9https?://list\.youku\.com/show/id_(?P<id>[0-9a-z]+)\.htmlrm   Nr   r   r   r   r  r  }9  s    &GGOJLr   r  c                        e Zd ZdZdZdZdZdZy)YoutubeWebArchiveIEr  zweb.archive:youtubeaE  (?x)(?:(?P<prefix>ytarchive:)|
            (?:https?://)?web\.archive\.org/
            (?:web/)?(?:(?P<date>[0-9]{14})?[0-9A-Za-z_*]*/)?  # /web and the version index is optional
            (?:https?(?::|%3[Aa])//)?(?:
                (?:\w+\.)?youtube\.com(?::(?:80|443))?/watch(?:\.php)?(?:\?|%3[fF])(?:[^\#]+(?:&|%26))?v(?:=|%3[dD])  # Youtube URL
                |(?:wayback-fakeurl\.archive\.org/yt/)  # Or the internal fake url
            )
        )(?P<id>[0-9A-Za-z_-]{11})
        (?(prefix)
            (?::(?P<date2>[0-9]{14}))?$|
            (?:%26|[#&]|$)
        )z9web.archive.org saved youtube videos, "ytarchive:" prefixrl   Nr   r   r   r   r  r  9  s    +G#G n	JIGLr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )ZDFChannelIEr  zzdf:channelz2https?://www\.zdf\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)r   c                 P    t         j                  |      rdS t        |   |      S r   )ZDFIEr4   r   r   s     r   r4   zZDFChannelIE.suitable9  r  r   r   r   s   @r   r  r  9  s+    $GGGJLG Gr   r  c                        e Zd ZdZdZg dZdZy)r  r  zdf)zFhttps?://(?:www\.)?zdf\.de/(?:video|play)/(?:[^/?#]+/)*(?P<id>[^/?#]+)z=https?://(?:www\.)?zdf\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)\.htmlzKhttps?://(?:www\.)?(?:zdfheute|logo)\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)\.htmlrl   Nr   r   r   r   r  r  9  s    $GG tJLr   r  c                       e Zd ZdZdZy)ZaikoBaseIEyt_dlp.extractor.zaiko	ZaikoBaseNr   r   r   r   r  r  9  r   r   r  c                       e Zd ZdZdZdZdZy)ZaikoETicketIEr  ZaikoETicketz>https?://(?:www.)?zaiko\.io/account/eticket/(?P<id>[\w=-]{49})rm   Nr   r   r   r   r  r  9  s    &GGSJLr   r  c                       e Zd ZdZdZdZdZy)ZaikoIEr  ZaikozAhttps?://(?:[\w-]+\.)?zaiko\.io/event/(?P<id>\d+)/stream(?:/\d+)+rl   Nr   r   r   r   r  r  9  s    &GGYJLr   r  c                        e Zd ZdZdZdZdZdZy)ZanIEzyt_dlp.extractor.zanzanz@https?://(www\.)?zan-live\.com/[^/?#]+/live/play/\d+/(?P<id>\d+)zZ-aNrl   Nr   r   r   r   r  r  9  s    $GGWJGLr   r  c                        e Zd ZdZdZddgZdZy)ZapiksIEzyt_dlp.extractor.zapiksZapiksz:https?://(?:www\.)?zapiks\.(?:com|fr)/(?P<id>[\w-]+)\.htmlzIhttps?://(?:www\.)?zapiks\.fr/index\.php\?(?:[^#]+&)?media_id=(?P<id>\d+)rl   Nr   r   r   r   r  r  9  s#    'GGR  Ue  fJLr   r  c                       e Zd ZdZdZdZy)ZattooBaseIErH  
ZattooBasezattooNr{   r   r   r   r  r  9  r  r   r  c                        e Zd ZdZdZdZdZdZy)ZattooIErH  Zattooz(?x)https?://(?:www\.)?zattoo\.com/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  rl   Nr   r   r   r   r  r  9  s    'GG hJNLr   r  c                   8     e Zd ZdZdZdZdZe fd       Z xZ	S )ZattooLiveIErH  
ZattooLivez(?x)https?://(?:www\.)?zattoo\.com/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 P    t         j                  |      rdS t        |   |      S r   )r  r4   r   r   s     r   r4   zZattooLiveIE.suitable9  r  r   r  r   s   @r   r  r  9  s.    'GG ]JNJ Jr   r  c                       e Zd ZdZdZdZdZy)ZattooMoviesIErH  ZattooMoviesz(?x)https?://(?:www\.)?zattoo\.com/(?:
        [^?#]+\?(?:[^#]+&)?movie_id=(?P<vid2>\w+)
        |vod/movies/(?P<vid1>\w+)
    )r  NrS  r   r   r   r  r  9  s    'GG \JNr   r  c                       e Zd ZdZdZdZdZy)ZattooRecordingsIErH  ZattooRecordingszr(?x)https?://(?:www\.)?zattoo\.com/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  NrS  r   r   r   r  r  9  s    'G G MJNr   r  c                   $    e Zd ZdZdZdZdZdZdZy)	ZeeNewsIEzyt_dlp.extractor.zeenewsZeeNewsNzMhttps?://zeenews\.india\.com/[^#?]+/video/(?P<display_id>[^#/?]+)/(?P<id>\d+)Frl   r&  r   r   r   r  r  9  s     (GGHcJHLr   r  c                        e Zd ZdZdZdZdZdZy)	ZenPornIEzyt_dlp.extractor.zenpornZenPornz1https?://(?:www\.)?zenporn\.com/video/(?P<id>\d+)r   rl   Nrw  r   r   r   r  r  9  s    (GGGJILr   r  c                       e Zd ZdZdZy)ZenYandexBaseIEr  ZenYandexBaseNr   r   r   r   r  r  9  s    ,GGr   r  c                       e Zd ZdZdZdZdZy)ZenYandexChannelIEr  zdzen.ru:channelzJhttps?://(zen\.yandex|dzen)\.ru/(?!media|video)(?:id/)?(?P<id>[a-z0-9-_]+)rm   Nr   r   r   r   r  r  9  s    ,GG_JLr   r  c                        e Zd ZdZdZdZdZdZy)ZenYandexIEr  zdzen.ruzshttps?://(zen\.yandex|dzen)\.ru(?:/video)?/(media|watch)/(?:(?:id/[^/]+/|[^/]+/)(?:[a-z0-9-]+)-)?(?P<id>[a-z0-9-]+)u;   Дзен (dzen) formerly Яндекс.Дзен (Yandex Zen)rl   Nr   r   r   r   r   r   :  s    ,GG IJKGLr   r   c                       e Zd ZdZdZdZdZy)ZetlandDKArticleIEzyt_dlp.extractor.zetlandZetlandDKArticlezZhttps?://www\.zetland\.dk/\w+/(?P<id>(?P<story_id>\w{8})-(?P<uploader_id>\w{8})-(?:\w{5}))rl   Nr   r   r   r   r"  r"  :  s    (G GsJLr   r"  c                       e Zd ZdZdZdZdZy)ZhihuIEzyt_dlp.extractor.zhihuZhihuz3https?://(?:www\.)?zhihu\.com/zvideo/(?P<id>[0-9]+)rl   Nr   r   r   r   r%  r%  :  s    &GGHJLr   r%  c                       e Zd ZdZdZy)ZingMp3BaseIEyt_dlp.extractor.zingmp3ZingMp3BaseNr   r   r   r   r(  r(  :  r   r   r(  c                       e Zd ZdZdZdZdZy)ZingMp3AlbumIEr)  zzingmp3:albumz`https?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>(?:album|playlist))/[^/?#]+/(?P<id>\w+)(?:\.html|\?)rm   Nr   r   r   r   r,  r,  :  r  r   r,  c                       e Zd ZdZdZdZdZy)ZingMp3ChartHomeIEr)  zzingmp3:chart-homezkhttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<id>(?:zing-chart|moi-phat-hanh|top100|podcast-discover))/?(?:[#?]|$)rm   Nr   r   r   r   r.  r.  &:  s    (G"G AJLr   r.  c                       e Zd ZdZdZdZdZy)ZingMp3ChartMusicVideoIEr)  zzingmp3:chart-music-videoz]https?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>the-loai-video)/(?P<regions>[^/]+)/(?P<id>[^\.]+)rm   Nr   r   r   r   r0  r0  -:  s    (G)GsJLr   r0  c                       e Zd ZdZdZdZdZy)ZingMp3HubIEr)  zzingmp3:hubzIhttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>hub)/[^/?#]+/(?P<id>[^./?#]+)rm   Nr   r   r   r   r2  r2  4:  s    (GG^JLr   r2  c                        e Zd ZdZdZdZdZdZy)	ZingMp3IEr)  zingmp3znhttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>(?:bai-hat|video-clip|embed|eps))/[^/?#]+/(?P<id>\w+)(?:\.html|\?)z
zingmp3.vnrl   Nr   r   r   r   r4  r4  ;:  s    (GG GJGLr   r4  c                       e Zd ZdZdZdZdZy)ZingMp3LiveRadioIEr)  zzingmp3:liveradiozShttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>(?:liveradio))/(?P<id>\w+)(?:\.html|\?)rl   Nr   r   r   r   r7  r7  C:  s    (G!GkJLr   r7  c                       e Zd ZdZdZdZdZy)ZingMp3PodcastEpisodeIEr)  zzingmp3:podcast-episodezYhttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>(?:pgr|cgr))/[^/?#]+/(?P<id>\w+)(?:\.html|\?)rm   Nr   r   r   r   r9  r9  J:  s    (G'GqJLr   r9  c                       e Zd ZdZdZdZdZy)ZingMp3PodcastIEr)  zzingmp3:podcastzVhttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<id>(?:cgr|top-podcast|podcast-new))/?(?:[#?]|$)rm   Nr   r   r   r   r;  r;  Q:  s    (GGkJLr   r;  c                       e Zd ZdZdZdZdZy)ZingMp3UserIEr)  zzingmp3:userzhhttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<user>[^/]+)/(?P<type>bai-hat|single|album|video|song)/?(?:[?#]|$)rm   Nr   r   r   r   r=  r=  X:  s    (GG}JLr   r=  c                       e Zd ZdZdZdZdZy)ZingMp3WeekChartIEr)  zzingmp3:week-chartzahttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>(?:zing-chart-tuan))/[^/?#]+/(?P<id>\w+)(?:\.html|\?)rm   Nr   r   r   r   r?  r?  _:  s    (G"GyJLr   r?  c                       e Zd ZdZdZdZdZy)ZoomClipsIEyt_dlp.extractor.zoomz
zoom:clipsz9https?://(?:[^.]+\.)?zoom\.us/clips/share/(?P<id>[\w.-]+)rl   Nr   r   r   r   rA  rA  f:  s    %GGOJLr   rA  c                       e Zd ZdZdZdZdZy)ZoomIErB  zoomz_(?P<base_url>https?://(?:[^.]+\.)?zoom\.us/)rec(?:ording)?/(?P<type>play|share)/(?P<id>[\w.-]+)rl   Nr   r   r   r   rD  rD  m:  s    %GGuJLr   rD  c                       e Zd ZdZdZdZdZy)ZypeIEzyt_dlp.extractor.zypeZypezwhttps?://player\.zype\.com/embed/(?P<id>[\da-fA-F]+)\.(?:js|json|html)\?.*?(?:access_token|(?:ap[ip]|player)_key)=[^&]+rl   Nr   r   r   r   rG  rG  t:  s    %GG PJLr   rG  c                   (    e Zd ZdZdZdZdZdZdZdZ	y)		GenericIEzyt_dlp.extractor.genericgenericz.*z+Generic downloader that works on some sitesFr   r   Nr  r   r   r   rJ  rJ  {:  s%    (GGJ;GNILr   rJ  (  r"   r]   r@   utilsr   r   r   r   r   r   r   typer   r    ru   rw   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r  r  r  r%  r(  r+  r/  r3  r6  r8  r<  r@  rC  rG  rJ  rM  rS  rU  rX  rZ  r\  r_  rb  re  rh  rk  ro  rr  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r
  r  r  r  r  r  r  r   r$  r'  r)  r+  r.  r1  r4  r7  r9  r;  r?  rA  rG  rL  rQ  rU  rY  r\  r_  rc  re  rh  rj  rn  rq  rt  rv  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r%  r(  r,  r/  r2  r6  r9  r=  r@  rC  rG  rI  rL  rO  rR  rU  rX  r[  r^  ra  rg  rj  rm  rp  rs  rv  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r%  r)  r,  r/  r2  r7  r:  r=  r@  rC  rF  rI  rK  rN  rR  rU  rY  r\  r_  rb  re  rh  rm  rp  rs  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  r  r  r  r  r  r!  r$  r(  r+  r/  r2  r5  r9  r<  r@  rD  rG  rJ  rO  rQ  rT  rV  rX  rZ  r^  r`  rb  rh  rj  rl  rp  ru  rw  rr  rs  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r'  r*  r-  r0  r4  r6  r8  r<  r>  r@  rD  rG  rL  rO  rR  rU  rX  r[  r^  rb  re  rh  rk  rn  rr  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  r  r  r  r  r"  r&  r)  r-  r0  r3  r5  r9  r;  r>  rA  rC  rH  rK  rQ  rN  rV  rY  r\  r_  rc  rf  rj  rm  rq  ru  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  r  r  r  r  r!  r$  r(  r*  r-  r0  r2  r5  r8  r;  r@  rD  rG  rK  rN  rQ  rU  rX  r[  r^  ra  re  rh  rl  ro  rr  rv  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r	  r	  r
	  r	  r	  r	  r	  r	  r	  r!	  r#	  r%	  r(	  r,	  r0	  r3	  r7	  r;	  r>	  rA	  rC	  rF	  rH	  rJ	  rM	  rP	  rS	  rU	  rX	  r]	  r`	  rc	  rf	  ri	  rl	  ro	  ru	  rw	  ry	  r{	  r~	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r!
  r#
  r%
  r)
  r+
  r.
  r0
  r3
  r7
  r;
  r>
  rA
  rE
  rI
  rL
  rP
  rT
  rW
  rY
  r]
  r`
  rc
  rf
  rj
  rm
  rq
  rt
  rx
  r}
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r   r  r	  r  r  r  r  r  r  r"  r%  r'  r*  r-  r1  r4  r7  r9  r<  r@  rB  rD  rG  rK  rO  rT  rV  rY  r\  r_  rc  re  rh  rl  ro  rr  rv  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r   r$  r'  r+  r.  r2  r6  r9  r<  r?  rC  rF  rH  rJ  rL  rP  rS  rV  rY  r\  r_  rc  re  rj  rm  ro  rq  rt  rw  ry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r!  r$  r'  r*  r-  r0  r3  r7  r:  r=  rA  rD  rF  rK  rM  rO  rQ  rS  rU  rX  r\  r_  rc  rf  ri  rm  ro  rq  rs  ru  rw  ry  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r!  r$  r(  r+  r-  r/  r2  r5  r8  r;  r>  rA  rC  rE  rG  rI  rL  rP  rS  rV  rY  r]  r`  rc  rf  rj  rm  rq  rt  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r'  r)  r,  r/  r3  r6  r8  r<  r>  rB  rD  rG  rK  rO  rQ  rT  rV  rY  r\  r`  rd  rg  rj  rm  rq  rt  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r%  r'  r*  r.  r2  r4  r7  r:  r<  r>  r@  rB  rE  rI  rL  rP  rS  rU  rY  r]  ra  rd  rg  rj  rn  rq  rv  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r
  r  r  r  r  r  r  r  r"  r%  r(  r+  r.  r1  r4  r8  r<  r@  rC  rF  rJ  rM  rP  rS  rW  rZ  r]  r`  rd  rg  rj  rm  rp  rs  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r
  r  r  r  r  r  r  r  r"  r%  r(  r-  r/  r1  r4  r7  r;  r>  rB  rE  rH  rL  rO  rR  rV  rY  r\  r_  rb  re  rh  rk  rn  rr  ru  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r$  r)  r,  r0  r4  r6  r9  r;  r>  r@  rC  rE  rG  rI  rK  rO  rQ  rT  rV  rX  rZ  r\  r^  r`  rd  rg  rj  rn  rq  rt  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r   r#  r&  r*  r-  r/  r1  r3  r5  r8  r<  rA  rE  rH  rK  rN  rQ  rU  rW  rY  r]  r`  rb  re  rg  ri  rm  rp  rt  rv  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r"  r%  r(  r,  r/  r2  r5  r9  r=  r@  rB  rE  rG  rJ  rL  rN  rQ  rT  rW  rZ  r^  r`  rb  re  ri  rm  rq  rt  rw  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r
  r  r  r  r  r  r  r!  r"  r   r  r*  r.  r0  r2  r4  r7  r9  r;  r>  rA  rD  rH  rJ  rL  rO  rR  rU  rY  r\  r_  rc  rf  ri  rl  ro  rr  rv  ry  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r%  r'  r+  r.  r1  r3  r5  r7  r9  r;  r=  r?  rA  rC  rE  rG  rJ  rM  rP  rT  rW  rZ  r]  r`  rb  re  ri  rk  ro  rs  rv  rx  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r"  r%  r(  r+  r/  r2  r5  r8  r;  r=  r@  rB  rD  rG  rI  rM  rO  rS  rU  rX  r\  r_  rb  re  rh  rl  rn  rq  rt  rw  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r%  r(  r,  r.  r0  r2  r4  r7  r9  r;  r=  r?  rA  rD  rG  rJ  _CLASS_LOOKUPr   r   r   <module>rO     s    	  Z 
- -cL"3 cLL	/ 	0 ": / 7 2  8 0 %( %&7 9 8 %0 %&4 13J 4  8 6 
K. 
K3 4 2 , .  " , & ! # 
I[ Ik /! /I ) % 
 %  !* !
' / *  0 " !  
U %  ] ( 
% # - & & # 
; 
,   !' !O / o o ' # ( ! " % 
 } $ , %  IG I# 
"+ "
, #  !* !
' - - ' % - "3  ( % 
-  }     & ' e' e$   # $ 

'| 
'% | | !* !
' - $ * % # # ( 
) * ( # $ 
| | & DH D( ! +#4 +
; 8 $- $
- ,I ,#, #
& k I+ I # # 
[ k +  # ! )  $ $ 
l | " 
,j 
,& z % 
  % " "  $ "  )  
 % 
M m ]   & 
 ^ n )  [( [.  &   ~ " "+ "
. ) * #> #
+ 1 ". "
&1 &
V6 V5 0 2 . . 2 ' ) " " / K$5 K% (   ! # ! #   % &    &   >  ( ( '  ' '    
!* !
" # * "+ "
) %+ %0 / $ # " ) "   $ l | < | |  # # + % 
] 
     
& ]  % * ( ' 
/  %   #   # $  #  &  & & '  ! " & # L# L! '   $ ! # % ' % 
= ' % $ & ! 
	 ( ' 
 / ' 
T T $ " 
z # ' * #    ' ( \ 
^ # *    ! ! & ( , %  ! * '- ''&; '#B - = % m     ! 
) I I% I" k #  " $ $   #  \$ \| , ! 
y # ' 
/  ##4 #0 # < #5 3 1 % 
m ] "( "# ) " 
l lZ " 
LZ L %   & . $  # , + " " 0 ) / ) . &k &
6 o. o6   $ 
| # 
+  ! ! ! 
	 ! ! ' ! ! #, #
+ 
  # $ % 
  ' g% g&  " & k I+ I %  % 
m m " 
: Z . ) Q- Q 3   # (   !   & ' !  ! ) $ !   +   & # # "  ! E E"  % " . - & $ L   $ 
| <  !  $ '   ! ! %   )     &/ &
1 ( 
# % ' # " & 
 (  & # ! (  )  
' " ( 1 (
. . $ 
| \ # $ '- '' 5 '
67 
6- 7  # N !   " )   , & 
%^ %
0 + ~  - + " " "   %   & # % + # 
k { # %. %%) %Q- Q% 3 % !* !
!3 , + !3 , I& I $ 
L | ' ;    # % !  " + % , ! $   $ ! I % " # % " Z Z % 
=  ) # $  #  )  
%   ' # + "3 ! & % 
 ' m ( ! " % 
]  % " #    ! 
9 I   )  
% , #   % 
m  !  ! * N& N) #, #
( 3 + , % % 
 
* 
[ K   #  " # 
! !
% ' k   (  ' 
/ &  &o &
, - ( 2 !   & , , (  !  # k k +   !  % $ ! Y # & 
n ~  ^ ^ ^     ! # # ! " ( %  )  
% ) " 
 	iZ 	i% 
    & # 0 ) / , # # 
K "  $ # & # " 
Z z $  + & " 
J Z Z   " #   $ % # $ ' 
/ /   #, #
+ '  ! , .  F$ F* $  &  ~     !   +   # "  # ( " %. %
T5 T/ " % % )  % 
= 
| |  $  # 
[ '    $ ! 
I  G G# ' | J< J   +   $ &   &/ &
+ 1 ' E' EIo I " ! ! 	K% 	K+ ! ! " " 
J Z ! ! $  )  
% ) " ' 
/ " Z * # f/ f  ' 
 / #   " $ ( ( $- $
3 0 / - # 
k 
_ ? k ! & 
 H^ H$ &  $ & 
 %^ %
/ +  ' $ # $5 $ $ % $ % $ % 
= " &   #  ! 
I y i & 
  ~ ^ & ! ! # #   % ! < 
 
9  I \ 
> n   % + #  * % g& g ! 
I  ! 
I ) % ! 
9 I y i ! 
I . Y & , ,
, 
,,& ,! * T" T! 
I  )  
% ) " & '  5W 5y 
	,$ 	,($ ( ! -   % 
} } .  " $  (  % U # 
k + #$ #l L | \ L $ "  $ 
 L !* !
, . ' + ) . - * / Mo MO " $ , ( #  #  -  1 - * # ' ! 
y Ji J ( 1 (
/'@ /
(H )I 5 %. %
B. B &   ^ / - & $- $
13J -/F 0 - & E( E! " ! "   $ &  ( #  " " % 
  m   %    % !  $ " '  & ' (   #, #
+ '  . ' . % # ) J Z /
 /  ( ($!% !} } ]  ]  & 
  !* !!/ !Mo M!O !# "  ! ! ! 
9 ) 	#: $;  & 
L~ L & 
T~ TQ Qn ! % 
S SM  /   $ 
 " # 
 ; % 
  # & 
   " * ! % & ' 
/ o - 	 % !   N! N$   " ' 
MO M/ $ 	J\ 	J| $  " "  )  
+ % ! # ) " # # % -  " . V. V!* !
' - , ( 1 (
5  9 # & " %  M !6 ,8 ,- )  : !  ! > ' ! # " # ' * ! (   % !   ( 
% % 
 ( m ' ] " !* !!/ !Mo M!O !$ 	F# 	F ! 
) I 9 & 
 	L~ 	LL> L &  \ & .  # 
[ + ; [     & 
N n  " 
Z *  J (    $ ! Ky KKi K$ 
f| fNL N / % ! % ) ( 1 (
4 4 #4 $ !* !
' + ' ) ! 
I 	 9 	 I ) Y  . I Q- Q' &   ) ! # f[ fM- M% 
 m M !   ! ! & " % 
m  ' #, #
*   , ( $* $' - ( " ! m ! 
I    # % ' %     $ 
#< #
* L | ( ) + '   "  # & k I+ I . ! ,  u  uH $ !* !
& # ! 
K	 K	 K) K$ , ,\ ,| " ' | J< J % ! ,  0 " " * ! # $ * ' )  
U #   + # $   %  - & 5 
| < $ $  & ( 
	s' 	s+ & % ( 
* # *   # 
k ' ' hK h; { # "+ "
0 ) ! 
	 Y ) i ( $ $ " % 
]  M  + -   ! ' [) ["( "# "/ "3 "$4 "7 )+B . < 4  = # * ' ( % % % # & "+ "
) 1 # + !   " * " & % '- ' *  ^ N -   "  1 (  ' 
/  o  " $ % # ' 
/ / " " "+ "
0 !4    L - 
[ k [       0 ! % $ +   %   & % 
 ] l + '  P- P& $  #   & 
n n "  # $ 
\ L $   ] M $ $ 
, | 
& \ ' ( 
+ + (  !' !	M 	M/ % ) ) '  # " ! 
I ) 	   ! '   , ( 
# ' ) ( " ( ' 
/ # ' # $ ! ' " ! $ 
! !
) # , #4 % & ) V! VI  % Y} YY+ Y1 # + " c& c%  !   - *~ *6 6 * & ! $- $
+ - # $ (  | 
% | < $ " < "    ' & % m ! ! % ) ' " !     "( "# )   $   $ 
L \ Xl X) l     ! ' " o ' * % ) ) $ L  < - ,' ,(.  4 ,' , , % 
}  %  F Fm  " ' 
o     5 "  IG I" % % $ ! ,  $ 
| Ml M ( ! & !   . '   8 $ 
| < X 8 % , , 
)  I O   & k I+ I "   " 
Z Z & " 
J Z    !  ( $ , ! # k + [     & 
n 	Q 	Q$   ) + ) N $ > g ' * .  !   ! 
I   $- $
- I ! # 
	C[ 	Ck % 
$M $
 5 1  " M( M%. %
. " - . i $   , ,% 
  $  ! 
I  ' | J< J R/ R(  + J :   & . % O' O# # 
k + ; ! %  M } ' ] ( m "  #  # ( $ 
l | | &7 0 ) 0 0 ) ' # 
 Q Q R+ R' " &    ! ) $ # % & 
n  &  G ( + $  )  
( 1 (
	T2 	T&7 &
 7  7 5 * % , "  & ! # ! ' 
,$ 
,
,& 
, )  
) ( + ! % $ '  # + G9 GI # 
[ k    ' | J< J\  ! ! ' 
 / *  % 
]  } =   m } M  #   !  GR-  GR1KMe  GRg|  R  GR  Tf  hx  GR  zE  GP  GR  Rl  nF  GR  Ha  cz  GR  |T  Vl  GR  nA  CT  GR  Vl  nB  GR  DU  Wf  GR  h|  ~P  GR  Rm  oH	  GR  J	b	  d	z	  GR  |	J
  L
X
  GR  Z
p
  r
F  GR  H_  av  GR  xM  Ob  GR  ds  uB  GR  DU  Wf  GR  ho  qv  GR  xD  FP  GR  Rh  j~  GR  @P  R`  GR  bm  ox  GR  zJ  LZ  GR  \e  gn  GR  pw  y~  GR  @M  OZ  GR  \g  ir  GR  tC  ER  GR  T[  ]b  GR  dt  vD  GR  F^  `v  GR  xL  N`  GR  bi  kp  GR  rL  Nf  GR  ht  v@  GR  BM  OX  GR  Zj  lz  GR  |G  IR  GR  Td  ft  GR  vF  HV  GR  Xf  ht  GR  vM  Od  GR  fv  xF  GR  HX  Zh  GR  jw  yD  GR  FP  RZ  GR  \s  uJ  GR  LY  [f  GR  hy  {J  GR  L]  _n  GR  pA  CR  GR  Ta  cn  GR  pB  DT  GR  Va  cl  GR  nz  |F   GR  H S   U ^   GR  ` r   t D!  GR  F!T!  V!b!  GR  d!z!  |!P"  GR  R"a"  c"p"  GR  r"{"  }"D#  GR  F#U#  W#d#  GR  f#z#  |#N$  GR  P$]$  _$j$  GR  l$u$  w$~$  GR  @%P%  R%`%  GR  b%x%  z%N&  GR  P&f&  h&|&  GR  ~&O'  Q'`'  GR  b'q'  s'@(  GR  B(Y(  [(p(  GR  r(O)  Q)l)  GR  n)w)  y)@*  GR  B*R*  T*b*  GR  d*y*  {*N+  GR  P+c+  e+v+  GR  x+J,  L,\,  GR  ^,h,  j,r,  GR  t,~,  @-H-  GR  J-Z-  \-j-  GR  l-}-  -N.  GR  P.a.  c.r.  GR  t.B/  D/P/  GR  R/[/  ]/d/  GR  f/o/  q/x/  GR  z/G0  I0T0  GR  V0h0  j0z0  GR  |0K1  M1Z1  GR  \1f1  h1p1  GR  r1D2  F2V2  GR  X2h2  j2x2  GR  z2P3  R3f3  GR  h3v3  x3D4  GR  F4Z4  \4n4  GR  p44  A5N5  GR  P5]5  _5j5  GR  l5y5  {5F6  GR  H6\6  ^6p6  GR  r6G7  I7\7  GR  ^7p7  r7B8  GR  D8Q8  S8^8  GR  `8j8  l8t8  GR  v8H9  J9Z9  GR  \9m9  o9~9  GR  @:O:  Q:^:  GR  `:r:  t:D;  GR  F;Q;  S;\;  GR  ^;x;  z;R<  GR  T<k<  m<B=  GR  D=W=  Y=j=  GR  l=s=  u=z=  GR  |=E>  G>N>  GR  P>]>  _>j>  GR  l>>  A?R?  GR  T?a?  c?n?  GR  p?@@  B@P@  GR  R@[@  ]@d@  GR  f@s@  u@@A  GR  BAHA  JANA  GR  PA]A  _AjA  GR  lAwA  yABB  GR  DBWB  YBjB  GR  lBuB  wB~B  GR  @CNC  PC\C  GR  ^CoC  qC@D  GR  BDLD  NDVD  GR  XDdD  fDpD  GR  rDCE  EETE  GR  VEfE  hEvE  GR  xEJF  LF\F  GR  ^FiF  kFtF  GR  vFIG  KG\G  GR  ^GmG  oG|G  GR  ~GJH  LHVH  GR  XHdH  fHpH  GR  rHzH  |HBI  GR  DIRI  TI`I  GR  bInI  pIzI  GR  |ICJ  EJJJ  GR  LJ[J  ]JjJ  GR  lJ}J  JNK  GR  PK`K  bKpK  GR  rKzK  |KBL  GR  DLLL  NLTL  GR  VLiL  kL|L  GR  ~LVM  XMnM  GR  pMIN  KNbN  GR  dNwN  yNJO  GR  LOXO  ZOdO  GR  fOxO  zOJP  GR  LP^P  `PpP  GR  rP~P  @QJQ  GR  LQ^Q  `QpQ  GR  rQ~Q  @RJR  GR  LRbR  dRxR  GR  zRKS  MS\S  GR  ^SrS  tSFT  GR  HTZT  \TlT  GR  nTFU  HU^U  GR  `UzU  |UTV  GR  VVoV  qVHW  GR  JW^W  `WrW  GR  tWJX  LX`X  GR  bXxX  zXNY  GR  PYfY  hY|Y  GR  ~YTZ  VZjZ  GR  lZ}Z  ZN[  GR  P[c[  e[v[  GR  x[D\  F\P\  GR  R\^\  `\j\  GR  l\E]  G]^]  GR  `]]  A^^^  GR  `^u^  w^J_  GR  L_^_  `_p_  GR  r_{_  }_D`  GR  F`N`  P`V`  GR  X`c`  e`n`  GR  p`}`  `Ja  GR  LaWa  Yaba  GR  daqa  sa~a  GR  @bJb  LbTb  GR  Vbeb  gbtb  GR  vbFc  HcVc  GR  Xc_c  acfc  GR  hcoc  qcvc  GR  xcGd  IdVd  GR  Xdgd  idvd  GR  xdFe  HeTe  GR  Vebe  dene  GR  pe~e  @fLf  GR  Nf\f  ^fjf  GR  lfwf  yfBg  GR  DgQg  Sg^g  GR  `gtg  vgHh  GR  Jh[h  ]hlh  GR  nhFi  Hi^i  GR  `iwi  yiNj  GR  Pj^j  `jlj  GR  nj{j  }jHk  GR  JkVk  Xkbk  GR  dkwk  ykJl  GR  LlXl  Zldl  GR  flml  oltl  GR  vl~l  @mFm  GR  HmYm  [mjm  GR  lmvm  xm@n  GR  BnPn  Rn^n  GR  `nrn  tnDo  GR  FoXo  Zojo  GR  loso  uozo  GR  |oIp  KpVp  GR  Xpep  gprp  GR  tpIq  Kq^q  GR  `qsq  uqFr  GR  HrTr  Vr`r  GR  brrr  trBs  GR  DsTs  Vsds  GR  fsqs  ss|s  GR  ~sMt  Ot\t  GR  ^trt  ttFu  GR  HuZu  \ulu  GR  nu{u  }uHv  GR  JvQv  SvXv  GR  Zviv  kvxv  GR  zvBw  DwJw  GR  LwTw  Vw\w  GR  ^wkw  mwxw  GR  zwAx  CxHx  GR  JxRx  TxZx  GR  \xix  kxvx  GR  xxFy  HyTy  GR  Vy^y  `yfy  GR  hyuy  wyBz  GR  DzKz  MzRz  GR  Tzdz  fztz  GR  vz~z  @{F{  GR  H{X{  Z{h{  GR  j{z{  |{J|  GR  L|]|  _|n|  GR  p|y|  {|B}  GR  D}O}  Q}Z}  GR  \}h}  j}t}  GR  v}F~  H~V~  GR  X~e~  g~r~  GR  t~A  CN  GR  P[  ]f  GR  hy  {J@  GR  L@V@  X@`@  GR  b@p@  r@~@  GR  @AKA  MAVA  GR  XAeA  gArA  GR  tACB  EBRB  GR  TBeB  gBvB  GR  xBFC  HCTC  GR  VCgC  iCxC  GR  zCID  KDXD  GR  ZDhD  jDvD  GR  xDHE  JEXE  GR  ZEeE  gEpE  GR  rEDF  FFVF  GR  XFlF  nF@G  GR  BGOG  QG\G  GR  ^GqG  sGDH  GR  FHZH  \HnH  GR  pH~H  @ILI  GR  NIXI  ZIbI  GR  dIqI  sI~I  GR  @JQJ  SJbJ  GR  dJxJ  zJLK  GR  NK[K  ]KhK  GR  jKtK  vK~K  GR  @LHL  JLPL  GR  RLcL  eLtL  GR  vLHM  JMZM  GR  \MlM  nM|M  GR  ~MKN  MNXN  GR  ZNlN  nN~N  GR  @OHO  JOPO  GR  RO\O  ^OfO  GR  hOsO  uO~O  GR  @PKP  MPVP  GR  XPhP  jPxP  GR  zPLQ  NQ^Q  GR  `QvQ  xQLR  GR  NR]R  _RlR  GR  nRwR  yR@S  GR  BSMS  OSXS  GR  ZSnS  pSBT  GR  DTbT  dT@U  GR  BUUU  WUhU  GR  jUCV  EV\V  GR  ^VoV  qV@W  GR  BWMW  OWXW  GR  ZWbW  dWjW  GR  lWsW  uWzW  GR  |WCX  EXJX  GR  LXYX  [XfX  GR  hXoX  qXvX  GR  xXGY  IYVY  GR  XYdY  fYpY  GR  rY{Y  }YDZ  GR  FZSZ  UZ`Z  GR  bZjZ  lZrZ  GR  tZ@[  B[L[  GR  N[\[  ^[j[  GR  l[z[  |[H\  GR  J\S\  U\\\  GR  ^\f\  h\n\  GR  p\}\  \J]  GR  L]R]  T]X]  GR  Z]l]  n]~]  GR  @^M^  O^Z^  GR  \^n^  p^@_  GR  B_O_  Q_\_  GR  ^_k_  m_x_  GR  z_N`  P`b`  GR  d`s`  u`Ba  GR  Da[a  ]ara  GR  taIb  Kb^b  GR  `bsb  ubFc  GR  HcYc  [cjc  GR  lc|c  ~cLd  GR  Nd\d  ^djd  GR  ld@e  BeTe  GR  Vebe  dene  GR  pexe  ze@f  GR  BfRf  Tfbf  GR  dfpf  rf|f  GR  ~fMg  Og\g  GR  ^ghg  jgrg  GR  tgDh  FhTh  GR  Vhlh  nhBi  GR  DiRi  Ti`i  GR  biki  miti  GR  viCj  EjPj  GR  Rjhj  jj~j  GR  @kUk  Wkjk  GR  lkxk  zkDl  GR  FlRl  Tl^l  GR  `lzl  |lTm  GR  Vmgm  imxm  GR  zmQn  Snhn  GR  jn{n  }nLo  GR  Nodo  fozo  GR  |oVp  Xppp  GR  rpHq  Jq^q  GR  `qzq  |qTr  GR  Vr`r  brjr  GR  lrvr  xr@s  GR  BsOs  Qs\s  GR  ^sis  ksts  GR  vsAt  CtLt  GR  NtYt  [tdt  GR  ftqt  st|t  GR  ~tIu  KuTu  GR  Vuau  culu  GR  nuu  AvPv  GR  Rv]v  _vhv  GR  jvuv  wv@w  GR  BwMw  OwXw  GR  Zwgw  iwtw  GR  vwDx  FxRx  GR  Txgx  ixzx  GR  |xGy  IyRy  GR  Tyey  gyvy  GR  xyGz  IzVz  GR  Xzhz  jzxz  GR  zzB{  D{J{  GR  L{X{  Z{d{  GR  f{o{  q{x{  GR  z{G|  I|T|  GR  V|i|  k|||  GR  ~|M}  O}\}  GR  ^}f}  h}n}  GR  p}A~  C~R~  GR  T~e~  g~v~  GR  x~F  HT  GR  V^  `f  GR  hy  {J@  GR  L@a@  c@v@  GR  x@SA  UAnA  GR  pAzA  |ADB  GR  FBSB  UB`B  GR  bBtB  vBFC  GR  HCRC  TC\C  GR  ^CiC  kCtC  GR  vC@D  BDJD  GR  LD\D  ^DlD  GR  nDD  AEPE  GR  RE]E  _EhE  GR  jEsE  uE|E  GR  ~EIF  KFTF  GR  VFiF  kF|F  GR  ~FLG  NGZG  GR  \GgG  iGrG  GR  tG~G  @HHH  GR  JH_H  aHtH  GR  vH@I  BIJI  GR  LI\I  ^IlI  GR  nI{I  }IHJ  GR  JJWJ  YJdJ  GR  fJrJ  tJ~J  GR  @KGK  IKNK  GR  PK[K  ]KfK  GR  hKpK  rKxK  GR  zKFL  HLRL  GR  TL[L  ]LbL  GR  dLsL  uLBM  GR  DMPM  RM\M  GR  ^MvM  xMNN  GR  PNgN  iN~N  GR  @OPO  RO`O  GR  bOpO  rO~O  GR  @POP  QP^P  GR  `PjP  lPtP  GR  vP@Q  BQJQ  GR  LQZQ  \QhQ  GR  jQqQ  sQxQ  GR  zQER  GRPR  GR  RRZR  \RbR  GR  dRrR  tR@S  GR  BSSS  USdS  GR  fSpS  rSzS  GR  |SGT  ITRT  GR  TT_T  aTjT  GR  lT{T  }TJU  GR  LUVU  XU`U  GR  bUuU  wUHV  GR  JVTV  VV^V  GR  `VjV  lVtV  GR  vVKW  MW`W  GR  bWpW  rW~W  GR  @XOX  QX^X  GR  `XoX  qX~X  GR  @YMY  OYZY  GR  \YhY  jYtY  GR  vYBZ  DZNZ  GR  PZbZ  dZtZ  GR  vZA[  C[L[  GR  N[^[  `[n[  GR  p[}[  [J\  GR  L\W\  Y\b\  GR  d\v\  x\H]  GR  J][]  ]]l]  GR  n]z]  |]F^  GR  H^X^  Z^h^  GR  j^z^  |^J_  GR  L_V_  X_`_  GR  b_r_  t_B`  GR  D`Q`  S`^`  GR  ``n`  p`|`  GR  ~`Wa  Yapa  GR  raEb  GbXb  GR  Zbsb  ubLc  GR  NcVc  Xc^c  GR  `cmc  oczc  GR  |cCd  EdJd  GR  LdWd  Ydbd  GR  ddnd  pdxd  GR  zdFe  HeRe  GR  Tege  ieze  GR  |eCf  EfJf  GR  LfTf  Vf\f  GR  ^ftf  vfJg  GR  Lgag  cgvg  GR  xgHh  JhXh  GR  Zhth  vhNi  GR  Pi\i  ^ihi  GR  ji|i  ~iNj  GR  Pj`j  bjpj  GR  rj~j  @kJk  GR  LkXk  Zkdk  GR  fkrk  tk~k  GR  @lJl  LlTl  GR  Vlel  gltl  GR  vl@m  BmJm  GR  Lm\m  ^mlm  GR  nm{m  }mHn  GR  JnYn  [nhn  GR  jnn  AoTo  GR  Vo_o  aoho  GR  jo|o  ~oNp  GR  Pp]p  _pjp  GR  lp}p  pNq  GR  Pqeq  gqzq  GR  |qWr  Yrrr  GR  tr}r  rFs  GR  Hsds  fs@t  GR  BtWt  Ytlt  GR  ntBu  DuVu  GR  Xutu  vuPv  GR  Rvgv  iv|v  GR  ~vNw  Pw^w  GR  `wiw  kwrw  GR  twCx  ExRx  GR  Tx^x  `xhx  GR  jxyx  {xHy  GR  JyPy  RyVy  GR  Xyby  dyly  GR  nywy  yy@z  GR  BzOz  Qz\z  GR  ^zmz  oz|z  GR  ~zI{  K{T{  GR  V{_{  a{h{  GR  j{v{  x{B|  GR  D|Y|  [|n|  GR  p||  A}N}  GR  P}`}  b}p}  GR  r}}}  }H~  GR  J~X~  Z~f~  GR  h~r~  t~|~  GR  ~~L  NZ  GR  \g  ir  GR  t{  }B@  GR  D@S@  U@b@  GR  d@n@  p@x@  GR  z@EA  GAPA  GR  RAaA  cApA  GR  rAzA  |ABB  GR  DBTB  VBdB  GR  fBtB  vBBC  GR  DCOC  QCZC  GR  \CoC  qCBD  GR  DDQD  SD^D  GR  `DnD  pD|D  GR  ~DGE  IEPE  GR  RE_E  aElE  GR  nE}E  ELF  GR  NFXF  ZFbF  GR  dFuF  wFFG  GR  HGUG  WGbG  GR  dGyG  {GNH  GR  PHmH  oHJI  GR  LIWI  YIbI  GR  dItI  vIDJ  GR  FJQJ  SJ\J  GR  ^JoJ  qJ@K  GR  BKSK  UKdK  GR  fKxK  zKJL  GR  LLWL  YLbL  GR  dLpL  rL|L  GR  ~LVM  XMnM  GR  pM{M  }MFN  GR  HNWN  YNfN  GR  hNtN  vN@O  GR  BOOO  QO\O  GR  ^OgO  iOpO  GR  rO|O  ~OFP  GR  HPVP  XPdP  GR  fPmP  oPtP  GR  vPBQ  DQNQ  GR  PQ_Q  aQnQ  GR  pQFR  HR\R  GR  ^RkR  mRxR  GR  zRDS  FSNS  GR  PSaS  cSrS  GR  tSS  ATJT  GR  LTWT  YTbT  GR  dTkT  mTrT  GR  tTT  AUJU  GR  LU`U  bUtU  GR  vUFV  HVVV  GR  XVkV  mV~V  GR  @WOW  QW^W  GR  `WzW  |WTX  GR  VXhX  jXzX  GR  |XOY  QYbY  GR  dYsY  uYBZ  GR  DZTZ  VZdZ  GR  fZuZ  wZD[  GR  F[P[  R[Z[  GR  \[i[  k[v[  GR  x[@\  B\H\  GR  J\V\  X\b\  GR  d\r\  t\@]  GR  B]R]  T]b]  GR  d]m]  o]v]  GR  x]]  A^F^  GR  H^O^  Q^V^  GR  X^j^  l^|^  GR  ~^G_  I_P_  GR  R___  a_l_  GR  n_~_  @`N`  GR  P`b`  d`t`  GR  v`Fa  HaVa  GR  Xaia  kaza  GR  |aNb  Pb`b  GR  bb|b  ~bVc  GR  Xccc  ecnc  GR  pcvc  xc|c  GR  ~cGd  IdPd  GR  Rdbd  ddrd  GR  tdJe  Le`e  GR  bexe  zeNf  GR  Pfbf  dftf  GR  vf}f  fDg  GR  FgQg  Sg\g  GR  ^ggg  igpg  GR  rg{g  }gDh  GR  FhWh  Yhhh  GR  jhwh  yhDi  GR  FiPi  RiZi  GR  \igi  iiri  GR  ti|i  ~iDj  GR  FjUj  Wjdj  GR  fjtj  vjBk  GR  DkOk  QkZk  GR  \klk  nk|k  GR  ~kKl  MlXl  GR  Zlkl  ml|l  GR  ~lPm  Rmbm  GR  dmxm  zmLn  GR  Nn^n  `nnn  GR  pnHo  Jo`o  GR  boro  toBp  GR  DpKp  MpRp  GR  Tp\p  ^pdp  GR  fpmp  optp  GR  vpp  AqHq  GR  JqUq  Wq`q  GR  bqoq  qq|q  GR  ~qKr  MrXr  GR  Zrer  grpr  GR  rr~r  @sJs  GR  Ls^s  `sps  GR  rsAt  CtPt  GR  Rtat  ctpt  GR  rtEu  GuXu  GR  Zufu  huru  GR  tu|u  ~uDv  GR  FvUv  Wvdv  GR  fvqv  sv|v  GR  ~vHw  JwRw  GR  Tw\w  ^wdw  GR  fwvw  xwFx  GR  HxUx  Wxbx  GR  dxpx  rx|x  GR  ~xPy  Ryby  GR  dysy  uyBz  GR  DzQz  Sz^z  GR  `zoz  qz~z  GR  @{L{  N{X{  GR  Z{a{  c{h{  GR  j{x{  z{F|  GR  H|U|  W|b|  GR  d|t|  v|D}  GR  F}S}  U}`}  GR  b}j}  l}r}  GR  t}~}  @~H~  GR  J~X~  Z~f~  GR  h~o~  q~v~  GR  x~M  Ob  GR  dr  t@@  GR  B@Q@  S@`@  GR  b@j@  l@r@  GR  t@DA  FATA  GR  VA]A  _AdA  GR  fAnA  pAvA  GR  xADB  FBPB  GR  RB_B  aBlB  GR  nBxB  zBBC  GR  DCRC  TC`C  GR  bCqC  sC@D  GR  BDOD  QD\D  GR  ^DlD  nDzD  GR  |DIE  KEVE  GR  XEmE  oEBF  GR  DFNF  PFXF  GR  ZFlF  nF~F  GR  @GNG  PG\G  GR  ^GeG  gGlG  GR  nGyG  {GDH  GR  FH\H  ^HrH  GR  tHLI  NIdI  GR  fIlI  nIrI  GR  tIBJ  DJPJ  GR  RJfJ  hJzJ  GR  |JJK  LKXK  GR  ZKlK  nK~K  GR  @LTL  VLhL  GR  jLvL  xLBM  GR  DMOM  QMZM  GR  \MeM  gMnM  GR  pMxM  zM@N  GR  BNWN  YNlN  GR  nNxN  zNBO  GR  DOQO  SO^O  GR  `OlO  nOxO  GR  zOCP  EPLP  GR  NP[P  ]PhP  GR  jP|P  ~PNQ  GR  PQ\Q  ^QhQ  GR  jQDR  FR^R  GR  `RtR  vRHS  GR  JSVS  XSbS  GR  dSsS  uSBT  GR  DTST  UTbT  GR  dTwT  yTJU  GR  LUSU  UUZU  GR  \UfU  hUpU  GR  rUDV  FVVV  GR  XV`V  bVhV  GR  jVxV  zVFW  GR  HWPW  RWXW  GR  ZWjW  lWzW  GR  |WEX  GXNX  GR  PXWX  YX^X  GR  `XgX  iXnX  GR  pXxX  zX@Y  GR  BYPY  RY^Y  GR  `YgY  iYnY  GR  pYyY  {YBZ  GR  DZPZ  RZ\Z  GR  ^ZkZ  mZxZ  GR  zZD[  F[N[  GR  P[^[  `[l[  GR  n[B\  D\V\  GR  X\_\  a\f\  GR  h\o\  q\v\  GR  x\M]  O]b]  GR  d]n]  p]x]  GR  z]H^  J^V^  GR  X^h^  j^x^  GR  z^D_  F_N_  GR  P___  a_n_  GR  p_E`  G`Z`  GR  \`m`  o`~`  GR  @aQa  Saba  GR  dava  xaHb  GR  JbVb  Xbbb  GR  dbob  qbzb  GR  |bGc  IcRc  GR  Tccc  ecrc  GR  tcId  Kd^d  GR  `dkd  mdvd  GR  xdCe  EeNe  GR  Pe\e  ^ehe  GR  jeye  {eHf  GR  JfRf  TfZf  GR  \fgf  ifrf  GR  tff  AgJg  GR  LgZg  \ghg  GR  jgyg  {gHh  GR  Jh]h  _hph  GR  rh~h  @iJi  GR  LiYi  [ifi  GR  hiti  vi@j  GR  BjRj  Tjbj  GR  djxj  zjLk  GR  Nk[k  ]khk  GR  jkCl  El\l  GR  ^lhl  jlrl  GR  tlFm  HmXm  GR  Zmgm  imtm  GR  vmCn  EnPn  GR  Rn\n  ^nfn  GR  hntn  vn@o  GR  BoPo  Ro^o  GR  `oro  toDp  GR  FpXp  Zpjp  GR  lpEq  Gq^q  GR  `qzq  |qTr  GR  Vror  qrHs  GR  Js]s  _sps  GR  rsBt  DtRt  GR  Ttbt  dtpt  GR  rt{t  }tDu  GR  FuQu  Su\u  GR  ^uju  luvu  GR  xuHv  JvXv  GR  Zvhv  jvvv  GR  xvHw  JwXw  GR  Zwcw  ewlw  GR  nw|w  ~wJx  GR  LxXx  Zxdx  GR  fxzx  |xNy  GR  Py`y  bypy  GR  ry{y  }yDz  GR  FzWz  Yzhz  GR  jzxz  zzF{  GR  H{U{  W{b{  GR  d{C|  E|b|  GR  d|r|  t|@}  GR  B}P}  R}^}  GR  `}l}  n}x}  GR  z}H~  J~V~  GR  X~g~  i~v~  GR  x~F  HT  GR  Vd  fr  GR  t@@  B@L@  GR  N@^@  `@n@  GR  p@z@  |@DA  GR  FASA  UA`A  GR  bAiA  kApA  GR  rAyA  {A@B  GR  BBLB  NBVB  GR  XBiB  kBzB  GR  |BHC  JCTC  GR  VCjC  lC~C  GR  @DRD  TDdD  GR  fDvD  xDFE  GR  HEXE  ZEhE  GR  jEuE  wE@F  GR  BFMF  OFXF  GR  ZFgF  iFtF  GR  vFCG  EGPG  GR  RG\G  ^GfG  GR  hGwG  yGFH  GR  HHSH  UH^H  GR  `HnH  pH|H  GR  ~HJI  LIVI  GR  XI_I  aIfI  GR  hI~I  @JTJ  GR  VJgJ  iJxJ  GR  zJFK  HKRK  GR  TK[K  ]KbK  GR  dKsK  uKBL  GR  DLYL  [LnL  GR  pL}L  LJM  GR  LM_M  aMrM  GR  tMHN  JN\N  GR  ^NmN  oN|N  GR  ~NNO  PO^O  GR  `OlO  nOxO  GR  zOAP  CPHP  GR  JPRP  TPZP  GR  \PcP  ePjP  GR  lPyP  {PFQ  GR  HQWQ  YQfQ  GR  hQvQ  xQDR  GR  FRMR  ORTR  GR  VRhR  jRzR  GR  |RMS  OS^S  GR  `SgS  iSnS  GR  pS}S  SJT  GR  LTTT  VT\T  GR  ^TnT  pT~T  GR  @UGU  IUNU  GR  PU`U  bUpU  GR  rU}U  UHV  GR  JV^V  `VrV  GR  tV@W  BWLW  GR  NWUW  WW\W  GR  ^WmW  oW|W  GR  ~WQX  SXdX  GR  fXrX  tX~X  GR  @YPY  RY`Y  GR  bYsY  uYDZ  GR  FZOZ  QZXZ  GR  ZZjZ  lZzZ  GR  |ZK[  M[Z[  GR  \[k[  m[z[  GR  |[E\  G\N\  GR  P\[\  ]\f\  GR  h\u\  w\B]  GR  D]M]  O]V]  GR  X]a]  c]j]  GR  l]~]  @^P^  GR  R^d^  f^v^  GR  x^P_  R_h_  GR  j_u_  w_@`  GR  B`N`  P`Z`  GR  \`j`  l`x`  GR  z`Aa  CaHa  GR  Ja\a  ^ana  GR  paxa  za@b  GR  BbQb  Sb`b  GR  bbzb  |bRc  GR  Tc]c  _cfc  GR  hcuc  wcBd  GR  DdUd  Wdfd  GR  hdwd  ydFe  GR  HeRe  Te\e  GR  ^ene  pe~e  GR  @fWf  Yfnf  GR  pf~f  @gLg  GR  NgZg  \gfg  GR  hgpg  rgxg  GR  zgNh  Phbh  GR  dhsh  uhBi  GR  DiYi  [ini  GR  piGj  Ij^j  GR  `jpj  rj@k  GR  BkVk  Xkjk  GR  lk~k  @lPl  GR  Rlil  kl@m  GR  BmXm  Zmnm  GR  pm}m  mJn  GR  Ln]n  _nnn  GR  pnGo  Io^o  GR  `olo  noxo  GR  zoHp  JpVp  GR  Xpnp  ppDq  GR  FqXq  Zqjq  GR  lqyq  {qFr  GR  HrQr  SrZr  GR  \rir  krvr  GR  xr@s  BsHs  GR  Jsas  csxs  GR  zsUt  Wtpt  GR  rtIu  Ku`u  GR  buvu  xuJv  GR  LvYv  [vfv  GR  hvyv  {vJw  GR  LwVw  Xw`w  GR  bwsw  uwDx  GR  FxNx  PxVx  GR  Xx{x  }x^y  GR  `yDz  Fzhz  GR  jzA{  C{X{  GR  Z{m{  o{@|  GR  B|N|  P|Z|  GR  \|l|  n|||  GR  ~|R}  T}f}  GR  h}z}  |}L~  GR  N~^~  `~n~  GR  p~G  I^  GR  `s  uF@  GR  H@^@  `@t@  GR  v@IA  KA\A  GR  ^AnA  pA~A  GR  @BRB  TBdB  GR  fBqB  sB|B  GR  ~BJC  LCVC  GR  XCcC  eCnC  GR  pC|C  ~CHD  GR  JDTD  VD^D  GR  `DnD  pD|D  GR  ~DNE  PE^E  GR  `ElE  nExE  GR  zELF  NF^F  GR  `FmF  oFzF  GR  |FDG  FGLG  GR  NGZG  \GfG  GR  hGtG  vG@H  GR  BHMH  OHXH  GR  ZHmH  oH@I  GR  BISI  UIdI  GR  fImI  oItI  GR  vI}I  IDJ  GR  FJUJ  WJdJ  GR  fJoJ  qJxJ  GR  zJDK  FKNK  GR  PK_K  aKnK  GR  pK{K  }KFL  GR  HLQL  SLZL  GR  \LjL  lLxL  GR  zLFM  HMRM  GR  TMeM  gMvM  GR  xM@N  BNHN  GR  JNZN  \NjN  GR  lN}N  NNO  GR  PObO  dOtO  GR  vO@P  BPJP  GR  LP^P  `PpP  GR  rP@Q  BQNQ  GR  PQXQ  ZQ`Q  GR  bQzQ  |QRR  GR  TReR  gRvR  GR  xRPS  RShS  GR  jSyS  {SHT  GR  JTWT  YTdT  GR  fTyT  {TLU  GR  NU]U  _UlU  GR  nUvU  xU~U  GR  @VKV  MVVV  GR  XVbV  dVlV  GR  nVwV  yV@W  GR  BWTW  VWfW  GR  hWzW  |WLX  GR  NXfX  hX~X  GR  @YKY  MYVY  GR  XYhY  jYxY  GR  zYMZ  OZ`Z  GR  bZnZ  pZzZ  GR  |ZP[  R[d[  GR  f[s[  u[@\  GR  B\S\  U\d\  GR  f\}\  \T]  GR  V]c]  e]p]  GR  r]~]  @^J^  GR  L^S^  U^Z^  GR  \^g^  i^r^  GR  t^^  A_J_  GR  L_Z_  \_h_  GR  j_w_  y_D`  GR  F`Y`  [`l`  GR  n`Ba  DaVa  GR  Xada  fapa  GR  raDb  FbVb  GR  Xbdb  fbpb  GR  rbDc  FcVc  GR  Xcdc  fcpc  GR  rcCd  EdTd  GR  Vdad  cdld  GR  ndyd  {dDe  GR  FeUe  Wede  GR  feye  {eLf  GR  Nfgf  if@g  GR  BgLg  NgVg  GR  Xglg  ng@h  GR  BhNh  PhZh  GR  \hoh  qhBi  GR  DiRi  Ti`i  GR  biui  wiHj  GR  JjUj  Wj`j  GR  bjoj  qj|j  GR  ~jJk  LkVk  GR  Xkbk  dklk  GR  nkzk  |kFl  GR  Hl\l  ^lpl  GR  rl}l  lHm  GR  JmYm  [mhm  GR  jmzm  |mJn  GR  LnYn  [nfn  GR  hnyn  {nJo  GR  Loco  eozo  GR  |oGp  IpRp  GR  Tpcp  eprp  GR  tpp  AqJq  GR  LqVq  Xq`q  GR  bqmq  oqxq  GR  zqHr  JrVr  GR  Xrbr  drlr  GR  nrzr  |rFs  GR  Hs_s  asvs  GR  xsEt  GtRt  GR  Ttdt  fttt  GR  vt@u  BuJu  GR  LuZu  \uhu  GR  juvu  xuBv  GR  DvPv  Rv\v  GR  ^vjv  lvvv  GR  xvMw  Owbw  GR  dwsw  uwBx  GR  DxOx  QxZx  GR  \xix  kxvx  GR  xxKy  My^y  GR  `yly  nyxy  GR  zyGz  IzTz  GR  Vzcz  ezpz  GR  rzG{  I{\{  GR  ^{i{  k{t{  GR  v{B|  D|N|  GR  P|h|  j|@}  GR  B}Z}  \}r}  GR  t}D~  F~T~  GR  V~l~  n~B  GR  DZ  \p  GR  rI@  K@`@  GR  b@}@  @XA  GR  ZAgA  iAtA  GR  vAFB  HBVB  GR  XBdB  fBpB  GR  rB}B  BHC  GR  JCcC  eC|C  GR  ~CQD  SDdD  GR  fDuD  wDDE  GR  FEaE  cE|E  GR  ~EIF  KFTF  GR  VFbF  dFnF  GR  pF{F  }FFG  GR  HGVG  XGdG  GR  fGwG  yGHH  GR  JHUH  WH`H  GR  bHoH  qH|H  GR  ~HJI  LIVI  GR  XIeI  gIrI  GR  tIEJ  GJVJ  GR  XJlJ  nJ@K  GR  BKMK  OKXK  GR  ZKlK  nK~K  GR  @LJL  LLTL  GR  VLeL  gLtL  GR  vLAM  CMLM  GR  NMXM  ZMbM  GR  dMtM  vMDN  GR  FNQN  SN\N  GR  ^NqN  sNDO  GR  FOWO  YOhO  GR  jO|O  ~ONP  GR  PP`P  bPpP  GR  rP~P  @QJQ  GR  LQYQ  [QfQ  GR  hQyQ  {QJR  GR  LRcR  eRzR  GR  |RJS  LSXS  GR  ZSgS  iStS  GR  vS|S  ~SBT  GR  DTQT  ST^T  GR  `TgT  iTnT  GR  pT~T  @ULU  GR  NUZU  \UfU  GR  hUzU  |ULV  GR  NV\V  ^VjV  GR  lVsV  uVzV  GR  |VLW  NW\W  GR  ^WgW  iWpW  GR  rWzW  |WBX  GR  DXTX  VXdX  GR  fX~X  @YVY  GR  XY`Y  bYhY  GR  jYzY  |YJZ  GR  LZYZ  [ZfZ  GR  hZvZ  xZD[  GR  F[V[  X[f[  GR  h[r[  t[|[  GR  ~[E\  G\L\  GR  N\W\  Y\`\  GR  b\q\  s\@]  GR  B]S]  U]d]  GR  f]r]  t]~]  GR  @^P^  R^`^  GR  b^o^  q^|^  GR  ~^J_  L_V_  GR  X_g_  i_v_  GR  x_J`  L`\`  GR  ^`f`  h`n`  GR  p`z`  |`Da  GR  FaTa  Vaba  GR  daoa  qaza  GR  |aNb  Pb`b  GR  bbsb  ubDc  GR  FcPc  RcZc  GR  \ckc  mczc  GR  |cHd  JdTd  GR  Vdod  qdHe  GR  JeYe  [ehe  GR  jeue  we@f  GR  BfQf  Sf`f  GR  bfuf  wfHg  GR  Jg`g  bgvg  GR  xgNh  Phdh  GR  fhDi  Fibi  GR  diri  ti@j  GR  BjRj  Tjbj  GR  djxj  zjLk  GR  Nk_k  akpk  GR  rkEl  GlXl  GR  Zlal  clhl  GR  jlul  wl@m  GR  BmPm  Rm^m  GR  `mkm  mmvm  GR  xmGn  InVn  GR  Xnkn  mn~n  GR  @oPo  Ro`o  GR  bovo  xoJp  GR  Lpdp  fp|p  GR  ~pMq  Oq\q  GR  ^quq  wqLr  GR  Nr_r  arpr  GR  rrBs  DsRs  GR  Ts^s  `shs  GR  js}s  sPt  GR  Rt]t  _tht  GR  jtwt  ytDu  GR  FuVu  Xufu  GR  huu  AvVv  GR  Xvcv  evnv  GR  pvAw  CwRw  GR  Twcw  ewrw  GR  tww  AxJx  GR  LxVx  Xx`x  GR  bxmx  oxxx  GR  zxEy  GyPy  GR  Ryby  dyry  GR  ty@z  BzLz  GR  Nzgz  iz@{  GR  B{M{  O{X{  GR  Z{k{  m{|{  GR  ~{O|  Q|`|  GR  b|l|  n|v|  GR  x|H}  J}X}  GR  Z}i}  k}x}  GR  z}J~  L~Z~  GR  \~r~  t~H  GR  J\  ^n  GR  p|  ~H@	  GR  J@	U@	  W@	`@	  GR  b@	s@	  u@	DA	  GR  FA	MA	  OA	TA	  GR  VA	bA	  dA	nA	  GR  pA	yA	  {A	BB	  GR  DB	LB	  NB	TB	  GR  VB	cB	  eB	pB	  GR  rB	AC	  CC	PC	  GR  RC	cC	  eC	tC	  GR  vC	ED	  GD	TD	  GR  VD	`D	  bD	jD	  GR  lD	vD	  xD	@E	  GR  BE	SE	  UE	dE	  GR  fE	uE	  wE	DF	  GR  FF	PF	  RF	ZF	  GR  \F	kF	  mF	zF	  GR  |F	LG	  NG	\G	  GR  ^G	pG	  rG	BH	  GR  DH	RH	  TH	`H	  GR  bH	kH	  mH	tH	  GR  vH	}H	  H	DI	  GR  FI	RI	  TI	^I	  GR  `I	gI	  iI	nI	  GR  pI	}I	  I	JJ	  GR  LJ	UJ	  WJ	^J	  GR  `J	mJ	  oJ	zJ	  GR  |J	OK	  QK	bK	  GR  dK	|K	  ~K	TL	  GR  VL	aL	  cL	lL	  GR  nL	DM	  FM	ZM	  GR  \M	cM	  eM	jM	  GR  lM	vM	  xM	@N	  GR  BN	IN	  KN	PN	  GR  RN	`N	  bN	nN	  GR  pN	N	  AO	NO	  GR  PO	]O	  _O	jO	  GR  lO	wO	  yO	BP	  GR  DP	OP	  QP	ZP	  GR  \P	iP	  kP	vP	  GR  xP	EQ	  GQ	RQ	  GR  TQ	dQ	  fQ	tQ	  GR  vQ	@R	  BR	JR	  GR  LR	XR	  ZR	dR	  GR  fR	pR	  rR	zR	  GR  |R	JS	  LS	XS	  GR  ZS	nS	  pS	BT	  GR  DT	ST	  UT	bT	  GR  dT	oT	  qT	zT	  GR  |T	RU	  TU	hU	  GR  jU	rU	  tU	zU	  GR  |U	PV	  RV	dV	  GR  fV	sV	  uV	@W	  GR  BW	NW	  PW	ZW	  GR  \W	nW	  pW	@X	  GR  BX	MX	  OX	XX	  GR  ZX	gX	  iX	tX	  GR  vX	DY	  FY	RY	  GR  TY	hY	  jY	|Y	  GR  ~Y	OZ	  QZ	`Z	  GR  bZ	uZ	  wZ	H[	  GR  J[	b[	  d[	z[	  GR  |[	I\	  K\	V\	  GR  X\	`\	  b\	h\	  GR  j\	q\	  s\	x\	  GR  z\	O]	  Q]	d]	  GR  f]	s]	  u]	@^	  GR  B^	P^	  R^	^^	  GR  `^	j^	  l^	t^	  GR  v^	C_	  E_	P_	  GR  R_	Z_	  \_	b_	  GR  d_	{_	  }_	R`	  GR  T`	d`	  f`	t`	  GR  v`	@a	  Ba	Ja	  GR  La	Za	  \a	ha	  GR  ja	xa	  za	Fb	  GR  Hb	Vb	  Xb	db	  GR  fb	ob	  qb	xb	  GR  zb	Jc	  Lc	Zc	  GR  \c	nc	  pc	@d	  GR  Bd	Xd	  Zd	nd	  GR  pd	Ae	  Ce	Re	  GR  Te	ce	  ee	re	  GR  te	If	  Kf	^f	  GR  `f	nf	  pf	|f	  GR  ~f	Sg	  Ug	hg	  GR  jg	rg	  tg	zg	  GR  |g	Dh	  Fh	Lh	  GR  Nh	Wh	  Yh	`h	  GR  bh	oh	  qh	|h	  GR  ~h	Ki	  Mi	Xi	  GR  Zi	ii	  ki	xi	  GR  zi	Hj	  Jj	Vj	  GR  Xj	jj	  lj	|j	  GR  ~j	Kk	  Mk	Xk	  GR  Zk	rk	  tk	Jl	  GR  Ll	]l	  _l	nl	  GR  pl	{l	  }l	Fm	  GR  Hm	Xm	  Zm	hm	  GR  jm	wm	  ym	Dn	  GR  Fn	Wn	  Yn	hn	  GR  jn	|n	  ~n	No	  GR  Po	^o	  `o	lo	  GR  no	|o	  ~o	Jp	  GR  Lp	Xp	  Zp	dp	  GR  fp	vp	  xp	Fq	  GR  Hq	Sq	  Uq	^q	  GR  `q	oq	  qq	~q	  GR  @r	Sr	  Ur	fr	  GR  hr	}r	  r	Rs	  GR  Ts	ks	  ms	Bt	  GR  Dt	Lt	  Nt	Tt	  GR  Vt	_t	  at	ht	  GR  jt	ut	  wt	@u	  GR  Bu	Su	  Uu	du	  GR  fu	yu	  {u	Lv	  GR  Nv	\v	  ^v	jv	  GR  lv	Bw	  Dw	Xw	  GR  Zw	ow	  qw	Dx	  GR  Fx	Zx	  \x	nx	  GR  px	Ay	  Cy	Ry	  GR  Ty	ny	  py	Hz	  GR  Jz	\z	  ^z	nz	  GR  pz	K{	  M{	f{	  GR  h{	u{	  w{	B|	  GR  D|	X|	  Z|	l|	  GR  n|	|	  A}	P}	  GR  R}	d}	  f}	v}	  GR  x}	G~	  I~	V~	  GR  X~	g~	  i~	v~	  GR  x~	G	  I	V	  GR  X	e	  g	r	  GR  t	D@
  F@
T@
  GR  V@
g@
  i@
x@
  GR  z@
SA
  UA
lA
  GR  nA
{A
  }A
HB
  GR  JB
_B
  aB
tB
  GR  vB
AC
  CC
LC
  GR  NC
XC
  ZC
bC
  GR  dC
pC
  rC
|C
  GR  ~C
RD
  TD
fD
  GR  hD
tD
  vD
@E
  GR  BE
RE
  TE
bE
  GR  dE
sE
  uE
BF
  GR  DF
TF
  VF
dF
  GR  fF
uF
  wF
DG
  GR  FG
]G
  _G
tG
  GR  vG
@H
  BH
JH
  GR  LH
XH
  ZH
dH
  GR  fH
AI
  CI
\I
  GR  ^I
pI
  rI
BJ
  GR  DJ
MJ
  OJ
VJ
  GR  XJ
eJ
  gJ
rJ
  GR  tJ
GK
  IK
ZK
  GR  \K
mK
  oK
~K
  GR  @L
KL
  ML
VL
  GR  XL
dL
  fL
pL
  GR  rL
@M
  BM
NM
  GR  PM
_M
  aM
nM
  GR  pM
}M
  M
JN
  GR  LN
YN
  [N
fN
  GR  hN
}N
  N
RO
  GR  TO
`O
  bO
lO
  GR  nO
zO
  |O
FP
  GR  HP
`P
  bP
xP
  GR  zP
VQ
  XQ
rQ
  GR  tQ
|Q
  ~Q
DR
  GR  FR
PR
  RR
ZR
  GR  \R
cR
  eR
jR
  GR  lR
|R
  ~R
LS
  GR  NS
_S
  aS
pS
  GR  rS
BT
  DT
RT
  GR  TT
[T
  ]T
bT
  GR  dT
kT
  mT
rT
  GR  tT
{T
  }T
BU
  GR  DU
KU
  MU
RU
  GR  TU
_U
  aU
jU
  GR  lU
CV
  EV
ZV
  GR  \V
gV
  iV
rV
  GR  tV
CW
  EW
RW
  GR  TW
bW
  dW
pW
  GR  rW
GX
  IX
\X
  GR  ^X
gX
  iX
pX
  GR  rX
{X
  }X
DY
  GR  FY
UY
  WY
dY
  GR  fY
mY
  oY
tY
  GR  vY
}Y
  Y
DZ
  GR  FZ
VZ
  XZ
fZ
  GR  hZ
sZ
  uZ
~Z
  GR  @[
P[
  R[
`[
  GR  b[
k[
  m[
t[
  GR  v[
C\
  E\
P\
  GR  R\
c\
  e\
t\
  GR  v\
}\
  \
D]
  GR  F]
]]
  _]
t]
  GR  v]
F^
  H^
V^
  GR  X^
f^
  h^
t^
  GR  v^
}^
  ^
D_
  GR  F_
S_
  U_
`_
  GR  b_
k_
  m_
t_
  GR  v_
_
  A`
H`
  GR  J`
[`
  ]`
l`
  GR  n`
`
  Aa
Pa
  GR  Ra
^a
  `a
ja
  GR  la
sa
  ua
za
  GR  |a
Ib
  Kb
Vb
  GR  Xb
hb
  jb
xb
  GR  zb
Ic
  Kc
Xc
  GR  Zc
hc
  jc
vc
  GR  xc
Bd
  Dd
Ld
  GR  Nd
Vd
  Xd
^d
  GR  `d
od
  qd
~d
  GR  @e
Ne
  Pe
\e
  GR  ^e
ke
  me
xe
  GR  ze
Kf
  Mf
\f
  GR  ^f
nf
  pf
~f
  GR  @g
Rg
  Tg
dg
  GR  fg
|g
  ~g
Rh
  GR  Th
jh
  lh
@i
  GR  Bi
Ui
  Wi
hi
  GR  ji
ri
  ti
zi
  GR  |i
Oj
  Qj
bj
  GR  dj
qj
  sj
~j
  GR  @k
Ok
  Qk
^k
  GR  `k
sk
  uk
Fl
  GR  Hl
[l
  ]l
nl
  GR  pl
Am
  Cm
Rm
  GR  Tm
`m
  bm
lm
  GR  nm
{m
  }m
Hn
  GR  Jn
Vn
  Xn
bn
  GR  dn
sn
  un
Bo
  GR  Do
Qo
  So
^o
  GR  `o
ko
  mo
vo
  GR  xo
Bp
  Dp
Lp
  GR  Np
Wp
  Yp
`p
  GR  bp
sp
  up
Dq
  GR  Fq
Pq
  Rq
Zq
  GR  \q
rq
  tq
Hr
  GR  Jr
Xr
  Zr
fr
  GR  hr
zr
  |r
Ls
  GR  Ns
as
  cs
ts
  GR  vs
It
  Kt
\t
  GR  ^t
jt
  lt
vt
  GR  xt
Ju
  Lu
\u
  GR  ^u
ku
  mu
xu
  GR  zu
Gv
  Iv
Tv
  GR  Vv
gv
  iv
xv
  GR  zv
Gw
  Iw
Tw
  GR  Vw
dw
  fw
rw
  GR  tw
w
  Ax
Jx
  GR  Lx
]x
  _x
nx
  GR  px
|x
  ~x
Hy
  GR  Jy
Uy
  Wy
`y
  GR  by
ty
  vy
Fz
  GR  Hz
Uz
  Wz
bz
  GR  dz
zz
  |z
P{
  GR  R{
p{
  r{
N|
  GR  P|
_|
  a|
n|
  GR  p|
@}
  B}
P}
  GR  R}
e}
  g}
x}
  GR  z}
A~
  C~
H~
  GR  J~
S~
  U~
\~
  GR  ^~
m~
  o~
|~
  GR  ~~
V
  X
n
  GR  p
~
  @@L@  GR  N@`@  b@r@  GR  t@AA  CANA  GR  PAaA  cArA  GR  tADB  FBTB  GR  VBaB  cBlB  GR  nByB  {BDC  GR  FCPC  RCZC  GR  \CqC  sCFD  GR  HDaD  cDzD  GR  |DUE  WEnE  GR  pEDF  FFXF  GR  ZFjF  lFzF  GR  |FGG  IGRG  GR  TGeG  gGvG  GR  xGKH  MH^H  GR  `HmH  oHzH  GR  |HJI  LIXI  GR  ZIlI  nI~I  GR  @JTJ  VJhJ  GR  jJzJ  |JJK  GR  LKVK  XK`K  GR  bKpK  rK~K  GR  @LOL  QL^L  GR  `LmL  oLzL  GR  |LJM  LMXM  GR  ZMfM  hMrM  GR  tM~M  @NHN  GR  JNSN  UN\N  GR  ^NoN  qN@O  GR  BORO  TObO  GR  dOsO  uOBP  GR  DPMP  OPVP  GR  XPcP  ePnP  GR  pP{P  }PFQ  GR  HQWQ  YQfQ  GR  hQyQ  {QJR  GR  LR]R  _RnR  GR  pR|R  ~RHS  GR  JSUS  WS`S  GR  bSlS  nSvS  GR  xSAT  CTJT  GR  LTUT  WT^T  GR  `TnT  pT|T  GR  ~TRU  TUfU  GR  hUrU  tU|U  GR  ~ULV  NVZV  GR  \VfV  hVpV  GR  rVAW  CWPW  GR  RWjW  lWBX  GR  DXUX  WXfX  GR  hX{X  }XNY  GR  PYaY  cYrY  GR  tY~Y  @ZHZ  GR  JZQZ  SZXZ  GR  ZZaZ  cZhZ  GR  jZuZ  wZ@[  GR  B[S[  U[d[  GR  f[r[  t[~[  GR  @\Y\  [\r\  GR  t\E]  G]V]  GR  X]l]  n]@^  GR  B^Q^  S^`^  GR  b^u^  w^H_  GR  J_]_  __p_  GR  r_A`  C`P`  GR  R`f`  h`z`  GR  |`La  Na\a  GR  ^asa  uaHb  GR  Jbeb  gb@c  GR  BcRc  Tcbc  GR  dcqc  sc~c  GR  @dRd  Tddd  GR  fdzd  |dNe  GR  Pe_e  aene  GR  pe{e  }eFf  GR  Hf\f  ^fpf  GR  rfCg  EgTg  GR  Vg^g  `gfg  GR  hgtg  vg@h  GR  BhKh  MhTh  GR  Vh_h  ahhh  GR  jhqh  shxh  GR  zhDi  FiNi  GR  Pi^i  `ili  GR  nizi  |iFj  GR  HjQj  SjZj  GR  \jkj  mjzj  GR  |jHk  JkTk  GR  Vkek  gktk  GR  vkEl  GlTl  GR  Vldl  flrl  GR  tll  AmJm  GR  Lmbm  dmxm  GR  zmCn  EnLn  GR  NnXn  Znbn  GR  dnun  wnFo  GR  HoQo  SoZo  GR  \ono  po@p  GR  BpMp  OpXp  GR  Zpjp  lpzp  GR  |pGq  IqRq  GR  Tq\q  ^qdq  GR  fqmq  oqtq  GR  vqBr  DrNr  GR  PrVr  Xr\r  GR  ^rhr  jrrr  GR  trBs  DsPs  GR  Rsbs  dsrs  GR  tsBt  DtPt  GR  Rtat  ctpt  GR  rtzt  |tBu  GR  DuQu  Su^u  GR  `ulu  nuxu  GR  zuAv  CvHv  GR  JvQv  SvXv  GR  Zvcv  evlv  GR  nvuv  wv|v  GR  ~vGw  IwPw  GR  Rw_w  awlw  GR  nwAx  CxTx  GR  Vxbx  dxnx  GR  pxyx  {xBy  GR  DyKy  MyRy  GR  Ty\y  ^ydy  GR  fyvy  xyFz  GR  HzXz  Zzhz  GR  jzyz  {zH{  GR  J{R{  T{Z{  GR  \{h{  j{t{  GR  v{@|  B|J|  GR  L|W|  Y|b|  GR  d|m|  o|v|  GR  x|J}  L}\}  GR  ^}l}  n}z}  GR  |}R~  T~h~  GR  j~u~  w~@  GR  BK  MT  GR  Vc  ep  GR  rB@  D@R@  GR  T@]@  _@f@  GR  h@r@  t@|@  GR  ~@IA  KATA  GR  VAgA  iAxA  GR  zAFB  HBRB  GR  TBbB  dBpB  GR  rB|B  ~BFC  GR  HCVC  XCdC  GR  fCvC  xCFD  GR  HDVD  XDdD  GR  fDuD  wDDE  GR  FEOE  QEXE  GR  ZEhE  jEvE  GR  xEIF  KFZF  GR  \FhF  jFtF  GR  vFEG  GGTG  GR  VGcG  eGpG  GR  rGEH  GHXH  GR  ZHeH  gHpH  GR  rH{H  }HDI  GR  FIOI  QIXI  GR  ZIaI  cIhI  GR  jItI  vI~I  GR  @JSJ  UJfJ  GR  hJwJ  yJFK  GR  HKSK  UK^K  GR  `KpK  rK@L  GR  BLKL  MLTL  GR  VLqL  sLLM  GR  NMeM  gM|M  GR  ~MIN  KNTN  GR  VNbN  dNnN  GR  pNBO  DOTO  GR  VOiO  kO|O  GR  ~OJP  LPVP  GR  XPjP  lP|P  GR  ~PQQ  SQdQ  GR  fQoQ  qQxQ  GR  zQHR  JRVR  GR  XR_R  aRfR  GR  hRsR  uR~R  GR  @SGS  ISNS  GR  PScS  eSvS  GR  xSCT  ETNT  GR  PT^T  `TlT  GR  nTuT  wT|T  GR  ~TEU  GULU  GR  NUWU  YU`U  GR  bUlU  nUvU  GR  xUFV  HVTV  GR  VVjV  lV~V  GR  @WYW  [WrW  GR  tWFX  HXXX  GR  ZXaX  cXhX  GR  jXwX  yXDY  GR  FYUY  WYdY  GR  fYtY  vYBZ  GR  DZNZ  PZXZ  GR  ZZjZ  lZzZ  GR  |ZT[  V[l[  GR  n[}[  [L\  GR  N\_\  a\p\  GR  r\\  A]L]  GR  N]W]  Y]`]  GR  b]o]  q]|]  GR  ~]L^  N^Z^  GR  \^g^  i^r^  GR  t^^  A_J_  GR  L_[_  ]_j_  GR  l_~_  @`P`  GR  R`b`  d`r`  GR  t`Ga  IaZa  GR  \ama  oa~a  GR  @bLb  NbXb  GR  Zbbb  dbjb  GR  lbyb  {bFc  GR  HcQc  ScZc  GR  \cic  kcvc  GR  xcJd  Ld\d  GR  ^dod  qd@e  GR  BeLe  NeVe  GR  Xeje  le|e  GR  ~e_f  af@g  GR  Bg\g  ^gvg  GR  xgKh  Mh^h  GR  `hvh  xhLi  GR  Nidi  fizi  GR  |iOj  Qjbj  GR  djuj  wjFk  GR  Hk[k  ]knk  GR  pk|k  ~kHl  GR  Jl^l  `lrl  GR  tlAm  CmNm  GR  Pmam  cmrm  GR  tm@n  BnLn  GR  Nn^n  `nnn  GR  pnzn  |nDo  GR  FoNo  PoVo  GR  Xoco  eono  GR  poCp  EpVp  GR  Xpfp  hptp  GR  vpCq  EqPq  GR  Rqaq  cqpq  GR  rqCr  ErTr  GR  Vrbr  drnr  GR  pr@s  BsPs  GR  Rs[s  ]sds  GR  fsms  osts  GR  vsHt  JtZt  GR  \tkt  mtzt  GR  |tJu  LuXu  GR  Zunu  puBv  GR  Dv_v  avzv  GR  |vWw  Ywrw  GR  twKx  Mxbx  GR  dxxx  zxLy  GR  Ny]y  _yly  GR  nyDz  FzZz  GR  \zhz  jztz  GR  vzz  A{H{  GR  J{Z{  \{j{  GR  l{w{  y{B|  GR  D|Q|  S|^|  GR  `|k|  m|v|  GR  x|I}  K}Z}  GR  \}j}  l}x}  GR  z}J~  L~Z~  GR  \~o~  q~B  GR  DV  Xh  GR  j  A@T@  GR  V@a@  c@l@  GR  n@}@  @LA  GR  NA\A  ^AjA  GR  lA}A  ANB  GR  PBYB  [BbB  GR  dBqB  sB~B  GR  @CUC  WCjC  GR  lCzC  |CHD  GR  JDQD  SDXD  GR  ZDjD  lDzD  GR  |DEE  GENE  GR  PEWE  YE^E  GR  `EjE  lEtE  GR  vE@F  BFJF  GR  LFZF  \FhF  GR  jFzF  |FJG  GR  LG`G  bGtG  GR  vGAH  CHLH  GR  NHYH  [HdH  GR  fHzH  |HNI  GR  PI]I  _IjI  GR  lI@J  BJTJ  GR  VJ_J  aJhJ  GR  jJzJ  |JJK  GR  LK`K  bKtK  GR  vKPL  RLjL  GR  lLzL  |LHM  GR  JMUM  WM`M  GR  bMvM  xMJN  GR  LNeN  gN~N  GR  @ORO  TOdO  GR  fOuO  wODP  GR  FPZP  \PnP  GR  pP}P  PJQ  GR  LQTQ  VQ\Q  GR  ^QfQ  hQnQ  GR  pQ{Q  }QFR  GRr   