text:
/**
 * @flow
 */

import type {StyleState} from './ElementPropSpec';

import injectStylesheet from 'style-loader/addStyles';
import createHash from 'murmurhash-js/murmurhash3_gc';

import {Spec} from './ElementPropSpec';
import {compileStyle} from './compiler';
import {CSSClassRepresentation} from './StyleRepresentation';
import * as Environment from './Environment';

type Style = Object;

export class StylesheetManager {
  injectStylesheet(compiledStylesheet: Array<[string, string]>): void {
    if (Environment.canInject) {
      injectStylesheet(compiledStylesheet);
    }
  }
}

export class DynamicStylesheetManager extends StylesheetManager {
  _stylesheetCache: Map<string, string | CSSClassRepresentation> = new Map();

  toClassName(key: mixed, style: Style): CSSClassRepresentation | string {
    key = `rs-${String(createHash(String(key)))}`;
    let className = this._stylesheetCache.get(key);
    if (className == null) {
      let css = compileStyle(key, style, true);
      if (Environment.isTest) {
        className = new CSSClassRepresentation(key, style, 'DynamicallyGeneratedCSS');
      } else {
        className = key;
      }
      this.injectStylesheet([[key, css]]);
      this._stylesheetCache.set(key, className);
    }
    return className;
  }
}

export class StaticStylesheetManager extends StylesheetManager {
  constructor() {
    super();
    this._precompile();
  }

  toClassName(state: StyleState, name: string, value: string): string {
    const className = `rs-${name}-${value}-${state}`;
    if (Environment.isTest) {
      return new CSSClassRepresentation(className, {[name]: value}, 'PrecompiledCSS');
    } else {
      return className;
    }
  }

  _precompile(): void {
    let cssList = [];
    for (let k in Spec) {
      if (!Spec.hasOwnProperty(k)) {
        continue;
      }
      let spec = Spec[k];
      if (spec.applyStrategy === 'static') {
        this._generateRuleSet(cssList, spec.name, spec.state, spec.valueSet);
      }
    }
    this.injectStylesheet([['static', cssList.join('\n')]]);
  }

  _generateRuleSet(
    cssList: Array<string>,
    name: string,
    state: string,
    valueSet: Array<string>,
  ): void {
    for (let i = 0; i < valueSet.length; i++) {
      let value = valueSet[i];
      let className = `rs-${name}-${value}-${state}`;
      let important = true;
      cssList.push(
        compileStyle(
          className,
          state === 'normal' ? {[name]: value} : {[state]: {[name]: value}},
          important,
        ),
      );
    }
  }
}

export const dynamicStylesheetManager = new DynamicStylesheetManager();
export const staticStylesheetManager = new StaticStylesheetManager();


text:
ACCEPTED

#### According to
Index Fungorum

#### Published in
Annls mycol. 6(6): 567 (1908)

#### Original name
Bispora media Sacc.

### Remarks
null

redpajama_set_name: RedPajamaGithub


text:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
            android:id="@+id/menu_playback_share"
            android:icon="@android:drawable/ic_menu_share"
            android:title="@string/share"
            app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
            app:showAsAction="ifRoom"/>
    ...
</menu>


text:
@charset "utf-8";

html { overflow-y: scroll;}
body { margin: 0; padding: 0; font-family: Georgia, "Times New Roman", Times, serif; color: #323232; font-size: 13px;}
p { margin:0; padding-bottom: 20px; line-height: 150%;}
img, a img { border: none; vertical-align: middle;}
table { padding:0; margin:0; border-collapse: collapse;}
a { color: #0000ee;}
a:visited { color: #551a8b;}
a img { text-decoration: none;}

/* Encabezados */
h1 { font-size: 52px; margin: 0; color: #2b56ff;}
h2 { font-size: 20px; margin: 0 0 20px 0; font-weight: normal;}
h3 { font-size: 16px; margin: 0; line-height: 150%;}
h4 { font-size: 13px; margin: 0; color: #323232}

/* Clases genéricas */
.hidden { display:none;}
.shown { display:block;}
.add-subreview { padding: 5px 0 0 0; margin: 0;}
.review-new { display: none;}
.subreviews-wrapper { padding: 0; margin: 0;}
.subreviews-summary { font-size: 11px; padding: 0;}
.document { padding-left: 18px; padding-top: 2px; background: transparent url(/images/document.gif) left center no-repeat;}
strong.email { color: #2b56ff;}
.blur { color:#b6b6b6;}
.even { background-color: #fbfbfb;}

/* Buscador */
.search form { float: left;}
.search fieldset { margin: 0; padding: 0; border: none;}
.search input { float: left;}
.search button { margin-left: 10px; width: 90px; float: left;}

/* Sparklines */
.sparkline { display: inline-block; width: 100px; height: 15px;}
.bluff-tooltip { background: #fff; border: 1px solid #d1edf5; padding: 5px; font-size: 13px;}
.bluff-tooltip .color {display: none;}
.bluff-tooltip .data { font-weight: bold;}
.bluff-wrapper { display: inline;}

/* Paginación */
.pagination { font-size: 16px; margin-top: 40px; text-align: center; word-spacing: 20px; font-weight: bold;}
.entity-pagination { clear: both;}
.entity-pagination a,
.entity-pagination span { padding-right: 20px;}
.entity-pagination a.back { padding-left: 40px;}
.entity-pagination-top { padding: 0 0 40px 0;}
.entity-pagination-bottom { padding: 40px 0 0 0;}
#reviews_more { margin-right: 5px;}

/* Layout básico */
body { background-repeat: repeat-x; background: transparent url(/images/bgBody.png) top center repeat-x}
#header, #main, #footer { text-align: center;}
#header-inner, #main-inner { text-align: left; margin: 0 auto; width: 960px; position: relative; overflow: hidden;}
#header-inner { height: 150px;}
#main-inner { padding: 20px 0;}
#content { float: left; width: 100%;}
#sidebar { float: right; width: 220px; margin-left: 50px; text-align: left}

/* Sidebar */
#sidebar ul,
#sidebar ol { list-style: none; margin: 0 0 10px 0; padding-left: 0;}
#sidebar li { list-style: none; margin: 0 0 10px 0;}

/* Cabecera */
#logo a { color: #323232; text-decoration: none; font-weight: normal;}
#slogan { font-size: 16px; font-weight: normal;}
#user-links { position: absolute; top: 10px; right: 0; text-align: right;}
#user-links a, #user-links span.separator { padding-left: 5px; }
#user-links p { padding-bottom: 10px;}
#user-links .fbconnect_login_button img { padding-right: 0;}
#user-links #lo_fb_conn { padding-right: 10px;}
#user-links #lo_fb_conn .close { font-size: 9px;}
#header .search { position: absolute; bottom: 25px; right: 0; text-align: right;}
#contact-links ul { list-style: none; margin: 0; padding: 0; position: absolute; bottom: 20px; left: 0;}
#contact-links ul li { float: left; padding: 0 50px 0 0;}
#contact-links ul li a { padding-right: 20px;}
#contact-links ul li.blog a { background: transparent url(/images/icoBlog.png) right center no-repeat; padding-right: 20px;}
#contact-links ul li.twitter a { background: transparent url(/images/icoTwitter.png) right center no-repeat;}
#contact-links ul li.facebook a { background: transparent url(/images/icoFacebook.png) right center no-repeat;}

/* IE 6 */
#ie6 { position: relative; margin: 40px 0; padding: 20px; border: 1px solid red;width: 960px;margin: 0 auto;}
#ie6 h3 { font-size: 16px; padding-bottom: 20px;}
#ie6 .close { position: absolute; top: 20px; right: 20px;}

/* Footer */
#footer { text-align: center; padding-top: 20px;}
#footer .nav-links, #footer .lang-links { text-align: center; margin: 0; padding-bottom: 20px;}
#footer .nav-links a, #footer .lang-links a { margin: 0 20px;}
#footer .license { background-color: #343434; padding: 6px; color: white; margin-bottom: 20px;}
#footer .license a { color: white;}
#footer .license img { vertical-align: -13px;}
#footer .copyright { border-top: 1px dotted #343434; padding: 20px 0;}

/* Mensajes */
.success-msg, .notice { border: 1px solid #809DB9; width: 300px; padding: 20px; margin: 20px 0; font-weight: bold; background: transparent url(/images/icoOk.gif) right center no-repeat; }
.warning { border: 1px solid #809DB9; width: 918px; padding: 20px; margin: 20px 0; font-weight: bold; }
.error { border: 1px solid #809DB9; width: 300px; padding: 20px; margin: 20px 0; font-weight: bold; background-color: #ffffcd; color:#ff0012;}
.next-step-msg { padding-bottom: 10px; font-weight: bold;}

/* Cajas */
.box { background: transparent url(/images/shadow.png); position: relative;}
.box h2 { font-size: 16px; padding-bottom: 20px;}
.box-inner { background-color: #fff; border: 1px solid #809DB9; padding: 20px; position: relative; top: -5px; left: -5px;}
.box-contact ul { list-style: none; margin: 0; padding: 0;}
.box-contact ul li { margin-bottom: 10px; padding-left: 20px; height: 16px;}
.box-contact ul li.blog { background: transparent url(/images/icoBlog.png) left center no-repeat;}
.box-contact ul li.twitter { background: transparent url(/images/icoTwitter.png) left center no-repeat;}
.box-contact ul li.facebook { background: transparent url(/images/icoFacebook.png) left center no-repeat;}
.box-contact ul li.uservoice { background: transparent url(/images/uservoice.png) left center no-repeat;}
.box-profile { margin-bottom: 40px;}
.box-profile .box-inner { background-color: #fdffcd}
.box-profile h3 { font-size: 16px;}
.box-profile button, .box-propuestas button { width: 180px;}
.box-propuestas { margin-top: 40px;}

/* Reviews */
.reviews ol { list-style: none; margin: 0; padding: 0;}
.reviews li { margin: 0 0 40px 0; padding: 0; overflow: auto;}
.review-avatar { float:left; width: 36px; height: 36px; margin-right: 10px; overflow: hidden;}
.review-name { font-weight: normal; margin: 0; padding: 0;}
.review-date { margin-top: 0; padding-bottom: 0; font-size: 11px;}
.review-about { margin-top: 0; padding-bottom: 10px; font-size: 11px;}
.review-body { padding: 5px 0 0 0; clear: left;}
.review-actions { padding: 10px 0;}
.review-actions img { vertical-align: -10px;}
.sf-review-action { font-size: 11px; font-weight: normal;}
.sf-review-remove { padding-right: 10px;}
.sf-review-remove span { margin-left: 10px;}
.sf-review-submit { width: 215px; margin: 0 5px 10px 0; }
.sf-review-submit input { margin: 0; float: right;}
.sf-review-opciones { padding-top: 10px;}
.sf-review-hands { float: left; margin: 20px 0 10px 0;}
.sf-review-hands img, .sf-review-hands label { cursor: pointer;}
.sf-review-positive, .sf-review-negative { float:left;}
.sf-review-negative { margin-left: 20px;}
.sf-review-counter { text-align: right; padding-bottom: 10px; width: 215px;}
#sf-review-body { clear: both; padding-bottom: 0; overflow: hidden;}
.sf-review-text { width: 210px; height: 90px;}
#sfr_dialog {	display:none;}

/* Subreviews */
.subreviews { padding: 5px 0 0 40px !important; margin: 0 !important; overflow: hidden;}
.subreviews ol { border-left: 2px solid #999999; background-color: #fff; list-style: none; padding: 0px 0px 0px 10px;}
.subreviews li { margin: 0 0 40px 0;}
.subreviews-pagination { padding-top: 20px; text-align: center; width: 250px}
.subreviews-pagination input { width: 180px;}
.subreviews-pagination .more { padding-bottom: 0;}

/* Reviews en modo lista */
.sf-reviews-list-brief  { margin: 0; padding: 0;}
.sf-reviews-list-brief li { list-style: none; margin-bottom: 20px; overflow: hidden; padding-bottom: 15px; border-bottom: 1px dotted #ddd;}
.sf-reviews-list-brief .review-author { padding-bottom: 0;}
.sf-reviews-list-brief .review-avatar { width: 20px; height: 20px; margin-right: 10px;}
.sf-reviews-list-brief .review-avatar img { width: 20px; height: 20px;}

/* Entidades en modo lista */
.entities-list-mini ul { list-style: none; margin: 20px 0; padding: 0;}
.entities-list-mini ul li { margin-bottom: 20px; overflow: hidden; height: 80px;}
.entities-list-mini ul li .avatar { float: left;}
.entities-list-mini ul li .name { margin-left: 45px; font-weight: normal;}
.entities-list-mini ul li .votes { margin: 10px 0 0 45px; padding: 0;}

/* Selector de convocatoria */
.selector-convocatoria { clear: left; padding: 20px 0 0 25px; width: 900em;}
.selector-convocatoria ul { float: left; height: 45px; background-color: #fdffcd; border: 1px solid #9a9a9a; border-bottom: none; margin: 0; padding: 0;}
.selector-convocatoria li { list-style: none; float: left;}
.selector-convocatoria li a,
.selector-convocatoria li span { display: block; float: left; padding: 15px;}
.selector-convocatoria li a { height: 14px; border-bottom: 1px solid #9a9a9a;}
.selector-convocatoria li span { height: 25px; background: transparent url(/images/balloonYellowBottomCenter.png) center bottom no-repeat;}

/* Formularios */
form { margin: 0; padding: 0;}
form dl dt { margin-bottom: 10px;}
form dl dd { margin: 0 0 20px 0;}
form th, form td { vertical-align: top;}
form th { text-align: left; padding: 5px 20px 5px 0;}
form td { padding: 0 0 20px 0;}
form ul.error_list { margin: 5px 0; padding: 0; list-style: none; color: #f80c1a; font-size: 11px;}
input[type=text], input[type=password] { font-size: 13px; line-height: 13px; padding: 2px; width:270px; border: 1px solid #809DB9; font-family: Georgia, "Times New Roman", Times, serif;}
input[type=submit], input[type=button], button { font-size: 13px; overflow: visible; width: 90px; color: #323232; border: 1px solid #809DB9; background: #ededed url(/images/button_bg.png) left center repeat-x; font-family: Georgia, "Times New Roman", Times, serif;}
select, option { font-family: Georgia, "Times New Roman", Times, serif; font-size: 13px;}
textarea { border: 1px solid #809DB9; font-family: Georgia, "Times New Roman", Times, serif; font-size: 13px; resize: none; width:270px; padding: 2px;}
.submit { text-align: right; clear: both;}
.facebook-only img { vertical-align: text-bottom;}
.hints { padding: 5px 0;}
input[type=submit].login_or_register { width: 200px; font-size: 12px;}
a.facebook-button { display: inline-block; line-height: 22px; color: #fff; text-decoration: none; background: transparent url(/images/boton_facebook_left.png) left top no-repeat; padding: 0 0 0 25px !important;}
a.facebook-button span { display: inline-block; line-height: 15px; background: transparent url(/images/boton_facebook_right.png) right top no-repeat; padding: 4px 5px 3px 0 !important;}
a.facebook-button:visited { color: #fff;}
a.twitter-button { display: inline-block; line-height: 22px; color: #e6f5fa; text-decoration: none; background: transparent url(/images/boton_twitter_left.png) left top no-repeat; padding: 0 0 0 25px !important;}
a.twitter-button span { display: inline-block; line-height: 15px; background: transparent url(/images/boton_twitter_right.png) right top no-repeat; padding: 4px 5px 3px 0 !important;}
a.twitter-button:visited { color: #e6f5fa;}

/* Páginas de error (404 y 500) */
#error #main-inner { padding-bottom: 0; margin-bottom: 0;}
#error #main h2 { text-align: center; color: #2b56ff; font-size: 40px; margin-bottom: 10px;}
#error #message { padding: 0 240px 40px 240px;}
#error #hands { padding-bottom: 0; text-align: center;}
#error #footer { padding-top: 0;}

/* Listado de instituciones */
.institutions-list { margin-bottom: 40px;}
.institutions-list ol { list-style: none; padding: 0; overflow: hidden;}
.institutions-list li.column { float: left; margin-right: 40px;}
.institutions-list li.first { margin-right: 10px;}

/* Home */
#home-index #main-inner { width: 100%; margin: 0;}
#home-index .block { background: transparent url(/images/blockBottom.png) bottom center no-repeat; padding: 20px 0; overflow: hidden;}
#home-index .block.last { background: none; padding-bottom: 0;}
#home-index .block-inner { margin: 0 auto; width: 960px;}
#home-index h3 { padding-bottom: 20px;}
#home-index #summary h2 { margin-bottom: 10px;}
#home-index #summary ul { margin: 0 0 0 -20px; padding: 0 0 0 20px;}
#home-index #summary ul li { margin-bottom: 20px;}
#home-index #summary ul li.lo-mas-votado { margin-bottom: -20px;}
#home-index ol.entities { list-style: none; margin: 10px 0; padding: 0;}
#home-index ol.entities li { margin: 0 30px 20px 0; height: 80px; font-weight: normal; overflow: hidden;}
#home-index ol.entities li .avatar { float: left;}
#home-index ol.entities li .name { margin-left: 45px; font-weight: normal;}
#home-index ol.entities li .votes { margin: 10px 0 0 45px; padding: 0;}
#home-index #summary ol.entities { padding: 20px 0 20px 0; overflow: hidden;}
#home-index #summary ol.entities li { width: 255px; margin-right: 60px;float: left;}
#home-index .search { clear: left; padding: 0; margin-top: 20px; overflow: hidden;}
#home-index .search label { font-size: 16px; font-weight: bold; padding-right: 10px;}
#home-index .search p { float: left; padding: 0; overflow: hidden;}
#home-index .search .hints { color: #b1b1b1;}
#home-index .search button { margin-left: 10px; width: 90px;}
#home-index #ultimos-vootos h3 { padding-right: 30px; background: transparent url(/images/vootos.png) right top no-repeat; float: left;}
#home-index #ultimos-vootos .sf-reviews-list-brief { clear: left; width: 680px;}
#home-index #rankings .entities-list-mini { width: 285px; margin-right: 30px; float: left;}
#home-index ol.reviews { padding: 0 0 0 20px;}
#home-index .ranking-link { clear: both;}
#home-index .signup { margin-left: 170px; font-weight: bold;}

/* Contacto */
#general-contact textarea { width: 494px;}
#general-contact .submit  { width: 500px;}
#general-contact #content { width: 70%;}

/* Normas */
#general-rules #content { width: 65%; margin-left: 20px;}
#general-rules #content h3 { margin-bottom: 20px;}
#general-rules #content h3#summary { margin-bottom: 40px;}

/* Perfil */
#sfGuardAuth-edit h2 { margin-bottom: 10px;}
#sfGuardAuth-edit .hints { padding: 5px 10px;}
#sfGuardAuth-edit #content { margin-top: 2em; position: relative;}
#sfGuardAuth-edit ol.links { margin: 0; padding: 0 0 0 20px; margin-left: -20px;}
#sfGuardAuth-edit ol.links li { margin-bottom: 20px;}
#sfGuardAuth-edit label { font-weight: normal;}
#sfGuardAuth-edit #content input[type=text],
#sfGuardAuth-edit #content input[type=password],
#sfGuardAuth-edit #content textarea { width: 390px;}
#sfGuardAuth-edit .politico { padding-top: 5px;}
#sfGuardAuth-edit .avatar p { padding-bottom: 10px;}
#sfGuardAuth-edit input[type=submit] { width: 150px;}
#sfGuardAuth-edit input[type=button] { width: 150px;}
#sfGuardAuth-edit #content input#profile_vanity { display: inline; width: 130px;}
#sfGuardAuth-edit form th { width: 130px;}
#sfGuardAuth-edit form td { width: 390px;}
#sfGuardAuth-edit form td.email p { padding-bottom: 10px;}
#sfGuardAuth-edit .remove { padding-top: 40px;}
#sfGuardAuth-edit .counter { padding-bottom: 0; text-align: right;}
#sfGuardAuth-edit #bajaConfirmDiv { float: left;}
#sfGuardAuth-edit #bajaConfirmDiv a { padding-left: 20px;}
#sfGuardAuth-edit #bajaConfirmDiv a.confirm { color: #ff0000;}
#sfGuardAuth-edit #bajaConfirmDiv .email { color: #ff0000; font-weight: bold;}
#sfGuardAuth-edit #sidebar { position: absolute; right: 0; width: 250px;}
#sfGuardAuth-edit #facebook-connect h3,
#sfGuardAuth-edit #twitter-connect h3 { padding-bottom: 10px; font-weight: normal; font-size: 16px;}
#sfGuardAuth-edit #facebook-connect img,
#sfGuardAuth-edit #twitter-connect img { vertical-align: text-bottom; padding-right: 5px;}
#sfGuardAuth-edit #facebook-connect p,
#sfGuardAuth-edit #twitter-connect p { padding-bottom: 10px;}
#sfGuardAuth-edit #facebook-connect ul,
#sfGuardAuth-edit #twitter-connect ul { margin: 0; padding: 0; list-style: none;}
#sfGuardAuth-edit #facebook-connect li,
#sfGuardAuth-edit #twitter-connect li { margin-top: 10px;}
#sfGuardAuth-edit #facebook-connect q,
#sfGuardAuth-edit #twitter-connect q { font-style: italic;}
#sfGuardAuth-edit .notice { width: 503px;}
#sfGuardAuth-edit .anonymous { text-align: right; padding-bottom: 0;}

/* Comentarios y vootos */
#perfil-reviews #main h2 { margin-top: 20px;}
#perfil-reviews .comments { clear: both; padding-top: 40px;}
.propuestas ol { list-style: none; margin: 0; padding: 0;}
.propuestas li { list-style: none; margin: 0 0 20px 0; overflow: hidden; padding: 0 0 15px 0; border-bottom: 1px dotted #ddd; }
.propuestas .photo,
.comments .photo { width: 36px; float:left;}
.propuestas .name { width: 290px; padding: 5px 455px 5px 10px; float:left;}
.comments .name { width: 335px; padding: 5px 10px; float:left;}
.propuestas .date,
.comments .date { font-size: 11px;}
.comments .vote { width: 35px; float:left;}
.comments .body { width: 390px; padding: 5px 10px; float:left;}
.propuestas .actions,
.comments .actions { padding: 5px 10px;}

/* Perfil público */

#perfil-show .balloon { width: 50%; background: transparent url(/images/balloonBottom.png) bottom left no-repeat; padding-bottom: 11px; margin-bottom: 20px;}
#perfil-show .balloon-inner { border: 2px solid #93bcfc; border-bottom: none; padding: 20px 20px 0 20px;}
#perfil-show .balloon-inner input { width: 170px;}
#perfil-show #content { margin-top: 20px;}
#perfil-show .profile { overflow: hidden; padding-bottom: 40px;}
#perfil-show .profile h2 a { font-size: 13px;}
#perfil-show .profile .photo { float: left;}
#perfil-show .profile .description { width: 250px; margin-left: 20px; float: left;}
#perfil-show .profile .description p { padding-bottom: 10px;}
#perfil-show .profile .description .links { padding-bottom: 10px;}
#perfil-show .profile .description .links p { padding-top: 20px; padding-bottom: 0;}
#perfil-show .profile .description .links ul { margin: 0; padding: 0; list-style: none;}
#perfil-show .propuestas { clear: both;}
#perfil-show .propuestas .date { font-size: 11px;}
#perfil-show .comments { clear: both; padding-top: 40px;}
#perfil-show .comments table { border-top: 1px dotted #cccccc; width: 100%;}
#perfil-show .comments tr { border-bottom: 1px dotted #cccccc;}
#perfil-show .comments td { border-bottom: 1px dotted #cccccc; padding: 10px 0;}
#perfil-show .comments .photo { width: 36px;}
#perfil-show .comments .name { width: 335px; padding: 10px;}
#perfil-show .comments .date { font-size: 11px;}
#perfil-show .comments .vote { width: 35px;}
#perfil-show .comments .body { width: 390px; padding: 10px;}
#perfil-show #sidebar { width: 250px; margin-top: 5px;}
#perfil-show #more_reviews { padding-top: 10px;}

/* Contacto perfil */
#perfil-contact p.textarea { padding-bottom: 0;}
#perfil-contact #content form { width: 300px;}
#perfil-contact #content form textarea { width: 100%;}
#perfil-contact .counter { text-align: right;}
#perfil-contact .submit { text-align: right;}

/* Cambiar contraseña */
#sfGuardAuth-changePassword form td { width: 270px;}

/* About */
#general-about #content { width: 65%;}
#general-about #content h3 { margin-bottom: 20px; line-height: 150%;}
#general-about #content .description h3 { font-weight: normal;}
#general-about #content .social-data h3 { margin-bottom: 0;}
#general-about #content .social-data  { margin-top: 60px;}
#general-about #content .founders,
#general-about #content .others { margin-top: 40px;}
#general-about #content .founders ul,
#general-about #content .others ul { list-style: none; margin: 0; padding: 0;}
#general-about #content .founders li,
#general-about #content .others li { margin-bottom: 20px;}
#general-about #content .founders .avatar,
#general-about #content .others .avatar { float: left; width: 36px;}
#general-about #content .founders h4,
#general-about #content .others h4,
#general-about #content .founders .body,
#general-about #content .others .body { margin-left: 45px;}
#general-about #sidebar .social,
#general-about #sidebar .history { margin-top: 20px;}
#general-about #sidebar h3 { margin-bottom: 5px;}
#general-about #sidebar ul { list-style: none; margin: 0; padding-left: 0;}
#general-about #sidebar li { padding-bottom: 10px;}
#general-about #sidebar dl { margin: 0; padding-left: 0}
#general-about #sidebar dt { font-size: 16px; font-weight: bold;}
#general-about #sidebar dd { margin: 0; padding: 0 0 20px 0; line-height: 150%;}

/* SignUp y Login */
#sfGuardAuth-signin #main { padding-top: 40px;}
#sfGuardAuth-signin #main h2 { color:#2b56ff;}
#sfGuardAuth-signin #signup { float: left;}
#sfGuardAuth-signin #login  { float: right;}
#sfGuardAuth-signin .submit input[type=submit] { width: 150px;}
#sfGuardAuth-signin .legal { text-align: right;}
#sfGuardAuth-signin .anonymous { text-align: right; padding-bottom: 0;}
#sfGuardAuth-signin .notice { width: 95%;}
#sfGuardAuth-signin #accounts-join-login { float: left; width: 350px; padding-right: 130px; background: transparent url(/images/login_separator.png) right center no-repeat;}
#sfGuardAuth-signin #accounts-join-skip { float: left; width: 380px; padding-left: 100px; padding-top: 122px;}
#sfGuardAuth-signin #accounts-join-skip p { padding-bottom: 0;}
#sfGuardAuth-signin .facebook-login th { padding-top: 18px;}
#sfGuardAuth-signin .facebook-login td { padding-top: 15px; text-align: left;}

/* Tabla de rankings */
table.rankings { margin: 0 auto; width: 100%; border: none;}
table.rankings th { background-color: #f6f6f6; padding: 10px 0;}
table.rankings tbody td,
table.rankings tfoot td { padding: 10px 0;}
table.rankings .ranking { text-align: right;}
table.rankings .position { text-align: right;}
table.rankings .photo { text-align: right;}
table.rankings .positive-votes { text-align: right;}
table.rankings .negative-votes { text-align:right;}

/* Ranking de políticos */
#politico-ranking .active { text-decoration: none; color:#333333; font-weight: bold;}
#politico-ranking h2 select { font-size: 13px;}
#politico-ranking table .ranking { width: 155px;}
#politico-ranking table .position { width: 30px;}
#politico-ranking table .photo { width: 36px; padding-left: 10px; padding-right: 10px;}
#politico-ranking table .name { width: 320px;}
#politico-ranking table .voto { width: 120px; padding-left: 20px}
#politico-ranking table .positive-votes { width: 100px;}
#politico-ranking table .negative-votes { width: 100px; padding-right: 60px;}

/* Ranking de partidos */
#partido-ranking .active { text-decoration:none; color:#333333; font-weight:bold;}
#partido-ranking h2 select { font-size: 13px;}
#partido-ranking table .ranking { width: 155px;}
#partido-ranking table .position { width: 30px;}
#partido-ranking table .photo { width: 36px; padding-left: 10px; padding-right: 10px;}
#partido-ranking table .name { width: 320px;}
#partido-ranking table .voto { width: 130px; padding-left: 20px}
#partido-ranking table .positive-votes { width: 100px;}
#partido-ranking table .negative-votes { width: 100px; padding-right: 60px;}

/* Ranking de propuestas */
#propuesta-ranking .active { text-decoration: none; color:#333333; font-weight: bold;}
#propuesta-ranking h2 { margin-bottom: 5px;}
#propuesta-ranking table .ranking { width: 120px;}
#propuesta-ranking table .position { width: 30px;}
#propuesta-ranking table .photo { width: 36px; padding-left: 10px; padding-right: 10px;}
#propuesta-ranking table .name { width: 300px; padding-right: 40px;}
#propuesta-ranking table .voto { width: 110px;}
#propuesta-ranking table .positive-votes { width: 100px;}
#propuesta-ranking table .negative-votes { width: 100px; padding-right: 20px;}
#propuesta-ranking table .date { text-align: right; width: 100px; padding-right: 20px;}
#propuesta-ranking .search { float: right;}

/* Lista electoral */
#lista-show h2 { margin-bottom: 5px;}
#lista-show h2 .versus { color: red; padding: 0 20px; font-size: 28px;}
#lista-show h2 img { vertical-align: -12px;}
#lista-show table { margin: 20px auto; width: 100%; clear: left; float: left;}
#lista-show table th { background-color: #f6f6f6; padding: 10px 0;}
#lista-show table tbody td,
#lista-show table tfoot td { padding: 10px 0;}
#lista-show table .position { text-align: right; width: 20px; padding-left: 10px;}
#lista-show table .photo { text-align: right; width: 40px; padding-left: 10px;}
#lista-show table .name { text-align: left; width: 210px; padding-left: 10px;}
#lista-show table .name-lista-oficial a,
#lista-show table .name-lista-oficial a:visited { color: #808080; }
#lista-show table .voto { text-align: left; width: 120px; padding-left: 20px}
#lista-show table .positive-votes { text-align: right; width: 100px;}
#lista-show table .negative-votes { text-align:right; width: 100px; padding-right: 20px;}

/* Resultados de búsqueda */
#general-search table { margin: 0 auto; width: 90%;}
#general-search table th { background-color: #f6f6f6; padding: 10px 0;}
#general-search table tbody td { padding: 10px 0;}
#general-search table .photo { text-align: right; width: 36px; padding-right: 10px;}

/* RSS */
#rss { margin-bottom: 40px; padding: 5px 0; border-top: 1px dotted #cccccc; border-bottom: 1px dotted #cccccc;}

/* Enlaces externos */
#external-links { margin-bottom: 40px;}
#external-links input[type="text"] { width: 213px; background-color: #ffffcc; border: 1px solid #809DB9;}

/* Reportar error */
#report-error { margin-bottom: 40px;}
#report-error select { width: 220px; border: 1px solid #809DB9; font-size: 13px; overflow:hidden; color: #323232;}
#report-error .submit { padding-top: 10px; width: 220px;}
#report-error option { padding: 2px 5px;}

/* Twitter */
#twitter { width: 220px; margin-bottom: 40px;}

/* Página de político - partido - propuesta */
.entity-page #content { width: 680px;}
.entity-page #sidebar { width: 220px; margin-left: 50px;}
.entity-page h2#name .rank { font-size: 13px;}
.entity-page #photo { width: 220px; float: left;}
.entity-page #photo .vote { padding-top: 40px;}
.entity-page .vote { padding-top: 40px; padding-bottom: 20px; clear: left;}
.entity-page .vote h3 { font-size: 16px; padding-bottom: 0;}
.entity-page .note h3 { padding-bottom: 0; font-size: 13px;}
.entity-page #sf_review2 { width: 220px;}
.entity-page #description { margin-left: 50px; width: 410px; float: left;}
.entity-page #description h3 { padding-top: 20px; padding-bottom: 10px;}
.entity-page #description p { padding-bottom: 10px;}
.entity-page #google-ads { width: 220px; margin-left: 50px; clear: right; float: right;}
.entity-page .reviews { clear: left; padding: 35px 0 0 0; border: none;}
.entity-page .reviews .ui-tabs-panel { padding: 20px 0;}
.entity-page .ui-tabs-nav { padding: 0; border: none; border-bottom: 1px solid #809DB9;}
.entity-page .ui-tabs-nav li { overflow: hidden;}

/* Página de partido */
#partido-show #elecciones { margin: 20px 0;}
#partido-show #elecciones h3 { font-size: 13px; margin: 0; padding-top: 0;}
#partido-show #elecciones ul { margin: 0; padding: 0;}
#partido-show #elecciones ul li { list-style: none; margin-bottom: 5px;}
#partido-show #elecciones p { margin: 20px 0;}
#partido-show #politicos-mas-votados h3 { padding-bottom: 5px;}
#partido-show #politicos-mas-votados li { height: 55px }
#partido-show .entities-list-mini ul li { width: 220px; margin: 0;}
#partido-show .active { text-decoration: none; color: #333333; font-weight: bold;}

/* Página de asignación de usuario con político */
#politico-take #main { height: 400px;}
#politico-take #photo { float: left; width: 200px; text-align: right;}
#politico-take #content { float: none; margin-left: 220px; width: 520px;}
#politico-take #content h2 { font-size: 16px; font-weight: bold;}
#politico-take #content .cancel { float: left; padding: 4px 0 3px 0;}
#politico-take #content .submit { clear: none;}
#politico-take #content button { width: 200px;}
#politico-take p.pre-ul { padding-bottom: 0;}
#politico-take ul { padding-left: 20px;}

/* Página de opinión */
#sfReviewFront-show .review-body { padding-bottom: 0; margin-bottom: 0;}
#sfReviewFront-show .review-name { font-size: 16px;}
#sfReviewFront-show .subreviews .review-name { font-size: 13px;}

/* Página de elección */
#eleccion-show #content { float: left; width: 690px;}
#eleccion-show #resultados { width: 690px;}
#eleccion-show #resultados td { padding: 5px 0;}
#eleccion-show #resultados { overflow: hidden; float: left; clear: left; margin-top: 20px;}
#eleccion-show #resultados .partido { width: 100px; text-align: right; padding-right: 20px;}
#eleccion-show #resultados .escanos { width: 20px; text-align: right; padding-right: 20px; font-weight: bold;}
#eleccion-show #resultados .politicos img { width: 20px; height: 20px;}
#eleccion-show .tooltip-politico .nombre { margin-bottom: 5px;}
#eleccion-show .tooltip-politico .photo { float: left; overflow: hidden;}
#eleccion-show .tooltip-politico .positive_votes { margin-left: 45px; width: 100px; height: 18px; margin-bottom: 5px; text-align: left;}
#eleccion-show .tooltip-politico .negative_votes { margin-left: 45px; width: 100px; height: 18px; text-align: left;}

/* Página de propuesta */
#propuesta-show h2#name { margin-bottom: 5px;}
#propuesta-show #author img { width: 19px; height: 19px; padding: 0 5px; }
#propuesta-show .box-propuestas { margin-bottom: 40px; margin-top: 0;}
#propuesta-show .box-propuestas button { width: 175px;}
#propuesta-show .edit-box { background-color: #ffffcc; border: 1px solid #809DB9; margin-bottom: 10px; padding: 10px; position: relative;}
#propuesta-show .edit-box a { padding-right: 5px;}
#propuesta-show .edit-box a.confirm_delete { color: red;}
#propuesta-show .edit-link { font-size: 11px;}
#propuesta-show .close-edit-box { font-size: 9px; position: absolute; top: 14px; right: 5px;}
#propuesta-show #edit-photo-box { position: relative; width: 250px;}
#propuesta-show #edit-titulo-box { width: 350px ;}
#propuesta-show #ee_box a { font-size: 11px;}

/* Página de últimos vootos */
#sfReviewFront-list h2.title { margin-bottom: 0;}
#sfReviewFront-list h3.title { margin-bottom: 20px; font-weight: normal;}
#sfReviewFront-list #filterForm select { font-size: 13px;}
#sfReviewFront-list #content { width: 640px;}
#sfReviewFront-list #ultimos-usuarios { margin-bottom: 40px;}
#sfReviewFront-list #ultimos-usuarios h3 { padding-bottom: 10px;}
#sfReviewFront-list #ultimos-usuarios img { width: 20px; height: 20px; padding-right: 8px;}
#sfReviewFront-list #ultimos-usuarios li { margin-bottom: 5px;}
#sfReviewFront-list .pagination { margin-top: 0; text-align: left;}

/* Caja de etiquetas */
#etiquetas { margin-bottom: 40px;}
#etiquetas p { padding-bottom: 10px;}
#etiquetas .remove { font-family: sans-serif; text-decoration: none; color: #323232; font-size: 11px; padding-left: 5px;}
#etiquetas input[type=text] { width: 184px;}
#etiquetas input[type=submit] { padding-left: 3px; padding-right: 3px; width: 20px; text-align: center;}

/* Nueva propuesta */
#propuesta-new #main-inner { width: 100%; margin: 0; }
#propuesta-new .new-success { margin: 0 auto; width: 960px;}
#propuesta-new h2 { margin-bottom: 10px;}
#propuesta-new .hints { padding: 5px 10px;}
#propuesta-new #content { margin-top: 2em; position: relative;}
#propuesta-new ol.links { margin: 0; padding: 0 0 0 20px; margin-left: -20px;}
#propuesta-new ol.links li { margin-bottom: 20px;}
#propuesta-new label { font-weight: normal;}
#propuesta-new input[type=text],
#propuesta-new input[type=password],
#propuesta-new textarea { width: 290px;}
#propuesta-new input[type=submit] { width: 150px;}
#propuesta-new input[type=button] { width: 150px;}
#propuesta-new form th { width: 130px;}
#propuesta-new form td { width: 290px;}
#propuesta-new .counter { padding-bottom: 0; text-align: right;}
#propuesta-new .submit span { padding-right: 20px;}
#propuesta-new #propuesta_titulo { height: 35px;}
#propuesta-new #propuesta_descripcion { height: 220px;}
#propuesta-new .propuesta-preview { background-color: #ffffcc; border-top: 1px dotted #cccccc; border-bottom: 1px dotted #cccccc; overflow: hidden; padding: 20px 0; margin-top: -20px;}
#propuesta-new .propuesta-preview .picture { float: left; padding-top: 2px; width: 220px;}
#propuesta-new .propuesta-preview .picture a { font-weight: bold; font-size: 16px;}
#propuesta-new .propuesta-preview .description { float: left; margin-left: 45px; width: 425px;}
#propuesta-new .propuesta-preview .inner { margin: 0 auto; width: 960px;}
#propuesta-new .vooto { margin: 0 auto; width: 960px;}
#propuesta-new .vooto .inner { margin-left: 265px; width: 280px; padding: 20px 0;}
#propuesta-new .vooto strong { font-weight: normal; color: #ff0000;}

/* Popups */
#help-dialog { display:none;}
.ui-dialog-titlebar { border: none;}

/* Opiniones */
.positive-reviews, .negative-reviews { width: 45%; float: left;}
.negative-reviews { margin-left: 10%;}
.review-new h5, .vote h5 { font-size: 13px; font-weight: normal;}

/* Vídeos */
.videos { margin: 0; padding: 0;}
.videos li { list-style: none; width: 130px; margin-right: 20px; float: left;}
.videos p { padding-bottom: 0 !important;}
.videos .thumb { width: 120px; height: 90px; padding: 5px; border: 1px solid #cccccc; }
.videos .thumb img { width: 120px; height: 90px; }

/* Navegación principal */
#main-nav { position: absolute; bottom: 0; height: 50px; margin: 0; padding: 0;}
#main-nav li { list-style: none; float: left; margin-right: 2px; width: 90px; height: 42px; padding: 4px 0; text-align: center; background: transparent url(/images/main-nav-inactive.gif) top left no-repeat;}
#main-nav li.active { font-weight: normal !important; background: transparent url(/images/main-nav-active.gif) top left no-repeat;}
#main-nav li span.count { font-size: 11px;}

/* Reglas nuevas */

#sfGuardAuth-remove #main h2 { color:#2b56ff;}
.highlight_word { font-weight:bold;}
.quickvote_hand { text-align: right; width:2.2em; float:left;}
.left_hand { margin:0px 25px 0px -12px;}
.by-order { font-weight:normal; }

div.bk-img { float: left;padding-right:6px; }
div.bk-name { height: 36px; }
.bk-row { padding-top: 16px; }
.bk-header { display: none; clear: both; }

#eleccion-list h2 {margin: 0}
#eleccion-list div.filter {margin: 6px 0 16px 0;}
#eleccion-list table .photo { width: 10%; padding-right: 10px;}
#eleccion-list table .name { width: 50%;}
#eleccion-list table .lists { width: 20%; text-align: right; padding-right: 80px;}
#eleccion-list table .date { width: 20%;}

#lista-list h2 {margin: 0}
#lista-list div.filter {margin: 6px 0 16px 0;}
#lista-list table .photo { width: 10%; padding-right: 10px;}
#lista-list table .name { width: 50%;}
#lista-list table .lists { width: 20%; text-align: right; padding-right: 80px;}
#lista-list table .date { width: 20%;}


text:
Orion Fake Streaming
----

Fake Streaming support for non-streaming APIs.

```csharp
// @ Orion.Service.FkStreaming.linq
// Use GNU social federated timeline API.

var flag = false;
var client = new GnuSocialClient("freezepeach.xyz", "your consumer key", "your consumer secret");

// Authorization process.
if (flag)
{
    await client.OAuth.RequestTokenAsync("oob");
    Process.Start(client.OAuth.GetAuthorizeUrl());
    (await client.OAuth.AccessTokenAsync(Console.ReadLine())).Dump();
}
else
{
    client.AccessToken = "access token";
    client.AccessTokenSecret = "access token secret";
}

(await client.Account.VerifyCredentialsAsync()).Dump();

FkStreamClient.TimeSpan = TimeSpan.FromSeconds(10);
var disposable = FkStreamClient.AsObservable((Status w) => client.Statuses.PublicTimelineAsync(sinceId: w?.Id))
                               .Where(w => !w.IsEvent) // GNU social API contains some events. Ignored them.
                               .Subscribe(w =>
                               {
                                   Console.WriteLine("------------------------------------------------------");
                                   Console.WriteLine($"{w.User.Name} @{w.User.ScreenName}");
                                   Console.WriteLine(w.Text);
                                   Console.WriteLine();
                                   Console.WriteLine($"{w.CreatedAt:g} - via {w.Source}");
                                   Console.WriteLine();
                               });

Task.Delay(TimeSpan.FromMinutes(5)).Wait();
disposable.Dispose();
```


text:
namespace remote_cocoa {
class NativeWidgetNSWindowBridge;
}  // namespace remote_cocoa

@protocol WindowTouchBarDelegate;

// Weak lets Chrome launch even if a future macOS doesn't have the below classes
WEAK_IMPORT_ATTRIBUTE
@interface NSNextStepFrame : NSView
@end

WEAK_IMPORT_ATTRIBUTE
@interface NSThemeFrame : NSView
@end

REMOTE_COCOA_APP_SHIM_EXPORT
@interface NativeWidgetMacNSWindowBorderlessFrame : NSNextStepFrame
@end

REMOTE_COCOA_APP_SHIM_EXPORT
@interface NativeWidgetMacNSWindowTitledFrame : NSThemeFrame
@end

// The NSWindow used by BridgedNativeWidget. Provides hooks into AppKit that
// can only be accomplished by overriding methods.
REMOTE_COCOA_APP_SHIM_EXPORT
@interface NativeWidgetMacNSWindow : NSWindow <CommandDispatchingWindow>

// Set a CommandDispatcherDelegate, i.e. to implement key event handling.
- (void)setCommandDispatcherDelegate:(id<CommandDispatcherDelegate>)delegate;

// Selector passed to [NSApp beginSheet:]. Forwards to [self delegate], if set.
- (void)sheetDidEnd:(NSWindow*)sheet
         returnCode:(NSInteger)returnCode
        contextInfo:(void*)contextInfo;

// Set a WindowTouchBarDelegate to allow creation of a custom TouchBar when
// AppKit follows the responder chain and reaches the NSWindow when trying to
// create one.
- (void)setWindowTouchBarDelegate:(id<WindowTouchBarDelegate>)delegate;

// Enforce that this window never be made visible. In the event that it is made
// visible, it will log a crash report.
// https://crbug.com/960904
- (void)enforceNeverMadeVisible;

// Order window for all cases, including for children windows that
// -[NSWindow orderWindow:] can't properly handle.
- (void)reallyOrderWindow:(NSWindowOrderingMode)place
               relativeTo:(NSInteger)otherWin;

// Order the window to the front (space switch if necessary), and ensure that
// the window maintains its key state. A space switch will normally activate a
// window, so this function prevents that if the window is currently inactive.
- (void)orderFrontKeepWindowKeyState;

// Identifier for the NativeWidgetMac from which this window was created. This
// may be used to look up the NativeWidgetMacNSWindowHost in the browser process
// or the NativeWidgetNSWindowBridge in a display process.
@property(assign, nonatomic) uint64_t bridgedNativeWidgetId;

// The NativeWidgetNSWindowBridge that this will use to call back to the host.
@property(assign, nonatomic) remote_cocoa::NativeWidgetNSWindowBridge* bridge;

// Whether this window functions as a tooltip.
@property(assign, nonatomic) BOOL isTooltip;

// Called whenever a child window is added to the receiver.
@property(nonatomic, copy) void (^childWindowAddedHandler)(NSWindow* child);
@end

#endif  // COMPONENTS_REMOTE_COCOA_APP_SHIM_NATIVE_WIDGET_MAC_NSWINDOW_H_


text:
import UserRepository from "../../../user/userRepository.js";

const userRepository = new UserRepository();
/**
 * Controller: Retrieves settings of a logged in user
 * @param {Request} req http request variable
 * @param {Response} res
 * @returns {Callback}
 */
export function getSettingsController(req, res) {
  const username = req.loggedInUser ? req.loggedInUser.username : null;

  userRepository
    .getSettings(username)
    .then(settings => {
      res.send({ success: true, settings });
    })
    .catch(error => {
      res.status(404).send({ success: false, message: error.message });
    });
}

export function updateSettingsController(req, res) {
  const username = req.loggedInUser ? req.loggedInUser.username : null;

  // const idempotencyKey = req.headers("Idempotency-Key"); // TODO implement better transactions
  const emoji = req.body?.emoji;
  const darkMode = req.body?.dark_mode;

  userRepository
    .updateSettings(username, darkMode, emoji)
    .then(settings => {
      res.send({ success: true, settings });
    })
    .catch(error => {
      res.status(404).send({ success: false, message: error.message });
    });
}


text:
//#![cfg_attr(unix, feature(fs_ext))]

//#![feature(fs, fs_time, fs_ext)]

extern crate env_logger;
extern crate rustc_serialize;
extern crate toml;
extern crate turbo;
extern crate meg;
//#[macro_use] extern crate log;

use std::collections::BTreeSet;
use std::env;
use std::fs;
use std::io;
use std::path::{PathBuf, Path};
use std::process::Command;

use turbo::turbo::{execute_main_without_stdin, handle_error, shell};
use turbo::core::MultiShell;
use turbo::util::{CliError, CliResult, Config};
use meg::util::{lev_distance};

#[derive(RustcDecodable)]
#[derive(RustcEncodable)]

struct Flags {
    flag_list: bool,
    flag_verbose: bool,
    arg_command: String,
    arg_args: Vec<String>,
}

const USAGE: &'static str = "
Megam command line

Usage:
    meg <command> [<args>...]
    meg [options]

Options:
    -h, --help       Display this message
    -V, --version    Print version info and exit
    --list           List installed commands
    -v, --verbose    Use verbose output

Some common meg commands are:
    ahoy       Ping the status of megam.
    account    Create an account with megam.

See 'meg help <command>' for more information on a specific command.
";

fn main() {
    env_logger::init().unwrap();
    execute_main_without_stdin(execute, true, USAGE);
}

macro_rules! each_subcommand{ ($mac:ident) => ({
    $mac!(version);
    $mac!(help);
    $mac!(ahoy);
    $mac!(account);
    $mac!(sshkey);
    $mac!(csar);
}) }

/**
  The top-level `cargo` command handles configuration and project location
  because they are fundamental (and intertwined). Other commands can rely
  on this top-level information.
*/
fn execute(flags: Flags, config: &Config) -> CliResult<Option<()>> {
    config.shell().set_verbose(flags.flag_verbose);
    if flags.flag_list {
        println!("Installed Commands:");
        for command in list_commands().into_iter() {
            println!("{}", command);
        };
        return Ok(None)
    }

    let args = match &flags.arg_command[..] {
        // For the commands `meg` and `meg help`, re-execute ourselves as
        // `meg -h` so we can go through the normal process of printing the
        // help message.
        "" | "help" if flags.arg_args.is_empty() => {
            config.shell().set_verbose(true);
            let args = &["meg".to_string(), "-h".to_string()];
            let r = turbo::turbo::call_main_without_stdin(execute, config, USAGE, args,
                                                   false);

            turbo::turbo::process_executed(r, &mut config.shell());
            return Ok(None)
        }

        // For `meg help -h` and `meg help --help`, print out the help
        // message for `meg help`
        "help" if flags.arg_args[0] == "-h" ||
                  flags.arg_args[0] == "--help" => {
            vec!["meg".to_string(), "help".to_string(), "-h".to_string()]
        }

        // For `meg help foo`, print out the usage message for the specified
        // subcommand by executing the command with the `-h` flag.
        "help" => {
            vec!["meg".to_string(), flags.arg_args[0].clone(),
                 "-h".to_string()]
        }

        // For all other invocations, we're of the form `meg foo args...`. We
        // use the exact environment arguments to preserve tokens like `--` for
        // example.
        _ => env::args().collect(),
    };

    macro_rules! cmd{ ($name:ident) => (
        if args[1] == stringify!($name).replace("_", "-") {
            mod $name;
            config.shell().set_verbose(true);
            let r = turbo::turbo::call_main_without_stdin($name::execute, config,
                                                   $name::USAGE,
                                                   &args,
                                                   false);
            turbo::turbo::process_executed(r, &mut config.shell());
            return Ok(None)
        }
    ) }
    each_subcommand!(cmd);

    execute_subcommand(&args[1], &args, &mut config.shell());
    Ok(None)
}

fn find_closest(cmd: &str) -> Option<String> {
    let cmds = list_commands();
    // Only consider candidates with a lev_distance of 3 or less so we don't
    // suggest out-of-the-blue options.
    let mut filtered = cmds.iter().map(|c| (lev_distance(&c, cmd), c))
                                  .filter(|&(d, _)| d < 4)
                                  .collect::<Vec<_>>();
    filtered.sort_by(|a, b| a.0.cmp(&b.0));

    if filtered.len() == 0 {
        None
    } else {
        Some(filtered[0].1.to_string())
    }
}

fn execute_subcommand(cmd: &str, args: &[String], shell: &mut MultiShell) {
    let command = match find_command(cmd) {
        Some(command) => command,
        None => {
            let msg = match find_closest(cmd) {
                Some(closest) => format!("No such subcommand\n\n\t\
                                          Did you mean `{}`?\n", closest),
                None => "No such subcommand".to_string()
            };
            return handle_error(CliError::new(&msg, 127), shell)
        }
    };
    match Command::new(&command).args(&args[1..]).status() {
        Ok(ref status) if status.success() => {}
        Ok(ref status) => {
            match status.code() {
                Some(code) => handle_error(CliError::new("", code), shell),
                None => {
                    let msg = format!("subcommand failed with: {}", status);
                    handle_error(CliError::new(&msg, 101), shell)
                }
            }
        }
        Err(ref e) if e.kind() == io::ErrorKind::NotFound => {
            handle_error(CliError::new("No such subcommand", 127), shell)
        }
        Err(err) => {
            let msg = format!("Subcommand failed to run: {}", err);
            handle_error(CliError::new(&msg, 127), shell)
        }
    }
}

/// List all runnable commands. find_command should always succeed
/// if given one of returned command.
fn list_commands() -> BTreeSet<String> {
    let command_prefix = "meg-";
    let mut commands = BTreeSet::new();
    for dir in list_command_directory().iter() {
        let entries = match fs::read_dir(dir) {
            Ok(entries) => entries,
            _ => continue
        };
        for entry in entries {
            let entry = match entry { Ok(e) => e, Err(..) => continue };
            let entry = entry.path();
            let filename = match entry.file_name().and_then(|s| s.to_str()) {
                Some(filename) => filename,
                _ => continue
            };
            if filename.starts_with(command_prefix) &&
               filename.ends_with(env::consts::EXE_SUFFIX) &&
               is_executable(&entry) {
                let command = &filename[
                    command_prefix.len()..
                    filename.len() - env::consts::EXE_SUFFIX.len()];
                commands.insert(command.to_string());
            }
        }
    }

    macro_rules! add_cmd{ ($cmd:ident) => ({
        commands.insert(stringify!($cmd).replace("_", "-"));
    }) }
    each_subcommand!(add_cmd);
    commands
}

#[cfg(unix)]
fn is_executable(path: &Path) -> bool {
    //use std::os::unix;
 //use std::sys::ext;
    //fs::metadata(path).map(|m| {
//        m.permissions() == 0o001
//    }).unwrap_or(false)
return true
}
#[cfg(windows)]
fn is_executable(path: &Path) -> bool {
    fs::metadata(path).map(|m| m.is_file()).unwrap_or(false)
}

/// Get `Command` to run given command.
fn find_command(cmd: &str) -> Option<PathBuf> {
    let command_exe = format!("meg-{}{}", cmd, env::consts::EXE_SUFFIX);
    let dirs = list_command_directory();
    let mut command_paths = dirs.iter().map(|dir| dir.join(&command_exe));
    command_paths.find(|path| fs::metadata(&path).is_ok())
}

/// List candidate locations where subcommands might be installed.
fn list_command_directory() -> Vec<PathBuf> {
    let mut dirs = vec![];
    if let Ok(mut path) = env::current_exe() {
        path.pop();
        dirs.push(path.join("../lib/meg"));
        dirs.push(path);
    }
    if let Some(val) = env::var_os("PATH") {
        dirs.extend(env::split_paths(&val));
    }
    dirs
}


text:
extern "Java"
{
  namespace java
  {
    namespace nio
    {
      namespace charset
      {
          class CharacterCodingException;
      }
    }
  }
}

class java::nio::charset::CharacterCodingException : public ::java::io::IOException
{

public:
  CharacterCodingException();
private:
  static const jlong serialVersionUID = 8421532232154627783LL;
public:
  static ::java::lang::Class class$;
};

#endif // __java_nio_charset_CharacterCodingException__


text:
const makePromise = require('unexpected').promise;
const http = require('http');
const messy = require('messy');
const stream = require('stream');
const qs = require('qs');

const classifyRequestBodyAndUpdateHttpRequest = require('./classifyRequestBodyAndUpdateHttpRequest');
const errors = require('./errors');
const resolveRequestBody = require('./resolveRequestBody');

function applyRequestBodyToToReq(requestBodyState, req, httpRequest) {
  if (requestBodyState) {
    const { hasFormData, hasStream, requestBody } = requestBodyState;

    if (hasStream) {
      if (hasFormData) {
        // form-data pauses its streams by default for some reason:
        setImmediate(() => {
          requestBody.resume();
        });
      }
      const requestBodyChunks = [];
      requestBody
        .on('data', (chunk) => {
          if (!Buffer.isBuffer(chunk)) {
            chunk = Buffer.from(chunk, 'utf-8');
          }
          requestBodyChunks.push(chunk);
          req.push(chunk);
        })
        .on('end', () => {
          httpRequest.unchunkedBody = Buffer.concat(requestBodyChunks);
          req.push(null);
        })
        .on('error', (err) => {
          req.emit('error', err);
        });
    } else {
      setImmediate(() => {
        // To work around nodejs v0.10.x issue with old-style streams, see also https://github.com/stream-utils/raw-body/pull/34
        req.push(requestBody);
        req.push(null);
      });
    }
  } else {
    req.push(null);
  }
}

function determineStatusProperty(obj) {
  for (const prop of ['statusCode', 'status']) {
    if (typeof obj[prop] === 'number') {
      return prop;
    }
  }
  return null;
}

class UnexpectedExpressMocker {
  constructor(subject) {
    if (!subject.handle || !subject.set) {
      // This check is from the lib/application file in express @ 4.10.2.
      // If we get inside here, we have something that is not an express app
      // https://github.com/strongloop/express/blob/661435256384165bb656cb7b6046b4138ca24c9e/lib/application.js#L186
      subject = require('express')().use(subject);
    }

    this.subject = subject;
  }

  mock(options) {
    const requestProperties =
      typeof options.request === 'string'
        ? { url: options.request }
        : { ...options.request };
    const expectedErrorPassedToNext = options.expectedErrorPassedToNext;

    const httpRequest = new messy.HttpRequest({
      method: requestProperties.method,
      url: requestProperties.url || '/',
      protocolName: 'HTTP',
      protocolVersion: requestProperties.httpVersion || '1.1',
      headers: requestProperties.headers,
    });

    const { requestBody, requestBodyKind } = resolveRequestBody(
      requestProperties,
      httpRequest
    );
    switch (requestBodyKind) {
      case 'buffer':
        httpRequest.unchunkedBody = requestBody;
        break;
      case 'unchunked':
        httpRequest.unchunkedBody = requestBody;
        break;
      case 'raw':
        httpRequest.rawBody = requestBody;
        break;
      default:
        // string or non-Buffer object (implies JSON)
        httpRequest.body = requestBody;
    }

    delete requestProperties.method;
    delete requestProperties.url;
    delete requestProperties.httpVersion;
    delete requestProperties.headers;
    delete requestProperties.body;
    delete requestProperties.unchunkedBody;
    delete requestProperties.rawBody;
    httpRequest.method = httpRequest.method || 'GET';
    if (
      httpRequest.encrypted &&
      typeof requestProperties.https === 'undefined'
    ) {
      // Warn if conflicting?
      requestProperties.https = true;
    }

    if (typeof requestProperties.query !== 'undefined') {
      if (
        typeof requestProperties.query === 'object' &&
        requestProperties.query
      ) {
        const stringifiedQueryString = qs.stringify(requestProperties.query);
        if (stringifiedQueryString) {
          httpRequest.url +=
            (httpRequest.url.includes('?') ? '&' : '?') +
            stringifiedQueryString;
        }
      } else {
        httpRequest.url +=
          (httpRequest.url.includes('?') ? '&' : '?') +
          String(requestProperties.query);
      }
      delete requestProperties.query;
    }

    let requestDestroyed = false;
    const req = new http.IncomingMessage({
      destroy() {
        requestDestroyed = true;
      },
      on() {},
      removeListener() {},
      _readableState: true,
    });

    const requestBodyState = classifyRequestBodyAndUpdateHttpRequest(
      requestBody,
      httpRequest
    );

    // Make req.connection.setTimeout a no-op so that req.setTimeout doesn't break
    // in this mocked state:
    req.connection.setTimeout = () => {};

    req.httpVersion = httpRequest.protocolVersion;
    const matchProtocolVersion = String(httpRequest.protocolVersion).match(
      /^(\d+)(?:\.(\d+))$/
    );
    if (matchProtocolVersion) {
      req.httpVersionMajor = parseInt(matchProtocolVersion[1], 10);
      req.httpVersionMinor = matchProtocolVersion[2]
        ? parseInt(matchProtocolVersion[2], 10)
        : 0;
    }
    req.connection.encrypted = !!requestProperties.https;
    delete requestProperties.https;
    req.connection.remoteAddress =
      requestProperties.remoteAddress || requestProperties.ip || '127.0.0.1';
    delete requestProperties.ip;
    delete requestProperties.remoteAddress;
    req.headers = {};
    httpRequest.headers.getNames().forEach((headerName) => {
      const headerNameLowerCase = headerName.toLowerCase();
      if (headerNameLowerCase === 'set-cookie') {
        req.headers[headerNameLowerCase] = [].concat(
          httpRequest.headers.getAll(headerName)
        );
      } else {
        req.headers[headerNameLowerCase] = httpRequest.headers
          .getAll(headerName)
          .join(', ');
      }
    });
    req.method = httpRequest.method;
    req.url = httpRequest.requestLine.url;
    Object.assign(req, requestProperties);

    applyRequestBodyToToReq(requestBodyState, req, httpRequest);

    const res = new http.ServerResponse(req);
    Object.assign(res, requestProperties.res); // Allows for specifying eg. res.locals
    delete requestProperties.res;
    res.locals = res.locals || {};

    const rawResponseChunks = [];
    res.assignSocket(new stream.Writable());
    res.connection._write = (chunk, encoding, cb) => {
      rawResponseChunks.push(chunk);
      cb();
    };

    let isDestroyed = false;
    res.connection.destroy = () => {
      isDestroyed = true;
    };

    let isAsync = false;
    setImmediate(() => {
      isAsync = true;
    });

    const context = {};
    const nextCalls = [];
    let done = false;
    let errorPassedToNext;

    return makePromise((resolve, reject) => {
      ['write', 'end', 'destroy'].forEach((methodName) => {
        const orig = res[methodName];
        res[methodName] = function (chunk, encoding) {
          const returnValue = orig.apply(this, arguments);
          isDestroyed = isDestroyed || methodName === 'destroy';
          if (methodName === 'end' || methodName === 'destroy') {
            resolve();
          }
          // Don't attempt to implement backpressure, since we're buffering the entire response anyway.
          if (methodName !== 'write') {
            return returnValue;
          }
        };
      });
      this.subject(req, res, function (err, _req, _res, _next) {
        nextCalls.push(arguments);
        if (nextCalls.length > 1) {
          if (done) {
            if (err) {
              throw err;
            } else {
              throw new Error('next called more than once');
            }
          } else {
            // Will be reported as a failure later
            return;
          }
        }

        // handle calling next() with a status code
        if (typeof err === 'number') {
          const statusCode = err;
          err = new Error(`${statusCode}`);
          err.statusCode = statusCode;
          errorPassedToNext = err;
        } else {
          errorPassedToNext = err;
        }

        resolve();
      });
    })
      .then(() => {
        if (res.connection._writableState.corked > 0) {
          // Wait for the connection to become uncorked before proceeding
          const originalUncork = res.connection.uncork;
          return new Promise((resolve) => {
            res.connection.uncork = function () {
              const returnValue = originalUncork.apply(this, arguments);
              if (res.connection._writableState.corked === 0) {
                resolve();
              }
              return returnValue;
            };
          });
        }
      })
      .then(() => {
        Object.assign(context, {
          req,
          res,
          metadata: {
            strictAsync: isAsync,
            errorPassedToNext: false,
            isDestroyed,
            requestDestroyed,
            nextCalled: nextCalls.length > 0,
            locals: res.locals,
            url: req.url,
          },
          httpRequest,
        });

        let hasWrittenErrorStatusCode = false;
        if (errorPassedToNext && !res.headersSent) {
          hasWrittenErrorStatusCode = true;
          let statusCode;
          const statusProperty = determineStatusProperty(errorPassedToNext);
          if (statusProperty) {
            statusCode = errorPassedToNext[statusProperty];
          } else {
            statusCode = 500;
          }
          res.statusCode = statusCode;
          res.writeHead(statusCode);
        }

        if (!res.headersSent) {
          res.statusCode = 404;
          // Make sure that the already set headers get flushed:
          res.writeHead(404);
        }

        const httpResponse = (context.httpResponse = new messy.HttpResponse(
          rawResponseChunks.length > 0
            ? Buffer.concat(rawResponseChunks)
            : res._header
        ));
        if (typeof httpResponse.rawBody === 'undefined') {
          httpResponse.rawBody = Buffer.from([]);
        }
        httpResponse.statusCode = httpResponse.statusCode || res.statusCode;

        if (errorPassedToNext) {
          if (typeof expectedErrorPassedToNext !== 'undefined') {
            if (expectedErrorPassedToNext === true) {
              context.metadata.errorPassedToNext = true;
            } else if (typeof expectedErrorPassedToNext === 'string') {
              context.metadata.errorPassedToNext = errorPassedToNext.message;
            } else {
              context.metadata.errorPassedToNext = errorPassedToNext;
            }
          } else if (determineStatusProperty(errorPassedToNext)) {
            // FIXME
            if (!httpResponse.headers.get('Content-Type')) {
              httpResponse.headers.set('Content-Type', 'text/plain');
              httpResponse.body = errorPassedToNext.stack;
            }
            context.metadata.errorPassedToNext = new errors.ExplicitRouteError({
              data: { error: errorPassedToNext },
            });
          } else if (hasWrittenErrorStatusCode) {
            context.metadata.errorPassedToNext = new errors.UnknownRouteError({
              data: { error: errorPassedToNext },
            });
          } else {
            context.metadata.errorPassedToNext = new errors.SilentRouteError({
              data: { error: errorPassedToNext },
            });
          }
        }

        context.httpExchange = new messy.HttpExchange({
          request: context.httpRequest,
          response: context.httpResponse,
        });
      })
      .then(() => {
        if (nextCalls.length > 1) {
          throw new Error('next called more than once');
        }
        done = true; // Tell the next function that subsequent calls should cause an exception to be thrown
        return context;
      });
  }
}

module.exports = UnexpectedExpressMocker;


text:
using System.Collections.Generic;
using SevenDigital.Api.Wrapper.Requests;
using SevenDigital.Api.Wrapper.Responses;

namespace SevenDigital.Api.Wrapper.Unit.Tests
{
	internal class FakeCache: IResponseCache
	{
		public int SetCount { get; set; }
		public int TryGetCount { get; set; }
		public IList<object> CachedResponses { get; set; }

		public object StubCachedObject { get; set; }

		internal FakeCache()
		{
			CachedResponses = new List<object>();
		}

		public void Set(RequestData key, object value)
		{
			SetCount++;
			CachedResponses.Add(value);
		}

		public bool TryGet<T>(RequestData key, out T value)
		{
			TryGetCount++;
			value = (T)StubCachedObject;
			return (StubCachedObject != null);
		}
	}
}


text:
<!DOCTYPE html>

    <title>Testing font shorthand for new values introduced in CSS Fonts level 4</title>
    <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-prop" />

Shorthand test


text:
import itertools
import logging
import random

from yelp_beans.matching.match_utils import get_counts_for_pairs
from yelp_beans.matching.match_utils import get_previous_meetings

def get_previous_meetings_counts(users, subscription_key):
    """
    Given users for a subscription, return the number of times two people have matched
    :param users: id of user
    :param subscription_key: Key referencing the subscription model entity
    :return: Tuple of user id's matched to count ie. {(4L, 5L): 5}
    """
    previous_meetings = get_previous_meetings(subscription_key)
    counts_for_pairs = get_counts_for_pairs(previous_meetings)
    user_ids = sorted([user.id for user in users])
    all_pairs_counts = {pair: 0 for pair in itertools.combinations(user_ids, 2)}
    for pair in counts_for_pairs:
        all_pairs_counts[pair] = counts_for_pairs[pair]
    return all_pairs_counts

def get_user_weights(users, previous_meetings_counts, starting_weight, negative_weight):
    """
    Given users asking for a match and historical information about the previous people they met,
    return weights to promote groups where people haven't met each other.
    :param users: list of user models
    :param previous_meetings_counts: tuple of user id's matched to count
    :param starting_weight: initial weight between users
    :param negative_weight: amount to subtract from initial weight based on previous meetings
    :return: adjacency matrix from user to user
    """
    user_user_weights = []
    for idx1, user1 in enumerate(users):
        user_user_weights.append([])
        for idx2, user2 in enumerate(users):
            pair_tuple = tuple(sorted((user1.id, user2.id)))
            if pair_tuple not in previous_meetings_counts:
                user_user_weights[idx1].append(0)
                continue
            weight = starting_weight - (negative_weight * previous_meetings_counts[pair_tuple])
            user_user_weights[idx1].append(weight)
    return user_user_weights

def generate_groups(group, partition_size):
    """
    Given a group, partition into smaller groups of a specific size.  Zero
    for group size is invalid. Partitions will never exceed inputted value, but may be smaller.
    :param group: List of ids
    :param partition_size: Intended size for group
    :return: list of groups
    """
    for i in range(0, len(group), partition_size):
        yield group[i:i + partition_size if (i + partition_size) < len(group) else len(group)]

def generate_group_meetings(users, spec, group_size, starting_weight, negative_weight):
    population_size = len(users)

    # For group meetings we must have more than 2 users
    if population_size == 0:
        return [], []

    if population_size in (1, 2):
        return [], users

    previous_meetings_counts = get_previous_meetings_counts(users, spec.meeting_subscription)
    adj_matrix = get_user_weights(users, previous_meetings_counts, starting_weight, negative_weight)
    annealing = Annealing(population_size, group_size, adj_matrix)
    grouped_ids = generate_groups(annealing.simulated_annealing(), group_size)

    matches = []
    unmatched = []
    for group in grouped_ids:
        grouped_users = [users[index] for index in group]
        if len(grouped_users) < group_size:
            unmatched.extend(grouped_users)
        else:
            matches.append(grouped_users)
    logging.info('{} employees matched'.format(len(matches) * group_size))
    for group in matches:
        username_tuple = tuple([user.get_username() for user in group[:-1]])
        logging.info(username_tuple)

    logging.info('{} employees unmatched'.format(len(unmatched)))
    logging.info([user.get_username() for user in unmatched])

    return matches, unmatched

class Annealing:
    def __init__(self, population_size, group_size, adj_matrix, max_iterations=100):
        self.population_size = population_size
        self.group_size = group_size
        self.adj_matrix = adj_matrix
        self.max_iterations = max_iterations

    def get_initial_state(self):
        ids = [i for i in range(self.population_size)]
        random.shuffle(ids)
        return State(self.population_size, self.group_size, ids)

    def get_temp(self, iteration):
        return 1.0 - (self.max_iterations - iteration) / (self.max_iterations + iteration)

    def simulated_annealing(self):
        prev_state = self.get_initial_state()
        best_state = prev_state.copy()

        best_cost = prev_cost = prev_state.get_cost(self.adj_matrix)

        for iteration in range(self.max_iterations):
            temp = self.get_temp(iteration)

            curr_state = prev_state.get_mutated_state()
            curr_cost = curr_state.get_cost(self.adj_matrix)

            if curr_cost > best_cost:
                best_cost = curr_cost
                best_state = curr_state

            if curr_cost > prev_cost or 1.0 * curr_cost / (prev_cost + 1) * temp < random.random():
                prev_cost = curr_cost
                prev_state = curr_state

        return best_state.ids

class State:
    def __init__(self, population_size, group_size, ids):
        self.population_size = population_size
        self.group_size = group_size
        self.ids = ids

    def copy(self):
        return State(self.population_size, self.group_size, self.ids[:])

    def get_cost(self, adj_matrix):
        cost = 0
        for i in range(0, len(self.ids), self.group_size):
            cost += sum([
                adj_matrix[edge[0]][edge[1]]
                for edge in itertools.combinations(self.ids[i:i + self.group_size], 2)
            ])
        return cost

    def get_mutated_state(self):
        x = random.randint(0, len(self.ids) - 1)
        y = random.randint(0, len(self.ids) - 2)
        if y >= x:
            y += 1

        ids = self.ids[:]
        ids[x], ids[y] = ids[y], ids[x]
        return State(
            self.population_size,
            self.group_size,
            ids
        )


text:
ActiveRecord::Schema.define(:version => 20120216154741) do

  create_table "authors", :force => true do |t|
    t.string   "first_name"
    t.string   "last_name"
    t.integer  "country_id"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end

  create_table "books", :force => true do |t|
    t.string   "name"
    t.integer  "author_id"
    t.date     "published_on"
    t.boolean  "active"
    t.text     "content"
    t.integer  "year_published"
    t.datetime "created_at",     :null => false
    t.datetime "updated_at",     :null => false
  end

  create_table "countries", :force => true do |t|
    t.string   "name"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end

end


text:
package com.twu.biblioteca.logic;

import com.twu.biblioteca.CurrentUser;
import com.twu.biblioteca.model.*;

import java.util.List;

/**
 * Created by David on 10.06.17.
 */
public class LogIn {

    private final String userId;
    private final String password;
    private List<User> users = Data.USERS;

    public LogIn(String userId, String password) {
        this.userId = userId;
        this.password = password;
    }

    public LogInResult logIn() {
        for (User registeredUser : users) {
            boolean userNameExists = registeredUser.getUserId().equalsIgnoreCase(userId);
            boolean passwordMatches = registeredUser.getPassword().equals(password);
            if (userNameExists && passwordMatches) {
                CurrentUser.setCurrentUser(registeredUser);
                return new LogInSuccessful(userId);
            }
        }
        return new LogInUnsuccessful();
    }

    public void setUsersForTest(List<User> users) {
        this.users = users;
    }
}


text:
from sysutils import Platforms
import subprocess
import os
from typing import List, Tuple
from logger import initialize_logger
log = initialize_logger('setup')

def execute_system_command(command: List[str],
                           timeout: int = None,
                           stdin=None,
                           env=None,
                           cwd=None,
                           logs_size: int = 0) -> Tuple[str, int, str]:
    """
    Executes system's command
    :param command: command to be exeucted
    :param timeout: timeout of execution, when timeout pass - command is interrupted
    :param stdin: stream with input data for command
    :param env: environment within which command is run
    :param cwd: command working directory
    :param logs_size: if other than 0 - system sends to logger logs_size last characters
    :return: output - output of the command
             exit_code - exit code returned by a command
             log_output - output that should be passed to logs. If a real output contains
             special characters that are not present in a current system's encoding, this
             attribute contains information about a need of changing system's encoding
    """
    try:
        output = subprocess.check_output(  # type: ignore
            command,
            timeout=timeout,
            stderr=subprocess.STDOUT,
            universal_newlines=True,
            stdin=stdin,
            env=env,
            cwd=cwd,
            encoding='utf-8')
        encoded_output = output[-logs_size:].encode('utf-8')
        log.debug(f'COMMAND: {command} RESULT: {encoded_output}'.replace('\n', '\\n'))
    except subprocess.CalledProcessError as ex:
        log.exception(f'COMMAND: {command} RESULT: {ex.output}'.replace('\n', '\\n'))
        return ex.output, ex.returncode, ex.output
    else:
        return output, 0, encoded_output

ip_command = ["ip", "link", "show"]
lp = Platforms()
lp.get_all_details()

# git should be level 0 requirement. without git the server cant fetch the repo itself

apt_packages = ['git',
                'unifdef',
                #'python',
                'curl',
                #'python-setuptools',
                'python3-setuptools',
                'python3-pip',
                'python3-wheel',
                'python3-cffi',
                'libconfig-dev',
                'libunwind-dev',
                'libffi-dev',
                'zlib1g-dev',
                'libedit-dev',
                'libexpat1-dev',
                'clang',
                'ninja-build',
                'gcc',
                'libstdc++6',
                'autotools-dev',
                'autoconf',
                'autoconf-archive',
                'libtool',
                'meson',
                'google-perftools',
                'connect-proxy',
                'tshark',
                'cmake',
                'libglib2.0-dev',
                'patch',
                'python3.10'
                ]

pip_packages = ['thrift', 'protobuf','pyelftools','scapy','six']

dnf_pkg = [ "clang", #libstdc++ is part of clang
            "gcc",
            "meson", #ninja build is included in meson
            "libtool", #autoconf, automake are part of it
            "google-perftools", # libunwind part of google perftools
            "libconfig",
            "libconfig-devel",
            "unifdef",
            #"python",
            "curl",
            'libffi-devel',
            'zlib-devel',
            'libedit-devel',
            'expat-devel',
            "python3-setuptools",
            #"python-setuptools",
            "python3-pip",
            "python3-wheel",
            "python3-cffi",
            "autoconf-archive",
            "connect-proxy",
            "wireshark",
            "cmake",
            "libunwind-devel",
            "glib2-devel",
            "patch",
            "python3.10"
]

if lp.pkgmgr == "apt-get":
    for item in apt_packages:
        install_command = ["sudo", "-E", lp.pkgmgr, "install",  "-y", item]
        print (execute_system_command (install_command)[0])
if lp.pkgmgr == "dnf" or lp.pkgmgr == "yum":
    for item in dnf_pkg:
        install_command = ["sudo", "-E", lp.pkgmgr, "install",  "-y", item]
        print (execute_system_command (install_command)[0])

## setup proxies for pip to run
for item in pip_packages:
    pip3_install_command = ["pip3", "install",  item]
    #pip_install_command = ["pip", "install",  item]
    #pip2_install_command = ["pip2", "install",  item]
    print (execute_system_command (pip3_install_command)[0])


text:
<!DOCTYPE html>

<title>Canvas test: size.attributes.default</title>
<meta name="author" content="Philip Taylor">

<link rel="stylesheet" href="common/canvas-tests.css">

size.attributes.default

Default width/height when attributes are missing

Actual output:

<canvas id="c" class="output" >
FAIL (fallback content)
</canvas>

Expected output:


text:
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Useridentityui</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <app-root></app-root>
</body>
</html>


text:
<!DOCTYPE html>

    <meta charset="utf-8">
    <title>[Polymer] WebAudio Controls Test page</title>

    <link rel="import" href="bower_components/polymer/polymer.html">
    <link rel="import" href="webaudio-controls.html">

--- Events ---

  <button onclick="Clear()" style="position:absolute;left:0;top:0">Clear</button>

WebAudio-Controls Test Page

WebAudio-Knobs

      <webaudio-knob id="knob1"></webaudio-knob> <webaudio-knob id="knob1a" colors="#fc0;#000;#444"></webaudio-knob>

      <webaudio-knob id="knob1"></webaudio-knob>

      <webaudio-knob id="knob1a" colors="#fc0;#000;#444"></webaudio-knob>

Default webaudio-knob. If no knob-image is specified, simple embedded image resource is used. Colors are customizable.

      <webaudio-knob id="knob2" src="img/LittlePhatty.png" sprites="100" value="60" min="-100" max="100" step="20" diameter="64"></webaudio-knob>

      <webaudio-knob id="knob2" src="img/LittlePhatty.png" sprites="100" value="60" min="-100" max="100" step="20" diameter="64"><webaudio-knob>

Knob image file is assigned. Value range can be specified by min/max. The initial value is "60". The value is changed in step of "20".

      <webaudio-knob id="knob3" src="img/LittlePhatty.png" sprites="100" diameter="32"></webaudio-knob>

      <webaudio-knob id="knob3" src="img/LittlePhatty.png" sprites="100" diameter="32"><webaudio-knob>

The knob image will be resized to specified size (even recommended to prepare required size image for clear display)

      <webaudio-knob id="knob4" src="img/hsw5.png" sprites="4" value="2" min="0" max="4" width="128" height="32"></webaudio-knob>

      <webaudio-knob id="knob4" src="img/hsw5.png" sprites="4" value="2" min="0" max="4" width="128" height="32"><webaudio-knob>

non-square image is used with specifying width/height instead of diameter.

      <webaudio-knob id="knob5" src="img/LittlePhatty.png" sprites="100" diameter="64" valuetip="0" tooltip="Knob Test"></webaudio-knob>
      <webaudio-param link="knob5"></webaudio-param>

      <webaudio-knob id="knob5" src="img/LittlePhatty.png" sprites="100" diameter="64" valuetip="0" tooltip="Knob Test"></webaudio-knob>

      <webaudio-param link="knob5"></webaudio-param>

webaudio-knob can has tooltip-text and editable parameter display field with webaudio-param

WebAudio-Sliders

      <webaudio-slider id="slider1"></webaudio-slider>
      <webaudio-slider id="slider1a" colors="#850;#230;#fff"></webaudio-slider>
      <webaudio-slider id="slider2" direction="horz"></webaudio-slider>

      <webaudio-slider id="slider1"></webaudio-slider>

      <webaudio-slider id="slider1a" colors="#850;#230;#fff"></webaudio-slider>

        <webaudio-slider id="slider2" direction="horz"></webaudio-slider>

Default webaudio-slider. If no slider-image is specified, simple embedded image resource is used.
        The slider direction is specified by "direction" attribute.

      <webaudio-slider id="slider3" direction="horz" src="img/hsliderbody.png" knobsrc="img/hsliderknob.png" log="1"></webaudio-slider>

      <webaudio-slider id="slider3" direction="horz" src="img/hsliderbody.png" knobsrc="img/hsliderknob.png"></webaudi-slider>

Specifying the sliderbase and sliderknob images.

      <webaudio-slider id="slider4" direction="horz" src="img/hsliderbody.png" knobsrc="img/hsliderknob.png" min="0" max="1" step="0.1" width="60" height="20" valuetip="0" tooltip="Slider Test"></webaudio-slider>
      <webaudio-param link="slider4"></webaudio-param>

      <webaudio-slider id="slider4" direction="horz" src="img/hsliderbody.png" knobsrc="img/hsliderknob.png" min="0" max="1" step="0.1" width="60" height="20" valuetip="0" tooltip="Slider Test"></webaudio-slider>

      <webaudio-param link="slider4"></webaudio-param>

Value step is specified, resized,  tooltip-text and webaudio-param is added.

WebAudio-Switches

      <webaudio-switch id="toggle1"></webaudio-switch>
      <webaudio-switch id="toggle1a" colors="#0c0;#008;#fff"></webaudio-switch>

      <webaudio-switch id="toggle1"></webaudio-switch>

      <webaudio-switch id="toggle1a" colors="#0c0;#008;#fff"></webaudio-switch>

Default webaudio-switch. If no switch-image is specified, simple embedded image resource is used.

      <webaudio-switch id="toggle2" src="img/switch_toggle.png" width="32" height="32"></webaudio-switch>
      <webaudio-switch id="toggle3" src="img/switch_toggle.png" width="54" height="54"></webaudio-switch>

      <webaudio-switch id="toggle2" src="img/switch_toggle.png" width="32" height="32"></webaudio-switch>

       <webaudio-switch id="toggle3" src="img/switch_toggle.png" width="54" height="54"></webaudio-switch>

Image file is specified. Images are resized to specified size.

      <webaudio-switch id="kick1" src="img/switch_toggle.png" type="kick" width="54" height="54"></webaudio-switch>

      <webaudio-switch id="kick1" src="img/switch_toggle.png" type="kick" width="54" height="54"></webaudio-switch>

Kick type switch. In this mode, this switch is on only while pressing.

      <webaudio-switch id="radioA" src="img/switch_toggle.png" type="radio" group="radio1" width="54" height="54" invert="1" value="1" tooltip="Radio-A"></webaudio-switch>
      <webaudio-switch id="radioB" src="img/switch_toggle.png" type="radio" group="radio1" width="54" height="54" invert="1" tooltip="Radio-B"></webaudio-switch>
      <webaudio-switch id="radioC" src="img/switch_toggle.png" type="radio" group="radio1" width="54" height="54" invert="1" tooltip="Radio-C"></webaudio-switch>

        <webaudio-switch id="radioA" src="img/switch_toggle.png" type="radio" group="radio1" width="54" height="54" value="1" tooltip="Radio-A"></webaudio-switch>

        <webaudio-switch id="radioB" src="img/switch_toggle.png" type="radio" group="radio1" width="54" height="54" tooltip="Radio-B"></webaudio-switch&bt;

        <webaudio-switch id="radioC" src="img/switch_toggle.png" type="radio" group="radio1" width="54" height="54" tooltip="Radio-C"></webaudio-switch>

Radio type switch. In this mode, only one switch is activated in the group.

Specification

Refer the following page for detail specifications

  https://github.com/g200kg/webaudio-controls

License

  WebAudio-Controls is based on

    WebAudio-Knob by Eiji Kitamura

    WebAudio-Slider by Ryoya Kawai

    WebAudio-Switch by Keisuke Ai

   Integrated and enhanced by g200kg

	Using Polymer and WebComponents

Copyright (c) 2013 Eiji Kitamura / Ryoya KAWAI / Keisuke Ai / g200kg (Tatsuya Shinyagaito)

webaudio-controls is licensed under the Apache License, Version 2.0

	Knob/Switch images are from Knob Gallery

	switch_toggle.knob by az Copyright (c) 2011 CC-BY


text:
CREATE TABLE SUMMONER_SPELL_IMAGE (
  SUMMONER_SPELL_ID INT PRIMARY KEY,
  IMG_FULL          VARCHAR(255) NOT NULL,
  SPRITE            VARCHAR(255) NOT NULL,
  IMG_GROUP         VARCHAR(255) NOT NULL,
  IMG_SRC           BYTEA        NOT NULL,
  X                 INT          NOT NULL,
  Y                 INT          NOT NULL,
  W                 INT          NOT NULL,
  H                 INT          NOT NULL,
  FOREIGN KEY (SUMMONER_SPELL_ID) REFERENCES SUMMONER_SPELL (ID)
);


text:
#ifndef CONNECTOMEDATAINSPECTIONDIALOG_H
#define CONNECTOMEDATAINSPECTIONDIALOG_H

#include "ui_connectomedatainspectiondialog.h"
#include <QDialog>

/**
  * \class ConnectomeInspectionDialog
  */

class ConnectomeInspectionDialog : public QDialog, private Ui::ConnectomeInspectionDialog
{
    Q_OBJECT

public:
    ConnectomeInspectionDialog(QWidget *parent = 0);
    ~ConnectomeInspectionDialog() { qDeleteAll(this->children()); }

private:

private slots:
    void onNoChangeCheck();
    void onInvertXCheck(bool status);
    void onInvertYCheck(bool status);
    void onInvertZCheck(bool status);
    void onSwapXYCheck(bool status);
    void onSwapXZCheck(bool status);
    void onSwapYZCheck(bool status);

};

#endif // CONNECTOMEDATAINSPECTIONDIALOG_H


text:
<?xml version="1.0" encoding="utf-8"?>
<!--
     Copyright (C) 2014 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<resources>

    <!--
        Theme in the "Platform.AppCompat" family are designed to be aliases for the default
        theme on a given platform version and should set up the default theme ready for adding our
        unbundled Action Bar.
    -->
    <eat-comment/>
    <style name="Platform.AppCompat" parent="android:Theme.Material">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>
    </style>

    <style name="Platform.AppCompat.Light" parent="android:Theme.Material.Light">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>
    </style>

    <style name="Platform.AppCompat.Dialog" parent="android:Theme.Material.Dialog">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>
    </style>

    <style name="Platform.AppCompat.Light.Dialog" parent="android:Theme.Material.Light.Dialog">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>
    </style>

    <style name="Base.Theme.AppCompat" parent="Base.V21.Theme.AppCompat" />

    <style name="Base.Theme.AppCompat.Light" parent="Base.V21.Theme.AppCompat.Light" />

    <style name="Base.V21.Theme.AppCompat" parent="Base.V7.Theme.AppCompat">
        <!-- Action Bar styling attributes -->
        <item name="actionBarSize">?android:attr/actionBarSize</item>
        <item name="actionBarDivider">?android:attr/actionBarDivider</item>
        <item name="actionBarItemBackground">?android:attr/actionBarItemBackground</item>
        <item name="actionButtonStyle">?android:attr/actionButtonStyle</item>
        <item name="actionMenuTextColor">?android:attr/actionMenuTextColor</item>
        <item name="actionMenuTextAppearance">?android:attr/actionMenuTextAppearance</item>
        <item name="actionModeBackground">?android:attr/actionModeBackground</item>
        <item name="actionModeCloseDrawable">?android:attr/actionModeCloseDrawable</item>
        <item name="actionModeShareDrawable">?android:attr/actionModeShareDrawable</item>
        <item name="actionOverflowButtonStyle">?android:attr/actionOverflowButtonStyle</item>
        <item name="homeAsUpIndicator">?android:attr/homeAsUpIndicator</item>

        <!-- For PopupMenu -->
        <item name="listPreferredItemHeightSmall">?android:attr/listPreferredItemHeightSmall</item>
        <item name="textAppearanceLargePopupMenu">?android:attr/textAppearanceLargePopupMenu</item>
        <item name="textAppearanceSmallPopupMenu">?android:attr/textAppearanceSmallPopupMenu</item>

        <!-- General view attributes -->
        <item name="selectableItemBackground">?android:attr/selectableItemBackground</item>
        <item name="selectableItemBackgroundBorderless">?android:attr/selectableItemBackgroundBorderless</item>
        <item name="dividerHorizontal">?android:attr/dividerHorizontal</item>
        <item name="dividerVertical">?android:attr/dividerVertical</item>
        <item name="editTextBackground">?android:attr/editTextBackground</item>
        <item name="editTextColor">?android:attr/editTextColor</item>
        <item name="listChoiceBackgroundIndicator">?android:attr/listChoiceBackgroundIndicator</item>

        <!-- Copy our color theme attributes to the framework -->
        <item name="android:colorPrimary">?attr/colorPrimary</item>
        <item name="android:colorPrimaryDark">?attr/colorPrimaryDark</item>
        <item name="android:colorAccent">?attr/colorAccent</item>
        <item name="android:colorControlNormal">?attr/colorControlNormal</item>
        <item name="android:colorControlActivated">?attr/colorControlActivated</item>
        <item name="android:colorControlHighlight">?attr/colorControlHighlight</item>
    </style>

    <style name="Base.V21.Theme.AppCompat.Light" parent="Base.V7.Theme.AppCompat.Light">
        <!-- Action Bar styling attributes -->
        <item name="actionBarSize">?android:attr/actionBarSize</item>
        <item name="actionBarDivider">?android:attr/actionBarDivider</item>
        <item name="actionBarItemBackground">?android:attr/actionBarItemBackground</item>
        <item name="actionButtonStyle">?android:attr/actionButtonStyle</item>
        <item name="actionMenuTextColor">?android:attr/actionMenuTextColor</item>
        <item name="actionMenuTextAppearance">?android:attr/actionMenuTextAppearance</item>
        <item name="actionModeBackground">?android:attr/actionModeBackground</item>
        <item name="actionModeCloseDrawable">?android:attr/actionModeCloseDrawable</item>
        <item name="actionModeShareDrawable">?android:attr/actionModeShareDrawable</item>
        <item name="actionOverflowButtonStyle">?android:attr/actionOverflowButtonStyle</item>
        <item name="homeAsUpIndicator">?android:attr/homeAsUpIndicator</item>

        <!-- For PopupMenu -->
        <item name="listPreferredItemHeightSmall">?android:attr/listPreferredItemHeightSmall</item>
        <item name="textAppearanceLargePopupMenu">?android:attr/textAppearanceLargePopupMenu</item>
        <item name="textAppearanceSmallPopupMenu">?android:attr/textAppearanceSmallPopupMenu</item>

        <!-- General view attributes -->
        <item name="selectableItemBackground">?android:attr/selectableItemBackground</item>
        <item name="selectableItemBackgroundBorderless">?android:attr/selectableItemBackgroundBorderless</item>
        <item name="dividerHorizontal">?android:attr/dividerHorizontal</item>
        <item name="dividerVertical">?android:attr/dividerVertical</item>
        <item name="editTextBackground">?android:attr/editTextBackground</item>
        <item name="editTextColor">?android:attr/editTextColor</item>
        <item name="listChoiceBackgroundIndicator">?android:attr/listChoiceBackgroundIndicator</item>

        <!-- Copy our color theme attributes to the framework -->
        <item name="android:colorPrimary">?attr/colorPrimary</item>
        <item name="android:colorPrimaryDark">?attr/colorPrimaryDark</item>
        <item name="android:colorAccent">?attr/colorAccent</item>
        <item name="android:colorControlNormal">?attr/colorControlNormal</item>
        <item name="android:colorControlActivated">?attr/colorControlActivated</item>
        <item name="android:colorControlHighlight">?attr/colorControlHighlight</item>
    </style>

    <style name="Base.V21.Theme.AppCompat.Dialog" parent="Base.V11.Theme.AppCompat.Dialog">
        <!-- Action Bar styling attributes -->
        <item name="actionBarSize">?android:attr/actionBarSize</item>
        <item name="actionBarDivider">?android:attr/actionBarDivider</item>
        <item name="actionBarItemBackground">?android:attr/actionBarItemBackground</item>
        <item name="actionButtonStyle">?android:attr/actionButtonStyle</item>
        <item name="actionMenuTextColor">?android:attr/actionMenuTextColor</item>
        <item name="actionMenuTextAppearance">?android:attr/actionMenuTextAppearance</item>
        <item name="actionModeBackground">?android:attr/actionModeBackground</item>
        <item name="actionModeCloseDrawable">?android:attr/actionModeCloseDrawable</item>
        <item name="actionModeShareDrawable">?android:attr/actionModeShareDrawable</item>
        <item name="actionOverflowButtonStyle">?android:attr/actionOverflowButtonStyle</item>
        <item name="homeAsUpIndicator">?android:attr/homeAsUpIndicator</item>

        <!-- For PopupMenu -->
        <item name="listPreferredItemHeightSmall">?android:attr/listPreferredItemHeightSmall</item>
        <item name="textAppearanceLargePopupMenu">?android:attr/textAppearanceLargePopupMenu</item>
        <item name="textAppearanceSmallPopupMenu">?android:attr/textAppearanceSmallPopupMenu</item>

        <!-- General view attributes -->
        <item name="selectableItemBackground">?android:attr/selectableItemBackground</item>
        <item name="selectableItemBackgroundBorderless">?android:attr/selectableItemBackgroundBorderless</item>
        <item name="dividerHorizontal">?android:attr/dividerHorizontal</item>
        <item name="dividerVertical">?android:attr/dividerVertical</item>
        <item name="editTextBackground">?android:attr/editTextBackground</item>
        <item name="editTextColor">?android:attr/editTextColor</item>
        <item name="listChoiceBackgroundIndicator">?android:attr/listChoiceBackgroundIndicator</item>

        <!-- Copy our color theme attributes to the framework -->
        <item name="android:colorPrimary">?attr/colorPrimary</item>
        <item name="android:colorPrimaryDark">?attr/colorPrimaryDark</item>
        <item name="android:colorAccent">?attr/colorAccent</item>
        <item name="android:colorControlNormal">?attr/colorControlNormal</item>
        <item name="android:colorControlActivated">?attr/colorControlActivated</item>
        <item name="android:colorControlHighlight">?attr/colorControlHighlight</item>
    </style>

    <style name="Base.V21.Theme.AppCompat.Light.Dialog" parent="Base.V11.Theme.AppCompat.Light.Dialog">
        <!-- Action Bar styling attributes -->
        <item name="actionBarSize">?android:attr/actionBarSize</item>
        <item name="actionBarDivider">?android:attr/actionBarDivider</item>
        <item name="actionBarItemBackground">?android:attr/actionBarItemBackground</item>
        <item name="actionButtonStyle">?android:attr/actionButtonStyle</item>
        <item name="actionMenuTextColor">?android:attr/actionMenuTextColor</item>
        <item name="actionMenuTextAppearance">?android:attr/actionMenuTextAppearance</item>
        <item name="actionModeBackground">?android:attr/actionModeBackground</item>
        <item name="actionModeCloseDrawable">?android:attr/actionModeCloseDrawable</item>
        <item name="actionModeShareDrawable">?android:attr/actionModeShareDrawable</item>
        <item name="actionOverflowButtonStyle">?android:attr/actionOverflowButtonStyle</item>
        <item name="homeAsUpIndicator">?android:attr/homeAsUpIndicator</item>

        <!-- For PopupMenu -->
        <item name="listPreferredItemHeightSmall">?android:attr/listPreferredItemHeightSmall</item>
        <item name="textAppearanceLargePopupMenu">?android:attr/textAppearanceLargePopupMenu</item>
        <item name="textAppearanceSmallPopupMenu">?android:attr/textAppearanceSmallPopupMenu</item>

        <!-- General view attributes -->
        <item name="selectableItemBackground">?android:attr/selectableItemBackground</item>
        <item name="selectableItemBackgroundBorderless">?android:attr/selectableItemBackgroundBorderless</item>
        <item name="dividerHorizontal">?android:attr/dividerHorizontal</item>
        <item name="dividerVertical">?android:attr/dividerVertical</item>
        <item name="editTextBackground">?android:attr/editTextBackground</item>
        <item name="editTextColor">?android:attr/editTextColor</item>
        <item name="listChoiceBackgroundIndicator">?android:attr/listChoiceBackgroundIndicator</item>

        <!-- Copy our color theme attributes to the framework -->
        <item name="android:colorPrimary">?attr/colorPrimary</item>
        <item name="android:colorPrimaryDark">?attr/colorPrimaryDark</item>
        <item name="android:colorAccent">?attr/colorAccent</item>
        <item name="android:colorControlNormal">?attr/colorControlNormal</item>
        <item name="android:colorControlActivated">?attr/colorControlActivated</item>
        <item name="android:colorControlHighlight">?attr/colorControlHighlight</item>
    </style>

    <style name="Base.Theme.AppCompat.Dialog" parent="Base.V21.Theme.AppCompat.Dialog" />

    <style name="Base.Theme.AppCompat.Light.Dialog" parent="Base.V21.Theme.AppCompat.Light.Dialog" />

    <style name="Base.ThemeOverlay.AppCompat" parent="android:ThemeOverlay.Material">
    </style>

    <style name="Base.ThemeOverlay.AppCompat.Dark" parent="android:ThemeOverlay.Material.Dark">
        <item name="colorControlHighlight">@color/ripple_material_dark</item>

        <!-- Used by MediaRouter -->
        <item name="isLightTheme">false</item>
    </style>

    <style name="Base.ThemeOverlay.AppCompat.Light" parent="android:ThemeOverlay.Material.Light">
        <item name="colorControlHighlight">@color/ripple_material_light</item>

        <!-- Used by MediaRouter -->
        <item name="isLightTheme">true</item>
    </style>

    <style name="Base.ThemeOverlay.AppCompat.ActionBar" parent="android:ThemeOverlay.Material.ActionBar">
        <item name="colorControlNormal">?android:attr/textColorPrimary</item>
    </style>

    <style name="Base.ThemeOverlay.AppCompat.Dark.ActionBar" parent="android:ThemeOverlay.Material.Dark.ActionBar">
        <item name="colorControlNormal">?android:attr/textColorPrimary</item>
        <item name="colorControlHighlight">@color/ripple_material_dark</item>

        <!-- Used by MediaRouter -->
        <item name="isLightTheme">false</item>
    </style>

</resources>


text:
  <app-navigation></app-navigation>

    <router-outlet></router-outlet>