text:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addons>
<addon id="plugin.video.alltube.tv" version="2.3" name="alltube.tv" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.24.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" version="1.2.2"/>
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  alltube.tv
  <description lang="en">Zasoby serwisu alltube.tv</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license></license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <source></source>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon
	id="plugin.video.anime.pl" name="anime.pl" version="1.5" provider-name="Michal">
  <requires>
    <import addon="xbmc.python" version="2.1.0"/>
	<import addon="script.module.urlresolver" version="3.0.15"/>
	<import addon="script.module.ramic"/>
  </requires>
  <extension point="xbmc.python.pluginsource" library="addon.py">
    <provides>video</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    anime
    <description lang="en">anime.pl</description>
    <disclaimer lang="en"></disclaimer>
    <language></language>
    <platform>all</platform>
    <license></license>
    <forum></forum>
    <website>https://github.com/ramicspa/kodi</website>
    <email>ramicspa at gmail dot com</email>
    <source></source>
  </extension>
</addon>

<addon id="plugin.video.anyfilespl" version="1.0" name="anyFiles" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" />
</requires>

<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>

<extension point="xbmc.addon.metadata">
  anyFiles
  <description lang="en">anyFiles</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="plugin.video.bajkionline" version="1.3" name="bajki" provider-name="Michal">
 <requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" />
 </requires>
 <extension point="xbmc.python.pluginsource" library="main.py">
   <provides>video</provides>
 </extension>
<extension point="xbmc.addon.metadata">
  Bajkionline, Bajkipopolsku
  <description lang="en">Bajkionline, Bajkipopolsku</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="plugin.video.boxfilmpl" version="1.3" name="boxfilm" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" />
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  Zasoby serwisów: boxfilm.pl oraz jbofilm.pl
  <description lang="pl">Wszystkie filmy dostępne w serwisie są dostępne zupełnie za darmo.</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
    <screenshot>resources/screenshot-01.jpg</screenshot>
    <screenshot>resources/screenshot-02.jpg</screenshot>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.cdahd" version="1.5" name="cda-hd" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" version="1.2.3"/>
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  filmtu.pl (cda-hd.pl)
  <description lang="en">Zasoby filmtu.pl (cda-hd.pl)</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <source>https://github.com/ramicspa/kodi</source>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
    <screenshot>resources/screenshot-01.jpg</screenshot>
    <screenshot>resources/screenshot-02.jpg</screenshot>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.cdapl" version="2.0.3" name="cda.pl" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.common.plugin.cache" version="2.5.5"/>
  <import addon="script.module.ramic" version="1.2.6"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.service" library="check.py" start="startup"/>
<extension point="xbmc.addon.metadata">
  Zasoby serwisu [B]cda.pl[/B]
  <description lang="pl">Wtyczka umożliwia dostęp do bazy cda.pl</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
    <screenshot>resources/screenshot-01.jpg</screenshot>
    <screenshot>resources/screenshot-02.jpg</screenshot>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.cdaxpl" version="1.0" name="cda-x" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" version="1.2.8"/>
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  Zasoby: cda-x.pl
  <description lang="pl">cda-x.pl – filmy i seriale online</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
    <screenshot>resources/screenshot-01.jpg</screenshot>
    <screenshot>resources/screenshot-02.jpg</screenshot>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.dmchannels" name="Dailymotion channels" version="1.6" provider-name="Michal">
  <requires>
    <import addon="xbmc.python" version="2.1.0"/>
    <import addon="script.module.urlresolver" version="3.0.15"/>
  </requires>
  <extension point="xbmc.python.pluginsource" library="main.py">
    <provides>video</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
  ערוצי משתמש Dailymotion
  Kanały użytkowników z Dailymotion
  Canaux des utilisateurs de Dailymotion
  Dailymotion user channels
  <description lang="he">ההרחבה מאפשרת לעיין בתוכן הערוצים שנוצרו על ידי משתמשים ב - Dailymotion.</description>
  <description lang="pl">Wtyczka pozwala na przeglądanie zasobów video kanałów użytkowników serwisu.</description>
  <description lang="en">The addon allows to browse the content of the channels created by Dailymotion users.</description>
  <description lang="fr">Cette addon permet de pa\rcourir le contenu des chaînes créées par les utilisateurs de Dailymotion.</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email>ramicspa at gmail dot com</email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
</news>
 </extension>
</addon>

<addon id="plugin.video.dokumentcyfrowo" version="1.0" name="Dokument Cyfrowo" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="4.0.10"/>
  <import addon="script.module.ramic" version="1.2.6"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  http://www.dokumentcyfrowo.pl/
  <description lang="en">http://www.dokumentcyfrowo.pl/</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="plugin.video.efilmy" version="1.15" name="efilmy" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.common.plugin.cache" version="2.5.5"/>
  <import addon="script.module.urlresolver" version="3.0.20"/>
  <import addon="script.module.ramic"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  efilmy
  <description lang="en">Zasoby efilmy.tv</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon 	id="plugin.video.ekabaretpl" name="ekabaret" version="1.3" provider-name="Michal">
  <requires>
    <import addon="xbmc.python" version="2.1.0"/>
	<import addon="script.module.urlresolver" version="3.0.15"/>
	<import addon="script.module.ramic" />
  </requires>
  <extension point="xbmc.python.pluginsource" library="addon.py">
    <provides>video</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
   ekabaret
   <description lang="en">Zasoby ekabaret.pl</description>
   <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language>pl</language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email>ramicspa at gmail dot com</email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="plugin.video.ekinomaniaktv" version="1.0" name="ekinomaniak" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="4.0.0"/>
  <import addon="script.module.ramic" version="1.2.6"/>
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  http://ekinomaniak.tv/
  <description lang="en">http://ekinomaniak.tv/</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
    <screenshot>resources/screenshot-01.jpg</screenshot>
    <screenshot>resources/screenshot-02.jpg</screenshot>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.ekinotv" name="ekino-tv" version="1.9" provider-name="Michal">
  <requires>
    <import addon="xbmc.python" version="2.1.0"/>
	<import addon="script.module.urlresolver" version="3.0.15"/>
	<import addon="script.module.ramic"/>
  </requires>
  <extension point="xbmc.python.pluginsource" library="addon.py">
    <provides>video</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    http://ekino-tv.pl/
    <description lang="en">Odgrywa zasoby Ekino-tv</description>
    <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
    <language></language>
    <platform>all</platform>
    <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
    <forum>https://github.com/ramicspa/kodi(2)/issues</forum>
    <website>https://github.com/ramicspa/kodi(2)</website>
    <email>ramicspa at gmail dot com</email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>

  </news>
  </extension>
</addon>

<addon id="plugin.video.ekstraklasa" name="Ekstraklasa" version="2.0" provider-name="Michal">
  <requires>
    <import addon="xbmc.python" version="2.1.0"/>
    <import addon="script.module.urlresolver" version="3.0.15"/>
    <import addon="script.module.ramic" version="1.2.2"/>
  </requires>
  <extension point="xbmc.python.pluginsource" library="main.py">
    <provides>video</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    Mecze ekstraklasy z dailymotion i nie tylko
    <description lang="en">Ekstraklasa</description>
    <language></language>
    <platform>all</platform>
    <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
    <forum>https://github.com/ramicspa/kodi/issues</forum>
    <website>https://github.com/ramicspa/kodi</website>
    <email></email>
    <assets>
        <icon>icon.png</icon>
        <fanart>fanart.jpg</fanart>
    </assets>
  <news>
Ekstrakalasa.tv
Estadios.pl
LiveFootBallol
Lech.tv
FootbalOrgin
GoalArean
Meczyki.pl
Mecz replay
Polsat Sport
Laczy nas piłka
Do not install this addon if you are using a build.
 </news>
  </extension>
</addon>

<addon id="plugin.video.filisertv" version="2.1" name="Filiser" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  Filiser
  <description lang="en">Filiser</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
Dostęp do serwisu bez polskiego IP
  </news>
</extension>
</addon>

<addon id="plugin.video.filmbooster" version="2.6" name="FilmwebBooster" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" version="1.2.3" />
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  FilmwebBooster
  <description lang="pl">Baza filmów i seriali serwisu http://filmweb.pl wsparta silnikiem http://filmwebbooster.pl</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <source>https://github.com/ramicspa/kodi</source>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.filmmilicyjny" version="1.2" name="film-milicyjny" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" />
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  http://www.film-milicyjny.klubmord.com/
  <description lang="en">film-milicyjny: Klub MOrd – Polskie filmy kryminalne i sensacyjne - Filmy PRL -</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language>pl</language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email>ramicspa at gmail dot com</email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="plugin.video.filmydokumentalne" version="1.4" name="Filmy Dokumentalne" provider-name="Michal">
<requires>
    <import addon="xbmc.python" version="2.1.0"/>
    <import addon="script.module.urlresolver" version="3.0.20"/>
    <import addon="script.module.ramic" version="1.2.2"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  http://www.filmydokumentalne.eu/
  <description lang="en">http://www.filmydokumentalne.eu/</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="plugin.video.folderramic" name="folder" provider-name="Michal" version="1.1b">
<requires>
  <import addon="xbmc.python" version="2.1.0" />
</requires>
<extension library="default.py" point="xbmc.python.pluginsource">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  ramic folder
  ramic folder
  <description lang="en">a folder for video plugins</description>
  <description lang="pl">katalog dla pluginów video</description>
  <disclaimer lang="en">private use</disclaimer>
  <language />
  <platform>all</platform>
  <license />
  <forum />
  <website>https://github.com/ramicspa/kodi</website>
  <email>ramicspa@gmail.com</email>
  <source />
</extension>
</addon>

<addon id="plugin.video.freedisc.pl" version="1.4" name="freedisc" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.common.plugin.cache" version="2.5.5"/>
  <import addon="script.module.ramic" />
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  Freedisc
  <description lang="en">Freedisc</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email>ramicspa at gmail dot com</email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="plugin.video.iitv" name="iitv-seriale" version="2.3" provider-name="Michal">
  <requires>
    <import addon="xbmc.python" version="2.25.0"/>
	<import addon="script.module.urlresolver" version="4.0.0"/>
	<import addon="script.module.ramic" version="1.2.6"/>
  </requires>
  <extension point="xbmc.python.pluginsource" library="addon.py">
    <provides>video</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    iitv
    <description lang="en">Odgrywa zasoby iitv.pl</description>
	<disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
	<language></language>
	<platform>all</platform>
	<license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
	<forum>https://github.com/ramicspa/kodi/issues</forum>
	<website>https://github.com/ramicspa/kodi</website>
	<email></email>
	<assets>
		<icon>icon.png</icon>
		<fanart>fanart.jpg</fanart>
	</assets>
	<news>
	</news>
</extension>
</addon>

<addon id="plugin.video.iwatchonline" version="1.6" name="iwatchonline" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.common.plugin.cache" version="2.5.5"/>
  <import addon="script.module.urlresolver" version="3.0.20"/>
  <import addon="script.module.ramic" version="1.1.0"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  iwatchonline
  <description lang="en">iwatchonline</description>
  <disclaimer lang="en">private use only!</disclaimer>
  <language></language>
  <platform>all</platform>
  <license></license>
  <forum></forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <source></source>
</extension>
</addon>

<addon id="plugin.video.kinostacja" version="1.0" name="kinostacja" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" />
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  kinostacja
  <description lang="en">kinostacja</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email>ramicspaatgmaildotcom</email>
  <source>https://github.com/ramicspa/kodi</source>
</extension>
</addon>

<addon id="plugin.video.kreskowkazonepl" version="1.1" name="Kreskowka Zone" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" />
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  Zasoby serwisu: http://www.kreskowkazone.pl
  <description lang="pl">[COLOR red]kreskowka[/COLOR][COLOR white]zone[/COLOR]</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
    <screenshot>resources/screenshot-01.jpg</screenshot>
    <screenshot>resources/screenshot-02.jpg</screenshot>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.LiveIPTV" name="Live IPTV" version="2.1" provider-name="Michal">
  <requires>
    <import addon="xbmc.python" version="2.1.0"/>
    <import addon="plugin.video.f4mTester" version="2.2.3" optional="true" />
    <import addon="script.module.ramic" />
</requires>
  <extension point="xbmc.python.pluginsource" library="addon.py">

 <provides>video</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    Live IP TV
    <description lang="en">Live IP TV</description>
    <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
    <language></language>
    <platform>all</platform>
    <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
    <forum>https://github.com/ramicspa/kodi/issues</forum>
    <website>https://github.com/ramicspa/kodi</website>
    <email></email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
  </extension>
</addon>

<addon id="plugin.video.LivePolishTV" name="LivePolishTV" version="2.5.7" provider-name="Michal">
    <requires>
        <import addon="xbmc.python" version="2.1.0"/>
        <import addon="service.cronxbmc" optional="true"/>
        <import addon="script.module.ramic" version="1.2.6"/>
    </requires>
    <extension point="xbmc.python.pluginsource" library="main.py">
        <provides>video</provides>
    </extension>
  <extension point="xbmc.addon.metadata">
    Live Polish TV
    <description lang="en">Live Polish TV</description>
    <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
    <language></language>
    <platform>all</platform>
    <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
    <forum>https://github.com/ramicspa/kodi/issues</forum>
    <website>https://github.com/ramicspa/kodi</website>
    <email>ramicspa at gmail dot com</email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
Paid services are not supported. Do not bother asking for one.
Do not install this addon if you are using a build.
  </news>
  </extension>
</addon>

<addon id="plugin.video.montypython" version="1.0" name="Monty-Python" provider-name="Michal">
<requires>
    <import addon="xbmc.python" version="2.1.0"/>
    <import addon="script.module.urlresolver" version="3.0.20"/>
	<import addon="script.module.ramic" />
</requires>

<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>

<extension point="xbmc.addon.metadata">
  Komedie brytyjskie on-line
  <description lang="en">Komedie brytyjskie on-line</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="plugin.video.musichubdcom" version="1.1" name="MusicHub" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="4.0.0"/>
  <import addon="script.module.ramic" version="1.2.2"/>
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  All Your Favorite Music Under One Roof
  <description lang="en">The Musixhub platform lets you watch videos and play music from your favorite artists - full albums / latest videos / interviews / live performances and more.</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
    <screenshot>resources/screenshot-01.jpg</screenshot>
    <screenshot>resources/screenshot-02.jpg</screenshot>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.musicstreampl" version="1.0" name="MusicStream" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.24.0"/>
  <import addon="script.module.urlresolver" version="4.0.0"/>
  <import addon="script.module.ramic" version="1.2.6"/>
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  http://www.musicstream.pl
  <description lang="en">http://www.musicstream.pl</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
    <screenshot>resources/screenshot-01.jpg</screenshot>
    <screenshot>resources/screenshot-02.jpg</screenshot>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.naszekino" name="Nasze-Kino" version="2.5" provider-name="Michal">
  <requires>
    <import addon="xbmc.python" version="2.1.0"/>
    <import addon="script.module.ramic" version="1.2.2"/>
    <import addon="script.module.urlresolver" version="4.0.0"/>
  </requires>
  <extension point="xbmc.python.pluginsource" library="addon.py">
    <provides>video</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    nasze-kino.online
    <description lang="en">Odgrywa zasoby nasze-kino.online</description>
    <disclaimer lang="en"></disclaimer>
    <language></language>
    <platform>all</platform>
    <license></license>
    <forum></forum>
    <website></website>
    <email></email>
    <source></source>
  </extension>
</addon>

<addon id="plugin.video.naszekinotv" version="1.1" name="nasze-kino.tv" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" />
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  nasze-kino.tv
  <description lang="en">nasze-kino.tv</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <source>https://github.com/ramicspa/kodi</source>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.ninateka" version="1.2" name="ninateka" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.ramic"/>
</requires>

<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>

<extension point="xbmc.addon.metadata">
  ninateka
  <description lang="en">ninateka</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
    <screenshot>resources/screenshot-01.jpg</screenshot>
    <screenshot>resources/screenshot-02.jpg</screenshot>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="plugin.video.openkatalogcom" version="1.0" name="OpenKatalog" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" />
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  Zasoby serwisów: openkatalog.com
  <description lang="pl">OpenKatalog - nowym Polski katalogu filmów i seriali załadowanych na hosting - openload</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
    <screenshot>resources/screenshot-01.jpg</screenshot>
    <screenshot>resources/screenshot-02.jpg</screenshot>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.ramicpbs" version="1.0" name="PBS" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" version="1.2.0"/>
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  PBS ThinkTV
  <description lang="en">PBS ThinkTV</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
    <screenshot>resources/screenshot-01.jpg</screenshot>
    <screenshot>resources/screenshot-02.jpg</screenshot>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.ramicpolsat" version="1.0" name="PolsatNews" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.ramic"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  PolsatNews
  <description lang="en">PolsatNews</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email>ramicspa at gmail dot com</email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="plugin.video.ramictvlinkspl" version="1.0" name="TvLinks" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic" />
  <import addon="script.common.plugin.cache" version="2.5.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  Zasoby serwisu: http://www.tvlinks.pl
  <description lang="pl"></description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.ramictvn24" version="1.2" name="TVN24" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.ramic"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  TVN24
  <description lang="en">TVN24</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email>ramicspa at gmail dot com</email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="plugin.video.segos" version="3.0" name="segos" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.common.plugin.cache" version="2.5.5"/>
  <import addon="script.module.urlresolver" version="3.0.15"/>
  <import addon="script.module.ramic"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  segos
  <description lang="en">Zasoby segos.es</description>
  <disclaimer lang="en">private use</disclaimer>
  <language></language>
  <platform>all</platform>
  <license></license>
  <forum></forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email>ramicspaatgmaildotcom</email>
  <source></source>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
    <screenshot>resources/screenshot-01.jpg</screenshot>
    <screenshot>resources/screenshot-02.jpg</screenshot>
  </assets>
  <news>
Do not install this addon if you are using a build.
  </news>
</extension>
</addon>

<addon id="plugin.video.serialosypl" version="1.7" name="serialosy.pl" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.module.urlresolver" version="3.0.20"/>
  <import addon="script.module.ramic" />
</requires>

<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>

<extension point="xbmc.addon.metadata">
  Serialosy.pl
  <description lang="en">Serialosy.pl</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email></email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
</news>
</extension>
</addon>

<addon id="plugin.video.szukajkatv" version="1.3" name="Szukajka.tv" provider-name="Michal">
<requires>
    <import addon="xbmc.python" version="2.1.0"/>
    <import addon="script.common.plugin.cache" version="2.5.5"/>
    <import addon="script.module.urlresolver" version="3.0.20"/>
	<import addon="script.module.ramic" version="1.2.1"/>
</requires>

<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>

<extension point="xbmc.addon.metadata">
  Szukajka.tv
  <description lang="en">Szukajka.tv</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email>ramicspa at gmail dot com</email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="plugin.video.TVP.pl" name="TVP.pl" version="2.1.5" provider-name="Michal">
  <requires>
    <import addon="xbmc.python" version="2.1.0"/>
    <import addon="script.module.ramic"/>
  </requires>
  <extension point="xbmc.python.pluginsource" library="addon.py">
    <provides>video</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
	Zasoby serwisu tvp.pl oraz vod.tvp.pl
	<description lang="en">Zasoby serwisu tvp.pl oraz vod.tvp.pl</description>
	<disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
	<language>pl</language>
	<platform>all</platform>
	<license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
	<forum>https://github.com/ramicspa/kodi/issues</forum>
	<website>https://github.com/ramicspa/kodi</website>
	<email></email>
	<assets>
		<icon>icon.png</icon>
		<fanart>fanart.jpg</fanart>
	</assets>
	<news>
Do not install this addon if you are using a build.
	</news>
  </extension>
</addon>

<addon id="plugin.video.viderpl" version="1.5" name="vider" provider-name="Michal">
<requires>
  <import addon="xbmc.python" version="2.1.0"/>
  <import addon="script.common.plugin.cache" version="2.5.5"/>
  <import addon="script.module.ramic" />
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  vider.info
  <description lang="en">vider.pl</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email>ramicspa at gmail dot com</email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="plugin.video.zalukajcom" version="1.5" name="Zalukaj" provider-name="Michal">
<requires>
    <import addon="xbmc.python" version="2.25.0"/>
    <import addon="script.module.urlresolver" version="3.0.0"/>
    <import addon="script.module.ramic"/>
</requires>
<extension point="xbmc.python.pluginsource" library="main.py">
  <provides>video</provides>
</extension>
<extension point="xbmc.addon.metadata">
  zalukaj.com
  <description lang="en">zalukaj.com</description>
  <disclaimer lang="en">A private use only. For bugs, requests or general questions visit my repository https://github.com/ramicspa/kodi</disclaimer>
  <language></language>
  <platform>all</platform>
  <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
  <forum>https://github.com/ramicspa/kodi/issues</forum>
  <website>https://github.com/ramicspa/kodi</website>
  <email>ramicspaatgmaildotcom</email>
  <assets>
    <icon>icon.png</icon>
    <fanart>fanart.jpg</fanart>
  </assets>
  <news>
  </news>
</extension>
</addon>

<addon id="repository.ramic" name="Ramic Kodi Add-ons Repository (Unofficial)" version="1.4.0" provider-name="Michal">">
    <extension point="xbmc.addon.repository" name="Ramic Kodi Add-ons Repository (Unofficial)">
        <dir>
            <info compressed="false">http://cherrytv.webd.pl/ramicmod/addons.xml</info>
            <checksum>http://cherrytv.webd.pl/ramicmod/addons.xml.md5</checksum>
            <datadir zip="true">http://cherrytv.webd.pl/ramicmod/ramic/</datadir>
        </dir>
        <dir>
            <info compressed="false">https://raw.githubusercontent.com/meserak86/cimar/master/addons.xml</info>
            <checksum>https://raw.githubusercontent.com/meserak86/cimar/master/addons.xml.md5</checksum>
            <datadir zip="true">https://github.com/meserak86/cimar/raw/master/ramic</datadir>
        </dir>
    </extension>
    <extension point="xbmc.addon.metadata">
        Ramic Kodi Repository (Unofficial)
        Repozytorium wtyczek
        Addons repository
        <description>Unofficial, private Addons repository.</description>
        <disclaimer>Repository has non-comercial nature. Just for fun</disclaimer>
        <disclaimer lang="pl">Zawartość repozytorium ma charakter niekomercyjny, tworzone dla zabawy.</disclaimer>
        <platform>all</platform>
        <website></website>
        <email></email>
    </extension>
</addon>

<addon id="script.module.ramic" name="repository.ramic" version="1.2.8" provider-name="Michal">
  <requires>
    <import addon="xbmc.python" version="2.1.0"/>
  </requires>
  <extension point="xbmc.python.module" library="lib" />
  <extension point="xbmc.addon.metadata">
    <platform>all</platform>
  </extension>
</addon>

<addon id="script.module.urlresolver" name="URLResolver" version="4.0.17" provider-name="Eldorado, tknorris, tvaddons">
	<requires>
		<import addon="xbmc.python" version="2.1.0" />
		<import addon="plugin.video.youtube" optional="true" />
		<import addon="script.module.python.twitch" optional="true" />
		<import addon="script.module.cryptopy" version="1.2.6" optional="true" />
	</requires>
	<extension point="xbmc.python.module" library="lib" />
	<extension point="xbmc.python.pluginsource" library="lib/default.py" />
	<extension point="xbmc.addon.metadata">
		<platform>all</platform>
		Resolve common video host URL's to be playable in XBMC/Kodi.
		Prilagodi najčešće URL-ove video izvora kako bi radili u XBMC/Kodiju.
		<description lang="en">Resolve common video host URL's to be playable in XBMC/Kodi, simplify addon development of video plugins requiring multi video hosts.</description>
		<description lang="hr">Prilagodi najčešće URL-ove video izvora kako bi radili u XBMC/Kodiju, pojednostavnjuje razvoj priključaka za video dodatke koji zahtjevaju višestruke video izvore.</description>
        <forum>https://www.tvaddons.co/forums</forum>
        <website>https://www.tvaddons.co</website>
	</extension>
</addon>
</addons>


text:
title: Improve Form Field Accessibility with the label Element
localeTitle: 使用标签元素改进表单字段可访问性
---
## 使用标签元素改进表单字段可访问性

这是一个存根。 [帮助我们的社区扩展它](https://github.com/freecodecamp/guides/tree/master/src/pages/certifications/responsive-web-design/applied-accessibility/improve-form-field-accessibility-with-the-label-element/index.md) 。

[这种快速风格指南有助于确保您的拉取请求被接受](https://github.com/freecodecamp/guides/blob/master/README.md) 。

redpajama_set_name: RedPajamaGithub


text:
qc::castable timestamp
=========================

part of [Castable API](../castable.md)

Usage
-----
`qc::castable timestamp string`

Description
-----------
Test if the given string can be cast to a timestamp without timezone.

Examples
--------
```tcl

% qc::castable timestamp today
true
% qc::castable timestamp 12/5/12
true
% qc::castable timestamp foo
false
```

----------------------------------
*[Qcode Software Limited] [qcode]*

[qcode]: http://www.qcode.co.uk "Qcode Software"


text:
package proguard.io;

/**
 * This interface provides a method to filter data entries.
 *
 * @author Eric Lafortune
 */
public interface DataEntryFilter
{
    /**
     * Checks whether the filter accepts the given data entry.
     * @param dataEntry the data entry to filter.
     * @return a boolean indicating whether the filter accepts the given data
     *         entry.
     */
    public boolean accepts(DataEntry dataEntry);
}


text:
<?php

class PaymentController extends Controller {
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/mall';

	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate()
	{
		$model=new Payment;

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Payment']))
		{
			$model->attributes=$_POST['Payment'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->pay_id));
		}

		$this->render('create',array(
			'model'=>$model,
		));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id)
	{
		$model=$this->loadModel($id);

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Payment']))
		{
			$model->attributes=$_POST['Payment'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->pay_id));
		}

		$this->render('update',array(
			'model'=>$model,
		));
	}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
		if(Yii::app()->request->isPostRequest)
		{
			// we only allow deletion via POST request
			$this->loadModel($id)->delete();

			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if(!isset($_GET['ajax']))
				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
		}
		else
			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('Payment');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new Payment('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Payment']))
			$model->attributes=$_GET['Payment'];

		$this->render('admin',array(
			'model'=>$model,
		));
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=Payment::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='payment-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
}


text:
class JTAGFIFOFullError(Exception):
    pass
class JTAGFIFOEmptyError(Exception):
    pass

class JTAGInputFIFO(object):
    def __init__(self, pin):
        assert(pin.source_width >= 1)
        assert(pin.probe_width == 1)
        databits = pin.source_width - 1
        self.pin = pin
        self.validflag = 1<<databits
    def enq(self, value):
        if self.pin.probe != 1:
            raise JTAGFIFOFullError()
        assert(value < self.validflag)
        self.pin.source = value  # avoid different wire delays from corrupting data
        self.pin.source = self.validflag | value

class JTAGOutputFIFO(object):
    def __init__(self, pin):
        assert(pin.source_width == 1)
        assert(pin.probe_width >= 1)
        databits = pin.probe_width - 1
        self.pin = pin
        self.validflag = 1<<databits
    def deq(self):
        probe_val = self.pin.probe
        if (probe_val & self.validflag) == 0:
            raise JTAGFIFOEmptyError()
        self.pin.source = 0
        self.pin.source = 1   # fifo.deq
        return probe_val & (~self.validflag)


text:
package com.pezfa.inventario.controller;

import com.pezfa.inventario.database.DevolucionDB;
import com.pezfa.inventario.models.Devoluciones;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.model.chart.Axis;
import org.primefaces.model.chart.AxisType;
import org.primefaces.model.chart.BarChartModel;
import org.primefaces.model.chart.BarChartSeries;
import org.primefaces.model.chart.CartesianChartModel;
import org.primefaces.model.chart.CategoryAxis;
import org.primefaces.model.chart.LineChartModel;
import org.primefaces.model.chart.LineChartSeries;
import org.primefaces.model.chart.LinearAxis;

/**
 *
 * @author Romario
 */
@ManagedBean
@ViewScoped
public class DevolucionController implements Serializable {

    private Devoluciones devolucion;
    private List<Devoluciones> devoluciones;
    private DevolucionDB db;
    private CartesianChartModel devolucionesIndicador;

    public DevolucionController() {
        db = new DevolucionDB();
    }

    public CartesianChartModel getDevolucionesIndicador() {
        return cargarIndicador();
    }

    public void setDevolucionesIndicador(CartesianChartModel devolucionesIndicador) {
        this.devolucionesIndicador = devolucionesIndicador;
    }

    public Devoluciones getDevolucion() {
        return devolucion;
    }

    public void setDevolucion(Devoluciones devolucion) {
        this.devolucion = devolucion;
    }

    public List<Devoluciones> getDevoluciones() {
        List<Devoluciones> lista = db.read("from Devoluciones de where de.anio=date_part('year', now()) order by de.mes");
        return lista;
    }

    public void setDevoluciones(List<Devoluciones> devoluciones) {
        this.devoluciones = devoluciones;
    }

    public List<Devoluciones> getDevolucionesDb() {
        db = new DevolucionDB();
        List<Devoluciones> lista = db.read("from Devoluciones de where de.anio=date_part('year', now()) order by de.mes");
        return lista;
    }

    private CartesianChartModel cargarIndicador() {
        devolucionesIndicador = new BarChartModel();

        BarChartSeries ventas = new BarChartSeries();
        ventas.setLabel("Ventas");

        LineChartSeries devolucionesData = new LineChartSeries();
        devolucionesData.setLabel("Reclamos");

        List<Devoluciones> datos = this.getDevolucionesDb();

        int mayor = 0;
        for (Devoluciones obj : datos) {
            ventas.set(obj.getMesString(), obj.getVentas());
            devolucionesData.set(obj.getMesString(), obj.getDevoluciones());
            if (obj.getVentas() > mayor) {
                mayor = obj.getVentas();
            }
        }
        if (ventas.getData().isEmpty())
        {
            ventas.set("Enero", 0);
        }

        devolucionesIndicador.addSeries(ventas);
        devolucionesIndicador.addSeries(devolucionesData);
        devolucionesIndicador.setTitle("Porcentaje de satisfacción de los clientes");
        devolucionesIndicador.setLegendPosition("ne");
        devolucionesIndicador.setAnimate(true);
        devolucionesIndicador.setMouseoverHighlight(false);
        Axis yAxis = devolucionesIndicador.getAxis(AxisType.Y);
        yAxis.setMin(0);
        yAxis.setMax(mayor+10);
        yAxis.setLabel("Rango de satisfacción");

        return devolucionesIndicador;
    }
}


text:
from distutils.core import setup

setup(
    name='Distutils',
    version='RotaGenerator',
    description='Generate a rota',
    author='Mike Pyne',
    author_email='mike@pyne.me.uk',
    url='https://github.com/mikepyne/RotaGenerator',
    packages=['rota', 'spiders'],
    package_dir={'': 'src'},
    scripts=['src/rg.py'],
)


text:
"""\
This module converts cable(s) to CSV:

    Reference ID | Created | Origin | Subject

It expects a cable directory ./cable/ with the cables
and saves the cables into './cables.csv'
"""
import csv
import codecs
import cStringIO
from cablemap.core import cables_from_source
from cablemap.core.utils import titlefy

# Source: <http://docs.python.org/library/csv.html>
class UnicodeWriter:
    """
    A CSV writer which will write rows to CSV file "f",
    which is encoded in the given encoding.
    """

    def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds):
        # Redirect output to a queue
        self.queue = cStringIO.StringIO()
        self.writer = csv.writer(self.queue, dialect=dialect, **kwds)
        self.stream = f
        self.encoder = codecs.getincrementalencoder(encoding)()

    def writerow(self, row):
        self.writer.writerow([s.encode("utf-8") for s in row])
        # Fetch UTF-8 output from the queue ...
        data = self.queue.getvalue()
        data = data.decode("utf-8")
        # ... and reencode it into the target encoding
        data = self.encoder.encode(data)
        # write to the target stream
        self.stream.write(data)
        # empty queue
        self.queue.truncate(0)

    def writerows(self, rows):
        for row in rows:
            self.writerow(row)

def generate_csv(in_dir, out):
    """\
    Walks through the `in_dir` and generates the CSV file `out`
    """
    writer = UnicodeWriter(open(out, 'wb'), delimiter=';')
    writer.writerow(('Reference ID', 'Created', 'Origin', 'Subject'))
    for cable in cables_from_source(in_dir):
        writer.writerow((cable.reference_id, cable.created, cable.origin, titlefy(cable.subject)))

if __name__ == '__main__':
    import os
    if not os.path.isdir('./cable/'):
        raise Exception('Expected a directory "cable"')
    generate_csv('./cable/', './cables.csv')


text:
import copy
import mock

from neutronclient.v2_0 import client as neutron_client
from oslotest import mockpatch

from cloudferrylib.os.network import neutron
from cloudferrylib.utils import utils
from tests import test

FAKE_CONFIG = utils.ext_dict(
    cloud=utils.ext_dict({'user': 'fake_user',
                          'password': 'fake_password',
                          'tenant': 'fake_tenant',
                          'auth_url': 'http://1.1.1.1:35357/v2.0/',
                          'service_tenant': 'services'}),
    migrate=utils.ext_dict({'ext_net_map': 'fake_ext_net_map.yaml',
                            'speed_limit': '10MB',
                            'retry': '7',
                            'time_wait': 5}))

class NeutronTestCase(test.TestCase):

    def setUp(self):
        super(NeutronTestCase, self).setUp()

        self.neutron_mock_client = mock.MagicMock()

        self.neutron_client_patch = \
            mockpatch.PatchObject(neutron_client,
                                  'Client',
                                  new=self.neutron_mock_client)
        self.useFixture(self.neutron_client_patch)
        self.identity_mock = mock.Mock()
        self.network_mock = mock.Mock()
        self.network_mock.neutron_client = self.neutron_mock_client
        self.fake_cloud = mock.Mock()
        self.fake_cloud.mysql_connector = mock.Mock()
        self.fake_cloud.resources = dict(identity=self.identity_mock,
                                         network=self.network_mock)

        self.neutron_network_client = \
            neutron.NeutronNetwork(FAKE_CONFIG, self.fake_cloud)

        self.identity_mock.get_tenant_id_by_name = self.f_tenant_id_by_name
        self.identity_mock.get_tenants_func = \
            mock.Mock(return_value=self.f_mock)

        self.net_1_info = {'name': 'fake_network_name_1',
                           'id': 'fake_network_id_1',
                           'admin_state_up': True,
                           'shared': False,
                           'tenant_id': 'fake_tenant_id_1',
                           'tenant_name': 'fake_tenant_name_1',
                           'subnet_names': ['fake_subnet_name_1'],
                           'router:external': False,
                           'provider:physical_network': None,
                           'provider:network_type': 'gre',
                           'provider:segmentation_id': 5,
                           'res_hash': 'fake_net_hash_1',
                           'meta': {}}

        self.net_2_info = {'name': 'fake_network_name_2',
                           'id': 'fake_network_id_2',
                           'admin_state_up': True,
                           'shared': False,
                           'tenant_id': 'fake_tenant_id_2',
                           'tenant_name': 'fake_tenant_name_2',
                           'subnet_names': ['fake_subnet_name_2'],
                           'router:external': False,
                           'provider:physical_network': None,
                           'provider:network_type': 'gre',
                           'provider:segmentation_id': 10,
                           'res_hash': 'fake_net_hash_2',
                           'meta': {}}

        self.subnet_1_info = {'name': 'fake_subnet_name_1',
                              'id': 'fake_subnet_id_1',
                              'enable_dhcp': True,
                              'allocation_pools': [{'start': 'fake_start_ip_1',
                                                    'end': 'fake_end_ip_1'}],
                              'gateway_ip': 'fake_gateway_ip_1',
                              'ip_version': 4,
                              'cidr': 'fake_cidr_1',
                              'network_name': 'fake_network_name_1',
                              'external': False,
                              'network_id': 'fake_network_id_1',
                              'tenant_name': 'fake_tenant_name_1',
                              'res_hash': 'fake_subnet_hash_1',
                              'meta': {}}

        self.subnet_2_info = {'name': 'fake_subnet_name_2',
                              'id': 'fake_subnet_id_2',
                              'enable_dhcp': True,
                              'allocation_pools': [{'start': 'fake_start_ip_2',
                                                    'end': 'fake_end_ip_2'}],
                              'gateway_ip': 'fake_gateway_ip_2',
                              'ip_version': 4,
                              'cidr': 'fake_cidr_2',
                              'network_name': 'fake_network_name_2',
                              'external': False,
                              'network_id': 'fake_network_id_2',
                              'tenant_name': 'fake_tenant_name_2',
                              'res_hash': 'fake_subnet_hash_2',
                              'meta': {}}

    def f_mock(self, tenant_id):
        if tenant_id == 'fake_tenant_id_1':
            return 'fake_tenant_name_1'
        elif tenant_id == 'fake_tenant_id_2':
            return 'fake_tenant_name_2'

    def f_tenant_id_by_name(self, name):
        if name == 'fake_tenant_name_1':
            return 'fake_tenant_id_1'
        elif name == 'fake_tenant_name_2':
            return 'fake_tenant_id_2'

    def test_get_client(self):
        # To check self.mock_client call only from this test method
        self.neutron_mock_client.reset_mock()

        client = self.neutron_network_client.get_client()

        self.neutron_mock_client.assert_called_once_with(
            username='fake_user',
            password='fake_password',
            tenant_name='fake_tenant',
            auth_url='http://1.1.1.1:35357/v2.0/'
        )
        self.assertEqual(self.neutron_mock_client(), client)

    def test_get_networks(self):

        fake_networks_list = {'networks': [{'status': 'ACTIVE',
                                            'subnets': ['fake_subnet_id_1'],
                                            'name': 'fake_network_name_1',
                                            'provider:physical_network': None,
                                            'admin_state_up': True,
                                            'tenant_id': 'fake_tenant_id_1',
                                            'provider:network_type': 'gre',
                                            'router:external': False,
                                            'shared': False,
                                            'id': 'fake_network_id_1',
                                            'provider:segmentation_id': 5}]}

        self.neutron_mock_client().list_networks.return_value = \
            fake_networks_list
        self.neutron_mock_client.show_subnet.return_value = \
            {'subnet': {'name': 'fake_subnet_name_1'}}
        self.network_mock.get_resource_hash = \
            mock.Mock(return_value='fake_net_hash_1')

        networks_info = [self.net_1_info]
        networks_info_result = self.neutron_network_client.get_networks()
        self.assertEquals(networks_info, networks_info_result)

    def test_get_subnets(self):

        fake_subnets_list = {
            'subnets': [{'name': 'fake_subnet_name_1',
                         'enable_dhcp': True,
                         'network_id': 'fake_network_id_1',
                         'tenant_id': 'fake_tenant_id_1',
                         'allocation_pools': [
                             {'start': 'fake_start_ip_1',
                              'end': 'fake_end_ip_1'}
                         ],
                         'host_routes': [],
                         'ip_version': 4,
                         'gateway_ip': 'fake_gateway_ip_1',
                         'cidr': 'fake_cidr_1',
                         'id': 'fake_subnet_id_1'}]}

        self.neutron_mock_client().list_subnets.return_value = \
            fake_subnets_list
        self.neutron_mock_client.show_network.return_value = \
            {'network': {'name': 'fake_network_name_1',
                         'router:external': False}}
        self.network_mock.get_resource_hash = \
            mock.Mock(return_value='fake_subnet_hash_1')

        subnets_info = [self.subnet_1_info]
        subnets_info_result = self.neutron_network_client.get_subnets()
        self.assertEquals(subnets_info, subnets_info_result)

    def test_get_routers(self):

        fake_routers_list = {
            'routers': [{'status': 'ACTIVE',
                         'external_gateway_info': {
                             'network_id': 'fake_network_id_1',
                             'enable_snat': True
                         },
                         'name': 'fake_router_name_1',
                         'admin_state_up': True,
                         'tenant_id': 'fake_tenant_id_1',
                         'routes': [],
                         'id': 'fake_router_id_1'}]}

        self.neutron_mock_client().list_routers.return_value = \
            fake_routers_list
        self.neutron_mock_client.show_network.return_value = \
            {'network': {'name': 'fake_network_name_1',
                         'tenant_id': 'fake_tenant_id_1'}}

        fake_ports_list = {
            'ports': [{'fixed_ips': [{'subnet_id': 'fake_subnet_id_1',
                                      'ip_address': 'fake_ipaddr_1'}],
                       'device_id': 'fake_router_id_1'}]}

        self.neutron_mock_client.list_ports.return_value = fake_ports_list
        self.network_mock.get_resource_hash = \
            mock.Mock(return_value='fake_router_hash')

        routers_info = [{'name': 'fake_router_name_1',
                         'id': 'fake_router_id_1',
                         'admin_state_up': True,
                         'routes': [],
                         'external_gateway_info': {
                             'network_id': 'fake_network_id_1',
                             'enable_snat': True
                         },
                         'ext_net_name': 'fake_network_name_1',
                         'ext_net_tenant_name': 'fake_tenant_name_1',
                         'ext_net_id': 'fake_network_id_1',
                         'tenant_name': 'fake_tenant_name_1',
                         'ips': ['fake_ipaddr_1'],
                         'subnet_ids': ['fake_subnet_id_1'],
                         'res_hash': 'fake_router_hash',
                         'meta': {}}]

        routers_info_result = self.neutron_network_client.get_routers()
        self.assertEquals(routers_info, routers_info_result)

    def test_get_floatingips(self):

        fake_floatingips_list = {
            'floatingips': [{'router_id': None,
                             'tenant_id': 'fake_tenant_id_1',
                             'floating_network_id': 'fake_network_id_1',
                             'fixed_ip_address': None,
                             'floating_ip_address': 'fake_floatingip_1',
                             'port_id': None,
                             'id': 'fake_floating_ip_id_1'}]}

        self.neutron_mock_client().list_floatingips.return_value = \
            fake_floatingips_list
        self.neutron_mock_client.show_network.return_value = \
            {'network': {'name': 'fake_network_name_1',
                         'tenant_id': 'fake_tenant_id_1'}}

        floatingips_info = [{'id': 'fake_floating_ip_id_1',
                             'tenant_id': 'fake_tenant_id_1',
                             'floating_network_id': 'fake_network_id_1',
                             'network_name': 'fake_network_name_1',
                             'ext_net_tenant_name': 'fake_tenant_name_1',
                             'tenant_name': 'fake_tenant_name_1',
                             'fixed_ip_address': None,
                             'floating_ip_address': 'fake_floatingip_1',
                             'meta': {}}]

        floatings_info_result = self.neutron_network_client.get_floatingips()
        self.assertEquals(floatingips_info, floatings_info_result)

    def test_get_security_groups(self):

        fake_secgroups_list = {
            'security_groups': [
                {'id': 'fake_secgr_id_1',
                 'tenant_id': 'fake_tenant_id_1',
                 'name': 'fake_secgr_name_1',
                 'security_group_rules': [
                     {'remote_group_id': None,
                      'direction': 'egress',
                      'remote_ip_prefix': None,
                      'protocol': 'fake_protocol',
                      'tenant_id': 'fake_tenant_id_1',
                      'port_range_max': 22,
                      'security_group_id': 'fake_secgr_id_1',
                      'port_range_min': 22,
                      'ethertype': 'IPv4',
                      'id': 'fake_secgr_rule_id_1'}
                 ],
                 'description': 'fake_secgr_1_description'}
            ]
        }

        self.neutron_mock_client().list_security_groups.return_value = \
            fake_secgroups_list

        secgr_info = {'name': 'fake_secgr_name_1',
                      'id': 'fake_secgr_id_1',
                      'tenant_id': 'fake_tenant_id_1',
                      'tenant_name': 'fake_tenant_name_1',
                      'description': 'fake_secgr_1_description',
                      'meta': {}}

        rule_info = {'remote_group_id': None,
                     'direction': 'egress',
                     'remote_ip_prefix': None,
                     'protocol': 'fake_protocol',
                     'port_range_min': 22,
                     'port_range_max': 22,
                     'ethertype': 'IPv4',
                     'security_group_id': 'fake_secgr_id_1',
                     'meta': {}}

        rule_info['rule_hash'] = \
            self.neutron_network_client.get_resource_hash(rule_info,
                                                          'direction',
                                                          'remote_ip_prefix',
                                                          'protocol',
                                                          'port_range_min',
                                                          'port_range_max',
                                                          'ethertype')

        secgr_info['security_group_rules'] = [rule_info]
        secgr_info['res_hash'] = \
            self.neutron_network_client.get_resource_hash(secgr_info,
                                                          'name',
                                                          'tenant_name',
                                                          'description')
        secgroups_info = [secgr_info]

        self.network_mock.get_resource_hash.side_effect = [
            rule_info['rule_hash'],
            secgr_info['res_hash']
        ]

        secgr_info_result = self.neutron_network_client.get_sec_gr_and_rules()
        self.assertEquals(secgroups_info, secgr_info_result)

    def test_upload_neutron_security_groups(self):

        sg1_info = {'name': 'fake_secgr_name_1',
                    'tenant_name': 'fake_tenant_name_1',
                    'description': 'fake_secgr_1_description',
                    'res_hash': 'fake_secgr_1_hash',
                    'meta': {}}

        sg2_info = {'name': 'fake_secgr_name_2',
                    'tenant_name': 'fake_tenant_name_1',
                    'description': 'fake_secgr_2_description',
                    'res_hash': 'fake_secgr_2_hash',
                    'meta': {}}

        self.neutron_network_client.get_sec_gr_and_rules = \
            mock.Mock(return_value=[sg1_info])

        fake_secgs = [sg1_info, sg2_info]

        self.neutron_network_client.upload_neutron_security_groups(fake_secgs)

        sec_gr_info = {
            'security_group': {'name': 'fake_secgr_name_2',
                               'tenant_id': 'fake_tenant_id_1',
                               'description': 'fake_secgr_2_description'}}

        self.neutron_mock_client().create_security_group.\
            assert_called_once_with(sec_gr_info)

    def test_upload_sec_group_rules(self):

        sg1_info = {
            'name': 'fake_secgr_name_1',
            'tenant_name': 'fake_tenant_name_1',
            'description': 'fake_secgr_1_description',
            'security_group_rules': [{'remote_group_id': None,
                                      'direction': 'egress',
                                      'remote_ip_prefix': None,
                                      'protocol': 'tcp',
                                      'port_range_min': 22,
                                      'port_range_max': 22,
                                      'ethertype': 'IPv4',
                                      'security_group_id': 'fake_secgr_id_1',
                                      'rule_hash': 'fake_rule_1_hash',
                                      'meta': {}}],
            'res_hash': 'fake_secgr_1_hash'}

        sg2_info = {
            'name': 'fake_secgr_name_2',
            'tenant_name': 'fake_tenant_name_1',
            'description': 'fake_secgr_2_description',
            'security_group_rules': [{'remote_group_id': None,
                                      'direction': 'egress',
                                      'remote_ip_prefix': None,
                                      'protocol': 'tcp',
                                      'port_range_min': 80,
                                      'port_range_max': 80,
                                      'ethertype': 'IPv4',
                                      'security_group_id': 'fake_secgr_id_2',
                                      'rule_hash': 'fake_rule_2_hash',
                                      'meta': {}}],
            'res_hash': 'fake_secgr_2_hash'}

        existing_sg2_info = {
            'name': 'fake_secgr_name_2',
            'tenant_id': 'fake_existing_tenant_id',
            'tenant_name': 'fake_tenant_name_1',
            'id': 'fake_existing_secgr_id_2',
            'description': 'fake_secgr_2_description',
            'security_group_rules': [
                {'remote_group_id': None,
                 'direction': 'egress',
                 'remote_ip_prefix': None,
                 'protocol': None,
                 'port_range_min': None,
                 'port_range_max': None,
                 'ethertype': 'IPv4',
                 'security_group_id': 'fake_existing_secgr_id_2',
                 'rule_hash': 'fake_rule_2.1_hash'}
            ],
            'res_hash': 'fake_secgr_2_hash'}

        fake_existing_secgroups = [sg1_info, existing_sg2_info]

        self.neutron_network_client.get_sec_gr_and_rules = \
            mock.Mock(return_value=fake_existing_secgroups)

        self.neutron_network_client.upload_sec_group_rules([sg1_info,
                                                            sg2_info])

        rule_info = {
            'security_group_rule': {
                'direction': 'egress',
                'protocol': 'tcp',
                'port_range_min': 80,
                'port_range_max': 80,
                'ethertype': 'IPv4',
                'remote_ip_prefix': None,
                'security_group_id': 'fake_existing_secgr_id_2',
                'tenant_id': 'fake_existing_tenant_id'}
        }

        self.neutron_mock_client().create_security_group_rule.\
            assert_called_once_with(rule_info)

    def test_upload_networks(self):

        fake_existing_nets = [self.net_2_info]

        self.neutron_network_client.get_networks = \
            mock.Mock(return_value=fake_existing_nets)

        network_info = {
            'network': {'name': 'fake_network_name_1',
                        'admin_state_up': True,
                        'tenant_id': 'fake_tenant_id_1',
                        'shared': False,
                        'router:external': False,
                        'provider:physical_network': None,
                        'provider:network_type': 'gre'
                        }}

        self.neutron_network_client.upload_networks([self.net_1_info])

        if network_info['network']['provider:physical_network']:
            self.neutron_mock_client().create_network.\
                assert_called_once_with(network_info)

    def test_upload_subnets(self):

        src_net_info = copy.deepcopy(self.net_1_info)
        src_net_info['subnet_names'].append('fake_subnet_name_2')

        dst_net_info = self.net_1_info

        subnet1_info = self.subnet_1_info

        subnet2_info = copy.deepcopy(self.subnet_2_info)
        subnet2_info['network_name'] = 'fake_network_name_1'
        subnet2_info['network_id'] = 'fake_network_id_1'
        subnet2_info['tenant_name'] = 'fake_tenant_name_1'

        self.neutron_network_client.get_networks = \
            mock.Mock(return_value=[dst_net_info])
        self.neutron_network_client.get_subnets = \
            mock.Mock(return_value=[{'res_hash': 'fake_subnet_hash_1'}])

        subnet_info = {
            'subnet': {'name': 'fake_subnet_name_2',
                       'enable_dhcp': True,
                       'network_id': 'fake_network_id_1',
                       'cidr': 'fake_cidr_2',
                       'allocation_pools': [{'start': 'fake_start_ip_2',
                                             'end': 'fake_end_ip_2'}],
                       'gateway_ip': 'fake_gateway_ip_2',
                       'ip_version': 4,
                       'tenant_id': 'fake_tenant_id_1'}}

        self.neutron_network_client.upload_subnets([src_net_info],
                                                   [subnet1_info,
                                                    subnet2_info])
        self.neutron_mock_client().create_subnet.\
            assert_called_once_with(subnet_info)

    def test_upload_routers(self):

        router1_info = {
            'name': 'fake_router_name_1',
            'id': 'fake_router_id_1',
            'admin_state_up': True,
            'routes': [],
            'external_gateway_info': {'network_id': 'fake_network_id_1',
                                      'enable_snat': True},
            'ext_net_name': 'fake_network_name_1',
            'ext_net_tenant_name': 'fake_tenant_name_1',
            'ext_net_id': 'fake_network_id_1',
            'tenant_name': 'fake_tenant_name_1',
            'ips': ['fake_ipaddr_1'],
            'subnet_ids': ['fake_subnet_id_1'],
            'res_hash': 'fake_router_hash_1',
            'meta': {}}

        router2_info = {
            'name': 'fake_router_name_2',
            'id': 'fake_router_id_2',
            'admin_state_up': True,
            'routes': [],
            'external_gateway_info': {'network_id': 'fake_network_id_2',
                                      'enable_snat': True},
            'ext_net_name': 'fake_network_name_2',
            'ext_net_tenant_name': 'fake_tenant_name_2',
            'ext_net_id': 'fake_network_id_2',
            'tenant_name': 'fake_tenant_name_2',
            'ips': ['fake_ipaddr_2'],
            'subnet_ids': ['fake_subnet_id_2'],
            'res_hash': 'fake_router_hash_2',
            'meta': {}}

        src_nets_info = [self.net_1_info, self.net_2_info]
        src_subnets_info = [self.subnet_1_info, self.subnet_2_info]
        src_routers_info = [router1_info, router2_info]

        self.neutron_network_client.get_networks = \
            mock.Mock(return_value=src_nets_info)

        self.neutron_network_client.get_subnets = \
            mock.Mock(return_value=src_subnets_info)

        self.neutron_network_client.get_routers = \
            mock.Mock(return_value=[router1_info])

        self.neutron_network_client.add_router_interfaces = \
            mock.Mock(return_value=None)

        router_info = {
            'router': {'name': 'fake_router_name_2',
                       'tenant_id': 'fake_tenant_id_2',
                       'external_gateway_info': {
                           'network_id': 'fake_network_id_2'
                       }}}

        self.neutron_network_client.upload_routers(src_nets_info,
                                                   src_subnets_info,
                                                   src_routers_info)

        self.neutron_mock_client().create_router.\
            assert_called_once_with(router_info)

    def test_add_router_interfaces(self):
        src_router = {'id': 'fake_router_id_1',
                      'subnet_ids': ['fake_subnet_id_1'],
                      'external_gateway_info': None}
        src_subnets = [{'id': 'fake_subnet_id_1',
                        'external': False,
                        'res_hash': 'fake_subnet_hash'}]
        dst_router = {'id': 'fake_router_id_2',
                      'subnet_ids': ['fake_subnet_id_2'],
                      'external_gateway_info': None}
        dst_subnets = [{'id': 'fake_subnet_id_2',
                        'external': False,
                        'res_hash': 'fake_subnet_hash'}]
        self.neutron_network_client.add_router_interfaces(src_router,
                                                          dst_router,
                                                          src_subnets,
                                                          dst_subnets)

        self.neutron_mock_client().add_interface_router.\
            assert_called_once_with('fake_router_id_2',
                                    {'subnet_id': 'fake_subnet_id_2'})


text:
"""
Used for running this install of nexus locally
"""
import os
import sys

MODULE_DIR = os.path.dirname(__file__)

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.dev")
    sys.path.insert(0, os.path.abspath(os.path.join(MODULE_DIR, '..')))

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)


text:
title: Comments
---

{{#extend "layout-default"}}

  {{#content "body"}}

Comments

Home

Structure

          <form>

              <input type="text" class="form-control" name="" placeholder="Search...">

          </form>

Comments

User comment style for using various pages of components (like blog,
              tweets, etc) that feature a left- or right-aligned avatar avatar-lgalongside
              textual content. You can use the basic class .comments.

Avatar

A comment can contain an image or avatar

                        Herman Beck

Metadata

A comment can contain metadata about the comment, an arbitrary
                    amount of metadata may be defined.

                        Mary Adams

                          Just now

Actions

A comment can contain an list of actions a user may perform related
                    to this comment.

                        Caleb Richards

Elliot you are always so right :)

                          Reply
                          Edit

Reply Form

A comment can contain a form to reply to a comment. This may
                    have arbitrary content.

                        June Lane

                          5 days ago

Dude, this is awesome. Thanks so much

                          Reply

                        <form class="comment-reply" action="#" method="post">

                            <textarea class="form-control" rows="5" placeholder="Comment here"></textarea>

                            <button type="submit" class="btn btn-primary">Reply</button>
                            <button type="button" class="btn btn-link blue-grey-500">Close</button>

                        </form>

Comments

                    Edward Fletcher

                      Yesterday at 12:30AM

eniam ipsum pariatur anim labore sunt duis officia labore.
                        Occaecat sunt ipsum eu ad nostrud do in. Ea aliqua officia
                        magna laborum quis proident. Irure ullamco aliquip esse
                        ipsum. Exercitation enim dolore commodo mollit non laboris
                        et velit adipisicing. Nulla labore sint aliqua minim ad
                        qui. Minim sint aliqua magna anim duis laborum quis officia.
                        Veniam nostrud aliqua in anim. Pariatur elit ad ea incididunt
                        aliquip. Mollit Lorem in magna magna irure commodo do est
                        ullamco.

                      Reply

                        Crystal Bates

                          Just now

Fletcher you are always so right :)

                          Reply

                        Edward Fletcher

                          Just now

Yes, That's really awesome!

                          Reply

                  Nathan Watts

                    5 days ago

Dude, this is awesome. Thanks so much

                    Reply

                  <form class="comment-reply" action="#" method="post">

                      <textarea class="form-control" rows="5" placeholder="Comment here"></textarea>

                      <button type="submit" class="btn btn-primary">Comment</button>
                      <button type="button" class="btn btn-link blue-grey-500">close</button>

                  </form>

                  Heather Harper

                    5 days ago

Lorem ipsum Ullamco fugiat esse culpa consequat velit veniam
                      incididunt incididunt nostrud labore nostrud sit dolore in
                      nulla sit non laborum.

                    Reply

              <form class="comments-add margin-top-35" action="#" method="post">

Leave A Reply

                  <input type="text" class="form-control" name="name" placeholder="Name">

                  <input type="email" class="form-control" name="email" placeholder="Email">

                  <input type="text" class="form-control" name="email" placeholder="Websit">

                  <textarea class="form-control" rows="5" placeholder="Comment here"></textarea>

                  <button type="button" class="btn btn-primary">Comment</button>

              </form>

  {{/content}}
{{/extend}}


text:
import datetime
import logging
from suds.xsd import sxbasic
from suds.client import Client
from payway.qiwi.conf.settings import QIWI_ALARM, QIWI_CREATE, QIWI_SOAP_CLIENT_URL, QIWI_BILL_LIFETIME, QIWI_DATETIME_FORMAT
from payway.qiwi.conf.settings import QIWI_LOGIN, QIWI_PASSWORD, XML_SCHEMA_PATH

logger = logging.getLogger(__name__)

__author__ = 'Razzhivin Alexander'
__email__ = 'admin@httpbots.com'

sxbasic.Import.bind('http://www.w3.org/2001/XMLSchema', XML_SCHEMA_PATH) # for suds

class QiwiSoapClientException(Exception):
    pass

class QiwiSoapClient(object):
    url = QIWI_SOAP_CLIENT_URL

    @classmethod
    def createBill(cls, login=QIWI_LOGIN, password=QIWI_PASSWORD, user='', amount='', comment='', txn='', lifetime=QIWI_BILL_LIFETIME, alarm=QIWI_ALARM, create=QIWI_CREATE):
        if len(user) > 10: raise QiwiSoapClientException("User phone number should be less than 10")
        client = Client(cls.url)

        response = client.service.createBill(
            login=login,
            password=password,
            user=user,
            amount=amount,
            comment=comment,
            txn=txn,
            lifetime=cls.hours_to_lifetime(lifetime),
            alarm=alarm,
            create=create)
        return response

    @classmethod
    def hours_to_lifetime(cls, days):
        now = datetime.datetime.now()
        now += datetime.timedelta(days=days)
        return now.strftime(QIWI_DATETIME_FORMAT)

    @classmethod
    def cancelBill(cls, login=QIWI_LOGIN, password=QIWI_PASSWORD, txn=''):
        client = Client(cls.url)
        response = client.service.cancelBill(
                    login=login,
                    password=password,
                    txn=txn,
        )
        return response

    @classmethod
    def checkBill(cls, login=QIWI_LOGIN, password=QIWI_PASSWORD, txn=''):
        client = Client(cls.url)
        response = client.service.checkBill(
                    login=login,
                    password=password,
                    txn=txn,
        )
        return response


text:
package br.com.caelum.grappaExemplo.servico; // 1

import br.com.caelum.grappa.annotation.PinListener;
import br.com.caelum.grappa.pin.PinService;

@PinListener(addresses = 2)// 2
public class ControleAcesso implements PinService{

	private Integer contador = 0;

	@Override
	public void processEvent(Integer estadoPino) { // 3
		System.out.println("processando evento eletrico.");

		if (estadoPino.intValue() == 1) { // 4
			this.contador += 1;
			String mensagem = this.contador + " entrada(s) autorizada(s).";
			System.out.println(mensagem); //5
		}
	}
}


text:
package com.elixlogic.tifoon.domain.model.scanner;

import com.elixlogic.tifoon.domain.model.object.ReflectionObjectTreeAware;
import lombok.*;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.springframework.util.Assert;

import java.io.Serializable;
import java.util.Comparator;

@Data
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class Port extends ReflectionObjectTreeAware implements Serializable {
    public static Comparator<Port> BY_PROTOCOL_THEN_PORT_NUMBER = Comparator.comparing(Port::getProtocol)
            .thenComparing(Comparator.comparing(Port::getPortNumber));

    private Protocol protocol;
    private int portNumber;

    // don't use auto-generation here, enforce use of setters
    public static Port from(@NonNull final Protocol _protocol, final int _portNumber) {
        final Port port = new Port();
        port.setProtocol(_protocol);
        port.setPortNumber(_portNumber);

        return port;
    }

    public void setPortNumber(final int _portNumber) {
        Assert.isTrue(_portNumber >= 0 && _portNumber <= 65535, String.format("port number %d not within 0-65535 range", _portNumber));
        this.portNumber = _portNumber;
    }

    @Override
    public boolean equals(final Object _o) {
        if (this == _o) {
            return true;
        }

        if (_o == null || getClass() != _o.getClass()) {
            return false;
        }

        final Port port = (Port) _o;

        return new EqualsBuilder()
                .append(portNumber, port.portNumber)
                .append(protocol, port.protocol)
                .isEquals();
    }

    @Override
    public int hashCode() {
        return portNumber + protocol.ordinal() * 100000;
    }
}


text:
'use strict';

/**
 * @ngdoc function
 * @name openshiftConsole.controller:ServicesController
 * @description
 * # ProjectController
 * Controller of the openshiftConsole
 */
angular.module('openshiftConsole')
  .controller('RoutesController', function ($routeParams, $scope, AlertMessageService, DataService, $filter, LabelFilter, ProjectsService) {
    $scope.projectName = $routeParams.project;
    $scope.unfilteredRoutes = {};
    $scope.routes = {};
    $scope.labelSuggestions = {};
    $scope.alerts = $scope.alerts || {};
    $scope.emptyMessage = "Loading...";

    AlertMessageService.getAlerts().forEach(function(alert) {
      $scope.alerts[alert.name] = alert.data;
    });

    AlertMessageService.clearAlerts();

    var watches = [];

    ProjectsService
      .get($routeParams.project)
      .then(_.spread(function(project, context) {
        $scope.project = project;
        watches.push(DataService.watch("routes", context, function(routes) {
          $scope.unfilteredRoutes = routes.by("metadata.name");
          LabelFilter.addLabelSuggestionsFromResources($scope.unfilteredRoutes, $scope.labelSuggestions);
          LabelFilter.setLabelSuggestions($scope.labelSuggestions);
          $scope.routes = LabelFilter.getLabelSelector().select($scope.unfilteredRoutes);
          $scope.emptyMessage = "No routes to show";
          updateFilterWarning();
        }));

        function updateFilterWarning() {
          if (!LabelFilter.getLabelSelector().isEmpty() && $.isEmptyObject($scope.routes)  && !$.isEmptyObject($scope.unfilteredRoutes)) {
            $scope.alerts["routes"] = {
              type: "warning",
              details: "The active filters are hiding all routes."
            };
          }
          else {
            delete $scope.alerts["routes"];
          }
        }

        LabelFilter.onActiveFiltersChanged(function(labelSelector) {
          // trigger a digest loop
          $scope.$apply(function() {
            $scope.routes = labelSelector.select($scope.unfilteredRoutes);
            updateFilterWarning();
          });
        });

        $scope.$on('$destroy', function(){
          DataService.unwatchAll(watches);
        });
      }));
  });