text:
/**
 * DocuSign REST API
 * The DocuSign REST API provides you with a powerful, convenient, and simple Web services API for interacting with DocuSign.
 *
 * OpenAPI spec version: v2.1
 * Contact: devcenter@docusign.com
 *
 * NOTE: This class is auto generated. Do not edit the class manually and submit a new issue instead.
 *
 */

(function(root, factory) {
  if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module.
    define(['ApiClient', 'model/BillingInvoice'], factory);
  } else if (typeof module === 'object' && module.exports) {
    // CommonJS-like environments that support module.exports, like Node.
    module.exports = factory(require('../ApiClient'), require('./BillingInvoice'));
  } else {
    // Browser globals (root is window)
    if (!root.Docusign) {
      root.Docusign = {};
    }
    root.Docusign.BillingPlanPreview = factory(root.Docusign.ApiClient, root.Docusign.BillingInvoice);
  }
}(this, function(ApiClient, BillingInvoice) {
  'use strict';

  /**
   * The BillingPlanPreview model module.
   * @module model/BillingPlanPreview
   */

  /**
   * Constructs a new BillingPlanPreview.
   * Contains information about a preview billing plan.
   * @alias module:model/BillingPlanPreview
   * @class
   */
  var exports = function() {
    var _this = this;

  };

  /**
   * Constructs a BillingPlanPreview from a plain JavaScript object, optionally creating a new instance.
   * Copies all relevant properties from data to obj if supplied or a new instance if not.
   * @param {Object} data The plain JavaScript object bearing properties of interest.
   * @param {module:model/BillingPlanPreview} obj Optional instance to populate.
   * @return {module:model/BillingPlanPreview} The populated BillingPlanPreview instance.
   */
  exports.constructFromObject = function(data, obj) {
    if (data) {
      obj = obj || new exports();

      if (data.hasOwnProperty('currencyCode')) {
        obj['currencyCode'] = ApiClient.convertToType(data['currencyCode'], 'String');
      }
      if (data.hasOwnProperty('invoice')) {
        obj['invoice'] = BillingInvoice.constructFromObject(data['invoice']);
      }
      if (data.hasOwnProperty('isProrated')) {
        obj['isProrated'] = ApiClient.convertToType(data['isProrated'], 'String');
      }
      if (data.hasOwnProperty('subtotalAmount')) {
        obj['subtotalAmount'] = ApiClient.convertToType(data['subtotalAmount'], 'String');
      }
      if (data.hasOwnProperty('taxAmount')) {
        obj['taxAmount'] = ApiClient.convertToType(data['taxAmount'], 'String');
      }
      if (data.hasOwnProperty('totalAmount')) {
        obj['totalAmount'] = ApiClient.convertToType(data['totalAmount'], 'String');
      }
    }
    return obj;
  }

  /**
   * Specifies the ISO currency code for the account.
   * @member {String} currencyCode
   */
  exports.prototype['currencyCode'] = undefined;
  /**
   * @member {module:model/BillingInvoice} invoice
   */
  exports.prototype['invoice'] = undefined;
  /**
   *
   * @member {String} isProrated
   */
  exports.prototype['isProrated'] = undefined;
  /**
   *
   * @member {String} subtotalAmount
   */
  exports.prototype['subtotalAmount'] = undefined;
  /**
   *
   * @member {String} taxAmount
   */
  exports.prototype['taxAmount'] = undefined;
  /**
   *
   * @member {String} totalAmount
   */
  exports.prototype['totalAmount'] = undefined;

  return exports;
}));


text:
package org.wso2.carbon.analytics.test.osgi;

import com.google.gson.Gson;
import org.awaitility.Duration;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.ExamFactory;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerClass;
import org.ops4j.pax.exam.testng.listener.PaxExam;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.testng.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
import org.wso2.carbon.analytics.test.osgi.util.HTTPResponseMessage;
import org.wso2.carbon.analytics.test.osgi.util.TestConstants;
import org.wso2.carbon.analytics.test.osgi.util.TestUtil;
import org.wso2.carbon.container.CarbonContainerFactory;
import org.wso2.carbon.kernel.CarbonServerInfo;
import org.wso2.carbon.siddhi.store.api.rest.ApiResponseMessage;
import org.wso2.carbon.siddhi.store.api.rest.model.ModelApiResponse;
import org.wso2.carbon.siddhi.store.api.rest.model.Query;
import org.wso2.carbon.streaming.integrator.common.EventStreamService;
import org.wso2.carbon.streaming.integrator.common.SiddhiAppRuntimeService;
import org.wso2.msf4j.MicroservicesRegistry;
import org.wso2.siddhi.core.event.Event;

import java.net.URI;
import java.nio.file.Path;
import java.nio.file.Paths;
import javax.inject.Inject;
import javax.ws.rs.core.Response;

import static org.awaitility.Awaitility.await;
import static org.wso2.carbon.container.options.CarbonDistributionOption.carbonDistribution;
import static org.wso2.carbon.container.options.CarbonDistributionOption.copyFile;
import static org.wso2.carbon.container.options.CarbonDistributionOption.debug;

@Listeners(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
@ExamFactory(CarbonContainerFactory.class)
public class SiddhiStoreAPITestcase {
    private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(SiddhiStoreAPITestcase.class);
    private static final String APP_NAME = "StoreApiTest";
    private static final String SIDDHI_EXTENSION = ".siddhi";
    private static final String STORE_API_BUNDLE_NAME = "org.wso2.carbon.siddhi.store.api.rest";
    private static final int HTTP_PORT = 7070;
    private static final String HOSTNAME = TestConstants.HOSTNAME_LOCALHOST;
    private static final String API_CONTEXT_PATH = "/stores/query";
    private static final String CONTENT_TYPE_JSON = TestConstants.CONTENT_TYPE_JSON;
    private static final String HTTP_METHOD_POST = TestConstants.HTTP_METHOD_POST;
    private static final String TABLENAME = "SmartHomeTable";
    private final String DEFAULT_USER_NAME = TestConstants.DEFAULT_USERNAME;
    private final String DEFAULT_PASSWORD = TestConstants.DEFAULT_PASSWORD;
    private final Gson gson = new Gson();

    @Inject
    private SiddhiAppRuntimeService siddhiAppRuntimeService;

    @Inject
    private EventStreamService eventStreamService;

    @Inject
    private MicroservicesRegistry microservicesRegistry;

    @Inject
    private CarbonServerInfo carbonServerInfo;

    @Inject
    private BundleContext bundleContext;

    @Configuration
    public Option[] createConfiguration() {
        log.info("Running - " + this.getClass().getName());
        return new Option[]{
                copySiddhiFileOption(),
                carbonDistribution(
                        Paths.get("target", "wso2-streaming-integrator-" + System.getProperty("carbon.analytic.version")),
                        "server")
        };
    }

    /**
     * Copy Siddhi file to deployment directory in runtime.
     */
    private Option copySiddhiFileOption() {
        Path carbonYmlFilePath;
        String basedir = System.getProperty("basedir");
        if (basedir == null) {
            basedir = Paths.get(".").toString();
        }
        carbonYmlFilePath = Paths.get(basedir, "src", "test", "resources", "deployment", "siddhi-files",
                APP_NAME + SIDDHI_EXTENSION);
        return copyFile(carbonYmlFilePath, Paths.get("wso2", "server", "deployment", "siddhi-files",
                APP_NAME + SIDDHI_EXTENSION));
    }

    private Bundle getBundle(String name) {
        Bundle bundle = null;
        for (Bundle b : bundleContext.getBundles()) {
            if (b.getSymbolicName().equals(name)) {
                bundle = b;
                break;
            }
        }
        Assert.assertNotNull(bundle, "Bundle should be available. Name: " + name);
        return bundle;
    }

    @Test
    public void testStoreApiBundle() {
        Bundle coreBundle = getBundle(STORE_API_BUNDLE_NAME);
        Assert.assertEquals(coreBundle.getState(), Bundle.ACTIVE);
    }

    private void testStoreAPI(String app, String strQuery, Event[] events, Response.Status expectedStatus, String
            expectedResponse)
            throws
            InterruptedException {
        Query query = new Query();
        query.setAppName(app);
        query.setQuery(strQuery);
        testQuery(gson.toJson(query), events, expectedStatus.getStatusCode(), expectedResponse);
    }

    private void testQuery(String body, Event[] events, int expectedResponseCode, String expectedResponse) throws
            InterruptedException {
        TestUtil.waitForAppDeployment(siddhiAppRuntimeService, eventStreamService, APP_NAME, Duration.TEN_SECONDS);
        for (Event event : events) {
            eventStreamService.pushEvent(APP_NAME, "SmartHomeData", event);
        }
        testHttpResponse(body, events, expectedResponseCode, expectedResponse, HOSTNAME, HTTP_PORT,
                Duration.TEN_SECONDS);
    }

    private void testHttpResponse(String body, Event[] inputEvents, int expectedResponseCode, String expectedResponse,
                                  String hostname, int port, Duration duration) {
        URI baseURI = URI.create(String.format("http://%s:%d", hostname, port));
        await().atMost(duration).until(() -> {
            HTTPResponseMessage httpResponseMessage =
                    sendHRequest(body, baseURI, API_CONTEXT_PATH, CONTENT_TYPE_JSON, HTTP_METHOD_POST,
                            true, DEFAULT_USER_NAME, DEFAULT_PASSWORD);
            if (expectedResponseCode == Response.Status.OK.getStatusCode()) {
                ModelApiResponse response =
                        gson.fromJson(httpResponseMessage.getSuccessContent().toString(), ModelApiResponse.class);
                if (httpResponseMessage.getResponseCode() == expectedResponseCode &&
                        httpResponseMessage.getContentType().equalsIgnoreCase(CONTENT_TYPE_JSON) &&
                        response.getRecords().size() == inputEvents.length) {
                    Assert.assertEquals(response.getRecords().size(), inputEvents.length);
                    return true;
                }
            } else {
                Assert.assertEquals(httpResponseMessage.getResponseCode(), expectedResponseCode);
                ApiResponseMessage response =
                        gson.fromJson(httpResponseMessage.getErrorContent().toString(), ApiResponseMessage.class);
                Assert.assertEquals(response.getMessage(), expectedResponse);
                return true;
            }
            return false;
        });
    }

    @Test(dependsOnMethods = "testStoreApiBundle")
    public void testSelectAllWithSuccessResponse() throws InterruptedException {
        Event[] events = new Event[]{
                new Event(System.currentTimeMillis(), new Object[]{
                        "recordId1", 10.34f, false, 1200, 300, 400, "2017-11-22"}),
                new Event(System.currentTimeMillis(), new Object[]{
                        "recordId2", 11.34f, false, 1300, 600, 100, "2017-11-23"}),
                new Event(System.currentTimeMillis(), new Object[]{
                        "recordId3", 12.34f, false, 1400, 500, 200, "2017-11-26"})};
        testStoreAPI(APP_NAME, "from " + TABLENAME + " select *", events, Response.Status.OK, null);

    }

    @Test(dependsOnMethods = "testSelectAllWithSuccessResponse")
    public void testConditionalSelectWithSuccessResponse() throws InterruptedException {
        Event[] events = new Event[]{
                new Event(System.currentTimeMillis(), new Object[]{
                        "recordId4", 10.34f, false, 1200, 300, 100, "2017-11-22"})
        };
        testStoreAPI(APP_NAME, "from " + TABLENAME + " select * having houseId==100 and recordId=='recordId4'",
                events, Response.Status.OK, null);
    }

    @Test(dependsOnMethods = "testConditionalSelectWithSuccessResponse")
    public void testNonExistentSiddhiApp() throws InterruptedException {
        testStoreAPI("SomeOtherStupidApp", "from " + TABLENAME + " select *", new Event[]{},
                Response.Status.NOT_FOUND, "Cannot find an active SiddhiApp with name: SomeOtherStupidApp");
    }

    @Test(dependsOnMethods = "testNonExistentSiddhiApp")
    public void testNonExistentTable() throws InterruptedException {
        testStoreAPI(APP_NAME, "from SomeOtherTable select *", new Event[]{}, Response.Status.INTERNAL_SERVER_ERROR,
                "Cannot query: SomeOtherTable is neither a table, aggregation or window");
    }

    @Test(dependsOnMethods = "testNonExistentTable")
    public void testEmptyAppName() throws InterruptedException {
        testStoreAPI("", "from " + TABLENAME + " select *", new Event[]{}, Response.Status.BAD_REQUEST,
                "Siddhi app name cannot be empty or null");
    }

    @Test(dependsOnMethods = "testNonExistentTable")
    public void testNullAppName() throws InterruptedException {
        testStoreAPI(null, "from " + TABLENAME + " select *", new Event[]{}, Response.Status.BAD_REQUEST,
                "Siddhi app name cannot be empty or null");
    }

    @Test(dependsOnMethods = "testNonExistentTable")
    public void testEmptyQuery() throws InterruptedException {
        testStoreAPI(APP_NAME, "", new Event[]{}, Response.Status.BAD_REQUEST,
                "Query cannot be empty or null");
    }

    @Test(dependsOnMethods = "testNonExistentTable")
    public void testNullQuery() throws InterruptedException {
        testStoreAPI(APP_NAME, null, new Event[]{}, Response.Status.BAD_REQUEST,
                "Query cannot be empty or null");
    }

    private HTTPResponseMessage sendHRequest(String body, URI baseURI, String path, String contentType,
                                             String methodType, Boolean auth, String userName, String password) {
        TestUtil testUtil = new TestUtil(baseURI, path, auth, false, methodType,
                contentType, userName, password);
        testUtil.addBodyContent(body);
        return testUtil.getResponse();
    }

}

redpajama_set_name: RedPajamaGithub


text:
angular.module('medekApp.services').service('ArtistService', [
'$http',
'$rootScope',
function($http, $rootScope) {
    this.artists = function() {
        return $http.get('services/artists');
    };

    this.artist = function(id) {
        return $http.get('services/artists/'+id);
    };

    this.saveArtist = function(artist) {
        return $http.post('services/artists', artist);
    };
} ]);


text:
<?xml version="1.0" encoding="UTF-8"?><concept xmlns="http://www.w3.org/2004/02/skos/core#">
      <prefLabel>AMORTIZATION</prefLabel>
      <definition>Process of the gradual retirement of an outstanding debt by making periodic
         payments to the trust fund.</definition>
   </concept>


text:
import { Component, OnChanges, OnDestroy, SimpleChanges, Input } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Subscription } from 'rxjs/Subscription';
import { Subject } from 'rxjs/Subject';
import 'rxjs/add/observable/of';

import { Exam } from '../shared/exam';
import { QuestionTimeline } from '../shared/question-timeline';
import { Fail } from '../shared/fail';
import { ApiQuestionTimelineService } from '../core/services/api-question-timeline.service';

@Component({
    selector: 'question-detail-embedded',
    template: `<question-detail [questionModule]="questionModule" [exam]="exam" [date]="date" [qTimeline]="qTimeline"></question-detail>`,
})
export class QuestionDetailEmbeddedComponent implements OnDestroy, OnChanges{
  @Input() questionModule: string;
  @Input() exam: Exam;
  @Input() date: string;

  // public properties
  @Input() qTimeline: QuestionTimeline;

  // private properties
  private qTimelineSource: Subject<Observable<QuestionTimeline>>;
  private qTimelineSubscription: Subscription;

  constructor(
    private apiQuestionTimelineService: ApiQuestionTimelineService,
  ){ };

  initQTimelineSource() {
    this.qTimelineSource = new Subject<Observable<QuestionTimeline>>();
    this.qTimelineSubscription = this.qTimelineSource
        .switchMap((o: Observable<QuestionTimeline>):Observable<QuestionTimeline> => o)
        .subscribe((q:QuestionTimeline) => this.qTimeline = q);
  };

  ngOnDestroy() {
    if (this.qTimelineSubscription) {
      this.qTimelineSubscription.unsubscribe();
    }
  };

  ngOnChanges(changes: SimpleChanges) {
    if (! this.qTimelineSource) {
      this.initQTimelineSource();
    }
    if (changes['questionModule'] && this.questionModule) {
      for (let question of this.exam.questions) {
        if (question.module == this.questionModule) {
          this.qTimelineSource.next(
            this.apiQuestionTimelineService.getTimeline(this.questionModule, {})
          );
        }
      }
    } else {
      this.qTimelineSource.next(Observable.of<QuestionTimeline>(null));
    };
  };

};


text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="da">
<context>
    <name>BMMDialog</name>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/BMMDialog.ui" line="14"/>
        <source>Manage Bookmarks</source>
        <translation>Administrér bogmærker</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/BMMDialog.ui" line="35"/>
        <source>Name</source>
        <translation>Navn</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/BMMDialog.ui" line="40"/>
        <source>Path</source>
        <translation>Sti</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/BMMDialog.ui" line="52"/>
        <source>Remove Bookmark</source>
        <translation>Fjern bogmærke</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/BMMDialog.ui" line="65"/>
        <source>Rename BookMark</source>
        <translation>Omdøb bogmærke</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/BMMDialog.ui" line="91"/>
        <source>Finished</source>
        <translation>Gennemført</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/BMMDialog.cpp" line="58"/>
        <source>Rename Bookmark</source>
        <translation>Omdøb bogmærke</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/BMMDialog.cpp" line="58"/>
        <source>Name:</source>
        <translation>Navn:</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/BMMDialog.cpp" line="64"/>
        <source>Invalid Name</source>
        <translation>Ugyldigt navn</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/BMMDialog.cpp" line="64"/>
        <source>This bookmark name already exists. Please choose another.</source>
        <translation>Dette bogmærke navn findes allerede. Vælg venligst et andet navn.</translation>
    </message>
</context>
<context>
    <name>DirWidget</name>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="20"/>
        <source>Form</source>
        <translation>Formular</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="246"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="249"/>
        <source>Open item</source>
        <translation>Åbn element</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="271"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="274"/>
        <source>Open item (select application)</source>
        <translation>Åbn element (vælg program)</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="300"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="303"/>
        <source>Add item to personal favorites</source>
        <translation>Tilføj element til personlige favoritter</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="322"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="325"/>
        <source>Rename item</source>
        <translation>Omdøb element</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="351"/>
        <source>Cut items</source>
        <translation>Klip elementer</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="354"/>
        <source>Cut items (add to the clipboard)</source>
        <translation>Klip elementer (tilføj til udklipsholderen)</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="373"/>
        <source>Copy items</source>
        <translation>Kopiér elementer</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="376"/>
        <source>Copy items to the clipboard</source>
        <translation>Kopier elementer til udklipsholder</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="395"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="398"/>
        <source>Paste items from clipboard</source>
        <translation>Indsæt elementer fra udklipsholder</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="424"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="427"/>
        <source>Delete Items</source>
        <translation>Slet elementer</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="507"/>
        <source>Stop loading the directory</source>
        <translation>Stop indlæsning af mappe</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="90"/>
        <source>Add selected images to slideshow</source>
        <translation>Tilføj valgte billeder til et slideshow</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="77"/>
        <source>Create a new directory</source>
        <translation>Opret ny mappe</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="80"/>
        <source>New Dir</source>
        <translation>Ny Mappe</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="64"/>
        <source>Create a new file</source>
        <translation>Opret en ny fil</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="67"/>
        <source>New File</source>
        <translation>Ny fil</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="93"/>
        <source>Slideshow</source>
        <translation>Slideshow</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="109"/>
        <source>Enqueue selection in multimedia player</source>
        <translation>Sæt det valgte i kø i multimedie afspilleren</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="112"/>
        <source>Play</source>
        <translation>Afspil</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="465"/>
        <source>Back</source>
        <translation>Forrige</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="468"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="471"/>
        <source>Go back to previous directory</source>
        <translation>Gå til forrige mappe</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="479"/>
        <source>Up</source>
        <translation>Op</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="482"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="485"/>
        <source>Go to parent directory</source>
        <translation>Til overmappe</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="493"/>
        <source>Home</source>
        <translation>Hjem</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="496"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="499"/>
        <source>Go to home directory</source>
        <translation>Gå til hjemmemappe</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="518"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui" line="521"/>
        <source>Close this browser</source>
        <translation>Luk denne browser</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="136"/>
        <source>Name</source>
        <translation type="unfinished">Navn</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="140"/>
        <source>Size</source>
        <translation>Størrelse</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="143"/>
        <source>Type</source>
        <translation>Type</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="147"/>
        <source>Date Modified</source>
        <translation>Ændringsdato</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="150"/>
        <source>Date Created</source>
        <translation>Oprettelsesdato</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="207"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="484"/>
        <source>(Limited Access) </source>
        <translation>(Begrænset Adgang)</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="469"/>
        <source>Capacity: %1</source>
        <translation>Kapacitet: %1</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="474"/>
        <source>Files: %1 (%2)</source>
        <translation>Filer: %1 (%2)</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="479"/>
        <source>Dirs: %1</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="781"/>
        <source>New Document</source>
        <translation>Nyt dokument</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="781"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="802"/>
        <source>Name:</source>
        <translation>Navn:</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="792"/>
        <source>Error Creating Document</source>
        <translation>Kunne ikke oprette dokument</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="792"/>
        <source>The document could not be created. Please ensure that you have the proper permissions.</source>
        <translation>Dokumentet kunne ikke oprettes. Sørg venligst for at du har de korrekte tilladelser.</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="802"/>
        <source>New Directory</source>
        <translation>Ny mappe</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="812"/>
        <source>Invalid Name</source>
        <translation>Ugyldigt navn</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="812"/>
        <source>A file or directory with that name already exists! Please pick a different name.</source>
        <translation>En fil eller mappe med det samme navn eksisterer allerede. Vælg venligst et andet navn.</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="816"/>
        <source>Error Creating Directory</source>
        <translation>Fejl ved oprettelse af mappe</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="816"/>
        <source>The directory could not be created. Please ensure that you have the proper permissions to modify the current directory.</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="839"/>
        <source>Current</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="949"/>
        <source>File Checksums:</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="966"/>
        <source>Missing Utility</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="966"/>
        <source>The "lumina-fileinfo" utility could not be found on the system. Please install it first.</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="984"/>
        <source>Open</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="985"/>
        <source>Open With...</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="987"/>
        <source>Rename...</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="988"/>
        <source>View Checksums...</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="999"/>
        <source>File Properties...</source>
        <translation>Filegenskaber...</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="992"/>
        <source>Cut Selection</source>
        <translation>Klip valgte</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="993"/>
        <source>Copy Selection</source>
        <translation>Kopiér valgte</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="994"/>
        <source>Paste</source>
        <translation>Indsæt</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="996"/>
        <source>Delete Selection</source>
        <translation>Slet valgte</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp" line="1002"/>
        <source>Open Terminal here</source>
        <translation>Åben terminal her</translation>
    </message>
</context>
<context>
    <name>FODialog</name>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.ui" line="14"/>
        <source>Performing File Operations</source>
        <translation>Udfører fil operationer</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.ui" line="39"/>
        <source>%v/%m</source>
        <translation>%v/%m</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.ui" line="74"/>
        <source>Stop</source>
        <translation>Stop</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="19"/>
        <source>Calculating</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="131"/>
        <source>Overwrite Files?</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="131"/>
        <source>Do you want to overwrite the existing files?</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="131"/>
        <source>Note: It will just add a number to the filename otherwise.</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="148"/>
        <source>Removing: %1</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="149"/>
        <source>Copying: %1 to %2</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="150"/>
        <source>Restoring: %1 as %2</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="151"/>
        <source>Moving: %1 to %2</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="164"/>
        <source>Could not remove these files:</source>
        <translation>Kunne ikke fjerne disse filer:</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="165"/>
        <source>Could not copy these files:</source>
        <translation>Kunne ikke kopiere disse filer:</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="166"/>
        <source>Could not restore these files:</source>
        <translation>Kunne ikke genskabe disse filer:</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="167"/>
        <source>Could not move these files:</source>
        <translation>Kunne ikke flytte disse filer:</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="169"/>
        <source>File Errors</source>
        <translation>Filfejl</translation>
    </message>
</context>
<context>
    <name>FOWorker</name>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="320"/>
        <source>Invalid Move</source>
        <translation>Ugyldigt træk.</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/FODialog.cpp" line="320"/>
        <source>It is not possible to move a directory into itself. Please make a copy of the directory instead.

Old Location: %1
New Location: %2</source>
        <translation>Det er ikke muligt at flytte en mappe ind i sig selv. Lav venligst en kopi af mappen istedet.

Gl. lokation: %1
Ny lokation: %2</translation>
    </message>
</context>
<context>
    <name>MainUI</name>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="14"/>
        <source>Insight</source>
        <translation>Indsigt</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="95"/>
        <source>Shift+Left</source>
        <translation type="unfinished">Skift+venstre</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="96"/>
        <source>Shift+Right</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="114"/>
        <source>File</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="126"/>
        <source>View</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="130"/>
        <source>View Mode</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="136"/>
        <source>Group Mode</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="154"/>
        <source>Bookmarks</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="162"/>
        <source>External Devices</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="169"/>
        <source>Edit</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="188"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="191"/>
        <source>New Browser</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="267"/>
        <source>Search Directory...</source>
        <translation>Søg i bibliotek...</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="300"/>
        <source>Increase Icon Size</source>
        <translation>Forøg ikonstørrelse</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="305"/>
        <source>Decrease Icon Size</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="310"/>
        <source>Larger Icons</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="313"/>
        <source>Ctrl++</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="321"/>
        <source>Smaller Icons</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="324"/>
        <source>Ctrl+-</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="332"/>
        <source>New Window</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="335"/>
        <source>Ctrl+N</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="343"/>
        <source>Add Bookmark</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="346"/>
        <source>Ctrl+D</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="398"/>
        <source>Delete Selection</source>
        <translation type="unfinished">Slet valgte</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="401"/>
        <source>Del</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="409"/>
        <source>Refresh</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="420"/>
        <source>Close Browser</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="194"/>
        <source>Ctrl+T</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="202"/>
        <source>Exit</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="205"/>
        <source>Ctrl+Q</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="213"/>
        <source>&Preferences</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="224"/>
        <source>Show Hidden Files</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="229"/>
        <source>Scan for Devices</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="237"/>
        <source>Manage Bookmarks</source>
        <translation type="unfinished">Administrér bogmærker</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="251"/>
        <source>Show Action Buttons</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="262"/>
        <source>Load Thumbnails</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="270"/>
        <source>Ctrl+F</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="66"/>
        <source>Detailed List</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="67"/>
        <source>Basic List</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="423"/>
        <source>Ctrl+W</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="68"/>
        <source>Prefer Tabs</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="69"/>
        <source>Prefer Columns</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="412"/>
        <source>F5</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="379"/>
        <source>Ctrl+C</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="354"/>
        <source>Rename...</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="357"/>
        <source>F2</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="365"/>
        <source>Cut Selection</source>
        <translation type="unfinished">Klip valgte</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="376"/>
        <source>Copy Selection</source>
        <translation type="unfinished">Kopiér valgte</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="387"/>
        <source>Paste</source>
        <translation type="unfinished">Indsæt</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="390"/>
        <source>Ctrl+V</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.ui" line="368"/>
        <source>Ctrl+X</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="196"/>
        <source>Invalid Directories</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="196"/>
        <source>The following directories are invalid and could not be opened:</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="335"/>
        <source>Root</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="341"/>
        <source>%1 (Type: %2)</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="345"/>
        <source>Filesystem: %1</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="566"/>
        <source>Browser</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="593"/>
        <source>New Bookmark</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="593"/>
        <source>Name:</source>
        <translation type="unfinished">Navn:</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="598"/>
        <source>Invalid Name</source>
        <translation type="unfinished">Ugyldigt navn</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="598"/>
        <source>This bookmark name already exists. Please choose another.</source>
        <translation type="unfinished">Dette bogmærke navn findes allerede. Vælg venligst et andet navn.</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="705"/>
        <source>Multimedia</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="723"/>
        <source>Slideshow</source>
        <translation type="unfinished">Slideshow</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="900"/>
        <source>Items to be removed:</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="422"/>
        <source>Verify Quit</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="97"/>
        <source>Ctrl+H</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="98"/>
        <source>Ctrl+L</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="422"/>
        <source>You have multiple tabs open. Are you sure you want to quit?</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="899"/>
        <source>Verify Removal</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="899"/>
        <source>WARNING: This will permanently delete the file(s) from the system!</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="899"/>
        <source>Are you sure you want to continue?</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="860"/>
        <source>Rename File</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="860"/>
        <source>New Name:</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="874"/>
        <source>Overwrite File?</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/MainUI.cpp" line="874"/>
        <source>An existing file with the same name will be replaced. Are you sure you want to proceed?</source>
        <translation type="unfinished"></translation>
    </message>
</context>
<context>
    <name>MultimediaWidget</name>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.ui" line="14"/>
        <source>Form</source>
        <translation type="unfinished">Formular</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.ui" line="28"/>
        <source>Go To Next</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.ui" line="107"/>
        <source>(No Running Video)</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.cpp" line="124"/>
        <source>Playing:</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.cpp" line="130"/>
        <source>Stopped</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.cpp" line="157"/>
        <source>Error Playing File: %1</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.cpp" line="168"/>
        <source>Finished</source>
        <translation type="unfinished">Gennemført</translation>
    </message>
</context>
<context>
    <name>SlideshowWidget</name>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="14"/>
        <source>Form</source>
        <translation type="unfinished">Formular</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="36"/>
        <source>Delete this image file</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="56"/>
        <source>Rotate this image file counter-clockwise</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="69"/>
        <source>Rotate this image file clockwise</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="89"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="92"/>
        <source>Zoom in</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="105"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="108"/>
        <source>Zoom out</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="212"/>
        <source>Go to Beginning</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="215"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="231"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="304"/>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="320"/>
        <source>...</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="218"/>
        <source>Shift+Left</source>
        <translation type="unfinished">Skift+venstre</translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="228"/>
        <source>Go to Previous</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="234"/>
        <source>Left</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="267"/>
        <source>File Name</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="301"/>
        <source>Go to Next</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="307"/>
        <source>Right</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="317"/>
        <source>Go to End</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui" line="323"/>
        <source>Shift+Right</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.cpp" line="125"/>
        <source>Verify Removal</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.cpp" line="125"/>
        <source>WARNING: This will permanently delete the file from the system!</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="../../lumina-git/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.cpp" line="125"/>
        <source>Are you sure you want to continue?</source>
        <translation type="unfinished"></translation>
    </message>
</context>
</TS>


text:
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
          Toggle navigation

        </button>
        Book Save

        <form name="form" ng-submit="signup(username, password)" class="navbar-form navbar-right">

            <input type="text" placeholder="Username" class="form-control"
            name="username"
            ng-model="username"
            required>

            <input type="password" placeholder="Password" class="form-control"
            name="password"
            ng-model="password"
            required>

            <button type="submit" ng-disabled="form.$invalid" class="btn btn-link">Sign Up</button>
            Have an account?
        </form>

Book Save

Search. Save. Add to Cart. Review. Share. Welcome to Book Save!

            Sign in or register an account

          Search by book title and

          save to your personal shelf

          View your shelf and add saved books

          to your shopping cart for secure checkout!

2017 Book Save


text:
/* 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.
 */
package org.flowable.bpmn.converter.parser;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.xml.stream.XMLStreamReader;

import org.apache.commons.lang3.StringUtils;
import org.flowable.bpmn.constants.BpmnXMLConstants;
import org.flowable.bpmn.converter.XMLStreamReaderUtil;
import org.flowable.bpmn.model.Process;

/**
 * @author Tijs Rademakers
 */
public class PotentialStarterParser implements BpmnXMLConstants {

    public void parse(XMLStreamReader xtr, Process activeProcess) throws Exception {
        String resourceElement = XMLStreamReaderUtil.moveDown(xtr);
        if (StringUtils.isNotEmpty(resourceElement) && "resourceAssignmentExpression".equals(resourceElement)) {
            String expression = XMLStreamReaderUtil.moveDown(xtr);
            if (StringUtils.isNotEmpty(expression) && "formalExpression".equals(expression)) {
                List<String> assignmentList = new ArrayList<>();
                String assignmentText = xtr.getElementText();
                if (assignmentText.contains(",")) {
                    String[] assignmentArray = assignmentText.split(",");
                    assignmentList = Arrays.asList(assignmentArray);
                } else {
                    assignmentList.add(assignmentText);
                }
                for (String assignmentValue : assignmentList) {
                    if (assignmentValue == null)
                        continue;
                    assignmentValue = assignmentValue.trim();
                    if (assignmentValue.length() == 0)
                        continue;

                    String userPrefix = "user(";
                    String groupPrefix = "group(";
                    if (assignmentValue.startsWith(userPrefix)) {
                        assignmentValue = assignmentValue.substring(userPrefix.length(), assignmentValue.length() - 1).trim();
                        activeProcess.getCandidateStarterUsers().add(assignmentValue);
                    } else if (assignmentValue.startsWith(groupPrefix)) {
                        assignmentValue = assignmentValue.substring(groupPrefix.length(), assignmentValue.length() - 1).trim();
                        activeProcess.getCandidateStarterGroups().add(assignmentValue);
                    } else {
                        activeProcess.getCandidateStarterGroups().add(assignmentValue);
                    }
                }
            }
        }
    }
}


text:
<TITLE>Review for Real Blonde, The (1997)</TITLE>
<LINK REL="STYLESHEET" TYPE="text/css" HREF="/ramr.css">

Real Blonde, The (1997)

reviewed by
James Berardinelli

THE REAL BLONDE

A Film Review by James Berardinelli

RATING: *** OUT OF ****

United States, 1998
U.S. Release Date: beginning 2/27/98 (limited)
Running Length: 1:30
MPAA Classification: R (profanity, sexual situations)
Theatrical Aspect Ratio: 1.85:1

Cast: Matthew Modine, Catherine Keener, Maxwell Caulfield,
      Bridgette Wilson, Daryl Hannah, Elizabeth Berkley, Marlo Thomas,
      Christopher Lloyd
Director: Tom DiCillo
Producers: Tom Rosenberg and Marcus Viscidi
Screenplay: Tom DiCillo
Cinematography: Frank Prinzi
Music: Jim Farmer
U.S. Distributor: Paramount Pictures

     With THE REAL BLONDE, director Tom DiCillo places another
interesting title onto a diverse resume which already includes JOHNNY
SUEDE, LIVING IN OBLIVION, and BOX OF MOONLIGHT.  THE REAL BLONDE, which
examines the difference between illusion and reality, and satirizes the
acting industry, is easily the lightest of DiCillo's films, and,
although the seams in the plot are visible (the movie plays best as a
series of loosely-connected comic vignettes), there's enough light
substance and lighter humor to warrant a recommendation.

     The principals are Joe (Matthew Modine) and Bob (Maxwell
Caulfield), a pair of out-of-work actors who are making a living waiting
tables for the ever-stern Ernst (Christopher Lloyd).  Joe believes in
the purity of his craft – the only kinds of acting jobs he's interested
in are "serious" ones.  His resolve is tested, however, when Bob gets a
plum role on the soap opera PASSION CREST.  There's nothing remotely
respectable about the part, but it offers Bob a regular income of $3600
per week and turns him into an overnight heartthrob.  Suddenly, a
jealous Joe, with some prodding from his live-in girlfriend, Mary
(Catherine Keener), decides that if he's going to be an actor, he's
going to have to compromise his values.  So he goes to his agent
(Kathleen Turner) and tells her he's willing to do anything – even a TV
commercial or a music video.

     The title comes from an obsession of Bob's – for him, Ms. Right has
to be a "real blonde."  His on-again, off-again girlfriend, insecure
supermodel Sahara (Bridgette Wilson), is a sweet, gorgeous girl, but
she's got a dye job.  Bob finds what he thinks he wants in Kelly (Daryl
Hannah), his leading lady on the soap.  He soon learns, however, that
just because a woman really has blond hair doesn't mean that there's
nothing artificial about her personality.

     One aspect of American culture that THE REAL BLONDE successful
captures (and skewers) is the hollowness of what we're exposed to
through the media.  Image and fantasy are everything; reality is
valueless.  Bob is obsessed with a "real blonde" because he's tired of
fake women – the irony is that he's just as artificial as any of the
girls he goes out with.  Meanwhile, Joe complains that "everyone around
me is false, so I'm constantly lowering my ideals."  Photo shoots are
exposed as far more grueling and unpleasant than the sexy, glossy images
would indicate.  And a Madonna music video features a body double
(Elizabeth Berkley) lip-synching the words.  What's authentic in an
industry of make-believe?

     The acting is a mixed bag.  Matthew Modine is decidedly unappealing
as Joe, and, since we're supposed to sympathize with him (even though
he's a whiner), this is a source of minor irritation.  On the other
hand, Catherine Keener (who has appeared in all of DiCillo's films) is
luminous.  Mary is down-to-earth and likable, which helps compensate for
the lack in Modine's performance.  Max Caulfield and Bridgette Wilson
give effectively comic turns as shallow people.  Daryl Hannah, not known
as an actress of great range, is also surprisingly good, perhaps in part
because she's essentially lampooning an image of herself.  There are
also a number of cameos:  Christopher Lloyd, Denis Leary, Kathleen
Turner, Steve Buscemi, Buck Henry, and Marlo Thomas.

     Of course, while THE REAL BLONDE has a message, that's not its most
noteworthy aspect.  The comedy in the film, which varies from clever and
insightful ("Empty V" – say that aloud) to downright silly (Joe's
bathing suit), frequently works.  I especially loved a scene in which
just about everyone in a restaurant contributes to a deconstruction of
THE PIANO.  That sequence alone is almost worth the price of admission.
Overall, however, THE REAL BLONDE would have been even more satisfying
if it had seemed like a coherent whole rather than a batch of skits
loosely connected by DiCillo's story arc of a struggling actor trying to
remain true to both his calling and the woman he loves.  Nevertheless,
in part because of Keener's appeal and in part because DiCillo gets his
point across with a successful portion of humor, THE REAL BLONDE is
enjoyable and inviting.

Copyright 1998 James Berardinelli

- James Berardinelli
e-mail: berardin@mail.cybernex.net

Now with more than 1400 reviews...
The ReelViews web site: http://movie-reviews.colossus.net/

"My belief is that no movie, nothing in life, leaves people neutral. You
either leave them up or you leave them down."

-- David Puttnam

The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).

The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.

Please direct comments/criticisms of the review to relevant newsgroups.

Broken URLs inthe reviews are the responsibility of the author.

The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.

Related links: index of all rec.arts.movies.reviews reviews


text:
Stanford CoreNLP tutorial
================
### Stanford NLP 是什么?
斯坦福CoreNLP是一个Java自然语言分析库,它集成了所有的自然语言处理工具,包括词性的终端(POS)标注器,命名实体识别(NER),分析器,对指代消解系统,以及情感分析工具,并提供英语分析的模型文件。

Stanford parser是stanford nlp小组提供的一系列工具之一,能够用来完成语法分析任务。支持英文、中文、德文、法文、阿拉伯文等多种语言。

Question
### 1. CoreNLP有哪几方面功能?
也就是有哪些Annotators  http://stanfordnlp.github.io/CoreNLP/annotators.html

- tokenize,  分词 Tokenizes the text into a sequence of tokens. The tokenizer saves the character offsets of each token in the input text.
- cleanxml, 清理 xml 标签 Remove xml tokens from the document
- ssplit,  将文本分句  Splits a sequence of tokens into sentences.
- truecase:判断正确的大小写应该是什么样的 Determines the likely true case of tokens in text?
- pos, 词性标注 Labels tokens with their part-of-speech (POS) tag
- lemma, 获取词原型
- gender:根据名字判断性别 Adds likely gender information to names.
- ner(Named Entity Recognition): 命名实体识别,识别出某个词是人名,地名,组织名,时间等等 Recognizes named (PERSON, LOCATION, ORGANIZATION, MISC) and numerical (MONEY, NUMBER, DATE, TIME, DURATION, SET) entities.
- parse: Provides full syntactic analysis, including both constituent and dependency representation,
- dcoref:  指代消解 Implements mention detection and both pronominal and nominal coreference resolution
- sentiment:情感分析 Sentiment analysis with a compositional model over trees using deep learning
- regexner:用正则表达式实现命名实体识别 Implements a simple, rule-based NER over token sequences building on Java regular expressions.

哪些方式指定参数:
 1. 配置文件:
    props.setProperty("tokenize.whitespace", "true");
    props.setProperty("ssplit.eolonly", "true");
 2. 命令行 command Line:
    -tokenize.whitespace -ssplit.eolonly
 3. 代码中指定:
     props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref");

### 2. CoreNLP API 怎么使用,哪些参数?
http://stanfordnlp.github.io/CoreNLP/api.html


text:
{-# LANGUAGE OverloadedStrings #-}
module Da.Http (fetchLinks) where

import Control.Applicative ((<$>))
import Control.Monad.IO.Class
import qualified Control.Exception    as E
import qualified Data.ByteString      as B
import qualified Data.ByteString.Lazy as BL
import Data.Text (Text, unpack)
import Data.Text.Encoding
import Network.HTTP.Enumerator
import Network.HTTP.Types (ResponseHeaders)
import System.IO
import Text.HTML.TagSoup

fetchLinks :: Text -> IO [Tag Text]
fetchLinks url = (filterLinksOnly . parseTags) <$> E.catch (downloadPage url) (anyIoError url)

anyIoError :: Text -> E.IOException -> IO Text
anyIoError url e = do
  hPutStrLn stderr ("Warning: Couldn't fetch " ++(show url)++ ": " ++ (show e))
  return ""

downloadPage :: MonadIO m => Text -> m Text
downloadPage url = do
  url' <- liftIO $ parseUrl (unpack url)
  r <- liftIO $ withManager $ httpLbsRedirect $ url' { decompress = browserDecompress }
  return (body r)

body :: Response -> Text
body (Response sc h b) =
  if (contentIsHtml h) && 200 <= sc && sc < 300
    then decodeUtf8 $ toStrict b
    else ""

toStrict :: BL.ByteString -> B.ByteString
toStrict = B.concat . BL.toChunks

contentIsHtml :: ResponseHeaders -> Bool
contentIsHtml hs = snd ((filter contentType hs) !! 0) == "text/html" where
  contentType = ((==) "Content-Type") . fst

filterLinksOnly :: [Tag Text] -> [Tag Text]
filterLinksOnly tags = filter isLink tags
  where
    isLink (TagOpen "a" _) = True
    isLink _               = False


text:
<?php

namespace Kunstmaan\AdminBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;

/**
 * RoleType defines the form used for {@link Role}
 */
class RoleType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('role', TextType::class, [
            'required' => true,
            'label' => 'settings.role.role',
        ]);
    }

    /**
     * @return string
     */
    public function getBlockPrefix()
    {
        return 'role';
    }
}


text:
package com.hazelcast.cp.internal.datastructures.atomicref;

import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.cp.CPGroup;
import com.hazelcast.cp.CPGroup.CPGroupStatus;
import com.hazelcast.cp.CPGroupId;
import com.hazelcast.cp.IAtomicReference;
import com.hazelcast.cp.exception.CPGroupDestroyedException;
import com.hazelcast.cp.internal.RaftInvocationManager;
import com.hazelcast.cp.internal.raftop.metadata.GetRaftGroupOp;
import com.hazelcast.cp.internal.raftop.metadata.TriggerDestroyRaftGroupOp;
import com.hazelcast.test.HazelcastParallelClassRunner;
import com.hazelcast.test.annotation.ParallelJVMTest;
import com.hazelcast.test.annotation.QuickTest;
import com.hazelcast.internal.util.RandomPicker;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;

import static com.hazelcast.cp.CPGroup.DEFAULT_GROUP_NAME;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.fail;

@RunWith(HazelcastParallelClassRunner.class)
@Category({QuickTest.class, ParallelJVMTest.class})
public class AtomicRefBasicTest extends AbstractAtomicRefBasicTest {

    @Override
    protected HazelcastInstance[] createInstances() {
        return newInstances(3, 3, 1);
    }

    @Override
    protected String getName() {
        return "ref@group";
    }

    @Override
    protected IAtomicReference<String> createAtomicRef(String name) {
        HazelcastInstance instance = instances[RandomPicker.getInt(instances.length)];
        return instance.getCPSubsystem().getAtomicReference(name);
    }

    @Test
    public void testCreate_withDefaultGroup() {
        IAtomicReference<String> atomicRef = createAtomicRef(randomName());
        assertEquals(DEFAULT_GROUP_NAME, getGroupId(atomicRef).getName());
    }

    @Test
    public void testRecreate_afterGroupDestroy() throws Exception {
        atomicRef.destroy();

        CPGroupId groupId = getGroupId(atomicRef);
        RaftInvocationManager invocationManager = getRaftInvocationManager(instances[0]);
        invocationManager.invoke(getRaftService(instances[0]).getMetadataGroupId(), new TriggerDestroyRaftGroupOp(groupId)).get();

        assertTrueEventually(() -> {
            CPGroup group = invocationManager.<CPGroup>invoke(getMetadataGroupId(instances[0]), new GetRaftGroupOp(groupId)).join();
            assertEquals(CPGroupStatus.DESTROYED, group.status());
        });

        try {
            atomicRef.get();
            fail();
        } catch (CPGroupDestroyedException ignored) {
        }

        atomicRef = createAtomicRef(name);
        assertNotEquals(groupId, getGroupId(atomicRef));

        atomicRef.set("str1");
    }
}


text:
cd /opt/php

echo "Installing composer..."
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

echo "Downloading dependencies using composer..."
php composer.phar install --prefer-dist --no-interaction

echo "Running tests..."
if ./vendor/bin/phpunit; then
  echo "Tests passed successfully!"
  exit 0
else
  echo "Tests failed :("
  exit 1
fi


text:
// Copyright 2015 The Bazel Authors. All rights reserved.
//
// 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.
package com.google.devtools.build.lib.rules.android;

import com.google.common.base.Preconditions;
import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Multimap;
import com.google.common.collect.MultimapBuilder;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.PlatformConfiguration;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.rules.cpp.CcInfo;
import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
import com.google.devtools.build.lib.rules.cpp.CppSemantics;
import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
import com.google.devtools.build.lib.rules.nativedeps.NativeDepsHelper;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import javax.annotation.Nullable;

/** Represents the collection of native libraries (.so) to be installed in the APK. */
@Immutable
public final class NativeLibs {
  public static final NativeLibs EMPTY = new NativeLibs(ImmutableMap.of(), null);

  private static String getLibDirName(ConfiguredTargetAndData dep) {
    BuildConfigurationValue configuration = dep.getConfiguration();
    AndroidConfiguration androidConfiguration =
        configuration.getFragment(AndroidConfiguration.class);
    String name;
    if (androidConfiguration.incompatibleUseToolchainResolution()) {
      name = configuration.getFragment(PlatformConfiguration.class).getTargetPlatform().getName();
    } else {
      // Legacy builds use the CPU as the name.
      name = androidConfiguration.getCpu();
    }

    if (androidConfiguration.isHwasan()) {
      name += "-hwasan";
    }
    return name;
  }

  public static NativeLibs fromLinkedNativeDeps(
      RuleContext ruleContext,
      ImmutableList<String> depsAttributes,
      String nativeDepsFileName,
      CppSemantics cppSemantics)
      throws InterruptedException, RuleErrorException {
    Map<String, ConfiguredTargetAndData> toolchainsByLibDir = new LinkedHashMap<>();
    for (ConfiguredTargetAndData toolchainDep :
        ruleContext.getConfiguredTargetAndDataMap().get("$cc_toolchain_split")) {
      toolchainsByLibDir.put(getLibDirName(toolchainDep), toolchainDep);
    }

    // treeKeys() means that the resulting map sorts the entries by key, which is necessary to
    // ensure determinism.
    Multimap<String, ConfiguredTargetAndData> depsByLibDir =
        MultimapBuilder.treeKeys().arrayListValues().build();
    for (String depsAttr : depsAttributes) {
      for (ConfiguredTargetAndData dep :
          ruleContext.getConfiguredTargetAndDataMap().get(depsAttr)) {
        depsByLibDir.put(getLibDirName(dep), dep);
      }
    }

    String nativeDepsLibraryBasename = null;
    Map<String, NestedSet<Artifact>> result = new LinkedHashMap<>();
    for (Map.Entry<String, Collection<ConfiguredTargetAndData>> entry :
        depsByLibDir.asMap().entrySet()) {
      ConfiguredTargetAndData toolchainDep = toolchainsByLibDir.get(entry.getKey());
      // Get the actual cc toolchain from the dependency.
      CcToolchainProvider toolchain =
          toolchainDep.getConfiguredTarget().get(CcToolchainProvider.PROVIDER);

      CcInfo ccInfo =
          AndroidCommon.getCcInfo(
              Collections2.transform(
                  entry.getValue(), ConfiguredTargetAndData::getConfiguredTarget),
              ImmutableList.of("-Wl,-soname=lib" + ruleContext.getLabel().getName()),
              ruleContext.getLabel(),
              ruleContext.getSymbolGenerator());

      Artifact nativeDepsLibrary =
          NativeDepsHelper.linkAndroidNativeDepsIfPresent(
              ruleContext, ccInfo, toolchainDep.getConfiguration(), toolchain, cppSemantics);

      NestedSetBuilder<Artifact> librariesBuilder = NestedSetBuilder.stableOrder();
      if (nativeDepsLibrary != null) {
        librariesBuilder.add(nativeDepsLibrary);
        nativeDepsLibraryBasename = nativeDepsLibrary.getExecPath().getBaseName();
      }
      librariesBuilder.addAll(
          filterUniqueSharedLibraries(
              ruleContext, nativeDepsLibrary, ccInfo.getCcLinkingContext().getLibraries()));
      NestedSet<Artifact> libraries = librariesBuilder.build();

      if (!libraries.isEmpty()) {
        result.put(entry.getKey(), libraries);
      }
    }
    if (result.isEmpty()) {
      return NativeLibs.EMPTY;
    } else if (nativeDepsLibraryBasename == null) {
      return new NativeLibs(ImmutableMap.copyOf(result), null);
    } else {
      // The native deps name file must be the only file in its directory because ApkBuilder does
      // not have an option to add a particular file to the .apk, only one to add every file in a
      // particular directory.
      Artifact nativeDepsName =
          ruleContext.getUniqueDirectoryArtifact(
              "nativedeps_filename", nativeDepsFileName, ruleContext.getBinOrGenfilesDirectory());
      ruleContext.registerAction(
          FileWriteAction.create(ruleContext, nativeDepsName, nativeDepsLibraryBasename, false));

      return new NativeLibs(ImmutableMap.copyOf(result), nativeDepsName);
    }
  }

  // Map from architecture (CPU folder to place the library in) to libraries for that CPU
  private final ImmutableMap<String, NestedSet<Artifact>> nativeLibs;
  @Nullable private final Artifact nativeLibsName;

  private NativeLibs(
      ImmutableMap<String, NestedSet<Artifact>> nativeLibs, @Nullable Artifact nativeLibsName) {
    this.nativeLibs = nativeLibs;
    this.nativeLibsName = nativeLibsName;
  }

  /**
   * Returns a map from the name of the architecture (CPU folder to place the library in) to the
   * nested set of libraries for that architecture.
   */
  public Map<String, NestedSet<Artifact>> getMap() {
    return nativeLibs;
  }

  /**
   * Returns the artifact containing the names of the native libraries or null if it does not exist.
   *
   * <p>This artifact will be put in the root directory of the .apk and can be used to load the
   * libraries programmatically without knowing their names.
   */
  @Nullable
  public Artifact getName() {
    return nativeLibsName;
  }

  private static Iterable<Artifact> filterUniqueSharedLibraries(
      RuleContext ruleContext, Artifact linkedLibrary, NestedSet<LibraryToLink> libraries) {
    Map<String, Artifact> basenames = new HashMap<>();
    Set<Artifact> artifacts = new HashSet<>();
    if (linkedLibrary != null) {
      basenames.put(linkedLibrary.getExecPath().getBaseName(), linkedLibrary);
    }
    for (LibraryToLink linkerInput : libraries.toList()) {
      if (linkerInput.getPicStaticLibrary() != null || linkerInput.getStaticLibrary() != null) {
        // This is not a shared library and will not be loaded by Android, so skip it.
        continue;
      }
      Artifact artifact = null;
      if (linkerInput.getInterfaceLibrary() != null) {
        if (linkerInput.getResolvedSymlinkInterfaceLibrary() != null) {
          artifact = linkerInput.getResolvedSymlinkInterfaceLibrary();
        } else {
          artifact = linkerInput.getInterfaceLibrary();
        }
      } else {
        if (linkerInput.getResolvedSymlinkDynamicLibrary() != null) {
          artifact = linkerInput.getResolvedSymlinkDynamicLibrary();
        } else {
          artifact = linkerInput.getDynamicLibrary();
        }
      }
      Preconditions.checkNotNull(artifact);

      if (!artifacts.add(artifact)) {
        // We have already reached this library, e.g., through a different solib symlink.
        continue;
      }
      String basename = artifact.getExecPath().getBaseName();
      Artifact oldArtifact = basenames.put(basename, artifact);
      if (oldArtifact != null) {
        // There may be name collisions in the libraries which were provided, so
        // check for this at this step.
        ruleContext.ruleError(
            "Each library in the transitive closure must have a unique basename to avoid "
                + "name collisions when packaged into an apk, but two libraries have the basename '"
                + basename
                + "': "
                + artifact.prettyPrint()
                + " and "
                + oldArtifact.prettyPrint()
                + ( oldArtifact.equals(linkedLibrary)
                    ? " (the library compiled for this target)"
                    : ""));
      }
    }
    return artifacts;
  }
}


text:
"""
Date
"""
from dateutil import parser

from rebulk.remodule import re

_dsep = r'[-/ \.]'
_dsep_bis = r'[-/ \.x]'

date_regexps = [
    re.compile(r'%s((\d{8}))%s' % (_dsep, _dsep), re.IGNORECASE),
    re.compile(r'%s((\d{6}))%s' % (_dsep, _dsep), re.IGNORECASE),
    re.compile(r'(?:^|[^\d])((\d{2})%s(\d{1,2})%s(\d{1,2}))(?:$|[^\d])' % (_dsep, _dsep), re.IGNORECASE),
    re.compile(r'(?:^|[^\d])((\d{1,2})%s(\d{1,2})%s(\d{2}))(?:$|[^\d])' % (_dsep, _dsep), re.IGNORECASE),
    re.compile(r'(?:^|[^\d])((\d{4})%s(\d{1,2})%s(\d{1,2}))(?:$|[^\d])' % (_dsep_bis, _dsep), re.IGNORECASE),
    re.compile(r'(?:^|[^\d])((\d{1,2})%s(\d{1,2})%s(\d{4}))(?:$|[^\d])' % (_dsep, _dsep_bis), re.IGNORECASE),
    re.compile(r'(?:^|[^\d])((\d{1,2}(?:st|nd|rd|th)?%s(?:[a-z]{3,10})%s\d{4}))(?:$|[^\d])' % (_dsep, _dsep),
               re.IGNORECASE)]

def valid_year(year):
    """Check if number is a valid year"""
    return 1920 <= year < 2030

def _is_int(string):
    """
    Check if the input string is an integer

    :param string:
    :type string:
    :return:
    :rtype:
    """
    try:
        int(string)
        return True
    except ValueError:
        return False

def _guess_day_first_parameter(groups):
    """
    If day_first is not defined, use some heuristic to fix it.
    It helps to solve issues with python dateutils 2.5.3 parser changes.

    :param groups: match groups found for the date
    :type groups: list of match objects
    :return: day_first option guessed value
    :rtype: bool
    """

    # If match starts with a long year, then day_first is force to false.
    if _is_int(groups[0]) and valid_year(int(groups[0][:4])):
        return False
    # If match ends with a long year, the day_first is forced to true.
    elif _is_int(groups[-1]) and valid_year(int(groups[-1][-4:])):
        return True
    # If match starts with a short year, then day_first is force to false.
    elif _is_int(groups[0]) and int(groups[0][:2]) > 31:
        return False
    # If match ends with a short year, then day_first is force to true.
    elif _is_int(groups[-1]) and int(groups[-1][-2:]) > 31:
        return True

def search_date(string, year_first=None, day_first=None):
    """Looks for date patterns, and if found return the date and group span.

    Assumes there are sentinels at the beginning and end of the string that
    always allow matching a non-digit delimiting the date.

    Year can be defined on two digit only. It will return the nearest possible
    date from today.

    >>> search_date(' This happened on 2002-04-22. ')
    (18, 28, datetime.date(2002, 4, 22))

    >>> search_date(' And this on 17-06-1998. ')
    (13, 23, datetime.date(1998, 6, 17))

    >>> search_date(' no date in here ')
    """
    for date_re in date_regexps:
        search_match = date_re.search(string)
        if not search_match:
            continue

        start, end = search_match.start(1), search_match.end(1)
        groups = search_match.groups()[1:]
        match = '-'.join(groups)

        if match is None:
            continue

        if year_first and day_first is None:
            day_first = False

        if day_first is None:
            day_first = _guess_day_first_parameter(groups)

        # If day_first/year_first is undefined, parse is made using both possible values.
        yearfirst_opts = [False, True]
        if year_first is not None:
            yearfirst_opts = [year_first]

        dayfirst_opts = [True, False]
        if day_first is not None:
            dayfirst_opts = [day_first]

        kwargs_list = ({'dayfirst': d, 'yearfirst': y}
                       for d in dayfirst_opts for y in yearfirst_opts)
        for kwargs in kwargs_list:
            try:
                date = parser.parse(match, **kwargs)
            except (ValueError, TypeError):  # pragma: no cover
                # see https://bugs.launchpad.net/dateutil/+bug/1247643
                date = None

            # check date plausibility
            if date and valid_year(date.year):  # pylint:disable=no-member
                return start, end, date.date()  # pylint:disable=no-member


text:
using System;
using System.Collections.Generic;
using System.Threading;
using System.Net;
using System.Linq;
using System.Json;
using System.Web;
using Foundation;

namespace SearchDemo
{
    public delegate void SynchronizerDelegate (List<SearchItem> results);

    public class Bing
    {
        const string AZURE_KEY = "Enter API key here";

        static SynchronizerDelegate sync;

        public Bing (SynchronizerDelegate sync)
        {
            Bing.sync = sync;
        }

        public void Search (string text)
        {
            var t = new Thread (Search);
            t.Start (text);
        }

        void Search (object text)
        {
            string bingSearch = String.Format ("https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/Web?Query=%27{0}%27&$top=10&$format=Json", text);

            var httpReq = (HttpWebRequest)HttpWebRequest.Create (new Uri (bingSearch));

            httpReq.Credentials = new NetworkCredential (AZURE_KEY, AZURE_KEY);

            try {
                using (HttpWebResponse httpRes = (HttpWebResponse)httpReq.GetResponse ()) {

                    var response = httpRes.GetResponseStream ();
                    var json = (JsonObject)JsonObject.Load (response);

                    var results = (from result in (JsonArray)json ["d"] ["results"]
                                let jResult = result as JsonObject
                                select new SearchItem { Title = jResult["Title"], Url = jResult["Url"] }).ToList ();

                    if (sync != null)
                        sync (results);
                }
            } catch (Exception) {
                if (sync != null)
                    sync (null);
            }
        }

    }
}


text:
SYNONYM

#### According to
The Catalogue of Life, 3rd January 2011

#### Published in
in Berkeley, Journal of the Royal Horticultural Society 4: 11 (1849)

#### Original name
Sphaeria quercina (Grev.) Berk.

### Remarks
null


text: sudo apt-get install --only-upgrade maas-region-controller=1.2+bzr1373+dfsg-0ubuntu1~12.04.6 -y