Wa]aaa=a>>a?a@aBaRaaaaaaaaYaaaa#a6ana*aaaBlkmkhnkok4pkqkxvvjvrvsvv؊vGvvvvX vvs7vF8 vI!vSKvOavvvvv7vvvvvv-v>vFvLvSvZvvvvFvNGvKv/v޻vvvvvL#v vVv#v:vmBvy]vB^vDT!

Accessibility

Accessibility

Global accessibility mode:
/* * Copyright (c) 2013 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ body { font-family: Arial, sans-serif; font-size: 12px; margin: 10px; min-width: 47em; padding-bottom: 65px; } img { float: left; height: 16px; padding-right: 5px; width: 16px; } .row { border-bottom: 1px solid #A0A0A0; padding: 5px; } .url { color: #A0A0A0; } // Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. cr.define('accessibility', function() { 'use strict'; // Keep in sync with view_message_enums.h var AccessibilityModeFlag = { Platform: 1 << 0, FullTree: 1 << 1 } var AccessibilityMode = { Off: 0, Complete: AccessibilityModeFlag.Platform | AccessibilityModeFlag.FullTree, EditableTextOnly: AccessibilityModeFlag.Platform, TreeOnly: AccessibilityModeFlag.FullTree } function isAccessibilityComplete(mode) { return ((mode & AccessibilityMode.Complete) == AccessibilityMode.Complete); } function requestData() { var xhr = new XMLHttpRequest(); xhr.open('GET', 'targets-data.json', false); xhr.send(null); if (xhr.status === 200) { console.log(xhr.responseText); return JSON.parse(xhr.responseText); } return []; } // TODO(aboxhall): add a mechanism to request individual and global a11y // mode, xhr them on toggle... or just re-requestData and be smarter about // ID-ing rows? function toggleAccessibility(data, element) { chrome.send('toggleAccessibility', [String(data.processId), String(data.routeId)]); var a11y_was_on = (element.textContent.match(/on/) != null); element.textContent = ' accessibility ' + (a11y_was_on ? ' off' : ' on'); var row = element.parentElement; if (a11y_was_on) { while (row.lastChild != element) row.removeChild(row.lastChild); } else { row.appendChild(document.createTextNode(' | ')); row.appendChild(createShowAccessibilityTreeElement(data, row, false)); } } function requestAccessibilityTree(data, element) { chrome.send('requestAccessibilityTree', [String(data.processId), String(data.routeId)]); } function toggleGlobalAccessibility() { chrome.send('toggleGlobalAccessibility'); document.location.reload(); // FIXME see TODO above } function initialize() { console.log('initialize'); var data = requestData(); addGlobalAccessibilityModeToggle(data['global_a11y_mode']); $('pages').textContent = ''; var list = data['list']; for (var i = 0; i < list.length; i++) { addToPagesList(list[i]); } } function addGlobalAccessibilityModeToggle(global_a11y_mode) { var full_a11y_on = isAccessibilityComplete(global_a11y_mode); $('toggle_global').textContent = (full_a11y_on ? 'on' : 'off'); $('toggle_global').setAttribute('aria-pressed', (full_a11y_on ? 'true' : 'false')); $('toggle_global').addEventListener('click', toggleGlobalAccessibility); } function addToPagesList(data) { // TODO: iterate through data and pages rows instead var id = data['processId'] + '.' + data['routeId']; var row = document.createElement('div'); row.className = 'row'; row.id = id; formatRow(row, data); row.processId = data.processId; row.routeId = data.routeId; var list = $('pages'); list.appendChild(row); } function formatRow(row, data) { if (!('url' in data)) { if ('error' in data) { row.appendChild(createErrorMessageElement(data, row)); return; } } var properties = ['favicon_url', 'name', 'url']; for (var j = 0; j < properties.length; j++) row.appendChild(formatValue(data, properties[j])); row.appendChild(createToggleAccessibilityElement(data)); if (isAccessibilityComplete(data['a11y_mode'])) { row.appendChild(document.createTextNode(' | ')); if ('tree' in data) { row.appendChild(createShowAccessibilityTreeElement(data, row, true)); row.appendChild(document.createTextNode(' | ')); row.appendChild(createHideAccessibilityTreeElement(row.id)); row.appendChild(createAccessibilityTreeElement(data)); } else { row.appendChild(createShowAccessibilityTreeElement(data, row, false)); if ('error' in data) row.appendChild(createErrorMessageElement(data, row)); } } } function formatValue(data, property) { var value = data[property]; if (property == 'favicon_url') { var faviconElement = document.createElement('img'); if (value) faviconElement.src = value; faviconElement.alt = ""; return faviconElement; } var text = value ? String(value) : ''; if (text.length > 100) text = text.substring(0, 100) + '\u2026'; // ellipsis var span = document.createElement('span'); span.textContent = ' ' + text + ' '; span.className = property; return span; } function createToggleAccessibilityElement(data) { var link = document.createElement('a', 'action-link'); link.setAttribute('role', 'button'); var full_a11y_on = isAccessibilityComplete(data['a11y_mode']); link.textContent = 'accessibility ' + (full_a11y_on ? 'on' : 'off'); link.setAttribute('aria-pressed', (full_a11y_on ? 'true' : 'false')); link.addEventListener('click', toggleAccessibility.bind(this, data, link)); return link; } function createShowAccessibilityTreeElement(data, row, opt_refresh) { var link = document.createElement('a', 'action-link'); link.setAttribute('role', 'button'); if (opt_refresh) link.textContent = 'refresh accessibility tree'; else link.textContent = 'show accessibility tree'; link.id = row.id + ':showTree'; link.addEventListener('click', requestAccessibilityTree.bind(this, data, link)); return link; } function createHideAccessibilityTreeElement(id) { var link = document.createElement('a', 'action-link'); link.setAttribute('role', 'button'); link.textContent = 'hide accessibility tree'; link.addEventListener('click', function() { $(id + ':showTree').textContent = 'show accessibility tree'; var existingTreeElements = $(id).getElementsByTagName('pre'); for (var i = 0; i < existingTreeElements.length; i++) $(id).removeChild(existingTreeElements[i]); var row = $(id); while (row.lastChild != $(id + ':showTree')) row.removeChild(row.lastChild); }); return link; } function createErrorMessageElement(data) { var errorMessageElement = document.createElement('div'); var errorMessage = data.error; errorMessageElement.innerHTML = errorMessage + ' '; var closeLink = document.createElement('a'); closeLink.href='#'; closeLink.textContent = '[close]'; closeLink.addEventListener('click', function() { var parentElement = errorMessageElement.parentElement; parentElement.removeChild(errorMessageElement); if (parentElement.childElementCount == 0) parentElement.parentElement.removeChild(parentElement); }); errorMessageElement.appendChild(closeLink); return errorMessageElement; } function showTree(data) { var id = data.processId + '.' + data.routeId; var row = $(id); if (!row) return; row.textContent = ''; formatRow(row, data); } function createAccessibilityTreeElement(data) { var treeElement = document.createElement('pre'); var tree = data.tree; treeElement.textContent = tree; return treeElement; } return { initialize: initialize, showTree: showTree }; }); document.addEventListener('DOMContentLoaded', accessibility.initialize); PNG  IHDRaRIDATx^SA 07;:usKHjtAa%81d/T8|!姜?S:[üIENDB`PNG  IHDR g PLTElZ tRNS@fkIDATxM #dFrB8&I 7ЏcU[?Me=P11v)+Q:\z`֜9 䚚c>B|LOU`pW^}\㾺VnФaQDXΑ%4aOضP6\"}KߞbJgIENDB`

Graphics Feature Status

Driver Bug Workarounds

Problems Detected

Version Information

Driver Information

Diagnostics

... loading ...
None

Log Messages

  • :
title value
// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. cr.define('gpu', function() { /** * This class provides a 'bridge' for communicating between javascript and the * browser. When run outside of WebUI, e.g. as a regular webpage, it provides * synthetic data to assist in testing. * @constructor */ function BrowserBridge() { // If we are not running inside WebUI, output chrome.send messages // to the console to help with quick-iteration debugging. this.debugMode_ = (chrome.send === undefined && console.log); if (this.debugMode_) { var browserBridgeTests = document.createElement('script'); browserBridgeTests.src = './gpu_internals/browser_bridge_tests.js'; document.body.appendChild(browserBridgeTests); } this.nextRequestId_ = 0; this.pendingCallbacks_ = []; this.logMessages_ = []; // Tell c++ code that we are ready to receive GPU Info. if (!this.debugMode_) { chrome.send('browserBridgeInitialized'); this.beginRequestClientInfo_(); this.beginRequestLogMessages_(); } } BrowserBridge.prototype = { __proto__: cr.EventTarget.prototype, applySimulatedData_: function applySimulatedData(data) { // set up things according to the simulated data this.gpuInfo_ = data.gpuInfo; this.clientInfo_ = data.clientInfo; this.logMessages_ = data.logMessages; cr.dispatchSimpleEvent(this, 'gpuInfoUpdate'); cr.dispatchSimpleEvent(this, 'clientInfoChange'); cr.dispatchSimpleEvent(this, 'logMessagesChange'); }, /** * Returns true if the page is hosted inside Chrome WebUI * Helps have behavior conditional to emulate_webui.py */ get debugMode() { return this.debugMode_; }, /** * Sends a message to the browser with specified args. The * browser will reply asynchronously via the provided callback. */ callAsync: function(submessage, args, callback) { var requestId = this.nextRequestId_; this.nextRequestId_ += 1; this.pendingCallbacks_[requestId] = callback; if (!args) { chrome.send('callAsync', [requestId.toString(), submessage]); } else { var allArgs = [requestId.toString(), submessage].concat(args); chrome.send('callAsync', allArgs); } }, /** * Called by gpu c++ code when client info is ready. */ onCallAsyncReply: function(requestId, args) { if (this.pendingCallbacks_[requestId] === undefined) { throw new Error('requestId ' + requestId + ' is not pending'); } var callback = this.pendingCallbacks_[requestId]; callback(args); delete this.pendingCallbacks_[requestId]; }, /** * Get gpuInfo data. */ get gpuInfo() { return this.gpuInfo_; }, /** * Called from gpu c++ code when GPU Info is updated. */ onGpuInfoUpdate: function(gpuInfo) { this.gpuInfo_ = gpuInfo; cr.dispatchSimpleEvent(this, 'gpuInfoUpdate'); }, /** * This function begins a request for the ClientInfo. If it comes back * as undefined, then we will issue the request again in 250ms. */ beginRequestClientInfo_: function() { this.callAsync('requestClientInfo', undefined, (function(data) { if (data === undefined) { // try again in 250 ms window.setTimeout(this.beginRequestClientInfo_.bind(this), 250); } else { this.clientInfo_ = data; cr.dispatchSimpleEvent(this, 'clientInfoChange'); } }).bind(this)); }, /** * Returns information about the currently running Chrome build. */ get clientInfo() { return this.clientInfo_; }, /** * This function checks for new GPU_LOG messages. * If any are found, a refresh is triggered. */ beginRequestLogMessages_: function() { this.callAsync('requestLogMessages', undefined, (function(messages) { if (messages.length != this.logMessages_.length) { this.logMessages_ = messages; cr.dispatchSimpleEvent(this, 'logMessagesChange'); } // check again in 250 ms window.setTimeout(this.beginRequestLogMessages_.bind(this), 250); }).bind(this)); }, /** * Returns an array of log messages issued by the GPU process, if any. */ get logMessages() { return this.logMessages_; }, }; return { BrowserBridge: BrowserBridge }; }); // Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * @fileoverview This view displays information on the current GPU * hardware. Its primary usefulness is to allow users to copy-paste * their data in an easy to read format for bug reports. */ cr.define('gpu', function() { /** * Provides information on the GPU process and underlying graphics hardware. * @constructor * @extends {cr.ui.TabPanel} */ var InfoView = cr.ui.define(cr.ui.TabPanel); InfoView.prototype = { __proto__: cr.ui.TabPanel.prototype, decorate: function() { cr.ui.TabPanel.prototype.decorate.apply(this); browserBridge.addEventListener('gpuInfoUpdate', this.refresh.bind(this)); browserBridge.addEventListener('logMessagesChange', this.refresh.bind(this)); browserBridge.addEventListener('clientInfoChange', this.refresh.bind(this)); this.refresh(); }, /** * Updates the view based on its currently known data */ refresh: function(data) { // Client info if (browserBridge.clientInfo) { var clientInfo = browserBridge.clientInfo; var commandLineParts = clientInfo.command_line.split(' '); commandLineParts.shift(); // Pop off the exe path var commandLineString = commandLineParts.join(' ') this.setTable_('client-info', [ { description: 'Data exported', value: (new Date()).toLocaleString() }, { description: 'Chrome version', value: clientInfo.version }, { description: 'Operating system', value: clientInfo.operating_system }, { description: 'Software rendering list version', value: clientInfo.blacklist_version }, { description: 'Driver bug list version', value: clientInfo.driver_bug_list_version }, { description: 'ANGLE commit id', value: clientInfo.angle_commit_id }, { description: '2D graphics backend', value: clientInfo.graphics_backend }, { description: 'Command Line Args', value: commandLineString }]); } else { this.setText_('client-info', '... loading...'); } // Feature map var featureLabelMap = { '2d_canvas': 'Canvas', 'gpu_compositing': 'Compositing', 'webgl': 'WebGL', 'multisampling': 'WebGL multisampling', 'flash_3d': 'Flash', 'flash_stage3d': 'Flash Stage3D', 'flash_stage3d_baseline': 'Flash Stage3D Baseline profile', 'texture_sharing': 'Texture Sharing', 'video_decode': 'Video Decode', 'video_encode': 'Video Encode', 'panel_fitting': 'Panel Fitting', 'rasterization': 'Rasterization', 'threaded_rasterization': 'Threaded Rasterization', 'multiple_raster_threads': 'Multiple Raster Threads', }; var statusMap = { 'disabled_software': { 'label': 'Software only. Hardware acceleration disabled', 'class': 'feature-yellow' }, 'disabled_off': { 'label': 'Disabled', 'class': 'feature-red' }, 'disabled_off_ok': { 'label': 'Disabled', 'class': 'feature-yellow' }, 'unavailable_software': { 'label': 'Software only, hardware acceleration unavailable', 'class': 'feature-yellow' }, 'unavailable_off': { 'label': 'Unavailable', 'class': 'feature-red' }, 'unavailable_off_ok': { 'label': 'Unavailable', 'class': 'feature-yellow' }, 'enabled_readback': { 'label': 'Hardware accelerated but at reduced performance', 'class': 'feature-yellow' }, 'enabled_force': { 'label': 'Hardware accelerated on all pages', 'class': 'feature-green' }, 'enabled': { 'label': 'Hardware accelerated', 'class': 'feature-green' }, 'enabled_on': { 'label': 'Enabled', 'class': 'feature-green' }, 'enabled_force_on': { 'label': 'Force enabled', 'class': 'feature-green' }, }; // GPU info, basic var diagnosticsDiv = this.querySelector('.diagnostics'); var diagnosticsLoadingDiv = this.querySelector('.diagnostics-loading'); var featureStatusList = this.querySelector('.feature-status-list'); var problemsDiv = this.querySelector('.problems-div'); var problemsList = this.querySelector('.problems-list'); var workaroundsDiv = this.querySelector('.workarounds-div'); var workaroundsList = this.querySelector('.workarounds-list'); var gpuInfo = browserBridge.gpuInfo; var i; if (gpuInfo) { // Not using jstemplate here for blacklist status because we construct // href from data, which jstemplate can't seem to do. if (gpuInfo.featureStatus) { // feature status list featureStatusList.textContent = ''; for (var featureName in gpuInfo.featureStatus.featureStatus) { var featureStatus = gpuInfo.featureStatus.featureStatus[featureName]; var featureEl = document.createElement('li'); var nameEl = document.createElement('span'); if (!featureLabelMap[featureName]) console.log('Missing featureLabel for', featureName); nameEl.textContent = featureLabelMap[featureName] + ': '; featureEl.appendChild(nameEl); var statusEl = document.createElement('span'); var statusInfo = statusMap[featureStatus]; if (!statusInfo) { console.log('Missing status for ', featureStatus); statusEl.textContent = 'Unknown'; statusEl.className = 'feature-red'; } else { statusEl.textContent = statusInfo['label']; statusEl.className = statusInfo['class']; } featureEl.appendChild(statusEl); featureStatusList.appendChild(featureEl); } // problems list if (gpuInfo.featureStatus.problems.length) { problemsDiv.hidden = false; problemsList.textContent = ''; for (i = 0; i < gpuInfo.featureStatus.problems.length; i++) { var problem = gpuInfo.featureStatus.problems[i]; var problemEl = this.createProblemEl_(problem); problemsList.appendChild(problemEl); } } else { problemsDiv.hidden = true; } // driver bug workarounds list if (gpuInfo.featureStatus.workarounds.length) { workaroundsDiv.hidden = false; workaroundsList.textContent = ''; for (i = 0; i < gpuInfo.featureStatus.workarounds.length; i++) { var workaroundEl = document.createElement('li'); workaroundEl.textContent = gpuInfo.featureStatus.workarounds[i]; workaroundsList.appendChild(workaroundEl); } } else { workaroundsDiv.hidden = true; } } else { featureStatusList.textContent = ''; problemsList.hidden = true; workaroundsList.hidden = true; } if (gpuInfo.basic_info) this.setTable_('basic-info', gpuInfo.basic_info); else this.setTable_('basic-info', []); if (gpuInfo.diagnostics) { diagnosticsDiv.hidden = false; diagnosticsLoadingDiv.hidden = true; $('diagnostics-table').hidden = false; this.setTable_('diagnostics-table', gpuInfo.diagnostics); } else if (gpuInfo.diagnostics === null) { // gpu_internals.cc sets diagnostics to null when it is being loaded diagnosticsDiv.hidden = false; diagnosticsLoadingDiv.hidden = false; $('diagnostics-table').hidden = true; } else { diagnosticsDiv.hidden = true; } } else { this.setText_('basic-info', '... loading ...'); diagnosticsDiv.hidden = true; featureStatusList.textContent = ''; problemsDiv.hidden = true; } // Log messages jstProcess(new JsEvalContext({values: browserBridge.logMessages}), $('log-messages')); }, createProblemEl_: function(problem) { var problemEl; problemEl = document.createElement('li'); // Description of issue var desc = document.createElement('a'); desc.textContent = problem.description; problemEl.appendChild(desc); // Spacing ':' element if (problem.crBugs.length + problem.webkitBugs.length > 0) { var tmp = document.createElement('span'); tmp.textContent = ': '; problemEl.appendChild(tmp); } var nbugs = 0; var j; // crBugs for (j = 0; j < problem.crBugs.length; ++j) { if (nbugs > 0) { var tmp = document.createElement('span'); tmp.textContent = ', '; problemEl.appendChild(tmp); } var link = document.createElement('a'); var bugid = parseInt(problem.crBugs[j]); link.textContent = bugid; link.href = 'http://crbug.com/' + bugid; problemEl.appendChild(link); nbugs++; } for (j = 0; j < problem.webkitBugs.length; ++j) { if (nbugs > 0) { var tmp = document.createElement('span'); tmp.textContent = ', '; problemEl.appendChild(tmp); } var link = document.createElement('a'); var bugid = parseInt(problem.webkitBugs[j]); link.textContent = bugid; link.href = 'https://bugs.webkit.org/show_bug.cgi?id=' + bugid; problemEl.appendChild(link); nbugs++; } if (problem.affectedGpuSettings.length > 0) { var brNode = document.createElement('br'); problemEl.appendChild(brNode); var iNode = document.createElement('i'); problemEl.appendChild(iNode); var headNode = document.createElement('span'); if (problem.tag == 'disabledFeatures') headNode.textContent = 'Disabled Features: '; else // problem.tag == 'workarounds' headNode.textContent = 'Applied Workarounds: '; iNode.appendChild(headNode); for (j = 0; j < problem.affectedGpuSettings.length; ++j) { if (j > 0) { var separateNode = document.createElement('span'); separateNode.textContent = ', '; iNode.appendChild(separateNode); } var nameNode = document.createElement('span'); if (problem.tag == 'disabledFeatures') nameNode.classList.add('feature-red'); else // problem.tag == 'workarounds' nameNode.classList.add('feature-yellow'); nameNode.textContent = problem.affectedGpuSettings[j]; iNode.appendChild(nameNode); } } return problemEl; }, setText_: function(outputElementId, text) { var peg = document.getElementById(outputElementId); peg.textContent = text; }, setTable_: function(outputElementId, inputData) { var template = jstGetTemplate('info-view-table-template'); jstProcess(new JsEvalContext({value: inputData}), template); var peg = document.getElementById(outputElementId); if (!peg) throw new Error('Node ' + outputElementId + ' not found'); peg.innerHTML = ''; peg.appendChild(template); } }; return { InfoView: InfoView }; }); var browserBridge; /** * Main entry point. called once the page has loaded. */ function onLoad() { browserBridge = new gpu.BrowserBridge(); // Create the views. cr.ui.decorate('#info-view', gpu.InfoView); } document.addEventListener('DOMContentLoaded', onLoad); IndexedDB
Instances in: Instances: Incognito
Size:
Last modified:
Open connections:
Paths:
Force close Download
Open database:
Connections: open: pending opens: pending upgrades: running upgrades: pending deletes:
Transactions:
Process ID ID Mode Scope Completed Requests Pending Requests Age (ms) Runtime (ms) Status

IndexedDB

// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. cr.define('indexeddb', function() { 'use strict'; function initialize() { chrome.send('getAllOrigins'); } function progressNodeFor(link) { return link.parentNode.querySelector('.download-status'); } function downloadOriginData(event) { var link = event.target; progressNodeFor(link).style.display = 'inline'; chrome.send('downloadOriginData', [link.idb_partition_path, link.idb_origin_url]); return false; } function forceClose(event) { var link = event.target; progressNodeFor(link).style.display = 'inline'; chrome.send('forceClose', [link.idb_partition_path, link.idb_origin_url]); return false; } function withNode(selector, partition_path, origin_url, callback) { var links = document.querySelectorAll(selector); for (var i = 0; i < links.length; ++i) { var link = links[i]; if (partition_path == link.idb_partition_path && origin_url == link.idb_origin_url) { callback(link); } } } // Fired from the backend after the data has been zipped up, and the // download manager has begun downloading the file. function onOriginDownloadReady(partition_path, origin_url, connection_count) { withNode('a.download', partition_path, origin_url, function(link) { progressNodeFor(link).style.display = 'none'; }); withNode('.connection-count', partition_path, origin_url, function(span) { span.innerText = connection_count; }); } function onForcedClose(partition_path, origin_url, connection_count) { withNode('a.force-close', partition_path, origin_url, function(link) { progressNodeFor(link).style.display = 'none'; }); withNode('.connection-count', partition_path, origin_url, function(span) { span.innerText = connection_count; }); } // Fired from the backend with a single partition's worth of // IndexedDB metadata. function onOriginsReady(origins, partition_path) { var template = jstGetTemplate('indexeddb-list-template'); var container = $('indexeddb-list'); container.appendChild(template); jstProcess(new JsEvalContext({ idbs: origins, partition_path: partition_path}), template); var downloadLinks = container.querySelectorAll('a.download'); for (var i = 0; i < downloadLinks.length; ++i) { downloadLinks[i].addEventListener('click', downloadOriginData, false); } var forceCloseLinks = container.querySelectorAll('a.force-close'); for (i = 0; i < forceCloseLinks.length; ++i) { forceCloseLinks[i].addEventListener('click', forceClose, false); } } return { initialize: initialize, onForcedClose: onForcedClose, onOriginDownloadReady: onOriginDownloadReady, onOriginsReady: onOriginsReady, }; }); document.addEventListener('DOMContentLoaded', indexeddb.initialize); /* Copyright (c) 2013 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ .indexeddb-summary { background-color: rgb(235, 239, 249); border-top: 1px solid rgb(156, 194, 239); margin-bottom: 6px; margin-top: 12px; padding: 3px; font-weight: bold; } .indexeddb-item { margin-bottom: 15px; margin-top: 6px; position: relative; } .indexeddb-url { color: rgb(85, 102, 221); display: inline-block; max-width: 500px; overflow: hidden; padding-bottom: 1px; padding-top: 4px; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; } .indexeddb-database { margin-bottom: 6px; margin-top: 6px; margin-left: 12px; position: relative; } .indexeddb-database > div { margin-left: 12px; } .indexeddb-connection-count { margin: 0 8px; } .indexeddb-connection-count.pending { font-weight: bold; } .indexeddb-path { display: block; margin-left: 1em; } .indexeddb-transaction-list { margin-left: 10px; border-collapse: collapse; } .indexeddb-transaction-list th, .indexeddb-transaction-list td { padding: 2px 10px; min-width: 50px; max-width: 75px; } td.indexeddb-transaction-scope { min-width: 200px; max-width: 500px; } .indexeddb-transaction-list th { background-color: rgb(249, 249, 249); border: 1px solid rgb(156, 194, 239); font-weight: normal; text-align: left; } .indexeddb-transaction { background-color: rgb(235, 239, 249); border-bottom: 2px solid white; } .indexeddb-transaction.created { font-weight: italic; } .indexeddb-transaction.started { font-weight: bold; } .indexeddb-transaction.running { font-weight: bold; } .indexeddb-transaction.committing { font-weight: bold; } .indexeddb-transaction.blocked { } .indexeddb-transaction.started .indexeddb-transaction-state { background-color: rgb(249, 249, 235); } .indexeddb-transaction.running .indexeddb-transaction-state { background-color: rgb(235, 249, 235); } .indexeddb-transaction.committing .indexeddb-transaction-state { background-color: rgb(235, 235, 249); } .indexeddb-transaction.blocked .indexeddb-transaction-state { background-color: rgb(249, 235, 235); } .controls a { -webkit-margin-end: 16px; color: #777; } Players Audio Video Capture

Players

    Player Properties

    Property Value

    Log

    Timestamp Property Value

      Input Controllers

        Output Controllers

          Output Streams

            Properties

            Property Value

            Video Capture Device Capabilities

            Device Name Formats Capture API Device ID
            // Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. var media = {}; // Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * A global object that gets used by the C++ interface. */ var media = (function() { 'use strict'; var manager = null; // A number->string mapping that is populated through the backend that // describes the phase that the network entity is in. var eventPhases = {}; // A number->string mapping that is populated through the backend that // describes the type of event sent from the network. var eventTypes = {}; // A mapping of number->CacheEntry where the number is a unique id for that // network request. var cacheEntries = {}; // A mapping of url->CacheEntity where the url is the url of the resource. var cacheEntriesByKey = {}; var requrestURLs = {}; var media = { BAR_WIDTH: 200, BAR_HEIGHT: 25 }; /** * Users of |media| must call initialize prior to calling other methods. */ media.initialize = function(theManager) { manager = theManager; }; media.onReceiveAudioStreamData = function(audioStreamData) { for (var component in audioStreamData) { media.updateAudioComponent(audioStreamData[component]); } }; media.onReceiveVideoCaptureCapabilities = function(videoCaptureCapabilities) { manager.updateVideoCaptureCapabilities(videoCaptureCapabilities) } media.onReceiveConstants = function(constants) { for (var key in constants.eventTypes) { var value = constants.eventTypes[key]; eventTypes[value] = key; } for (var key in constants.eventPhases) { var value = constants.eventPhases[key]; eventPhases[value] = key; } }; media.cacheForUrl = function(url) { return cacheEntriesByKey[url]; }; media.onNetUpdate = function(updates) { updates.forEach(function(update) { var id = update.source.id; if (!cacheEntries[id]) cacheEntries[id] = new media.CacheEntry; switch (eventPhases[update.phase] + '.' + eventTypes[update.type]) { case 'PHASE_BEGIN.DISK_CACHE_ENTRY_IMPL': var key = update.params.key; // Merge this source with anything we already know about this key. if (cacheEntriesByKey[key]) { cacheEntriesByKey[key].merge(cacheEntries[id]); cacheEntries[id] = cacheEntriesByKey[key]; } else { cacheEntriesByKey[key] = cacheEntries[id]; } cacheEntriesByKey[key].key = key; break; case 'PHASE_BEGIN.SPARSE_READ': cacheEntries[id].readBytes(update.params.offset, update.params.buff_len); cacheEntries[id].sparse = true; break; case 'PHASE_BEGIN.SPARSE_WRITE': cacheEntries[id].writeBytes(update.params.offset, update.params.buff_len); cacheEntries[id].sparse = true; break; case 'PHASE_BEGIN.URL_REQUEST_START_JOB': requrestURLs[update.source.id] = update.params.url; break; case 'PHASE_NONE.HTTP_TRANSACTION_READ_RESPONSE_HEADERS': // Record the total size of the file if this was a range request. var range = /content-range:\s*bytes\s*\d+-\d+\/(\d+)/i.exec( update.params.headers); var key = requrestURLs[update.source.id]; delete requrestURLs[update.source.id]; if (range && key) { if (!cacheEntriesByKey[key]) { cacheEntriesByKey[key] = new media.CacheEntry; cacheEntriesByKey[key].key = key; } cacheEntriesByKey[key].size = range[1]; } break; } }); }; media.onRendererTerminated = function(renderId) { util.object.forEach(manager.players_, function(playerInfo, id) { if (playerInfo.properties['render_id'] == renderId) { manager.removePlayer(id); } }); }; media.updateAudioComponent = function(component) { var uniqueComponentId = component.owner_id + ':' + component.component_id; switch (component.status) { case 'closed': manager.removeAudioComponent( component.component_type, uniqueComponentId); break; default: manager.updateAudioComponent( component.component_type, uniqueComponentId, component); break; } }; media.onPlayerOpen = function(id, timestamp) { manager.addPlayer(id, timestamp); }; media.onMediaEvent = function(event) { var source = event.renderer + ':' + event.player; // Although this gets called on every event, there is nothing we can do // because there is no onOpen event. media.onPlayerOpen(source); manager.updatePlayerInfoNoRecord( source, event.ticksMillis, 'render_id', event.renderer); manager.updatePlayerInfoNoRecord( source, event.ticksMillis, 'player_id', event.player); var propertyCount = 0; util.object.forEach(event.params, function(value, key) { key = key.trim(); // These keys get spammed *a lot*, so put them on the display // but don't log list. if (key === 'buffer_start' || key === 'buffer_end' || key === 'buffer_current' || key === 'is_downloading_data') { manager.updatePlayerInfoNoRecord( source, event.ticksMillis, key, value); } else { manager.updatePlayerInfo(source, event.ticksMillis, key, value); } propertyCount += 1; }); if (propertyCount === 0) { manager.updatePlayerInfo( source, event.ticksMillis, 'EVENT', event.type); } }; // |chrome| is not defined during tests. if (window.chrome && window.chrome.send) { chrome.send('getEverything'); } return media; }()); // Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * @fileoverview Some utility functions that don't belong anywhere else in the * code. */ var util = (function() { var util = {}; util.object = {}; /** * Calls a function for each element in an object/map/hash. * * @param obj The object to iterate over. * @param f The function to call on every value in the object. F should have * the following arguments: f(value, key, object) where value is the value * of the property, key is the corresponding key, and obj is the object that * was passed in originally. * @param optObj The object use as 'this' within f. */ util.object.forEach = function(obj, f, optObj) { 'use strict'; var key; for (key in obj) { if (obj.hasOwnProperty(key)) { f.call(optObj, obj[key], key, obj); } } }; util.millisecondsToString = function(timeMillis) { function pad(num) { num = num.toString(); if (num.length < 2) { return '0' + num; } return num; } var date = new Date(timeMillis); return pad(date.getUTCHours()) + ':' + pad(date.getUTCMinutes()) + ':' + pad(date.getUTCSeconds()) + ' ' + pad((date.getMilliseconds()) % 1000); }; return util; }()); // Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. cr.define('media', function() { 'use strict'; /** * This class represents a file cached by net. */ function CacheEntry() { this.read_ = new media.DisjointRangeSet; this.written_ = new media.DisjointRangeSet; this.available_ = new media.DisjointRangeSet; // Set to true when we know the entry is sparse. this.sparse = false; this.key = null; this.size = null; // The
            element representing this CacheEntry. this.details_ = document.createElement('details'); this.details_.className = 'cache-entry'; this.details_.open = false; // The
            summary line. It contains a chart of requested file ranges // and the url if we know it. var summary = document.createElement('summary'); this.summaryText_ = document.createTextNode(''); summary.appendChild(this.summaryText_); summary.appendChild(document.createTextNode(' ')); // Controls to modify this CacheEntry. var controls = document.createElement('span'); controls.className = 'cache-entry-controls'; summary.appendChild(controls); summary.appendChild(document.createElement('br')); // A link to clear recorded data from this CacheEntry. var clearControl = document.createElement('a'); clearControl.href = 'javascript:void(0)'; clearControl.onclick = this.clear.bind(this); clearControl.textContent = '(clear entry)'; controls.appendChild(clearControl); this.details_.appendChild(summary); // The canvas for drawing cache writes. this.writeCanvas = document.createElement('canvas'); this.writeCanvas.width = media.BAR_WIDTH; this.writeCanvas.height = media.BAR_HEIGHT; this.details_.appendChild(this.writeCanvas); // The canvas for drawing cache reads. this.readCanvas = document.createElement('canvas'); this.readCanvas.width = media.BAR_WIDTH; this.readCanvas.height = media.BAR_HEIGHT; this.details_.appendChild(this.readCanvas); // A tabular representation of the data in the above canvas. this.detailTable_ = document.createElement('table'); this.detailTable_.className = 'cache-table'; this.details_.appendChild(this.detailTable_); } CacheEntry.prototype = { /** * Mark a range of bytes as read from the cache. * @param {int} start The first byte read. * @param {int} length The number of bytes read. */ readBytes: function(start, length) { start = parseInt(start); length = parseInt(length); this.read_.add(start, start + length); this.available_.add(start, start + length); this.sparse = true; }, /** * Mark a range of bytes as written to the cache. * @param {int} start The first byte written. * @param {int} length The number of bytes written. */ writeBytes: function(start, length) { start = parseInt(start); length = parseInt(length); this.written_.add(start, start + length); this.available_.add(start, start + length); this.sparse = true; }, /** * Merge this CacheEntry with another, merging recorded ranges and flags. * @param {CacheEntry} other The CacheEntry to merge into this one. */ merge: function(other) { this.read_.merge(other.read_); this.written_.merge(other.written_); this.available_.merge(other.available_); this.sparse = this.sparse || other.sparse; this.key = this.key || other.key; this.size = this.size || other.size; }, /** * Clear all recorded ranges from this CacheEntry and redraw this.details_. */ clear: function() { this.read_ = new media.DisjointRangeSet; this.written_ = new media.DisjointRangeSet; this.available_ = new media.DisjointRangeSet; this.generateDetails(); }, /** * Helper for drawCacheReadsToCanvas() and drawCacheWritesToCanvas(). * * Accepts the entries to draw, a canvas fill style, and the canvas to * draw on. */ drawCacheEntriesToCanvas: function(entries, fillStyle, canvas) { // Don't bother drawing anything if we don't know the total size. if (!this.size) { return; } var width = canvas.width; var height = canvas.height; var context = canvas.getContext('2d'); var fileSize = this.size; context.fillStyle = '#aaa'; context.fillRect(0, 0, width, height); function drawRange(start, end) { var left = start / fileSize * width; var right = end / fileSize * width; context.fillRect(left, 0, right - left, height); } context.fillStyle = fillStyle; entries.map(function(start, end) { drawRange(start, end); }); }, /** * Draw cache writes to the given canvas. * * It should consist of a horizontal bar with highlighted sections to * represent which parts of a file have been written to the cache. * * e.g. |xxxxxx----------x| */ drawCacheWritesToCanvas: function(canvas) { this.drawCacheEntriesToCanvas(this.written_, '#00a', canvas); }, /** * Draw cache reads to the given canvas. * * It should consist of a horizontal bar with highlighted sections to * represent which parts of a file have been read from the cache. * * e.g. |xxxxxx----------x| */ drawCacheReadsToCanvas: function(canvas) { this.drawCacheEntriesToCanvas(this.read_, '#0a0', canvas); }, /** * Update this.details_ to contain everything we currently know about * this file. */ generateDetails: function() { function makeElement(tag, content) { var toReturn = document.createElement(tag); toReturn.textContent = content; return toReturn; } this.details_.id = this.key; this.summaryText_.textContent = this.key || 'Unknown File'; this.detailTable_.textContent = ''; var header = document.createElement('thead'); var footer = document.createElement('tfoot'); var body = document.createElement('tbody'); this.detailTable_.appendChild(header); this.detailTable_.appendChild(footer); this.detailTable_.appendChild(body); var headerRow = document.createElement('tr'); headerRow.appendChild(makeElement('th', 'Read From Cache')); headerRow.appendChild(makeElement('th', 'Written To Cache')); header.appendChild(headerRow); var footerRow = document.createElement('tr'); var footerCell = document.createElement('td'); footerCell.textContent = 'Out of ' + (this.size || 'unkown size'); footerCell.setAttribute('colspan', 2); footerRow.appendChild(footerCell); footer.appendChild(footerRow); var read = this.read_.map(function(start, end) { return start + ' - ' + end; }); var written = this.written_.map(function(start, end) { return start + ' - ' + end; }); var length = Math.max(read.length, written.length); for (var i = 0; i < length; i++) { var row = document.createElement('tr'); row.appendChild(makeElement('td', read[i] || '')); row.appendChild(makeElement('td', written[i] || '')); body.appendChild(row); } this.drawCacheWritesToCanvas(this.writeCanvas); this.drawCacheReadsToCanvas(this.readCanvas); }, /** * Render this CacheEntry as a
          • . * @return {HTMLElement} A
          • representing this CacheEntry. */ toListItem: function() { this.generateDetails(); var result = document.createElement('li'); result.appendChild(this.details_); return result; } }; return { CacheEntry: CacheEntry }; }); // Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. cr.define('media', function() { /** * This class represents a collection of non-intersecting ranges. Ranges * specified by (start, end) can be added and removed at will. It is used to * record which sections of a media file have been cached, e.g. the first and * last few kB plus several MB in the middle. * * Example usage: * someRange.add(0, 100); // Contains 0-100. * someRange.add(150, 200); // Contains 0-100, 150-200. * someRange.remove(25, 75); // Contains 0-24, 76-100, 150-200. * someRange.add(25, 149); // Contains 0-200. */ function DisjointRangeSet() { this.ranges_ = {}; } DisjointRangeSet.prototype = { /** * Deletes all ranges intersecting with (start ... end) and returns the * extents of the cleared area. * @param {int} start The start of the range to remove. * @param {int} end The end of the range to remove. * @param {int} sloppiness 0 removes only strictly overlapping ranges, and * 1 removes adjacent ones. * @return {Object} The start and end of the newly cleared range. */ clearRange: function(start, end, sloppiness) { var ranges = this.ranges_; var result = {start: start, end: end}; for (var rangeStart in this.ranges_) { rangeEnd = this.ranges_[rangeStart]; // A range intersects another if its start lies within the other range // or vice versa. if ((rangeStart >= start && rangeStart <= (end + sloppiness)) || (start >= rangeStart && start <= (rangeEnd + sloppiness))) { delete ranges[rangeStart]; result.start = Math.min(result.start, rangeStart); result.end = Math.max(result.end, rangeEnd); } } return result; }, /** * Adds a range to this DisjointRangeSet. * Joins adjacent and overlapping ranges together. * @param {int} start The beginning of the range to add, inclusive. * @param {int} end The end of the range to add, inclusive. */ add: function(start, end) { if (end < start) return; // Remove all touching ranges. result = this.clearRange(start, end, 1); // Add back a single contiguous range. this.ranges_[Math.min(start, result.start)] = Math.max(end, result.end); }, /** * Combines a DisjointRangeSet with this one. * @param {DisjointRangeSet} ranges A DisjointRangeSet to be squished into * this one. */ merge: function(other) { var ranges = this; other.forEach(function(start, end) { ranges.add(start, end); }); }, /** * Removes a range from this DisjointRangeSet. * Will split existing ranges if necessary. * @param {int} start The beginning of the range to remove, inclusive. * @param {int} end The end of the range to remove, inclusive. */ remove: function(start, end) { if (end < start) return; // Remove instersecting ranges. result = this.clearRange(start, end, 0); // Add back non-overlapping ranges. if (result.start < start) this.ranges_[result.start] = start - 1; if (result.end > end) this.ranges_[end + 1] = result.end; }, /** * Iterates over every contiguous range in this DisjointRangeSet, calling a * function for each (start, end). * @param {function(int, int)} iterator The function to call on each range. */ forEach: function(iterator) { for (var start in this.ranges_) iterator(start, this.ranges_[start]); }, /** * Maps this DisjointRangeSet to an array by calling a given function on the * start and end of each contiguous range, sorted by start. * @param {function(int, int)} mapper Maps a range to an array element. * @return {Array} An array of each mapper(range). */ map: function(mapper) { var starts = []; for (var start in this.ranges_) starts.push(parseInt(start)); starts.sort(function(a, b) { return a - b; }); var ranges = this.ranges_; var results = starts.map(function(s) { return mapper(s, ranges[s]); }); return results; }, /** * Finds the maximum value present in any of the contained ranges. * @return {int} The maximum value contained by this DisjointRangeSet. */ max: function() { var max = -Infinity; for (var start in this.ranges_) max = Math.max(max, this.ranges_[start]); return max; }, }; return { DisjointRangeSet: DisjointRangeSet }; }); // Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * @fileoverview A class for keeping track of the details of a player. */ var PlayerInfo = (function() { 'use strict'; /** * A class that keeps track of properties on a media player. * @param id A unique id that can be used to identify this player. */ function PlayerInfo(id) { this.id = id; // The current value of the properties for this player. this.properties = {}; // All of the past (and present) values of the properties. this.pastValues = {}; // Every single event in the order in which they were received. this.allEvents = []; this.lastRendered = 0; this.firstTimestamp_ = -1; } PlayerInfo.prototype = { /** * Adds or set a property on this player. * This is the default logging method as it keeps track of old values. * @param timestamp The time in milliseconds since the Epoch. * @param key A String key that describes the property. * @param value The value of the property. */ addProperty: function(timestamp, key, value) { // The first timestamp that we get will be recorded. // Then, all future timestamps are deltas of that. if (this.firstTimestamp_ === -1) { this.firstTimestamp_ = timestamp; } if (typeof key !== 'string') { throw new Error(typeof key + ' is not a valid key type'); } this.properties[key] = value; if (!this.pastValues[key]) { this.pastValues[key] = []; } var recordValue = { time: timestamp - this.firstTimestamp_, key: key, value: value }; this.pastValues[key].push(recordValue); this.allEvents.push(recordValue); }, /** * Adds or set a property on this player. * Does not keep track of old values. This is better for * values that get spammed repeatedly. * @param timestamp The time in milliseconds since the Epoch. * @param key A String key that describes the property. * @param value The value of the property. */ addPropertyNoRecord: function(timestamp, key, value) { this.addProperty(timestamp, key, value); this.allEvents.pop(); } }; return PlayerInfo; }()); // Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * @fileoverview Keeps track of all the existing PlayerInfo and * audio stream objects and is the entry-point for messages from the backend. * * The events captured by Manager (add, remove, update) are relayed * to the clientRenderer which it can choose to use to modify the UI. */ var Manager = (function() { 'use strict'; function Manager(clientRenderer) { this.players_ = {}; this.audioComponents_ = []; this.clientRenderer_ = clientRenderer; } Manager.prototype = { /** * Updates an audio-component. * @param componentType Integer AudioComponent enum value; must match values * from the AudioLogFactory::AudioComponent enum. * @param componentId The unique-id of the audio-component. * @param componentData The actual component data dictionary. */ updateAudioComponent: function(componentType, componentId, componentData) { if (!(componentType in this.audioComponents_)) this.audioComponents_[componentType] = {}; if (!(componentId in this.audioComponents_[componentType])) { this.audioComponents_[componentType][componentId] = componentData; } else { for (var key in componentData) { this.audioComponents_[componentType][componentId][key] = componentData[key]; } } this.clientRenderer_.audioComponentAdded( componentType, this.audioComponents_[componentType]); }, /** * Removes an audio-stream from the manager. * @param id The unique-id of the audio-stream. */ removeAudioComponent: function(componentType, componentId) { if (!(componentType in this.audioComponents_) || !(componentId in this.audioComponents_[componentType])) { return; } delete this.audioComponents_[componentType][componentId]; this.clientRenderer_.audioComponentRemoved( componentType, this.audioComponents_[componentType]); }, /** * Adds a player to the list of players to manage. */ addPlayer: function(id) { if (this.players_[id]) { return; } // Make the PlayerProperty and add it to the mapping this.players_[id] = new PlayerInfo(id); this.clientRenderer_.playerAdded(this.players_, this.players_[id]); }, /** * Attempts to remove a player from the UI. * @param id The ID of the player to remove. */ removePlayer: function(id) { delete this.players_[id]; this.clientRenderer_.playerRemoved(this.players_, this.players_[id]); }, updatePlayerInfoNoRecord: function(id, timestamp, key, value) { if (!this.players_[id]) { console.error('[updatePlayerInfo] Id ' + id + ' does not exist'); return; } this.players_[id].addPropertyNoRecord(timestamp, key, value); this.clientRenderer_.playerUpdated(this.players_, this.players_[id], key, value); }, /** * * @param id The unique ID that identifies the player to be updated. * @param timestamp The timestamp of when the change occured. This * timestamp is *not* normalized. * @param key The name of the property to be added/changed. * @param value The value of the property. */ updatePlayerInfo: function(id, timestamp, key, value) { if (!this.players_[id]) { console.error('[updatePlayerInfo] Id ' + id + ' does not exist'); return; } this.players_[id].addProperty(timestamp, key, value); this.clientRenderer_.playerUpdated(this.players_, this.players_[id], key, value); }, parseVideoCaptureFormat_: function(format) { /** * Example: * * format: * "resolution: 1280x720, fps: 30.000000, pixel format: I420" * * formatDict: * {'resolution':'1280x720', 'fps': '30.00'} */ var parts = format.split(', '); var formatDict = {}; for (var i in parts) { var kv = parts[i].split(': '); formatDict[kv[0]] = kv[1]; } // Round down the FPS to 2 decimals. formatDict['fps'] = parseFloat(formatDict['fps']).toFixed(2); // The camera does not actually output I420 so this info is misleading. delete formatDict['pixel format']; return formatDict; }, updateVideoCaptureCapabilities: function(videoCaptureCapabilities) { // Parse the video formats to be structured for the table. for (var i in videoCaptureCapabilities) { for (var j in videoCaptureCapabilities[i]['formats']) { videoCaptureCapabilities[i]['formats'][j] = this.parseVideoCaptureFormat_( videoCaptureCapabilities[i]['formats'][j]); } } // The keys of each device to be shown in order of appearance. var videoCaptureDeviceKeys = ['name','formats','captureApi','id']; this.clientRenderer_.redrawVideoCaptureCapabilities( videoCaptureCapabilities, videoCaptureDeviceKeys); } }; return Manager; }()); // Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. var ClientRenderer = (function() { var ClientRenderer = function() { this.playerListElement = document.getElementById('player-list'); this.audioPropertiesTable = document.getElementById('audio-property-table').querySelector('tbody'); this.playerPropertiesTable = document.getElementById('player-property-table').querySelector('tbody'); this.logTable = document.getElementById('log').querySelector('tbody'); this.graphElement = document.getElementById('graphs'); this.audioPropertyName = document.getElementById('audio-property-name'); this.selectedPlayer = null; this.selectedAudioComponentType = null; this.selectedAudioComponentId = null; this.selectedAudioCompontentData = null; this.selectedPlayerLogIndex = 0; this.filterFunction = function() { return true; }; this.filterText = document.getElementById('filter-text'); this.filterText.onkeyup = this.onTextChange_.bind(this); this.bufferCanvas = document.createElement('canvas'); this.bufferCanvas.width = media.BAR_WIDTH; this.bufferCanvas.height = media.BAR_HEIGHT; this.clipboardTextarea = document.getElementById('clipboard-textarea'); var clipboardButtons = document.getElementsByClassName('copy-button'); for (var i = 0; i < clipboardButtons.length; i++) { clipboardButtons[i].onclick = this.copyToClipboard_.bind(this); } this.hiddenKeys = ['component_id', 'component_type', 'owner_id']; // Tell CSS to hide certain content prior to making selections. document.body.classList.add(ClientRenderer.Css_.NO_PLAYERS_SELECTED); document.body.classList.add(ClientRenderer.Css_.NO_COMPONENTS_SELECTED); }; /** * CSS classes added / removed in JS to trigger styling changes. * @private @enum {string} */ ClientRenderer.Css_ = { NO_PLAYERS_SELECTED: 'no-players-selected', NO_COMPONENTS_SELECTED: 'no-components-selected', SELECTABLE_BUTTON: 'selectable-button' }; function removeChildren(element) { while (element.hasChildNodes()) { element.removeChild(element.lastChild); } }; function createSelectableButton(id, groupName, text, select_cb) { // For CSS styling. var radioButton = document.createElement('input'); radioButton.classList.add(ClientRenderer.Css_.SELECTABLE_BUTTON); radioButton.type = 'radio'; radioButton.id = id; radioButton.name = groupName; var buttonLabel = document.createElement('label'); buttonLabel.classList.add(ClientRenderer.Css_.SELECTABLE_BUTTON); buttonLabel.setAttribute('for', radioButton.id); buttonLabel.appendChild(document.createTextNode(text)); var fragment = document.createDocumentFragment(); fragment.appendChild(radioButton); fragment.appendChild(buttonLabel); // Listen to 'change' rather than 'click' to keep styling in sync with // button behavior. radioButton.addEventListener('change', function() { select_cb(); }); return fragment; }; function selectSelectableButton(id) { var element = document.getElementById(id); if (!element) { console.error('failed to select button with id: ' + id); return; } element.checked = true; } ClientRenderer.prototype = { /** * Called when an audio component is added to the collection. * @param componentType Integer AudioComponent enum value; must match values * from the AudioLogFactory::AudioComponent enum. * @param components The entire map of components (name -> dict). */ audioComponentAdded: function(componentType, components) { this.redrawAudioComponentList_(componentType, components); // Redraw the component if it's currently selected. if (this.selectedAudioComponentType == componentType && this.selectedAudioComponentId && this.selectedAudioComponentId in components) { // TODO(chcunningham): This path is used both for adding and updating // the components. Split this up to have a separate update method. // At present, this selectAudioComponent call is key to *updating* the // the property table for existing audio components. this.selectAudioComponent_( componentType, this.selectedAudioComponentId, components[this.selectedAudioComponentId]); } }, /** * Called when an audio component is removed from the collection. * @param componentType Integer AudioComponent enum value; must match values * from the AudioLogFactory::AudioComponent enum. * @param components The entire map of components (name -> dict). */ audioComponentRemoved: function(componentType, components) { this.redrawAudioComponentList_(componentType, components); }, /** * Called when a player is added to the collection. * @param players The entire map of id -> player. * @param player_added The player that is added. */ playerAdded: function(players, playerAdded) { this.redrawPlayerList_(players); }, /** * Called when a playre is removed from the collection. * @param players The entire map of id -> player. * @param player_added The player that was removed. */ playerRemoved: function(players, playerRemoved) { this.redrawPlayerList_(players); }, /** * Called when a property on a player is changed. * @param players The entire map of id -> player. * @param player The player that had its property changed. * @param key The name of the property that was changed. * @param value The new value of the property. */ playerUpdated: function(players, player, key, value) { if (player === this.selectedPlayer) { this.drawProperties_(player.properties, this.playerPropertiesTable); this.drawLog_(); this.drawGraphs_(); } if (key === 'name' || key === 'url') { this.redrawPlayerList_(players); } }, createVideoCaptureFormatTable: function(formats) { if (!formats || formats.length == 0) return document.createTextNode('No formats'); var table = document.createElement('table'); var thead = document.createElement('thead'); var theadRow = document.createElement('tr'); for (var key in formats[0]) { var th = document.createElement('th'); th.appendChild(document.createTextNode(key)); theadRow.appendChild(th); } thead.appendChild(theadRow); table.appendChild(thead); var tbody = document.createElement('tbody'); for (var i=0; i < formats.length; ++i) { var tr = document.createElement('tr') for (var key in formats[i]) { var td = document.createElement('td'); td.appendChild(document.createTextNode(formats[i][key])); tr.appendChild(td); } tbody.appendChild(tr); } table.appendChild(tbody); table.classList.add('video-capture-formats-table'); return table; }, redrawVideoCaptureCapabilities: function(videoCaptureCapabilities, keys) { var copyButtonElement = document.getElementById('video-capture-capabilities-copy-button'); copyButtonElement.onclick = function() { window.prompt('Copy to clipboard: Ctrl+C, Enter', JSON.stringify(videoCaptureCapabilities)) } var videoTableBodyElement = document.getElementById('video-capture-capabilities-tbody'); removeChildren(videoTableBodyElement); for (var component in videoCaptureCapabilities) { var tableRow = document.createElement('tr'); var device = videoCaptureCapabilities[ component ]; for (var i in keys) { var value = device[keys[i]]; var tableCell = document.createElement('td'); var cellElement; if ((typeof value) == (typeof [])) { cellElement = this.createVideoCaptureFormatTable(value); } else { cellElement = document.createTextNode( ((typeof value) == 'undefined') ? 'n/a' : value); } tableCell.appendChild(cellElement) tableRow.appendChild(tableCell); } videoTableBodyElement.appendChild(tableRow); } }, getAudioComponentName_ : function(componentType, id) { var baseName; switch (componentType) { case 0: case 1: baseName = 'Controller'; break; case 2: baseName = 'Stream'; break; default: baseName = 'UnknownType' console.error('Unrecognized component type: ' + componentType); break; } return baseName + ' ' + id; }, getListElementForAudioComponent_ : function(componentType) { var listElement; switch (componentType) { case 0: listElement = document.getElementById( 'audio-input-controller-list'); break; case 1: listElement = document.getElementById( 'audio-output-controller-list'); break; case 2: listElement = document.getElementById( 'audio-output-stream-list'); break; default: console.error('Unrecognized component type: ' + componentType); listElement = null; break; } return listElement; }, redrawAudioComponentList_: function(componentType, components) { // Group name imposes rule that only one component can be selected // (and have its properties displayed) at a time. var buttonGroupName = 'audio-components'; var listElement = this.getListElementForAudioComponent_(componentType); if (!listElement) { console.error('Failed to find list element for component type: ' + componentType); return; } var fragment = document.createDocumentFragment(); for (id in components) { var li = document.createElement('li'); var button_cb = this.selectAudioComponent_.bind( this, componentType, id, components[id]); var friendlyName = this.getAudioComponentName_(componentType, id); li.appendChild(createSelectableButton( id, buttonGroupName, friendlyName, button_cb)); fragment.appendChild(li); } removeChildren(listElement); listElement.appendChild(fragment); if (this.selectedAudioComponentType && this.selectedAudioComponentType == componentType && this.selectedAudioComponentId in components) { // Re-select the selected component since the button was just recreated. selectSelectableButton(this.selectedAudioComponentId); } }, selectAudioComponent_: function( componentType, componentId, componentData) { document.body.classList.remove( ClientRenderer.Css_.NO_COMPONENTS_SELECTED); this.selectedAudioComponentType = componentType; this.selectedAudioComponentId = componentId; this.selectedAudioCompontentData = componentData; this.drawProperties_(componentData, this.audioPropertiesTable); removeChildren(this.audioPropertyName); this.audioPropertyName.appendChild(document.createTextNode( this.getAudioComponentName_(componentType, componentId))); }, redrawPlayerList_: function(players) { // Group name imposes rule that only one component can be selected // (and have its properties displayed) at a time. var buttonGroupName = 'player-buttons'; var fragment = document.createDocumentFragment(); for (id in players) { var player = players[id]; var usableName = player.properties.name || player.properties.url || 'Player ' + player.id; var li = document.createElement('li'); var button_cb = this.selectPlayer_.bind(this, player); li.appendChild(createSelectableButton( id, buttonGroupName, usableName, button_cb)); fragment.appendChild(li); } removeChildren(this.playerListElement); this.playerListElement.appendChild(fragment); if (this.selectedPlayer && this.selectedPlayer.id in players) { // Re-select the selected player since the button was just recreated. selectSelectableButton(this.selectedPlayer.id); } }, selectPlayer_: function(player) { document.body.classList.remove(ClientRenderer.Css_.NO_PLAYERS_SELECTED); this.selectedPlayer = player; this.selectedPlayerLogIndex = 0; this.selectedAudioComponentType = null; this.selectedAudioComponentId = null; this.selectedAudioCompontentData = null; this.drawProperties_(player.properties, this.playerPropertiesTable); removeChildren(this.logTable); removeChildren(this.graphElement); this.drawLog_(); this.drawGraphs_(); }, drawProperties_: function(propertyMap, propertiesTable) { removeChildren(propertiesTable); var sortedKeys = Object.keys(propertyMap).sort(); for (var i = 0; i < sortedKeys.length; ++i) { var key = sortedKeys[i]; if (this.hiddenKeys.indexOf(key) >= 0) continue; var value = propertyMap[key]; var row = propertiesTable.insertRow(-1); var keyCell = row.insertCell(-1); var valueCell = row.insertCell(-1); keyCell.appendChild(document.createTextNode(key)); valueCell.appendChild(document.createTextNode(value)); } }, appendEventToLog_: function(event) { if (this.filterFunction(event.key)) { var row = this.logTable.insertRow(-1); var timestampCell = row.insertCell(-1); timestampCell.classList.add('timestamp'); timestampCell.appendChild(document.createTextNode( util.millisecondsToString(event.time))); row.insertCell(-1).appendChild(document.createTextNode(event.key)); row.insertCell(-1).appendChild(document.createTextNode(event.value)); } }, drawLog_: function() { var toDraw = this.selectedPlayer.allEvents.slice( this.selectedPlayerLogIndex); toDraw.forEach(this.appendEventToLog_.bind(this)); this.selectedPlayerLogIndex = this.selectedPlayer.allEvents.length; }, drawGraphs_: function() { function addToGraphs(name, graph, graphElement) { var li = document.createElement('li'); li.appendChild(graph); li.appendChild(document.createTextNode(name)); graphElement.appendChild(li); } var url = this.selectedPlayer.properties.url; if (!url) { return; } var cache = media.cacheForUrl(url); var player = this.selectedPlayer; var props = player.properties; var cacheExists = false; var bufferExists = false; if (props['buffer_start'] !== undefined && props['buffer_current'] !== undefined && props['buffer_end'] !== undefined && props['total_bytes'] !== undefined) { this.drawBufferGraph_(props['buffer_start'], props['buffer_current'], props['buffer_end'], props['total_bytes']); bufferExists = true; } if (cache) { if (player.properties['total_bytes']) { cache.size = Number(player.properties['total_bytes']); } cache.generateDetails(); cacheExists = true; } if (!this.graphElement.hasChildNodes()) { if (bufferExists) { addToGraphs('buffer', this.bufferCanvas, this.graphElement); } if (cacheExists) { addToGraphs('cache read', cache.readCanvas, this.graphElement); addToGraphs('cache write', cache.writeCanvas, this.graphElement); } } }, drawBufferGraph_: function(start, current, end, size) { var ctx = this.bufferCanvas.getContext('2d'); var width = this.bufferCanvas.width; var height = this.bufferCanvas.height; ctx.fillStyle = '#aaa'; ctx.fillRect(0, 0, width, height); var scale_factor = width / size; var left = start * scale_factor; var middle = current * scale_factor; var right = end * scale_factor; ctx.fillStyle = '#a0a'; ctx.fillRect(left, 0, middle - left, height); ctx.fillStyle = '#aa0'; ctx.fillRect(middle, 0, right - middle, height); }, copyToClipboard_: function() { if (!this.selectedPlayer && !this.selectedAudioCompontentData) { return; } var properties = this.selectedAudioCompontentData || this.selectedPlayer.properties; var stringBuffer = []; for (var key in properties) { var value = properties[key]; stringBuffer.push(key.toString()); stringBuffer.push(': '); stringBuffer.push(value.toString()); stringBuffer.push('\n'); } this.clipboardTextarea.value = stringBuffer.join(''); this.clipboardTextarea.classList.remove('hiddenClipboard'); this.clipboardTextarea.focus(); this.clipboardTextarea.select(); // Hide the clipboard element when it loses focus. this.clipboardTextarea.onblur = function(event) { setTimeout(function(element) { event.target.classList.add('hiddenClipboard'); }, 0); }; }, onTextChange_: function(event) { var text = this.filterText.value.toLowerCase(); var parts = text.split(',').map(function(part) { return part.trim(); }).filter(function(part) { return part.trim().length > 0; }); this.filterFunction = function(text) { text = text.toLowerCase(); return parts.length === 0 || parts.some(function(part) { return text.indexOf(part) != -1; }); }; if (this.selectedPlayer) { removeChildren(this.logTable); this.selectedPlayerLogIndex = 0; this.drawLog_(); } }, }; return ClientRenderer; })(); media.initialize(new Manager(new ClientRenderer())); cr.ui.decorate('tabbox', cr.ui.TabBox); ServiceWorker
            Installation Status:
            Running Status:
            Script:
            Version ID:
            Renderer process ID:
            Renderer thread ID:
            DevTools agent route ID:
            Log:
            Scope:
            Registration ID: (unregistered)
            Active worker:
            Waiting worker:
            Registrations in: Registrations: Incognito
            Unregistered worker:

            ServiceWorker

            // Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. cr.define('serviceworker', function() { 'use strict'; function initialize() { update(); } function update() { chrome.send('GetOptions'); chrome.send('getAllRegistrations'); } function onOptions(options) { var template; var container = $('serviceworker-options'); if (container.childNodes) { template = container.childNodes[0]; } if (!template) { template = jstGetTemplate('serviceworker-options-template'); container.appendChild(template); } jstProcess(new JsEvalContext(options), template); var inputs = container.querySelectorAll('input[type=\'checkbox\']'); for (var i = 0; i < inputs.length; ++i) { if (!inputs[i].hasClickEvent) { inputs[i].addEventListener('click', (function(event) { chrome.send('SetOption', [event.target.className, event.target.checked]); }).bind(this), false); inputs[i].hasClickEvent = true; } } } function progressNodeFor(link) { return link.parentNode.querySelector('.operation-status'); } // All commands are completed with 'onOperationComplete'. var COMMANDS = ['stop', 'sync', 'push', 'inspect', 'unregister', 'start']; function commandHandler(command) { return function(event) { var link = event.target; progressNodeFor(link).style.display = 'inline'; sendCommand(command, link.cmdArgs, (function(status) { progressNodeFor(link).style.display = 'none'; }).bind(null, link)); return false; }; }; var commandCallbacks = []; function sendCommand(command, args, callback) { var callbackId = 0; while (callbackId in commandCallbacks) { callbackId++; } commandCallbacks[callbackId] = callback; chrome.send(command, [callbackId, args]); } // Fired from the backend after the command call has completed. function onOperationComplete(status, callbackId) { var callback = commandCallbacks[callbackId]; delete commandCallbacks[callbackId]; if (callback) { callback(status); } update(); } var allLogMessages = {}; // Set log for a worker version. function fillLogForVersion(container, partition_id, version) { if (!version) { return; } if (!(partition_id in allLogMessages)) { allLogMessages[partition_id] = {}; } var logMessages = allLogMessages[partition_id]; if (version.version_id in logMessages) { version.log = logMessages[version.version_id]; } else { version.log = ''; } var logAreas = container.querySelectorAll('textarea.serviceworker-log'); for (var i = 0; i < logAreas.length; ++i) { var logArea = logAreas[i]; if (logArea.partition_id == partition_id && logArea.version_id == version.version_id) { logArea.value = version.log; } } } // Get the unregistered workers. // |unregistered_registrations| will be filled with the registrations which // are in |live_registrations| but not in |stored_registrations|. // |unregistered_versions| will be filled with the versions which // are in |live_versions| but not in |stored_registrations| nor in // |live_registrations|. function getUnregisteredWorkers(stored_registrations, live_registrations, live_versions, unregistered_registrations, unregistered_versions) { var registration_id_set = {}; var version_id_set = {}; stored_registrations.forEach(function(registration) { registration_id_set[registration.registration_id] = true; }); [stored_registrations, live_registrations].forEach(function(registrations) { registrations.forEach(function(registration) { [registration.active, registration.waiting].forEach(function(version) { if (version) { version_id_set[version.version_id] = true; } }); }); }); live_registrations.forEach(function(registration) { if (!registration_id_set[registration.registration_id]) { registration.unregistered = true; unregistered_registrations.push(registration); } }); live_versions.forEach(function(version) { if (!version_id_set[version.version_id]) { unregistered_versions.push(version); } }); } // Fired once per partition from the backend. function onPartitionData(live_registrations, live_versions, stored_registrations, partition_id, partition_path) { var unregistered_registrations = []; var unregistered_versions = []; getUnregisteredWorkers(stored_registrations, live_registrations, live_versions, unregistered_registrations, unregistered_versions); var template; var container = $('serviceworker-list'); // Existing templates are keyed by partition_id. This allows // the UI to be updated in-place rather than refreshing the // whole page. for (var i = 0; i < container.childNodes.length; ++i) { if (container.childNodes[i].partition_id == partition_id) { template = container.childNodes[i]; } } // This is probably the first time we're loading. if (!template) { template = jstGetTemplate('serviceworker-list-template'); container.appendChild(template); } var fillLogFunc = fillLogForVersion.bind(this, container, partition_id); stored_registrations.forEach(function(registration) { [registration.active, registration.waiting].forEach(fillLogFunc); }); unregistered_registrations.forEach(function(registration) { [registration.active, registration.waiting].forEach(fillLogFunc); }); unregistered_versions.forEach(fillLogFunc); jstProcess(new JsEvalContext({ stored_registrations: stored_registrations, unregistered_registrations: unregistered_registrations, unregistered_versions: unregistered_versions, partition_id: partition_id, partition_path: partition_path}), template); for (var i = 0; i < COMMANDS.length; ++i) { var handler = commandHandler(COMMANDS[i]); var links = container.querySelectorAll('button.' + COMMANDS[i]); for (var j = 0; j < links.length; ++j) { if (!links[j].hasClickEvent) { links[j].addEventListener('click', handler, false); links[j].hasClickEvent = true; } } } } function onRunningStateChanged(partition_id, version_id) { update(); } function onErrorReported(partition_id, version_id, process_id, thread_id, error_info) { outputLogMessage(partition_id, version_id, 'Error: ' + JSON.stringify(error_info) + '\n'); } function onConsoleMessageReported(partition_id, version_id, process_id, thread_id, message) { outputLogMessage(partition_id, version_id, 'Console: ' + JSON.stringify(message) + '\n'); } function onVersionStateChanged(partition_id, version_id) { update(); } function onRegistrationStored(scope) { update(); } function onRegistrationDeleted(scope) { update(); } function outputLogMessage(partition_id, version_id, message) { if (!(partition_id in allLogMessages)) { allLogMessages[partition_id] = {}; } var logMessages = allLogMessages[partition_id]; if (version_id in logMessages) { logMessages[version_id] += message; } else { logMessages[version_id] = message; } var logAreas = document.querySelectorAll('textarea.serviceworker-log'); for (var i = 0; i < logAreas.length; ++i) { var logArea = logAreas[i]; if (logArea.partition_id == partition_id && logArea.version_id == version_id) { logArea.value += message; } } } return { initialize: initialize, onOptions: onOptions, onOperationComplete: onOperationComplete, onPartitionData: onPartitionData, onRunningStateChanged: onRunningStateChanged, onErrorReported: onErrorReported, onConsoleMessageReported: onConsoleMessageReported, onVersionStateChanged: onVersionStateChanged, onRegistrationStored: onRegistrationStored, onRegistrationDeleted: onRegistrationDeleted, }; }); document.addEventListener('DOMContentLoaded', serviceworker.initialize); /* Copyright 2014 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ .serviceworker-summary { background-color: rgb(235, 239, 249); border-top: 1px solid rgb(156, 194, 239); margin-bottom: 6px; margin-top: 12px; padding: 3px; font-weight: bold; } .serviceworker-item { margin-bottom: 15px; margin-top: 6px; position: relative; } .serviceworker-registration { padding: 5px; } .serviceworker-scope { color: rgb(85, 102, 221); display: inline-block; padding-bottom: 1px; padding-top: 4px; text-decoration: none; white-space: nowrap; } .serviceworker-version { padding-bottom: 3px; padding-left: 10px; } .controls a { -webkit-margin-end: 16px; color: #777; } WebRTC Internals

            // Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. var USER_MEDIA_TAB_ID = 'user-media-tab-id'; var tabView = null; var ssrcInfoManager = null; var peerConnectionUpdateTable = null; var statsTable = null; var dumpCreator = null; /** A map from peer connection id to the PeerConnectionRecord. */ var peerConnectionDataStore = {}; /** A list of getUserMedia requests. */ var userMediaRequests = []; /** A simple class to store the updates and stats data for a peer connection. */ var PeerConnectionRecord = (function() { /** @constructor */ function PeerConnectionRecord() { /** @private */ this.record_ = { constraints: {}, rtcConfiguration: [], stats: {}, updateLog: [], url: '', }; }; PeerConnectionRecord.prototype = { /** @override */ toJSON: function() { return this.record_; }, /** * Adds the initilization info of the peer connection. * @param {string} url The URL of the web page owning the peer connection. * @param {Array} rtcConfiguration * @param {!Object} constraints Media constraints. */ initialize: function(url, rtcConfiguration, constraints) { this.record_.url = url; this.record_.rtcConfiguration = rtcConfiguration; this.record_.constraints = constraints; }, /** * @param {string} dataSeriesId The TimelineDataSeries identifier. * @return {!TimelineDataSeries} */ getDataSeries: function(dataSeriesId) { return this.record_.stats[dataSeriesId]; }, /** * @param {string} dataSeriesId The TimelineDataSeries identifier. * @param {!TimelineDataSeries} dataSeries The TimelineDataSeries to set to. */ setDataSeries: function(dataSeriesId, dataSeries) { this.record_.stats[dataSeriesId] = dataSeries; }, /** * @param {!Object} update The object contains keys "time", "type", and * "value". */ addUpdate: function(update) { var time = new Date(parseFloat(update.time)); this.record_.updateLog.push({ time: time.toLocaleString(), type: update.type, value: update.value, }); }, }; return PeerConnectionRecord; })(); // The maximum number of data points bufferred for each stats. Old data points // will be shifted out when the buffer is full. var MAX_STATS_DATA_POINT_BUFFER_SIZE = 1000; // Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * A TabView provides the ability to create tabs and switch between tabs. It's * responsible for creating the DOM and managing the visibility of each tab. * The first added tab is active by default and the others hidden. */ var TabView = (function() { 'use strict'; /** * @constructor * @param {Element} root The root DOM element containing the tabs. */ function TabView(root) { this.root_ = root; this.ACTIVE_TAB_HEAD_CLASS_ = 'active-tab-head'; this.ACTIVE_TAB_BODY_CLASS_ = 'active-tab-body'; this.TAB_HEAD_CLASS_ = 'tab-head'; this.TAB_BODY_CLASS_ = 'tab-body'; /** * A mapping for an id to the tab elements. * @type {!Object} * @private */ this.tabElements_ = {}; this.headBar_ = null; this.activeTabId_ = null; this.initializeHeadBar_(); } // Creates a simple object containing the tab head and body elements. function TabDom(h, b) { this.head = h; this.body = b; } TabView.prototype = { /** * Adds a tab with the specified id and title. * @param {string} id * @param {string} title * @return {!Element} The tab body element. */ addTab: function(id, title) { if (this.tabElements_[id]) throw 'Tab already exists: ' + id; var head = document.createElement('span'); head.className = this.TAB_HEAD_CLASS_; head.textContent = title; head.title = title; this.headBar_.appendChild(head); head.addEventListener('click', this.switchTab_.bind(this, id)); var body = document.createElement('div'); body.className = this.TAB_BODY_CLASS_; body.id = id; this.root_.appendChild(body); this.tabElements_[id] = new TabDom(head, body); if (!this.activeTabId_) { this.switchTab_(id); } return this.tabElements_[id].body; }, /** Removes the tab. @param {string} id */ removeTab: function(id) { if (!this.tabElements_[id]) return; this.tabElements_[id].head.parentNode.removeChild( this.tabElements_[id].head); this.tabElements_[id].body.parentNode.removeChild( this.tabElements_[id].body); delete this.tabElements_[id]; if (this.activeTabId_ == id) { this.switchTab_(Object.keys(this.tabElements_)[0]); } }, /** * Switches the specified tab into view. * * @param {string} activeId The id the of the tab that should be switched to * active state. * @private */ switchTab_: function(activeId) { if (this.activeTabId_ && this.tabElements_[this.activeTabId_]) { this.tabElements_[this.activeTabId_].body.classList.remove( this.ACTIVE_TAB_BODY_CLASS_); this.tabElements_[this.activeTabId_].head.classList.remove( this.ACTIVE_TAB_HEAD_CLASS_); } this.activeTabId_ = activeId; if (this.tabElements_[activeId]) { this.tabElements_[activeId].body.classList.add( this.ACTIVE_TAB_BODY_CLASS_); this.tabElements_[activeId].head.classList.add( this.ACTIVE_TAB_HEAD_CLASS_); } }, /** Initializes the bar containing the tab heads. */ initializeHeadBar_: function() { this.headBar_ = document.createElement('div'); this.root_.appendChild(this.headBar_); this.headBar_.style.textAlign = 'center'; }, }; return TabView; })(); // Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * A TimelineDataSeries collects an ordered series of (time, value) pairs, * and converts them to graph points. It also keeps track of its color and * current visibility state. * It keeps MAX_STATS_DATA_POINT_BUFFER_SIZE data points at most. Old data * points will be dropped when it reaches this size. */ var TimelineDataSeries = (function() { 'use strict'; /** * @constructor */ function TimelineDataSeries() { // List of DataPoints in chronological order. this.dataPoints_ = []; // Default color. Should always be overridden prior to display. this.color_ = 'red'; // Whether or not the data series should be drawn. this.isVisible_ = true; this.cacheStartTime_ = null; this.cacheStepSize_ = 0; this.cacheValues_ = []; } TimelineDataSeries.prototype = { /** * @override */ toJSON: function() { if (this.dataPoints_.length < 1) return {}; var values = []; for (var i = 0; i < this.dataPoints_.length; ++i) { values.push(this.dataPoints_[i].value); } return { startTime: this.dataPoints_[0].time, endTime: this.dataPoints_[this.dataPoints_.length - 1].time, values: JSON.stringify(values), }; }, /** * Adds a DataPoint to |this| with the specified time and value. * DataPoints are assumed to be received in chronological order. */ addPoint: function(timeTicks, value) { var time = new Date(timeTicks); this.dataPoints_.push(new DataPoint(time, value)); if (this.dataPoints_.length > MAX_STATS_DATA_POINT_BUFFER_SIZE) this.dataPoints_.shift(); }, isVisible: function() { return this.isVisible_; }, show: function(isVisible) { this.isVisible_ = isVisible; }, getColor: function() { return this.color_; }, setColor: function(color) { this.color_ = color; }, getCount: function() { return this.dataPoints_.length; }, /** * Returns a list containing the values of the data series at |count| * points, starting at |startTime|, and |stepSize| milliseconds apart. * Caches values, so showing/hiding individual data series is fast. */ getValues: function(startTime, stepSize, count) { // Use cached values, if we can. if (this.cacheStartTime_ == startTime && this.cacheStepSize_ == stepSize && this.cacheValues_.length == count) { return this.cacheValues_; } // Do all the work. this.cacheValues_ = this.getValuesInternal_(startTime, stepSize, count); this.cacheStartTime_ = startTime; this.cacheStepSize_ = stepSize; return this.cacheValues_; }, /** * Returns the cached |values| in the specified time period. */ getValuesInternal_: function(startTime, stepSize, count) { var values = []; var nextPoint = 0; var currentValue = 0; var time = startTime; for (var i = 0; i < count; ++i) { while (nextPoint < this.dataPoints_.length && this.dataPoints_[nextPoint].time < time) { currentValue = this.dataPoints_[nextPoint].value; ++nextPoint; } values[i] = currentValue; time += stepSize; } return values; } }; /** * A single point in a data series. Each point has a time, in the form of * milliseconds since the Unix epoch, and a numeric value. * @constructor */ function DataPoint(time, value) { this.time = time; this.value = value; } return TimelineDataSeries; })(); // Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * Get the ssrc if |report| is an ssrc report. * * @param {!Object} report The object contains id, type, and stats, where stats * is the object containing timestamp and values, which is an array of * strings, whose even index entry is the name of the stat, and the odd * index entry is the value. * @return {?string} The ssrc. */ function GetSsrcFromReport(report) { if (report.type != 'ssrc') { console.warn("Trying to get ssrc from non-ssrc report."); return null; } // If the 'ssrc' name-value pair exists, return the value; otherwise, return // the report id. // The 'ssrc' name-value pair only exists in an upcoming Libjingle change. Old // versions use id to refer to the ssrc. // // TODO(jiayl): remove the fallback to id once the Libjingle change is rolled // to Chrome. if (report.stats && report.stats.values) { for (var i = 0; i < report.stats.values.length - 1; i += 2) { if (report.stats.values[i] == 'ssrc') { return report.stats.values[i + 1]; } } } return report.id; }; /** * SsrcInfoManager stores the ssrc stream info extracted from SDP. */ var SsrcInfoManager = (function() { 'use strict'; /** * @constructor */ function SsrcInfoManager() { /** * Map from ssrc id to an object containing all the stream properties. * @type {!Object>} * @private */ this.streamInfoContainer_ = {}; /** * The string separating attibutes in an SDP. * @type {string} * @const * @private */ this.ATTRIBUTE_SEPARATOR_ = /[\r,\n]/; /** * The regex separating fields within an ssrc description. * @type {RegExp} * @const * @private */ this.FIELD_SEPARATOR_REGEX_ = / .*:/; /** * The prefix string of an ssrc description. * @type {string} * @const * @private */ this.SSRC_ATTRIBUTE_PREFIX_ = 'a=ssrc:'; /** * The className of the ssrc info parent element. * @type {string} * @const */ this.SSRC_INFO_BLOCK_CLASS = 'ssrc-info-block'; } SsrcInfoManager.prototype = { /** * Extracts the stream information from |sdp| and saves it. * For example: * a=ssrc:1234 msid:abcd * a=ssrc:1234 label:hello * * @param {string} sdp The SDP string. */ addSsrcStreamInfo: function(sdp) { var attributes = sdp.split(this.ATTRIBUTE_SEPARATOR_); for (var i = 0; i < attributes.length; ++i) { // Check if this is a ssrc attribute. if (attributes[i].indexOf(this.SSRC_ATTRIBUTE_PREFIX_) != 0) continue; var nextFieldIndex = attributes[i].search(this.FIELD_SEPARATOR_REGEX_); if (nextFieldIndex == -1) continue; var ssrc = attributes[i].substring(this.SSRC_ATTRIBUTE_PREFIX_.length, nextFieldIndex); if (!this.streamInfoContainer_[ssrc]) this.streamInfoContainer_[ssrc] = {}; // Make |rest| starting at the next field. var rest = attributes[i].substring(nextFieldIndex + 1); var name, value; while (rest.length > 0) { nextFieldIndex = rest.search(this.FIELD_SEPARATOR_REGEX_); if (nextFieldIndex == -1) nextFieldIndex = rest.length; // The field name is the string before the colon. name = rest.substring(0, rest.indexOf(':')); // The field value is from after the colon to the next field. value = rest.substring(rest.indexOf(':') + 1, nextFieldIndex); this.streamInfoContainer_[ssrc][name] = value; // Move |rest| to the start of the next field. rest = rest.substring(nextFieldIndex + 1); } } }, /** * @param {string} sdp The ssrc id. * @return {!Object} The object containing the ssrc infomation. */ getStreamInfo: function(ssrc) { return this.streamInfoContainer_[ssrc]; }, /** * Populate the ssrc information into |parentElement|, each field as a * DIV element. * * @param {!Element} parentElement The parent element for the ssrc info. * @param {string} ssrc The ssrc id. */ populateSsrcInfo: function(parentElement, ssrc) { if (!this.streamInfoContainer_[ssrc]) return; parentElement.className = this.SSRC_INFO_BLOCK_CLASS; var fieldElement; for (var property in this.streamInfoContainer_[ssrc]) { fieldElement = document.createElement('div'); parentElement.appendChild(fieldElement); fieldElement.textContent = property + ':' + this.streamInfoContainer_[ssrc][property]; } } }; return SsrcInfoManager; })(); // Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // This file contains helper methods to draw the stats timeline graphs. // Each graph represents a series of stats report for a PeerConnection, // e.g. 1234-0-ssrc-abcd123-bytesSent is the graph for the series of bytesSent // for ssrc-abcd123 of PeerConnection 0 in process 1234. // The graphs are drawn as CANVAS, grouped per report type per PeerConnection. // Each group has an expand/collapse button and is collapsed initially. // // Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * A TimelineGraphView displays a timeline graph on a canvas element. */ var TimelineGraphView = (function() { 'use strict'; // Maximum number of labels placed vertically along the sides of the graph. var MAX_VERTICAL_LABELS = 6; // Vertical spacing between labels and between the graph and labels. var LABEL_VERTICAL_SPACING = 4; // Horizontal spacing between vertically placed labels and the edges of the // graph. var LABEL_HORIZONTAL_SPACING = 3; // Horizintal spacing between two horitonally placed labels along the bottom // of the graph. var LABEL_LABEL_HORIZONTAL_SPACING = 25; // Length of ticks, in pixels, next to y-axis labels. The x-axis only has // one set of labels, so it can use lines instead. var Y_AXIS_TICK_LENGTH = 10; var GRID_COLOR = '#CCC'; var TEXT_COLOR = '#000'; var BACKGROUND_COLOR = '#FFF'; var MAX_DECIMAL_PRECISION = 2; /** * @constructor */ function TimelineGraphView(divId, canvasId) { this.scrollbar_ = {position_: 0, range_: 0}; this.graphDiv_ = $(divId); this.canvas_ = $(canvasId); // Set the range and scale of the graph. Times are in milliseconds since // the Unix epoch. // All measurements we have must be after this time. this.startTime_ = 0; // The current rightmost position of the graph is always at most this. this.endTime_ = 1; this.graph_ = null; // Horizontal scale factor, in terms of milliseconds per pixel. this.scale_ = 1000; // Initialize the scrollbar. this.updateScrollbarRange_(true); } TimelineGraphView.prototype = { setScale: function(scale) { this.scale_ = scale; }, // Returns the total length of the graph, in pixels. getLength_: function() { var timeRange = this.endTime_ - this.startTime_; // Math.floor is used to ignore the last partial area, of length less // than this.scale_. return Math.floor(timeRange / this.scale_); }, /** * Returns true if the graph is scrolled all the way to the right. */ graphScrolledToRightEdge_: function() { return this.scrollbar_.position_ == this.scrollbar_.range_; }, /** * Update the range of the scrollbar. If |resetPosition| is true, also * sets the slider to point at the rightmost position and triggers a * repaint. */ updateScrollbarRange_: function(resetPosition) { var scrollbarRange = this.getLength_() - this.canvas_.width; if (scrollbarRange < 0) scrollbarRange = 0; // If we've decreased the range to less than the current scroll position, // we need to move the scroll position. if (this.scrollbar_.position_ > scrollbarRange) resetPosition = true; this.scrollbar_.range_ = scrollbarRange; if (resetPosition) { this.scrollbar_.position_ = scrollbarRange; this.repaint(); } }, /** * Sets the date range displayed on the graph, switches to the default * scale factor, and moves the scrollbar all the way to the right. */ setDateRange: function(startDate, endDate) { this.startTime_ = startDate.getTime(); this.endTime_ = endDate.getTime(); // Safety check. if (this.endTime_ <= this.startTime_) this.startTime_ = this.endTime_ - 1; this.updateScrollbarRange_(true); }, /** * Updates the end time at the right of the graph to be the current time. * Specifically, updates the scrollbar's range, and if the scrollbar is * all the way to the right, keeps it all the way to the right. Otherwise, * leaves the view as-is and doesn't redraw anything. */ updateEndDate: function(opt_date) { this.endTime_ = opt_date || (new Date()).getTime(); this.updateScrollbarRange_(this.graphScrolledToRightEdge_()); }, getStartDate: function() { return new Date(this.startTime_); }, /** * Replaces the current TimelineDataSeries with |dataSeries|. */ setDataSeries: function(dataSeries) { // Simply recreates the Graph. this.graph_ = new Graph(); for (var i = 0; i < dataSeries.length; ++i) this.graph_.addDataSeries(dataSeries[i]); this.repaint(); }, /** * Adds |dataSeries| to the current graph. */ addDataSeries: function(dataSeries) { if (!this.graph_) this.graph_ = new Graph(); this.graph_.addDataSeries(dataSeries); this.repaint(); }, /** * Draws the graph on |canvas_|. */ repaint: function() { this.repaintTimerRunning_ = false; var width = this.canvas_.width; var height = this.canvas_.height; var context = this.canvas_.getContext('2d'); // Clear the canvas. context.fillStyle = BACKGROUND_COLOR; context.fillRect(0, 0, width, height); // Try to get font height in pixels. Needed for layout. var fontHeightString = context.font.match(/([0-9]+)px/)[1]; var fontHeight = parseInt(fontHeightString); // Safety check, to avoid drawing anything too ugly. if (fontHeightString.length == 0 || fontHeight <= 0 || fontHeight * 4 > height || width < 50) { return; } // Save current transformation matrix so we can restore it later. context.save(); // The center of an HTML canvas pixel is technically at (0.5, 0.5). This // makes near straight lines look bad, due to anti-aliasing. This // translation reduces the problem a little. context.translate(0.5, 0.5); // Figure out what time values to display. var position = this.scrollbar_.position_; // If the entire time range is being displayed, align the right edge of // the graph to the end of the time range. if (this.scrollbar_.range_ == 0) position = this.getLength_() - this.canvas_.width; var visibleStartTime = this.startTime_ + position * this.scale_; // Make space at the bottom of the graph for the time labels, and then // draw the labels. var textHeight = height; height -= fontHeight + LABEL_VERTICAL_SPACING; this.drawTimeLabels(context, width, height, textHeight, visibleStartTime); // Draw outline of the main graph area. context.strokeStyle = GRID_COLOR; context.strokeRect(0, 0, width - 1, height - 1); if (this.graph_) { // Layout graph and have them draw their tick marks. this.graph_.layout( width, height, fontHeight, visibleStartTime, this.scale_); this.graph_.drawTicks(context); // Draw the lines of all graphs, and then draw their labels. this.graph_.drawLines(context); this.graph_.drawLabels(context); } // Restore original transformation matrix. context.restore(); }, /** * Draw time labels below the graph. Takes in start time as an argument * since it may not be |startTime_|, when we're displaying the entire * time range. */ drawTimeLabels: function(context, width, height, textHeight, startTime) { // Draw the labels 1 minute apart. var timeStep = 1000 * 60; // Find the time for the first label. This time is a perfect multiple of // timeStep because of how UTC times work. var time = Math.ceil(startTime / timeStep) * timeStep; context.textBaseline = 'bottom'; context.textAlign = 'center'; context.fillStyle = TEXT_COLOR; context.strokeStyle = GRID_COLOR; // Draw labels and vertical grid lines. while (true) { var x = Math.round((time - startTime) / this.scale_); if (x >= width) break; var text = (new Date(time)).toLocaleTimeString(); context.fillText(text, x, textHeight); context.beginPath(); context.lineTo(x, 0); context.lineTo(x, height); context.stroke(); time += timeStep; } }, getDataSeriesCount: function() { if (this.graph_) return this.graph_.dataSeries_.length; return 0; }, hasDataSeries: function(dataSeries) { if (this.graph_) return this.graph_.hasDataSeries(dataSeries); return false; }, }; /** * A Graph is responsible for drawing all the TimelineDataSeries that have * the same data type. Graphs are responsible for scaling the values, laying * out labels, and drawing both labels and lines for its data series. */ var Graph = (function() { /** * @constructor */ function Graph() { this.dataSeries_ = []; // Cached properties of the graph, set in layout. this.width_ = 0; this.height_ = 0; this.fontHeight_ = 0; this.startTime_ = 0; this.scale_ = 0; // The lowest/highest values adjusted by the vertical label step size // in the displayed range of the graph. Used for scaling and setting // labels. Set in layoutLabels. this.min_ = 0; this.max_ = 0; // Cached text of equally spaced labels. Set in layoutLabels. this.labels_ = []; } /** * A Label is the label at a particular position along the y-axis. * @constructor */ function Label(height, text) { this.height = height; this.text = text; } Graph.prototype = { addDataSeries: function(dataSeries) { this.dataSeries_.push(dataSeries); }, hasDataSeries: function(dataSeries) { for (var i = 0; i < this.dataSeries_.length; ++i) { if (this.dataSeries_[i] == dataSeries) return true; } return false; }, /** * Returns a list of all the values that should be displayed for a given * data series, using the current graph layout. */ getValues: function(dataSeries) { if (!dataSeries.isVisible()) return null; return dataSeries.getValues(this.startTime_, this.scale_, this.width_); }, /** * Updates the graph's layout. In particular, both the max value and * label positions are updated. Must be called before calling any of the * drawing functions. */ layout: function(width, height, fontHeight, startTime, scale) { this.width_ = width; this.height_ = height; this.fontHeight_ = fontHeight; this.startTime_ = startTime; this.scale_ = scale; // Find largest value. var max = 0, min = 0; for (var i = 0; i < this.dataSeries_.length; ++i) { var values = this.getValues(this.dataSeries_[i]); if (!values) continue; for (var j = 0; j < values.length; ++j) { if (values[j] > max) max = values[j]; else if (values[j] < min) min = values[j]; } } this.layoutLabels_(min, max); }, /** * Lays out labels and sets |max_|/|min_|, taking the time units into * consideration. |maxValue| is the actual maximum value, and * |max_| will be set to the value of the largest label, which * will be at least |maxValue|. Similar for |min_|. */ layoutLabels_: function(minValue, maxValue) { if (maxValue - minValue < 1024) { this.layoutLabelsBasic_(minValue, maxValue, MAX_DECIMAL_PRECISION); return; } // Find appropriate units to use. var units = ['', 'k', 'M', 'G', 'T', 'P']; // Units to use for labels. 0 is '1', 1 is K, etc. // We start with 1, and work our way up. var unit = 1; minValue /= 1024; maxValue /= 1024; while (units[unit + 1] && maxValue - minValue >= 1024) { minValue /= 1024; maxValue /= 1024; ++unit; } // Calculate labels. this.layoutLabelsBasic_(minValue, maxValue, MAX_DECIMAL_PRECISION); // Append units to labels. for (var i = 0; i < this.labels_.length; ++i) this.labels_[i] += ' ' + units[unit]; // Convert |min_|/|max_| back to unit '1'. this.min_ *= Math.pow(1024, unit); this.max_ *= Math.pow(1024, unit); }, /** * Same as layoutLabels_, but ignores units. |maxDecimalDigits| is the * maximum number of decimal digits allowed. The minimum allowed * difference between two adjacent labels is 10^-|maxDecimalDigits|. */ layoutLabelsBasic_: function(minValue, maxValue, maxDecimalDigits) { this.labels_ = []; var range = maxValue - minValue; // No labels if the range is 0. if (range == 0) { this.min_ = this.max_ = maxValue; return; } // The maximum number of equally spaced labels allowed. |fontHeight_| // is doubled because the top two labels are both drawn in the same // gap. var minLabelSpacing = 2 * this.fontHeight_ + LABEL_VERTICAL_SPACING; // The + 1 is for the top label. var maxLabels = 1 + this.height_ / minLabelSpacing; if (maxLabels < 2) { maxLabels = 2; } else if (maxLabels > MAX_VERTICAL_LABELS) { maxLabels = MAX_VERTICAL_LABELS; } // Initial try for step size between conecutive labels. var stepSize = Math.pow(10, -maxDecimalDigits); // Number of digits to the right of the decimal of |stepSize|. // Used for formating label strings. var stepSizeDecimalDigits = maxDecimalDigits; // Pick a reasonable step size. while (true) { // If we use a step size of |stepSize| between labels, we'll need: // // Math.ceil(range / stepSize) + 1 // // labels. The + 1 is because we need labels at both at 0 and at // the top of the graph. // Check if we can use steps of size |stepSize|. if (Math.ceil(range / stepSize) + 1 <= maxLabels) break; // Check |stepSize| * 2. if (Math.ceil(range / (stepSize * 2)) + 1 <= maxLabels) { stepSize *= 2; break; } // Check |stepSize| * 5. if (Math.ceil(range / (stepSize * 5)) + 1 <= maxLabels) { stepSize *= 5; break; } stepSize *= 10; if (stepSizeDecimalDigits > 0) --stepSizeDecimalDigits; } // Set the min/max so it's an exact multiple of the chosen step size. this.max_ = Math.ceil(maxValue / stepSize) * stepSize; this.min_ = Math.floor(minValue / stepSize) * stepSize; // Create labels. for (var label = this.max_; label >= this.min_; label -= stepSize) this.labels_.push(label.toFixed(stepSizeDecimalDigits)); }, /** * Draws tick marks for each of the labels in |labels_|. */ drawTicks: function(context) { var x1; var x2; x1 = this.width_ - 1; x2 = this.width_ - 1 - Y_AXIS_TICK_LENGTH; context.fillStyle = GRID_COLOR; context.beginPath(); for (var i = 1; i < this.labels_.length - 1; ++i) { // The rounding is needed to avoid ugly 2-pixel wide anti-aliased // lines. var y = Math.round(this.height_ * i / (this.labels_.length - 1)); context.moveTo(x1, y); context.lineTo(x2, y); } context.stroke(); }, /** * Draws a graph line for each of the data series. */ drawLines: function(context) { // Factor by which to scale all values to convert them to a number from // 0 to height - 1. var scale = 0; var bottom = this.height_ - 1; if (this.max_) scale = bottom / (this.max_ - this.min_); // Draw in reverse order, so earlier data series are drawn on top of // subsequent ones. for (var i = this.dataSeries_.length - 1; i >= 0; --i) { var values = this.getValues(this.dataSeries_[i]); if (!values) continue; context.strokeStyle = this.dataSeries_[i].getColor(); context.beginPath(); for (var x = 0; x < values.length; ++x) { // The rounding is needed to avoid ugly 2-pixel wide anti-aliased // horizontal lines. context.lineTo( x, bottom - Math.round((values[x] - this.min_) * scale)); } context.stroke(); } }, /** * Draw labels in |labels_|. */ drawLabels: function(context) { if (this.labels_.length == 0) return; var x = this.width_ - LABEL_HORIZONTAL_SPACING; // Set up the context. context.fillStyle = TEXT_COLOR; context.textAlign = 'right'; // Draw top label, which is the only one that appears below its tick // mark. context.textBaseline = 'top'; context.fillText(this.labels_[0], x, 0); // Draw all the other labels. context.textBaseline = 'bottom'; var step = (this.height_ - 1) / (this.labels_.length - 1); for (var i = 1; i < this.labels_.length; ++i) context.fillText(this.labels_[i], x, step * i); } }; return Graph; })(); return TimelineGraphView; })(); var STATS_GRAPH_CONTAINER_HEADING_CLASS = 'stats-graph-container-heading'; var RECEIVED_PROPAGATION_DELTA_LABEL = 'googReceivedPacketGroupPropagationDeltaDebug'; var RECEIVED_PACKET_GROUP_ARRIVAL_TIME_LABEL = 'googReceivedPacketGroupArrivalTimeDebug'; // Specifies which stats should be drawn on the 'bweCompound' graph and how. var bweCompoundGraphConfig = { googAvailableSendBandwidth: {color: 'red'}, googTargetEncBitrateCorrected: {color: 'purple'}, googActualEncBitrate: {color: 'orange'}, googRetransmitBitrate: {color: 'blue'}, googTransmitBitrate: {color: 'green'}, }; // Converts the last entry of |srcDataSeries| from the total amount to the // amount per second. var totalToPerSecond = function(srcDataSeries) { var length = srcDataSeries.dataPoints_.length; if (length >= 2) { var lastDataPoint = srcDataSeries.dataPoints_[length - 1]; var secondLastDataPoint = srcDataSeries.dataPoints_[length - 2]; return (lastDataPoint.value - secondLastDataPoint.value) * 1000 / (lastDataPoint.time - secondLastDataPoint.time); } return 0; }; // Converts the value of total bytes to bits per second. var totalBytesToBitsPerSecond = function(srcDataSeries) { return totalToPerSecond(srcDataSeries) * 8; }; // Specifies which stats should be converted before drawn and how. // |convertedName| is the name of the converted value, |convertFunction| // is the function used to calculate the new converted value based on the // original dataSeries. var dataConversionConfig = { packetsSent: { convertedName: 'packetsSentPerSecond', convertFunction: totalToPerSecond, }, bytesSent: { convertedName: 'bitsSentPerSecond', convertFunction: totalBytesToBitsPerSecond, }, packetsReceived: { convertedName: 'packetsReceivedPerSecond', convertFunction: totalToPerSecond, }, bytesReceived: { convertedName: 'bitsReceivedPerSecond', convertFunction: totalBytesToBitsPerSecond, }, // This is due to a bug of wrong units reported for googTargetEncBitrate. // TODO (jiayl): remove this when the unit bug is fixed. googTargetEncBitrate: { convertedName: 'googTargetEncBitrateCorrected', convertFunction: function (srcDataSeries) { var length = srcDataSeries.dataPoints_.length; var lastDataPoint = srcDataSeries.dataPoints_[length - 1]; if (lastDataPoint.value < 5000) return lastDataPoint.value * 1000; return lastDataPoint.value; } } }; // The object contains the stats names that should not be added to the graph, // even if they are numbers. var statsNameBlackList = { 'ssrc': true, 'googTrackId': true, 'googComponent': true, 'googLocalAddress': true, 'googRemoteAddress': true, 'googFingerprint': true, }; var graphViews = {}; // Returns number parsed from |value|, or NaN if the stats name is black-listed. function getNumberFromValue(name, value) { if (statsNameBlackList[name]) return NaN; return parseFloat(value); } // Adds the stats report |report| to the timeline graph for the given // |peerConnectionElement|. function drawSingleReport(peerConnectionElement, report) { var reportType = report.type; var reportId = report.id; var stats = report.stats; if (!stats || !stats.values) return; for (var i = 0; i < stats.values.length - 1; i = i + 2) { var rawLabel = stats.values[i]; // Propagation deltas are handled separately. if (rawLabel == RECEIVED_PROPAGATION_DELTA_LABEL) { drawReceivedPropagationDelta( peerConnectionElement, report, stats.values[i + 1]); continue; } var rawDataSeriesId = reportId + '-' + rawLabel; var rawValue = getNumberFromValue(rawLabel, stats.values[i + 1]); if (isNaN(rawValue)) { // We do not draw non-numerical values, but still want to record it in the // data series. addDataSeriesPoints(peerConnectionElement, rawDataSeriesId, rawLabel, [stats.timestamp], [stats.values[i + 1]]); continue; } var finalDataSeriesId = rawDataSeriesId; var finalLabel = rawLabel; var finalValue = rawValue; // We need to convert the value if dataConversionConfig[rawLabel] exists. if (dataConversionConfig[rawLabel]) { // Updates the original dataSeries before the conversion. addDataSeriesPoints(peerConnectionElement, rawDataSeriesId, rawLabel, [stats.timestamp], [rawValue]); // Convert to another value to draw on graph, using the original // dataSeries as input. finalValue = dataConversionConfig[rawLabel].convertFunction( peerConnectionDataStore[peerConnectionElement.id].getDataSeries( rawDataSeriesId)); finalLabel = dataConversionConfig[rawLabel].convertedName; finalDataSeriesId = reportId + '-' + finalLabel; } // Updates the final dataSeries to draw. addDataSeriesPoints(peerConnectionElement, finalDataSeriesId, finalLabel, [stats.timestamp], [finalValue]); // Updates the graph. var graphType = bweCompoundGraphConfig[finalLabel] ? 'bweCompound' : finalLabel; var graphViewId = peerConnectionElement.id + '-' + reportId + '-' + graphType; if (!graphViews[graphViewId]) { graphViews[graphViewId] = createStatsGraphView(peerConnectionElement, report, graphType); var date = new Date(stats.timestamp); graphViews[graphViewId].setDateRange(date, date); } // Adds the new dataSeries to the graphView. We have to do it here to cover // both the simple and compound graph cases. var dataSeries = peerConnectionDataStore[peerConnectionElement.id].getDataSeries( finalDataSeriesId); if (!graphViews[graphViewId].hasDataSeries(dataSeries)) graphViews[graphViewId].addDataSeries(dataSeries); graphViews[graphViewId].updateEndDate(); } } // Makes sure the TimelineDataSeries with id |dataSeriesId| is created, // and adds the new data points to it. |times| is the list of timestamps for // each data point, and |values| is the list of the data point values. function addDataSeriesPoints( peerConnectionElement, dataSeriesId, label, times, values) { var dataSeries = peerConnectionDataStore[peerConnectionElement.id].getDataSeries( dataSeriesId); if (!dataSeries) { dataSeries = new TimelineDataSeries(); peerConnectionDataStore[peerConnectionElement.id].setDataSeries( dataSeriesId, dataSeries); if (bweCompoundGraphConfig[label]) { dataSeries.setColor(bweCompoundGraphConfig[label].color); } } for (var i = 0; i < times.length; ++i) dataSeries.addPoint(times[i], values[i]); } // Draws the received propagation deltas using the packet group arrival time as // the x-axis. For example, |report.stats.values| should be like // ['googReceivedPacketGroupArrivalTimeDebug', '[123456, 234455, 344566]', // 'googReceivedPacketGroupPropagationDeltaDebug', '[23, 45, 56]', ...]. function drawReceivedPropagationDelta(peerConnectionElement, report, deltas) { var reportId = report.id; var stats = report.stats; var times = null; // Find the packet group arrival times. for (var i = 0; i < stats.values.length - 1; i = i + 2) { if (stats.values[i] == RECEIVED_PACKET_GROUP_ARRIVAL_TIME_LABEL) { times = stats.values[i + 1]; break; } } // Unexpected. if (times == null) return; // Convert |deltas| and |times| from strings to arrays of numbers. try { deltas = JSON.parse(deltas); times = JSON.parse(times); } catch (e) { console.log(e); return; } // Update the data series. var dataSeriesId = reportId + '-' + RECEIVED_PROPAGATION_DELTA_LABEL; addDataSeriesPoints( peerConnectionElement, dataSeriesId, RECEIVED_PROPAGATION_DELTA_LABEL, times, deltas); // Update the graph. var graphViewId = peerConnectionElement.id + '-' + reportId + '-' + RECEIVED_PROPAGATION_DELTA_LABEL; var date = new Date(times[times.length - 1]); if (!graphViews[graphViewId]) { graphViews[graphViewId] = createStatsGraphView( peerConnectionElement, report, RECEIVED_PROPAGATION_DELTA_LABEL); graphViews[graphViewId].setScale(10); graphViews[graphViewId].setDateRange(date, date); var dataSeries = peerConnectionDataStore[peerConnectionElement.id] .getDataSeries(dataSeriesId); graphViews[graphViewId].addDataSeries(dataSeries); } graphViews[graphViewId].updateEndDate(date); } // Ensures a div container to hold all stats graphs for one track is created as // a child of |peerConnectionElement|. function ensureStatsGraphTopContainer(peerConnectionElement, report) { var containerId = peerConnectionElement.id + '-' + report.type + '-' + report.id + '-graph-container'; var container = $(containerId); if (!container) { container = document.createElement('details'); container.id = containerId; container.className = 'stats-graph-container'; peerConnectionElement.appendChild(container); container.innerHTML =''; container.firstChild.firstChild.className = STATS_GRAPH_CONTAINER_HEADING_CLASS; container.firstChild.firstChild.textContent = 'Stats graphs for ' + report.id; if (report.type == 'ssrc') { var ssrcInfoElement = document.createElement('div'); container.firstChild.appendChild(ssrcInfoElement); ssrcInfoManager.populateSsrcInfo(ssrcInfoElement, GetSsrcFromReport(report)); } } return container; } // Creates the container elements holding a timeline graph // and the TimelineGraphView object. function createStatsGraphView( peerConnectionElement, report, statsName) { var topContainer = ensureStatsGraphTopContainer(peerConnectionElement, report); var graphViewId = peerConnectionElement.id + '-' + report.id + '-' + statsName; var divId = graphViewId + '-div'; var canvasId = graphViewId + '-canvas'; var container = document.createElement("div"); container.className = 'stats-graph-sub-container'; topContainer.appendChild(container); container.innerHTML = '
            ' + statsName + '
            ' + '
            '; if (statsName == 'bweCompound') { container.insertBefore( createBweCompoundLegend(peerConnectionElement, report.id), $(divId)); } return new TimelineGraphView(divId, canvasId); } // Creates the legend section for the bweCompound graph. // Returns the legend element. function createBweCompoundLegend(peerConnectionElement, reportId) { var legend = document.createElement('div'); for (var prop in bweCompoundGraphConfig) { var div = document.createElement('div'); legend.appendChild(div); div.innerHTML = '' + prop; div.style.color = bweCompoundGraphConfig[prop].color; div.dataSeriesId = reportId + '-' + prop; div.graphViewId = peerConnectionElement.id + '-' + reportId + '-bweCompound'; div.firstChild.addEventListener('click', function(event) { var target = peerConnectionDataStore[peerConnectionElement.id].getDataSeries( event.target.parentNode.dataSeriesId); target.show(event.target.checked); graphViews[event.target.parentNode.graphViewId].repaint(); }); } return legend; } // Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * Maintains the stats table. * @param {SsrcInfoManager} ssrcInfoManager The source of the ssrc info. */ var StatsTable = (function(ssrcInfoManager) { 'use strict'; /** * @param {SsrcInfoManager} ssrcInfoManager The source of the ssrc info. * @constructor */ function StatsTable(ssrcInfoManager) { /** * @type {SsrcInfoManager} * @private */ this.ssrcInfoManager_ = ssrcInfoManager; } StatsTable.prototype = { /** * Adds |report| to the stats table of |peerConnectionElement|. * * @param {!Element} peerConnectionElement The root element. * @param {!Object} report The object containing stats, which is the object * containing timestamp and values, which is an array of strings, whose * even index entry is the name of the stat, and the odd index entry is * the value. */ addStatsReport: function(peerConnectionElement, report) { var statsTable = this.ensureStatsTable_(peerConnectionElement, report); if (report.stats) { this.addStatsToTable_(statsTable, report.stats.timestamp, report.stats.values); } }, /** * Ensure the DIV container for the stats tables is created as a child of * |peerConnectionElement|. * * @param {!Element} peerConnectionElement The root element. * @return {!Element} The stats table container. * @private */ ensureStatsTableContainer_: function(peerConnectionElement) { var containerId = peerConnectionElement.id + '-table-container'; var container = $(containerId); if (!container) { container = document.createElement('div'); container.id = containerId; container.className = 'stats-table-container'; var head = document.createElement('div'); head.textContent = 'Stats Tables'; container.appendChild(head); peerConnectionElement.appendChild(container); } return container; }, /** * Ensure the stats table for track specified by |report| of PeerConnection * |peerConnectionElement| is created. * * @param {!Element} peerConnectionElement The root element. * @param {!Object} report The object containing stats, which is the object * containing timestamp and values, which is an array of strings, whose * even index entry is the name of the stat, and the odd index entry is * the value. * @return {!Element} The stats table element. * @private */ ensureStatsTable_: function(peerConnectionElement, report) { var tableId = peerConnectionElement.id + '-table-' + report.id; var table = $(tableId); if (!table) { var container = this.ensureStatsTableContainer_(peerConnectionElement); var details = document.createElement('details'); container.appendChild(details); var summary = document.createElement('summary'); summary.textContent = report.id; details.appendChild(summary); table = document.createElement('table'); details.appendChild(table); table.id = tableId; table.border = 1; table.innerHTML = ''; table.rows[0].cells[0].textContent = 'Statistics ' + report.id; if (report.type == 'ssrc') { table.insertRow(1); table.rows[1].innerHTML = ''; this.ssrcInfoManager_.populateSsrcInfo( table.rows[1].cells[0], GetSsrcFromReport(report)); } } return table; }, /** * Update |statsTable| with |time| and |statsData|. * * @param {!Element} statsTable Which table to update. * @param {number} time The number of miliseconds since epoch. * @param {Array} statsData An array of stats name and value pairs. * @private */ addStatsToTable_: function(statsTable, time, statsData) { var date = new Date(time); this.updateStatsTableRow_(statsTable, 'timestamp', date.toLocaleString()); for (var i = 0; i < statsData.length - 1; i = i + 2) { this.updateStatsTableRow_(statsTable, statsData[i], statsData[i + 1]); } }, /** * Update the value column of the stats row of |rowName| to |value|. * A new row is created is this is the first report of this stats. * * @param {!Element} statsTable Which table to update. * @param {string} rowName The name of the row to update. * @param {string} value The new value to set. * @private */ updateStatsTableRow_: function(statsTable, rowName, value) { var trId = statsTable.id + '-' + rowName; var trElement = $(trId); if (!trElement) { trElement = document.createElement('tr'); trElement.id = trId; statsTable.firstChild.appendChild(trElement); trElement.innerHTML = '' + rowName + ''; } trElement.cells[1].textContent = value; // Highlights the table for the active connection. if (rowName == 'googActiveConnection' && value == true) statsTable.parentElement.classList.add('stats-table-active-connection'); } }; return StatsTable; })(); // Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * The data of a peer connection update. * @param {number} pid The id of the renderer. * @param {number} lid The id of the peer conneciton inside a renderer. * @param {string} type The type of the update. * @param {string} value The details of the update. * @constructor */ var PeerConnectionUpdateEntry = function(pid, lid, type, value) { /** * @type {number} */ this.pid = pid; /** * @type {number} */ this.lid = lid; /** * @type {string} */ this.type = type; /** * @type {string} */ this.value = value; }; /** * Maintains the peer connection update log table. */ var PeerConnectionUpdateTable = (function() { 'use strict'; /** * @constructor */ function PeerConnectionUpdateTable() { /** * @type {string} * @const * @private */ this.UPDATE_LOG_ID_SUFFIX_ = '-update-log'; /** * @type {string} * @const * @private */ this.UPDATE_LOG_CONTAINER_CLASS_ = 'update-log-container'; /** * @type {string} * @const * @private */ this.UPDATE_LOG_TABLE_CLASS = 'update-log-table'; } PeerConnectionUpdateTable.prototype = { /** * Adds the update to the update table as a new row. The type of the update * is set to the summary of the cell; clicking the cell will reveal or hide * the details as the content of a TextArea element. * * @param {!Element} peerConnectionElement The root element. * @param {!PeerConnectionUpdateEntry} update The update to add. */ addPeerConnectionUpdate: function(peerConnectionElement, update) { var tableElement = this.ensureUpdateContainer_(peerConnectionElement); var row = document.createElement('tr'); tableElement.firstChild.appendChild(row); var time = new Date(parseFloat(update.time)); row.innerHTML = '' + time.toLocaleString() + ''; if (update.value.length == 0) { row.innerHTML += '' + update.type + ''; return; } row.innerHTML += '
            ' + update.type + '
            '; var valueContainer = document.createElement('pre'); var details = row.cells[1].childNodes[0]; details.appendChild(valueContainer); valueContainer.textContent = update.value; }, /** * Makes sure the update log table of the peer connection is created. * * @param {!Element} peerConnectionElement The root element. * @return {!Element} The log table element. * @private */ ensureUpdateContainer_: function(peerConnectionElement) { var tableId = peerConnectionElement.id + this.UPDATE_LOG_ID_SUFFIX_; var tableElement = $(tableId); if (!tableElement) { var tableContainer = document.createElement('div'); tableContainer.className = this.UPDATE_LOG_CONTAINER_CLASS_; peerConnectionElement.appendChild(tableContainer); tableElement = document.createElement('table'); tableElement.className = this.UPDATE_LOG_TABLE_CLASS; tableElement.id = tableId; tableElement.border = 1; tableContainer.appendChild(tableElement); tableElement.innerHTML = 'Time' + 'Event'; } return tableElement; } }; return PeerConnectionUpdateTable; })(); // Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * Provides the UI for dump creation. */ var DumpCreator = (function() { /** * @param {Element} containerElement The parent element of the dump creation * UI. * @constructor */ function DumpCreator(containerElement) { /** * The root element of the dump creation UI. * @type {Element} * @private */ this.root_ = document.createElement('details'); this.root_.className = 'peer-connection-dump-root'; containerElement.appendChild(this.root_); var summary = document.createElement('summary'); this.root_.appendChild(summary); summary.textContent = 'Create Dump'; var content = document.createElement('div'); this.root_.appendChild(content); content.innerHTML = '' + '

            ' + '

            A diagnostic audio recording is used for analyzing audio' + ' problems. It contains the audio played out from the speaker and' + ' recorded from the microphone and is saved to the local disk.' + ' Checking this box will enable the recording for ongoing WebRTC' + ' calls and for future WebRTC calls. When the box is unchecked or' + ' this page is closed, all ongoing recordings will be stopped and' + ' this recording functionality will be disabled for future WebRTC' + ' calls. Recordings in multiple tabs are supported as well as' + ' multiple recordings in the same tab. When enabling, you select a' + ' base filename to save the dump(s) to. The base filename will have a' + ' suffix appended to it as <base filename>.<render process' + ' ID>.<recording ID>. If recordings are' + ' disabled and then enabled using the same base filename, the' + ' file(s) will be appended to and may become invalid. It is' + ' recommended to choose a new base filename each time or move' + ' the resulting files before enabling again. If track processing is' + ' disabled (--disable-audio-track-processing): (1) Only one recording' + ' per render process is supported. (2) When the box is unchecked or' + ' this page is closed, ongoing recordings will continue until the' + ' call ends or the page with the recording is closed

            '; content.getElementsByTagName('a')[0].addEventListener( 'click', this.onDownloadData_.bind(this)); content.getElementsByTagName('input')[0].addEventListener( 'click', this.onAecRecordingChanged_.bind(this)); } DumpCreator.prototype = { // Mark the AEC recording checkbox checked. enableAecRecording: function() { this.root_.getElementsByTagName('input')[0].checked = true; }, // Mark the AEC recording checkbox unchecked. disableAecRecording: function() { this.root_.getElementsByTagName('input')[0].checked = false; }, /** * Downloads the PeerConnection updates and stats data as a file. * * @private */ onDownloadData_: function() { var dump_object = { 'getUserMedia': userMediaRequests, 'PeerConnections': peerConnectionDataStore, }; var textBlob = new Blob([JSON.stringify(dump_object, null, ' ')], {type: 'octet/stream'}); var URL = window.URL.createObjectURL(textBlob); var anchor = this.root_.getElementsByTagName('a')[0]; anchor.href = URL; anchor.download = 'webrtc_internals_dump.txt'; // The default action of the anchor will download the URL. }, /** * Handles the event of toggling the AEC recording state. * * @private */ onAecRecordingChanged_: function() { var enabled = this.root_.getElementsByTagName('input')[0].checked; if (enabled) { chrome.send('enableAecRecording'); } else { chrome.send('disableAecRecording'); } }, }; return DumpCreator; })(); function initialize() { dumpCreator = new DumpCreator($('content-root')); tabView = new TabView($('content-root')); ssrcInfoManager = new SsrcInfoManager(); peerConnectionUpdateTable = new PeerConnectionUpdateTable(); statsTable = new StatsTable(ssrcInfoManager); chrome.send('finishedDOMLoad'); // Requests stats from all peer connections every second. window.setInterval(requestStats, 1000); } document.addEventListener('DOMContentLoaded', initialize); /** Sends a request to the browser to get peer connection statistics. */ function requestStats() { if (Object.keys(peerConnectionDataStore).length > 0) chrome.send('getAllStats'); } /** * A helper function for getting a peer connection element id. * * @param {!Object} data The object containing the pid and lid * of the peer connection. * @return {string} The peer connection element id. */ function getPeerConnectionId(data) { return data.pid + '-' + data.lid; } /** * Extracts ssrc info from a setLocal/setRemoteDescription update. * * @param {!PeerConnectionUpdateEntry} data The peer connection update data. */ function extractSsrcInfo(data) { if (data.type == 'setLocalDescription' || data.type == 'setRemoteDescription') { ssrcInfoManager.addSsrcStreamInfo(data.value); } } /** * A helper function for appending a child element to |parent|. * * @param {!Element} parent The parent element. * @param {string} tag The child element tag. * @param {string} text The textContent of the new DIV. * @return {!Element} the new DIV element. */ function appendChildWithText(parent, tag, text) { var child = document.createElement(tag); child.textContent = text; parent.appendChild(child); return child; } /** * Helper for adding a peer connection update. * * @param {Element} peerConnectionElement * @param {!PeerConnectionUpdateEntry} update The peer connection update data. */ function addPeerConnectionUpdate(peerConnectionElement, update) { peerConnectionUpdateTable.addPeerConnectionUpdate(peerConnectionElement, update); extractSsrcInfo(update); peerConnectionDataStore[peerConnectionElement.id].addUpdate(update); } /** Browser message handlers. */ /** * Removes all information about a peer connection. * * @param {!Object} data The object containing the pid and lid * of a peer connection. */ function removePeerConnection(data) { var element = $(getPeerConnectionId(data)); if (element) { delete peerConnectionDataStore[element.id]; tabView.removeTab(element.id); } } /** * Adds a peer connection. * * @param {!Object} data The object containing the pid, lid, url, * rtcConfiguration, and constraints of a peer connection. */ function addPeerConnection(data) { var id = getPeerConnectionId(data); if (!peerConnectionDataStore[id]) { peerConnectionDataStore[id] = new PeerConnectionRecord(); } peerConnectionDataStore[id].initialize( data.url, data.rtcConfiguration, data.constraints); var peerConnectionElement = $(id); if (!peerConnectionElement) { peerConnectionElement = tabView.addTab(id, data.url + ' [' + id + ']'); } var p = document.createElement('p'); p.textContent = data.url + ', ' + data.rtcConfiguration + ', ' + data.constraints; peerConnectionElement.appendChild(p); return peerConnectionElement; } /** * Adds a peer connection update. * * @param {!PeerConnectionUpdateEntry} data The peer connection update data. */ function updatePeerConnection(data) { var peerConnectionElement = $(getPeerConnectionId(data)); addPeerConnectionUpdate(peerConnectionElement, data); } /** * Adds the information of all peer connections created so far. * * @param {Array} data An array of the information of all peer * connections. Each array item contains pid, lid, url, rtcConfiguration, * constraints, and an array of updates as the log. */ function updateAllPeerConnections(data) { for (var i = 0; i < data.length; ++i) { var peerConnection = addPeerConnection(data[i]); var log = data[i].log; if (!log) continue; for (var j = 0; j < log.length; ++j) { addPeerConnectionUpdate(peerConnection, log[j]); } } requestStats(); } /** * Handles the report of stats. * * @param {!Object} data The object containing pid, lid, and reports, where * reports is an array of stats reports. Each report contains id, type, * and stats, where stats is the object containing timestamp and values, * which is an array of strings, whose even index entry is the name of the * stat, and the odd index entry is the value. */ function addStats(data) { var peerConnectionElement = $(getPeerConnectionId(data)); if (!peerConnectionElement) return; for (var i = 0; i < data.reports.length; ++i) { var report = data.reports[i]; statsTable.addStatsReport(peerConnectionElement, report); drawSingleReport(peerConnectionElement, report); } } /** * Adds a getUserMedia request. * * @param {!Object} data The object containing rid {number}, pid {number}, * origin {string}, audio {string}, video {string}. */ function addGetUserMedia(data) { userMediaRequests.push(data); if (!$(USER_MEDIA_TAB_ID)) { tabView.addTab(USER_MEDIA_TAB_ID, 'GetUserMedia Requests'); } var requestDiv = document.createElement('div'); requestDiv.className = 'user-media-request-div-class'; requestDiv.rid = data.rid; $(USER_MEDIA_TAB_ID).appendChild(requestDiv); appendChildWithText(requestDiv, 'div', 'Caller origin: ' + data.origin); appendChildWithText(requestDiv, 'div', 'Caller process id: ' + data.pid); appendChildWithText(requestDiv, 'span', 'Audio Constraints').style.fontWeight = 'bold'; appendChildWithText(requestDiv, 'div', data.audio); appendChildWithText(requestDiv, 'span', 'Video Constraints').style.fontWeight = 'bold'; appendChildWithText(requestDiv, 'div', data.video); } /** * Removes the getUserMedia requests from the specified |rid|. * * @param {!Object} data The object containing rid {number}, the render id. */ function removeGetUserMediaForRenderer(data) { for (var i = userMediaRequests.length - 1; i >= 0; --i) { if (userMediaRequests[i].rid == data.rid) userMediaRequests.splice(i, 1); } var requests = $(USER_MEDIA_TAB_ID).childNodes; for (var i = 0; i < requests.length; ++i) { if (requests[i].rid == data.rid) $(USER_MEDIA_TAB_ID).removeChild(requests[i]); } if ($(USER_MEDIA_TAB_ID).childNodes.length == 0) tabView.removeTab(USER_MEDIA_TAB_ID); } /** * Notification that the AEC recording file selection dialog was cancelled, * i.e. AEC has not been enabled. */ function aecRecordingFileSelectionCancelled() { dumpCreator.disableAecRecording(); } /** * Set */ function enableAecRecording() { dumpCreator.enableAecRecording(); } // Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. define("mojo/public/js/bindings", [ "mojo/public/js/router", "mojo/public/js/core", ], function(router, core) { var Router = router.Router; var kProxyProperties = Symbol("proxyProperties"); var kStubProperties = Symbol("stubProperties"); // Public proxy class properties that are managed at runtime by the JS // bindings. See ProxyBindings below. function ProxyProperties(receiver) { this.receiver = receiver; } // TODO(hansmuller): remove then after 'Client=' has been removed from Mojom. ProxyProperties.prototype.getLocalDelegate = function() { return this.local && StubBindings(this.local).delegate; } // TODO(hansmuller): remove then after 'Client=' has been removed from Mojom. ProxyProperties.prototype.setLocalDelegate = function(impl) { if (this.local) StubBindings(this.local).delegate = impl; else throw new Error("no stub object"); } function connectionHandle(connection) { return connection && connection.router && connection.router.connector_ && connection.router.connector_.handle_; } ProxyProperties.prototype.close = function() { var handle = connectionHandle(this.connection); if (handle) core.close(handle); } // Public stub class properties that are managed at runtime by the JS // bindings. See StubBindings below. function StubProperties(delegate) { this.delegate = delegate; } StubProperties.prototype.close = function() { var handle = connectionHandle(this.connection); if (handle) core.close(handle); } // The base class for generated proxy classes. function ProxyBase(receiver) { this[kProxyProperties] = new ProxyProperties(receiver); // TODO(hansmuller): Temporary, for Chrome backwards compatibility. if (receiver instanceof Router) this.receiver_ = receiver; } // The base class for generated stub classes. function StubBase(delegate) { this[kStubProperties] = new StubProperties(delegate); } // TODO(hansmuller): remove everything except the connection property doc // after 'Client=' has been removed from Mojom. // Provides access to properties added to a proxy object without risking // Mojo interface name collisions. Unless otherwise specified, the initial // value of all properties is undefined. // // ProxyBindings(proxy).connection - The Connection object that links the // proxy for a remote Mojo service to an optional local stub for a local // service. The value of ProxyBindings(proxy).connection.remote == proxy. // // ProxyBindings(proxy).local - The "local" stub object whose delegate // implements the proxy's Mojo client interface. // // ProxyBindings(proxy).setLocalDelegate(impl) - Sets the implementation // delegate of the proxy's client stub object. This is just shorthand // for |StubBindings(ProxyBindings(proxy).local).delegate = impl|. // // ProxyBindings(proxy).getLocalDelegate() - Returns the implementation // delegate of the proxy's client stub object. This is just shorthand // for |StubBindings(ProxyBindings(proxy).local).delegate|. function ProxyBindings(proxy) { return (proxy instanceof ProxyBase) ? proxy[kProxyProperties] : proxy; } // TODO(hansmuller): remove the remote doc after 'Client=' has been // removed from Mojom. // Provides access to properties added to a stub object without risking // Mojo interface name collisions. Unless otherwise specified, the initial // value of all properties is undefined. // // StubBindings(stub).delegate - The optional implementation delegate for // the Mojo interface stub. // // StubBindings(stub).connection - The Connection object that links an // optional proxy for a remote service to this stub. The value of // StubBindings(stub).connection.local == stub. // // StubBindings(stub).remote - A proxy for the the stub's Mojo client // service. function StubBindings(stub) { return stub instanceof StubBase ? stub[kStubProperties] : stub; } var exports = {}; exports.EmptyProxy = ProxyBase; exports.EmptyStub = StubBase; exports.ProxyBase = ProxyBase; exports.ProxyBindings = ProxyBindings; exports.StubBase = StubBase; exports.StubBindings = StubBindings; return exports; });// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. define("mojo/public/js/buffer", function() { var kHostIsLittleEndian = (function () { var endianArrayBuffer = new ArrayBuffer(2); var endianUint8Array = new Uint8Array(endianArrayBuffer); var endianUint16Array = new Uint16Array(endianArrayBuffer); endianUint16Array[0] = 1; return endianUint8Array[0] == 1; })(); var kHighWordMultiplier = 0x100000000; function Buffer(sizeOrArrayBuffer) { if (sizeOrArrayBuffer instanceof ArrayBuffer) this.arrayBuffer = sizeOrArrayBuffer; else this.arrayBuffer = new ArrayBuffer(sizeOrArrayBuffer); this.dataView = new DataView(this.arrayBuffer); this.next = 0; } Object.defineProperty(Buffer.prototype, "byteLength", { get: function() { return this.arrayBuffer.byteLength; } }); Buffer.prototype.alloc = function(size) { var pointer = this.next; this.next += size; if (this.next > this.byteLength) { var newSize = (1.5 * (this.byteLength + size)) | 0; this.grow(newSize); } return pointer; }; function copyArrayBuffer(dstArrayBuffer, srcArrayBuffer) { (new Uint8Array(dstArrayBuffer)).set(new Uint8Array(srcArrayBuffer)); } Buffer.prototype.grow = function(size) { var newArrayBuffer = new ArrayBuffer(size); copyArrayBuffer(newArrayBuffer, this.arrayBuffer); this.arrayBuffer = newArrayBuffer; this.dataView = new DataView(this.arrayBuffer); }; Buffer.prototype.trim = function() { this.arrayBuffer = this.arrayBuffer.slice(0, this.next); this.dataView = new DataView(this.arrayBuffer); }; Buffer.prototype.getUint8 = function(offset) { return this.dataView.getUint8(offset); } Buffer.prototype.getUint16 = function(offset) { return this.dataView.getUint16(offset, kHostIsLittleEndian); } Buffer.prototype.getUint32 = function(offset) { return this.dataView.getUint32(offset, kHostIsLittleEndian); } Buffer.prototype.getUint64 = function(offset) { var lo, hi; if (kHostIsLittleEndian) { lo = this.dataView.getUint32(offset, kHostIsLittleEndian); hi = this.dataView.getUint32(offset + 4, kHostIsLittleEndian); } else { hi = this.dataView.getUint32(offset, kHostIsLittleEndian); lo = this.dataView.getUint32(offset + 4, kHostIsLittleEndian); } return lo + hi * kHighWordMultiplier; } Buffer.prototype.getInt8 = function(offset) { return this.dataView.getInt8(offset); } Buffer.prototype.getInt16 = function(offset) { return this.dataView.getInt16(offset, kHostIsLittleEndian); } Buffer.prototype.getInt32 = function(offset) { return this.dataView.getInt32(offset, kHostIsLittleEndian); } Buffer.prototype.getInt64 = function(offset) { var lo, hi; if (kHostIsLittleEndian) { lo = this.dataView.getUint32(offset, kHostIsLittleEndian); hi = this.dataView.getInt32(offset + 4, kHostIsLittleEndian); } else { hi = this.dataView.getInt32(offset, kHostIsLittleEndian); lo = this.dataView.getUint32(offset + 4, kHostIsLittleEndian); } return lo + hi * kHighWordMultiplier; } Buffer.prototype.getFloat32 = function(offset) { return this.dataView.getFloat32(offset, kHostIsLittleEndian); } Buffer.prototype.getFloat64 = function(offset) { return this.dataView.getFloat64(offset, kHostIsLittleEndian); } Buffer.prototype.setUint8 = function(offset, value) { this.dataView.setUint8(offset, value); } Buffer.prototype.setUint16 = function(offset, value) { this.dataView.setUint16(offset, value, kHostIsLittleEndian); } Buffer.prototype.setUint32 = function(offset, value) { this.dataView.setUint32(offset, value, kHostIsLittleEndian); } Buffer.prototype.setUint64 = function(offset, value) { var hi = (value / kHighWordMultiplier) | 0; if (kHostIsLittleEndian) { this.dataView.setInt32(offset, value, kHostIsLittleEndian); this.dataView.setInt32(offset + 4, hi, kHostIsLittleEndian); } else { this.dataView.setInt32(offset, hi, kHostIsLittleEndian); this.dataView.setInt32(offset + 4, value, kHostIsLittleEndian); } } Buffer.prototype.setInt8 = function(offset, value) { this.dataView.setInt8(offset, value); } Buffer.prototype.setInt16 = function(offset, value) { this.dataView.setInt16(offset, value, kHostIsLittleEndian); } Buffer.prototype.setInt32 = function(offset, value) { this.dataView.setInt32(offset, value, kHostIsLittleEndian); } Buffer.prototype.setInt64 = function(offset, value) { var hi = Math.floor(value / kHighWordMultiplier); if (kHostIsLittleEndian) { this.dataView.setInt32(offset, value, kHostIsLittleEndian); this.dataView.setInt32(offset + 4, hi, kHostIsLittleEndian); } else { this.dataView.setInt32(offset, hi, kHostIsLittleEndian); this.dataView.setInt32(offset + 4, value, kHostIsLittleEndian); } } Buffer.prototype.setFloat32 = function(offset, value) { this.dataView.setFloat32(offset, value, kHostIsLittleEndian); } Buffer.prototype.setFloat64 = function(offset, value) { this.dataView.setFloat64(offset, value, kHostIsLittleEndian); } var exports = {}; exports.Buffer = Buffer; return exports; }); // Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. define("mojo/public/js/codec", [ "mojo/public/js/unicode", "mojo/public/js/buffer", ], function(unicode, buffer) { var kErrorUnsigned = "Passing negative value to unsigned"; var kErrorArray = "Passing non Array for array type"; var kErrorString = "Passing non String for string type"; var kErrorMap = "Passing non Map for map type"; // Memory ------------------------------------------------------------------- var kAlignment = 8; function align(size) { return size + (kAlignment - (size % kAlignment)) % kAlignment; } function isAligned(offset) { return offset >= 0 && (offset % kAlignment) === 0; } // Constants ---------------------------------------------------------------- var kArrayHeaderSize = 8; var kStructHeaderSize = 8; var kMessageHeaderSize = 16; var kMessageWithRequestIDHeaderSize = 24; var kMapStructPayloadSize = 16; var kStructHeaderNumBytesOffset = 0; var kStructHeaderVersionOffset = 4; var kEncodedInvalidHandleValue = 0xFFFFFFFF; // Decoder ------------------------------------------------------------------ function Decoder(buffer, handles, base) { this.buffer = buffer; this.handles = handles; this.base = base; this.next = base; } Decoder.prototype.skip = function(offset) { this.next += offset; }; Decoder.prototype.readInt8 = function() { var result = this.buffer.getInt8(this.next); this.next += 1; return result; }; Decoder.prototype.readUint8 = function() { var result = this.buffer.getUint8(this.next); this.next += 1; return result; }; Decoder.prototype.readInt16 = function() { var result = this.buffer.getInt16(this.next); this.next += 2; return result; }; Decoder.prototype.readUint16 = function() { var result = this.buffer.getUint16(this.next); this.next += 2; return result; }; Decoder.prototype.readInt32 = function() { var result = this.buffer.getInt32(this.next); this.next += 4; return result; }; Decoder.prototype.readUint32 = function() { var result = this.buffer.getUint32(this.next); this.next += 4; return result; }; Decoder.prototype.readInt64 = function() { var result = this.buffer.getInt64(this.next); this.next += 8; return result; }; Decoder.prototype.readUint64 = function() { var result = this.buffer.getUint64(this.next); this.next += 8; return result; }; Decoder.prototype.readFloat = function() { var result = this.buffer.getFloat32(this.next); this.next += 4; return result; }; Decoder.prototype.readDouble = function() { var result = this.buffer.getFloat64(this.next); this.next += 8; return result; }; Decoder.prototype.decodePointer = function() { // TODO(abarth): To correctly decode a pointer, we need to know the real // base address of the array buffer. var offsetPointer = this.next; var offset = this.readUint64(); if (!offset) return 0; return offsetPointer + offset; }; Decoder.prototype.decodeAndCreateDecoder = function(pointer) { return new Decoder(this.buffer, this.handles, pointer); }; Decoder.prototype.decodeHandle = function() { return this.handles[this.readUint32()] || null; }; Decoder.prototype.decodeString = function() { var numberOfBytes = this.readUint32(); var numberOfElements = this.readUint32(); var base = this.next; this.next += numberOfElements; return unicode.decodeUtf8String( new Uint8Array(this.buffer.arrayBuffer, base, numberOfElements)); }; Decoder.prototype.decodeArray = function(cls) { var numberOfBytes = this.readUint32(); var numberOfElements = this.readUint32(); var val = new Array(numberOfElements); if (cls === PackedBool) { var byte; for (var i = 0; i < numberOfElements; ++i) { if (i % 8 === 0) byte = this.readUint8(); val[i] = (byte & (1 << i % 8)) ? true : false; } } else { for (var i = 0; i < numberOfElements; ++i) { val[i] = cls.decode(this); } } return val; }; Decoder.prototype.decodeStruct = function(cls) { return cls.decode(this); }; Decoder.prototype.decodeStructPointer = function(cls) { var pointer = this.decodePointer(); if (!pointer) { return null; } return cls.decode(this.decodeAndCreateDecoder(pointer)); }; Decoder.prototype.decodeArrayPointer = function(cls) { var pointer = this.decodePointer(); if (!pointer) { return null; } return this.decodeAndCreateDecoder(pointer).decodeArray(cls); }; Decoder.prototype.decodeStringPointer = function() { var pointer = this.decodePointer(); if (!pointer) { return null; } return this.decodeAndCreateDecoder(pointer).decodeString(); }; Decoder.prototype.decodeMap = function(keyClass, valueClass) { this.skip(4); // numberOfBytes this.skip(4); // version var keys = this.decodeArrayPointer(keyClass); var values = this.decodeArrayPointer(valueClass); var val = new Map(); for (var i = 0; i < keys.length; i++) val.set(keys[i], values[i]); return val; }; Decoder.prototype.decodeMapPointer = function(keyClass, valueClass) { var pointer = this.decodePointer(); if (!pointer) { return null; } var decoder = this.decodeAndCreateDecoder(pointer); return decoder.decodeMap(keyClass, valueClass); }; // Encoder ------------------------------------------------------------------ function Encoder(buffer, handles, base) { this.buffer = buffer; this.handles = handles; this.base = base; this.next = base; } Encoder.prototype.skip = function(offset) { this.next += offset; }; Encoder.prototype.writeInt8 = function(val) { this.buffer.setInt8(this.next, val); this.next += 1; }; Encoder.prototype.writeUint8 = function(val) { if (val < 0) { throw new Error(kErrorUnsigned); } this.buffer.setUint8(this.next, val); this.next += 1; }; Encoder.prototype.writeInt16 = function(val) { this.buffer.setInt16(this.next, val); this.next += 2; }; Encoder.prototype.writeUint16 = function(val) { if (val < 0) { throw new Error(kErrorUnsigned); } this.buffer.setUint16(this.next, val); this.next += 2; }; Encoder.prototype.writeInt32 = function(val) { this.buffer.setInt32(this.next, val); this.next += 4; }; Encoder.prototype.writeUint32 = function(val) { if (val < 0) { throw new Error(kErrorUnsigned); } this.buffer.setUint32(this.next, val); this.next += 4; }; Encoder.prototype.writeInt64 = function(val) { this.buffer.setInt64(this.next, val); this.next += 8; }; Encoder.prototype.writeUint64 = function(val) { if (val < 0) { throw new Error(kErrorUnsigned); } this.buffer.setUint64(this.next, val); this.next += 8; }; Encoder.prototype.writeFloat = function(val) { this.buffer.setFloat32(this.next, val); this.next += 4; }; Encoder.prototype.writeDouble = function(val) { this.buffer.setFloat64(this.next, val); this.next += 8; }; Encoder.prototype.encodePointer = function(pointer) { if (!pointer) return this.writeUint64(0); // TODO(abarth): To correctly encode a pointer, we need to know the real // base address of the array buffer. var offset = pointer - this.next; this.writeUint64(offset); }; Encoder.prototype.createAndEncodeEncoder = function(size) { var pointer = this.buffer.alloc(align(size)); this.encodePointer(pointer); return new Encoder(this.buffer, this.handles, pointer); }; Encoder.prototype.encodeHandle = function(handle) { this.handles.push(handle); this.writeUint32(this.handles.length - 1); }; Encoder.prototype.encodeString = function(val) { var base = this.next + kArrayHeaderSize; var numberOfElements = unicode.encodeUtf8String( val, new Uint8Array(this.buffer.arrayBuffer, base)); var numberOfBytes = kArrayHeaderSize + numberOfElements; this.writeUint32(numberOfBytes); this.writeUint32(numberOfElements); this.next += numberOfElements; }; Encoder.prototype.encodeArray = function(cls, val, numberOfElements, encodedSize) { if (numberOfElements === undefined) numberOfElements = val.length; if (encodedSize === undefined) encodedSize = kArrayHeaderSize + cls.encodedSize * numberOfElements; this.writeUint32(encodedSize); this.writeUint32(numberOfElements); if (cls === PackedBool) { var byte = 0; for (i = 0; i < numberOfElements; ++i) { if (val[i]) byte |= (1 << i % 8); if (i % 8 === 7 || i == numberOfElements - 1) { Uint8.encode(this, byte); byte = 0; } } } else { for (var i = 0; i < numberOfElements; ++i) cls.encode(this, val[i]); } }; Encoder.prototype.encodeStruct = function(cls, val) { return cls.encode(this, val); }; Encoder.prototype.encodeStructPointer = function(cls, val) { if (val == null) { // Also handles undefined, since undefined == null. this.encodePointer(val); return; } var encoder = this.createAndEncodeEncoder(cls.encodedSize); cls.encode(encoder, val); }; Encoder.prototype.encodeArrayPointer = function(cls, val) { if (val == null) { // Also handles undefined, since undefined == null. this.encodePointer(val); return; } var numberOfElements = val.length; if (!Number.isSafeInteger(numberOfElements) || numberOfElements < 0) throw new Error(kErrorArray); var encodedSize = kArrayHeaderSize + ((cls === PackedBool) ? Math.ceil(numberOfElements / 8) : cls.encodedSize * numberOfElements); var encoder = this.createAndEncodeEncoder(encodedSize); encoder.encodeArray(cls, val, numberOfElements, encodedSize); }; Encoder.prototype.encodeStringPointer = function(val) { if (val == null) { // Also handles undefined, since undefined == null. this.encodePointer(val); return; } // Only accepts string primivites, not String Objects like new String("foo") if (typeof(val) !== "string") { throw new Error(kErrorString); } var encodedSize = kArrayHeaderSize + unicode.utf8Length(val); var encoder = this.createAndEncodeEncoder(encodedSize); encoder.encodeString(val); }; Encoder.prototype.encodeMap = function(keyClass, valueClass, val) { var keys = new Array(val.size); var values = new Array(val.size); var i = 0; val.forEach(function(value, key) { values[i] = value; keys[i++] = key; }); this.writeUint32(kStructHeaderSize + kMapStructPayloadSize); // TODO(yzshen): In order to work with other bindings which still interprets // the |version| field as |num_fields|, set it to version 2 for now. this.writeUint32(2); // version this.encodeArrayPointer(keyClass, keys); this.encodeArrayPointer(valueClass, values); } Encoder.prototype.encodeMapPointer = function(keyClass, valueClass, val) { if (val == null) { // Also handles undefined, since undefined == null. this.encodePointer(val); return; } if (!(val instanceof Map)) { throw new Error(kErrorMap); } var encodedSize = kStructHeaderSize + kMapStructPayloadSize; var encoder = this.createAndEncodeEncoder(encodedSize); encoder.encodeMap(keyClass, valueClass, val); }; // Message ------------------------------------------------------------------ var kMessageNameOffset = kStructHeaderSize; var kMessageFlagsOffset = kMessageNameOffset + 4; var kMessageRequestIDOffset = kMessageFlagsOffset + 4; var kMessageExpectsResponse = 1 << 0; var kMessageIsResponse = 1 << 1; function Message(buffer, handles) { this.buffer = buffer; this.handles = handles; } Message.prototype.getHeaderNumBytes = function() { return this.buffer.getUint32(kStructHeaderNumBytesOffset); }; Message.prototype.getHeaderVersion = function() { return this.buffer.getUint32(kStructHeaderVersionOffset); }; Message.prototype.getName = function() { return this.buffer.getUint32(kMessageNameOffset); }; Message.prototype.getFlags = function() { return this.buffer.getUint32(kMessageFlagsOffset); }; Message.prototype.isResponse = function() { return (this.getFlags() & kMessageIsResponse) != 0; }; Message.prototype.expectsResponse = function() { return (this.getFlags() & kMessageExpectsResponse) != 0; }; Message.prototype.setRequestID = function(requestID) { // TODO(darin): Verify that space was reserved for this field! this.buffer.setUint64(kMessageRequestIDOffset, requestID); }; // MessageBuilder ----------------------------------------------------------- function MessageBuilder(messageName, payloadSize) { // Currently, we don't compute the payload size correctly ahead of time. // Instead, we resize the buffer at the end. var numberOfBytes = kMessageHeaderSize + payloadSize; this.buffer = new buffer.Buffer(numberOfBytes); this.handles = []; var encoder = this.createEncoder(kMessageHeaderSize); encoder.writeUint32(kMessageHeaderSize); // TODO(yzshen): In order to work with other bindings which still interprets // the |version| field as |num_fields|, set it to version 2 for now. encoder.writeUint32(2); // version. encoder.writeUint32(messageName); encoder.writeUint32(0); // flags. } MessageBuilder.prototype.createEncoder = function(size) { var pointer = this.buffer.alloc(size); return new Encoder(this.buffer, this.handles, pointer); }; MessageBuilder.prototype.encodeStruct = function(cls, val) { cls.encode(this.createEncoder(cls.encodedSize), val); }; MessageBuilder.prototype.finish = function() { // TODO(abarth): Rather than resizing the buffer at the end, we could // compute the size we need ahead of time, like we do in C++. this.buffer.trim(); var message = new Message(this.buffer, this.handles); this.buffer = null; this.handles = null; this.encoder = null; return message; }; // MessageWithRequestIDBuilder ----------------------------------------------- function MessageWithRequestIDBuilder(messageName, payloadSize, flags, requestID) { // Currently, we don't compute the payload size correctly ahead of time. // Instead, we resize the buffer at the end. var numberOfBytes = kMessageWithRequestIDHeaderSize + payloadSize; this.buffer = new buffer.Buffer(numberOfBytes); this.handles = []; var encoder = this.createEncoder(kMessageWithRequestIDHeaderSize); encoder.writeUint32(kMessageWithRequestIDHeaderSize); // TODO(yzshen): In order to work with other bindings which still interprets // the |version| field as |num_fields|, set it to version 3 for now. encoder.writeUint32(3); // version. encoder.writeUint32(messageName); encoder.writeUint32(flags); encoder.writeUint64(requestID); } MessageWithRequestIDBuilder.prototype = Object.create(MessageBuilder.prototype); MessageWithRequestIDBuilder.prototype.constructor = MessageWithRequestIDBuilder; // MessageReader ------------------------------------------------------------ function MessageReader(message) { this.decoder = new Decoder(message.buffer, message.handles, 0); var messageHeaderSize = this.decoder.readUint32(); this.payloadSize = message.buffer.byteLength - messageHeaderSize; var version = this.decoder.readUint32(); this.messageName = this.decoder.readUint32(); this.flags = this.decoder.readUint32(); if (version >= 3) this.requestID = this.decoder.readUint64(); this.decoder.skip(messageHeaderSize - this.decoder.next); } MessageReader.prototype.decodeStruct = function(cls) { return cls.decode(this.decoder); }; // Built-in types ----------------------------------------------------------- // This type is only used with ArrayOf(PackedBool). function PackedBool() { } function Int8() { } Int8.encodedSize = 1; Int8.decode = function(decoder) { return decoder.readInt8(); }; Int8.encode = function(encoder, val) { encoder.writeInt8(val); }; Uint8.encode = function(encoder, val) { encoder.writeUint8(val); }; function Uint8() { } Uint8.encodedSize = 1; Uint8.decode = function(decoder) { return decoder.readUint8(); }; Uint8.encode = function(encoder, val) { encoder.writeUint8(val); }; function Int16() { } Int16.encodedSize = 2; Int16.decode = function(decoder) { return decoder.readInt16(); }; Int16.encode = function(encoder, val) { encoder.writeInt16(val); }; function Uint16() { } Uint16.encodedSize = 2; Uint16.decode = function(decoder) { return decoder.readUint16(); }; Uint16.encode = function(encoder, val) { encoder.writeUint16(val); }; function Int32() { } Int32.encodedSize = 4; Int32.decode = function(decoder) { return decoder.readInt32(); }; Int32.encode = function(encoder, val) { encoder.writeInt32(val); }; function Uint32() { } Uint32.encodedSize = 4; Uint32.decode = function(decoder) { return decoder.readUint32(); }; Uint32.encode = function(encoder, val) { encoder.writeUint32(val); }; function Int64() { } Int64.encodedSize = 8; Int64.decode = function(decoder) { return decoder.readInt64(); }; Int64.encode = function(encoder, val) { encoder.writeInt64(val); }; function Uint64() { } Uint64.encodedSize = 8; Uint64.decode = function(decoder) { return decoder.readUint64(); }; Uint64.encode = function(encoder, val) { encoder.writeUint64(val); }; function String() { }; String.encodedSize = 8; String.decode = function(decoder) { return decoder.decodeStringPointer(); }; String.encode = function(encoder, val) { encoder.encodeStringPointer(val); }; function NullableString() { } NullableString.encodedSize = String.encodedSize; NullableString.decode = String.decode; NullableString.encode = String.encode; function Float() { } Float.encodedSize = 4; Float.decode = function(decoder) { return decoder.readFloat(); }; Float.encode = function(encoder, val) { encoder.writeFloat(val); }; function Double() { } Double.encodedSize = 8; Double.decode = function(decoder) { return decoder.readDouble(); }; Double.encode = function(encoder, val) { encoder.writeDouble(val); }; function PointerTo(cls) { this.cls = cls; } PointerTo.prototype.encodedSize = 8; PointerTo.prototype.decode = function(decoder) { var pointer = decoder.decodePointer(); if (!pointer) { return null; } return this.cls.decode(decoder.decodeAndCreateDecoder(pointer)); }; PointerTo.prototype.encode = function(encoder, val) { if (!val) { encoder.encodePointer(val); return; } var objectEncoder = encoder.createAndEncodeEncoder(this.cls.encodedSize); this.cls.encode(objectEncoder, val); }; function NullablePointerTo(cls) { PointerTo.call(this, cls); } NullablePointerTo.prototype = Object.create(PointerTo.prototype); function ArrayOf(cls, length) { this.cls = cls; this.length = length || 0; } ArrayOf.prototype.encodedSize = 8; ArrayOf.prototype.dimensions = function() { return [this.length].concat( (this.cls instanceof ArrayOf) ? this.cls.dimensions() : []); } ArrayOf.prototype.decode = function(decoder) { return decoder.decodeArrayPointer(this.cls); }; ArrayOf.prototype.encode = function(encoder, val) { encoder.encodeArrayPointer(this.cls, val); }; function NullableArrayOf(cls) { ArrayOf.call(this, cls); } NullableArrayOf.prototype = Object.create(ArrayOf.prototype); function Handle() { } Handle.encodedSize = 4; Handle.decode = function(decoder) { return decoder.decodeHandle(); }; Handle.encode = function(encoder, val) { encoder.encodeHandle(val); }; function NullableHandle() { } NullableHandle.encodedSize = Handle.encodedSize; NullableHandle.decode = Handle.decode; NullableHandle.encode = Handle.encode; function MapOf(keyClass, valueClass) { this.keyClass = keyClass; this.valueClass = valueClass; } MapOf.prototype.encodedSize = 8; MapOf.prototype.decode = function(decoder) { return decoder.decodeMapPointer(this.keyClass, this.valueClass); }; MapOf.prototype.encode = function(encoder, val) { encoder.encodeMapPointer(this.keyClass, this.valueClass, val); }; function NullableMapOf(keyClass, valueClass) { MapOf.call(this, keyClass, valueClass); } NullableMapOf.prototype = Object.create(MapOf.prototype); var exports = {}; exports.align = align; exports.isAligned = isAligned; exports.Message = Message; exports.MessageBuilder = MessageBuilder; exports.MessageWithRequestIDBuilder = MessageWithRequestIDBuilder; exports.MessageReader = MessageReader; exports.kArrayHeaderSize = kArrayHeaderSize; exports.kMapStructPayloadSize = kMapStructPayloadSize; exports.kStructHeaderSize = kStructHeaderSize; exports.kEncodedInvalidHandleValue = kEncodedInvalidHandleValue; exports.kMessageHeaderSize = kMessageHeaderSize; exports.kMessageWithRequestIDHeaderSize = kMessageWithRequestIDHeaderSize; exports.kMessageExpectsResponse = kMessageExpectsResponse; exports.kMessageIsResponse = kMessageIsResponse; exports.Int8 = Int8; exports.Uint8 = Uint8; exports.Int16 = Int16; exports.Uint16 = Uint16; exports.Int32 = Int32; exports.Uint32 = Uint32; exports.Int64 = Int64; exports.Uint64 = Uint64; exports.Float = Float; exports.Double = Double; exports.String = String; exports.NullableString = NullableString; exports.PointerTo = PointerTo; exports.NullablePointerTo = NullablePointerTo; exports.ArrayOf = ArrayOf; exports.NullableArrayOf = NullableArrayOf; exports.PackedBool = PackedBool; exports.Handle = Handle; exports.NullableHandle = NullableHandle; exports.MapOf = MapOf; exports.NullableMapOf = NullableMapOf; return exports; }); // Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. define("mojo/public/js/connection", [ "mojo/public/js/bindings", "mojo/public/js/connector", "mojo/public/js/core", "mojo/public/js/router", ], function(bindings, connector, core, router) { var Router = router.Router; var EmptyProxy = bindings.EmptyProxy; var EmptyStub = bindings.EmptyStub; var ProxyBindings = bindings.ProxyBindings; var StubBindings = bindings.StubBindings; var TestConnector = connector.TestConnector; var TestRouter = router.TestRouter; // TODO(hansmuller): the proxy receiver_ property should be receiver$ function BaseConnection(localStub, remoteProxy, router) { this.router_ = router; this.local = localStub; this.remote = remoteProxy; this.router_.setIncomingReceiver(localStub); if (this.remote) this.remote.receiver_ = router; // Validate incoming messages: remote responses and local requests. var validateRequest = localStub && localStub.validator; var validateResponse = remoteProxy && remoteProxy.validator; var payloadValidators = []; if (validateRequest) payloadValidators.push(validateRequest); if (validateResponse) payloadValidators.push(validateResponse); this.router_.setPayloadValidators(payloadValidators); } BaseConnection.prototype.close = function() { this.router_.close(); this.router_ = null; this.local = null; this.remote = null; }; BaseConnection.prototype.encounteredError = function() { return this.router_.encounteredError(); }; function Connection( handle, localFactory, remoteFactory, routerFactory, connectorFactory) { var routerClass = routerFactory || Router; var router = new routerClass(handle, connectorFactory); var remoteProxy = remoteFactory && new remoteFactory(router); var localStub = localFactory && new localFactory(remoteProxy); BaseConnection.call(this, localStub, remoteProxy, router); } Connection.prototype = Object.create(BaseConnection.prototype); // The TestConnection subclass is only intended to be used in unit tests. function TestConnection(handle, localFactory, remoteFactory) { Connection.call(this, handle, localFactory, remoteFactory, TestRouter, TestConnector); } TestConnection.prototype = Object.create(Connection.prototype); // Return a handle for a message pipe that's connected to a proxy // for remoteInterface. Used by generated code for outgoing interface& // (request) parameters: the caller is given the generated proxy via // |proxyCallback(proxy)| and the generated code sends the handle // returned by this function. function bindProxy(proxyCallback, remoteInterface) { var messagePipe = core.createMessagePipe(); if (messagePipe.result != core.RESULT_OK) throw new Error("createMessagePipe failed " + messagePipe.result); var proxy = new remoteInterface.proxyClass; var router = new Router(messagePipe.handle0); var connection = new BaseConnection(undefined, proxy, router); ProxyBindings(proxy).connection = connection; if (proxyCallback) proxyCallback(proxy); return messagePipe.handle1; } // Return a handle for a message pipe that's connected to a stub for // localInterface. Used by generated code for outgoing interface // parameters: the caller is given the generated stub via // |stubCallback(stub)| and the generated code sends the handle // returned by this function. The caller is responsible for managing // the lifetime of the stub and for setting it's implementation // delegate with: StubBindings(stub).delegate = myImpl; function bindImpl(stubCallback, localInterface) { var messagePipe = core.createMessagePipe(); if (messagePipe.result != core.RESULT_OK) throw new Error("createMessagePipe failed " + messagePipe.result); var stub = new localInterface.stubClass; var router = new Router(messagePipe.handle0); var connection = new BaseConnection(stub, undefined, router); StubBindings(stub).connection = connection; if (stubCallback) stubCallback(stub); return messagePipe.handle1; } // Return a remoteInterface proxy for handle. Used by generated code // for converting incoming interface parameters to proxies. function bindHandleToProxy(handle, remoteInterface) { if (!core.isHandle(handle)) throw new Error("Not a handle " + handle); var proxy = new remoteInterface.proxyClass; var router = new Router(handle); var connection = new BaseConnection(undefined, proxy, router); ProxyBindings(proxy).connection = connection; return proxy; } // Return a localInterface stub for handle. Used by generated code // for converting incoming interface& request parameters to localInterface // stubs. The caller can specify the stub's implementation of localInterface // like this: StubBindings(stub).delegate = myStubImpl. function bindHandleToStub(handle, localInterface) { if (!core.isHandle(handle)) throw new Error("Not a handle " + handle); var stub = new localInterface.stubClass; var router = new Router(handle); var connection = new BaseConnection(stub, undefined, router); StubBindings(stub).connection = connection; return stub; } var exports = {}; exports.Connection = Connection; exports.TestConnection = TestConnection; exports.bindProxy = bindProxy; exports.bindImpl = bindImpl; exports.bindHandleToProxy = bindHandleToProxy; exports.bindHandleToStub = bindHandleToStub; return exports; }); // Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. define("mojo/public/js/connector", [ "mojo/public/js/buffer", "mojo/public/js/codec", "mojo/public/js/core", "mojo/public/js/support", ], function(buffer, codec, core, support) { function Connector(handle) { if (!core.isHandle(handle)) throw new Error("Connector: not a handle " + handle); this.handle_ = handle; this.dropWrites_ = false; this.error_ = false; this.incomingReceiver_ = null; this.readWaitCookie_ = null; this.errorHandler_ = null; if (handle) this.waitToReadMore_(); } Connector.prototype.close = function() { if (this.readWaitCookie_) { support.cancelWait(this.readWaitCookie_); this.readWaitCookie_ = null; } if (this.handle_ != null) { core.close(this.handle_); this.handle_ = null; } }; Connector.prototype.accept = function(message) { if (this.error_) return false; if (this.dropWrites_) return true; var result = core.writeMessage(this.handle_, new Uint8Array(message.buffer.arrayBuffer), message.handles, core.WRITE_MESSAGE_FLAG_NONE); switch (result) { case core.RESULT_OK: // The handles were successfully transferred, so we don't own them // anymore. message.handles = []; break; case core.RESULT_FAILED_PRECONDITION: // There's no point in continuing to write to this pipe since the other // end is gone. Avoid writing any future messages. Hide write failures // from the caller since we'd like them to continue consuming any // backlog of incoming messages before regarding the message pipe as // closed. this.dropWrites_ = true; break; default: // This particular write was rejected, presumably because of bad input. // The pipe is not necessarily in a bad state. return false; } return true; }; Connector.prototype.setIncomingReceiver = function(receiver) { this.incomingReceiver_ = receiver; }; Connector.prototype.setErrorHandler = function(handler) { this.errorHandler_ = handler; }; Connector.prototype.encounteredError = function() { return this.error_; }; Connector.prototype.waitToReadMore_ = function() { this.readWaitCookie_ = support.asyncWait(this.handle_, core.HANDLE_SIGNAL_READABLE, this.readMore_.bind(this)); }; Connector.prototype.readMore_ = function(result) { for (;;) { var read = core.readMessage(this.handle_, core.READ_MESSAGE_FLAG_NONE); if (this.handle_ == null) // The connector has been closed. return; if (read.result == core.RESULT_SHOULD_WAIT) { this.waitToReadMore_(); return; } if (read.result != core.RESULT_OK) { this.error_ = true; if (this.errorHandler_) this.errorHandler_.onError(read.result); return; } var messageBuffer = new buffer.Buffer(read.buffer); var message = new codec.Message(messageBuffer, read.handles); if (this.incomingReceiver_) { this.incomingReceiver_.accept(message); } } }; // The TestConnector subclass is only intended to be used in unit tests. It // enables delivering a message to the pipe's handle without an async wait. function TestConnector(handle) { Connector.call(this, handle); } TestConnector.prototype = Object.create(Connector.prototype); TestConnector.prototype.waitToReadMore_ = function() { }; TestConnector.prototype.deliverMessage = function() { this.readMore_(core.RESULT_OK); } var exports = {}; exports.Connector = Connector; exports.TestConnector = TestConnector; return exports; }); // Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. define("mojo/public/js/router", [ "mojo/public/js/codec", "mojo/public/js/core", "mojo/public/js/connector", "mojo/public/js/validator", ], function(codec, core, connector, validator) { var Connector = connector.Connector; var MessageReader = codec.MessageReader; var Validator = validator.Validator; function Router(handle, connectorFactory) { if (!core.isHandle(handle)) throw new Error("Router constructor: Not a handle"); if (connectorFactory === undefined) connectorFactory = Connector; this.connector_ = new connectorFactory(handle); this.incomingReceiver_ = null; this.nextRequestID_ = 0; this.completers_ = new Map(); this.payloadValidators_ = []; this.connector_.setIncomingReceiver({ accept: this.handleIncomingMessage_.bind(this), }); this.connector_.setErrorHandler({ onError: this.handleConnectionError_.bind(this), }); } Router.prototype.close = function() { this.completers_.clear(); // Drop any responders. this.connector_.close(); }; Router.prototype.accept = function(message) { this.connector_.accept(message); }; Router.prototype.reject = function(message) { // TODO(mpcomplete): no way to trasmit errors over a Connection. }; Router.prototype.acceptAndExpectResponse = function(message) { // Reserve 0 in case we want it to convey special meaning in the future. var requestID = this.nextRequestID_++; if (requestID == 0) requestID = this.nextRequestID_++; message.setRequestID(requestID); var result = this.connector_.accept(message); if (!result) return Promise.reject(Error("Connection error")); var completer = {}; this.completers_.set(requestID, completer); return new Promise(function(resolve, reject) { completer.resolve = resolve; completer.reject = reject; }); }; Router.prototype.setIncomingReceiver = function(receiver) { this.incomingReceiver_ = receiver; }; Router.prototype.setPayloadValidators = function(payloadValidators) { this.payloadValidators_ = payloadValidators; }; Router.prototype.encounteredError = function() { return this.connector_.encounteredError(); }; Router.prototype.handleIncomingMessage_ = function(message) { var noError = validator.validationError.NONE; var messageValidator = new Validator(message); var err = messageValidator.validateMessageHeader(); for (var i = 0; err === noError && i < this.payloadValidators_.length; ++i) err = this.payloadValidators_[i](messageValidator); if (err == noError) this.handleValidIncomingMessage_(message); else this.handleInvalidIncomingMessage_(message, err); }; Router.prototype.handleValidIncomingMessage_ = function(message) { if (message.expectsResponse()) { if (this.incomingReceiver_) { this.incomingReceiver_.acceptWithResponder(message, this); } else { // If we receive a request expecting a response when the client is not // listening, then we have no choice but to tear down the pipe. this.close(); } } else if (message.isResponse()) { var reader = new MessageReader(message); var requestID = reader.requestID; var completer = this.completers_.get(requestID); this.completers_.delete(requestID); completer.resolve(message); } else { if (this.incomingReceiver_) this.incomingReceiver_.accept(message); } } Router.prototype.handleInvalidIncomingMessage_ = function(message, error) { this.close(); } Router.prototype.handleConnectionError_ = function(result) { this.completers_.forEach(function(value) { value.reject(result); }); this.close(); }; // The TestRouter subclass is only intended to be used in unit tests. // It defeats valid message handling and delgates invalid message handling. function TestRouter(handle, connectorFactory) { Router.call(this, handle, connectorFactory); } TestRouter.prototype = Object.create(Router.prototype); TestRouter.prototype.handleValidIncomingMessage_ = function() { }; TestRouter.prototype.handleInvalidIncomingMessage_ = function(message, error) { this.validationErrorHandler(error); }; var exports = {}; exports.Router = Router; exports.TestRouter = TestRouter; return exports; }); // Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * Defines functions for translating between JavaScript strings and UTF8 strings * stored in ArrayBuffers. There is much room for optimization in this code if * it proves necessary. */ define("mojo/public/js/unicode", function() { /** * Decodes the UTF8 string from the given buffer. * @param {ArrayBufferView} buffer The buffer containing UTF8 string data. * @return {string} The corresponding JavaScript string. */ function decodeUtf8String(buffer) { return decodeURIComponent(escape(String.fromCharCode.apply(null, buffer))); } /** * Encodes the given JavaScript string into UTF8. * @param {string} str The string to encode. * @param {ArrayBufferView} outputBuffer The buffer to contain the result. * Should be pre-allocated to hold enough space. Use |utf8Length| to determine * how much space is required. * @return {number} The number of bytes written to |outputBuffer|. */ function encodeUtf8String(str, outputBuffer) { var utf8String = unescape(encodeURIComponent(str)); if (outputBuffer.length < utf8String.length) throw new Error("Buffer too small for encodeUtf8String"); for (var i = 0; i < outputBuffer.length && i < utf8String.length; i++) outputBuffer[i] = utf8String.charCodeAt(i); return i; } /** * Returns the number of bytes that a UTF8 encoding of the JavaScript string * |str| would occupy. */ function utf8Length(str) { var utf8String = unescape(encodeURIComponent(str)); return utf8String.length; } var exports = {}; exports.decodeUtf8String = decodeUtf8String; exports.encodeUtf8String = encodeUtf8String; exports.utf8Length = utf8Length; return exports; }); // Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. define("mojo/public/js/validator", [ "mojo/public/js/codec", ], function(codec) { var validationError = { NONE: 'VALIDATION_ERROR_NONE', MISALIGNED_OBJECT: 'VALIDATION_ERROR_MISALIGNED_OBJECT', ILLEGAL_MEMORY_RANGE: 'VALIDATION_ERROR_ILLEGAL_MEMORY_RANGE', UNEXPECTED_STRUCT_HEADER: 'VALIDATION_ERROR_UNEXPECTED_STRUCT_HEADER', UNEXPECTED_ARRAY_HEADER: 'VALIDATION_ERROR_UNEXPECTED_ARRAY_HEADER', ILLEGAL_HANDLE: 'VALIDATION_ERROR_ILLEGAL_HANDLE', UNEXPECTED_INVALID_HANDLE: 'VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE', ILLEGAL_POINTER: 'VALIDATION_ERROR_ILLEGAL_POINTER', UNEXPECTED_NULL_POINTER: 'VALIDATION_ERROR_UNEXPECTED_NULL_POINTER', MESSAGE_HEADER_INVALID_FLAG_COMBINATION: 'VALIDATION_ERROR_MESSAGE_HEADER_INVALID_FLAG_COMBINATION', MESSAGE_HEADER_MISSING_REQUEST_ID: 'VALIDATION_ERROR_MESSAGE_HEADER_MISSING_REQUEST_ID', DIFFERENT_SIZED_ARRAYS_IN_MAP: 'VALIDATION_ERROR_DIFFERENT_SIZED_ARRAYS_IN_MAP', }; var NULL_MOJO_POINTER = "NULL_MOJO_POINTER"; function isStringClass(cls) { return cls === codec.String || cls === codec.NullableString; } function isHandleClass(cls) { return cls === codec.Handle || cls === codec.NullableHandle; } function isNullable(type) { return type === codec.NullableString || type === codec.NullableHandle || type instanceof codec.NullableArrayOf || type instanceof codec.NullablePointerTo; } function Validator(message) { this.message = message; this.offset = 0; this.handleIndex = 0; } Object.defineProperty(Validator.prototype, "offsetLimit", { get: function() { return this.message.buffer.byteLength; } }); Object.defineProperty(Validator.prototype, "handleIndexLimit", { get: function() { return this.message.handles.length; } }); // True if we can safely allocate a block of bytes from start to // to start + numBytes. Validator.prototype.isValidRange = function(start, numBytes) { // Only positive JavaScript integers that are less than 2^53 // (Number.MAX_SAFE_INTEGER) can be represented exactly. if (start < this.offset || numBytes <= 0 || !Number.isSafeInteger(start) || !Number.isSafeInteger(numBytes)) return false; var newOffset = start + numBytes; if (!Number.isSafeInteger(newOffset) || newOffset > this.offsetLimit) return false; return true; } Validator.prototype.claimRange = function(start, numBytes) { if (this.isValidRange(start, numBytes)) { this.offset = start + numBytes; return true; } return false; } Validator.prototype.claimHandle = function(index) { if (index === codec.kEncodedInvalidHandleValue) return true; if (index < this.handleIndex || index >= this.handleIndexLimit) return false; // This is safe because handle indices are uint32. this.handleIndex = index + 1; return true; } Validator.prototype.validateHandle = function(offset, nullable) { var index = this.message.buffer.getUint32(offset); if (index === codec.kEncodedInvalidHandleValue) return nullable ? validationError.NONE : validationError.UNEXPECTED_INVALID_HANDLE; if (!this.claimHandle(index)) return validationError.ILLEGAL_HANDLE; return validationError.NONE; } Validator.prototype.validateStructHeader = function(offset, minNumBytes, minVersion) { if (!codec.isAligned(offset)) return validationError.MISALIGNED_OBJECT; if (!this.isValidRange(offset, codec.kStructHeaderSize)) return validationError.ILLEGAL_MEMORY_RANGE; var numBytes = this.message.buffer.getUint32(offset); var version = this.message.buffer.getUint32(offset + 4); // Backward compatibility is not yet supported. if (numBytes < minNumBytes || version < minVersion) return validationError.UNEXPECTED_STRUCT_HEADER; if (!this.claimRange(offset, numBytes)) return validationError.ILLEGAL_MEMORY_RANGE; return validationError.NONE; } Validator.prototype.validateMessageHeader = function() { var err = this.validateStructHeader(0, codec.kMessageHeaderSize, 2); if (err != validationError.NONE) return err; var numBytes = this.message.getHeaderNumBytes(); var version = this.message.getHeaderVersion(); var validVersionAndNumBytes = (version == 2 && numBytes == codec.kMessageHeaderSize) || (version == 3 && numBytes == codec.kMessageWithRequestIDHeaderSize) || (version > 3 && numBytes >= codec.kMessageWithRequestIDHeaderSize); if (!validVersionAndNumBytes) return validationError.UNEXPECTED_STRUCT_HEADER; var expectsResponse = this.message.expectsResponse(); var isResponse = this.message.isResponse(); if (version == 2 && (expectsResponse || isResponse)) return validationError.MESSAGE_HEADER_MISSING_REQUEST_ID; if (isResponse && expectsResponse) return validationError.MESSAGE_HEADER_INVALID_FLAG_COMBINATION; return validationError.NONE; } // Returns the message.buffer relative offset this pointer "points to", // NULL_MOJO_POINTER if the pointer represents a null, or JS null if the // pointer's value is not valid. Validator.prototype.decodePointer = function(offset) { var pointerValue = this.message.buffer.getUint64(offset); if (pointerValue === 0) return NULL_MOJO_POINTER; var bufferOffset = offset + pointerValue; return Number.isSafeInteger(bufferOffset) ? bufferOffset : null; } Validator.prototype.validateArrayPointer = function( offset, elementSize, elementType, nullable, expectedDimensionSizes, currentDimension) { var arrayOffset = this.decodePointer(offset); if (arrayOffset === null) return validationError.ILLEGAL_POINTER; if (arrayOffset === NULL_MOJO_POINTER) return nullable ? validationError.NONE : validationError.UNEXPECTED_NULL_POINTER; return this.validateArray(arrayOffset, elementSize, elementType, expectedDimensionSizes, currentDimension); } Validator.prototype.validateStructPointer = function( offset, structClass, nullable) { var structOffset = this.decodePointer(offset); if (structOffset === null) return validationError.ILLEGAL_POINTER; if (structOffset === NULL_MOJO_POINTER) return nullable ? validationError.NONE : validationError.UNEXPECTED_NULL_POINTER; return structClass.validate(this, structOffset); } // This method assumes that the array at arrayPointerOffset has // been validated. Validator.prototype.arrayLength = function(arrayPointerOffset) { var arrayOffset = this.decodePointer(arrayPointerOffset); return this.message.buffer.getUint32(arrayOffset + 4); } Validator.prototype.validateMapPointer = function( offset, mapIsNullable, keyClass, valueClass, valueIsNullable) { // Validate the implicit map struct: // struct {array keys; array values}; var structOffset = this.decodePointer(offset); if (structOffset === null) return validationError.ILLEGAL_POINTER; if (structOffset === NULL_MOJO_POINTER) return mapIsNullable ? validationError.NONE : validationError.UNEXPECTED_NULL_POINTER; var mapEncodedSize = codec.kStructHeaderSize + codec.kMapStructPayloadSize; var err = this.validateStructHeader(structOffset, mapEncodedSize, 2); if (err !== validationError.NONE) return err; // Validate the keys array. var keysArrayPointerOffset = structOffset + codec.kStructHeaderSize; err = this.validateArrayPointer( keysArrayPointerOffset, keyClass.encodedSize, keyClass, false, [0], 0); if (err !== validationError.NONE) return err; // Validate the values array. var valuesArrayPointerOffset = keysArrayPointerOffset + 8; var valuesArrayDimensions = [0]; // Validate the actual length below. if (valueClass instanceof codec.ArrayOf) valuesArrayDimensions = valuesArrayDimensions.concat(valueClass.dimensions()); var err = this.validateArrayPointer(valuesArrayPointerOffset, valueClass.encodedSize, valueClass, valueIsNullable, valuesArrayDimensions, 0); if (err !== validationError.NONE) return err; // Validate the lengths of the keys and values arrays. var keysArrayLength = this.arrayLength(keysArrayPointerOffset); var valuesArrayLength = this.arrayLength(valuesArrayPointerOffset); if (keysArrayLength != valuesArrayLength) return validationError.DIFFERENT_SIZED_ARRAYS_IN_MAP; return validationError.NONE; } Validator.prototype.validateStringPointer = function(offset, nullable) { return this.validateArrayPointer( offset, codec.Uint8.encodedSize, codec.Uint8, nullable, [0], 0); } // Similar to Array_Data::Validate() // mojo/public/cpp/bindings/lib/array_internal.h Validator.prototype.validateArray = function (offset, elementSize, elementType, expectedDimensionSizes, currentDimension) { if (!codec.isAligned(offset)) return validationError.MISALIGNED_OBJECT; if (!this.isValidRange(offset, codec.kArrayHeaderSize)) return validationError.ILLEGAL_MEMORY_RANGE; var numBytes = this.message.buffer.getUint32(offset); var numElements = this.message.buffer.getUint32(offset + 4); // Note: this computation is "safe" because elementSize <= 8 and // numElements is a uint32. var elementsTotalSize = (elementType === codec.PackedBool) ? Math.ceil(numElements / 8) : (elementSize * numElements); if (numBytes < codec.kArrayHeaderSize + elementsTotalSize) return validationError.UNEXPECTED_ARRAY_HEADER; if (expectedDimensionSizes[currentDimension] != 0 && numElements != expectedDimensionSizes[currentDimension]) { return validationError.UNEXPECTED_ARRAY_HEADER; } if (!this.claimRange(offset, numBytes)) return validationError.ILLEGAL_MEMORY_RANGE; // Validate the array's elements if they are pointers or handles. var elementsOffset = offset + codec.kArrayHeaderSize; var nullable = isNullable(elementType); if (isHandleClass(elementType)) return this.validateHandleElements(elementsOffset, numElements, nullable); if (isStringClass(elementType)) return this.validateArrayElements( elementsOffset, numElements, codec.Uint8, nullable, [0], 0); if (elementType instanceof codec.PointerTo) return this.validateStructElements( elementsOffset, numElements, elementType.cls, nullable); if (elementType instanceof codec.ArrayOf) return this.validateArrayElements( elementsOffset, numElements, elementType.cls, nullable, expectedDimensionSizes, currentDimension + 1); return validationError.NONE; } // Note: the |offset + i * elementSize| computation in the validateFooElements // methods below is "safe" because elementSize <= 8, offset and // numElements are uint32, and 0 <= i < numElements. Validator.prototype.validateHandleElements = function(offset, numElements, nullable) { var elementSize = codec.Handle.encodedSize; for (var i = 0; i < numElements; i++) { var elementOffset = offset + i * elementSize; var err = this.validateHandle(elementOffset, nullable); if (err != validationError.NONE) return err; } return validationError.NONE; } // The elementClass parameter is the element type of the element arrays. Validator.prototype.validateArrayElements = function(offset, numElements, elementClass, nullable, expectedDimensionSizes, currentDimension) { var elementSize = codec.PointerTo.prototype.encodedSize; for (var i = 0; i < numElements; i++) { var elementOffset = offset + i * elementSize; var err = this.validateArrayPointer( elementOffset, elementClass.encodedSize, elementClass, nullable, expectedDimensionSizes, currentDimension); if (err != validationError.NONE) return err; } return validationError.NONE; } Validator.prototype.validateStructElements = function(offset, numElements, structClass, nullable) { var elementSize = codec.PointerTo.prototype.encodedSize; for (var i = 0; i < numElements; i++) { var elementOffset = offset + i * elementSize; var err = this.validateStructPointer(elementOffset, structClass, nullable); if (err != validationError.NONE) return err; } return validationError.NONE; } var exports = {}; exports.validationError = validationError; exports.Validator = Validator; return exports; }); CEF remote debugging
            Inspectable WebContents
            Credits Credits Print
            David M. Gay's floating point routines show license homepage
            /****************************************************************
             *
             * The author of this software is David M. Gay.
             *
             * Copyright (c) 1991, 2000, 2001 by Lucent Technologies.
             *
             * Permission to use, copy, modify, and distribute this software for any
             * purpose without fee is hereby granted, provided that this entire notice
             * is included in all copies of any software which is or includes a copy
             * or modification of this software and in all copies of the supporting
             * documentation for such software.
             *
             * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
             * WARRANTY.  IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY
             * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
             * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
             *
             ***************************************************************/
            
            dynamic annotations show license homepage
            /* Copyright (c) 2008-2009, Google Inc.
             * All rights reserved.
             *
             * Redistribution and use in source and binary forms, with or without
             * modification, are permitted provided that the following conditions are
             * met:
             *
             *     * Redistributions of source code must retain the above copyright
             * notice, this list of conditions and the following disclaimer.
             *     * Neither the name of Google Inc. nor the names of its
             * contributors may be used to endorse or promote products derived from
             * this software without specific prior written permission.
             *
             * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
             * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
             * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
             * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
             * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
             * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
             * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
             * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
             * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
             * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
             * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
             *
             * ---
             * Author: Kostya Serebryany
             */
            
            Netscape Portable Runtime (NSPR) show license homepage
            /* ***** BEGIN LICENSE BLOCK *****
             * Version: MPL 1.1/GPL 2.0/LGPL 2.1
             *
             * The contents of this file are subject to the Mozilla Public License Version
             * 1.1 (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.mozilla.org/MPL/
             *
             * Software distributed under the License is distributed on an "AS IS" basis,
             * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
             * for the specific language governing rights and limitations under the
             * License.
             *
             * The Original Code is the Netscape Portable Runtime (NSPR).
             *
             * The Initial Developer of the Original Code is
             * Netscape Communications Corporation.
             * Portions created by the Initial Developer are Copyright (C) 1998-2000
             * the Initial Developer. All Rights Reserved.
             *
             * Contributor(s):
             *
             * Alternatively, the contents of this file may be used under the terms of
             * either the GNU General Public License Version 2 or later (the "GPL"), or
             * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
             * in which case the provisions of the GPL or the LGPL are applicable instead
             * of those above. If you wish to allow use of your version of this file only
             * under the terms of either the GPL or the LGPL, and not to allow others to
             * use your version of this file under the terms of the MPL, indicate your
             * decision by deleting the provisions above and replace them with the notice
             * and other provisions required by the GPL or the LGPL. If you do not delete
             * the provisions above, a recipient may use your version of this file under
             * the terms of any one of the MPL, the GPL or the LGPL.
             *
             * ***** END LICENSE BLOCK ***** */
            
            Paul Hsieh's SuperFastHash show license homepage
            Paul Hsieh OLD BSD license
            
            Copyright (c) 2010, Paul Hsieh
            All rights reserved.
            
            Redistribution and use in source and binary forms, with or without modification,
            are permitted provided that the following conditions are met:
            
            * Redistributions of source code must retain the above copyright notice, this
              list of conditions and the following disclaimer.
            * Redistributions in binary form must reproduce the above copyright notice, this
              list of conditions and the following disclaimer in the documentation and/or
              other materials provided with the distribution.
            * Neither my name, Paul Hsieh, nor the names of any other contributors to the
              code use may not be used to endorse or promote products derived from this
              software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
            ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
            WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
            DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
            ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
            (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
            LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
            ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
            SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            google-glog's symbolization library show license homepage
            // Copyright (c) 2006, Google Inc.
            // All rights reserved.
            //
            // Redistribution and use in source and binary forms, with or without
            // modification, are permitted provided that the following conditions are
            // met:
            //
            //     * Redistributions of source code must retain the above copyright
            // notice, this list of conditions and the following disclaimer.
            //     * Redistributions in binary form must reproduce the above
            // copyright notice, this list of conditions and the following disclaimer
            // in the documentation and/or other materials provided with the
            // distribution.
            //     * Neither the name of Google Inc. nor the names of its
            // contributors may be used to endorse or promote products derived from
            // this software without specific prior written permission.
            //
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            valgrind show license homepage
               Notice that the following BSD-style license applies to the Valgrind header
               files used by Chromium (valgrind.h and memcheck.h). However, the rest of
               Valgrind is licensed under the terms of the GNU General Public License,
               version 2, unless otherwise indicated.
            
               ----------------------------------------------------------------
            
               Copyright (C) 2000-2008 Julian Seward.  All rights reserved.
            
               Redistribution and use in source and binary forms, with or without
               modification, are permitted provided that the following conditions
               are met:
            
               1. Redistributions of source code must retain the above copyright
                  notice, this list of conditions and the following disclaimer.
            
               2. The origin of this software must not be misrepresented; you must 
                  not claim that you wrote the original software.  If you use this 
                  software in a product, an acknowledgment in the product 
                  documentation would be appreciated but is not required.
            
               3. Altered source versions must be plainly marked as such, and must
                  not be misrepresented as being the original software.
            
               4. The name of the author may not be used to endorse or promote 
                  products derived from this software without specific prior written 
                  permission.
            
               THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
               OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
               WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
               ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
               DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
               DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
               GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
               INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
               WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
               NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
               SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            xdg-mime show license homepage
            Licensed under the Academic Free License version 2.0 (below)
            Or under the following terms:
            
            This library is free software; you can redistribute it and/or
            modify it under the terms of the GNU Lesser General Public
            License as published by the Free Software Foundation; either
            version 2 of the License, or (at your option) any later version.
            
            This library is distributed in the hope that it will be useful,
            but WITHOUT ANY WARRANTY; without even the implied warranty of
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
            Lesser General Public License for more details.
            
            You should have received a copy of the GNU Lesser General Public
            License along with this library; if not, write to the
            Free Software Foundation, Inc., 59 Temple Place - Suite 330,
            Boston, MA 02111-1307, USA.
            
            
            --------------------------------------------------------------------------------
            Academic Free License v. 2.0
            --------------------------------------------------------------------------------
            
            This Academic Free License (the "License") applies to any original work of
            authorship (the "Original Work") whose owner (the "Licensor") has placed the
            following notice immediately following the copyright notice for the Original
            Work:
            
            Licensed under the Academic Free License version 2.0
            1) Grant of Copyright License. Licensor hereby grants You a world-wide,
            royalty-free, non-exclusive, perpetual, sublicenseable license to do the
            following:
            
            a) to reproduce the Original Work in copies;
            b) to prepare derivative works ("Derivative Works") based upon the Original
               Work;
            c) to distribute copies of the Original Work and Derivative Works to the
               public;
            d) to perform the Original Work publicly; and
            e) to display the Original Work publicly.
            
            2) Grant of Patent License. Licensor hereby grants You a world-wide,
            royalty-free, non-exclusive, perpetual, sublicenseable license, under patent
            claims owned or controlled by the Licensor that are embodied in the Original
            Work as furnished by the Licensor, to make, use, sell and offer for sale the
            Original Work and Derivative Works.
            
            3) Grant of Source Code License. The term "Source Code" means the preferred
            form of the Original Work for making modifications to it and all available
            documentation describing how to modify the Original Work. Licensor hereby
            agrees to provide a machine-readable copy of the Source Code of the Original
            Work along with each copy of the Original Work that Licensor distributes.
            Licensor reserves the right to satisfy this obligation by placing a
            machine-readable copy of the Source Code in an information repository
            reasonably calculated to permit inexpensive and convenient access by You for as
            long as Licensor continues to distribute the Original Work, and by publishing
            the address of that information repository in a notice immediately following
            the copyright notice that applies to the Original Work.
            
            4) Exclusions From License Grant. Neither the names of Licensor, nor the names
            of any contributors to the Original Work, nor any of their trademarks or
            service marks, may be used to endorse or promote products derived from this
            Original Work without express prior written permission of the Licensor. Nothing
            in this License shall be deemed to grant any rights to trademarks, copyrights,
            patents, trade secrets or any other intellectual property of Licensor except as
            expressly stated herein. No patent license is granted to make, use, sell or
            offer to sell embodiments of any patent claims other than the licensed claims
            defined in Section 2. No right is granted to the trademarks of Licensor even if
            such marks are included in the Original Work. Nothing in this License shall be
            interpreted to prohibit Licensor from licensing under different terms from this
            License any Original Work that Licensor otherwise would have a right to
            license.
            
            5) This section intentionally omitted.
            
            6) Attribution Rights. You must retain, in the Source Code of any Derivative
            Works that You create, all copyright, patent or trademark notices from the
            Source Code of the Original Work, as well as any notices of licensing and any
            descriptive text identified therein as an "Attribution Notice." You must cause
            the Source Code for any Derivative Works that You create to carry a prominent
            Attribution Notice reasonably calculated to inform recipients that You have
            modified the Original Work.
            
            7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that
            the copyright in and to the Original Work and the patent rights granted herein
            by Licensor are owned by the Licensor or are sublicensed to You under the terms
            of this License with the permission of the contributor(s) of those copyrights
            and patent rights. Except as expressly stated in the immediately proceeding
            sentence, the Original Work is provided under this License on an "AS IS" BASIS
            and WITHOUT WARRANTY, either express or implied, including, without limitation,
            the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR
            PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU.
            This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No
            license to Original Work is granted hereunder except under this disclaimer.
            
            8) Limitation of Liability. Under no circumstances and under no legal theory,
            whether in tort (including negligence), contract, or otherwise, shall the
            Licensor be liable to any person for any direct, indirect, special, incidental,
            or consequential damages of any character arising as a result of this License
            or the use of the Original Work including, without limitation, damages for loss
            of goodwill, work stoppage, computer failure or malfunction, or any and all
            other commercial damages or losses. This limitation of liability shall not
            apply to liability for death or personal injury resulting from Licensor's
            negligence to the extent applicable law prohibits such limitation. Some
            jurisdictions do not allow the exclusion or limitation of incidental or
            consequential damages, so this exclusion and limitation may not apply to You.
            
            9) Acceptance and Termination. If You distribute copies of the Original Work or
            a Derivative Work, You must make a reasonable effort under the circumstances to
            obtain the express assent of recipients to the terms of this License. Nothing
            else but this License (or another written agreement between Licensor and You)
            grants You permission to create Derivative Works based upon the Original Work
            or to exercise any of the rights granted in Section 1 herein, and any attempt
            to do so except under the terms of this License (or another written agreement
            between Licensor and You) is expressly prohibited by U.S. copyright law, the
            equivalent laws of other countries, and by international treaty. Therefore, by
            exercising any of the rights granted to You in Section 1 herein, You indicate
            Your acceptance of this License and all of its terms and conditions.
            
            10) Termination for Patent Action. This License shall terminate automatically
            and You may no longer exercise any of the rights granted to You by this License
            as of the date You commence an action, including a cross-claim or counterclaim,
            for patent infringement (i) against Licensor with respect to a patent
            applicable to software or (ii) against any entity with respect to a patent
            applicable to the Original Work (but excluding combinations of the Original
            Work with other software or hardware).
            
            11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this
            License may be brought only in the courts of a jurisdiction wherein the
            Licensor resides or in which Licensor conducts its primary business, and under
            the laws of that jurisdiction excluding its conflict-of-law provisions. The
            application of the United Nations Convention on Contracts for the International
            Sale of Goods is expressly excluded. Any use of the Original Work outside the
            scope of this License or after its termination shall be subject to the
            requirements and penalties of the U.S. Copyright Act, 17 U.S.C. 101 et seq.,
            the equivalent laws of other countries, and international treaty. This section
            shall survive the termination of this License.
            
            12) Attorneys Fees. In any action to enforce the terms of this License or
            seeking damages relating thereto, the prevailing party shall be entitled to
            recover its costs and expenses, including, without limitation, reasonable
            attorneys' fees and costs incurred in connection with such action, including
            any appeal of such action. This section shall survive the termination of this
            License.
            
            13) Miscellaneous. This License represents the complete agreement concerning
            the subject matter hereof. If any provision of this License is held to be
            unenforceable, such provision shall be reformed only to the extent necessary to
            make it enforceable.
            
            14) Definition of "You" in This License. "You" throughout this License, whether
            in upper or lower case, means an individual or a legal entity exercising rights
            under, and complying with all of the terms of, this License. For legal
            entities, "You" includes any entity that controls, is controlled by, or is
            under common control with you. For purposes of this definition, "control" means
            (i) the power, direct or indirect, to cause the direction or management of such
            entity, whether by contract or otherwise, or (ii) ownership of fifty percent
            (50%) or more of the outstanding shares, or (iii) beneficial ownership of such
            entity.
            
            15) Right to Use. You may use the Original Work in all ways not otherwise
            restricted or conditioned by this License or by law, and Licensor promises not
            to interfere with or be responsible for such uses by You.
            
            This license is Copyright (C) 2003 Lawrence E. Rosen. All rights reserved.
            Permission is hereby granted to copy and distribute this license without
            modification. This license may not be modified without the express written
            permission of its copyright owner.
            
            xdg-user-dirs show license homepage
              Copyright (c) 2007 Red Hat, inc
            
              Permission is hereby granted, free of charge, to any person
              obtaining a copy of this software and associated documentation files
              (the "Software"), to deal in the Software without restriction,
              including without limitation the rights to use, copy, modify, merge,
              publish, distribute, sublicense, and/or sell copies of the Software,
              and to permit persons to whom the Software is furnished to do so,
              subject to the following conditions: 
            
              The above copyright notice and this permission notice shall be
              included in all copies or substantial portions of the Software. 
            
              THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
              EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
              MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
              NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
              BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
              ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
              CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
              SOFTWARE.
            
            Breakpad, An open-source multi-platform crash reporting system show license homepage
            Copyright (c) 2006, Google Inc.
            All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
                * Redistributions of source code must retain the above copyright
            notice, this list of conditions and the following disclaimer.
                * Redistributions in binary form must reproduce the above
            copyright notice, this list of conditions and the following disclaimer
            in the documentation and/or other materials provided with the
            distribution.
                * Neither the name of Google Inc. nor the names of its
            contributors may be used to endorse or promote products derived from
            this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            
            COPYRIGHT AND PERMISSION NOTICE
            
            Copyright (c) 1996 - 2011, Daniel Stenberg, <daniel@haxx.se>.
            
            All rights reserved.
            
            Permission to use, copy, modify, and distribute this software for any purpose
            with or without fee is hereby granted, provided that the above copyright
            notice and this permission notice appear in all copies.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
            NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
            DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
            OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
            OR OTHER DEALINGS IN THE SOFTWARE.
            
            Except as contained in this notice, the name of a copyright holder shall not
            be used in advertising or otherwise to promote the sale, use or other dealings
            in this Software without prior written authorization of the copyright holder.
            
            
            Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
            
            @APPLE_LICENSE_HEADER_START@
            
            This file contains Original Code and/or Modifications of Original Code
            as defined in and that are subject to the Apple Public Source License
            Version 2.0 (the 'License'). You may not use this file except in
            compliance with the License. Please obtain a copy of the License at
            http://www.opensource.apple.com/apsl/ and read it before using this
            file.
            
            The Original Code and all software distributed under the License are
            distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
            EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
            INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
            FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
            Please see the License for the specific language governing rights and
            limitations under the License.
            
            @APPLE_LICENSE_HEADER_END@
            
            
            Copyright 2007-2008 Google Inc.
            
            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.
            
            libcxx show license homepage
            ==============================================================================
            libc++ License
            ==============================================================================
            
            The libc++ library is dual licensed under both the University of Illinois
            "BSD-Like" license and the MIT license.  As a user of this code you may choose
            to use it under either license.  As a contributor, you agree to allow your code
            to be used under both.
            
            Full text of the relevant licenses is included below.
            
            ==============================================================================
            
            University of Illinois/NCSA
            Open Source License
            
            Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT
            
            All rights reserved.
            
            Developed by:
            
                LLVM Team
            
                University of Illinois at Urbana-Champaign
            
                http://llvm.org
            
            Permission is hereby granted, free of charge, to any person obtaining a copy of
            this software and associated documentation files (the "Software"), to deal with
            the Software without restriction, including without limitation the rights to
            use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
            of the Software, and to permit persons to whom the Software is furnished to do
            so, subject to the following conditions:
            
                * Redistributions of source code must retain the above copyright notice,
                  this list of conditions and the following disclaimers.
            
                * Redistributions in binary form must reproduce the above copyright notice,
                  this list of conditions and the following disclaimers in the
                  documentation and/or other materials provided with the distribution.
            
                * Neither the names of the LLVM Team, University of Illinois at
                  Urbana-Champaign, nor the names of its contributors may be used to
                  endorse or promote products derived from this Software without specific
                  prior written permission.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
            FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
            CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
            SOFTWARE.
            
            ==============================================================================
            
            Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT
            
            Permission is hereby granted, free of charge, to any person obtaining a copy
            of this software and associated documentation files (the "Software"), to deal
            in the Software without restriction, including without limitation the rights
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
            copies of the Software, and to permit persons to whom the Software is
            furnished to do so, subject to the following conditions:
            
            The above copyright notice and this permission notice shall be included in
            all copies or substantial portions of the Software.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
            THE SOFTWARE.
            
            libcxxabi show license homepage
            ==============================================================================
            libc++abi License
            ==============================================================================
            
            The libc++abi library is dual licensed under both the University of Illinois
            "BSD-Like" license and the MIT license.  As a user of this code you may choose
            to use it under either license.  As a contributor, you agree to allow your code
            to be used under both.
            
            Full text of the relevant licenses is included below.
            
            ==============================================================================
            
            University of Illinois/NCSA
            Open Source License
            
            Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT
            
            All rights reserved.
            
            Developed by:
            
                LLVM Team
            
                University of Illinois at Urbana-Champaign
            
                http://llvm.org
            
            Permission is hereby granted, free of charge, to any person obtaining a copy of
            this software and associated documentation files (the "Software"), to deal with
            the Software without restriction, including without limitation the rights to
            use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
            of the Software, and to permit persons to whom the Software is furnished to do
            so, subject to the following conditions:
            
                * Redistributions of source code must retain the above copyright notice,
                  this list of conditions and the following disclaimers.
            
                * Redistributions in binary form must reproduce the above copyright notice,
                  this list of conditions and the following disclaimers in the
                  documentation and/or other materials provided with the distribution.
            
                * Neither the names of the LLVM Team, University of Illinois at
                  Urbana-Champaign, nor the names of its contributors may be used to
                  endorse or promote products derived from this Software without specific
                  prior written permission.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
            FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
            CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
            SOFTWARE.
            
            ==============================================================================
            
            Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT
            
            Permission is hereby granted, free of charge, to any person obtaining a copy
            of this software and associated documentation files (the "Software"), to deal
            in the Software without restriction, including without limitation the rights
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
            copies of the Software, and to permit persons to whom the Software is
            furnished to do so, subject to the following conditions:
            
            The above copyright notice and this permission notice shall be included in
            all copies or substantial portions of the Software.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
            THE SOFTWARE.
            
            BSDiff show license homepage
            Copyright 2003-2005 Colin Percival
            All rights reserved
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted providing that the following conditions 
            are met:
            1. Redistributions of source code must retain the above copyright
               notice, this list of conditions and the following disclaimer.
            2. Redistributions in binary form must reproduce the above copyright
               notice, this list of conditions and the following disclaimer in the
               documentation and/or other materials provided with the distribution.
            
            THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
            IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
            WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
            ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
            DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
            DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
            OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
            HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
            STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
            IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
            POSSIBILITY OF SUCH DAMAGE.
            
            XZ Utils show license homepage
            See http://src.chromium.org/viewvc/chrome/trunk/deps/third_party/xz/COPYING
            
            Google code support upload script show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright 2007-2009 Google Inc.
               Copyright 2007-2009 WebDriver committers
            
               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.
            
            
            ChromeVox show license homepage
            // Copyright 2013 Google Inc.
            //
            // 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.
            
            mock4js show license homepage
            Copyright (C) 2009 by Tung Mac.
            
            Permission is hereby granted, free of charge, to any person obtaining a copy
            of this software and associated documentation files (the "Software"), to deal
            in the Software without restriction, including without limitation the rights
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
            copies of the Software, and to permit persons to whom the Software is
            furnished to do so, subject to the following conditions:
            
            The above copyright notice and this permission notice shall be included in
            all copies or substantial portions of the Software.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
            THE SOFTWARE.
            
            Mozilla Personal Security Manager show license homepage
            /* ***** BEGIN LICENSE BLOCK *****
             * Version: MPL 1.1/GPL 2.0/LGPL 2.1
             *
             * The contents of this file are subject to the Mozilla Public License Version
             * 1.1 (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.mozilla.org/MPL/
             *
             * Software distributed under the License is distributed on an "AS IS" basis,
             * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
             * for the specific language governing rights and limitations under the
             * License.
             *
             * The Original Code is the Netscape security libraries.
             *
             * The Initial Developer of the Original Code is
             * Netscape Communications Corporation.
             * Portions created by the Initial Developer are Copyright (C) 2000
             * the Initial Developer. All Rights Reserved.
             *
             * Contributor(s):
             *
             * Alternatively, the contents of this file may be used under the terms of
             * either the GNU General Public License Version 2 or later (the "GPL"), or
             * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
             * in which case the provisions of the GPL or the LGPL are applicable instead
             * of those above. If you wish to allow use of your version of this file only
             * under the terms of either the GPL or the LGPL, and not to allow others to
             * use your version of this file under the terms of the MPL, indicate your
             * decision by deleting the provisions above and replace them with the notice
             * and other provisions required by the GPL or the LGPL. If you do not delete
             * the provisions above, a recipient may use your version of this file under
             * the terms of any one of the MPL, the GPL or the LGPL.
             *
             * ***** END LICENSE BLOCK ***** */
            
            Network Security Services (NSS) show license homepage
            /* ***** BEGIN LICENSE BLOCK *****
             * Version: MPL 1.1/GPL 2.0/LGPL 2.1
             *
             * The contents of this file are subject to the Mozilla Public License Version
             * 1.1 (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.mozilla.org/MPL/
             *
             * Software distributed under the License is distributed on an "AS IS" basis,
             * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
             * for the specific language governing rights and limitations under the
             * License.
             *
             * The Original Code is the Netscape security libraries.
             *
             * The Initial Developer of the Original Code is
             * Netscape Communications Corporation.
             * Portions created by the Initial Developer are Copyright (C) 1994-2000
             * the Initial Developer. All Rights Reserved.
             *
             * Contributor(s):
             *
             * Alternatively, the contents of this file may be used under the terms of
             * either the GNU General Public License Version 2 or later (the "GPL"), or
             * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
             * in which case the provisions of the GPL or the LGPL are applicable instead
             * of those above. If you wish to allow use of your version of this file only
             * under the terms of either the GPL or the LGPL, and not to allow others to
             * use your version of this file under the terms of the MPL, indicate your
             * decision by deleting the provisions above and replace them with the notice
             * and other provisions required by the GPL or the LGPL. If you do not delete
             * the provisions above, a recipient may use your version of this file under
             * the terms of any one of the MPL, the GPL or the LGPL.
             *
             * ***** END LICENSE BLOCK ***** */
            
            blink HTMLTokenizer show license homepage
            Copyright (C) 2008 Apple Inc. All Rights Reserved.
            Copyright (C) 2009 Torch Mobile, Inc. http://www.torchmobile.com/
            Copyright (C) 2010 Google, Inc. All Rights Reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions
            are met:
            1. Redistributions of source code must retain the above copyright
               notice, this list of conditions and the following disclaimer.
            2. Redistributions in binary form must reproduce the above copyright
               notice, this list of conditions and the following disclaimer in the
               documentation and/or other materials provided with the distribution.
             *
            THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
            EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
            PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
            CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
            EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
            PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
            PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
            OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            native client show license homepage
            Copyright 2008, Google Inc.
            All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
                * Redistributions of source code must retain the above copyright
            notice, this list of conditions and the following disclaimer.
                * Redistributions in binary form must reproduce the above
            copyright notice, this list of conditions and the following disclaimer
            in the documentation and/or other materials provided with the
            distribution.
                * Neither the name of Google Inc. nor the names of its
            contributors may be used to endorse or promote products derived from
            this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            fancy_urllib show license homepage
            Name: fancy_urllib
            URL: http://googleappengine.googlecode.com/svn/trunk/python/lib/fancy_urllib
            License: Apache 2.0
            License File: README.chromium
            Security Critical: no
            
            The fancy_urllib library was obtained from
            http://googleappengine.googlecode.com/svn/trunk/python/lib/fancy_urllib/fancy_urllib/__init__.py
            under the following license (http://googleappengine.googlecode.com/svn/trunk/python/LICENSE):
            
            GOOGLE APP ENGINE SDK
            =====================
            Copyright 2008 Google Inc.
            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.
            
            Local Modifications:
            - Python 2.7.9 adds an additional parameter to urllib2.HTTPSHandler.do_open. I
              modified FancyHTTPSHandler.do_open to take this parameter and forward it to
              the super function.
            
            newlib-extras show license homepage
                                    README for newlib-2.0.0 release
                       (mostly cribbed from the README in the gdb-4.13 release)
            
            This is `newlib', a simple ANSI C library, math library, and collection
            of board support packages.
            
            The newlib and libgloss subdirectories are a collection of software from
            several sources, each wi6h their own copyright and license.  See the file
            COPYING.NEWLIB for details.  The rest of the release tree is under either
            the GNU GPL or LGPL licenses.
            
            THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
            IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
            WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
            
            
            Unpacking and Installation -- quick overview
            ==========================
            
            When you unpack the newlib-2.0.0.tar.gz file, you'll find a directory
            called `newlib-2.0.0', which contains:
            
            COPYING          config/          install-sh*      mpw-configure
            COPYING.LIB      config-ml.in     libgloss/        mpw-install
            COPYING.NEWLIB   config.guess*    mkinstalldirs*   newlib/
            CYGNUS           config.sub*      move-if-change*  symlink-tree*
            ChangeLog        configure*       mpw-README       texinfo/
            Makefile.in      configure.in     mpw-build.in
            README           etc/             mpw-config.in
            
            To build NEWLIB, you must follow the instructions in the section entitled
            "Compiling NEWLIB".
            
            This will configure and build all the libraries and crt0 (if one exists).
            If `configure' can't determine your host system type, specify one as its
            argument, e.g., sun4 or sun4sol2.  NEWLIB is most often used in cross
            environments.
            
            NOTE THAT YOU MUST HAVE ALREADY BUILT AND INSTALLED GCC and BINUTILS.
            
            
            More Documentation
            ==================
            
               Newlib documentation is available on the net via:
               http://sourceware.org/newlib/docs.html
            
               All the documentation for NEWLIB comes as part of the machine-readable
            distribution.  The documentation is written in Texinfo format, which is
            a documentation system that uses a single source file to produce both
            on-line information and a printed manual.  You can use one of the Info
            formatting commands to create the on-line version of the documentation
            and TeX (or `texi2roff') to typeset the printed version.
            
               If you want to format these Info files yourself, you need one of the
            Info formatting programs, such as `texinfo-format-buffer' or `makeinfo'.
            
               If you want to typeset and print copies of this manual, you need TeX,
            a program to print its DVI output files, and `texinfo.tex', the Texinfo
            definitions file.
            
               TeX is a typesetting program; it does not print files directly, but
            produces output files called DVI files.  To print a typeset document,
            you need a program to print DVI files.  If your system has TeX
            installed, chances are it has such a program.  The precise command to
            use depends on your system; `lpr -d' is common; another (for PostScript
            devices) is `dvips'.  The DVI print command may require a file name
            without any extension or a `.dvi' extension.
            
               TeX also requires a macro definitions file called `texinfo.tex'. 
            This file tells TeX how to typeset a document written in Texinfo
            format.  On its own, TeX cannot read, much less typeset a Texinfo file.
            `texinfo.tex' is distributed with NEWLIB and is located in the
            `newlib-VERSION-NUMBER/texinfo' directory.
            
            
            
            Compiling NEWLIB
            ================
            
               To compile NEWLIB, you must build it in a directory separate from
            the source directory.  If you want to run NEWLIB versions for several host 
            or target machines, you need a different `newlib' compiled for each combination
            of host and target.  `configure' is designed to make this easy by allowing 
            you to generate each configuration in a separate subdirectory.
            If your `make' program handles the `VPATH' feature correctly (like GNU `make')
            running `make' in each of these directories builds the `newlib' libraries
            specified there.
            
               To build `newlib' in a specific directory, run `configure' with the
            `--srcdir' option to specify where to find the source. (You also need
            to specify a path to find `configure' itself from your working
            directory.  If the path to `configure' would be the same as the
            argument to `--srcdir', you can leave out the `--srcdir' option; it
            will be assumed.)
            
               For example, with version 2.0.0, you can build NEWLIB in a separate
            directory for a Sun 4 cross m68k-aout environment like this:
            
                 cd newlib-2.0.0
                 mkdir ../newlib-m68k-aout
                 cd ../newlib-m68k-aout
                 ../newlib-2.0.0/configure --host=sun4 --target=m68k-aout
                 make
            
               When `configure' builds a configuration using a remote source
            directory, it creates a tree for the binaries with the same structure
            (and using the same names) as the tree under the source directory.  In
            the example, you'd find the Sun 4 library `libiberty.a' in the
            directory `newlib-m68k-aout/libiberty', and NEWLIB itself in
            `newlib-m68k-aout/newlib'.
            
               When you run `make' to build a program or library, you must run it
            in a configured directory--whatever directory you were in when you
            called `configure' (or one of its subdirectories).
            
               The `Makefile' that `configure' generates in each source directory
            also runs recursively.  If you type `make' in a source directory such
            as `newlib-2.0.0' (or in a separate configured directory configured with
            `--srcdir=PATH/newlib-2.0.0'), you will build all the required libraries.
            
               When you have multiple hosts or targets configured in separate
            directories, you can run `make' on them in parallel (for example, if
            they are NFS-mounted on each of the hosts); they will not interfere
            with each other.
            
            
            Specifying names for hosts and targets
            ======================================
            
               The specifications used for hosts and targets in the `configure'
            script are based on a three-part naming scheme, but some short
            predefined aliases are also supported.  The full naming scheme encodes
            three pieces of information in the following pattern:
            
                 ARCHITECTURE-VENDOR-OS
            
               For example, you can use the alias `sun4' as a HOST argument or in a
            `--target=TARGET' option.  The equivalent full name is
            `sparc-sun-sunos4'.
            
               The `configure' script accompanying NEWLIB does not provide any query
            facility to list all supported host and target names or aliases. 
            `configure' calls the Bourne shell script `config.sub' to map
            abbreviations to full names; you can read the script, if you wish, or
            you can use it to test your guesses on abbreviations--for example:
            
                 % sh config.sub sun4
                 sparc-sun-sunos4.1.1
                 % sh config.sub sun3
                 m68k-sun-sunos4.1.1
                 % sh config.sub decstation
                 mips-dec-ultrix4.2
                 % sh config.sub hp300bsd
                 m68k-hp-bsd
                 % sh config.sub i386v
                 i386-pc-sysv
                 % sh config.sub i786v
                 Invalid configuration `i786v': machine `i786v' not recognized
            
            The Build, Host and Target Concepts in newlib
            =============================================
            
            The build, host and target concepts are defined for gcc as follows:
            
            build: the platform on which gcc is built.
            host: the platform on which gcc is run.
            target: the platform for which gcc generates code.
            
            Since newlib is a library, the target concept does not apply to it, and the
            build, host, and target options given to the top-level configure script must
            be changed for newlib's use.
            
            The options are shifted according to these correspondences:
            
            gcc's build platform has no equivalent in newlib.
            gcc's host platform is newlib's build platform.
            gcc's target platform is newlib's host platform.
            and as mentioned before, newlib has no concept of target.
            
            `configure' options
            ===================
            
               Here is a summary of the `configure' options and arguments that are
            most often useful for building NEWLIB.  `configure' also has several other
            options not listed here.
            
                 configure [--help]
                           [--prefix=DIR]
                           [--srcdir=PATH]
                           [--target=TARGET] HOST
            
            You may introduce options with a single `-' rather than `--' if you
            prefer; but you may abbreviate option names if you use `--'.
            
            `--help'
                 Display a quick summary of how to invoke `configure'.
            
            `--prefix=DIR'
                 Configure the source to install programs and files in directory
                 `DIR'.
            
            `--exec-prefix=DIR'
                 Configure the source to install host-dependent files in directory
                 `DIR'.
            
            `--srcdir=PATH'
                 *Warning: using this option requires GNU `make', or another `make'
                 that compatibly implements the `VPATH' feature.
                 Use this option to make configurations in directories separate
                 from the NEWLIB source directories.  Among other things, you can use
                 this to build (or maintain) several configurations simultaneously,
                 in separate directories.  `configure' writes configuration
                 specific files in the current directory, but arranges for them to
                 use the source in the directory PATH.  `configure' will create
                 directories under the working directory in parallel to the source
                 directories below PATH.
            
            `--norecursion'
                 Configure only the directory level where `configure' is executed;
                 do not propagate configuration to subdirectories.
            
            `--target=TARGET'
                 Configure NEWLIB for running on the specified TARGET.
            
                 There is no convenient way to generate a list of all available
                 targets.
            
            `HOST ...'
                 Configure NEWLIB to be built using a cross compiler running on
                 the specified HOST.
            
                 There is no convenient way to generate a list of all available
                 hosts.
            
            To fit diverse usage models, NEWLIB supports a group of configuration
            options so that library features can be turned on/off according to
            target system's requirements.
            
            One feature can be enabled by specifying `--enable-FEATURE=yes' or
            `--enable-FEATURE'.  Or it can be disable by `--enable-FEATURE=no' or
            `--disable-FEATURE'.
            
            `--enable-newlib-io-pos-args'
                 Enable printf-family positional arg support.
                 Disabled by default, but some hosts enable it in configure.host.
            
            `--enable-newlib-io-c99-formats'
                 Enable C99 support in IO functions like printf/scanf.
                 Disabled by default, but some hosts enable it in configure.host.
            
            `--enable-newlib-register-fini'
                 Enable finalization function registration using atexit.
                 Disabled by default.
            
            `--enable-newlib-io-long-long'
                 Enable long long type support in IO functions like printf/scanf.
                 Disabled by default, but many hosts enable it in configure.host.
            
            `--enable-newlib-io-long-double'
                 Enable long double type support in IO functions printf/scanf.
                 Disabled by default, but some hosts enable it in configure.host.
            
            `--enable-newlib-mb'
                 Enable multibyte support.
                 Disabled by default.
            
            `--enable-newlib-iconv-encodings'
                 Enable specific comma-separated list of bidirectional iconv
                 encodings to be built-in.
                 Disabled by default.
            
            `--enable-newlib-iconv-from-encodings'
                 Enable specific comma-separated list of \"from\" iconv encodings
                 to be built-in.
                 Disabled by default.
            
            `--enable-newlib-iconv-to-encodings'
                 Enable specific comma-separated list of \"to\" iconv encodings
                 to be built-in.
                 Disabled by default.
            
            `--enable-newlib-iconv-external-ccs'
                 Enable capabilities to load external CCS files for iconv.
                 Disabled by default.
            
            `--disable-newlib-atexit-dynamic-alloc'
                 Disable dynamic allocation of atexit entries.
                 Most hosts and targets have it enabled in configure.host.
            
            `--enable-newlib-reent-small'
                 Enable small reentrant struct support.
                 Disabled by default.
            
            `--disable-newlib-fvwrite-in-streamio'
                 NEWLIB implements the vector buffer mechanism to support stream IO
                 buffering required by C standard.  This feature is possibly
                 unnecessary for embedded systems which won't change file buffering
                 with functions like `setbuf' or `setvbuf'.  The buffering mechanism
                 still acts as default for STDIN/STDOUT/STDERR even if this option
                 is specified.
                 Enabled by default.
            
            `--disable-newlib-fseek-optimization'
                 Disable fseek optimization.  It can decrease code size of application
                 calling `fseek`.
                 Enabled by default.
            
            `--disable-newlib-wide-orient'
                 C99 states that each stream has an orientation, wide or byte.  This
                 feature is possibly unnecessary for embedded systems which only do
                 byte input/output operations on stream.  It can decrease code size
                 by disable the feature.
                 Enabled by default.
            
            `--enable-newlib-nano-malloc'
                 NEWLIB has two implementations of malloc family's functions, one in
                 `mallocr.c' and the other one in `nano-mallocr.c'.  This options
                 enables the nano-malloc implementation, which is for small systems
                 with very limited memory.  Note that this implementation does not
                 support `--enable-malloc-debugging' any more.
                 Disabled by default.
            
            `--disable-newlib-unbuf-stream-opt'
                 NEWLIB does optimization when `fprintf to write only unbuffered unix
                 file'.  It creates a temorary buffer to do the optimization that
                 increases stack consumption by about `BUFSIZ' bytes.  This option
                 disables the optimization and saves size of text and stack.
                 Enabled by default.
            
            `--enable-multilib'
                 Build many library versions.
                 Enabled by default.
            
            `--enable-target-optspace'
                 Optimize for space.
                 Disabled by default.
            
            `--enable-malloc-debugging'
                 Indicate malloc debugging requested.
                 Disabled by default.
            
            `--enable-newlib-multithread'
                 Enable support for multiple threads.
                 Enabled by default.
            
            `--enable-newlib-iconv'
                 Enable iconv library support.
                 Disabled by default.
            
            `--enable-newlib-elix-level'
                 Supply desired elix library level (1-4).  Please refer to HOWTO for
                 more information about this option.
                 Set to level 0 by default.
            
            `--disable-newlib-io-float'
                 Disable printf/scanf family float support.
                 Enabled by default.
            
            `--disable-newlib-supplied-syscalls'
                 Disable newlib from supplying syscalls.
                 Enabled by default.
            
            `--enable-lite-exit'
                 Enable lite exit, a size-reduced implementation of exit that doesn't
                 invoke clean-up functions such as _fini or global destructors.
                 Disabled by default.
            
            Running the Testsuite
            =====================
            
            To run newlib's testsuite, you'll need a site.exp in your home
            directory which points dejagnu to the proper baseboards directory and
            the proper exp file for your target.
            
            Before running make check-target-newlib, set the DEJAGNU environment
            variable to point to ~/site.exp.
            
            Here is a sample site.exp:
            
            # Make sure we look in the right place for the board description files.
            if ![info exists boards_dir] {
                set boards_dir {}
            }
            lappend boards_dir "your dejagnu/baseboards here"
            
            verbose "Global Config File: target_triplet is $target_triplet" 2
            
            global target_list
            case "$target_triplet" in {
            
                { "mips-*elf*" } {
            	set target_list "mips-sim"
                }
            
                default {
            	set target_list { "unix" }
                }
            }
            
            mips-sim refers to an exp file in the baseboards directory.  You'll
            need to add the other targets you're testing to the case statement.
            
            Now type make check-target-newlib in the top-level build directory to
            run the testsuite.
            
            Shared newlib
            =============
            
            newlib uses libtool when it is being compiled natively (with
            --target=i[34567]86-pc-linux-gnu) on an i[34567]86-pc-linux-gnu
            host. This allows newlib to be compiled as a shared library.
            
            To configure newlib, do the following from your build directory:
            
            $(source_dir)/src/configure --with-newlib --prefix=$(install_dir)
            
            configure will recognize that host == target ==
            i[34567]86-pc-linux-gnu, so it will tell newlib to compile itself using
            libtool. By default, libtool will build shared and static versions of
            newlib.
            
            To compile a program against shared newlib, do the following (where
            target_install_dir = $(install_dir)/i[34567]86-pc-linux-gnu):
            
            gcc -nostdlib $(target_install_dir)/lib/crt0.o progname.c -I $(target_install_dir)/include -L $(target_install_dir)/lib -lc -lm -lgcc
            
            To run the program, make sure that $(target_install_dir)/lib is listed
            in the LD_LIBRARY_PATH environment variable.
            
            To create a static binary linked against newlib, do the following:
            
            gcc -nostdlib -static $(target_install_dir)/lib/crt0.o progname.c -I $(target_install_dir)/include -L $(target_install_dir)/lib -lc -lm
            
            libtool can be instructed to produce only static libraries. To build
            newlib as a static library only, do the following from your build
            directory:
            
            $(source_dir)/src/configure --with-newlib --prefix=$(install_dir) --disable-shared
            
            Regenerating Configuration Files
            ================================
            
            At times you will need to make changes to configure.in and Makefile.am files.
            This will mean that configure and Makefile.in files will need to be
            regenerated.
            
            At the top level of newlib is the file: acinclude.m4.  This file contains
            the definition of the NEWLIB_CONFIGURE macro which is used by all configure.in
            files in newlib.  You will notice that each directory in newlib containing
            a configure.in file also contains an aclocal.m4 file.  This file is
            generated by issuing: aclocal -I${relative_path_to_toplevel_newlib_dir}
            -I${relative_path_to_toplevel_src_dir}
            The first relative directory is to access acinclude.m4.  The second relative
            directory is to access libtool information in the top-level src directory.
            
            For example, to regenerate aclocal.m4 in newlib/libc/machine/arm:
            
              aclocal -I ../../.. -I ../../../..
            
            Note that if the top level acinclude.m4 is altered, every aclocal.m4 file 
            in newlib should be regenerated.
            
            If the aclocal.m4 file is regenerated due to a change in acinclude.m4 or
            if a configure.in file is modified, the corresponding configure file in the 
            directory must be regenerated using autoconf.  No parameters are necessary.
            In the previous example, we would issue:
            
              autoconf
            
            from the newlib/libc/machine/arm directory.
            
            If you have regenerated a configure file or if you have modified a Makefile.am
            file, you will need to regenerate the appropriate Makefile.in file(s).
            For newlib, automake is a bit trickier.  First of all, all Makefile.in
            files in newlib (and libgloss) are generated using the --cygnus option
            of automake.  
            
            Makefile.in files are generated from the nearest directory up the chain
            which contains a configure.in file.  In most cases, this is the same
            directory containing configure.in, but there are exceptions.
            For example, the newlib/libc directory has a number of
            subdirectories that do not contain their own configure.in files (e.g. stdio).
            For these directories, you must issue the automake command from newlib/libc
            which is the nearest parent directory that contains a configure.in.
            When you issue the automake command, you specify the subdirectory for
            the Makefile.in you are regenerating.  For example:
            
               automake --cygnus stdio/Makefile stdlib/Makefile
            
            Note how multiple Makefile.in files can be created in the same step.  You
            would not specify machine/Makefile or sys/Makefile in the previous example
            because both of these subdirectories contain their own configure.in files.
            One would change to each of these subdirectories and in turn issue:
            
               automake --cygnus Makefile
            
            Let's say you create a new machine directory XXXX off of newlib/libc/machine.
            After creating a new configure.in and Makefile.am file, you would issue:
            
               aclocal -I ../../..
               autoconf
               automake --cygnus Makefile
            
            from newlib/libc/machine/XXXX
            
            It is strongly advised that you use an adequate version of autotools.
            For this latest release, the following were used: autoconf 2.68, aclocal 1.11.6, and 
            automake 1.11.6.
            
            Reporting Bugs
            ==============
            
            The correct address for reporting bugs found in NEWLIB is
            "newlib@sourceware.org".  Please email all bug reports to that
            address.  Please include the NEWLIB version number (e.g., newlib-2.0.0),
            and how you configured it (e.g., "sun4 host and m68k-aout target").
            Since NEWLIB supports many different configurations, it is important
            that you be precise about this.
            
            Archives of the newlib mailing list are on-line, see
            	http://sourceware.org/ml/newlib/
            
            pthreads-win32 show license homepage
            	pthreads-win32 - a POSIX threads library for Microsoft Windows
            
            
            This file is Copyrighted
            ------------------------
            
                This file is covered under the following Copyright:
            
            	Copyright (C) 2001,2006 Ross P. Johnson
            	All rights reserved.
            
            	Everyone is permitted to copy and distribute verbatim copies
            	of this license document, but changing it is not allowed.
            
            Pthreads-win32 is covered by the GNU Lesser General Public License
            ------------------------------------------------------------------
            
                Pthreads-win32 is open software; you can redistribute it and/or
                modify it under the terms of the GNU Lesser General Public License
                as published by the Free Software Foundation version 2.1 of the
                License.
            
                Pthreads-win32 is several binary link libraries, several modules,
                associated interface definition files and scripts used to control
                its compilation and installation.
            
                Pthreads-win32 is distributed in the hope that it will be useful,
                but WITHOUT ANY WARRANTY; without even the implied warranty of
                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                GNU Lesser General Public License for more details.
            
                A copy of the GNU Lesser General Public License is distributed with
                pthreads-win32 under the filename:
            
            	    COPYING.LIB
            
                You should have received a copy of the version 2.1 GNU Lesser General
                Public License with pthreads-win32; if not, write to:
            
            	    Free Software Foundation, Inc.
            	    59 Temple Place
            	    Suite 330
            	    Boston, MA	02111-1307
            	    USA
            
                The contact addresses for pthreads-win32 is as follows:
            
                    Web:	http://sources.redhat.com/pthreads-win32
                    Email:  Ross Johnson
                            Please use: Firstname.Lastname@homemail.com.au
            
            
            
            Pthreads-win32 copyrights and exception files
            ---------------------------------------------
            
                With the exception of the files listed below, Pthreads-win32
                is covered under the following GNU Lesser General Public License
                Copyrights:
            
            	Pthreads-win32 - POSIX Threads Library for Win32
            	Copyright(C) 1998 John E. Bossom
            	Copyright(C) 1999,2006 Pthreads-win32 contributors
            
            	The current list of contributors is contained
                    in the file CONTRIBUTORS included with the source
            	code distribution. The current list of CONTRIBUTORS
            	can also be seen at the following WWW location:
                    http://sources.redhat.com/pthreads-win32/contributors.html
            
                Contact Email: Ross Johnson
                               Please use: Firstname.Lastname@homemail.com.au
            
                These files are not covered under one of the Copyrights listed above:
            
                        COPYING
            	    COPYING.LIB
                        tests/rwlock7.c
            
                This file, COPYING, is distributed under the Copyright found at the
                top of this file.  It is important to note that you may distribute
                verbatim copies of this file but you may not modify this file.
            
                The file COPYING.LIB, which contains a copy of the version 2.1
                GNU Lesser General Public License, is itself copyrighted by the
                Free Software Foundation, Inc.  Please note that the Free Software
                Foundation, Inc. does NOT have a copyright over Pthreads-win32,
                only the COPYING.LIB that is supplied with pthreads-win32.
            
                The file tests/rwlock7.c is derived from code written by
                Dave Butenhof for his book 'Programming With POSIX(R) Threads'.
                The original code was obtained by free download from his website
                http://home.earthlink.net/~anneart/family/Threads/source.html
                and did not contain a copyright or author notice. It is assumed to
                be freely distributable.
            
                In all cases one may use and distribute these exception files freely.
                And because one may freely distribute the LGPL covered files, the
                entire pthreads-win32 source may be freely used and distributed.
            
            
            
            General Copyleft and License info
            ---------------------------------
            
                For general information on Copylefts, see:
            
            	http://www.gnu.org/copyleft/
            
                For information on GNU Lesser General Public Licenses, see:
            
            	http://www.gnu.org/copyleft/lesser.html
            	http://www.gnu.org/copyleft/lesser.txt
            
            
            Why pthreads-win32 did not use the GNU General Public License
            -------------------------------------------------------------
            
                The goal of the pthreads-win32 project has been to
                provide a quality and complete implementation of the POSIX
                threads API for Microsoft Windows within the limits imposed
                by virtue of it being a stand-alone library and not
                linked directly to other POSIX compliant libraries. For
                example, some functions and features, such as those based
                on POSIX signals, are missing.
            
                Pthreads-win32 is a library, available in several different
                versions depending on supported compilers, and may be used
                as a dynamically linked module or a statically linked set of
                binary modules. It is not an application on it's own.
            
                It was fully intended that pthreads-win32 be usable with
                commercial software not covered by either the GPL or the LGPL
                licenses. Pthreads-win32 has many contributors to it's
                code base, many of whom have done so because they have
                used the library in commercial or proprietry software
                projects.
            
                Releasing pthreads-win32 under the LGPL ensures that the
                library can be used widely, while at the same time ensures
                that bug fixes and improvements to the pthreads-win32 code
                itself is returned to benefit all current and future users
                of the library.
            
                Although pthreads-win32 makes it possible for applications
                that use POSIX threads to be ported to Win32 platforms, the
                broader goal of the project is to encourage the use of open
                standards, and in particular, to make it just a little easier
                for developers writing Win32 applications to consider
                widening the potential market for their products.
            
            open-vcdiff show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright (c) 2008, Google Inc.
            
               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.
            
            WebKit show license homepage
            (WebKit doesn't distribute an explicit license.  This LICENSE is derived from
            license text in the source.)
            
            Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
            2006, 2007 Alexander Kellett, Alexey Proskuryakov, Alex Mathews, Allan
            Sandfeld Jensen, Alp Toker, Anders Carlsson, Andrew Wellington, Antti
            Koivisto, Apple Inc., Arthur Langereis, Baron Schwartz, Bjoern Graf,
            Brent Fulgham, Cameron Zwarich, Charles Samuels, Christian Dywan,
            Collabora Ltd., Cyrus Patel, Daniel Molkentin, Dave Maclachlan, David
            Smith, Dawit Alemayehu, Dirk Mueller, Dirk Schulze, Don Gibson, Enrico
            Ros, Eric Seidel, Frederik Holljen, Frerich Raabe, Friedmann Kleint,
            George Staikos, Google Inc., Graham Dennis, Harri Porten, Henry Mason,
            Hiroyuki Ikezoe, Holger Hans Peter Freyther, IBM, James G. Speth, Jan
            Alonzo, Jean-Loup Gailly, John Reis, Jonas Witt, Jon Shier, Jonas
            Witt, Julien Chaffraix, Justin Haygood, Kevin Ollivier, Kevin Watters,
            Kimmo Kinnunen, Kouhei Sutou, Krzysztof Kowalczyk, Lars Knoll, Luca
            Bruno, Maks Orlovich, Malte Starostik, Mark Adler, Martin Jones,
            Marvin Decker, Matt Lilek, Michael Emmel, Mitz Pettel, mozilla.org,
            Netscape Communications Corporation, Nicholas Shanks, Nikolas
            Zimmermann, Nokia, Oliver Hunt, Opened Hand, Paul Johnston, Peter
            Kelly, Pioneer Research Center USA, Rich Moore, Rob Buis, Robin Dunn,
            Ronald Tschalär, Samuel Weinig, Simon Hausmann, Staikos Computing
            Services Inc., Stefan Schimanski, Symantec Corporation, The Dojo
            Foundation, The Karbon Developers, Thomas Boyer, Tim Copperfield,
            Tobias Anton, Torben Weis, Trolltech, University of Cambridge, Vaclav
            Slavik, Waldo Bastian, Xan Lopez, Zack Rusin
            
            The terms and conditions vary from file to file, but are one of:
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
            1. Redistributions of source code must retain the above copyright
               notice, this list of conditions and the following disclaimer.
            
            2. Redistributions in binary form must reproduce the above copyright
               notice, this list of conditions and the following disclaimer in the
               documentation and/or other materials provided with the
               distribution.
            
            *OR*
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
            1. Redistributions of source code must retain the above copyright
               notice, this list of conditions and the following disclaimer.
            2. Redistributions in binary form must reproduce the above copyright
               notice, this list of conditions and the following disclaimer in the
               documentation and/or other materials provided with the
               distribution.
            3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
               its contributors may be used to endorse or promote products derived
               from this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
            EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
            PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
            CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
            EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
            PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
            PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
            
            OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            
                              GNU LIBRARY GENERAL PUBLIC LICENSE
                                   Version 2, June 1991
            
             Copyright (C) 1991 Free Software Foundation, Inc.
             51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
             Everyone is permitted to copy and distribute verbatim copies
             of this license document, but changing it is not allowed.
            
            [This is the first released version of the library GPL.  It is
             numbered 2 because it goes with version 2 of the ordinary GPL.]
            
                                        Preamble
            
              The licenses for most software are designed to take away your
            freedom to share and change it.  By contrast, the GNU General Public
            Licenses are intended to guarantee your freedom to share and change
            free software--to make sure the software is free for all its users.
            
              This license, the Library General Public License, applies to some
            specially designated Free Software Foundation software, and to any
            other libraries whose authors decide to use it.  You can use it for
            your libraries, too.
            
              When we speak of free software, we are referring to freedom, not
            price.  Our General Public Licenses are designed to make sure that you
            have the freedom to distribute copies of free software (and charge for
            this service if you wish), that you receive source code or can get it
            if you want it, that you can change the software or use pieces of it
            in new free programs; and that you know you can do these things.
            
              To protect your rights, we need to make restrictions that forbid
            anyone to deny you these rights or to ask you to surrender the rights.
            These restrictions translate to certain responsibilities for you if
            you distribute copies of the library, or if you modify it.
            
              For example, if you distribute copies of the library, whether gratis
            or for a fee, you must give the recipients all the rights that we gave
            you.  You must make sure that they, too, receive or can get the source
            code.  If you link a program with the library, you must provide
            complete object files to the recipients so that they can relink them
            with the library, after making changes to the library and recompiling
            it.  And you must show them these terms so they know their rights.
            
              Our method of protecting your rights has two steps: (1) copyright
            the library, and (2) offer you this license which gives you legal
            permission to copy, distribute and/or modify the library.
            
              Also, for each distributor's protection, we want to make certain
            that everyone understands that there is no warranty for this free
            library.  If the library is modified by someone else and passed on, we
            want its recipients to know that what they have is not the original
            version, so that any problems introduced by others will not reflect on
            the original authors' reputations.
            
              Finally, any free program is threatened constantly by software
            patents.  We wish to avoid the danger that companies distributing free
            software will individually obtain patent licenses, thus in effect
            transforming the program into proprietary software.  To prevent this,
            we have made it clear that any patent must be licensed for everyone's
            free use or not licensed at all.
            
              Most GNU software, including some libraries, is covered by the ordinary
            GNU General Public License, which was designed for utility programs.  This
            license, the GNU Library General Public License, applies to certain
            designated libraries.  This license is quite different from the ordinary
            one; be sure to read it in full, and don't assume that anything in it is
            the same as in the ordinary license.
            
              The reason we have a separate public license for some libraries is that
            they blur the distinction we usually make between modifying or adding to a
            program and simply using it.  Linking a program with a library, without
            changing the library, is in some sense simply using the library, and is
            analogous to running a utility program or application program.  However, in
            a textual and legal sense, the linked executable is a combined work, a
            derivative of the original library, and the ordinary General Public License
            treats it as such.
            
              Because of this blurred distinction, using the ordinary General
            Public License for libraries did not effectively promote software
            sharing, because most developers did not use the libraries.  We
            concluded that weaker conditions might promote sharing better.
            
              However, unrestricted linking of non-free programs would deprive the
            users of those programs of all benefit from the free status of the
            libraries themselves.  This Library General Public License is intended to
            permit developers of non-free programs to use free libraries, while
            preserving your freedom as a user of such programs to change the free
            libraries that are incorporated in them.  (We have not seen how to achieve
            this as regards changes in header files, but we have achieved it as regards
            changes in the actual functions of the Library.)  The hope is that this
            will lead to faster development of free libraries.
            
              The precise terms and conditions for copying, distribution and
            modification follow.  Pay close attention to the difference between a
            "work based on the library" and a "work that uses the library".  The
            former contains code derived from the library, while the latter only
            works together with the library.
            
              Note that it is possible for a library to be covered by the ordinary
            General Public License rather than by this special one.
            
                              GNU LIBRARY GENERAL PUBLIC LICENSE
               TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
            
              0. This License Agreement applies to any software library which
            contains a notice placed by the copyright holder or other authorized
            party saying it may be distributed under the terms of this Library
            General Public License (also called "this License").  Each licensee is
            addressed as "you".
            
              A "library" means a collection of software functions and/or data
            prepared so as to be conveniently linked with application programs
            (which use some of those functions and data) to form executables.
            
              The "Library", below, refers to any such software library or work
            which has been distributed under these terms.  A "work based on the
            Library" means either the Library or any derivative work under
            copyright law: that is to say, a work containing the Library or a
            portion of it, either verbatim or with modifications and/or translated
            straightforwardly into another language.  (Hereinafter, translation is
            included without limitation in the term "modification".)
            
              "Source code" for a work means the preferred form of the work for
            making modifications to it.  For a library, complete source code means
            all the source code for all modules it contains, plus any associated
            interface definition files, plus the scripts used to control compilation
            and installation of the library.
            
              Activities other than copying, distribution and modification are not
            covered by this License; they are outside its scope.  The act of
            running a program using the Library is not restricted, and output from
            such a program is covered only if its contents constitute a work based
            on the Library (independent of the use of the Library in a tool for
            writing it).  Whether that is true depends on what the Library does
            and what the program that uses the Library does.
              
              1. You may copy and distribute verbatim copies of the Library's
            complete source code as you receive it, in any medium, provided that
            you conspicuously and appropriately publish on each copy an
            appropriate copyright notice and disclaimer of warranty; keep intact
            all the notices that refer to this License and to the absence of any
            warranty; and distribute a copy of this License along with the
            Library.
            
              You may charge a fee for the physical act of transferring a copy,
            and you may at your option offer warranty protection in exchange for a
            fee.
            
              2. You may modify your copy or copies of the Library or any portion
            of it, thus forming a work based on the Library, and copy and
            distribute such modifications or work under the terms of Section 1
            above, provided that you also meet all of these conditions:
            
                a) The modified work must itself be a software library.
            
                b) You must cause the files modified to carry prominent notices
                stating that you changed the files and the date of any change.
            
                c) You must cause the whole of the work to be licensed at no
                charge to all third parties under the terms of this License.
            
                d) If a facility in the modified Library refers to a function or a
                table of data to be supplied by an application program that uses
                the facility, other than as an argument passed when the facility
                is invoked, then you must make a good faith effort to ensure that,
                in the event an application does not supply such function or
                table, the facility still operates, and performs whatever part of
                its purpose remains meaningful.
            
                (For example, a function in a library to compute square roots has
                a purpose that is entirely well-defined independent of the
                application.  Therefore, Subsection 2d requires that any
                application-supplied function or table used by this function must
                be optional: if the application does not supply it, the square
                root function must still compute square roots.)
            
            These requirements apply to the modified work as a whole.  If
            identifiable sections of that work are not derived from the Library,
            and can be reasonably considered independent and separate works in
            themselves, then this License, and its terms, do not apply to those
            sections when you distribute them as separate works.  But when you
            distribute the same sections as part of a whole which is a work based
            on the Library, the distribution of the whole must be on the terms of
            this License, whose permissions for other licensees extend to the
            entire whole, and thus to each and every part regardless of who wrote
            it.
            
            Thus, it is not the intent of this section to claim rights or contest
            your rights to work written entirely by you; rather, the intent is to
            exercise the right to control the distribution of derivative or
            collective works based on the Library.
            
            In addition, mere aggregation of another work not based on the Library
            with the Library (or with a work based on the Library) on a volume of
            a storage or distribution medium does not bring the other work under
            the scope of this License.
            
              3. You may opt to apply the terms of the ordinary GNU General Public
            License instead of this License to a given copy of the Library.  To do
            this, you must alter all the notices that refer to this License, so
            that they refer to the ordinary GNU General Public License, version 2,
            instead of to this License.  (If a newer version than version 2 of the
            ordinary GNU General Public License has appeared, then you can specify
            that version instead if you wish.)  Do not make any other change in
            these notices.
            
              Once this change is made in a given copy, it is irreversible for
            that copy, so the ordinary GNU General Public License applies to all
            subsequent copies and derivative works made from that copy.
            
              This option is useful when you wish to copy part of the code of
            the Library into a program that is not a library.
            
              4. You may copy and distribute the Library (or a portion or
            derivative of it, under Section 2) in object code or executable form
            under the terms of Sections 1 and 2 above provided that you accompany
            it with the complete corresponding machine-readable source code, which
            must be distributed under the terms of Sections 1 and 2 above on a
            medium customarily used for software interchange.
            
              If distribution of object code is made by offering access to copy
            from a designated place, then offering equivalent access to copy the
            source code from the same place satisfies the requirement to
            distribute the source code, even though third parties are not
            compelled to copy the source along with the object code.
            
              5. A program that contains no derivative of any portion of the
            Library, but is designed to work with the Library by being compiled or
            linked with it, is called a "work that uses the Library".  Such a
            work, in isolation, is not a derivative work of the Library, and
            therefore falls outside the scope of this License.
            
              However, linking a "work that uses the Library" with the Library
            creates an executable that is a derivative of the Library (because it
            contains portions of the Library), rather than a "work that uses the
            library".  The executable is therefore covered by this License.
            Section 6 states terms for distribution of such executables.
            
              When a "work that uses the Library" uses material from a header file
            that is part of the Library, the object code for the work may be a
            derivative work of the Library even though the source code is not.
            Whether this is true is especially significant if the work can be
            linked without the Library, or if the work is itself a library.  The
            threshold for this to be true is not precisely defined by law.
            
              If such an object file uses only numerical parameters, data
            structure layouts and accessors, and small macros and small inline
            functions (ten lines or less in length), then the use of the object
            file is unrestricted, regardless of whether it is legally a derivative
            work.  (Executables containing this object code plus portions of the
            Library will still fall under Section 6.)
            
              Otherwise, if the work is a derivative of the Library, you may
            distribute the object code for the work under the terms of Section 6.
            Any executables containing that work also fall under Section 6,
            whether or not they are linked directly with the Library itself.
            
              6. As an exception to the Sections above, you may also compile or
            link a "work that uses the Library" with the Library to produce a
            work containing portions of the Library, and distribute that work
            under terms of your choice, provided that the terms permit
            modification of the work for the customer's own use and reverse
            engineering for debugging such modifications.
            
              You must give prominent notice with each copy of the work that the
            Library is used in it and that the Library and its use are covered by
            this License.  You must supply a copy of this License.  If the work
            during execution displays copyright notices, you must include the
            copyright notice for the Library among them, as well as a reference
            directing the user to the copy of this License.  Also, you must do one
            of these things:
            
                a) Accompany the work with the complete corresponding
                machine-readable source code for the Library including whatever
                changes were used in the work (which must be distributed under
                Sections 1 and 2 above); and, if the work is an executable linked
                with the Library, with the complete machine-readable "work that
                uses the Library", as object code and/or source code, so that the
                user can modify the Library and then relink to produce a modified
                executable containing the modified Library.  (It is understood
                that the user who changes the contents of definitions files in the
                Library will not necessarily be able to recompile the application
                to use the modified definitions.)
            
                b) Accompany the work with a written offer, valid for at
                least three years, to give the same user the materials
                specified in Subsection 6a, above, for a charge no more
                than the cost of performing this distribution.
            
                c) If distribution of the work is made by offering access to copy
                from a designated place, offer equivalent access to copy the above
                specified materials from the same place.
            
                d) Verify that the user has already received a copy of these
                materials or that you have already sent this user a copy.
            
              For an executable, the required form of the "work that uses the
            Library" must include any data and utility programs needed for
            reproducing the executable from it.  However, as a special exception,
            the source code distributed need not include anything that is normally
            distributed (in either source or binary form) with the major
            components (compiler, kernel, and so on) of the operating system on
            which the executable runs, unless that component itself accompanies
            the executable.
            
              It may happen that this requirement contradicts the license
            restrictions of other proprietary libraries that do not normally
            accompany the operating system.  Such a contradiction means you cannot
            use both them and the Library together in an executable that you
            distribute.
            
              7. You may place library facilities that are a work based on the
            Library side-by-side in a single library together with other library
            facilities not covered by this License, and distribute such a combined
            library, provided that the separate distribution of the work based on
            the Library and of the other library facilities is otherwise
            permitted, and provided that you do these two things:
            
                a) Accompany the combined library with a copy of the same work
                based on the Library, uncombined with any other library
                facilities.  This must be distributed under the terms of the
                Sections above.
            
                b) Give prominent notice with the combined library of the fact
                that part of it is a work based on the Library, and explaining
                where to find the accompanying uncombined form of the same work.
            
              8. You may not copy, modify, sublicense, link with, or distribute
            the Library except as expressly provided under this License.  Any
            attempt otherwise to copy, modify, sublicense, link with, or
            distribute the Library is void, and will automatically terminate your
            rights under this License.  However, parties who have received copies,
            or rights, from you under this License will not have their licenses
            terminated so long as such parties remain in full compliance.
            
              9. You are not required to accept this License, since you have not
            signed it.  However, nothing else grants you permission to modify or
            distribute the Library or its derivative works.  These actions are
            prohibited by law if you do not accept this License.  Therefore, by
            modifying or distributing the Library (or any work based on the
            Library), you indicate your acceptance of this License to do so, and
            all its terms and conditions for copying, distributing or modifying
            the Library or works based on it.
            
              10. Each time you redistribute the Library (or any work based on the
            Library), the recipient automatically receives a license from the
            original licensor to copy, distribute, link with or modify the Library
            subject to these terms and conditions.  You may not impose any further
            restrictions on the recipients' exercise of the rights granted herein.
            You are not responsible for enforcing compliance by third parties to
            this License.
            
              11. If, as a consequence of a court judgment or allegation of patent
            infringement or for any other reason (not limited to patent issues),
            conditions are imposed on you (whether by court order, agreement or
            otherwise) that contradict the conditions of this License, they do not
            excuse you from the conditions of this License.  If you cannot
            distribute so as to satisfy simultaneously your obligations under this
            License and any other pertinent obligations, then as a consequence you
            may not distribute the Library at all.  For example, if a patent
            license would not permit royalty-free redistribution of the Library by
            all those who receive copies directly or indirectly through you, then
            the only way you could satisfy both it and this License would be to
            refrain entirely from distribution of the Library.
            
            If any portion of this section is held invalid or unenforceable under any
            particular circumstance, the balance of the section is intended to apply,
            and the section as a whole is intended to apply in other circumstances.
            
            It is not the purpose of this section to induce you to infringe any
            patents or other property right claims or to contest validity of any
            such claims; this section has the sole purpose of protecting the
            integrity of the free software distribution system which is
            implemented by public license practices.  Many people have made
            generous contributions to the wide range of software distributed
            through that system in reliance on consistent application of that
            system; it is up to the author/donor to decide if he or she is willing
            to distribute software through any other system and a licensee cannot
            impose that choice.
            
            This section is intended to make thoroughly clear what is believed to
            be a consequence of the rest of this License.
            
              12. If the distribution and/or use of the Library is restricted in
            certain countries either by patents or by copyrighted interfaces, the
            original copyright holder who places the Library under this License may add
            an explicit geographical distribution limitation excluding those countries,
            so that distribution is permitted only in or among countries not thus
            excluded.  In such case, this License incorporates the limitation as if
            written in the body of this License.
            
              13. The Free Software Foundation may publish revised and/or new
            versions of the Library General Public License from time to time.
            Such new versions will be similar in spirit to the present version,
            but may differ in detail to address new problems or concerns.
            
            Each version is given a distinguishing version number.  If the Library
            specifies a version number of this License which applies to it and
            "any later version", you have the option of following the terms and
            conditions either of that version or of any later version published by
            the Free Software Foundation.  If the Library does not specify a
            license version number, you may choose any version ever published by
            the Free Software Foundation.
            
              14. If you wish to incorporate parts of the Library into other free
            programs whose distribution conditions are incompatible with these,
            write to the author to ask for permission.  For software which is
            copyrighted by the Free Software Foundation, write to the Free
            Software Foundation; we sometimes make exceptions for this.  Our
            decision will be guided by the two goals of preserving the free status
            of all derivatives of our free software and of promoting the sharing
            and reuse of software generally.
            
                                        NO WARRANTY
            
              15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
            WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
            EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
            OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
            KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
            PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
            LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
            THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
            
              16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
            WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
            AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
            FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
            CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
            LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
            RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
            FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
            SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
            DAMAGES.
            
                                 END OF TERMS AND CONDITIONS
            
                              GNU LESSER GENERAL PUBLIC LICENSE
                                   Version 2.1, February 1999
            
             Copyright (C) 1991, 1999 Free Software Foundation, Inc.
             51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
             Everyone is permitted to copy and distribute verbatim copies
             of this license document, but changing it is not allowed.
            
            [This is the first released version of the Lesser GPL.  It also counts
             as the successor of the GNU Library Public License, version 2, hence
             the version number 2.1.]
            
                                        Preamble
            
              The licenses for most software are designed to take away your
            freedom to share and change it.  By contrast, the GNU General Public
            Licenses are intended to guarantee your freedom to share and change
            free software--to make sure the software is free for all its users.
            
              This license, the Lesser General Public License, applies to some
            specially designated software packages--typically libraries--of the
            Free Software Foundation and other authors who decide to use it.  You
            can use it too, but we suggest you first think carefully about whether
            this license or the ordinary General Public License is the better
            strategy to use in any particular case, based on the explanations below.
            
              When we speak of free software, we are referring to freedom of use,
            not price.  Our General Public Licenses are designed to make sure that
            you have the freedom to distribute copies of free software (and charge
            for this service if you wish); that you receive source code or can get
            it if you want it; that you can change the software and use pieces of
            it in new free programs; and that you are informed that you can do
            these things.
            
              To protect your rights, we need to make restrictions that forbid
            distributors to deny you these rights or to ask you to surrender these
            rights.  These restrictions translate to certain responsibilities for
            you if you distribute copies of the library or if you modify it.
            
              For example, if you distribute copies of the library, whether gratis
            or for a fee, you must give the recipients all the rights that we gave
            you.  You must make sure that they, too, receive or can get the source
            code.  If you link other code with the library, you must provide
            complete object files to the recipients, so that they can relink them
            with the library after making changes to the library and recompiling
            it.  And you must show them these terms so they know their rights.
            
              We protect your rights with a two-step method: (1) we copyright the
            library, and (2) we offer you this license, which gives you legal
            permission to copy, distribute and/or modify the library.
            
              To protect each distributor, we want to make it very clear that
            there is no warranty for the free library.  Also, if the library is
            modified by someone else and passed on, the recipients should know
            that what they have is not the original version, so that the original
            author's reputation will not be affected by problems that might be
            introduced by others.
            
              Finally, software patents pose a constant threat to the existence of
            any free program.  We wish to make sure that a company cannot
            effectively restrict the users of a free program by obtaining a
            restrictive license from a patent holder.  Therefore, we insist that
            any patent license obtained for a version of the library must be
            consistent with the full freedom of use specified in this license.
            
              Most GNU software, including some libraries, is covered by the
            ordinary GNU General Public License.  This license, the GNU Lesser
            General Public License, applies to certain designated libraries, and
            is quite different from the ordinary General Public License.  We use
            this license for certain libraries in order to permit linking those
            libraries into non-free programs.
            
              When a program is linked with a library, whether statically or using
            a shared library, the combination of the two is legally speaking a
            combined work, a derivative of the original library.  The ordinary
            General Public License therefore permits such linking only if the
            entire combination fits its criteria of freedom.  The Lesser General
            Public License permits more lax criteria for linking other code with
            the library.
            
              We call this license the "Lesser" General Public License because it
            does Less to protect the user's freedom than the ordinary General
            Public License.  It also provides other free software developers Less
            of an advantage over competing non-free programs.  These disadvantages
            are the reason we use the ordinary General Public License for many
            libraries.  However, the Lesser license provides advantages in certain
            special circumstances.
            
              For example, on rare occasions, there may be a special need to
            encourage the widest possible use of a certain library, so that it becomes
            a de-facto standard.  To achieve this, non-free programs must be
            allowed to use the library.  A more frequent case is that a free
            library does the same job as widely used non-free libraries.  In this
            case, there is little to gain by limiting the free library to free
            software only, so we use the Lesser General Public License.
            
              In other cases, permission to use a particular library in non-free
            programs enables a greater number of people to use a large body of
            free software.  For example, permission to use the GNU C Library in
            non-free programs enables many more people to use the whole GNU
            operating system, as well as its variant, the GNU/Linux operating
            system.
            
              Although the Lesser General Public License is Less protective of the
            users' freedom, it does ensure that the user of a program that is
            linked with the Library has the freedom and the wherewithal to run
            that program using a modified version of the Library.
            
              The precise terms and conditions for copying, distribution and
            modification follow.  Pay close attention to the difference between a
            "work based on the library" and a "work that uses the library".  The
            former contains code derived from the library, whereas the latter must
            be combined with the library in order to run.
            
                              GNU LESSER GENERAL PUBLIC LICENSE
               TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
            
              0. This License Agreement applies to any software library or other
            program which contains a notice placed by the copyright holder or
            other authorized party saying it may be distributed under the terms of
            this Lesser General Public License (also called "this License").
            Each licensee is addressed as "you".
            
              A "library" means a collection of software functions and/or data
            prepared so as to be conveniently linked with application programs
            (which use some of those functions and data) to form executables.
            
              The "Library", below, refers to any such software library or work
            which has been distributed under these terms.  A "work based on the
            Library" means either the Library or any derivative work under
            copyright law: that is to say, a work containing the Library or a
            portion of it, either verbatim or with modifications and/or translated
            straightforwardly into another language.  (Hereinafter, translation is
            included without limitation in the term "modification".)
            
              "Source code" for a work means the preferred form of the work for
            making modifications to it.  For a library, complete source code means
            all the source code for all modules it contains, plus any associated
            interface definition files, plus the scripts used to control compilation
            and installation of the library.
            
              Activities other than copying, distribution and modification are not
            covered by this License; they are outside its scope.  The act of
            running a program using the Library is not restricted, and output from
            such a program is covered only if its contents constitute a work based
            on the Library (independent of the use of the Library in a tool for
            writing it).  Whether that is true depends on what the Library does
            and what the program that uses the Library does.
            
              1. You may copy and distribute verbatim copies of the Library's
            complete source code as you receive it, in any medium, provided that
            you conspicuously and appropriately publish on each copy an
            appropriate copyright notice and disclaimer of warranty; keep intact
            all the notices that refer to this License and to the absence of any
            warranty; and distribute a copy of this License along with the
            Library.
            
              You may charge a fee for the physical act of transferring a copy,
            and you may at your option offer warranty protection in exchange for a
            fee.
            
              2. You may modify your copy or copies of the Library or any portion
            of it, thus forming a work based on the Library, and copy and
            distribute such modifications or work under the terms of Section 1
            above, provided that you also meet all of these conditions:
            
                a) The modified work must itself be a software library.
            
                b) You must cause the files modified to carry prominent notices
                stating that you changed the files and the date of any change.
            
                c) You must cause the whole of the work to be licensed at no
                charge to all third parties under the terms of this License.
            
                d) If a facility in the modified Library refers to a function or a
                table of data to be supplied by an application program that uses
                the facility, other than as an argument passed when the facility
                is invoked, then you must make a good faith effort to ensure that,
                in the event an application does not supply such function or
                table, the facility still operates, and performs whatever part of
                its purpose remains meaningful.
            
                (For example, a function in a library to compute square roots has
                a purpose that is entirely well-defined independent of the
                application.  Therefore, Subsection 2d requires that any
                application-supplied function or table used by this function must
                be optional: if the application does not supply it, the square
                root function must still compute square roots.)
            
            These requirements apply to the modified work as a whole.  If
            identifiable sections of that work are not derived from the Library,
            and can be reasonably considered independent and separate works in
            themselves, then this License, and its terms, do not apply to those
            sections when you distribute them as separate works.  But when you
            distribute the same sections as part of a whole which is a work based
            on the Library, the distribution of the whole must be on the terms of
            this License, whose permissions for other licensees extend to the
            entire whole, and thus to each and every part regardless of who wrote
            it.
            
            Thus, it is not the intent of this section to claim rights or contest
            your rights to work written entirely by you; rather, the intent is to
            exercise the right to control the distribution of derivative or
            collective works based on the Library.
            
            In addition, mere aggregation of another work not based on the Library
            with the Library (or with a work based on the Library) on a volume of
            a storage or distribution medium does not bring the other work under
            the scope of this License.
            
              3. You may opt to apply the terms of the ordinary GNU General Public
            License instead of this License to a given copy of the Library.  To do
            this, you must alter all the notices that refer to this License, so
            that they refer to the ordinary GNU General Public License, version 2,
            instead of to this License.  (If a newer version than version 2 of the
            ordinary GNU General Public License has appeared, then you can specify
            that version instead if you wish.)  Do not make any other change in
            these notices.
            
              Once this change is made in a given copy, it is irreversible for
            that copy, so the ordinary GNU General Public License applies to all
            subsequent copies and derivative works made from that copy.
            
              This option is useful when you wish to copy part of the code of
            the Library into a program that is not a library.
            
              4. You may copy and distribute the Library (or a portion or
            derivative of it, under Section 2) in object code or executable form
            under the terms of Sections 1 and 2 above provided that you accompany
            it with the complete corresponding machine-readable source code, which
            must be distributed under the terms of Sections 1 and 2 above on a
            medium customarily used for software interchange.
            
              If distribution of object code is made by offering access to copy
            from a designated place, then offering equivalent access to copy the
            source code from the same place satisfies the requirement to
            distribute the source code, even though third parties are not
            compelled to copy the source along with the object code.
            
              5. A program that contains no derivative of any portion of the
            Library, but is designed to work with the Library by being compiled or
            linked with it, is called a "work that uses the Library".  Such a
            work, in isolation, is not a derivative work of the Library, and
            therefore falls outside the scope of this License.
            
              However, linking a "work that uses the Library" with the Library
            creates an executable that is a derivative of the Library (because it
            contains portions of the Library), rather than a "work that uses the
            library".  The executable is therefore covered by this License.
            Section 6 states terms for distribution of such executables.
            
              When a "work that uses the Library" uses material from a header file
            that is part of the Library, the object code for the work may be a
            derivative work of the Library even though the source code is not.
            Whether this is true is especially significant if the work can be
            linked without the Library, or if the work is itself a library.  The
            threshold for this to be true is not precisely defined by law.
            
              If such an object file uses only numerical parameters, data
            structure layouts and accessors, and small macros and small inline
            functions (ten lines or less in length), then the use of the object
            file is unrestricted, regardless of whether it is legally a derivative
            work.  (Executables containing this object code plus portions of the
            Library will still fall under Section 6.)
            
              Otherwise, if the work is a derivative of the Library, you may
            distribute the object code for the work under the terms of Section 6.
            Any executables containing that work also fall under Section 6,
            whether or not they are linked directly with the Library itself.
            
              6. As an exception to the Sections above, you may also combine or
            link a "work that uses the Library" with the Library to produce a
            work containing portions of the Library, and distribute that work
            under terms of your choice, provided that the terms permit
            modification of the work for the customer's own use and reverse
            engineering for debugging such modifications.
            
              You must give prominent notice with each copy of the work that the
            Library is used in it and that the Library and its use are covered by
            this License.  You must supply a copy of this License.  If the work
            during execution displays copyright notices, you must include the
            copyright notice for the Library among them, as well as a reference
            directing the user to the copy of this License.  Also, you must do one
            of these things:
            
                a) Accompany the work with the complete corresponding
                machine-readable source code for the Library including whatever
                changes were used in the work (which must be distributed under
                Sections 1 and 2 above); and, if the work is an executable linked
                with the Library, with the complete machine-readable "work that
                uses the Library", as object code and/or source code, so that the
                user can modify the Library and then relink to produce a modified
                executable containing the modified Library.  (It is understood
                that the user who changes the contents of definitions files in the
                Library will not necessarily be able to recompile the application
                to use the modified definitions.)
            
                b) Use a suitable shared library mechanism for linking with the
                Library.  A suitable mechanism is one that (1) uses at run time a
                copy of the library already present on the user's computer system,
                rather than copying library functions into the executable, and (2)
                will operate properly with a modified version of the library, if
                the user installs one, as long as the modified version is
                interface-compatible with the version that the work was made with.
            
                c) Accompany the work with a written offer, valid for at
                least three years, to give the same user the materials
                specified in Subsection 6a, above, for a charge no more
                than the cost of performing this distribution.
            
                d) If distribution of the work is made by offering access to copy
                from a designated place, offer equivalent access to copy the above
                specified materials from the same place.
            
                e) Verify that the user has already received a copy of these
                materials or that you have already sent this user a copy.
            
              For an executable, the required form of the "work that uses the
            Library" must include any data and utility programs needed for
            reproducing the executable from it.  However, as a special exception,
            the materials to be distributed need not include anything that is
            normally distributed (in either source or binary form) with the major
            components (compiler, kernel, and so on) of the operating system on
            which the executable runs, unless that component itself accompanies
            the executable.
            
              It may happen that this requirement contradicts the license
            restrictions of other proprietary libraries that do not normally
            accompany the operating system.  Such a contradiction means you cannot
            use both them and the Library together in an executable that you
            distribute.
            
              7. You may place library facilities that are a work based on the
            Library side-by-side in a single library together with other library
            facilities not covered by this License, and distribute such a combined
            library, provided that the separate distribution of the work based on
            the Library and of the other library facilities is otherwise
            permitted, and provided that you do these two things:
            
                a) Accompany the combined library with a copy of the same work
                based on the Library, uncombined with any other library
                facilities.  This must be distributed under the terms of the
                Sections above.
            
                b) Give prominent notice with the combined library of the fact
                that part of it is a work based on the Library, and explaining
                where to find the accompanying uncombined form of the same work.
            
              8. You may not copy, modify, sublicense, link with, or distribute
            the Library except as expressly provided under this License.  Any
            attempt otherwise to copy, modify, sublicense, link with, or
            distribute the Library is void, and will automatically terminate your
            rights under this License.  However, parties who have received copies,
            or rights, from you under this License will not have their licenses
            terminated so long as such parties remain in full compliance.
            
              9. You are not required to accept this License, since you have not
            signed it.  However, nothing else grants you permission to modify or
            distribute the Library or its derivative works.  These actions are
            prohibited by law if you do not accept this License.  Therefore, by
            modifying or distributing the Library (or any work based on the
            Library), you indicate your acceptance of this License to do so, and
            all its terms and conditions for copying, distributing or modifying
            the Library or works based on it.
            
              10. Each time you redistribute the Library (or any work based on the
            Library), the recipient automatically receives a license from the
            original licensor to copy, distribute, link with or modify the Library
            subject to these terms and conditions.  You may not impose any further
            restrictions on the recipients' exercise of the rights granted herein.
            You are not responsible for enforcing compliance by third parties with
            this License.
            
              11. If, as a consequence of a court judgment or allegation of patent
            infringement or for any other reason (not limited to patent issues),
            conditions are imposed on you (whether by court order, agreement or
            otherwise) that contradict the conditions of this License, they do not
            excuse you from the conditions of this License.  If you cannot
            distribute so as to satisfy simultaneously your obligations under this
            License and any other pertinent obligations, then as a consequence you
            may not distribute the Library at all.  For example, if a patent
            license would not permit royalty-free redistribution of the Library by
            all those who receive copies directly or indirectly through you, then
            the only way you could satisfy both it and this License would be to
            refrain entirely from distribution of the Library.
            
            If any portion of this section is held invalid or unenforceable under any
            particular circumstance, the balance of the section is intended to apply,
            and the section as a whole is intended to apply in other circumstances.
            
            It is not the purpose of this section to induce you to infringe any
            patents or other property right claims or to contest validity of any
            such claims; this section has the sole purpose of protecting the
            integrity of the free software distribution system which is
            implemented by public license practices.  Many people have made
            generous contributions to the wide range of software distributed
            through that system in reliance on consistent application of that
            system; it is up to the author/donor to decide if he or she is willing
            to distribute software through any other system and a licensee cannot
            impose that choice.
            
            This section is intended to make thoroughly clear what is believed to
            be a consequence of the rest of this License.
            
              12. If the distribution and/or use of the Library is restricted in
            certain countries either by patents or by copyrighted interfaces, the
            original copyright holder who places the Library under this License may add
            an explicit geographical distribution limitation excluding those countries,
            so that distribution is permitted only in or among countries not thus
            excluded.  In such case, this License incorporates the limitation as if
            written in the body of this License.
            
              13. The Free Software Foundation may publish revised and/or new
            versions of the Lesser General Public License from time to time.
            Such new versions will be similar in spirit to the present version,
            but may differ in detail to address new problems or concerns.
            
            Each version is given a distinguishing version number.  If the Library
            specifies a version number of this License which applies to it and
            "any later version", you have the option of following the terms and
            conditions either of that version or of any later version published by
            the Free Software Foundation.  If the Library does not specify a
            license version number, you may choose any version ever published by
            the Free Software Foundation.
            
              14. If you wish to incorporate parts of the Library into other free
            programs whose distribution conditions are incompatible with these,
            write to the author to ask for permission.  For software which is
            copyrighted by the Free Software Foundation, write to the Free
            Software Foundation; we sometimes make exceptions for this.  Our
            decision will be guided by the two goals of preserving the free status
            of all derivatives of our free software and of promoting the sharing
            and reuse of software generally.
            
                                        NO WARRANTY
            
              15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
            WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
            EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
            OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
            KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
            PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
            LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
            THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
            
              16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
            WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
            AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
            FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
            CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
            LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
            RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
            FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
            SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
            DAMAGES.
            
                                 END OF TERMS AND CONDITIONS
            
            Accessibility Audit library, from Accessibility Developer Tools show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright [yyyy] [name of copyright owner]
            
               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.
            
            Android Crazy Linker show license homepage
            // Copyright 2014 The Chromium Authors. All rights reserved.
            //
            // Redistribution and use in source and binary forms, with or without
            // modification, are permitted provided that the following conditions are
            // met:
            //
            //    * Redistributions of source code must retain the above copyright
            // notice, this list of conditions and the following disclaimer.
            //    * Redistributions in binary form must reproduce the above
            // copyright notice, this list of conditions and the following disclaimer
            // in the documentation and/or other materials provided with the
            // distribution.
            //    * Neither the name of Google Inc. nor the names of its
            // contributors may be used to endorse or promote products derived from
            // this software without specific prior written permission.
            //
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            /*
             * Copyright (C) 2012 The Android Open Source Project
             * All rights reserved.
             *
             * Redistribution and use in source and binary forms, with or without
             * modification, are permitted provided that the following conditions
             * are met:
             *  * Redistributions of source code must retain the above copyright
             *    notice, this list of conditions and the following disclaimer.
             *  * Redistributions in binary form must reproduce the above copyright
             *    notice, this list of conditions and the following disclaimer in
             *    the documentation and/or other materials provided with the
             *    distribution.
             *
             * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
             * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
             * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
             * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
             * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
             * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
             * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
             * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
             * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
             * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
             * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
             * SUCH DAMAGE.
             */
            
            Android Open Source Project show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright [yyyy] [name of copyright owner]
            
               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.
            
            MediaController android sample. show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright [yyyy] [name of copyright owner]
            
               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.
            
            etc1 show license homepage
            /*
             * Copyright (C) 2009 The Android Open Source Project
             *
             * Licensed under the Apache License, Version 2.0 (the "License");
             * you may not use this file except in compliance with the License.
             * You may obtain a copy of the License at
             *
             *      http://www.apache.org/licenses/LICENSE-2.0
             *
             * Unless required by applicable law or agreed to in writing, software
             * distributed under the License is distributed on an "AS IS" BASIS,
             * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
             * See the License for the specific language governing permissions and
             * limitations under the License.
             */
            Android Open Source Project show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright [yyyy] [name of copyright owner]
            
               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.
            
            Almost Native Graphics Layer Engine show license homepage
            // Copyright (C) 2002-2013 The ANGLE Project Authors. 
            
            // All rights reserved.
            
            //
            
            // Redistribution and use in source and binary forms, with or without
            
            // modification, are permitted provided that the following conditions
            
            // are met:
            
            //
            
            //     Redistributions of source code must retain the above copyright
            
            //     notice, this list of conditions and the following disclaimer.
            
            //
            
            //     Redistributions in binary form must reproduce the above 
            
            //     copyright notice, this list of conditions and the following
            
            //     disclaimer in the documentation and/or other materials provided
            
            //     with the distribution.
            
            //
            
            //     Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc.
            
            //     Ltd., nor the names of their contributors may be used to endorse
            
            //     or promote products derived from this software without specific
            
            //     prior written permission.
            
            //
            
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
            
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
            
            // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
            
            // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
            
            // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
            
            // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
            
            // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
            
            // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
            
            // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
            
            // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
            
            // POSSIBILITY OF SUCH DAMAGE.
            
            
            Darwin show license homepage
            APPLE PUBLIC SOURCE LICENSE Version 2.0 -  August 6, 2003
            
            Please read this License carefully before downloading this software.  By
            downloading or using this software, you are agreeing to be bound by the terms of
            this License.  If you do not or cannot agree to the terms of this License,
            please do not download or use the software.
            
            Apple Note:  In January 2007, Apple changed its corporate name from "Apple
            Computer, Inc." to "Apple Inc."  This change has been reflected below and
            copyright years updated, but no other changes have been made to the APSL 2.0.
            
            1.	General; Definitions.  This License applies to any program or other work
            which Apple Inc. ("Apple") makes publicly available and which contains a notice
            placed by Apple identifying such program or work as "Original Code" and stating
            that it is subject to the terms of this Apple Public Source License version 2.0
            ("License").  As used in this License:
            
            1.1	 "Applicable Patent Rights" mean:  (a) in the case where Apple is the
            grantor of rights, (i) claims of patents that are now or hereafter acquired,
            owned by or assigned to Apple and (ii) that cover subject matter contained in
            the Original Code, but only to the extent necessary to use, reproduce and/or
            distribute the Original Code without infringement; and (b) in the case where You
            are the grantor of rights, (i) claims of patents that are now or hereafter
            acquired, owned by or assigned to You and (ii) that cover subject matter in Your
            Modifications, taken alone or in combination with Original Code.
            
            1.2	"Contributor" means any person or entity that creates or contributes to the
            creation of Modifications.
            
            1.3	 "Covered Code" means the Original Code, Modifications, the combination of
            Original Code and any Modifications, and/or any respective portions thereof.
            
            1.4	"Externally Deploy" means: (a) to sublicense, distribute or otherwise make
            Covered Code available, directly or indirectly, to anyone other than You; and/or
            (b) to use Covered Code, alone or as part of a Larger Work, in any way to
            provide a service, including but not limited to delivery of content, through
            electronic communication with a client other than You.
            
            1.5	"Larger Work" means a work which combines Covered Code or portions thereof
            with code not governed by the terms of this License.
            
            1.6	"Modifications" mean any addition to, deletion from, and/or change to, the
            substance and/or structure of the Original Code, any previous Modifications, the
            combination of Original Code and any previous Modifications, and/or any
            respective portions thereof.  When code is released as a series of files, a
            Modification is:  (a) any addition to or deletion from the contents of a file
            containing Covered Code; and/or (b) any new file or other representation of
            computer program statements that contains any part of Covered Code.
            
            1.7	"Original Code" means (a) the Source Code of a program or other work as
            originally made available by Apple under this License, including the Source Code
            of any updates or upgrades to such programs or works made available by Apple
            under this License, and that has been expressly identified by Apple as such in
            the header file(s) of such work; and (b) the object code compiled from such
            Source Code and originally made available by Apple under this License
            
            1.8	"Source Code" means the human readable form of a program or other work that
            is suitable for making modifications to it, including all modules it contains,
            plus any associated interface definition files, scripts used to control
            compilation and installation of an executable (object code).
            
            1.9	"You" or "Your" means an individual or a legal entity exercising rights
            under this License.  For legal entities, "You" or "Your" includes any entity
            which controls, is controlled by, or is under common control with, You, where
            "control" means (a) the power, direct or indirect, to cause the direction or
            management of such entity, whether by contract or otherwise, or (b) ownership of
            fifty percent (50%) or more of the outstanding shares or beneficial ownership of
            such entity.
            
            2.	Permitted Uses; Conditions & Restrictions.   Subject to the terms and
            conditions of this License, Apple hereby grants You, effective on the date You
            accept this License and download the Original Code, a world-wide, royalty-free,
            non-exclusive license, to the extent of Apple's Applicable Patent Rights and
            copyrights covering the Original Code, to do the following:
            
            2.1	Unmodified Code.  You may use, reproduce, display, perform, internally
            distribute within Your organization, and Externally Deploy verbatim, unmodified
            copies of the Original Code, for commercial or non-commercial purposes, provided
            that in each instance:
            
            (a)	You must retain and reproduce in all copies of Original Code the copyright
            and other proprietary notices and disclaimers of Apple as they appear in the
            Original Code, and keep intact all notices in the Original Code that refer to
            this License; and
            
            (b) 	You must include a copy of this License with every copy of Source Code of
            Covered Code and documentation You distribute or Externally Deploy, and You may
            not offer or impose any terms on such Source Code that alter or restrict this
            License or the recipients' rights hereunder, except as permitted under Section
            6.
            
            2.2	Modified Code.  You may modify Covered Code and use, reproduce, display,
            perform, internally distribute within Your organization, and Externally Deploy
            Your Modifications and Covered Code, for commercial or non-commercial purposes,
            provided that in each instance You also meet all of these conditions:
            
            (a)	You must satisfy all the conditions of Section 2.1 with respect to the
            Source Code of the Covered Code;
            
            (b)	You must duplicate, to the extent it does not already exist, the notice in
            Exhibit A in each file of the Source Code of all Your Modifications, and cause
            the modified files to carry prominent notices stating that You changed the files
            and the date of any change; and
            
            (c)	If You Externally Deploy Your Modifications, You must make Source Code of
            all Your Externally Deployed Modifications either available to those to whom You
            have Externally Deployed Your Modifications, or publicly available.  Source Code
            of Your Externally Deployed Modifications must be released under the terms set
            forth in this License, including the license grants set forth in Section 3
            below, for as long as you Externally Deploy the Covered Code or twelve (12)
            months from the date of initial External Deployment, whichever is longer. You
            should preferably distribute the Source Code of Your Externally Deployed
            Modifications electronically (e.g. download from a web site).
            
            2.3	Distribution of Executable Versions.  In addition, if You Externally Deploy
            Covered Code (Original Code and/or Modifications) in object code, executable
            form only, You must include a prominent notice, in the code itself as well as in
            related documentation, stating that Source Code of the Covered Code is available
            under the terms of this License with information on how and where to obtain such
            Source Code.
            
            2.4	Third Party Rights.  You expressly acknowledge and agree that although
            Apple and each Contributor grants the licenses to their respective portions of
            the Covered Code set forth herein, no assurances are provided by Apple or any
            Contributor that the Covered Code does not infringe the patent or other
            intellectual property rights of any other entity. Apple and each Contributor
            disclaim any liability to You for claims brought by any other entity based on
            infringement of intellectual property rights or otherwise. As a condition to
            exercising the rights and licenses granted hereunder, You hereby assume sole
            responsibility to secure any other intellectual property rights needed, if any.
            For example, if a third party patent license is required to allow You to
            distribute the Covered Code, it is Your responsibility to acquire that license
            before distributing the Covered Code.
            
            3.	Your Grants.  In consideration of, and as a condition to, the licenses
            granted to You under this License, You hereby grant to any person or entity
            receiving or distributing Covered Code under this License a non-exclusive,
            royalty-free, perpetual, irrevocable license, under Your Applicable Patent
            Rights and other intellectual property rights (other than patent) owned or
            controlled by You, to use, reproduce, display, perform, modify, sublicense,
            distribute and Externally Deploy Your Modifications of the same scope and extent
            as Apple's licenses under Sections 2.1 and 2.2 above.
            
            4.	Larger Works.  You may create a Larger Work by combining Covered Code with
            other code not governed by the terms of this License and distribute the Larger
            Work as a single product.  In each such instance, You must make sure the
            requirements of this License are fulfilled for the Covered Code or any portion
            thereof.
            
            5.	Limitations on Patent License.   Except as expressly stated in Section 2, no
            other patent rights, express or implied, are granted by Apple herein. 
            Modifications and/or Larger Works may require additional patent licenses from
            Apple which Apple may grant in its sole discretion.
            
            6.	Additional Terms.  You may choose to offer, and to charge a fee for,
            warranty, support, indemnity or liability obligations and/or other rights
            consistent with the scope of the license granted herein ("Additional Terms") to
            one or more recipients of Covered Code. However, You may do so only on Your own
            behalf and as Your sole responsibility, and not on behalf of Apple or any
            Contributor. You must obtain the recipient's agreement that any such Additional
            Terms are offered by You alone, and You hereby agree to indemnify, defend and
            hold Apple and every Contributor harmless for any liability incurred by or
            claims asserted against Apple or such Contributor by reason of any such
            Additional Terms.
            
            7.	Versions of the License.  Apple may publish revised and/or new versions of
            this License from time to time.  Each version will be given a distinguishing
            version number.  Once Original Code has been published under a particular
            version of this License, You may continue to use it under the terms of that
            version. You may also choose to use such Original Code under the terms of any
            subsequent version of this License published by Apple.  No one other than Apple
            has the right to modify the terms applicable to Covered Code created under this
            License.
            
            8.	NO WARRANTY OR SUPPORT.  The Covered Code may contain in whole or in part
            pre-release, untested, or not fully tested works.  The Covered Code may contain
            errors that could cause failures or loss of data, and may be incomplete or
            contain inaccuracies.  You expressly acknowledge and agree that use of the
            Covered Code, or any portion thereof, is at Your sole and entire risk.  THE
            COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
            ANY KIND AND APPLE AND APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE"
            FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM
            ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED
            TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF SATISFACTORY
            QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT,
            AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.  APPLE AND EACH CONTRIBUTOR DOES NOT
            WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE
            FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS, THAT THE
            OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT
            DEFECTS IN THE COVERED CODE WILL BE CORRECTED.  NO ORAL OR WRITTEN INFORMATION
            OR ADVICE GIVEN BY APPLE, AN APPLE AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR
            SHALL CREATE A WARRANTY.  You acknowledge that the Covered Code is not intended
            for use in the operation of nuclear facilities, aircraft navigation,
            communication systems, or air traffic control machines in which case the failure
            of the Covered Code could lead to death, personal injury, or severe physical or
            environmental damage.
            
            9.	LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT
            SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT
            OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR YOUR USE
            OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER UNDER A
            THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR
            OTHERWISE, EVEN IF APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY
            OF SUCH DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY
            REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF
            INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In
            no event shall Apple's total liability to You for all damages (other than as may
            be required by applicable law) under this License exceed the amount of fifty
            dollars ($50.00).
            
            10.	Trademarks.  This License does not grant any rights to use the trademarks
            or trade names  "Apple", "Mac", "Mac OS", "QuickTime", "QuickTime Streaming
            Server" or any other trademarks, service marks, logos or trade names belonging
            to Apple (collectively "Apple Marks") or to any trademark, service mark, logo or
            trade name belonging to any Contributor.  You agree not to use any Apple Marks
            in or as part of the name of products derived from the Original Code or to
            endorse or promote products derived from the Original Code other than as
            expressly permitted by and in strict compliance at all times with Apple's third
            party trademark usage guidelines which are posted at
            http://www.apple.com/legal/guidelinesfor3rdparties.html.
            
            11.	Ownership. Subject to the licenses granted under this License, each
            Contributor retains all rights, title and interest in and to any Modifications
            made by such Contributor.  Apple retains all rights, title and interest in and
            to the Original Code and any Modifications made by or on behalf of Apple ("Apple
            Modifications"), and such Apple Modifications will not be automatically subject
            to this License.  Apple may, at its sole discretion, choose to license such
            Apple Modifications under this License, or on different terms from those
            contained in this License or may choose not to license them at all.
            
            12.	Termination.
            
            12.1	Termination.  This License and the rights granted hereunder will
            terminate:
            
            (a)	automatically without notice from Apple if You fail to comply with any
            term(s) of this License and fail to cure such breach within 30 days of becoming
            aware of such breach; (b)	immediately in the event of the circumstances
            described in Section 13.5(b); or (c)	automatically without notice from Apple if
            You, at any time during the term of this License, commence an action for patent
            infringement against Apple; provided that Apple did not first commence an action
            for patent infringement against You in that instance.
            
            12.2	Effect of Termination.  Upon termination, You agree to immediately stop
            any further use, reproduction, modification, sublicensing and distribution of
            the Covered Code.  All sublicenses to the Covered Code which have been properly
            granted prior to termination shall survive any termination of this License. 
            Provisions which, by their nature, should remain in effect beyond the
            termination of this License shall survive, including but not limited to Sections
            3, 5, 8, 9, 10, 11, 12.2 and 13.  No party will be liable to any other for
            compensation, indemnity or damages of any sort solely as a result of terminating
            this License in accordance with its terms, and termination of this License will
            be without prejudice to any other right or remedy of any party.
            
            13. 	Miscellaneous.
            
            13.1	Government End Users.   The Covered Code is a "commercial item" as defined
            in FAR 2.101.  Government software and technical data rights in the Covered Code
            include only those rights customarily provided to the public as defined in this
            License. This customary commercial license in technical data and software is
            provided in accordance with FAR 12.211 (Technical Data) and 12.212 (Computer
            Software) and, for Department of Defense purchases, DFAR 252.227-7015 (Technical
            Data -- Commercial Items) and 227.7202-3 (Rights in Commercial Computer Software
            or Computer Software Documentation).  Accordingly, all U.S. Government End Users
            acquire Covered Code with only those rights set forth herein.
            
            13.2	Relationship of Parties.  This License will not be construed as creating
            an agency, partnership, joint venture or any other form of legal association
            between or among You, Apple or any Contributor, and You will not represent to
            the contrary, whether expressly, by implication, appearance or otherwise.
            
            13.3	Independent Development.   Nothing in this License will impair Apple's
            right to acquire, license, develop, have others develop for it, market and/or
            distribute technology or products that perform the same or similar functions as,
            or otherwise compete with, Modifications, Larger Works, technology or products
            that You may develop, produce, market or distribute.
            
            13.4	Waiver; Construction.  Failure by Apple or any Contributor to enforce any
            provision of this License will not be deemed a waiver of future enforcement of
            that or any other provision.  Any law or regulation which provides that the
            language of a contract shall be construed against the drafter will not apply to
            this License.
            
            13.5	Severability.  (a) If for any reason a court of competent jurisdiction
            finds any provision of this License, or portion thereof, to be unenforceable,
            that provision of the License will be enforced to the maximum extent permissible
            so as to effect the economic benefits and intent of the parties, and the
            remainder of this License will continue in full force and effect.  (b)
            Notwithstanding the foregoing, if applicable law prohibits or restricts You from
            fully and/or specifically complying with Sections 2 and/or 3 or prevents the
            enforceability of either of those Sections, this License will immediately
            terminate and You must immediately discontinue any use of the Covered Code and
            destroy all copies of it that are in your possession or control.
            
            13.6	Dispute Resolution.  Any litigation or other dispute resolution between
            You and Apple relating to this License shall take place in the Northern District
            of California, and You and Apple hereby consent to the personal jurisdiction of,
            and venue in, the state and federal courts within that District with respect to
            this License. The application of the United Nations Convention on Contracts for
            the International Sale of Goods is expressly excluded.
            
            13.7	Entire Agreement; Governing Law.  This License constitutes the entire
            agreement between the parties with respect to the subject matter hereof.  This
            License shall be governed by the laws of the United States and the State of
            California, except that body of California law concerning conflicts of law.
            
            Where You are located in the province of Quebec, Canada, the following clause
            applies:  The parties hereby confirm that they have requested that this License
            and all related documents be drafted in English.  Les parties ont exigé que le
            présent contrat et tous les documents connexes soient rédigés en anglais.
            
            EXHIBIT A.
            
            "Portions Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
            
            This file contains Original Code and/or Modifications of Original Code as
            defined in and that are subject to the Apple Public Source License Version 2.0
            (the 'License').  You may not use this file except in compliance with the
            License.  Please obtain a copy of the License at
            http://www.opensource.apple.com/apsl/ and read it before using this file.
            
            The Original Code and all software distributed under the License are distributed
            on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
            AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION,
            ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
            ENJOYMENT OR NON-INFRINGEMENT.  Please see the License for the specific language
            governing rights and limitations under the License." 
            
            Apple sample code show license homepage
            Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple
            Inc. ("Apple") in consideration of your agreement to the following
            terms, and your use, installation, modification or redistribution of
            this Apple software constitutes acceptance of these terms.  If you do
            not agree with these terms, please do not use, install, modify or
            redistribute this Apple software.
            
            In consideration of your agreement to abide by the following terms, and
            subject to these terms, Apple grants you a personal, non-exclusive
            license, under Apple's copyrights in this original Apple software (the
            "Apple Software"), to use, reproduce, modify and redistribute the Apple
            Software, with or without modifications, in source and/or binary forms;
            provided that if you redistribute the Apple Software in its entirety and
            without modifications, you must retain this notice and the following
            text and disclaimers in all such redistributions of the Apple Software.
            Neither the name, trademarks, service marks or logos of Apple Inc. may
            be used to endorse or promote products derived from the Apple Software
            without specific prior written permission from Apple.  Except as
            expressly stated in this notice, no other rights or licenses, express or
            implied, are granted by Apple herein, including but not limited to any
            patent rights that may be infringed by your derivative works or by other
            works in which the Apple Software may be incorporated.
            
            The Apple Software is provided by Apple on an "AS IS" basis.  APPLE
            MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
            THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
            FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
            OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
            
            IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
            OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
            SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
            INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
            MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
            AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
            STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
            POSSIBILITY OF SUCH DAMAGE.
            
            Copyright (C) 2009 Apple Inc. All Rights Reserved.
            Android show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright [yyyy] [name of copyright owner]
            
               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.
            
            Binary-, RedBlack- and AVL-Trees in Python and Cython show license homepage
            Copyright (c) 2012, Manfred Moitzi
            
            Permission is hereby granted, free of charge, to any person obtaining a 
            copy of this software and associated documentation files (the 
            "Software"), to deal in the Software without restriction, including 
            without limitation the rights to use, copy, modify, merge, publish, 
            distribute, sublicense, and/or sell copies of the Software, and to 
            permit persons to whom the Software is furnished to do so, subject to 
            the following conditions: 
            
            The above copyright notice and this permission notice shall be included 
            in all copies or substantial portions of the Software. 
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 
            OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
            IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 
            CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
            TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
            SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
            
            Deutsche Übersetzung:
            
            Copyright (c) 2012, Manfred Moitzi
            
            Hiermit wird unentgeltlich, jeder Person, die eine Kopie der Software 
            und der zugehörigen Dokumentationen (die "Software") erhält, die 
            Erlaubnis erteilt, uneingeschränkt zu benutzen, inklusive und ohne 
            Ausnahme, dem Recht, sie zu verwenden, kopieren, ändern, fusionieren, 
            verlegen, verbreiten, unterlizenzieren und/oder zu verkaufen, und 
            Personen, die diese Software erhalten, diese Rechte zu geben, unter den 
            folgenden Bedingungen: 
            
            Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen 
            Kopien oder Teilkopien der Software beizulegen. 
            
            DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE 
            BEREITGESTELLT, EINSCHLIESSLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN 
            VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER 
            RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND 
            DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE 
            ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, 
            EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER 
            SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN. 
            
            
            boringssl show license homepage
              LICENSE ISSUES
              ==============
            
              The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
              the OpenSSL License and the original SSLeay license apply to the toolkit.
              See below for the actual license texts. Actually both licenses are BSD-style
              Open Source licenses. In case of any license issues related to OpenSSL
              please contact openssl-core@openssl.org.
            
              OpenSSL License
              ---------------
            
            /* ====================================================================
             * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.
             *
             * Redistribution and use in source and binary forms, with or without
             * modification, are permitted provided that the following conditions
             * are met:
             *
             * 1. Redistributions of source code must retain the above copyright
             *    notice, this list of conditions and the following disclaimer. 
             *
             * 2. Redistributions in binary form must reproduce the above copyright
             *    notice, this list of conditions and the following disclaimer in
             *    the documentation and/or other materials provided with the
             *    distribution.
             *
             * 3. All advertising materials mentioning features or use of this
             *    software must display the following acknowledgment:
             *    "This product includes software developed by the OpenSSL Project
             *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
             *
             * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
             *    endorse or promote products derived from this software without
             *    prior written permission. For written permission, please contact
             *    openssl-core@openssl.org.
             *
             * 5. Products derived from this software may not be called "OpenSSL"
             *    nor may "OpenSSL" appear in their names without prior written
             *    permission of the OpenSSL Project.
             *
             * 6. Redistributions of any form whatsoever must retain the following
             *    acknowledgment:
             *    "This product includes software developed by the OpenSSL Project
             *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
             *
             * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
             * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
             * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
             * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
             * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
             * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
             * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
             * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
             * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
             * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
             * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
             * OF THE POSSIBILITY OF SUCH DAMAGE.
             * ====================================================================
             *
             * This product includes cryptographic software written by Eric Young
             * (eay@cryptsoft.com).  This product includes software written by Tim
             * Hudson (tjh@cryptsoft.com).
             *
             */
            
             Original SSLeay License
             -----------------------
            
            /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
             * All rights reserved.
             *
             * This package is an SSL implementation written
             * by Eric Young (eay@cryptsoft.com).
             * The implementation was written so as to conform with Netscapes SSL.
             * 
             * This library is free for commercial and non-commercial use as long as
             * the following conditions are aheared to.  The following conditions
             * apply to all code found in this distribution, be it the RC4, RSA,
             * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
             * included with this distribution is covered by the same copyright terms
             * except that the holder is Tim Hudson (tjh@cryptsoft.com).
             * 
             * Copyright remains Eric Young's, and as such any Copyright notices in
             * the code are not to be removed.
             * If this package is used in a product, Eric Young should be given attribution
             * as the author of the parts of the library used.
             * This can be in the form of a textual message at program startup or
             * in documentation (online or textual) provided with the package.
             * 
             * Redistribution and use in source and binary forms, with or without
             * modification, are permitted provided that the following conditions
             * are met:
             * 1. Redistributions of source code must retain the copyright
             *    notice, this list of conditions and the following disclaimer.
             * 2. Redistributions in binary form must reproduce the above copyright
             *    notice, this list of conditions and the following disclaimer in the
             *    documentation and/or other materials provided with the distribution.
             * 3. All advertising materials mentioning features or use of this software
             *    must display the following acknowledgement:
             *    "This product includes cryptographic software written by
             *     Eric Young (eay@cryptsoft.com)"
             *    The word 'cryptographic' can be left out if the rouines from the library
             *    being used are not cryptographic related :-).
             * 4. If you include any Windows specific code (or a derivative thereof) from 
             *    the apps directory (application code) you must include an acknowledgement:
             *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
             * 
             * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
             * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
             * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
             * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
             * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
             * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
             * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
             * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
             * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
             * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
             * SUCH DAMAGE.
             * 
             * The licence and distribution terms for any publically available version or
             * derivative of this code cannot be changed.  i.e. this code cannot simply be
             * copied and put under another distribution licence
             * [including the GNU Public Licence.]
             */
            
            
            Brotli show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright [yyyy] [name of copyright owner]
            
               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.
            
            bspatch show license homepage
            BSD Protection License
            February 2002
            
            Preamble
            --------
            
            The Berkeley Software Distribution ("BSD") license has proven very effective
            over the years at allowing for a wide spread of work throughout both
            commercial and non-commercial products.  For programmers whose primary
            intention is to improve the general quality of available software, it is
            arguable that there is no better license than the BSD license, as it
            permits improvements to be used wherever they will help, without idealogical
            or metallic constraint.
            
            This is of particular value to those who produce reference implementations
            of proposed standards: The case of TCP/IP clearly illustrates that freely
            and universally available implementations leads the rapid acceptance of
            standards -- often even being used instead of a de jure standard (eg, OSI
            network models).
            
            With the rapid proliferation of software licensed under the GNU General
            Public License, however, the continued success of this role is called into
            question.  Given that the inclusion of a few lines of "GPL-tainted" work
            into a larger body of work will result in restricted distribution -- and
            given that further work will likely build upon the "tainted" portions,
            making them difficult to remove at a future date -- there are inevitable
            circumstances where authors would, in order to protect their goal of
            providing for the widespread usage of their work, wish to guard against
            such "GPL-taint".
            
            In addition, one can imagine that companies which operate by producing and
            selling (possibly closed-source) code would wish to protect themselves
            against the rise of a GPL-licensed competitor.  While under existing
            licenses this would mean not releasing their code under any form of open
            license, if a license existed under which they could incorporate any
            improvements back into their own (commercial) products then they might be
            far more willing to provide for non-closed distribution.
            
            For the above reasons, we put forth this "BSD Protection License": A
            license designed to retain the freedom granted by the BSD license to use
            licensed works in a wide variety of settings, both non-commercial and
            commercial, while protecting the work from having future contributors
            restrict that freedom.
            
            The precise terms and conditions for copying, distribution, and
            modification follow.
            
            BSD PROTECTION LICENSE
            TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION, AND MODIFICATION
            ----------------------------------------------------------------
            
            0. Definitions.
               a) "Program", below, refers to any program or work distributed under
                  the terms of this license.
               b) A "work based on the Program", below, refers to either the Program
                  or any derivative work under copyright law.
               c) "Modification", below, refers to the act of creating derivative works.
               d) "You", below, refers to each licensee.
            
            1. Scope.
               This license governs the copying, distribution, and modification of the
               Program.  Other activities are outside the scope of this license; The
               act of running the Program is not restricted, and the output from the
               Program is covered only if its contents constitute a work based on the
               Program.
            
            2. Verbatim copies.
               You may copy and distribute verbatim copies of the Program as you
               receive it, in any medium, provided that you conspicuously and
               appropriately publish on each copy an appropriate copyright notice; keep
               intact all the notices that refer to this License and to the absence of
               any warranty; and give any other recipients of the Program a copy of this
               License along with the Program.
            
            3. Modification and redistribution under closed license.
               You may modify your copy or copies of the Program, and distribute
               the resulting derivative works, provided that you meet the
               following conditions:
               a) The copyright notice and disclaimer on the Program must be reproduced
                  and included in the source code, documentation, and/or other materials
                  provided in a manner in which such notices are normally distributed.
               b) The derivative work must be clearly identified as such, in order that
                  it may not be confused with the original work.
               c) The license under which the derivative work is distributed must
                  expressly prohibit the distribution of further derivative works.
            
            4. Modification and redistribution under open license.
               You may modify your copy or copies of the Program, and distribute
               the resulting derivative works, provided that you meet the
               following conditions:
               a) The copyright notice and disclaimer on the Program must be reproduced
                  and included in the source code, documentation, and/or other materials
                  provided in a manner in which such notices are normally distributed.
               b) You must clearly indicate the nature and date of any changes made
                  to the Program.  The full details need not necessarily be included in
                  the individual modified files, provided that each modified file is
                  clearly marked as such and instructions are included on where the
                  full details of the modifications may be found.
               c) You must cause any work that you distribute or publish, that in whole
                  or in part contains or is derived from the Program or any part
                  thereof, to be licensed as a whole at no charge to all third
                  parties under the terms of this License.
            
            5. Implied acceptance.
               You may not copy or distribute the Program or any derivative works except
               as expressly provided under this license.  Consequently, any such action
               will be taken as implied acceptance of the terms of this license.
            
            6. NO WARRANTY.
               THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
               INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
               AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
               THE COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
               REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE FOR ANY DIRECT,
               INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
               ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING, BUT
               NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
               USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
               ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
               TORT, EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
               POSSIBILITY OF SUCH DAMAGES.
            
            Google Cache Invalidation API show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright [yyyy] [name of copyright owner]
            
               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.
            
            Checkstyle is a development tool to help programmers write Java code that show license homepage
            		  GNU LESSER GENERAL PUBLIC LICENSE
            		       Version 2.1, February 1999
            
             Copyright (C) 1991, 1999 Free Software Foundation, Inc.
                 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
             Everyone is permitted to copy and distribute verbatim copies
             of this license document, but changing it is not allowed.
            
            [This is the first released version of the Lesser GPL.  It also counts
             as the successor of the GNU Library Public License, version 2, hence
             the version number 2.1.]
            
            			    Preamble
            
              The licenses for most software are designed to take away your
            freedom to share and change it.  By contrast, the GNU General Public
            Licenses are intended to guarantee your freedom to share and change
            free software--to make sure the software is free for all its users.
            
              This license, the Lesser General Public License, applies to some
            specially designated software packages--typically libraries--of the
            Free Software Foundation and other authors who decide to use it.  You
            can use it too, but we suggest you first think carefully about whether
            this license or the ordinary General Public License is the better
            strategy to use in any particular case, based on the explanations below.
            
              When we speak of free software, we are referring to freedom of use,
            not price.  Our General Public Licenses are designed to make sure that
            you have the freedom to distribute copies of free software (and charge
            for this service if you wish); that you receive source code or can get
            it if you want it; that you can change the software and use pieces of
            it in new free programs; and that you are informed that you can do
            these things.
            
              To protect your rights, we need to make restrictions that forbid
            distributors to deny you these rights or to ask you to surrender these
            rights.  These restrictions translate to certain responsibilities for
            you if you distribute copies of the library or if you modify it.
            
              For example, if you distribute copies of the library, whether gratis
            or for a fee, you must give the recipients all the rights that we gave
            you.  You must make sure that they, too, receive or can get the source
            code.  If you link other code with the library, you must provide
            complete object files to the recipients, so that they can relink them
            with the library after making changes to the library and recompiling
            it.  And you must show them these terms so they know their rights.
            
              We protect your rights with a two-step method: (1) we copyright the
            library, and (2) we offer you this license, which gives you legal
            permission to copy, distribute and/or modify the library.
            
              To protect each distributor, we want to make it very clear that
            there is no warranty for the free library.  Also, if the library is
            modified by someone else and passed on, the recipients should know
            that what they have is not the original version, so that the original
            author's reputation will not be affected by problems that might be
            introduced by others.
            
              Finally, software patents pose a constant threat to the existence of
            any free program.  We wish to make sure that a company cannot
            effectively restrict the users of a free program by obtaining a
            restrictive license from a patent holder.  Therefore, we insist that
            any patent license obtained for a version of the library must be
            consistent with the full freedom of use specified in this license.
            
              Most GNU software, including some libraries, is covered by the
            ordinary GNU General Public License.  This license, the GNU Lesser
            General Public License, applies to certain designated libraries, and
            is quite different from the ordinary General Public License.  We use
            this license for certain libraries in order to permit linking those
            libraries into non-free programs.
            
              When a program is linked with a library, whether statically or using
            a shared library, the combination of the two is legally speaking a
            combined work, a derivative of the original library.  The ordinary
            General Public License therefore permits such linking only if the
            entire combination fits its criteria of freedom.  The Lesser General
            Public License permits more lax criteria for linking other code with
            the library.
            
              We call this license the "Lesser" General Public License because it
            does Less to protect the user's freedom than the ordinary General
            Public License.  It also provides other free software developers Less
            of an advantage over competing non-free programs.  These disadvantages
            are the reason we use the ordinary General Public License for many
            libraries.  However, the Lesser license provides advantages in certain
            special circumstances.
            
              For example, on rare occasions, there may be a special need to
            encourage the widest possible use of a certain library, so that it becomes
            a de-facto standard.  To achieve this, non-free programs must be
            allowed to use the library.  A more frequent case is that a free
            library does the same job as widely used non-free libraries.  In this
            case, there is little to gain by limiting the free library to free
            software only, so we use the Lesser General Public License.
            
              In other cases, permission to use a particular library in non-free
            programs enables a greater number of people to use a large body of
            free software.  For example, permission to use the GNU C Library in
            non-free programs enables many more people to use the whole GNU
            operating system, as well as its variant, the GNU/Linux operating
            system.
            
              Although the Lesser General Public License is Less protective of the
            users' freedom, it does ensure that the user of a program that is
            linked with the Library has the freedom and the wherewithal to run
            that program using a modified version of the Library.
            
              The precise terms and conditions for copying, distribution and
            modification follow.  Pay close attention to the difference between a
            "work based on the library" and a "work that uses the library".  The
            former contains code derived from the library, whereas the latter must
            be combined with the library in order to run.
            
            		  GNU LESSER GENERAL PUBLIC LICENSE
               TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
            
              0. This License Agreement applies to any software library or other
            program which contains a notice placed by the copyright holder or
            other authorized party saying it may be distributed under the terms of
            this Lesser General Public License (also called "this License").
            Each licensee is addressed as "you".
            
              A "library" means a collection of software functions and/or data
            prepared so as to be conveniently linked with application programs
            (which use some of those functions and data) to form executables.
            
              The "Library", below, refers to any such software library or work
            which has been distributed under these terms.  A "work based on the
            Library" means either the Library or any derivative work under
            copyright law: that is to say, a work containing the Library or a
            portion of it, either verbatim or with modifications and/or translated
            straightforwardly into another language.  (Hereinafter, translation is
            included without limitation in the term "modification".)
            
              "Source code" for a work means the preferred form of the work for
            making modifications to it.  For a library, complete source code means
            all the source code for all modules it contains, plus any associated
            interface definition files, plus the scripts used to control compilation
            and installation of the library.
            
              Activities other than copying, distribution and modification are not
            covered by this License; they are outside its scope.  The act of
            running a program using the Library is not restricted, and output from
            such a program is covered only if its contents constitute a work based
            on the Library (independent of the use of the Library in a tool for
            writing it).  Whether that is true depends on what the Library does
            and what the program that uses the Library does.
              
              1. You may copy and distribute verbatim copies of the Library's
            complete source code as you receive it, in any medium, provided that
            you conspicuously and appropriately publish on each copy an
            appropriate copyright notice and disclaimer of warranty; keep intact
            all the notices that refer to this License and to the absence of any
            warranty; and distribute a copy of this License along with the
            Library.
            
              You may charge a fee for the physical act of transferring a copy,
            and you may at your option offer warranty protection in exchange for a
            fee.
            
              2. You may modify your copy or copies of the Library or any portion
            of it, thus forming a work based on the Library, and copy and
            distribute such modifications or work under the terms of Section 1
            above, provided that you also meet all of these conditions:
            
                a) The modified work must itself be a software library.
            
                b) You must cause the files modified to carry prominent notices
                stating that you changed the files and the date of any change.
            
                c) You must cause the whole of the work to be licensed at no
                charge to all third parties under the terms of this License.
            
                d) If a facility in the modified Library refers to a function or a
                table of data to be supplied by an application program that uses
                the facility, other than as an argument passed when the facility
                is invoked, then you must make a good faith effort to ensure that,
                in the event an application does not supply such function or
                table, the facility still operates, and performs whatever part of
                its purpose remains meaningful.
            
                (For example, a function in a library to compute square roots has
                a purpose that is entirely well-defined independent of the
                application.  Therefore, Subsection 2d requires that any
                application-supplied function or table used by this function must
                be optional: if the application does not supply it, the square
                root function must still compute square roots.)
            
            These requirements apply to the modified work as a whole.  If
            identifiable sections of that work are not derived from the Library,
            and can be reasonably considered independent and separate works in
            themselves, then this License, and its terms, do not apply to those
            sections when you distribute them as separate works.  But when you
            distribute the same sections as part of a whole which is a work based
            on the Library, the distribution of the whole must be on the terms of
            this License, whose permissions for other licensees extend to the
            entire whole, and thus to each and every part regardless of who wrote
            it.
            
            Thus, it is not the intent of this section to claim rights or contest
            your rights to work written entirely by you; rather, the intent is to
            exercise the right to control the distribution of derivative or
            collective works based on the Library.
            
            In addition, mere aggregation of another work not based on the Library
            with the Library (or with a work based on the Library) on a volume of
            a storage or distribution medium does not bring the other work under
            the scope of this License.
            
              3. You may opt to apply the terms of the ordinary GNU General Public
            License instead of this License to a given copy of the Library.  To do
            this, you must alter all the notices that refer to this License, so
            that they refer to the ordinary GNU General Public License, version 2,
            instead of to this License.  (If a newer version than version 2 of the
            ordinary GNU General Public License has appeared, then you can specify
            that version instead if you wish.)  Do not make any other change in
            these notices.
            
              Once this change is made in a given copy, it is irreversible for
            that copy, so the ordinary GNU General Public License applies to all
            subsequent copies and derivative works made from that copy.
            
              This option is useful when you wish to copy part of the code of
            the Library into a program that is not a library.
            
              4. You may copy and distribute the Library (or a portion or
            derivative of it, under Section 2) in object code or executable form
            under the terms of Sections 1 and 2 above provided that you accompany
            it with the complete corresponding machine-readable source code, which
            must be distributed under the terms of Sections 1 and 2 above on a
            medium customarily used for software interchange.
            
              If distribution of object code is made by offering access to copy
            from a designated place, then offering equivalent access to copy the
            source code from the same place satisfies the requirement to
            distribute the source code, even though third parties are not
            compelled to copy the source along with the object code.
            
              5. A program that contains no derivative of any portion of the
            Library, but is designed to work with the Library by being compiled or
            linked with it, is called a "work that uses the Library".  Such a
            work, in isolation, is not a derivative work of the Library, and
            therefore falls outside the scope of this License.
            
              However, linking a "work that uses the Library" with the Library
            creates an executable that is a derivative of the Library (because it
            contains portions of the Library), rather than a "work that uses the
            library".  The executable is therefore covered by this License.
            Section 6 states terms for distribution of such executables.
            
              When a "work that uses the Library" uses material from a header file
            that is part of the Library, the object code for the work may be a
            derivative work of the Library even though the source code is not.
            Whether this is true is especially significant if the work can be
            linked without the Library, or if the work is itself a library.  The
            threshold for this to be true is not precisely defined by law.
            
              If such an object file uses only numerical parameters, data
            structure layouts and accessors, and small macros and small inline
            functions (ten lines or less in length), then the use of the object
            file is unrestricted, regardless of whether it is legally a derivative
            work.  (Executables containing this object code plus portions of the
            Library will still fall under Section 6.)
            
              Otherwise, if the work is a derivative of the Library, you may
            distribute the object code for the work under the terms of Section 6.
            Any executables containing that work also fall under Section 6,
            whether or not they are linked directly with the Library itself.
            
              6. As an exception to the Sections above, you may also combine or
            link a "work that uses the Library" with the Library to produce a
            work containing portions of the Library, and distribute that work
            under terms of your choice, provided that the terms permit
            modification of the work for the customer's own use and reverse
            engineering for debugging such modifications.
            
              You must give prominent notice with each copy of the work that the
            Library is used in it and that the Library and its use are covered by
            this License.  You must supply a copy of this License.  If the work
            during execution displays copyright notices, you must include the
            copyright notice for the Library among them, as well as a reference
            directing the user to the copy of this License.  Also, you must do one
            of these things:
            
                a) Accompany the work with the complete corresponding
                machine-readable source code for the Library including whatever
                changes were used in the work (which must be distributed under
                Sections 1 and 2 above); and, if the work is an executable linked
                with the Library, with the complete machine-readable "work that
                uses the Library", as object code and/or source code, so that the
                user can modify the Library and then relink to produce a modified
                executable containing the modified Library.  (It is understood
                that the user who changes the contents of definitions files in the
                Library will not necessarily be able to recompile the application
                to use the modified definitions.)
            
                b) Use a suitable shared library mechanism for linking with the
                Library.  A suitable mechanism is one that (1) uses at run time a
                copy of the library already present on the user's computer system,
                rather than copying library functions into the executable, and (2)
                will operate properly with a modified version of the library, if
                the user installs one, as long as the modified version is
                interface-compatible with the version that the work was made with.
            
                c) Accompany the work with a written offer, valid for at
                least three years, to give the same user the materials
                specified in Subsection 6a, above, for a charge no more
                than the cost of performing this distribution.
            
                d) If distribution of the work is made by offering access to copy
                from a designated place, offer equivalent access to copy the above
                specified materials from the same place.
            
                e) Verify that the user has already received a copy of these
                materials or that you have already sent this user a copy.
            
              For an executable, the required form of the "work that uses the
            Library" must include any data and utility programs needed for
            reproducing the executable from it.  However, as a special exception,
            the materials to be distributed need not include anything that is
            normally distributed (in either source or binary form) with the major
            components (compiler, kernel, and so on) of the operating system on
            which the executable runs, unless that component itself accompanies
            the executable.
            
              It may happen that this requirement contradicts the license
            restrictions of other proprietary libraries that do not normally
            accompany the operating system.  Such a contradiction means you cannot
            use both them and the Library together in an executable that you
            distribute.
            
              7. You may place library facilities that are a work based on the
            Library side-by-side in a single library together with other library
            facilities not covered by this License, and distribute such a combined
            library, provided that the separate distribution of the work based on
            the Library and of the other library facilities is otherwise
            permitted, and provided that you do these two things:
            
                a) Accompany the combined library with a copy of the same work
                based on the Library, uncombined with any other library
                facilities.  This must be distributed under the terms of the
                Sections above.
            
                b) Give prominent notice with the combined library of the fact
                that part of it is a work based on the Library, and explaining
                where to find the accompanying uncombined form of the same work.
            
              8. You may not copy, modify, sublicense, link with, or distribute
            the Library except as expressly provided under this License.  Any
            attempt otherwise to copy, modify, sublicense, link with, or
            distribute the Library is void, and will automatically terminate your
            rights under this License.  However, parties who have received copies,
            or rights, from you under this License will not have their licenses
            terminated so long as such parties remain in full compliance.
            
              9. You are not required to accept this License, since you have not
            signed it.  However, nothing else grants you permission to modify or
            distribute the Library or its derivative works.  These actions are
            prohibited by law if you do not accept this License.  Therefore, by
            modifying or distributing the Library (or any work based on the
            Library), you indicate your acceptance of this License to do so, and
            all its terms and conditions for copying, distributing or modifying
            the Library or works based on it.
            
              10. Each time you redistribute the Library (or any work based on the
            Library), the recipient automatically receives a license from the
            original licensor to copy, distribute, link with or modify the Library
            subject to these terms and conditions.  You may not impose any further
            restrictions on the recipients' exercise of the rights granted herein.
            You are not responsible for enforcing compliance by third parties with
            this License.
            
              11. If, as a consequence of a court judgment or allegation of patent
            infringement or for any other reason (not limited to patent issues),
            conditions are imposed on you (whether by court order, agreement or
            otherwise) that contradict the conditions of this License, they do not
            excuse you from the conditions of this License.  If you cannot
            distribute so as to satisfy simultaneously your obligations under this
            License and any other pertinent obligations, then as a consequence you
            may not distribute the Library at all.  For example, if a patent
            license would not permit royalty-free redistribution of the Library by
            all those who receive copies directly or indirectly through you, then
            the only way you could satisfy both it and this License would be to
            refrain entirely from distribution of the Library.
            
            If any portion of this section is held invalid or unenforceable under any
            particular circumstance, the balance of the section is intended to apply,
            and the section as a whole is intended to apply in other circumstances.
            
            It is not the purpose of this section to induce you to infringe any
            patents or other property right claims or to contest validity of any
            such claims; this section has the sole purpose of protecting the
            integrity of the free software distribution system which is
            implemented by public license practices.  Many people have made
            generous contributions to the wide range of software distributed
            through that system in reliance on consistent application of that
            system; it is up to the author/donor to decide if he or she is willing
            to distribute software through any other system and a licensee cannot
            impose that choice.
            
            This section is intended to make thoroughly clear what is believed to
            be a consequence of the rest of this License.
            
              12. If the distribution and/or use of the Library is restricted in
            certain countries either by patents or by copyrighted interfaces, the
            original copyright holder who places the Library under this License may add
            an explicit geographical distribution limitation excluding those countries,
            so that distribution is permitted only in or among countries not thus
            excluded.  In such case, this License incorporates the limitation as if
            written in the body of this License.
            
              13. The Free Software Foundation may publish revised and/or new
            versions of the Lesser General Public License from time to time.
            Such new versions will be similar in spirit to the present version,
            but may differ in detail to address new problems or concerns.
            
            Each version is given a distinguishing version number.  If the Library
            specifies a version number of this License which applies to it and
            "any later version", you have the option of following the terms and
            conditions either of that version or of any later version published by
            the Free Software Foundation.  If the Library does not specify a
            license version number, you may choose any version ever published by
            the Free Software Foundation.
            
              14. If you wish to incorporate parts of the Library into other free
            programs whose distribution conditions are incompatible with these,
            write to the author to ask for permission.  For software which is
            copyrighted by the Free Software Foundation, write to the Free
            Software Foundation; we sometimes make exceptions for this.  Our
            decision will be guided by the two goals of preserving the free status
            of all derivatives of our free software and of promoting the sharing
            and reuse of software generally.
            
            			    NO WARRANTY
            
              15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
            WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
            EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
            OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
            KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
            PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
            LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
            THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
            
              16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
            WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
            AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
            FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
            CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
            LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
            RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
            FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
            SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
            DAMAGES.
            
            		     END OF TERMS AND CONDITIONS
            
                       How to Apply These Terms to Your New Libraries
            
              If you develop a new library, and you want it to be of the greatest
            possible use to the public, we recommend making it free software that
            everyone can redistribute and change.  You can do so by permitting
            redistribution under these terms (or, alternatively, under the terms of the
            ordinary General Public License).
            
              To apply these terms, attach the following notices to the library.  It is
            safest to attach them to the start of each source file to most effectively
            convey the exclusion of warranty; and each file should have at least the
            "copyright" line and a pointer to where the full notice is found.
            
                <one line to give the library's name and a brief idea of what it does.>
                Copyright (C) <year>  <name of author>
            
                This library is free software; you can redistribute it and/or
                modify it under the terms of the GNU Lesser General Public
                License as published by the Free Software Foundation; either
                version 2.1 of the License, or (at your option) any later version.
            
                This library is distributed in the hope that it will be useful,
                but WITHOUT ANY WARRANTY; without even the implied warranty of
                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
                Lesser General Public License for more details.
            
                You should have received a copy of the GNU Lesser General Public
                License along with this library; if not, write to the Free Software
                Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
            
            Also add information on how to contact you by electronic and paper mail.
            
            You should also get your employer (if you work as a programmer) or your
            school, if any, to sign a "copyright disclaimer" for the library, if
            necessary.  Here is a sample; alter the names:
            
              Yoyodyne, Inc., hereby disclaims all copyright interest in the
              library `Frob' (a library for tweaking knobs) written by James Random Hacker.
            
              <signature of Ty Coon>, 1 April 1990
              Ty Coon, President of Vice
            
            That's all there is to it!
            
            
            
            Compact Language Detection show license homepage
            // Copyright (c) 2010 The Chromium Authors. All rights reserved.
            //
            // Redistribution and use in source and binary forms, with or without
            // modification, are permitted provided that the following conditions are
            // met:
            //
            //    * Redistributions of source code must retain the above copyright
            // notice, this list of conditions and the following disclaimer.
            //    * Redistributions in binary form must reproduce the above
            // copyright notice, this list of conditions and the following disclaimer
            // in the documentation and/or other materials provided with the
            // distribution.
            //    * Neither the name of Google Inc. nor the names of its
            // contributors may be used to endorse or promote products derived from
            // this software without specific prior written permission.
            //
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            Compact Language Detection 2 show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright [yyyy] [name of copyright owner]
            
               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.
            
            Closure compiler show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright [yyyy] [name of copyright owner]
            
               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.
            
            codesighs show license homepage
                                      MOZILLA PUBLIC LICENSE
                                            Version 1.1
            
                                          ---------------
            
            1. Definitions.
            
                 1.0.1. "Commercial Use" means distribution or otherwise making the
                 Covered Code available to a third party.
            
                 1.1. "Contributor" means each entity that creates or contributes to
                 the creation of Modifications.
            
                 1.2. "Contributor Version" means the combination of the Original
                 Code, prior Modifications used by a Contributor, and the Modifications
                 made by that particular Contributor.
            
                 1.3. "Covered Code" means the Original Code or Modifications or the
                 combination of the Original Code and Modifications, in each case
                 including portions thereof.
            
                 1.4. "Electronic Distribution Mechanism" means a mechanism generally
                 accepted in the software development community for the electronic
                 transfer of data.
            
                 1.5. "Executable" means Covered Code in any form other than Source
                 Code.
            
                 1.6. "Initial Developer" means the individual or entity identified
                 as the Initial Developer in the Source Code notice required by Exhibit
                 A.
            
                 1.7. "Larger Work" means a work which combines Covered Code or
                 portions thereof with code not governed by the terms of this License.
            
                 1.8. "License" means this document.
            
                 1.8.1. "Licensable" means having the right to grant, to the maximum
                 extent possible, whether at the time of the initial grant or
                 subsequently acquired, any and all of the rights conveyed herein.
            
                 1.9. "Modifications" means any addition to or deletion from the
                 substance or structure of either the Original Code or any previous
                 Modifications. When Covered Code is released as a series of files, a
                 Modification is:
                      A. Any addition to or deletion from the contents of a file
                      containing Original Code or previous Modifications.
            
                      B. Any new file that contains any part of the Original Code or
                      previous Modifications.
            
                 1.10. "Original Code" means Source Code of computer software code
                 which is described in the Source Code notice required by Exhibit A as
                 Original Code, and which, at the time of its release under this
                 License is not already Covered Code governed by this License.
            
                 1.10.1. "Patent Claims" means any patent claim(s), now owned or
                 hereafter acquired, including without limitation, method, process,
                 and apparatus claims, in any patent Licensable by grantor.
            
                 1.11. "Source Code" means the preferred form of the Covered Code for
                 making modifications to it, including all modules it contains, plus
                 any associated interface definition files, scripts used to control
                 compilation and installation of an Executable, or source code
                 differential comparisons against either the Original Code or another
                 well known, available Covered Code of the Contributor's choice. The
                 Source Code can be in a compressed or archival form, provided the
                 appropriate decompression or de-archiving software is widely available
                 for no charge.
            
                 1.12. "You" (or "Your") means an individual or a legal entity
                 exercising rights under, and complying with all of the terms of, this
                 License or a future version of this License issued under Section 6.1.
                 For legal entities, "You" includes any entity which controls, is
                 controlled by, or is under common control with You. For purposes of
                 this definition, "control" means (a) the power, direct or indirect,
                 to cause the direction or management of such entity, whether by
                 contract or otherwise, or (b) ownership of more than fifty percent
                 (50%) of the outstanding shares or beneficial ownership of such
                 entity.
            
            2. Source Code License.
            
                 2.1. The Initial Developer Grant.
                 The Initial Developer hereby grants You a world-wide, royalty-free,
                 non-exclusive license, subject to third party intellectual property
                 claims:
                      (a) under intellectual property rights (other than patent or
                      trademark) Licensable by Initial Developer to use, reproduce,
                      modify, display, perform, sublicense and distribute the Original
                      Code (or portions thereof) with or without Modifications, and/or
                      as part of a Larger Work; and
            
                      (b) under Patents Claims infringed by the making, using or
                      selling of Original Code, to make, have made, use, practice,
                      sell, and offer for sale, and/or otherwise dispose of the
                      Original Code (or portions thereof).
            
                      (c) the licenses granted in this Section 2.1(a) and (b) are
                      effective on the date Initial Developer first distributes
                      Original Code under the terms of this License.
            
                      (d) Notwithstanding Section 2.1(b) above, no patent license is
                      granted: 1) for code that You delete from the Original Code; 2)
                      separate from the Original Code; or 3) for infringements caused
                      by: i) the modification of the Original Code or ii) the
                      combination of the Original Code with other software or devices.
            
                 2.2. Contributor Grant.
                 Subject to third party intellectual property claims, each Contributor
                 hereby grants You a world-wide, royalty-free, non-exclusive license
            
                      (a) under intellectual property rights (other than patent or
                      trademark) Licensable by Contributor, to use, reproduce, modify,
                      display, perform, sublicense and distribute the Modifications
                      created by such Contributor (or portions thereof) either on an
                      unmodified basis, with other Modifications, as Covered Code
                      and/or as part of a Larger Work; and
            
                      (b) under Patent Claims infringed by the making, using, or
                      selling of Modifications made by that Contributor either alone
                      and/or in combination with its Contributor Version (or portions
                      of such combination), to make, use, sell, offer for sale, have
                      made, and/or otherwise dispose of: 1) Modifications made by that
                      Contributor (or portions thereof); and 2) the combination of
                      Modifications made by that Contributor with its Contributor
                      Version (or portions of such combination).
            
                      (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
                      effective on the date Contributor first makes Commercial Use of
                      the Covered Code.
            
                      (d) Notwithstanding Section 2.2(b) above, no patent license is
                      granted: 1) for any code that Contributor has deleted from the
                      Contributor Version; 2) separate from the Contributor Version;
                      3) for infringements caused by: i) third party modifications of
                      Contributor Version or ii) the combination of Modifications made
                      by that Contributor with other software (except as part of the
                      Contributor Version) or other devices; or 4) under Patent Claims
                      infringed by Covered Code in the absence of Modifications made by
                      that Contributor.
            
            3. Distribution Obligations.
            
                 3.1. Application of License.
                 The Modifications which You create or to which You contribute are
                 governed by the terms of this License, including without limitation
                 Section 2.2. The Source Code version of Covered Code may be
                 distributed only under the terms of this License or a future version
                 of this License released under Section 6.1, and You must include a
                 copy of this License with every copy of the Source Code You
                 distribute. You may not offer or impose any terms on any Source Code
                 version that alters or restricts the applicable version of this
                 License or the recipients' rights hereunder. However, You may include
                 an additional document offering the additional rights described in
                 Section 3.5.
            
                 3.2. Availability of Source Code.
                 Any Modification which You create or to which You contribute must be
                 made available in Source Code form under the terms of this License
                 either on the same media as an Executable version or via an accepted
                 Electronic Distribution Mechanism to anyone to whom you made an
                 Executable version available; and if made available via Electronic
                 Distribution Mechanism, must remain available for at least twelve (12)
                 months after the date it initially became available, or at least six
                 (6) months after a subsequent version of that particular Modification
                 has been made available to such recipients. You are responsible for
                 ensuring that the Source Code version remains available even if the
                 Electronic Distribution Mechanism is maintained by a third party.
            
                 3.3. Description of Modifications.
                 You must cause all Covered Code to which You contribute to contain a
                 file documenting the changes You made to create that Covered Code and
                 the date of any change. You must include a prominent statement that
                 the Modification is derived, directly or indirectly, from Original
                 Code provided by the Initial Developer and including the name of the
                 Initial Developer in (a) the Source Code, and (b) in any notice in an
                 Executable version or related documentation in which You describe the
                 origin or ownership of the Covered Code.
            
                 3.4. Intellectual Property Matters
                      (a) Third Party Claims.
                      If Contributor has knowledge that a license under a third party's
                      intellectual property rights is required to exercise the rights
                      granted by such Contributor under Sections 2.1 or 2.2,
                      Contributor must include a text file with the Source Code
                      distribution titled "LEGAL" which describes the claim and the
                      party making the claim in sufficient detail that a recipient will
                      know whom to contact. If Contributor obtains such knowledge after
                      the Modification is made available as described in Section 3.2,
                      Contributor shall promptly modify the LEGAL file in all copies
                      Contributor makes available thereafter and shall take other steps
                      (such as notifying appropriate mailing lists or newsgroups)
                      reasonably calculated to inform those who received the Covered
                      Code that new knowledge has been obtained.
            
                      (b) Contributor APIs.
                      If Contributor's Modifications include an application programming
                      interface and Contributor has knowledge of patent licenses which
                      are reasonably necessary to implement that API, Contributor must
                      also include this information in the LEGAL file.
            
                      (c) Representations.
                      Contributor represents that, except as disclosed pursuant to
                      Section 3.4(a) above, Contributor believes that Contributor's
                      Modifications are Contributor's original creation(s) and/or
                      Contributor has sufficient rights to grant the rights conveyed by
                      this License.
            
                 3.5. Required Notices.
                 You must duplicate the notice in Exhibit A in each file of the Source
                 Code. If it is not possible to put such notice in a particular Source
                 Code file due to its structure, then You must include such notice in a
                 location (such as a relevant directory) where a user would be likely
                 to look for such a notice. If You created one or more Modification(s)
                 You may add your name as a Contributor to the notice described in
                 Exhibit A. You must also duplicate this License in any documentation
                 for the Source Code where You describe recipients' rights or ownership
                 rights relating to Covered Code. You may choose to offer, and to
                 charge a fee for, warranty, support, indemnity or liability
                 obligations to one or more recipients of Covered Code. However, You
                 may do so only on Your own behalf, and not on behalf of the Initial
                 Developer or any Contributor. You must make it absolutely clear than
                 any such warranty, support, indemnity or liability obligation is
                 offered by You alone, and You hereby agree to indemnify the Initial
                 Developer and every Contributor for any liability incurred by the
                 Initial Developer or such Contributor as a result of warranty,
                 support, indemnity or liability terms You offer.
            
                 3.6. Distribution of Executable Versions.
                 You may distribute Covered Code in Executable form only if the
                 requirements of Section 3.1-3.5 have been met for that Covered Code,
                 and if You include a notice stating that the Source Code version of
                 the Covered Code is available under the terms of this License,
                 including a description of how and where You have fulfilled the
                 obligations of Section 3.2. The notice must be conspicuously included
                 in any notice in an Executable version, related documentation or
                 collateral in which You describe recipients' rights relating to the
                 Covered Code. You may distribute the Executable version of Covered
                 Code or ownership rights under a license of Your choice, which may
                 contain terms different from this License, provided that You are in
                 compliance with the terms of this License and that the license for the
                 Executable version does not attempt to limit or alter the recipient's
                 rights in the Source Code version from the rights set forth in this
                 License. If You distribute the Executable version under a different
                 license You must make it absolutely clear that any terms which differ
                 from this License are offered by You alone, not by the Initial
                 Developer or any Contributor. You hereby agree to indemnify the
                 Initial Developer and every Contributor for any liability incurred by
                 the Initial Developer or such Contributor as a result of any such
                 terms You offer.
            
                 3.7. Larger Works.
                 You may create a Larger Work by combining Covered Code with other code
                 not governed by the terms of this License and distribute the Larger
                 Work as a single product. In such a case, You must make sure the
                 requirements of this License are fulfilled for the Covered Code.
            
            4. Inability to Comply Due to Statute or Regulation.
            
                 If it is impossible for You to comply with any of the terms of this
                 License with respect to some or all of the Covered Code due to
                 statute, judicial order, or regulation then You must: (a) comply with
                 the terms of this License to the maximum extent possible; and (b)
                 describe the limitations and the code they affect. Such description
                 must be included in the LEGAL file described in Section 3.4 and must
                 be included with all distributions of the Source Code. Except to the
                 extent prohibited by statute or regulation, such description must be
                 sufficiently detailed for a recipient of ordinary skill to be able to
                 understand it.
            
            5. Application of this License.
            
                 This License applies to code to which the Initial Developer has
                 attached the notice in Exhibit A and to related Covered Code.
            
            6. Versions of the License.
            
                 6.1. New Versions.
                 Netscape Communications Corporation ("Netscape") may publish revised
                 and/or new versions of the License from time to time. Each version
                 will be given a distinguishing version number.
            
                 6.2. Effect of New Versions.
                 Once Covered Code has been published under a particular version of the
                 License, You may always continue to use it under the terms of that
                 version. You may also choose to use such Covered Code under the terms
                 of any subsequent version of the License published by Netscape. No one
                 other than Netscape has the right to modify the terms applicable to
                 Covered Code created under this License.
            
                 6.3. Derivative Works.
                 If You create or use a modified version of this License (which you may
                 only do in order to apply it to code which is not already Covered Code
                 governed by this License), You must (a) rename Your license so that
                 the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
                 "MPL", "NPL" or any confusingly similar phrase do not appear in your
                 license (except to note that your license differs from this License)
                 and (b) otherwise make it clear that Your version of the license
                 contains terms which differ from the Mozilla Public License and
                 Netscape Public License. (Filling in the name of the Initial
                 Developer, Original Code or Contributor in the notice described in
                 Exhibit A shall not of themselves be deemed to be modifications of
                 this License.)
            
            7. DISCLAIMER OF WARRANTY.
            
                 COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
                 WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
                 WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
                 DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
                 THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
                 IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
                 YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
                 COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
                 OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
                 ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
            
            8. TERMINATION.
            
                 8.1. This License and the rights granted hereunder will terminate
                 automatically if You fail to comply with terms herein and fail to cure
                 such breach within 30 days of becoming aware of the breach. All
                 sublicenses to the Covered Code which are properly granted shall
                 survive any termination of this License. Provisions which, by their
                 nature, must remain in effect beyond the termination of this License
                 shall survive.
            
                 8.2. If You initiate litigation by asserting a patent infringement
                 claim (excluding declatory judgment actions) against Initial Developer
                 or a Contributor (the Initial Developer or Contributor against whom
                 You file such action is referred to as "Participant") alleging that:
            
                 (a) such Participant's Contributor Version directly or indirectly
                 infringes any patent, then any and all rights granted by such
                 Participant to You under Sections 2.1 and/or 2.2 of this License
                 shall, upon 60 days notice from Participant terminate prospectively,
                 unless if within 60 days after receipt of notice You either: (i)
                 agree in writing to pay Participant a mutually agreeable reasonable
                 royalty for Your past and future use of Modifications made by such
                 Participant, or (ii) withdraw Your litigation claim with respect to
                 the Contributor Version against such Participant. If within 60 days
                 of notice, a reasonable royalty and payment arrangement are not
                 mutually agreed upon in writing by the parties or the litigation claim
                 is not withdrawn, the rights granted by Participant to You under
                 Sections 2.1 and/or 2.2 automatically terminate at the expiration of
                 the 60 day notice period specified above.
            
                 (b) any software, hardware, or device, other than such Participant's
                 Contributor Version, directly or indirectly infringes any patent, then
                 any rights granted to You by such Participant under Sections 2.1(b)
                 and 2.2(b) are revoked effective as of the date You first made, used,
                 sold, distributed, or had made, Modifications made by that
                 Participant.
            
                 8.3. If You assert a patent infringement claim against Participant
                 alleging that such Participant's Contributor Version directly or
                 indirectly infringes any patent where such claim is resolved (such as
                 by license or settlement) prior to the initiation of patent
                 infringement litigation, then the reasonable value of the licenses
                 granted by such Participant under Sections 2.1 or 2.2 shall be taken
                 into account in determining the amount or value of any payment or
                 license.
            
                 8.4. In the event of termination under Sections 8.1 or 8.2 above,
                 all end user license agreements (excluding distributors and resellers)
                 which have been validly granted by You or any distributor hereunder
                 prior to termination shall survive termination.
            
            9. LIMITATION OF LIABILITY.
            
                 UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
                 (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
                 DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
                 OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
                 ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
                 CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
                 WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
                 COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
                 INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
                 LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
                 RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
                 PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
                 EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
                 THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
            
            10. U.S. GOVERNMENT END USERS.
            
                 The Covered Code is a "commercial item," as that term is defined in
                 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
                 software" and "commercial computer software documentation," as such
                 terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
                 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
                 all U.S. Government End Users acquire Covered Code with only those
                 rights set forth herein.
            
            11. MISCELLANEOUS.
            
                 This License represents the complete agreement concerning subject
                 matter hereof. If any provision of this License is held to be
                 unenforceable, such provision shall be reformed only to the extent
                 necessary to make it enforceable. This License shall be governed by
                 California law provisions (except to the extent applicable law, if
                 any, provides otherwise), excluding its conflict-of-law provisions.
                 With respect to disputes in which at least one party is a citizen of,
                 or an entity chartered or registered to do business in the United
                 States of America, any litigation relating to this License shall be
                 subject to the jurisdiction of the Federal Courts of the Northern
                 District of California, with venue lying in Santa Clara County,
                 California, with the losing party responsible for costs, including
                 without limitation, court costs and reasonable attorneys' fees and
                 expenses. The application of the United Nations Convention on
                 Contracts for the International Sale of Goods is expressly excluded.
                 Any law or regulation which provides that the language of a contract
                 shall be construed against the drafter shall not apply to this
                 License.
            
            12. RESPONSIBILITY FOR CLAIMS.
            
                 As between Initial Developer and the Contributors, each party is
                 responsible for claims and damages arising, directly or indirectly,
                 out of its utilization of rights under this License and You agree to
                 work with Initial Developer and Contributors to distribute such
                 responsibility on an equitable basis. Nothing herein is intended or
                 shall be deemed to constitute any admission of liability.
            
            13. MULTIPLE-LICENSED CODE.
            
                 Initial Developer may designate portions of the Covered Code as
                 "Multiple-Licensed". "Multiple-Licensed" means that the Initial
                 Developer permits you to utilize portions of the Covered Code under
                 Your choice of the NPL or the alternative licenses, if any, specified
                 by the Initial Developer in the file described in Exhibit A.
            
            EXHIBIT A -Mozilla Public License.
            
                 ``The contents of this file are subject to the Mozilla Public License
                 Version 1.1 (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.mozilla.org/MPL/
            
                 Software distributed under the License is distributed on an "AS IS"
                 basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
                 License for the specific language governing rights and limitations
                 under the License.
            
                 The Original Code is ______________________________________.
            
                 The Initial Developer of the Original Code is ________________________.
                 Portions created by ______________________ are Copyright (C) ______
                 _______________________. All Rights Reserved.
            
                 Contributor(s): ______________________________________.
            
                 Alternatively, the contents of this file may be used under the terms
                 of the _____ license (the "[___] License"), in which case the
                 provisions of [______] License are applicable instead of those
                 above. If you wish to allow use of your version of this file only
                 under the terms of the [____] License and not to allow others to use
                 your version of this file under the MPL, indicate your decision by
                 deleting the provisions above and replace them with the notice and
                 other provisions required by the [___] License. If you do not delete
                 the provisions above, a recipient may use your version of this file
                 under either the MPL or the [___] License."
            
                 [NOTE: The text of this Exhibit A may differ slightly from the text of
                 the notices in the Source Code files of the Original Code. You should
                 use the text of this Exhibit A rather than the text found in the
                 Original Code Source Code for Your Modifications.]
            
                 ----------------------------------------------------------------------
            
                 AMENDMENTS
            
                 The Netscape Public License Version 1.1 ("NPL") consists of the
                 Mozilla Public License Version 1.1 with the following Amendments,
                 including Exhibit A-Netscape Public License. Files identified with
                 "Exhibit A-Netscape Public License" are governed by the Netscape
                 Public License Version 1.1.
            
                 Additional Terms applicable to the Netscape Public License.
                      I. Effect.
                      These additional terms described in this Netscape Public
                      License -- Amendments shall apply to the Mozilla Communicator
                      client code and to all Covered Code under this License.
            
                      II. "Netscape's Branded Code" means Covered Code that Netscape
                      distributes and/or permits others to distribute under one or more
                      trademark(s) which are controlled by Netscape but which are not
                      licensed for use under this License.
            
                      III. Netscape and logo.
                      This License does not grant any rights to use the trademarks
                      "Netscape", the "Netscape N and horizon" logo or the "Netscape
                      lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript",
                      "Smart Browsing" even if such marks are included in the Original
                      Code or Modifications.
            
                      IV. Inability to Comply Due to Contractual Obligation.
                      Prior to licensing the Original Code under this License, Netscape
                      has licensed third party code for use in Netscape's Branded Code.
                      To the extent that Netscape is limited contractually from making
                      such third party code available under this License, Netscape may
                      choose to reintegrate such code into Covered Code without being
                      required to distribute such code in Source Code form, even if
                      such code would otherwise be considered "Modifications" under
                      this License.
            
                      V. Use of Modifications and Covered Code by Initial Developer.
                           V.1. In General.
                           The obligations of Section 3 apply to Netscape, except to
                           the extent specified in this Amendment, Section V.2 and V.3.
            
                           V.2. Other Products.
                           Netscape may include Covered Code in products other than the
                           Netscape's Branded Code which are released by Netscape
                           during the two (2) years following the release date of the
                           Original Code, without such additional products becoming
                           subject to the terms of this License, and may license such
                           additional products on different terms from those contained
                           in this License.
            
                           V.3. Alternative Licensing.
                           Netscape may license the Source Code of Netscape's Branded
                           Code, including Modifications incorporated therein, without
                           such Netscape Branded Code becoming subject to the terms of
                           this License, and may license such Netscape Branded Code on
                           different terms from those contained in this License.
            
                      VI. Litigation.
                      Notwithstanding the limitations of Section 11 above, the
                      provisions regarding litigation in Section 11(a), (b) and (c) of
                      the License shall apply to all disputes relating to this License.
            
                 EXHIBIT A-Netscape Public License.
            
                      "The contents of this file are subject to the Netscape Public
                      License Version 1.1 (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.mozilla.org/NPL/
            
                      Software distributed under the License is distributed on an "AS
                      IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
                      implied. See the License for the specific language governing
                      rights and limitations under the License.
            
                      The Original Code is Mozilla Communicator client code, released
                      March 31, 1998.
            
                      The Initial Developer of the Original Code is Netscape
                      Communications Corporation. Portions created by Netscape are
                      Copyright (C) 1998-1999 Netscape Communications Corporation. All
                      Rights Reserved.
            
                      Contributor(s): ______________________________________.
            
                      Alternatively, the contents of this file may be used under the
                      terms of the _____ license (the "[___] License"), in which case
                      the provisions of [______] License are applicable  instead of
                      those above. If you wish to allow use of your version of this
                      file only under the terms of the [____] License and not to allow
                      others to use your version of this file under the NPL, indicate
                      your decision by deleting the provisions above and replace  them
                      with the notice and other provisions required by the [___]
                      License. If you do not delete the provisions above, a recipient
                      may use your version of this file under either the NPL or the
                      [___] License."
            
            colorama show license homepage
            Copyright (c) 2010 Jonathan Hartley
            All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are met:
            
            * Redistributions of source code must retain the above copyright notice, this
              list of conditions and the following disclaimer.
            
            * Redistributions in binary form must reproduce the above copyright notice,
              this list of conditions and the following disclaimer in the documentation
              and/or other materials provided with the distribution.
            
            * Neither the name of the copyright holders, nor those of its contributors
              may be used to endorse or promote products derived from this software without
              specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
            ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
            WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
            DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
            FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
            DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
            SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
            CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
            OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            
            Crashpad show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright [yyyy] [name of copyright owner]
            
               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.
            
            d3 show license homepage
            Copyright (c) 2010-2014, Michael Bostock
            All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are met:
            
            * Redistributions of source code must retain the above copyright notice, this
              list of conditions and the following disclaimer.
            
            * Redistributions in binary form must reproduce the above copyright notice,
              this list of conditions and the following disclaimer in the documentation
              and/or other materials provided with the distribution.
            
            * The name Michael Bostock may not be used to endorse or promote products
              derived from this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
            AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
            DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT,
            INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
            BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
            OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
            NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
            EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            Blackmagic DeckLink SDK - Mac show license homepage
            Extracted from mac/include/DeckLinkAPI.h:
            
            ** Copyright (c) 2014 Blackmagic Design
            **
            ** Permission is hereby granted, free of charge, to any person or organization
            ** obtaining a copy of the software and accompanying documentation covered by
            ** this license (the "Software") to use, reproduce, display, distribute,
            ** execute, and transmit the Software, and to prepare derivative works of the
            ** Software, and to permit third-parties to whom the Software is furnished to
            ** do so, all subject to the following:
            ** 
            ** The copyright notices in the Software and this entire statement, including
            ** the above license grant, this restriction and the following disclaimer,
            ** must be included in all copies of the Software, in whole or in part, and
            ** all derivative works of the Software, unless such copies or derivative
            ** works are solely in the form of machine-executable object code generated by
            ** a source language processor.
            ** 
            ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
            ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
            ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
            ** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
            ** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
            ** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
            ** DEALINGS IN THE SOFTWARE.
            
            devscripts show license homepage
            		    GNU GENERAL PUBLIC LICENSE
            		       Version 2, June 1991
            
             Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                   51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
             Everyone is permitted to copy and distribute verbatim copies
             of this license document, but changing it is not allowed.
            
            			    Preamble
            
              The licenses for most software are designed to take away your
            freedom to share and change it.  By contrast, the GNU General Public
            License is intended to guarantee your freedom to share and change free
            software--to make sure the software is free for all its users.  This
            General Public License applies to most of the Free Software
            Foundation's software and to any other program whose authors commit to
            using it.  (Some other Free Software Foundation software is covered by
            the GNU Library General Public License instead.)  You can apply it to
            your programs, too.
            
              When we speak of free software, we are referring to freedom, not
            price.  Our General Public Licenses are designed to make sure that you
            have the freedom to distribute copies of free software (and charge for
            this service if you wish), that you receive source code or can get it
            if you want it, that you can change the software or use pieces of it
            in new free programs; and that you know you can do these things.
            
              To protect your rights, we need to make restrictions that forbid
            anyone to deny you these rights or to ask you to surrender the rights.
            These restrictions translate to certain responsibilities for you if you
            distribute copies of the software, or if you modify it.
            
              For example, if you distribute copies of such a program, whether
            gratis or for a fee, you must give the recipients all the rights that
            you have.  You must make sure that they, too, receive or can get the
            source code.  And you must show them these terms so they know their
            rights.
            
              We protect your rights with two steps: (1) copyright the software, and
            (2) offer you this license which gives you legal permission to copy,
            distribute and/or modify the software.
            
              Also, for each author's protection and ours, we want to make certain
            that everyone understands that there is no warranty for this free
            software.  If the software is modified by someone else and passed on, we
            want its recipients to know that what they have is not the original, so
            that any problems introduced by others will not reflect on the original
            authors' reputations.
            
              Finally, any free program is threatened constantly by software
            patents.  We wish to avoid the danger that redistributors of a free
            program will individually obtain patent licenses, in effect making the
            program proprietary.  To prevent this, we have made it clear that any
            patent must be licensed for everyone's free use or not licensed at all.
            
              The precise terms and conditions for copying, distribution and
            modification follow.
            
            		    GNU GENERAL PUBLIC LICENSE
               TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
            
              0. This License applies to any program or other work which contains
            a notice placed by the copyright holder saying it may be distributed
            under the terms of this General Public License.  The "Program", below,
            refers to any such program or work, and a "work based on the Program"
            means either the Program or any derivative work under copyright law:
            that is to say, a work containing the Program or a portion of it,
            either verbatim or with modifications and/or translated into another
            language.  (Hereinafter, translation is included without limitation in
            the term "modification".)  Each licensee is addressed as "you".
            
            Activities other than copying, distribution and modification are not
            covered by this License; they are outside its scope.  The act of
            running the Program is not restricted, and the output from the Program
            is covered only if its contents constitute a work based on the
            Program (independent of having been made by running the Program).
            Whether that is true depends on what the Program does.
            
              1. You may copy and distribute verbatim copies of the Program's
            source code as you receive it, in any medium, provided that you
            conspicuously and appropriately publish on each copy an appropriate
            copyright notice and disclaimer of warranty; keep intact all the
            notices that refer to this License and to the absence of any warranty;
            and give any other recipients of the Program a copy of this License
            along with the Program.
            
            You may charge a fee for the physical act of transferring a copy, and
            you may at your option offer warranty protection in exchange for a fee.
            
              2. You may modify your copy or copies of the Program or any portion
            of it, thus forming a work based on the Program, and copy and
            distribute such modifications or work under the terms of Section 1
            above, provided that you also meet all of these conditions:
            
                a) You must cause the modified files to carry prominent notices
                stating that you changed the files and the date of any change.
            
                b) You must cause any work that you distribute or publish, that in
                whole or in part contains or is derived from the Program or any
                part thereof, to be licensed as a whole at no charge to all third
                parties under the terms of this License.
            
                c) If the modified program normally reads commands interactively
                when run, you must cause it, when started running for such
                interactive use in the most ordinary way, to print or display an
                announcement including an appropriate copyright notice and a
                notice that there is no warranty (or else, saying that you provide
                a warranty) and that users may redistribute the program under
                these conditions, and telling the user how to view a copy of this
                License.  (Exception: if the Program itself is interactive but
                does not normally print such an announcement, your work based on
                the Program is not required to print an announcement.)
            
            These requirements apply to the modified work as a whole.  If
            identifiable sections of that work are not derived from the Program,
            and can be reasonably considered independent and separate works in
            themselves, then this License, and its terms, do not apply to those
            sections when you distribute them as separate works.  But when you
            distribute the same sections as part of a whole which is a work based
            on the Program, the distribution of the whole must be on the terms of
            this License, whose permissions for other licensees extend to the
            entire whole, and thus to each and every part regardless of who wrote it.
            
            Thus, it is not the intent of this section to claim rights or contest
            your rights to work written entirely by you; rather, the intent is to
            exercise the right to control the distribution of derivative or
            collective works based on the Program.
            
            In addition, mere aggregation of another work not based on the Program
            with the Program (or with a work based on the Program) on a volume of
            a storage or distribution medium does not bring the other work under
            the scope of this License.
            
              3. You may copy and distribute the Program (or a work based on it,
            under Section 2) in object code or executable form under the terms of
            Sections 1 and 2 above provided that you also do one of the following:
            
                a) Accompany it with the complete corresponding machine-readable
                source code, which must be distributed under the terms of Sections
                1 and 2 above on a medium customarily used for software interchange; or,
            
                b) Accompany it with a written offer, valid for at least three
                years, to give any third party, for a charge no more than your
                cost of physically performing source distribution, a complete
                machine-readable copy of the corresponding source code, to be
                distributed under the terms of Sections 1 and 2 above on a medium
                customarily used for software interchange; or,
            
                c) Accompany it with the information you received as to the offer
                to distribute corresponding source code.  (This alternative is
                allowed only for noncommercial distribution and only if you
                received the program in object code or executable form with such
                an offer, in accord with Subsection b above.)
            
            The source code for a work means the preferred form of the work for
            making modifications to it.  For an executable work, complete source
            code means all the source code for all modules it contains, plus any
            associated interface definition files, plus the scripts used to
            control compilation and installation of the executable.  However, as a
            special exception, the source code distributed need not include
            anything that is normally distributed (in either source or binary
            form) with the major components (compiler, kernel, and so on) of the
            operating system on which the executable runs, unless that component
            itself accompanies the executable.
            
            If distribution of executable or object code is made by offering
            access to copy from a designated place, then offering equivalent
            access to copy the source code from the same place counts as
            distribution of the source code, even though third parties are not
            compelled to copy the source along with the object code.
            
              4. You may not copy, modify, sublicense, or distribute the Program
            except as expressly provided under this License.  Any attempt
            otherwise to copy, modify, sublicense or distribute the Program is
            void, and will automatically terminate your rights under this License.
            However, parties who have received copies, or rights, from you under
            this License will not have their licenses terminated so long as such
            parties remain in full compliance.
            
              5. You are not required to accept this License, since you have not
            signed it.  However, nothing else grants you permission to modify or
            distribute the Program or its derivative works.  These actions are
            prohibited by law if you do not accept this License.  Therefore, by
            modifying or distributing the Program (or any work based on the
            Program), you indicate your acceptance of this License to do so, and
            all its terms and conditions for copying, distributing or modifying
            the Program or works based on it.
            
              6. Each time you redistribute the Program (or any work based on the
            Program), the recipient automatically receives a license from the
            original licensor to copy, distribute or modify the Program subject to
            these terms and conditions.  You may not impose any further
            restrictions on the recipients' exercise of the rights granted herein.
            You are not responsible for enforcing compliance by third parties to
            this License.
            
              7. If, as a consequence of a court judgment or allegation of patent
            infringement or for any other reason (not limited to patent issues),
            conditions are imposed on you (whether by court order, agreement or
            otherwise) that contradict the conditions of this License, they do not
            excuse you from the conditions of this License.  If you cannot
            distribute so as to satisfy simultaneously your obligations under this
            License and any other pertinent obligations, then as a consequence you
            may not distribute the Program at all.  For example, if a patent
            license would not permit royalty-free redistribution of the Program by
            all those who receive copies directly or indirectly through you, then
            the only way you could satisfy both it and this License would be to
            refrain entirely from distribution of the Program.
            
            If any portion of this section is held invalid or unenforceable under
            any particular circumstance, the balance of the section is intended to
            apply and the section as a whole is intended to apply in other
            circumstances.
            
            It is not the purpose of this section to induce you to infringe any
            patents or other property right claims or to contest validity of any
            such claims; this section has the sole purpose of protecting the
            integrity of the free software distribution system, which is
            implemented by public license practices.  Many people have made
            generous contributions to the wide range of software distributed
            through that system in reliance on consistent application of that
            system; it is up to the author/donor to decide if he or she is willing
            to distribute software through any other system and a licensee cannot
            impose that choice.
            
            This section is intended to make thoroughly clear what is believed to
            be a consequence of the rest of this License.
            
              8. If the distribution and/or use of the Program is restricted in
            certain countries either by patents or by copyrighted interfaces, the
            original copyright holder who places the Program under this License
            may add an explicit geographical distribution limitation excluding
            those countries, so that distribution is permitted only in or among
            countries not thus excluded.  In such case, this License incorporates
            the limitation as if written in the body of this License.
            
              9. The Free Software Foundation may publish revised and/or new versions
            of the General Public License from time to time.  Such new versions will
            be similar in spirit to the present version, but may differ in detail to
            address new problems or concerns.
            
            Each version is given a distinguishing version number.  If the Program
            specifies a version number of this License which applies to it and "any
            later version", you have the option of following the terms and conditions
            either of that version or of any later version published by the Free
            Software Foundation.  If the Program does not specify a version number of
            this License, you may choose any version ever published by the Free Software
            Foundation.
            
              10. If you wish to incorporate parts of the Program into other free
            programs whose distribution conditions are different, write to the author
            to ask for permission.  For software which is copyrighted by the Free
            Software Foundation, write to the Free Software Foundation; we sometimes
            make exceptions for this.  Our decision will be guided by the two goals
            of preserving the free status of all derivatives of our free software and
            of promoting the sharing and reuse of software generally.
            
            			    NO WARRANTY
            
              11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
            FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
            OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
            PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
            OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
            MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
            TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
            PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
            REPAIR OR CORRECTION.
            
              12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
            WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
            REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
            INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
            OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
            TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
            YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
            PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
            POSSIBILITY OF SUCH DAMAGES.
            
            		     END OF TERMS AND CONDITIONS
            
            	    How to Apply These Terms to Your New Programs
            
              If you develop a new program, and you want it to be of the greatest
            possible use to the public, the best way to achieve this is to make it
            free software which everyone can redistribute and change under these terms.
            
              To do so, attach the following notices to the program.  It is safest
            to attach them to the start of each source file to most effectively
            convey the exclusion of warranty; and each file should have at least
            the "copyright" line and a pointer to where the full notice is found.
            
                <one line to give the program's name and a brief idea of what it does.>
                Copyright (C) 19yy  <name of author>
            
                This program is free software; you can redistribute it and/or modify
                it under the terms of the GNU General Public License as published by
                the Free Software Foundation; either version 2 of the License, or
                (at your option) any later version.
            
                This program is distributed in the hope that it will be useful,
                but WITHOUT ANY WARRANTY; without even the implied warranty of
                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                GNU General Public License for more details.
            
                You should have received a copy of the GNU General Public License
                along with this program; if not, write to the Free Software
                Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
            
            
            Also add information on how to contact you by electronic and paper mail.
            
            If the program is interactive, make it output a short notice like this
            when it starts in an interactive mode:
            
                Gnomovision version 69, Copyright (C) 19yy name of author
                Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
                This is free software, and you are welcome to redistribute it
                under certain conditions; type `show c' for details.
            
            The hypothetical commands `show w' and `show c' should show the appropriate
            parts of the General Public License.  Of course, the commands you use may
            be called something other than `show w' and `show c'; they could even be
            mouse-clicks or menu items--whatever suits your program.
            
            You should also get your employer (if you work as a programmer) or your
            school, if any, to sign a "copyright disclaimer" for the program, if
            necessary.  Here is a sample; alter the names:
            
              Yoyodyne, Inc., hereby disclaims all copyright interest in the program
              `Gnomovision' (which makes passes at compilers) written by James Hacker.
            
              <signature of Ty Coon>, 1 April 1989
              Ty Coon, President of Vice
            
            This General Public License does not permit incorporating your program into
            proprietary programs.  If your program is a subroutine library, you may
            consider it more useful to permit linking proprietary applications with the
            library.  If this is what you want to do, use the GNU Library General
            Public License instead of this License.
            
            dom-distiller-js show license homepage
            Copyright 2014 The Chromium Authors. All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
               * Redistributions of source code must retain the above copyright
            notice, this list of conditions and the following disclaimer.
               * Redistributions in binary form must reproduce the above
            copyright notice, this list of conditions and the following disclaimer
            in the documentation and/or other materials provided with the
            distribution.
               * Neither the name of Google Inc. nor the names of its
            contributors may be used to endorse or promote products derived from
            this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            
            
            Parts of the following directories are available under Apache v2.0
            
            src/de
            Copyright (c) 2009-2011 Christian Kohlschütter
            
            third_party/gwt_exporter
            Copyright 2007 Timepedia.org
            
            third_party/gwt-2.5.1
            Copyright 2008 Google
            
            Apache License
            
            Version 2.0, January 2004
            
            http://www.apache.org/licenses/
            
            TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
            1. Definitions.
            
            "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
            
            "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
            
            "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
            
            "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
            
            "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
            
            "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
            
            "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
            
            "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
            
            "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
            
            "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
            
            2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
            
            3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
            
            4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
            
            You must give any other recipients of the Work or Derivative Works a copy of this License; and
            You must cause any modified files to carry prominent notices stating that You changed the files; and
            You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
            If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. 
            
            You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
            5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
            
            6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
            
            7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
            
            8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
            
            9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
            
            END OF TERMS AND CONDITIONS
            
            Expat XML Parser show license homepage
            Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
                                           and Clark Cooper
            Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
            
            Permission is hereby granted, free of charge, to any person obtaining
            a copy of this software and associated documentation files (the
            "Software"), to deal in the Software without restriction, including
            without limitation the rights to use, copy, modify, merge, publish,
            distribute, sublicense, and/or sell copies of the Software, and to
            permit persons to whom the Software is furnished to do so, subject to
            the following conditions:
            
            The above copyright notice and this permission notice shall be included
            in all copies or substantial portions of the Software.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
            IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
            CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
            TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
            SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
            
            ffmpeg show license homepage
            #FFmpeg:
            
            Most files in FFmpeg are under the GNU Lesser General Public License version 2.1
            or later (LGPL v2.1+). Read the file `COPYING.LGPLv2.1` for details. Some other
            files have MIT/X11/BSD-style licenses. In combination the LGPL v2.1+ applies to
            FFmpeg.
            
            Some optional parts of FFmpeg are licensed under the GNU General Public License
            version 2 or later (GPL v2+). See the file `COPYING.GPLv2` for details. None of
            these parts are used by default, you have to explicitly pass `--enable-gpl` to
            configure to activate them. In this case, FFmpeg's license changes to GPL v2+.
            
            Specifically, the GPL parts of FFmpeg are:
            
            - libpostproc
            - optional x86 optimizations in the files
              - `libavcodec/x86/flac_dsp_gpl.asm`
              - `libavcodec/x86/idct_mmx.c`
            - libutvideo encoding/decoding wrappers in
              `libavcodec/libutvideo*.cpp`
            - the X11 grabber in `libavdevice/x11grab.c`
            - the swresample test app in
              `libswresample/swresample-test.c`
            - the `texi2pod.pl` tool
            - the following filters in libavfilter:
                - `f_ebur128.c`
                - `vf_blackframe.c`
                - `vf_boxblur.c`
                - `vf_colormatrix.c`
                - `vf_cropdetect.c`
                - `vf_delogo.c`
                - `vf_eq.c`
                - `vf_fspp.c`
                - `vf_geq.c`
                - `vf_histeq.c`
                - `vf_hqdn3d.c`
                - `vf_interlace.c`
                - `vf_kerndeint.c`
                - `vf_mcdeint.c`
                - `vf_mpdecimate.c`
                - `vf_owdenoise.c`
                - `vf_perspective.c`
                - `vf_phase.c`
                - `vf_pp.c`
                - `vf_pp7.c`
                - `vf_pullup.c`
                - `vf_sab.c`
                - `vf_smartblur.c`
                - `vf_repeatfields.c`
                - `vf_spp.c`
                - `vf_stereo3d.c`
                - `vf_super2xsai.c`
                - `vf_tinterlace.c`
                - `vf_uspp.c`
                - `vsrc_mptestsrc.c`
            
            Should you, for whatever reason, prefer to use version 3 of the (L)GPL, then
            the configure parameter `--enable-version3` will activate this licensing option
            for you. Read the file `COPYING.LGPLv3` or, if you have enabled GPL parts,
            `COPYING.GPLv3` to learn the exact legal terms that apply in this case.
            
            There are a handful of files under other licensing terms, namely:
            
            * The files `libavcodec/jfdctfst.c`, `libavcodec/jfdctint_template.c` and
              `libavcodec/jrevdct.c` are taken from libjpeg, see the top of the files for
              licensing details. Specifically note that you must credit the IJG in the
              documentation accompanying your program if you only distribute executables.
              You must also indicate any changes including additions and deletions to
              those three files in the documentation.
            * `tests/reference.pnm` is under the expat license.
            
            
            external libraries
            ==================
            
            FFmpeg can be combined with a number of external libraries, which sometimes
            affect the licensing of binaries resulting from the combination.
            
            compatible libraries
            --------------------
            
            The following libraries are under GPL:
            - frei0r
            - libcdio
            - libutvideo
            - libvidstab
            - libx264
            - libx265
            - libxavs
            - libxvid
            
            When combining them with FFmpeg, FFmpeg needs to be licensed as GPL as well by
            passing `--enable-gpl` to configure.
            
            The OpenCORE and VisualOn libraries are under the Apache License 2.0. That
            license is incompatible with the LGPL v2.1 and the GPL v2, but not with
            version 3 of those licenses. So to combine these libraries with FFmpeg, the
            license version needs to be upgraded by passing `--enable-version3` to configure.
            
            incompatible libraries
            ----------------------
            
            The Fraunhofer AAC library, FAAC and aacplus are under licenses which
            are incompatible with the GPLv2 and v3. We do not know for certain if their
            licenses are compatible with the LGPL.
            If you wish to enable these libraries, pass `--enable-nonfree` to configure.
            But note that if you enable any of these libraries the resulting binary will
            be under a complex license mix that is more restrictive than the LGPL and that
            may result in additional obligations. It is possible that these
            restrictions cause the resulting binary to be unredistributeable.
            
            fips181 show license homepage
            Copyright (c) 1999, 2000, 2001, 2002
            Adel I. Mirzazhanov. All rights reserved
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions
            are met:
             
                 1.Redistributions of source code must retain the above copyright notice,
                   this list of conditions and the following disclaimer. 
                 2.Redistributions in binary form must reproduce the above copyright
                   notice, this list of conditions and the following disclaimer in the
                   documentation and/or other materials provided with the distribution. 
                 3.The name of the author may not be used to endorse or promote products
                   derived from this software without specific prior written permission. 
             		  
            THIS SOFTWARE IS PROVIDED BY THE AUTHOR  ``AS IS'' AND ANY EXPRESS
            OR IMPLIED WARRANTIES, INCLUDING,  BUT NOT LIMITED TO, THE IMPLIED
            WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
            ARE DISCLAIMED.  IN  NO  EVENT  SHALL THE AUTHOR BE LIABLE FOR ANY
            DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
            DAMAGES (INCLUDING, BUT NOT LIMITED TO,  PROCUREMENT OF SUBSTITUTE
            GOODS OR SERVICES;  LOSS OF USE,  DATA,  OR  PROFITS;  OR BUSINESS
            INTERRUPTION)  HOWEVER  CAUSED  AND  ON  ANY  THEORY OF LIABILITY,
            WHETHER  IN  CONTRACT,   STRICT   LIABILITY,  OR  TORT  (INCLUDING
            NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
            SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            		  
            flac show license homepage
            Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions
            are met:
            
            - Redistributions of source code must retain the above copyright
            notice, this list of conditions and the following disclaimer.
            
            - Redistributions in binary form must reproduce the above copyright
            notice, this list of conditions and the following disclaimer in the
            documentation and/or other materials provided with the distribution.
            
            - Neither the name of the Xiph.org Foundation nor the names of its
            contributors may be used to endorse or promote products derived from
            this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
            CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
            EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
            PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
            PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
            LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
            NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
            SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            Flot Javascript/JQuery library for creating graphs show license homepage
            Copyright (c) 2007-2013 IOLA and Ole Laursen
            
            Permission is hereby granted, free of charge, to any person
            obtaining a copy of this software and associated documentation
            files (the "Software"), to deal in the Software without
            restriction, including without limitation the rights to use,
            copy, modify, merge, publish, distribute, sublicense, and/or sell
            copies of the Software, and to permit persons to whom the
            Software is furnished to do so, subject to the following
            conditions:
            
            The above copyright notice and this permission notice shall be
            included in all copies or substantial portions of the Software.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
            OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
            HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
            WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
            FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
            OTHER DEALINGS IN THE SOFTWARE.
            
            Google Input Tools show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright 2013 Google Inc.
            
               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.
            Google Toolbox for Mac show license homepage
            See src/COPYING
            
            GIMP Toolkit show license homepage
            		  GNU LIBRARY GENERAL PUBLIC LICENSE
            		       Version 2, June 1991
            
             Copyright (C) 1991 Free Software Foundation, Inc.
                		    59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
             Everyone is permitted to copy and distribute verbatim copies
             of this license document, but changing it is not allowed.
            
            [This is the first released version of the library GPL.  It is
             numbered 2 because it goes with version 2 of the ordinary GPL.]
            
            			    Preamble
            
              The licenses for most software are designed to take away your
            freedom to share and change it.  By contrast, the GNU General Public
            Licenses are intended to guarantee your freedom to share and change
            free software--to make sure the software is free for all its users.
            
              This license, the Library General Public License, applies to some
            specially designated Free Software Foundation software, and to any
            other libraries whose authors decide to use it.  You can use it for
            your libraries, too.
            
              When we speak of free software, we are referring to freedom, not
            price.  Our General Public Licenses are designed to make sure that you
            have the freedom to distribute copies of free software (and charge for
            this service if you wish), that you receive source code or can get it
            if you want it, that you can change the software or use pieces of it
            in new free programs; and that you know you can do these things.
            
              To protect your rights, we need to make restrictions that forbid
            anyone to deny you these rights or to ask you to surrender the rights.
            These restrictions translate to certain responsibilities for you if
            you distribute copies of the library, or if you modify it.
            
              For example, if you distribute copies of the library, whether gratis
            or for a fee, you must give the recipients all the rights that we gave
            you.  You must make sure that they, too, receive or can get the source
            code.  If you link a program with the library, you must provide
            complete object files to the recipients so that they can relink them
            with the library, after making changes to the library and recompiling
            it.  And you must show them these terms so they know their rights.
            
              Our method of protecting your rights has two steps: (1) copyright
            the library, and (2) offer you this license which gives you legal
            permission to copy, distribute and/or modify the library.
            
              Also, for each distributor's protection, we want to make certain
            that everyone understands that there is no warranty for this free
            library.  If the library is modified by someone else and passed on, we
            want its recipients to know that what they have is not the original
            version, so that any problems introduced by others will not reflect on
            the original authors' reputations.
            
              Finally, any free program is threatened constantly by software
            patents.  We wish to avoid the danger that companies distributing free
            software will individually obtain patent licenses, thus in effect
            transforming the program into proprietary software.  To prevent this,
            we have made it clear that any patent must be licensed for everyone's
            free use or not licensed at all.
            
              Most GNU software, including some libraries, is covered by the ordinary
            GNU General Public License, which was designed for utility programs.  This
            license, the GNU Library General Public License, applies to certain
            designated libraries.  This license is quite different from the ordinary
            one; be sure to read it in full, and don't assume that anything in it is
            the same as in the ordinary license.
            
              The reason we have a separate public license for some libraries is that
            they blur the distinction we usually make between modifying or adding to a
            program and simply using it.  Linking a program with a library, without
            changing the library, is in some sense simply using the library, and is
            analogous to running a utility program or application program.  However, in
            a textual and legal sense, the linked executable is a combined work, a
            derivative of the original library, and the ordinary General Public License
            treats it as such.
            
              Because of this blurred distinction, using the ordinary General
            Public License for libraries did not effectively promote software
            sharing, because most developers did not use the libraries.  We
            concluded that weaker conditions might promote sharing better.
            
              However, unrestricted linking of non-free programs would deprive the
            users of those programs of all benefit from the free status of the
            libraries themselves.  This Library General Public License is intended to
            permit developers of non-free programs to use free libraries, while
            preserving your freedom as a user of such programs to change the free
            libraries that are incorporated in them.  (We have not seen how to achieve
            this as regards changes in header files, but we have achieved it as regards
            changes in the actual functions of the Library.)  The hope is that this
            will lead to faster development of free libraries.
            
              The precise terms and conditions for copying, distribution and
            modification follow.  Pay close attention to the difference between a
            "work based on the library" and a "work that uses the library".  The
            former contains code derived from the library, while the latter only
            works together with the library.
            
              Note that it is possible for a library to be covered by the ordinary
            General Public License rather than by this special one.
            
            		  GNU LIBRARY GENERAL PUBLIC LICENSE
               TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
            
              0. This License Agreement applies to any software library which
            contains a notice placed by the copyright holder or other authorized
            party saying it may be distributed under the terms of this Library
            General Public License (also called "this License").  Each licensee is
            addressed as "you".
            
              A "library" means a collection of software functions and/or data
            prepared so as to be conveniently linked with application programs
            (which use some of those functions and data) to form executables.
            
              The "Library", below, refers to any such software library or work
            which has been distributed under these terms.  A "work based on the
            Library" means either the Library or any derivative work under
            copyright law: that is to say, a work containing the Library or a
            portion of it, either verbatim or with modifications and/or translated
            straightforwardly into another language.  (Hereinafter, translation is
            included without limitation in the term "modification".)
            
              "Source code" for a work means the preferred form of the work for
            making modifications to it.  For a library, complete source code means
            all the source code for all modules it contains, plus any associated
            interface definition files, plus the scripts used to control compilation
            and installation of the library.
            
              Activities other than copying, distribution and modification are not
            covered by this License; they are outside its scope.  The act of
            running a program using the Library is not restricted, and output from
            such a program is covered only if its contents constitute a work based
            on the Library (independent of the use of the Library in a tool for
            writing it).  Whether that is true depends on what the Library does
            and what the program that uses the Library does.
              
              1. You may copy and distribute verbatim copies of the Library's
            complete source code as you receive it, in any medium, provided that
            you conspicuously and appropriately publish on each copy an
            appropriate copyright notice and disclaimer of warranty; keep intact
            all the notices that refer to this License and to the absence of any
            warranty; and distribute a copy of this License along with the
            Library.
            
              You may charge a fee for the physical act of transferring a copy,
            and you may at your option offer warranty protection in exchange for a
            fee.
            
              2. You may modify your copy or copies of the Library or any portion
            of it, thus forming a work based on the Library, and copy and
            distribute such modifications or work under the terms of Section 1
            above, provided that you also meet all of these conditions:
            
                a) The modified work must itself be a software library.
            
                b) You must cause the files modified to carry prominent notices
                stating that you changed the files and the date of any change.
            
                c) You must cause the whole of the work to be licensed at no
                charge to all third parties under the terms of this License.
            
                d) If a facility in the modified Library refers to a function or a
                table of data to be supplied by an application program that uses
                the facility, other than as an argument passed when the facility
                is invoked, then you must make a good faith effort to ensure that,
                in the event an application does not supply such function or
                table, the facility still operates, and performs whatever part of
                its purpose remains meaningful.
            
                (For example, a function in a library to compute square roots has
                a purpose that is entirely well-defined independent of the
                application.  Therefore, Subsection 2d requires that any
                application-supplied function or table used by this function must
                be optional: if the application does not supply it, the square
                root function must still compute square roots.)
            
            These requirements apply to the modified work as a whole.  If
            identifiable sections of that work are not derived from the Library,
            and can be reasonably considered independent and separate works in
            themselves, then this License, and its terms, do not apply to those
            sections when you distribute them as separate works.  But when you
            distribute the same sections as part of a whole which is a work based
            on the Library, the distribution of the whole must be on the terms of
            this License, whose permissions for other licensees extend to the
            entire whole, and thus to each and every part regardless of who wrote
            it.
            
            Thus, it is not the intent of this section to claim rights or contest
            your rights to work written entirely by you; rather, the intent is to
            exercise the right to control the distribution of derivative or
            collective works based on the Library.
            
            In addition, mere aggregation of another work not based on the Library
            with the Library (or with a work based on the Library) on a volume of
            a storage or distribution medium does not bring the other work under
            the scope of this License.
            
              3. You may opt to apply the terms of the ordinary GNU General Public
            License instead of this License to a given copy of the Library.  To do
            this, you must alter all the notices that refer to this License, so
            that they refer to the ordinary GNU General Public License, version 2,
            instead of to this License.  (If a newer version than version 2 of the
            ordinary GNU General Public License has appeared, then you can specify
            that version instead if you wish.)  Do not make any other change in
            these notices.
            
              Once this change is made in a given copy, it is irreversible for
            that copy, so the ordinary GNU General Public License applies to all
            subsequent copies and derivative works made from that copy.
            
              This option is useful when you wish to copy part of the code of
            the Library into a program that is not a library.
            
              4. You may copy and distribute the Library (or a portion or
            derivative of it, under Section 2) in object code or executable form
            under the terms of Sections 1 and 2 above provided that you accompany
            it with the complete corresponding machine-readable source code, which
            must be distributed under the terms of Sections 1 and 2 above on a
            medium customarily used for software interchange.
            
              If distribution of object code is made by offering access to copy
            from a designated place, then offering equivalent access to copy the
            source code from the same place satisfies the requirement to
            distribute the source code, even though third parties are not
            compelled to copy the source along with the object code.
            
              5. A program that contains no derivative of any portion of the
            Library, but is designed to work with the Library by being compiled or
            linked with it, is called a "work that uses the Library".  Such a
            work, in isolation, is not a derivative work of the Library, and
            therefore falls outside the scope of this License.
            
              However, linking a "work that uses the Library" with the Library
            creates an executable that is a derivative of the Library (because it
            contains portions of the Library), rather than a "work that uses the
            library".  The executable is therefore covered by this License.
            Section 6 states terms for distribution of such executables.
            
              When a "work that uses the Library" uses material from a header file
            that is part of the Library, the object code for the work may be a
            derivative work of the Library even though the source code is not.
            Whether this is true is especially significant if the work can be
            linked without the Library, or if the work is itself a library.  The
            threshold for this to be true is not precisely defined by law.
            
              If such an object file uses only numerical parameters, data
            structure layouts and accessors, and small macros and small inline
            functions (ten lines or less in length), then the use of the object
            file is unrestricted, regardless of whether it is legally a derivative
            work.  (Executables containing this object code plus portions of the
            Library will still fall under Section 6.)
            
              Otherwise, if the work is a derivative of the Library, you may
            distribute the object code for the work under the terms of Section 6.
            Any executables containing that work also fall under Section 6,
            whether or not they are linked directly with the Library itself.
            
              6. As an exception to the Sections above, you may also compile or
            link a "work that uses the Library" with the Library to produce a
            work containing portions of the Library, and distribute that work
            under terms of your choice, provided that the terms permit
            modification of the work for the customer's own use and reverse
            engineering for debugging such modifications.
            
              You must give prominent notice with each copy of the work that the
            Library is used in it and that the Library and its use are covered by
            this License.  You must supply a copy of this License.  If the work
            during execution displays copyright notices, you must include the
            copyright notice for the Library among them, as well as a reference
            directing the user to the copy of this License.  Also, you must do one
            of these things:
            
                a) Accompany the work with the complete corresponding
                machine-readable source code for the Library including whatever
                changes were used in the work (which must be distributed under
                Sections 1 and 2 above); and, if the work is an executable linked
                with the Library, with the complete machine-readable "work that
                uses the Library", as object code and/or source code, so that the
                user can modify the Library and then relink to produce a modified
                executable containing the modified Library.  (It is understood
                that the user who changes the contents of definitions files in the
                Library will not necessarily be able to recompile the application
                to use the modified definitions.)
            
                b) Accompany the work with a written offer, valid for at
                least three years, to give the same user the materials
                specified in Subsection 6a, above, for a charge no more
                than the cost of performing this distribution.
            
                c) If distribution of the work is made by offering access to copy
                from a designated place, offer equivalent access to copy the above
                specified materials from the same place.
            
                d) Verify that the user has already received a copy of these
                materials or that you have already sent this user a copy.
            
              For an executable, the required form of the "work that uses the
            Library" must include any data and utility programs needed for
            reproducing the executable from it.  However, as a special exception,
            the source code distributed need not include anything that is normally
            distributed (in either source or binary form) with the major
            components (compiler, kernel, and so on) of the operating system on
            which the executable runs, unless that component itself accompanies
            the executable.
            
              It may happen that this requirement contradicts the license
            restrictions of other proprietary libraries that do not normally
            accompany the operating system.  Such a contradiction means you cannot
            use both them and the Library together in an executable that you
            distribute.
            
              7. You may place library facilities that are a work based on the
            Library side-by-side in a single library together with other library
            facilities not covered by this License, and distribute such a combined
            library, provided that the separate distribution of the work based on
            the Library and of the other library facilities is otherwise
            permitted, and provided that you do these two things:
            
                a) Accompany the combined library with a copy of the same work
                based on the Library, uncombined with any other library
                facilities.  This must be distributed under the terms of the
                Sections above.
            
                b) Give prominent notice with the combined library of the fact
                that part of it is a work based on the Library, and explaining
                where to find the accompanying uncombined form of the same work.
            
              8. You may not copy, modify, sublicense, link with, or distribute
            the Library except as expressly provided under this License.  Any
            attempt otherwise to copy, modify, sublicense, link with, or
            distribute the Library is void, and will automatically terminate your
            rights under this License.  However, parties who have received copies,
            or rights, from you under this License will not have their licenses
            terminated so long as such parties remain in full compliance.
            
              9. You are not required to accept this License, since you have not
            signed it.  However, nothing else grants you permission to modify or
            distribute the Library or its derivative works.  These actions are
            prohibited by law if you do not accept this License.  Therefore, by
            modifying or distributing the Library (or any work based on the
            Library), you indicate your acceptance of this License to do so, and
            all its terms and conditions for copying, distributing or modifying
            the Library or works based on it.
            
              10. Each time you redistribute the Library (or any work based on the
            Library), the recipient automatically receives a license from the
            original licensor to copy, distribute, link with or modify the Library
            subject to these terms and conditions.  You may not impose any further
            restrictions on the recipients' exercise of the rights granted herein.
            You are not responsible for enforcing compliance by third parties to
            this License.
            
              11. If, as a consequence of a court judgment or allegation of patent
            infringement or for any other reason (not limited to patent issues),
            conditions are imposed on you (whether by court order, agreement or
            otherwise) that contradict the conditions of this License, they do not
            excuse you from the conditions of this License.  If you cannot
            distribute so as to satisfy simultaneously your obligations under this
            License and any other pertinent obligations, then as a consequence you
            may not distribute the Library at all.  For example, if a patent
            license would not permit royalty-free redistribution of the Library by
            all those who receive copies directly or indirectly through you, then
            the only way you could satisfy both it and this License would be to
            refrain entirely from distribution of the Library.
            
            If any portion of this section is held invalid or unenforceable under any
            particular circumstance, the balance of the section is intended to apply,
            and the section as a whole is intended to apply in other circumstances.
            
            It is not the purpose of this section to induce you to infringe any
            patents or other property right claims or to contest validity of any
            such claims; this section has the sole purpose of protecting the
            integrity of the free software distribution system which is
            implemented by public license practices.  Many people have made
            generous contributions to the wide range of software distributed
            through that system in reliance on consistent application of that
            system; it is up to the author/donor to decide if he or she is willing
            to distribute software through any other system and a licensee cannot
            impose that choice.
            
            This section is intended to make thoroughly clear what is believed to
            be a consequence of the rest of this License.
            
              12. If the distribution and/or use of the Library is restricted in
            certain countries either by patents or by copyrighted interfaces, the
            original copyright holder who places the Library under this License may add
            an explicit geographical distribution limitation excluding those countries,
            so that distribution is permitted only in or among countries not thus
            excluded.  In such case, this License incorporates the limitation as if
            written in the body of this License.
            
              13. The Free Software Foundation may publish revised and/or new
            versions of the Library General Public License from time to time.
            Such new versions will be similar in spirit to the present version,
            but may differ in detail to address new problems or concerns.
            
            Each version is given a distinguishing version number.  If the Library
            specifies a version number of this License which applies to it and
            "any later version", you have the option of following the terms and
            conditions either of that version or of any later version published by
            the Free Software Foundation.  If the Library does not specify a
            license version number, you may choose any version ever published by
            the Free Software Foundation.
            
              14. If you wish to incorporate parts of the Library into other free
            programs whose distribution conditions are incompatible with these,
            write to the author to ask for permission.  For software which is
            copyrighted by the Free Software Foundation, write to the Free
            Software Foundation; we sometimes make exceptions for this.  Our
            decision will be guided by the two goals of preserving the free status
            of all derivatives of our free software and of promoting the sharing
            and reuse of software generally.
            
            			    NO WARRANTY
            
              15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
            WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
            EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
            OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
            KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
            PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
            LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
            THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
            
              16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
            WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
            AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
            FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
            CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
            LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
            RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
            FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
            SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
            DAMAGES.
            
            		     END OF TERMS AND CONDITIONS
            
                       How to Apply These Terms to Your New Libraries
            
              If you develop a new library, and you want it to be of the greatest
            possible use to the public, we recommend making it free software that
            everyone can redistribute and change.  You can do so by permitting
            redistribution under these terms (or, alternatively, under the terms of the
            ordinary General Public License).
            
              To apply these terms, attach the following notices to the library.  It is
            safest to attach them to the start of each source file to most effectively
            convey the exclusion of warranty; and each file should have at least the
            "copyright" line and a pointer to where the full notice is found.
            
                <one line to give the library's name and a brief idea of what it does.>
                Copyright (C) <year>  <name of author>
            
                This library is free software; you can redistribute it and/or
                modify it under the terms of the GNU Library General Public
                License as published by the Free Software Foundation; either
                version 2 of the License, or (at your option) any later version.
            
                This library is distributed in the hope that it will be useful,
                but WITHOUT ANY WARRANTY; without even the implied warranty of
                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
                Library General Public License for more details.
            
                You should have received a copy of the GNU Library General Public
                License along with this library; if not, write to the 
                Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
                Boston, MA  02111-1307  USA.
            
            Also add information on how to contact you by electronic and paper mail.
            
            You should also get your employer (if you work as a programmer) or your
            school, if any, to sign a "copyright disclaimer" for the library, if
            necessary.  Here is a sample; alter the names:
            
              Yoyodyne, Inc., hereby disclaims all copyright interest in the
              library `Frob' (a library for tweaking knobs) written by James Random Hacker.
            
              <signature of Ty Coon>, 1 April 1990
              Ty Coon, President of Vice
            
            That's all there is to it!
            
            harfbuzz-ng show license homepage
            HarfBuzz is licensed under the so-called "Old MIT" license.  Details follow.
            For parts of HarfBuzz that are licensed under different licenses see individual
            files names COPYING in subdirectories where applicable.
            
            Copyright © 2010,2011,2012  Google, Inc.
            Copyright © 2012  Mozilla Foundation
            Copyright © 2011  Codethink Limited
            Copyright © 2008,2010  Nokia Corporation and/or its subsidiary(-ies)
            Copyright © 2009  Keith Stribley
            Copyright © 2009  Martin Hosken and SIL International
            Copyright © 2007  Chris Wilson
            Copyright © 2006  Behdad Esfahbod
            Copyright © 2005  David Turner
            Copyright © 2004,2007,2008,2009,2010  Red Hat, Inc.
            Copyright © 1998-2004  David Turner and Werner Lemberg
            
            For full copyright notices consult the individual files in the package.
            
            
            Permission is hereby granted, without written agreement and without
            license or royalty fees, to use, copy, modify, and distribute this
            software and its documentation for any purpose, provided that the
            above copyright notice and the following two paragraphs appear in
            all copies of this software.
            
            IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
            DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
            ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
            IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
            DAMAGE.
            
            THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
            BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
            FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
            ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
            PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
            
            hunspell show license homepage
            GPL 2.0/LGPL 2.1/MPL 1.1 tri-license
            
            The contents of this software may be used under the terms of
            the GNU General Public License Version 2 or later (the "GPL"), or
            the GNU Lesser General Public License Version 2.1 or later (the "LGPL",
            see COPYING.LGPL) or (excepting the LGPLed GNU gettext library in the
            intl/ directory) the Mozilla Public License Version 1.1 or later
            (the "MPL", see COPYING.MPL).
            
            Software distributed under these licenses is distributed on an "AS IS" basis,
            WITHOUT WARRANTY OF ANY KIND, either express or implied. See the licences
            for the specific language governing rights and limitations under the licenses.
            
            hunspell dictionaries show license homepage
            GPL 2.0/LGPL 2.1/MPL 1.1 tri-license
            
            The contents of this software may be used under the terms of
            the GNU General Public License Version 2 or later (the "GPL"), or
            the GNU Lesser General Public License Version 2.1 or later (the "LGPL",
            see COPYING.LGPL) or (excepting the LGPLed GNU gettext library in the
            intl/ directory) the Mozilla Public License Version 1.1 or later
            (the "MPL", see COPYING.MPL).
            
            Software distributed under these licenses is distributed on an "AS IS" basis,
            WITHOUT WARRANTY OF ANY KIND, either express or implied. See the licences
            for the specific language governing rights and limitations under the licenses.
            
            Hardware Composer Plus show license homepage
            // Copyright 2014 The Chromium Authors. All rights reserved.
            //
            // Redistribution and use in source and binary forms, with or without
            // modification, are permitted provided that the following conditions are
            // met:
            //
            //    * Redistributions of source code must retain the above copyright
            // notice, this list of conditions and the following disclaimer.
            //    * Redistributions in binary form must reproduce the above
            // copyright notice, this list of conditions and the following disclaimer
            // in the documentation and/or other materials provided with the
            // distribution.
            //    * Neither the name of Google Inc. nor the names of its
            // contributors may be used to endorse or promote products derived from
            // this software without specific prior written permission.
            //
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            IAccessible2 COM interfaces for accessibility show license homepage
            /*************************************************************************
             *
             *  IAccessible2 IDL Specification 
             * 
             *  Copyright (c) 2007, 2010 Linux Foundation 
             *  Copyright (c) 2006 IBM Corporation 
             *  Copyright (c) 2000, 2006 Sun Microsystems, Inc. 
             *  All rights reserved. 
             *   
             *   
             *  Redistribution and use in source and binary forms, with or without 
             *  modification, are permitted provided that the following conditions 
             *  are met: 
             *   
             *   1. Redistributions of source code must retain the above copyright 
             *      notice, this list of conditions and the following disclaimer. 
             *   
             *   2. Redistributions in binary form must reproduce the above 
             *      copyright notice, this list of conditions and the following 
             *      disclaimer in the documentation and/or other materials 
             *      provided with the distribution. 
             *
             *   3. Neither the name of the Linux Foundation nor the names of its 
             *      contributors may be used to endorse or promote products 
             *      derived from this software without specific prior written 
             *      permission. 
             *   
             *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
             *  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
             *  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
             *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
             *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
             *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
             *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
             *  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
             *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
             *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
             *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
             *  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
             *  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
             *   
             *  This BSD License conforms to the Open Source Initiative "Simplified 
             *  BSD License" as published at: 
             *  http://www.opensource.org/licenses/bsd-license.php 
             *   
             *  IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 
             *  mark may be used in accordance with the Linux Foundation Trademark 
             *  Policy to indicate compliance with the IAccessible2 specification. 
             * 
             ************************************************************************/ 
            
            iccjpeg show license homepage
            LICENSE extracted from IJG's jpeg distribution:
            -----------------------------------------------
            
            In plain English:
            
            1. We don't promise that this software works.  (But if you find any bugs,
               please let us know!)
            2. You can use this software for whatever you want.  You don't have to pay us.
            3. You may not pretend that you wrote this software.  If you use it in a
               program, you must acknowledge somewhere in your documentation that
               you've used the IJG code.
            
            In legalese:
            
            The authors make NO WARRANTY or representation, either express or implied,
            with respect to this software, its quality, accuracy, merchantability, or
            fitness for a particular purpose.  This software is provided "AS IS", and you,
            its user, assume the entire risk as to its quality and accuracy.
            
            This software is copyright (C) 1991-1998, Thomas G. Lane.
            All Rights Reserved except as specified below.
            
            Permission is hereby granted to use, copy, modify, and distribute this
            software (or portions thereof) for any purpose, without fee, subject to these
            conditions:
            (1) If any part of the source code for this software is distributed, then this
            README file must be included, with this copyright and no-warranty notice
            unaltered; and any additions, deletions, or changes to the original files
            must be clearly indicated in accompanying documentation.
            (2) If only executable code is distributed, then the accompanying
            documentation must state that "this software is based in part on the work of
            the Independent JPEG Group".
            (3) Permission for use of this software is granted only if the user accepts
            full responsibility for any undesirable consequences; the authors accept
            NO LIABILITY for damages of any kind.
            
            These conditions apply to any software derived from or based on the IJG code,
            not just to the unmodified library.  If you use our work, you ought to
            acknowledge us.
            
            Permission is NOT granted for the use of any IJG author's name or company name
            in advertising or publicity relating to this software or products derived from
            it.  This software may be referred to only as "the Independent JPEG Group's
            software".
            
            We specifically permit and encourage the use of this software as the basis of
            commercial products, provided that all warranty or liability claims are
            assumed by the product vendor.
            
            
            icu show license homepage
            ICU License - ICU 1.8.1 and later
            
               COPYRIGHT AND PERMISSION NOTICE
            
               Copyright (c) 1995-2014 International Business Machines Corporation and
               others
            
               All rights reserved.
            
               Permission is hereby granted, free of charge, to any person obtaining a
               copy of this software and associated documentation files (the
               "Software"), to deal in the Software without restriction, including
               without limitation the rights to use, copy, modify, merge, publish,
               distribute, and/or sell copies of the Software, and to permit persons to
               whom the Software is furnished to do so, provided that the above
               copyright notice(s) and this permission notice appear in all copies of
               the Software and that both the above copyright notice(s) and this
               permission notice appear in supporting documentation.
            
               THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
               OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
               MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
               THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
               INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
               OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
               OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
               OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
               PERFORMANCE OF THIS SOFTWARE.
            
               Except as contained in this notice, the name of a copyright holder shall
               not be used in advertising or otherwise to promote the sale, use or
               other dealings in this Software without prior written authorization of
               the copyright holder.
                 ___________________________________________________________________
            
               All trademarks and registered trademarks mentioned herein are the
               property of their respective owners.
                 ___________________________________________________________________
            
            Third-Party Software Licenses
            
               This section contains third-party software notices and/or additional
               terms for licensed third-party software components included within ICU
               libraries.
            
              1. Unicode Data Files and Software
            
            COPYRIGHT AND PERMISSION NOTICE
            
            Copyright © 1991-2014 Unicode, Inc. All rights reserved.
            Distributed under the Terms of Use in
            http://www.unicode.org/copyright.html.
            
            Permission is hereby granted, free of charge, to any person obtaining
            a copy of the Unicode data files and any associated documentation
            (the "Data Files") or Unicode software and any associated documentation
            (the "Software") to deal in the Data Files or Software
            without restriction, including without limitation the rights to use,
            copy, modify, merge, publish, distribute, and/or sell copies of
            the Data Files or Software, and to permit persons to whom the Data Files
            or Software are furnished to do so, provided that
            (a) this copyright and permission notice appear with all copies
            of the Data Files or Software,
            (b) this copyright and permission notice appear in associated
            documentation, and
            (c) there is clear notice in each modified Data File or in the Software
            as well as in the documentation associated with the Data File(s) or
            Software that the data or software has been modified.
            
            THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
            ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
            WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
            NONINFRINGEMENT OF THIRD PARTY RIGHTS.
            IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
            NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
            DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
            DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
            TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
            PERFORMANCE OF THE DATA FILES OR SOFTWARE.
            
            Except as contained in this notice, the name of a copyright holder
            shall not be used in advertising or otherwise to promote the sale,
            use or other dealings in these Data Files or Software without prior
            written authorization of the copyright holder.
            
              2. Chinese/Japanese Word Break Dictionary Data (cjdict.txt)
            
             #    The Google Chrome software developed by Google is licensed under the BSD li
            cense. Other software included in this distribution is provided under other licen
            ses, as set forth below.
             #
             #      The BSD License
             #      http://opensource.org/licenses/bsd-license.php
             #      Copyright (C) 2006-2008, Google Inc.
             #
             #      All rights reserved.
             #
             #      Redistribution and use in source and binary forms, with or without modifi
            cation, are permitted provided that the following conditions are met:
             #
             #      Redistributions of source code must retain the above copyright notice, th
            is list of conditions and the following disclaimer.
             #      Redistributions in binary form must reproduce the above copyright notice,
             this list of conditions and the following disclaimer in the documentation and/or
             other materials provided with the distribution.
             #      Neither the name of  Google Inc. nor the names of its contributors may be
             used to endorse or promote products derived from this software without specific
            prior written permission.
             #
             #
             #      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS I
            S" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPL
            IED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLA
            IMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIR
            ECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDIN
            G, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF L
            IABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
             OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED O
            F THE POSSIBILITY OF SUCH DAMAGE.
             #
             #
             #      The word list in cjdict.txt are generated by combining three word lists l
            isted
             #      below with further processing for compound word breaking. The frequency i
            s generated
             #      with an iterative training against Google web corpora.
             #
             #      * Libtabe (Chinese)
             #        - https://sourceforge.net/project/?group_id=1519
             #        - Its license terms and conditions are shown below.
             #
             #      * IPADIC (Japanese)
             #        - http://chasen.aist-nara.ac.jp/chasen/distribution.html
             #        - Its license terms and conditions are shown below.
             #
             #      ---------COPYING.libtabe ---- BEGIN--------------------
             #
             #      /*
             #       * Copyrighy (c) 1999 TaBE Project.
             #       * Copyright (c) 1999 Pai-Hsiang Hsiao.
             #       * All rights reserved.
             #       *
             #       * Redistribution and use in source and binary forms, with or without
             #       * modification, are permitted provided that the following conditions
             #       * are met:
             #       *
             #       * . Redistributions of source code must retain the above copyright
             #       *   notice, this list of conditions and the following disclaimer.
             #       * . Redistributions in binary form must reproduce the above copyright
             #       *   notice, this list of conditions and the following disclaimer in
             #       *   the documentation and/or other materials provided with the
             #       *   distribution.
             #       * . Neither the name of the TaBE Project nor the names of its
             #       *   contributors may be used to endorse or promote products derived
             #       *   from this software without specific prior written permission.
             #       *
             #       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
             #       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
             #       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
             #       * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
             #       * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
             #       * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
             #       * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
             #       * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
             #       * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
             #       * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
             #       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
             #       * OF THE POSSIBILITY OF SUCH DAMAGE.
             #       */
             #
             #      /*
             #       * Copyright (c) 1999 Computer Systems and Communication Lab,
             #       *                    Institute of Information Science, Academia Sinica.
             #       * All rights reserved.
             #       *
             #       * Redistribution and use in source and binary forms, with or without
             #       * modification, are permitted provided that the following conditions
             #       * are met:
             #       *
             #       * . Redistributions of source code must retain the above copyright
             #       *   notice, this list of conditions and the following disclaimer.
             #       * . Redistributions in binary form must reproduce the above copyright
             #       *   notice, this list of conditions and the following disclaimer in
             #       *   the documentation and/or other materials provided with the
             #       *   distribution.
             #       * . Neither the name of the Computer Systems and Communication Lab
             #       *   nor the names of its contributors may be used to endorse or
             #       *   promote products derived from this software without specific
             #       *   prior written permission.
             #       *
             #       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
             #       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
             #       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
             #       * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
             #       * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
             #       * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
             #       * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
             #       * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
             #       * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
             #       * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
             #       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
             #       * OF THE POSSIBILITY OF SUCH DAMAGE.
             #       */
             #
             #      Copyright 1996 Chih-Hao Tsai @ Beckman Institute, University of Illinois
             #      c-tsai4@uiuc.edu  http://casper.beckman.uiuc.edu/~c-tsai4
             #
             #      ---------------COPYING.libtabe-----END-----------------------------------
            -
             #
             #
             #      ---------------COPYING.ipadic-----BEGIN----------------------------------
            --
             #
             #      Copyright 2000, 2001, 2002, 2003 Nara Institute of Science
             #      and Technology.  All Rights Reserved.
             #
             #      Use, reproduction, and distribution of this software is permitted.
             #      Any copy of this software, whether in its original form or modified,
             #      must include both the above copyright notice and the following
             #      paragraphs.
             #
             #      Nara Institute of Science and Technology (NAIST),
             #      the copyright holders, disclaims all warranties with regard to this
             #      software, including all implied warranties of merchantability and
             #      fitness, in no event shall NAIST be liable for
             #      any special, indirect or consequential damages or any damages
             #      whatsoever resulting from loss of use, data or profits, whether in an
             #      action of contract, negligence or other tortuous action, arising out
             #      of or in connection with the use or performance of this software.
             #
             #      A large portion of the dictionary entries
             #      originate from ICOT Free Software.  The following conditions for ICOT
             #      Free Software applies to the current dictionary as well.
             #
             #      Each User may also freely distribute the Program, whether in its
             #      original form or modified, to any third party or parties, PROVIDED
             #      that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear
             #      on, or be attached to, the Program, which is distributed substantially
             #      in the same form as set out herein and that such intended
             #      distribution, if actually made, will neither violate or otherwise
             #      contravene any of the laws and regulations of the countries having
             #      jurisdiction over the User or the intended distribution itself.
             #
             #      NO WARRANTY
             #
             #      The program was produced on an experimental basis in the course of the
             #      research and development conducted during the project and is provided
             #      to users as so produced on an experimental basis.  Accordingly, the
             #      program is provided without any warranty whatsoever, whether express,
             #      implied, statutory or otherwise.  The term "warranty" used herein
             #      includes, but is not limited to, any warranty of the quality,
             #      performance, merchantability and fitness for a particular purpose of
             #      the program and the nonexistence of any infringement or violation of
             #      any right of any third party.
             #
             #      Each user of the program will agree and understand, and be deemed to
             #      have agreed and understood, that there is no warranty whatsoever for
             #      the program and, accordingly, the entire risk arising from or
             #      otherwise connected with the program is assumed by the user.
             #
             #      Therefore, neither ICOT, the copyright holder, or any other
             #      organization that participated in or was otherwise related to the
             #      development of the program and their respective officials, directors,
             #      officers and other employees shall be held liable for any and all
             #      damages, including, without limitation, general, special, incidental
             #      and consequential damages, arising out of or otherwise in connection
             #      with the use or inability to use the program or any product, material
             #      or result produced or otherwise obtained by using the program,
             #      regardless of whether they have been advised of, or otherwise had
             #      knowledge of, the possibility of such damages at any time during the
             #      project or thereafter.  Each user will be deemed to have agreed to the
             #      foregoing by his or her commencement of use of the program.  The term
             #      "use" as used herein includes, but is not limited to, the use,
             #      modification, copying and distribution of the program and the
             #      production of secondary products from the program.
             #
             #      In the case where the program, whether in its original form or
             #      modified, was distributed or delivered to or received by a user from
             #      any person, organization or entity other than ICOT, unless it makes or
             #      grants independently of ICOT any specific warranty to the user in
             #      writing, such person, organization or entity, will also be exempted
             #      from and not be held liable to the user for any such damages as noted
             #      above as far as the program is concerned.
             #
             #      ---------------COPYING.ipadic-----END------------------------------------
            
              3. Lao Word Break Dictionary Data (laodict.txt)
            
             #      Copyright (c) 2013 International Business Machines Corporation
             #      and others. All Rights Reserved.
             #
             #      Project:    http://code.google.com/p/lao-dictionary/
             #      Dictionary: http://lao-dictionary.googlecode.com/git/Lao-Dictionary.txt
             #      License:    http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICEN
            SE.txt
             #                  (copied below)
             #
             #      This file is derived from the above dictionary, with slight modifications
            .
             #      -------------------------------------------------------------------------
            -------
             #      Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell.
             #      All rights reserved.
             #
             #      Redistribution and use in source and binary forms, with or without modifi
            cation,
             #      are permitted provided that the following conditions are met:
             #
             #              Redistributions of source code must retain the above copyright no
            tice, this
             #              list of conditions and the following disclaimer. Redistributions
            in binary
             #              form must reproduce the above copyright notice, this list of cond
            itions and
             #              the following disclaimer in the documentation and/or other materi
            als
             #              provided with the distribution.
             #
             #      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS I
            S" AND
             #      ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMP
            LIED
             #      WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
             #      DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIA
            BLE FOR
             #      ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DA
            MAGES
             #      (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVIC
            ES;
             #      LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED A
            ND ON
             #      ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
             #      (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
            THIS
             #      SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
             #      -------------------------------------------------------------------------
            -------
            
              4. Burmese Word Break Dictionary Data (burmesedict.txt)
            
             #      Copyright (c) 2014 International Business Machines Corporation
             #      and others. All Rights Reserved.
             #
             #      This list is part of a project hosted at:
             #        github.com/kanyawtech/myanmar-karen-word-lists
             #
             #      -------------------------------------------------------------------------
            -------
             #      Copyright (c) 2013, LeRoy Benjamin Sharon
             #      All rights reserved.
             #
             #      Redistribution and use in source and binary forms, with or without modifi
            cation,
             #      are permitted provided that the following conditions are met:
             #
             #        Redistributions of source code must retain the above copyright notice,
            this
             #        list of conditions and the following disclaimer.
             #
             #        Redistributions in binary form must reproduce the above copyright notic
            e, this
             #        list of conditions and the following disclaimer in the documentation an
            d/or
             #        other materials provided with the distribution.
             #
             #        Neither the name Myanmar Karen Word Lists, nor the names of its
             #        contributors may be used to endorse or promote products derived from
             #        this software without specific prior written permission.
             #
             #      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS I
            S" AND
             #      ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMP
            LIED
             #      WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
             #      DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIA
            BLE FOR
             #      ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DA
            MAGES
             #      (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVIC
            ES;
             #      LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED A
            ND ON
             #      ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
             #      (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
            THIS
             #      SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
             #      -------------------------------------------------------------------------
            -------
            
              5. Time Zone Database
            
               ICU uses the public domain data and code derived from Time Zone Database
               for its time zone support. The ownership of the TZ database is explained
               in BCP 175: Procedure for Maintaining the Time Zone Database section 7.
            
            7.  Database Ownership
            
               The TZ database itself is not an IETF Contribution or an IETF
               document.  Rather it is a pre-existing and regularly updated work
               that is in the public domain, and is intended to remain in the public
               domain.  Therefore, BCPs 78 [RFC5378] and 79 [RFC3979] do not apply
               to the TZ Database or contributions that individuals make to it.
               Should any claims be made and substantiated against the TZ Database,
               the organization that is providing the IANA Considerations defined in
               this RFC, under the memorandum of understanding with the IETF,
               currently ICANN, may act in accordance with all competent court
               orders.  No ownership claims will be made by ICANN or the IETF Trust
               on the database or the code.  Any person making a contribution to the
               database or code waives all rights to future claims in that
               contribution or in the TZ Database.
            
            ISimpleDOM COM interfaces for accessibility show license homepage
            /* ***** BEGIN LICENSE BLOCK *****
             * Version: MPL 1.1/GPL 2.0/LGPL 2.1
             *
             * The contents of this file are subject to the Mozilla Public License Version
             * 1.1 (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.mozilla.org/MPL/
             *
             * Software distributed under the License is distributed on an "AS IS" basis,
             * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
             * for the specific language governing rights and limitations under the
             * License.
             *
             * The Original Code is mozilla.org code.
             *
             * The Initial Developer of the Original Code is
             * Netscape Communications Corporation.
             * Portions created by the Initial Developer are Copyright (C) 2002
             * the Initial Developer. All Rights Reserved.
             *
             * Contributor(s):
             *
             * Alternatively, the contents of this file may be used under the terms of
             * either the GNU General Public License Version 2 or later (the "GPL"), or
             * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
             * in which case the provisions of the GPL or the LGPL are applicable instead
             * of those above. If you wish to allow use of your version of this file only
             * under the terms of either the GPL or the LGPL, and not to allow others to
             * use your version of this file under the terms of the MPL, indicate your
             * decision by deleting the provisions above and replace them with the notice
             * and other provisions required by the GPL or the LGPL. If you do not delete
             * the provisions above, a recipient may use your version of this file under
             * the terms of any one of the MPL, the GPL or the LGPL.
             *
             * ***** END LICENSE BLOCK ***** */
            
            jsoncpp show license homepage
            The JsonCpp library's source code, including accompanying documentation, 
            tests and demonstration applications, are licensed under the following
            conditions...
            
            The author (Baptiste Lepilleur) explicitly disclaims copyright in all 
            jurisdictions which recognize such a disclaimer. In such jurisdictions, 
            this software is released into the Public Domain.
            
            In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
            2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is
            released under the terms of the MIT License (see below).
            
            In jurisdictions which recognize Public Domain property, the user of this 
            software may choose to accept it either as 1) Public Domain, 2) under the 
            conditions of the MIT License (see below), or 3) under the terms of dual 
            Public Domain/MIT License conditions described here, as they choose.
            
            The MIT License is about as close to Public Domain as a license can get, and is
            described in clear, concise terms at:
            
               http://en.wikipedia.org/wiki/MIT_License
               
            The full text of the MIT License follows:
            
            ========================================================================
            Copyright (c) 2007-2010 Baptiste Lepilleur
            
            Permission is hereby granted, free of charge, to any person
            obtaining a copy of this software and associated documentation
            files (the "Software"), to deal in the Software without
            restriction, including without limitation the rights to use, copy,
            modify, merge, publish, distribute, sublicense, and/or sell copies
            of the Software, and to permit persons to whom the Software is
            furnished to do so, subject to the following conditions:
            
            The above copyright notice and this permission notice shall be
            included in all copies or substantial portions of the Software.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
            BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
            ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
            CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
            SOFTWARE.
            ========================================================================
            (END LICENSE TEXT)
            
            The MIT license is compatible with both the GPL and commercial
            software, affording one all of the rights of Public Domain with the
            minor nuisance of being required to keep the above copyright notice
            and license text in the source code. Note also that by accepting the
            Public Domain "license" you can re-license your copy using whatever
            license you like.
            
            google-jstemplate show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright [yyyy] [name of copyright owner]
            
               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.
            
            Khronos header files show license homepage
            Copyright (c) 2007-2010 The Khronos Group Inc.
            
            Permission is hereby granted, free of charge, to any person obtaining a
            copy of this software and/or associated documentation files (the
            "Materials"), to deal in the Materials without restriction, including
            without limitation the rights to use, copy, modify, merge, publish,
            distribute, sublicense, and/or sell copies of the Materials, and to
            permit persons to whom the Materials are furnished to do so, subject to
            the following conditions:
            
            The above copyright notice and this permission notice shall be included
            in all copies or substantial portions of the Materials.
            
            THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
            IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
            CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
            TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
            MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
            
            
            SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
            
            Copyright (C) 1992 Silicon Graphics, Inc. All Rights Reserved.
            
            Permission is hereby granted, free of charge, to any person obtaining a copy of
            this software and associated documentation files (the "Software"), to deal in
            the Software without restriction, including without limitation the rights to
            use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
            of the Software, and to permit persons to whom the Software is furnished to do
            so, subject to the following conditions:
            
            The above copyright notice including the dates of first publication and either
            this permission notice or a reference to http://oss.sgi.com/projects/FreeB/
            shall be included in all copies or substantial portions of the Software. 
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON
            GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
            AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
            
            Except as contained in this notice, the name of Silicon Graphics, Inc. shall
            not be used in advertising or otherwise to promote the sale, use or other
            dealings in this Software without prior written authorization from Silicon
            Graphics, Inc.
            
            launchpad-translations show license homepage
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
              * Redistributions of source code must retain the above copyright
                notice, this list of conditions and the following disclaimer.
            
              * Redistributions in binary form must reproduce the above
                copyright notice, this list of conditions and the following
                disclaimer in the documentation and/or other materials provided
                with the distribution.
            
              * Neither the name of the copyright holders nor the names of its
                contributors may be used to endorse or promote products derived
                from this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            LCOV - the LTP GCOV extension show license homepage
            		    GNU GENERAL PUBLIC LICENSE
            		       Version 2, June 1991
            
             Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
             51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
             Everyone is permitted to copy and distribute verbatim copies
             of this license document, but changing it is not allowed.
            
            			    Preamble
            
              The licenses for most software are designed to take away your
            freedom to share and change it.  By contrast, the GNU General Public
            License is intended to guarantee your freedom to share and change free
            software--to make sure the software is free for all its users.  This
            General Public License applies to most of the Free Software
            Foundation's software and to any other program whose authors commit to
            using it.  (Some other Free Software Foundation software is covered by
            the GNU Lesser General Public License instead.)  You can apply it to
            your programs, too.
            
              When we speak of free software, we are referring to freedom, not
            price.  Our General Public Licenses are designed to make sure that you
            have the freedom to distribute copies of free software (and charge for
            this service if you wish), that you receive source code or can get it
            if you want it, that you can change the software or use pieces of it
            in new free programs; and that you know you can do these things.
            
              To protect your rights, we need to make restrictions that forbid
            anyone to deny you these rights or to ask you to surrender the rights.
            These restrictions translate to certain responsibilities for you if you
            distribute copies of the software, or if you modify it.
            
              For example, if you distribute copies of such a program, whether
            gratis or for a fee, you must give the recipients all the rights that
            you have.  You must make sure that they, too, receive or can get the
            source code.  And you must show them these terms so they know their
            rights.
            
              We protect your rights with two steps: (1) copyright the software, and
            (2) offer you this license which gives you legal permission to copy,
            distribute and/or modify the software.
            
              Also, for each author's protection and ours, we want to make certain
            that everyone understands that there is no warranty for this free
            software.  If the software is modified by someone else and passed on, we
            want its recipients to know that what they have is not the original, so
            that any problems introduced by others will not reflect on the original
            authors' reputations.
            
              Finally, any free program is threatened constantly by software
            patents.  We wish to avoid the danger that redistributors of a free
            program will individually obtain patent licenses, in effect making the
            program proprietary.  To prevent this, we have made it clear that any
            patent must be licensed for everyone's free use or not licensed at all.
            
              The precise terms and conditions for copying, distribution and
            modification follow.
            
            		    GNU GENERAL PUBLIC LICENSE
               TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
            
              0. This License applies to any program or other work which contains
            a notice placed by the copyright holder saying it may be distributed
            under the terms of this General Public License.  The "Program", below,
            refers to any such program or work, and a "work based on the Program"
            means either the Program or any derivative work under copyright law:
            that is to say, a work containing the Program or a portion of it,
            either verbatim or with modifications and/or translated into another
            language.  (Hereinafter, translation is included without limitation in
            the term "modification".)  Each licensee is addressed as "you".
            
            Activities other than copying, distribution and modification are not
            covered by this License; they are outside its scope.  The act of
            running the Program is not restricted, and the output from the Program
            is covered only if its contents constitute a work based on the
            Program (independent of having been made by running the Program).
            Whether that is true depends on what the Program does.
            
              1. You may copy and distribute verbatim copies of the Program's
            source code as you receive it, in any medium, provided that you
            conspicuously and appropriately publish on each copy an appropriate
            copyright notice and disclaimer of warranty; keep intact all the
            notices that refer to this License and to the absence of any warranty;
            and give any other recipients of the Program a copy of this License
            along with the Program.
            
            You may charge a fee for the physical act of transferring a copy, and
            you may at your option offer warranty protection in exchange for a fee.
            
              2. You may modify your copy or copies of the Program or any portion
            of it, thus forming a work based on the Program, and copy and
            distribute such modifications or work under the terms of Section 1
            above, provided that you also meet all of these conditions:
            
                a) You must cause the modified files to carry prominent notices
                stating that you changed the files and the date of any change.
            
                b) You must cause any work that you distribute or publish, that in
                whole or in part contains or is derived from the Program or any
                part thereof, to be licensed as a whole at no charge to all third
                parties under the terms of this License.
            
                c) If the modified program normally reads commands interactively
                when run, you must cause it, when started running for such
                interactive use in the most ordinary way, to print or display an
                announcement including an appropriate copyright notice and a
                notice that there is no warranty (or else, saying that you provide
                a warranty) and that users may redistribute the program under
                these conditions, and telling the user how to view a copy of this
                License.  (Exception: if the Program itself is interactive but
                does not normally print such an announcement, your work based on
                the Program is not required to print an announcement.)
            
            These requirements apply to the modified work as a whole.  If
            identifiable sections of that work are not derived from the Program,
            and can be reasonably considered independent and separate works in
            themselves, then this License, and its terms, do not apply to those
            sections when you distribute them as separate works.  But when you
            distribute the same sections as part of a whole which is a work based
            on the Program, the distribution of the whole must be on the terms of
            this License, whose permissions for other licensees extend to the
            entire whole, and thus to each and every part regardless of who wrote it.
            
            Thus, it is not the intent of this section to claim rights or contest
            your rights to work written entirely by you; rather, the intent is to
            exercise the right to control the distribution of derivative or
            collective works based on the Program.
            
            In addition, mere aggregation of another work not based on the Program
            with the Program (or with a work based on the Program) on a volume of
            a storage or distribution medium does not bring the other work under
            the scope of this License.
            
              3. You may copy and distribute the Program (or a work based on it,
            under Section 2) in object code or executable form under the terms of
            Sections 1 and 2 above provided that you also do one of the following:
            
                a) Accompany it with the complete corresponding machine-readable
                source code, which must be distributed under the terms of Sections
                1 and 2 above on a medium customarily used for software interchange; or,
            
                b) Accompany it with a written offer, valid for at least three
                years, to give any third party, for a charge no more than your
                cost of physically performing source distribution, a complete
                machine-readable copy of the corresponding source code, to be
                distributed under the terms of Sections 1 and 2 above on a medium
                customarily used for software interchange; or,
            
                c) Accompany it with the information you received as to the offer
                to distribute corresponding source code.  (This alternative is
                allowed only for noncommercial distribution and only if you
                received the program in object code or executable form with such
                an offer, in accord with Subsection b above.)
            
            The source code for a work means the preferred form of the work for
            making modifications to it.  For an executable work, complete source
            code means all the source code for all modules it contains, plus any
            associated interface definition files, plus the scripts used to
            control compilation and installation of the executable.  However, as a
            special exception, the source code distributed need not include
            anything that is normally distributed (in either source or binary
            form) with the major components (compiler, kernel, and so on) of the
            operating system on which the executable runs, unless that component
            itself accompanies the executable.
            
            If distribution of executable or object code is made by offering
            access to copy from a designated place, then offering equivalent
            access to copy the source code from the same place counts as
            distribution of the source code, even though third parties are not
            compelled to copy the source along with the object code.
            
              4. You may not copy, modify, sublicense, or distribute the Program
            except as expressly provided under this License.  Any attempt
            otherwise to copy, modify, sublicense or distribute the Program is
            void, and will automatically terminate your rights under this License.
            However, parties who have received copies, or rights, from you under
            this License will not have their licenses terminated so long as such
            parties remain in full compliance.
            
              5. You are not required to accept this License, since you have not
            signed it.  However, nothing else grants you permission to modify or
            distribute the Program or its derivative works.  These actions are
            prohibited by law if you do not accept this License.  Therefore, by
            modifying or distributing the Program (or any work based on the
            Program), you indicate your acceptance of this License to do so, and
            all its terms and conditions for copying, distributing or modifying
            the Program or works based on it.
            
              6. Each time you redistribute the Program (or any work based on the
            Program), the recipient automatically receives a license from the
            original licensor to copy, distribute or modify the Program subject to
            these terms and conditions.  You may not impose any further
            restrictions on the recipients' exercise of the rights granted herein.
            You are not responsible for enforcing compliance by third parties to
            this License.
            
              7. If, as a consequence of a court judgment or allegation of patent
            infringement or for any other reason (not limited to patent issues),
            conditions are imposed on you (whether by court order, agreement or
            otherwise) that contradict the conditions of this License, they do not
            excuse you from the conditions of this License.  If you cannot
            distribute so as to satisfy simultaneously your obligations under this
            License and any other pertinent obligations, then as a consequence you
            may not distribute the Program at all.  For example, if a patent
            license would not permit royalty-free redistribution of the Program by
            all those who receive copies directly or indirectly through you, then
            the only way you could satisfy both it and this License would be to
            refrain entirely from distribution of the Program.
            
            If any portion of this section is held invalid or unenforceable under
            any particular circumstance, the balance of the section is intended to
            apply and the section as a whole is intended to apply in other
            circumstances.
            
            It is not the purpose of this section to induce you to infringe any
            patents or other property right claims or to contest validity of any
            such claims; this section has the sole purpose of protecting the
            integrity of the free software distribution system, which is
            implemented by public license practices.  Many people have made
            generous contributions to the wide range of software distributed
            through that system in reliance on consistent application of that
            system; it is up to the author/donor to decide if he or she is willing
            to distribute software through any other system and a licensee cannot
            impose that choice.
            
            This section is intended to make thoroughly clear what is believed to
            be a consequence of the rest of this License.
            
              8. If the distribution and/or use of the Program is restricted in
            certain countries either by patents or by copyrighted interfaces, the
            original copyright holder who places the Program under this License
            may add an explicit geographical distribution limitation excluding
            those countries, so that distribution is permitted only in or among
            countries not thus excluded.  In such case, this License incorporates
            the limitation as if written in the body of this License.
            
              9. The Free Software Foundation may publish revised and/or new versions
            of the General Public License from time to time.  Such new versions will
            be similar in spirit to the present version, but may differ in detail to
            address new problems or concerns.
            
            Each version is given a distinguishing version number.  If the Program
            specifies a version number of this License which applies to it and "any
            later version", you have the option of following the terms and conditions
            either of that version or of any later version published by the Free
            Software Foundation.  If the Program does not specify a version number of
            this License, you may choose any version ever published by the Free Software
            Foundation.
            
              10. If you wish to incorporate parts of the Program into other free
            programs whose distribution conditions are different, write to the author
            to ask for permission.  For software which is copyrighted by the Free
            Software Foundation, write to the Free Software Foundation; we sometimes
            make exceptions for this.  Our decision will be guided by the two goals
            of preserving the free status of all derivatives of our free software and
            of promoting the sharing and reuse of software generally.
            
            			    NO WARRANTY
            
              11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
            FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
            OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
            PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
            OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
            MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
            TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
            PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
            REPAIR OR CORRECTION.
            
              12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
            WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
            REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
            INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
            OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
            TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
            YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
            PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
            POSSIBILITY OF SUCH DAMAGES.
            
            		     END OF TERMS AND CONDITIONS
            
            	    How to Apply These Terms to Your New Programs
            
              If you develop a new program, and you want it to be of the greatest
            possible use to the public, the best way to achieve this is to make it
            free software which everyone can redistribute and change under these terms.
            
              To do so, attach the following notices to the program.  It is safest
            to attach them to the start of each source file to most effectively
            convey the exclusion of warranty; and each file should have at least
            the "copyright" line and a pointer to where the full notice is found.
            
                <one line to give the program's name and a brief idea of what it does.>
                Copyright (C) <year>  <name of author>
            
                This program is free software; you can redistribute it and/or modify
                it under the terms of the GNU General Public License as published by
                the Free Software Foundation; either version 2 of the License, or
                (at your option) any later version.
            
                This program is distributed in the hope that it will be useful,
                but WITHOUT ANY WARRANTY; without even the implied warranty of
                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                GNU General Public License for more details.
            
                You should have received a copy of the GNU General Public License along
                with this program; if not, write to the Free Software Foundation, Inc.,
                51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
            
            Also add information on how to contact you by electronic and paper mail.
            
            If the program is interactive, make it output a short notice like this
            when it starts in an interactive mode:
            
                Gnomovision version 69, Copyright (C) year name of author
                Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
                This is free software, and you are welcome to redistribute it
                under certain conditions; type `show c' for details.
            
            The hypothetical commands `show w' and `show c' should show the appropriate
            parts of the General Public License.  Of course, the commands you use may
            be called something other than `show w' and `show c'; they could even be
            mouse-clicks or menu items--whatever suits your program.
            
            You should also get your employer (if you work as a programmer) or your
            school, if any, to sign a "copyright disclaimer" for the program, if
            necessary.  Here is a sample; alter the names:
            
              Yoyodyne, Inc., hereby disclaims all copyright interest in the program
              `Gnomovision' (which makes passes at compilers) written by James Hacker.
            
              <signature of Ty Coon>, 1 April 1989
              Ty Coon, President of Vice
            
            This General Public License does not permit incorporating your program into
            proprietary programs.  If your program is a subroutine library, you may
            consider it more useful to permit linking proprietary applications with the
            library.  If this is what you want to do, use the GNU Lesser General
            Public License instead of this License.
            
            LevelDB: A Fast Persistent Key-Value Store show license homepage
            Copyright (c) 2011 The LevelDB Authors. All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
               * Redistributions of source code must retain the above copyright
            notice, this list of conditions and the following disclaimer.
               * Redistributions in binary form must reproduce the above
            copyright notice, this list of conditions and the following disclaimer
            in the documentation and/or other materials provided with the
            distribution.
               * Neither the name of Google Inc. nor the names of its
            contributors may be used to endorse or promote products derived from
            this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            NVidia Control X Extension Library show license homepage
            /*
             * Copyright (c) 2008 NVIDIA, Corporation
             *
             * Permission is hereby granted, free of charge, to any person obtaining a copy
             * of this software and associated documentation files (the "Software"), to deal
             * in the Software without restriction, including without limitation the rights
             * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
             * copies of the Software, and to permit persons to whom the Software is
             * furnished to do so, subject to the following conditions:
             *
             * The above copyright notice and this permission notice (including the next
             * paragraph) shall be included in all copies or substantial portions of the
             * Software.
             *
             * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
             * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
             * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
             * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
             * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
             * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
             * SOFTWARE.
             */
            The library to input, validate, and display addresses. show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright [yyyy] [name of copyright owner]
            
               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.
            
            libevent show license homepage
            Copyright 2000-2007 Niels Provos <provos@citi.umich.edu>
            Copyright 2007-2009 Niels Provos and Nick Mathewson
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions
            are met:
            1. Redistributions of source code must retain the above copyright
               notice, this list of conditions and the following disclaimer.
            2. Redistributions in binary form must reproduce the above copyright
               notice, this list of conditions and the following disclaimer in the
               documentation and/or other materials provided with the distribution.
            3. The name of the author may not be used to endorse or promote products
               derived from this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
            IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
            OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
            IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
            INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
            NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
            THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            libexif show license homepage
            		  GNU LESSER GENERAL PUBLIC LICENSE
            		       Version 2.1, February 1999
            
             Copyright (C) 1991, 1999 Free Software Foundation, Inc.
             51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
             Everyone is permitted to copy and distribute verbatim copies
             of this license document, but changing it is not allowed.
            
            [This is the first released version of the Lesser GPL.  It also counts
             as the successor of the GNU Library Public License, version 2, hence
             the version number 2.1.]
            
            			    Preamble
            
              The licenses for most software are designed to take away your
            freedom to share and change it.  By contrast, the GNU General Public
            Licenses are intended to guarantee your freedom to share and change
            free software--to make sure the software is free for all its users.
            
              This license, the Lesser General Public License, applies to some
            specially designated software packages--typically libraries--of the
            Free Software Foundation and other authors who decide to use it.  You
            can use it too, but we suggest you first think carefully about whether
            this license or the ordinary General Public License is the better
            strategy to use in any particular case, based on the explanations below.
            
              When we speak of free software, we are referring to freedom of use,
            not price.  Our General Public Licenses are designed to make sure that
            you have the freedom to distribute copies of free software (and charge
            for this service if you wish); that you receive source code or can get
            it if you want it; that you can change the software and use pieces of
            it in new free programs; and that you are informed that you can do
            these things.
            
              To protect your rights, we need to make restrictions that forbid
            distributors to deny you these rights or to ask you to surrender these
            rights.  These restrictions translate to certain responsibilities for
            you if you distribute copies of the library or if you modify it.
            
              For example, if you distribute copies of the library, whether gratis
            or for a fee, you must give the recipients all the rights that we gave
            you.  You must make sure that they, too, receive or can get the source
            code.  If you link other code with the library, you must provide
            complete object files to the recipients, so that they can relink them
            with the library after making changes to the library and recompiling
            it.  And you must show them these terms so they know their rights.
            
              We protect your rights with a two-step method: (1) we copyright the
            library, and (2) we offer you this license, which gives you legal
            permission to copy, distribute and/or modify the library.
            
              To protect each distributor, we want to make it very clear that
            there is no warranty for the free library.  Also, if the library is
            modified by someone else and passed on, the recipients should know
            that what they have is not the original version, so that the original
            author's reputation will not be affected by problems that might be
            introduced by others.
            
              Finally, software patents pose a constant threat to the existence of
            any free program.  We wish to make sure that a company cannot
            effectively restrict the users of a free program by obtaining a
            restrictive license from a patent holder.  Therefore, we insist that
            any patent license obtained for a version of the library must be
            consistent with the full freedom of use specified in this license.
            
              Most GNU software, including some libraries, is covered by the
            ordinary GNU General Public License.  This license, the GNU Lesser
            General Public License, applies to certain designated libraries, and
            is quite different from the ordinary General Public License.  We use
            this license for certain libraries in order to permit linking those
            libraries into non-free programs.
            
              When a program is linked with a library, whether statically or using
            a shared library, the combination of the two is legally speaking a
            combined work, a derivative of the original library.  The ordinary
            General Public License therefore permits such linking only if the
            entire combination fits its criteria of freedom.  The Lesser General
            Public License permits more lax criteria for linking other code with
            the library.
            
              We call this license the "Lesser" General Public License because it
            does Less to protect the user's freedom than the ordinary General
            Public License.  It also provides other free software developers Less
            of an advantage over competing non-free programs.  These disadvantages
            are the reason we use the ordinary General Public License for many
            libraries.  However, the Lesser license provides advantages in certain
            special circumstances.
            
              For example, on rare occasions, there may be a special need to
            encourage the widest possible use of a certain library, so that it becomes
            a de-facto standard.  To achieve this, non-free programs must be
            allowed to use the library.  A more frequent case is that a free
            library does the same job as widely used non-free libraries.  In this
            case, there is little to gain by limiting the free library to free
            software only, so we use the Lesser General Public License.
            
              In other cases, permission to use a particular library in non-free
            programs enables a greater number of people to use a large body of
            free software.  For example, permission to use the GNU C Library in
            non-free programs enables many more people to use the whole GNU
            operating system, as well as its variant, the GNU/Linux operating
            system.
            
              Although the Lesser General Public License is Less protective of the
            users' freedom, it does ensure that the user of a program that is
            linked with the Library has the freedom and the wherewithal to run
            that program using a modified version of the Library.
            
              The precise terms and conditions for copying, distribution and
            modification follow.  Pay close attention to the difference between a
            "work based on the library" and a "work that uses the library".  The
            former contains code derived from the library, whereas the latter must
            be combined with the library in order to run.
            
            		  GNU LESSER GENERAL PUBLIC LICENSE
               TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
            
              0. This License Agreement applies to any software library or other
            program which contains a notice placed by the copyright holder or
            other authorized party saying it may be distributed under the terms of
            this Lesser General Public License (also called "this License").
            Each licensee is addressed as "you".
            
              A "library" means a collection of software functions and/or data
            prepared so as to be conveniently linked with application programs
            (which use some of those functions and data) to form executables.
            
              The "Library", below, refers to any such software library or work
            which has been distributed under these terms.  A "work based on the
            Library" means either the Library or any derivative work under
            copyright law: that is to say, a work containing the Library or a
            portion of it, either verbatim or with modifications and/or translated
            straightforwardly into another language.  (Hereinafter, translation is
            included without limitation in the term "modification".)
            
              "Source code" for a work means the preferred form of the work for
            making modifications to it.  For a library, complete source code means
            all the source code for all modules it contains, plus any associated
            interface definition files, plus the scripts used to control compilation
            and installation of the library.
            
              Activities other than copying, distribution and modification are not
            covered by this License; they are outside its scope.  The act of
            running a program using the Library is not restricted, and output from
            such a program is covered only if its contents constitute a work based
            on the Library (independent of the use of the Library in a tool for
            writing it).  Whether that is true depends on what the Library does
            and what the program that uses the Library does.
            
              1. You may copy and distribute verbatim copies of the Library's
            complete source code as you receive it, in any medium, provided that
            you conspicuously and appropriately publish on each copy an
            appropriate copyright notice and disclaimer of warranty; keep intact
            all the notices that refer to this License and to the absence of any
            warranty; and distribute a copy of this License along with the
            Library.
            
              You may charge a fee for the physical act of transferring a copy,
            and you may at your option offer warranty protection in exchange for a
            fee.
            
              2. You may modify your copy or copies of the Library or any portion
            of it, thus forming a work based on the Library, and copy and
            distribute such modifications or work under the terms of Section 1
            above, provided that you also meet all of these conditions:
            
                a) The modified work must itself be a software library.
            
                b) You must cause the files modified to carry prominent notices
                stating that you changed the files and the date of any change.
            
                c) You must cause the whole of the work to be licensed at no
                charge to all third parties under the terms of this License.
            
                d) If a facility in the modified Library refers to a function or a
                table of data to be supplied by an application program that uses
                the facility, other than as an argument passed when the facility
                is invoked, then you must make a good faith effort to ensure that,
                in the event an application does not supply such function or
                table, the facility still operates, and performs whatever part of
                its purpose remains meaningful.
            
                (For example, a function in a library to compute square roots has
                a purpose that is entirely well-defined independent of the
                application.  Therefore, Subsection 2d requires that any
                application-supplied function or table used by this function must
                be optional: if the application does not supply it, the square
                root function must still compute square roots.)
            
            These requirements apply to the modified work as a whole.  If
            identifiable sections of that work are not derived from the Library,
            and can be reasonably considered independent and separate works in
            themselves, then this License, and its terms, do not apply to those
            sections when you distribute them as separate works.  But when you
            distribute the same sections as part of a whole which is a work based
            on the Library, the distribution of the whole must be on the terms of
            this License, whose permissions for other licensees extend to the
            entire whole, and thus to each and every part regardless of who wrote
            it.
            
            Thus, it is not the intent of this section to claim rights or contest
            your rights to work written entirely by you; rather, the intent is to
            exercise the right to control the distribution of derivative or
            collective works based on the Library.
            
            In addition, mere aggregation of another work not based on the Library
            with the Library (or with a work based on the Library) on a volume of
            a storage or distribution medium does not bring the other work under
            the scope of this License.
            
              3. You may opt to apply the terms of the ordinary GNU General Public
            License instead of this License to a given copy of the Library.  To do
            this, you must alter all the notices that refer to this License, so
            that they refer to the ordinary GNU General Public License, version 2,
            instead of to this License.  (If a newer version than version 2 of the
            ordinary GNU General Public License has appeared, then you can specify
            that version instead if you wish.)  Do not make any other change in
            these notices.
            
              Once this change is made in a given copy, it is irreversible for
            that copy, so the ordinary GNU General Public License applies to all
            subsequent copies and derivative works made from that copy.
            
              This option is useful when you wish to copy part of the code of
            the Library into a program that is not a library.
            
              4. You may copy and distribute the Library (or a portion or
            derivative of it, under Section 2) in object code or executable form
            under the terms of Sections 1 and 2 above provided that you accompany
            it with the complete corresponding machine-readable source code, which
            must be distributed under the terms of Sections 1 and 2 above on a
            medium customarily used for software interchange.
            
              If distribution of object code is made by offering access to copy
            from a designated place, then offering equivalent access to copy the
            source code from the same place satisfies the requirement to
            distribute the source code, even though third parties are not
            compelled to copy the source along with the object code.
            
              5. A program that contains no derivative of any portion of the
            Library, but is designed to work with the Library by being compiled or
            linked with it, is called a "work that uses the Library".  Such a
            work, in isolation, is not a derivative work of the Library, and
            therefore falls outside the scope of this License.
            
              However, linking a "work that uses the Library" with the Library
            creates an executable that is a derivative of the Library (because it
            contains portions of the Library), rather than a "work that uses the
            library".  The executable is therefore covered by this License.
            Section 6 states terms for distribution of such executables.
            
              When a "work that uses the Library" uses material from a header file
            that is part of the Library, the object code for the work may be a
            derivative work of the Library even though the source code is not.
            Whether this is true is especially significant if the work can be
            linked without the Library, or if the work is itself a library.  The
            threshold for this to be true is not precisely defined by law.
            
              If such an object file uses only numerical parameters, data
            structure layouts and accessors, and small macros and small inline
            functions (ten lines or less in length), then the use of the object
            file is unrestricted, regardless of whether it is legally a derivative
            work.  (Executables containing this object code plus portions of the
            Library will still fall under Section 6.)
            
              Otherwise, if the work is a derivative of the Library, you may
            distribute the object code for the work under the terms of Section 6.
            Any executables containing that work also fall under Section 6,
            whether or not they are linked directly with the Library itself.
            
              6. As an exception to the Sections above, you may also combine or
            link a "work that uses the Library" with the Library to produce a
            work containing portions of the Library, and distribute that work
            under terms of your choice, provided that the terms permit
            modification of the work for the customer's own use and reverse
            engineering for debugging such modifications.
            
              You must give prominent notice with each copy of the work that the
            Library is used in it and that the Library and its use are covered by
            this License.  You must supply a copy of this License.  If the work
            during execution displays copyright notices, you must include the
            copyright notice for the Library among them, as well as a reference
            directing the user to the copy of this License.  Also, you must do one
            of these things:
            
                a) Accompany the work with the complete corresponding
                machine-readable source code for the Library including whatever
                changes were used in the work (which must be distributed under
                Sections 1 and 2 above); and, if the work is an executable linked
                with the Library, with the complete machine-readable "work that
                uses the Library", as object code and/or source code, so that the
                user can modify the Library and then relink to produce a modified
                executable containing the modified Library.  (It is understood
                that the user who changes the contents of definitions files in the
                Library will not necessarily be able to recompile the application
                to use the modified definitions.)
            
                b) Use a suitable shared library mechanism for linking with the
                Library.  A suitable mechanism is one that (1) uses at run time a
                copy of the library already present on the user's computer system,
                rather than copying library functions into the executable, and (2)
                will operate properly with a modified version of the library, if
                the user installs one, as long as the modified version is
                interface-compatible with the version that the work was made with.
            
                c) Accompany the work with a written offer, valid for at
                least three years, to give the same user the materials
                specified in Subsection 6a, above, for a charge no more
                than the cost of performing this distribution.
            
                d) If distribution of the work is made by offering access to copy
                from a designated place, offer equivalent access to copy the above
                specified materials from the same place.
            
                e) Verify that the user has already received a copy of these
                materials or that you have already sent this user a copy.
            
              For an executable, the required form of the "work that uses the
            Library" must include any data and utility programs needed for
            reproducing the executable from it.  However, as a special exception,
            the materials to be distributed need not include anything that is
            normally distributed (in either source or binary form) with the major
            components (compiler, kernel, and so on) of the operating system on
            which the executable runs, unless that component itself accompanies
            the executable.
            
              It may happen that this requirement contradicts the license
            restrictions of other proprietary libraries that do not normally
            accompany the operating system.  Such a contradiction means you cannot
            use both them and the Library together in an executable that you
            distribute.
            
              7. You may place library facilities that are a work based on the
            Library side-by-side in a single library together with other library
            facilities not covered by this License, and distribute such a combined
            library, provided that the separate distribution of the work based on
            the Library and of the other library facilities is otherwise
            permitted, and provided that you do these two things:
            
                a) Accompany the combined library with a copy of the same work
                based on the Library, uncombined with any other library
                facilities.  This must be distributed under the terms of the
                Sections above.
            
                b) Give prominent notice with the combined library of the fact
                that part of it is a work based on the Library, and explaining
                where to find the accompanying uncombined form of the same work.
            
              8. You may not copy, modify, sublicense, link with, or distribute
            the Library except as expressly provided under this License.  Any
            attempt otherwise to copy, modify, sublicense, link with, or
            distribute the Library is void, and will automatically terminate your
            rights under this License.  However, parties who have received copies,
            or rights, from you under this License will not have their licenses
            terminated so long as such parties remain in full compliance.
            
              9. You are not required to accept this License, since you have not
            signed it.  However, nothing else grants you permission to modify or
            distribute the Library or its derivative works.  These actions are
            prohibited by law if you do not accept this License.  Therefore, by
            modifying or distributing the Library (or any work based on the
            Library), you indicate your acceptance of this License to do so, and
            all its terms and conditions for copying, distributing or modifying
            the Library or works based on it.
            
              10. Each time you redistribute the Library (or any work based on the
            Library), the recipient automatically receives a license from the
            original licensor to copy, distribute, link with or modify the Library
            subject to these terms and conditions.  You may not impose any further
            restrictions on the recipients' exercise of the rights granted herein.
            You are not responsible for enforcing compliance by third parties with
            this License.
            
              11. If, as a consequence of a court judgment or allegation of patent
            infringement or for any other reason (not limited to patent issues),
            conditions are imposed on you (whether by court order, agreement or
            otherwise) that contradict the conditions of this License, they do not
            excuse you from the conditions of this License.  If you cannot
            distribute so as to satisfy simultaneously your obligations under this
            License and any other pertinent obligations, then as a consequence you
            may not distribute the Library at all.  For example, if a patent
            license would not permit royalty-free redistribution of the Library by
            all those who receive copies directly or indirectly through you, then
            the only way you could satisfy both it and this License would be to
            refrain entirely from distribution of the Library.
            
            If any portion of this section is held invalid or unenforceable under any
            particular circumstance, the balance of the section is intended to apply,
            and the section as a whole is intended to apply in other circumstances.
            
            It is not the purpose of this section to induce you to infringe any
            patents or other property right claims or to contest validity of any
            such claims; this section has the sole purpose of protecting the
            integrity of the free software distribution system which is
            implemented by public license practices.  Many people have made
            generous contributions to the wide range of software distributed
            through that system in reliance on consistent application of that
            system; it is up to the author/donor to decide if he or she is willing
            to distribute software through any other system and a licensee cannot
            impose that choice.
            
            This section is intended to make thoroughly clear what is believed to
            be a consequence of the rest of this License.
            
              12. If the distribution and/or use of the Library is restricted in
            certain countries either by patents or by copyrighted interfaces, the
            original copyright holder who places the Library under this License may add
            an explicit geographical distribution limitation excluding those countries,
            so that distribution is permitted only in or among countries not thus
            excluded.  In such case, this License incorporates the limitation as if
            written in the body of this License.
            
              13. The Free Software Foundation may publish revised and/or new
            versions of the Lesser General Public License from time to time.
            Such new versions will be similar in spirit to the present version,
            but may differ in detail to address new problems or concerns.
            
            Each version is given a distinguishing version number.  If the Library
            specifies a version number of this License which applies to it and
            "any later version", you have the option of following the terms and
            conditions either of that version or of any later version published by
            the Free Software Foundation.  If the Library does not specify a
            license version number, you may choose any version ever published by
            the Free Software Foundation.
            
              14. If you wish to incorporate parts of the Library into other free
            programs whose distribution conditions are incompatible with these,
            write to the author to ask for permission.  For software which is
            copyrighted by the Free Software Foundation, write to the Free
            Software Foundation; we sometimes make exceptions for this.  Our
            decision will be guided by the two goals of preserving the free status
            of all derivatives of our free software and of promoting the sharing
            and reuse of software generally.
            
            			    NO WARRANTY
            
              15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
            WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
            EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
            OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
            KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
            PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
            LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
            THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
            
              16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
            WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
            AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
            FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
            CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
            LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
            RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
            FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
            SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
            DAMAGES.
            
            		     END OF TERMS AND CONDITIONS
            
                       How to Apply These Terms to Your New Libraries
            
              If you develop a new library, and you want it to be of the greatest
            possible use to the public, we recommend making it free software that
            everyone can redistribute and change.  You can do so by permitting
            redistribution under these terms (or, alternatively, under the terms of the
            ordinary General Public License).
            
              To apply these terms, attach the following notices to the library.  It is
            safest to attach them to the start of each source file to most effectively
            convey the exclusion of warranty; and each file should have at least the
            "copyright" line and a pointer to where the full notice is found.
            
                <one line to give the library's name and a brief idea of what it does.>
                Copyright (C) <year>  <name of author>
            
                This library is free software; you can redistribute it and/or
                modify it under the terms of the GNU Lesser General Public
                License as published by the Free Software Foundation; either
                version 2.1 of the License, or (at your option) any later version.
            
                This library is distributed in the hope that it will be useful,
                but WITHOUT ANY WARRANTY; without even the implied warranty of
                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
                Lesser General Public License for more details.
            
                You should have received a copy of the GNU Lesser General Public
                License along with this library; if not, write to the Free Software
                Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
            
            Also add information on how to contact you by electronic and paper mail.
            
            You should also get your employer (if you work as a programmer) or your
            school, if any, to sign a "copyright disclaimer" for the library, if
            necessary.  Here is a sample; alter the names:
            
              Yoyodyne, Inc., hereby disclaims all copyright interest in the
              library `Frob' (a library for tweaking knobs) written by James Random Hacker.
            
              <signature of Ty Coon>, 1 April 1990
              Ty Coon, President of Vice
            
            That's all there is to it!
            
            
            
            libjingle show license homepage
            Copyright (c) 2013, Google Inc.
            All rights reserved.
            
            Redistribution and use in source and binary forms, with or without modification,
            are permitted provided that the following conditions are met:
            
                * Redistributions of source code must retain the above copyright notice,
                  this list of conditions and the following disclaimer.
                * Redistributions in binary form must reproduce the above copyright notice,
                  this list of conditions and the following disclaimer in the documentation
                  and/or other materials provided with the distribution.
                * The name of the author may not be used to endorse or promote products
                  derived from this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
            AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
            ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
            LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
            CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
            GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
            HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
            STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
            WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
            SUCH DAMAGE.
            libjpeg show license homepage
            (Copied from the README.)
            
            --------------------------------------------------------------------------------
            
            The authors make NO WARRANTY or representation, either express or implied,
            with respect to this software, its quality, accuracy, merchantability, or
            fitness for a particular purpose.  This software is provided "AS IS", and you,
            its user, assume the entire risk as to its quality and accuracy.
            
            This software is copyright (C) 1991-1998, Thomas G. Lane.
            All Rights Reserved except as specified below.
            
            Permission is hereby granted to use, copy, modify, and distribute this
            software (or portions thereof) for any purpose, without fee, subject to these
            conditions:
            (1) If any part of the source code for this software is distributed, then this
            README file must be included, with this copyright and no-warranty notice
            unaltered; and any additions, deletions, or changes to the original files
            must be clearly indicated in accompanying documentation.
            (2) If only executable code is distributed, then the accompanying
            documentation must state that "this software is based in part on the work of
            the Independent JPEG Group".
            (3) Permission for use of this software is granted only if the user accepts
            full responsibility for any undesirable consequences; the authors accept
            NO LIABILITY for damages of any kind.
            
            These conditions apply to any software derived from or based on the IJG code,
            not just to the unmodified library.  If you use our work, you ought to
            acknowledge us.
            
            Permission is NOT granted for the use of any IJG author's name or company name
            in advertising or publicity relating to this software or products derived from
            it.  This software may be referred to only as "the Independent JPEG Group's
            software".
            
            We specifically permit and encourage the use of this software as the basis of
            commercial products, provided that all warranty or liability claims are
            assumed by the product vendor.
            
            
            ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
            sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
            ansi2knr.c is NOT covered by the above copyright and conditions, but instead
            by the usual distribution terms of the Free Software Foundation; principally,
            that you must include source code if you redistribute it.  (See the file
            ansi2knr.c for full details.)  However, since ansi2knr.c is not needed as part
            of any program generated from the IJG code, this does not limit you more than
            the foregoing paragraphs do.
            
            The Unix configuration script "configure" was produced with GNU Autoconf.
            It is copyright by the Free Software Foundation but is freely distributable.
            The same holds for its supporting scripts (config.guess, config.sub,
            ltconfig, ltmain.sh).  Another support script, install-sh, is copyright
            by M.I.T. but is also freely distributable.
            
            It appears that the arithmetic coding option of the JPEG spec is covered by
            patents owned by IBM, AT&T, and Mitsubishi.  Hence arithmetic coding cannot
            legally be used without obtaining one or more licenses.  For this reason,
            support for arithmetic coding has been removed from the free JPEG software.
            (Since arithmetic coding provides only a marginal gain over the unpatented
            Huffman mode, it is unlikely that very many implementations will support it.)
            So far as we are aware, there are no patent restrictions on the remaining
            code.
            
            The IJG distribution formerly included code to read and write GIF files.
            To avoid entanglement with the Unisys LZW patent, GIF reading support has
            been removed altogether, and the GIF writer has been simplified to produce
            "uncompressed GIFs".  This technique does not use the LZW algorithm; the
            resulting GIF files are larger than usual, but are readable by all standard
            GIF decoders.
            
            We are required to state that
                "The Graphics Interchange Format(c) is the Copyright property of
                CompuServe Incorporated.  GIF(sm) is a Service Mark property of
                CompuServe Incorporated."
            
            libjpeg-turbo show license homepage
            libjpeg-turbo is licensed under a non-restrictive, BSD-style license
            (see README.)  The TurboJPEG/OSS wrapper (both C and Java versions) and
            associated test programs bear a similar license, which is reproduced below:
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are met:
            
            - Redistributions of source code must retain the above copyright notice,
              this list of conditions and the following disclaimer.
            - Redistributions in binary form must reproduce the above copyright notice,
              this list of conditions and the following disclaimer in the documentation
              and/or other materials provided with the distribution.
            - Neither the name of the libjpeg-turbo Project nor the names of its
              contributors may be used to endorse or promote products derived from this
              software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS",
            AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
            ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
            LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
            CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
            SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
            INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
            CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
            ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
            POSSIBILITY OF SUCH DAMAGE.
            
            Braille Translation Library show license homepage
            (Copied from src/liblouis/liblouis.h.in)
            
            /* liblouis Braille Translation and Back-Translation Library
            
               Based on the Linux screenreader BRLTTY, copyright (C) 1999-2006 by
               The BRLTTY Team
            
               Copyright (C) 2004, 2005, 2006, 2009 ViewPlus Technologies, Inc.
               www.viewplus.com and JJB Software, Inc. www.jjb-software.com
            
               liblouis is free software: you can redistribute it and/or modify it
               under the terms of the GNU Lesser General Public License as
               published by the Free Software Foundation, either version 3 of the
               License, or (at your option) any later version.
            
               liblouis is distributed in the hope that it will be useful, but
               WITHOUT ANY WARRANTY; without even the implied warranty of
               MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
               Lesser General Public License for more details.
            
               You should have received a copy of the GNU Lesser General Public
               License along with this program. If not, see
               <http://www.gnu.org/licenses/>.
            
               Maintained by John J. Boyer john.boyer@abilitiessoft.com
               */
            
            
            International Phone Number Library show license homepage
            Copyright (C) 2011 Google Inc.
            
            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.
            
            libpng show license homepage
            This copy of the libpng notices is provided for your convenience.  In case of
            any discrepancy between this copy and the notices in the file png.h that is
            included in the libpng distribution, the latter shall prevail.
            
            COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
            
            If you modify libpng you may insert additional notices immediately following
            this sentence.
            
            This code is released under the libpng license.
            
            libpng versions 1.2.6, August 15, 2004, through 1.2.45, July 7, 2011, are
            Copyright (c) 2004, 2006-2009 Glenn Randers-Pehrson, and are
            distributed according to the same disclaimer and license as libpng-1.2.5
            with the following individual added to the list of Contributing Authors
            
               Cosmin Truta
            
            libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are
            Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
            distributed according to the same disclaimer and license as libpng-1.0.6
            with the following individuals added to the list of Contributing Authors
            
               Simon-Pierre Cadieux
               Eric S. Raymond
               Gilles Vollant
            
            and with the following additions to the disclaimer:
            
               There is no warranty against interference with your enjoyment of the
               library or against infringement.  There is no warranty that our
               efforts or the library will fulfill any of your particular purposes
               or needs.  This library is provided with all faults, and the entire
               risk of satisfactory quality, performance, accuracy, and effort is with
               the user.
            
            libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
            Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are
            distributed according to the same disclaimer and license as libpng-0.96,
            with the following individuals added to the list of Contributing Authors:
            
               Tom Lane
               Glenn Randers-Pehrson
               Willem van Schaik
            
            libpng versions 0.89, June 1996, through 0.96, May 1997, are
            Copyright (c) 1996, 1997 Andreas Dilger
            Distributed according to the same disclaimer and license as libpng-0.88,
            with the following individuals added to the list of Contributing Authors:
            
               John Bowler
               Kevin Bracey
               Sam Bushell
               Magnus Holmgren
               Greg Roelofs
               Tom Tanner
            
            libpng versions 0.5, May 1995, through 0.88, January 1996, are
            Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
            
            For the purposes of this copyright and license, "Contributing Authors"
            is defined as the following set of individuals:
            
               Andreas Dilger
               Dave Martindale
               Guy Eric Schalnat
               Paul Schmidt
               Tim Wegner
            
            The PNG Reference Library is supplied "AS IS".  The Contributing Authors
            and Group 42, Inc. disclaim all warranties, expressed or implied,
            including, without limitation, the warranties of merchantability and of
            fitness for any purpose.  The Contributing Authors and Group 42, Inc.
            assume no liability for direct, indirect, incidental, special, exemplary,
            or consequential damages, which may result from the use of the PNG
            Reference Library, even if advised of the possibility of such damage.
            
            Permission is hereby granted to use, copy, modify, and distribute this
            source code, or portions hereof, for any purpose, without fee, subject
            to the following restrictions:
            
            1. The origin of this source code must not be misrepresented.
            
            2. Altered versions must be plainly marked as such and must not
               be misrepresented as being the original source.
            
            3. This Copyright notice may not be removed or altered from any
               source or altered source distribution.
            
            The Contributing Authors and Group 42, Inc. specifically permit, without
            fee, and encourage the use of this source code as a component to
            supporting the PNG file format in commercial products.  If you use this
            source code in a product, acknowledgment is not required but would be
            appreciated.
            
            
            A "png_get_copyright" function is available, for convenient use in "about"
            boxes and the like:
            
               printf("%s",png_get_copyright(NULL));
            
            Also, the PNG logo (in PNG format, of course) is supplied in the
            files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
            
            Libpng is OSI Certified Open Source Software.  OSI Certified Open Source is a
            certification mark of the Open Source Initiative.
            
            Glenn Randers-Pehrson
            glennrp at users.sourceforge.net
            July 7, 2011
            
            libsecret show license homepage
                              GNU LESSER GENERAL PUBLIC LICENSE
                                   Version 2.1, February 1999
            
             Copyright (C) 1991, 1999 Free Software Foundation, Inc.
             51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
             Everyone is permitted to copy and distribute verbatim copies
             of this license document, but changing it is not allowed.
            
            [This is the first released version of the Lesser GPL.  It also counts
             as the successor of the GNU Library Public License, version 2, hence
             the version number 2.1.]
            
                                        Preamble
            
              The licenses for most software are designed to take away your
            freedom to share and change it.  By contrast, the GNU General Public
            Licenses are intended to guarantee your freedom to share and change
            free software--to make sure the software is free for all its users.
            
              This license, the Lesser General Public License, applies to some
            specially designated software packages--typically libraries--of the
            Free Software Foundation and other authors who decide to use it.  You
            can use it too, but we suggest you first think carefully about whether
            this license or the ordinary General Public License is the better
            strategy to use in any particular case, based on the explanations below.
            
              When we speak of free software, we are referring to freedom of use,
            not price.  Our General Public Licenses are designed to make sure that
            you have the freedom to distribute copies of free software (and charge
            for this service if you wish); that you receive source code or can get
            it if you want it; that you can change the software and use pieces of
            it in new free programs; and that you are informed that you can do
            these things.
            
              To protect your rights, we need to make restrictions that forbid
            distributors to deny you these rights or to ask you to surrender these
            rights.  These restrictions translate to certain responsibilities for
            you if you distribute copies of the library or if you modify it.
            
              For example, if you distribute copies of the library, whether gratis
            or for a fee, you must give the recipients all the rights that we gave
            you.  You must make sure that they, too, receive or can get the source
            code.  If you link other code with the library, you must provide
            complete object files to the recipients, so that they can relink them
            with the library after making changes to the library and recompiling
            it.  And you must show them these terms so they know their rights.
            
              We protect your rights with a two-step method: (1) we copyright the
            library, and (2) we offer you this license, which gives you legal
            permission to copy, distribute and/or modify the library.
            
              To protect each distributor, we want to make it very clear that
            there is no warranty for the free library.  Also, if the library is
            modified by someone else and passed on, the recipients should know
            that what they have is not the original version, so that the original
            author's reputation will not be affected by problems that might be
            introduced by others.
            
              Finally, software patents pose a constant threat to the existence of
            any free program.  We wish to make sure that a company cannot
            effectively restrict the users of a free program by obtaining a
            restrictive license from a patent holder.  Therefore, we insist that
            any patent license obtained for a version of the library must be
            consistent with the full freedom of use specified in this license.
            
              Most GNU software, including some libraries, is covered by the
            ordinary GNU General Public License.  This license, the GNU Lesser
            General Public License, applies to certain designated libraries, and
            is quite different from the ordinary General Public License.  We use
            this license for certain libraries in order to permit linking those
            libraries into non-free programs.
            
              When a program is linked with a library, whether statically or using
            a shared library, the combination of the two is legally speaking a
            combined work, a derivative of the original library.  The ordinary
            General Public License therefore permits such linking only if the
            entire combination fits its criteria of freedom.  The Lesser General
            Public License permits more lax criteria for linking other code with
            the library.
            
              We call this license the "Lesser" General Public License because it
            does Less to protect the user's freedom than the ordinary General
            Public License.  It also provides other free software developers Less
            of an advantage over competing non-free programs.  These disadvantages
            are the reason we use the ordinary General Public License for many
            libraries.  However, the Lesser license provides advantages in certain
            special circumstances.
            
              For example, on rare occasions, there may be a special need to
            encourage the widest possible use of a certain library, so that it becomes
            a de-facto standard.  To achieve this, non-free programs must be
            allowed to use the library.  A more frequent case is that a free
            library does the same job as widely used non-free libraries.  In this
            case, there is little to gain by limiting the free library to free
            software only, so we use the Lesser General Public License.
            
              In other cases, permission to use a particular library in non-free
            programs enables a greater number of people to use a large body of
            free software.  For example, permission to use the GNU C Library in
            non-free programs enables many more people to use the whole GNU
            operating system, as well as its variant, the GNU/Linux operating
            system.
            
              Although the Lesser General Public License is Less protective of the
            users' freedom, it does ensure that the user of a program that is
            linked with the Library has the freedom and the wherewithal to run
            that program using a modified version of the Library.
            
              The precise terms and conditions for copying, distribution and
            modification follow.  Pay close attention to the difference between a
            "work based on the library" and a "work that uses the library".  The
            former contains code derived from the library, whereas the latter must
            be combined with the library in order to run.
            
                              GNU LESSER GENERAL PUBLIC LICENSE
               TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
            
              0. This License Agreement applies to any software library or other
            program which contains a notice placed by the copyright holder or
            other authorized party saying it may be distributed under the terms of
            this Lesser General Public License (also called "this License").
            Each licensee is addressed as "you".
            
              A "library" means a collection of software functions and/or data
            prepared so as to be conveniently linked with application programs
            (which use some of those functions and data) to form executables.
            
              The "Library", below, refers to any such software library or work
            which has been distributed under these terms.  A "work based on the
            Library" means either the Library or any derivative work under
            copyright law: that is to say, a work containing the Library or a
            portion of it, either verbatim or with modifications and/or translated
            straightforwardly into another language.  (Hereinafter, translation is
            included without limitation in the term "modification".)
            
              "Source code" for a work means the preferred form of the work for
            making modifications to it.  For a library, complete source code means
            all the source code for all modules it contains, plus any associated
            interface definition files, plus the scripts used to control compilation
            and installation of the library.
            
              Activities other than copying, distribution and modification are not
            covered by this License; they are outside its scope.  The act of
            running a program using the Library is not restricted, and output from
            such a program is covered only if its contents constitute a work based
            on the Library (independent of the use of the Library in a tool for
            writing it).  Whether that is true depends on what the Library does
            and what the program that uses the Library does.
            
              1. You may copy and distribute verbatim copies of the Library's
            complete source code as you receive it, in any medium, provided that
            you conspicuously and appropriately publish on each copy an
            appropriate copyright notice and disclaimer of warranty; keep intact
            all the notices that refer to this License and to the absence of any
            warranty; and distribute a copy of this License along with the
            Library.
            
              You may charge a fee for the physical act of transferring a copy,
            and you may at your option offer warranty protection in exchange for a
            fee.
            
              2. You may modify your copy or copies of the Library or any portion
            of it, thus forming a work based on the Library, and copy and
            distribute such modifications or work under the terms of Section 1
            above, provided that you also meet all of these conditions:
            
                a) The modified work must itself be a software library.
            
                b) You must cause the files modified to carry prominent notices
                stating that you changed the files and the date of any change.
            
                c) You must cause the whole of the work to be licensed at no
                charge to all third parties under the terms of this License.
            
                d) If a facility in the modified Library refers to a function or a
                table of data to be supplied by an application program that uses
                the facility, other than as an argument passed when the facility
                is invoked, then you must make a good faith effort to ensure that,
                in the event an application does not supply such function or
                table, the facility still operates, and performs whatever part of
                its purpose remains meaningful.
            
                (For example, a function in a library to compute square roots has
                a purpose that is entirely well-defined independent of the
                application.  Therefore, Subsection 2d requires that any
                application-supplied function or table used by this function must
                be optional: if the application does not supply it, the square
                root function must still compute square roots.)
            
            These requirements apply to the modified work as a whole.  If
            identifiable sections of that work are not derived from the Library,
            and can be reasonably considered independent and separate works in
            themselves, then this License, and its terms, do not apply to those
            sections when you distribute them as separate works.  But when you
            distribute the same sections as part of a whole which is a work based
            on the Library, the distribution of the whole must be on the terms of
            this License, whose permissions for other licensees extend to the
            entire whole, and thus to each and every part regardless of who wrote
            it.
            
            Thus, it is not the intent of this section to claim rights or contest
            your rights to work written entirely by you; rather, the intent is to
            exercise the right to control the distribution of derivative or
            collective works based on the Library.
            
            In addition, mere aggregation of another work not based on the Library
            with the Library (or with a work based on the Library) on a volume of
            a storage or distribution medium does not bring the other work under
            the scope of this License.
            
              3. You may opt to apply the terms of the ordinary GNU General Public
            License instead of this License to a given copy of the Library.  To do
            this, you must alter all the notices that refer to this License, so
            that they refer to the ordinary GNU General Public License, version 2,
            instead of to this License.  (If a newer version than version 2 of the
            ordinary GNU General Public License has appeared, then you can specify
            that version instead if you wish.)  Do not make any other change in
            these notices.
            
              Once this change is made in a given copy, it is irreversible for
            that copy, so the ordinary GNU General Public License applies to all
            subsequent copies and derivative works made from that copy.
            
              This option is useful when you wish to copy part of the code of
            the Library into a program that is not a library.
            
              4. You may copy and distribute the Library (or a portion or
            derivative of it, under Section 2) in object code or executable form
            under the terms of Sections 1 and 2 above provided that you accompany
            it with the complete corresponding machine-readable source code, which
            must be distributed under the terms of Sections 1 and 2 above on a
            medium customarily used for software interchange.
            
              If distribution of object code is made by offering access to copy
            from a designated place, then offering equivalent access to copy the
            source code from the same place satisfies the requirement to
            distribute the source code, even though third parties are not
            compelled to copy the source along with the object code.
            
              5. A program that contains no derivative of any portion of the
            Library, but is designed to work with the Library by being compiled or
            linked with it, is called a "work that uses the Library".  Such a
            work, in isolation, is not a derivative work of the Library, and
            therefore falls outside the scope of this License.
            
              However, linking a "work that uses the Library" with the Library
            creates an executable that is a derivative of the Library (because it
            contains portions of the Library), rather than a "work that uses the
            library".  The executable is therefore covered by this License.
            Section 6 states terms for distribution of such executables.
            
              When a "work that uses the Library" uses material from a header file
            that is part of the Library, the object code for the work may be a
            derivative work of the Library even though the source code is not.
            Whether this is true is especially significant if the work can be
            linked without the Library, or if the work is itself a library.  The
            threshold for this to be true is not precisely defined by law.
            
              If such an object file uses only numerical parameters, data
            structure layouts and accessors, and small macros and small inline
            functions (ten lines or less in length), then the use of the object
            file is unrestricted, regardless of whether it is legally a derivative
            work.  (Executables containing this object code plus portions of the
            Library will still fall under Section 6.)
            
              Otherwise, if the work is a derivative of the Library, you may
            distribute the object code for the work under the terms of Section 6.
            Any executables containing that work also fall under Section 6,
            whether or not they are linked directly with the Library itself.
            
              6. As an exception to the Sections above, you may also combine or
            link a "work that uses the Library" with the Library to produce a
            work containing portions of the Library, and distribute that work
            under terms of your choice, provided that the terms permit
            modification of the work for the customer's own use and reverse
            engineering for debugging such modifications.
            
              You must give prominent notice with each copy of the work that the
            Library is used in it and that the Library and its use are covered by
            this License.  You must supply a copy of this License.  If the work
            during execution displays copyright notices, you must include the
            copyright notice for the Library among them, as well as a reference
            directing the user to the copy of this License.  Also, you must do one
            of these things:
            
                a) Accompany the work with the complete corresponding
                machine-readable source code for the Library including whatever
                changes were used in the work (which must be distributed under
                Sections 1 and 2 above); and, if the work is an executable linked
                with the Library, with the complete machine-readable "work that
                uses the Library", as object code and/or source code, so that the
                user can modify the Library and then relink to produce a modified
                executable containing the modified Library.  (It is understood
                that the user who changes the contents of definitions files in the
                Library will not necessarily be able to recompile the application
                to use the modified definitions.)
            
                b) Use a suitable shared library mechanism for linking with the
                Library.  A suitable mechanism is one that (1) uses at run time a
                copy of the library already present on the user's computer system,
                rather than copying library functions into the executable, and (2)
                will operate properly with a modified version of the library, if
                the user installs one, as long as the modified version is
                interface-compatible with the version that the work was made with.
            
                c) Accompany the work with a written offer, valid for at
                least three years, to give the same user the materials
                specified in Subsection 6a, above, for a charge no more
                than the cost of performing this distribution.
            
                d) If distribution of the work is made by offering access to copy
                from a designated place, offer equivalent access to copy the above
                specified materials from the same place.
            
                e) Verify that the user has already received a copy of these
                materials or that you have already sent this user a copy.
            
              For an executable, the required form of the "work that uses the
            Library" must include any data and utility programs needed for
            reproducing the executable from it.  However, as a special exception,
            the materials to be distributed need not include anything that is
            normally distributed (in either source or binary form) with the major
            components (compiler, kernel, and so on) of the operating system on
            which the executable runs, unless that component itself accompanies
            the executable.
            
              It may happen that this requirement contradicts the license
            restrictions of other proprietary libraries that do not normally
            accompany the operating system.  Such a contradiction means you cannot
            use both them and the Library together in an executable that you
            distribute.
            
              7. You may place library facilities that are a work based on the
            Library side-by-side in a single library together with other library
            facilities not covered by this License, and distribute such a combined
            library, provided that the separate distribution of the work based on
            the Library and of the other library facilities is otherwise
            permitted, and provided that you do these two things:
            
                a) Accompany the combined library with a copy of the same work
                based on the Library, uncombined with any other library
                facilities.  This must be distributed under the terms of the
                Sections above.
            
                b) Give prominent notice with the combined library of the fact
                that part of it is a work based on the Library, and explaining
                where to find the accompanying uncombined form of the same work.
            
              8. You may not copy, modify, sublicense, link with, or distribute
            the Library except as expressly provided under this License.  Any
            attempt otherwise to copy, modify, sublicense, link with, or
            distribute the Library is void, and will automatically terminate your
            rights under this License.  However, parties who have received copies,
            or rights, from you under this License will not have their licenses
            terminated so long as such parties remain in full compliance.
            
              9. You are not required to accept this License, since you have not
            signed it.  However, nothing else grants you permission to modify or
            distribute the Library or its derivative works.  These actions are
            prohibited by law if you do not accept this License.  Therefore, by
            modifying or distributing the Library (or any work based on the
            Library), you indicate your acceptance of this License to do so, and
            all its terms and conditions for copying, distributing or modifying
            the Library or works based on it.
            
              10. Each time you redistribute the Library (or any work based on the
            Library), the recipient automatically receives a license from the
            original licensor to copy, distribute, link with or modify the Library
            subject to these terms and conditions.  You may not impose any further
            restrictions on the recipients' exercise of the rights granted herein.
            You are not responsible for enforcing compliance by third parties with
            this License.
            
              11. If, as a consequence of a court judgment or allegation of patent
            infringement or for any other reason (not limited to patent issues),
            conditions are imposed on you (whether by court order, agreement or
            otherwise) that contradict the conditions of this License, they do not
            excuse you from the conditions of this License.  If you cannot
            distribute so as to satisfy simultaneously your obligations under this
            License and any other pertinent obligations, then as a consequence you
            may not distribute the Library at all.  For example, if a patent
            license would not permit royalty-free redistribution of the Library by
            all those who receive copies directly or indirectly through you, then
            the only way you could satisfy both it and this License would be to
            refrain entirely from distribution of the Library.
            
            If any portion of this section is held invalid or unenforceable under any
            particular circumstance, the balance of the section is intended to apply,
            and the section as a whole is intended to apply in other circumstances.
            
            It is not the purpose of this section to induce you to infringe any
            patents or other property right claims or to contest validity of any
            such claims; this section has the sole purpose of protecting the
            integrity of the free software distribution system which is
            implemented by public license practices.  Many people have made
            generous contributions to the wide range of software distributed
            through that system in reliance on consistent application of that
            system; it is up to the author/donor to decide if he or she is willing
            to distribute software through any other system and a licensee cannot
            impose that choice.
            
            This section is intended to make thoroughly clear what is believed to
            be a consequence of the rest of this License.
            
              12. If the distribution and/or use of the Library is restricted in
            certain countries either by patents or by copyrighted interfaces, the
            original copyright holder who places the Library under this License may add
            an explicit geographical distribution limitation excluding those countries,
            so that distribution is permitted only in or among countries not thus
            excluded.  In such case, this License incorporates the limitation as if
            written in the body of this License.
            
              13. The Free Software Foundation may publish revised and/or new
            versions of the Lesser General Public License from time to time.
            Such new versions will be similar in spirit to the present version,
            but may differ in detail to address new problems or concerns.
            
            Each version is given a distinguishing version number.  If the Library
            specifies a version number of this License which applies to it and
            "any later version", you have the option of following the terms and
            conditions either of that version or of any later version published by
            the Free Software Foundation.  If the Library does not specify a
            license version number, you may choose any version ever published by
            the Free Software Foundation.
            
              14. If you wish to incorporate parts of the Library into other free
            programs whose distribution conditions are incompatible with these,
            write to the author to ask for permission.  For software which is
            copyrighted by the Free Software Foundation, write to the Free
            Software Foundation; we sometimes make exceptions for this.  Our
            decision will be guided by the two goals of preserving the free status
            of all derivatives of our free software and of promoting the sharing
            and reuse of software generally.
            
                                        NO WARRANTY
            
              15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
            WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
            EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
            OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
            KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
            PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
            LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
            THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
            
              16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
            WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
            AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
            FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
            CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
            LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
            RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
            FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
            SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
            DAMAGES.
            
                                 END OF TERMS AND CONDITIONS
            
                       How to Apply These Terms to Your New Libraries
            
              If you develop a new library, and you want it to be of the greatest
            possible use to the public, we recommend making it free software that
            everyone can redistribute and change.  You can do so by permitting
            redistribution under these terms (or, alternatively, under the terms of the
            ordinary General Public License).
            
              To apply these terms, attach the following notices to the library.  It is
            safest to attach them to the start of each source file to most effectively
            convey the exclusion of warranty; and each file should have at least the
            "copyright" line and a pointer to where the full notice is found.
            
                <one line to give the library's name and a brief idea of what it does.>
                Copyright (C) <year>  <name of author>
            
                This library is free software; you can redistribute it and/or
                modify it under the terms of the GNU Lesser General Public
                License as published by the Free Software Foundation; either
                version 2.1 of the License, or (at your option) any later version.
            
                This library is distributed in the hope that it will be useful,
                but WITHOUT ANY WARRANTY; without even the implied warranty of
                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
                Lesser General Public License for more details.
            
                You should have received a copy of the GNU Lesser General Public
                License along with this library; if not, write to the Free Software
                Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
            
            Also add information on how to contact you by electronic and paper mail.
            
            You should also get your employer (if you work as a programmer) or your
            school, if any, to sign a "copyright disclaimer" for the library, if
            necessary.  Here is a sample; alter the names:
            
              Yoyodyne, Inc., hereby disclaims all copyright interest in the
              library `Frob' (a library for tweaking knobs) written by James Random Hacker.
            
              <signature of Ty Coon>, 1 April 1990
              Ty Coon, President of Vice
            
            That's all there is to it!
            libsrtp show license homepage
            /*
             *	
             * Copyright (c) 2001-2006 Cisco Systems, Inc.
             * All rights reserved.
             * 
             * Redistribution and use in source and binary forms, with or without
             * modification, are permitted provided that the following conditions
             * are met:
             * 
             *   Redistributions of source code must retain the above copyright
             *   notice, this list of conditions and the following disclaimer.
             * 
             *   Redistributions in binary form must reproduce the above
             *   copyright notice, this list of conditions and the following
             *   disclaimer in the documentation and/or other materials provided
             *   with the distribution.
             * 
             *   Neither the name of the Cisco Systems, Inc. nor the names of its
             *   contributors may be used to endorse or promote products derived
             *   from this software without specific prior written permission.
             * 
             * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
             * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
             * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
             * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
             * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
             * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
             * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
             * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
             * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
             * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
             * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
             * OF THE POSSIBILITY OF SUCH DAMAGE.
             *
             */
            
            libudev show license homepage
                              GNU LESSER GENERAL PUBLIC LICENSE
                                   Version 2.1, February 1999
            
             Copyright (C) 1991, 1999 Free Software Foundation, Inc.
             51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
             Everyone is permitted to copy and distribute verbatim copies
             of this license document, but changing it is not allowed.
            
            [This is the first released version of the Lesser GPL.  It also counts
             as the successor of the GNU Library Public License, version 2, hence
             the version number 2.1.]
            
                                        Preamble
            
              The licenses for most software are designed to take away your
            freedom to share and change it.  By contrast, the GNU General Public
            Licenses are intended to guarantee your freedom to share and change
            free software--to make sure the software is free for all its users.
            
              This license, the Lesser General Public License, applies to some
            specially designated software packages--typically libraries--of the
            Free Software Foundation and other authors who decide to use it.  You
            can use it too, but we suggest you first think carefully about whether
            this license or the ordinary General Public License is the better
            strategy to use in any particular case, based on the explanations below.
            
              When we speak of free software, we are referring to freedom of use,
            not price.  Our General Public Licenses are designed to make sure that
            you have the freedom to distribute copies of free software (and charge
            for this service if you wish); that you receive source code or can get
            it if you want it; that you can change the software and use pieces of
            it in new free programs; and that you are informed that you can do
            these things.
            
              To protect your rights, we need to make restrictions that forbid
            distributors to deny you these rights or to ask you to surrender these
            rights.  These restrictions translate to certain responsibilities for
            you if you distribute copies of the library or if you modify it.
            
              For example, if you distribute copies of the library, whether gratis
            or for a fee, you must give the recipients all the rights that we gave
            you.  You must make sure that they, too, receive or can get the source
            code.  If you link other code with the library, you must provide
            complete object files to the recipients, so that they can relink them
            with the library after making changes to the library and recompiling
            it.  And you must show them these terms so they know their rights.
            
              We protect your rights with a two-step method: (1) we copyright the
            library, and (2) we offer you this license, which gives you legal
            permission to copy, distribute and/or modify the library.
            
              To protect each distributor, we want to make it very clear that
            there is no warranty for the free library.  Also, if the library is
            modified by someone else and passed on, the recipients should know
            that what they have is not the original version, so that the original
            author's reputation will not be affected by problems that might be
            introduced by others.
            
              Finally, software patents pose a constant threat to the existence of
            any free program.  We wish to make sure that a company cannot
            effectively restrict the users of a free program by obtaining a
            restrictive license from a patent holder.  Therefore, we insist that
            any patent license obtained for a version of the library must be
            consistent with the full freedom of use specified in this license.
            
              Most GNU software, including some libraries, is covered by the
            ordinary GNU General Public License.  This license, the GNU Lesser
            General Public License, applies to certain designated libraries, and
            is quite different from the ordinary General Public License.  We use
            this license for certain libraries in order to permit linking those
            libraries into non-free programs.
            
              When a program is linked with a library, whether statically or using
            a shared library, the combination of the two is legally speaking a
            combined work, a derivative of the original library.  The ordinary
            General Public License therefore permits such linking only if the
            entire combination fits its criteria of freedom.  The Lesser General
            Public License permits more lax criteria for linking other code with
            the library.
            
              We call this license the "Lesser" General Public License because it
            does Less to protect the user's freedom than the ordinary General
            Public License.  It also provides other free software developers Less
            of an advantage over competing non-free programs.  These disadvantages
            are the reason we use the ordinary General Public License for many
            libraries.  However, the Lesser license provides advantages in certain
            special circumstances.
            
              For example, on rare occasions, there may be a special need to
            encourage the widest possible use of a certain library, so that it becomes
            a de-facto standard.  To achieve this, non-free programs must be
            allowed to use the library.  A more frequent case is that a free
            library does the same job as widely used non-free libraries.  In this
            case, there is little to gain by limiting the free library to free
            software only, so we use the Lesser General Public License.
            
              In other cases, permission to use a particular library in non-free
            programs enables a greater number of people to use a large body of
            free software.  For example, permission to use the GNU C Library in
            non-free programs enables many more people to use the whole GNU
            operating system, as well as its variant, the GNU/Linux operating
            system.
            
              Although the Lesser General Public License is Less protective of the
            users' freedom, it does ensure that the user of a program that is
            linked with the Library has the freedom and the wherewithal to run
            that program using a modified version of the Library.
            
              The precise terms and conditions for copying, distribution and
            modification follow.  Pay close attention to the difference between a
            "work based on the library" and a "work that uses the library".  The
            former contains code derived from the library, whereas the latter must
            be combined with the library in order to run.
            
                              GNU LESSER GENERAL PUBLIC LICENSE
               TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
            
              0. This License Agreement applies to any software library or other
            program which contains a notice placed by the copyright holder or
            other authorized party saying it may be distributed under the terms of
            this Lesser General Public License (also called "this License").
            Each licensee is addressed as "you".
            
              A "library" means a collection of software functions and/or data
            prepared so as to be conveniently linked with application programs
            (which use some of those functions and data) to form executables.
            
              The "Library", below, refers to any such software library or work
            which has been distributed under these terms.  A "work based on the
            Library" means either the Library or any derivative work under
            copyright law: that is to say, a work containing the Library or a
            portion of it, either verbatim or with modifications and/or translated
            straightforwardly into another language.  (Hereinafter, translation is
            included without limitation in the term "modification".)
            
              "Source code" for a work means the preferred form of the work for
            making modifications to it.  For a library, complete source code means
            all the source code for all modules it contains, plus any associated
            interface definition files, plus the scripts used to control compilation
            and installation of the library.
            
              Activities other than copying, distribution and modification are not
            covered by this License; they are outside its scope.  The act of
            running a program using the Library is not restricted, and output from
            such a program is covered only if its contents constitute a work based
            on the Library (independent of the use of the Library in a tool for
            writing it).  Whether that is true depends on what the Library does
            and what the program that uses the Library does.
            
              1. You may copy and distribute verbatim copies of the Library's
            complete source code as you receive it, in any medium, provided that
            you conspicuously and appropriately publish on each copy an
            appropriate copyright notice and disclaimer of warranty; keep intact
            all the notices that refer to this License and to the absence of any
            warranty; and distribute a copy of this License along with the
            Library.
            
              You may charge a fee for the physical act of transferring a copy,
            and you may at your option offer warranty protection in exchange for a
            fee.
            
              2. You may modify your copy or copies of the Library or any portion
            of it, thus forming a work based on the Library, and copy and
            distribute such modifications or work under the terms of Section 1
            above, provided that you also meet all of these conditions:
            
                a) The modified work must itself be a software library.
            
                b) You must cause the files modified to carry prominent notices
                stating that you changed the files and the date of any change.
            
                c) You must cause the whole of the work to be licensed at no
                charge to all third parties under the terms of this License.
            
                d) If a facility in the modified Library refers to a function or a
                table of data to be supplied by an application program that uses
                the facility, other than as an argument passed when the facility
                is invoked, then you must make a good faith effort to ensure that,
                in the event an application does not supply such function or
                table, the facility still operates, and performs whatever part of
                its purpose remains meaningful.
            
                (For example, a function in a library to compute square roots has
                a purpose that is entirely well-defined independent of the
                application.  Therefore, Subsection 2d requires that any
                application-supplied function or table used by this function must
                be optional: if the application does not supply it, the square
                root function must still compute square roots.)
            
            These requirements apply to the modified work as a whole.  If
            identifiable sections of that work are not derived from the Library,
            and can be reasonably considered independent and separate works in
            themselves, then this License, and its terms, do not apply to those
            sections when you distribute them as separate works.  But when you
            distribute the same sections as part of a whole which is a work based
            on the Library, the distribution of the whole must be on the terms of
            this License, whose permissions for other licensees extend to the
            entire whole, and thus to each and every part regardless of who wrote
            it.
            
            Thus, it is not the intent of this section to claim rights or contest
            your rights to work written entirely by you; rather, the intent is to
            exercise the right to control the distribution of derivative or
            collective works based on the Library.
            
            In addition, mere aggregation of another work not based on the Library
            with the Library (or with a work based on the Library) on a volume of
            a storage or distribution medium does not bring the other work under
            the scope of this License.
            
              3. You may opt to apply the terms of the ordinary GNU General Public
            License instead of this License to a given copy of the Library.  To do
            this, you must alter all the notices that refer to this License, so
            that they refer to the ordinary GNU General Public License, version 2,
            instead of to this License.  (If a newer version than version 2 of the
            ordinary GNU General Public License has appeared, then you can specify
            that version instead if you wish.)  Do not make any other change in
            these notices.
            
              Once this change is made in a given copy, it is irreversible for
            that copy, so the ordinary GNU General Public License applies to all
            subsequent copies and derivative works made from that copy.
            
              This option is useful when you wish to copy part of the code of
            the Library into a program that is not a library.
            
              4. You may copy and distribute the Library (or a portion or
            derivative of it, under Section 2) in object code or executable form
            under the terms of Sections 1 and 2 above provided that you accompany
            it with the complete corresponding machine-readable source code, which
            must be distributed under the terms of Sections 1 and 2 above on a
            medium customarily used for software interchange.
            
              If distribution of object code is made by offering access to copy
            from a designated place, then offering equivalent access to copy the
            source code from the same place satisfies the requirement to
            distribute the source code, even though third parties are not
            compelled to copy the source along with the object code.
            
              5. A program that contains no derivative of any portion of the
            Library, but is designed to work with the Library by being compiled or
            linked with it, is called a "work that uses the Library".  Such a
            work, in isolation, is not a derivative work of the Library, and
            therefore falls outside the scope of this License.
            
              However, linking a "work that uses the Library" with the Library
            creates an executable that is a derivative of the Library (because it
            contains portions of the Library), rather than a "work that uses the
            library".  The executable is therefore covered by this License.
            Section 6 states terms for distribution of such executables.
            
              When a "work that uses the Library" uses material from a header file
            that is part of the Library, the object code for the work may be a
            derivative work of the Library even though the source code is not.
            Whether this is true is especially significant if the work can be
            linked without the Library, or if the work is itself a library.  The
            threshold for this to be true is not precisely defined by law.
            
              If such an object file uses only numerical parameters, data
            structure layouts and accessors, and small macros and small inline
            functions (ten lines or less in length), then the use of the object
            file is unrestricted, regardless of whether it is legally a derivative
            work.  (Executables containing this object code plus portions of the
            Library will still fall under Section 6.)
            
              Otherwise, if the work is a derivative of the Library, you may
            distribute the object code for the work under the terms of Section 6.
            Any executables containing that work also fall under Section 6,
            whether or not they are linked directly with the Library itself.
            
              6. As an exception to the Sections above, you may also combine or
            link a "work that uses the Library" with the Library to produce a
            work containing portions of the Library, and distribute that work
            under terms of your choice, provided that the terms permit
            modification of the work for the customer's own use and reverse
            engineering for debugging such modifications.
            
              You must give prominent notice with each copy of the work that the
            Library is used in it and that the Library and its use are covered by
            this License.  You must supply a copy of this License.  If the work
            during execution displays copyright notices, you must include the
            copyright notice for the Library among them, as well as a reference
            directing the user to the copy of this License.  Also, you must do one
            of these things:
            
                a) Accompany the work with the complete corresponding
                machine-readable source code for the Library including whatever
                changes were used in the work (which must be distributed under
                Sections 1 and 2 above); and, if the work is an executable linked
                with the Library, with the complete machine-readable "work that
                uses the Library", as object code and/or source code, so that the
                user can modify the Library and then relink to produce a modified
                executable containing the modified Library.  (It is understood
                that the user who changes the contents of definitions files in the
                Library will not necessarily be able to recompile the application
                to use the modified definitions.)
            
                b) Use a suitable shared library mechanism for linking with the
                Library.  A suitable mechanism is one that (1) uses at run time a
                copy of the library already present on the user's computer system,
                rather than copying library functions into the executable, and (2)
                will operate properly with a modified version of the library, if
                the user installs one, as long as the modified version is
                interface-compatible with the version that the work was made with.
            
                c) Accompany the work with a written offer, valid for at
                least three years, to give the same user the materials
                specified in Subsection 6a, above, for a charge no more
                than the cost of performing this distribution.
            
                d) If distribution of the work is made by offering access to copy
                from a designated place, offer equivalent access to copy the above
                specified materials from the same place.
            
                e) Verify that the user has already received a copy of these
                materials or that you have already sent this user a copy.
            
              For an executable, the required form of the "work that uses the
            Library" must include any data and utility programs needed for
            reproducing the executable from it.  However, as a special exception,
            the materials to be distributed need not include anything that is
            normally distributed (in either source or binary form) with the major
            components (compiler, kernel, and so on) of the operating system on
            which the executable runs, unless that component itself accompanies
            the executable.
            
              It may happen that this requirement contradicts the license
            restrictions of other proprietary libraries that do not normally
            accompany the operating system.  Such a contradiction means you cannot
            use both them and the Library together in an executable that you
            distribute.
            
              7. You may place library facilities that are a work based on the
            Library side-by-side in a single library together with other library
            facilities not covered by this License, and distribute such a combined
            library, provided that the separate distribution of the work based on
            the Library and of the other library facilities is otherwise
            permitted, and provided that you do these two things:
            
                a) Accompany the combined library with a copy of the same work
                based on the Library, uncombined with any other library
                facilities.  This must be distributed under the terms of the
                Sections above.
            
                b) Give prominent notice with the combined library of the fact
                that part of it is a work based on the Library, and explaining
                where to find the accompanying uncombined form of the same work.
            
              8. You may not copy, modify, sublicense, link with, or distribute
            the Library except as expressly provided under this License.  Any
            attempt otherwise to copy, modify, sublicense, link with, or
            distribute the Library is void, and will automatically terminate your
            rights under this License.  However, parties who have received copies,
            or rights, from you under this License will not have their licenses
            terminated so long as such parties remain in full compliance.
            
              9. You are not required to accept this License, since you have not
            signed it.  However, nothing else grants you permission to modify or
            distribute the Library or its derivative works.  These actions are
            prohibited by law if you do not accept this License.  Therefore, by
            modifying or distributing the Library (or any work based on the
            Library), you indicate your acceptance of this License to do so, and
            all its terms and conditions for copying, distributing or modifying
            the Library or works based on it.
            
              10. Each time you redistribute the Library (or any work based on the
            Library), the recipient automatically receives a license from the
            original licensor to copy, distribute, link with or modify the Library
            subject to these terms and conditions.  You may not impose any further
            restrictions on the recipients' exercise of the rights granted herein.
            You are not responsible for enforcing compliance by third parties with
            this License.
            
              11. If, as a consequence of a court judgment or allegation of patent
            infringement or for any other reason (not limited to patent issues),
            conditions are imposed on you (whether by court order, agreement or
            otherwise) that contradict the conditions of this License, they do not
            excuse you from the conditions of this License.  If you cannot
            distribute so as to satisfy simultaneously your obligations under this
            License and any other pertinent obligations, then as a consequence you
            may not distribute the Library at all.  For example, if a patent
            license would not permit royalty-free redistribution of the Library by
            all those who receive copies directly or indirectly through you, then
            the only way you could satisfy both it and this License would be to
            refrain entirely from distribution of the Library.
            
            If any portion of this section is held invalid or unenforceable under any
            particular circumstance, the balance of the section is intended to apply,
            and the section as a whole is intended to apply in other circumstances.
            
            It is not the purpose of this section to induce you to infringe any
            patents or other property right claims or to contest validity of any
            such claims; this section has the sole purpose of protecting the
            integrity of the free software distribution system which is
            implemented by public license practices.  Many people have made
            generous contributions to the wide range of software distributed
            through that system in reliance on consistent application of that
            system; it is up to the author/donor to decide if he or she is willing
            to distribute software through any other system and a licensee cannot
            impose that choice.
            
            This section is intended to make thoroughly clear what is believed to
            be a consequence of the rest of this License.
            
              12. If the distribution and/or use of the Library is restricted in
            certain countries either by patents or by copyrighted interfaces, the
            original copyright holder who places the Library under this License may add
            an explicit geographical distribution limitation excluding those countries,
            so that distribution is permitted only in or among countries not thus
            excluded.  In such case, this License incorporates the limitation as if
            written in the body of this License.
            
              13. The Free Software Foundation may publish revised and/or new
            versions of the Lesser General Public License from time to time.
            Such new versions will be similar in spirit to the present version,
            but may differ in detail to address new problems or concerns.
            
            Each version is given a distinguishing version number.  If the Library
            specifies a version number of this License which applies to it and
            "any later version", you have the option of following the terms and
            conditions either of that version or of any later version published by
            the Free Software Foundation.  If the Library does not specify a
            license version number, you may choose any version ever published by
            the Free Software Foundation.
            
              14. If you wish to incorporate parts of the Library into other free
            programs whose distribution conditions are incompatible with these,
            write to the author to ask for permission.  For software which is
            copyrighted by the Free Software Foundation, write to the Free
            Software Foundation; we sometimes make exceptions for this.  Our
            decision will be guided by the two goals of preserving the free status
            of all derivatives of our free software and of promoting the sharing
            and reuse of software generally.
            
                                        NO WARRANTY
            
              15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
            WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
            EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
            OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
            KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
            PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
            LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
            THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
            
              16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
            WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
            AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
            FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
            CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
            LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
            RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
            FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
            SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
            DAMAGES.
            
                                 END OF TERMS AND CONDITIONS
            
                       How to Apply These Terms to Your New Libraries
            
              If you develop a new library, and you want it to be of the greatest
            possible use to the public, we recommend making it free software that
            everyone can redistribute and change.  You can do so by permitting
            redistribution under these terms (or, alternatively, under the terms of the
            ordinary General Public License).
            
              To apply these terms, attach the following notices to the library.  It is
            safest to attach them to the start of each source file to most effectively
            convey the exclusion of warranty; and each file should have at least the
            "copyright" line and a pointer to where the full notice is found.
            
                <one line to give the library's name and a brief idea of what it does.>
                Copyright (C) <year>  <name of author>
            
                This library is free software; you can redistribute it and/or
                modify it under the terms of the GNU Lesser General Public
                License as published by the Free Software Foundation; either
                version 2.1 of the License, or (at your option) any later version.
            
                This library is distributed in the hope that it will be useful,
                but WITHOUT ANY WARRANTY; without even the implied warranty of
                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
                Lesser General Public License for more details.
            
                You should have received a copy of the GNU Lesser General Public
                License along with this library; if not, write to the Free Software
                Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
            
            Also add information on how to contact you by electronic and paper mail.
            
            You should also get your employer (if you work as a programmer) or your
            school, if any, to sign a "copyright disclaimer" for the library, if
            necessary.  Here is a sample; alter the names:
            
              Yoyodyne, Inc., hereby disclaims all copyright interest in the
              library `Frob' (a library for tweaking knobs) written by James Random Hacker.
            
              <signature of Ty Coon>, 1 April 1990
              Ty Coon, President of Vice
            
            That's all there is to it!
            
            libusbx show license homepage
            		  GNU LESSER GENERAL PUBLIC LICENSE
            		       Version 2.1, February 1999
            
             Copyright (C) 1991, 1999 Free Software Foundation, Inc.
             51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
             Everyone is permitted to copy and distribute verbatim copies
             of this license document, but changing it is not allowed.
            
            [This is the first released version of the Lesser GPL.  It also counts
             as the successor of the GNU Library Public License, version 2, hence
             the version number 2.1.]
            
            			    Preamble
            
              The licenses for most software are designed to take away your
            freedom to share and change it.  By contrast, the GNU General Public
            Licenses are intended to guarantee your freedom to share and change
            free software--to make sure the software is free for all its users.
            
              This license, the Lesser General Public License, applies to some
            specially designated software packages--typically libraries--of the
            Free Software Foundation and other authors who decide to use it.  You
            can use it too, but we suggest you first think carefully about whether
            this license or the ordinary General Public License is the better
            strategy to use in any particular case, based on the explanations below.
            
              When we speak of free software, we are referring to freedom of use,
            not price.  Our General Public Licenses are designed to make sure that
            you have the freedom to distribute copies of free software (and charge
            for this service if you wish); that you receive source code or can get
            it if you want it; that you can change the software and use pieces of
            it in new free programs; and that you are informed that you can do
            these things.
            
              To protect your rights, we need to make restrictions that forbid
            distributors to deny you these rights or to ask you to surrender these
            rights.  These restrictions translate to certain responsibilities for
            you if you distribute copies of the library or if you modify it.
            
              For example, if you distribute copies of the library, whether gratis
            or for a fee, you must give the recipients all the rights that we gave
            you.  You must make sure that they, too, receive or can get the source
            code.  If you link other code with the library, you must provide
            complete object files to the recipients, so that they can relink them
            with the library after making changes to the library and recompiling
            it.  And you must show them these terms so they know their rights.
            
              We protect your rights with a two-step method: (1) we copyright the
            library, and (2) we offer you this license, which gives you legal
            permission to copy, distribute and/or modify the library.
            
              To protect each distributor, we want to make it very clear that
            there is no warranty for the free library.  Also, if the library is
            modified by someone else and passed on, the recipients should know
            that what they have is not the original version, so that the original
            author's reputation will not be affected by problems that might be
            introduced by others.
            
              Finally, software patents pose a constant threat to the existence of
            any free program.  We wish to make sure that a company cannot
            effectively restrict the users of a free program by obtaining a
            restrictive license from a patent holder.  Therefore, we insist that
            any patent license obtained for a version of the library must be
            consistent with the full freedom of use specified in this license.
            
              Most GNU software, including some libraries, is covered by the
            ordinary GNU General Public License.  This license, the GNU Lesser
            General Public License, applies to certain designated libraries, and
            is quite different from the ordinary General Public License.  We use
            this license for certain libraries in order to permit linking those
            libraries into non-free programs.
            
              When a program is linked with a library, whether statically or using
            a shared library, the combination of the two is legally speaking a
            combined work, a derivative of the original library.  The ordinary
            General Public License therefore permits such linking only if the
            entire combination fits its criteria of freedom.  The Lesser General
            Public License permits more lax criteria for linking other code with
            the library.
            
              We call this license the "Lesser" General Public License because it
            does Less to protect the user's freedom than the ordinary General
            Public License.  It also provides other free software developers Less
            of an advantage over competing non-free programs.  These disadvantages
            are the reason we use the ordinary General Public License for many
            libraries.  However, the Lesser license provides advantages in certain
            special circumstances.
            
              For example, on rare occasions, there may be a special need to
            encourage the widest possible use of a certain library, so that it becomes
            a de-facto standard.  To achieve this, non-free programs must be
            allowed to use the library.  A more frequent case is that a free
            library does the same job as widely used non-free libraries.  In this
            case, there is little to gain by limiting the free library to free
            software only, so we use the Lesser General Public License.
            
              In other cases, permission to use a particular library in non-free
            programs enables a greater number of people to use a large body of
            free software.  For example, permission to use the GNU C Library in
            non-free programs enables many more people to use the whole GNU
            operating system, as well as its variant, the GNU/Linux operating
            system.
            
              Although the Lesser General Public License is Less protective of the
            users' freedom, it does ensure that the user of a program that is
            linked with the Library has the freedom and the wherewithal to run
            that program using a modified version of the Library.
            
              The precise terms and conditions for copying, distribution and
            modification follow.  Pay close attention to the difference between a
            "work based on the library" and a "work that uses the library".  The
            former contains code derived from the library, whereas the latter must
            be combined with the library in order to run.
            
            		  GNU LESSER GENERAL PUBLIC LICENSE
               TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
            
              0. This License Agreement applies to any software library or other
            program which contains a notice placed by the copyright holder or
            other authorized party saying it may be distributed under the terms of
            this Lesser General Public License (also called "this License").
            Each licensee is addressed as "you".
            
              A "library" means a collection of software functions and/or data
            prepared so as to be conveniently linked with application programs
            (which use some of those functions and data) to form executables.
            
              The "Library", below, refers to any such software library or work
            which has been distributed under these terms.  A "work based on the
            Library" means either the Library or any derivative work under
            copyright law: that is to say, a work containing the Library or a
            portion of it, either verbatim or with modifications and/or translated
            straightforwardly into another language.  (Hereinafter, translation is
            included without limitation in the term "modification".)
            
              "Source code" for a work means the preferred form of the work for
            making modifications to it.  For a library, complete source code means
            all the source code for all modules it contains, plus any associated
            interface definition files, plus the scripts used to control compilation
            and installation of the library.
            
              Activities other than copying, distribution and modification are not
            covered by this License; they are outside its scope.  The act of
            running a program using the Library is not restricted, and output from
            such a program is covered only if its contents constitute a work based
            on the Library (independent of the use of the Library in a tool for
            writing it).  Whether that is true depends on what the Library does
            and what the program that uses the Library does.
              
              1. You may copy and distribute verbatim copies of the Library's
            complete source code as you receive it, in any medium, provided that
            you conspicuously and appropriately publish on each copy an
            appropriate copyright notice and disclaimer of warranty; keep intact
            all the notices that refer to this License and to the absence of any
            warranty; and distribute a copy of this License along with the
            Library.
            
              You may charge a fee for the physical act of transferring a copy,
            and you may at your option offer warranty protection in exchange for a
            fee.
            
              2. You may modify your copy or copies of the Library or any portion
            of it, thus forming a work based on the Library, and copy and
            distribute such modifications or work under the terms of Section 1
            above, provided that you also meet all of these conditions:
            
                a) The modified work must itself be a software library.
            
                b) You must cause the files modified to carry prominent notices
                stating that you changed the files and the date of any change.
            
                c) You must cause the whole of the work to be licensed at no
                charge to all third parties under the terms of this License.
            
                d) If a facility in the modified Library refers to a function or a
                table of data to be supplied by an application program that uses
                the facility, other than as an argument passed when the facility
                is invoked, then you must make a good faith effort to ensure that,
                in the event an application does not supply such function or
                table, the facility still operates, and performs whatever part of
                its purpose remains meaningful.
            
                (For example, a function in a library to compute square roots has
                a purpose that is entirely well-defined independent of the
                application.  Therefore, Subsection 2d requires that any
                application-supplied function or table used by this function must
                be optional: if the application does not supply it, the square
                root function must still compute square roots.)
            
            These requirements apply to the modified work as a whole.  If
            identifiable sections of that work are not derived from the Library,
            and can be reasonably considered independent and separate works in
            themselves, then this License, and its terms, do not apply to those
            sections when you distribute them as separate works.  But when you
            distribute the same sections as part of a whole which is a work based
            on the Library, the distribution of the whole must be on the terms of
            this License, whose permissions for other licensees extend to the
            entire whole, and thus to each and every part regardless of who wrote
            it.
            
            Thus, it is not the intent of this section to claim rights or contest
            your rights to work written entirely by you; rather, the intent is to
            exercise the right to control the distribution of derivative or
            collective works based on the Library.
            
            In addition, mere aggregation of another work not based on the Library
            with the Library (or with a work based on the Library) on a volume of
            a storage or distribution medium does not bring the other work under
            the scope of this License.
            
              3. You may opt to apply the terms of the ordinary GNU General Public
            License instead of this License to a given copy of the Library.  To do
            this, you must alter all the notices that refer to this License, so
            that they refer to the ordinary GNU General Public License, version 2,
            instead of to this License.  (If a newer version than version 2 of the
            ordinary GNU General Public License has appeared, then you can specify
            that version instead if you wish.)  Do not make any other change in
            these notices.
            
              Once this change is made in a given copy, it is irreversible for
            that copy, so the ordinary GNU General Public License applies to all
            subsequent copies and derivative works made from that copy.
            
              This option is useful when you wish to copy part of the code of
            the Library into a program that is not a library.
            
              4. You may copy and distribute the Library (or a portion or
            derivative of it, under Section 2) in object code or executable form
            under the terms of Sections 1 and 2 above provided that you accompany
            it with the complete corresponding machine-readable source code, which
            must be distributed under the terms of Sections 1 and 2 above on a
            medium customarily used for software interchange.
            
              If distribution of object code is made by offering access to copy
            from a designated place, then offering equivalent access to copy the
            source code from the same place satisfies the requirement to
            distribute the source code, even though third parties are not
            compelled to copy the source along with the object code.
            
              5. A program that contains no derivative of any portion of the
            Library, but is designed to work with the Library by being compiled or
            linked with it, is called a "work that uses the Library".  Such a
            work, in isolation, is not a derivative work of the Library, and
            therefore falls outside the scope of this License.
            
              However, linking a "work that uses the Library" with the Library
            creates an executable that is a derivative of the Library (because it
            contains portions of the Library), rather than a "work that uses the
            library".  The executable is therefore covered by this License.
            Section 6 states terms for distribution of such executables.
            
              When a "work that uses the Library" uses material from a header file
            that is part of the Library, the object code for the work may be a
            derivative work of the Library even though the source code is not.
            Whether this is true is especially significant if the work can be
            linked without the Library, or if the work is itself a library.  The
            threshold for this to be true is not precisely defined by law.
            
              If such an object file uses only numerical parameters, data
            structure layouts and accessors, and small macros and small inline
            functions (ten lines or less in length), then the use of the object
            file is unrestricted, regardless of whether it is legally a derivative
            work.  (Executables containing this object code plus portions of the
            Library will still fall under Section 6.)
            
              Otherwise, if the work is a derivative of the Library, you may
            distribute the object code for the work under the terms of Section 6.
            Any executables containing that work also fall under Section 6,
            whether or not they are linked directly with the Library itself.
            
              6. As an exception to the Sections above, you may also combine or
            link a "work that uses the Library" with the Library to produce a
            work containing portions of the Library, and distribute that work
            under terms of your choice, provided that the terms permit
            modification of the work for the customer's own use and reverse
            engineering for debugging such modifications.
            
              You must give prominent notice with each copy of the work that the
            Library is used in it and that the Library and its use are covered by
            this License.  You must supply a copy of this License.  If the work
            during execution displays copyright notices, you must include the
            copyright notice for the Library among them, as well as a reference
            directing the user to the copy of this License.  Also, you must do one
            of these things:
            
                a) Accompany the work with the complete corresponding
                machine-readable source code for the Library including whatever
                changes were used in the work (which must be distributed under
                Sections 1 and 2 above); and, if the work is an executable linked
                with the Library, with the complete machine-readable "work that
                uses the Library", as object code and/or source code, so that the
                user can modify the Library and then relink to produce a modified
                executable containing the modified Library.  (It is understood
                that the user who changes the contents of definitions files in the
                Library will not necessarily be able to recompile the application
                to use the modified definitions.)
            
                b) Use a suitable shared library mechanism for linking with the
                Library.  A suitable mechanism is one that (1) uses at run time a
                copy of the library already present on the user's computer system,
                rather than copying library functions into the executable, and (2)
                will operate properly with a modified version of the library, if
                the user installs one, as long as the modified version is
                interface-compatible with the version that the work was made with.
            
                c) Accompany the work with a written offer, valid for at
                least three years, to give the same user the materials
                specified in Subsection 6a, above, for a charge no more
                than the cost of performing this distribution.
            
                d) If distribution of the work is made by offering access to copy
                from a designated place, offer equivalent access to copy the above
                specified materials from the same place.
            
                e) Verify that the user has already received a copy of these
                materials or that you have already sent this user a copy.
            
              For an executable, the required form of the "work that uses the
            Library" must include any data and utility programs needed for
            reproducing the executable from it.  However, as a special exception,
            the materials to be distributed need not include anything that is
            normally distributed (in either source or binary form) with the major
            components (compiler, kernel, and so on) of the operating system on
            which the executable runs, unless that component itself accompanies
            the executable.
            
              It may happen that this requirement contradicts the license
            restrictions of other proprietary libraries that do not normally
            accompany the operating system.  Such a contradiction means you cannot
            use both them and the Library together in an executable that you
            distribute.
            
              7. You may place library facilities that are a work based on the
            Library side-by-side in a single library together with other library
            facilities not covered by this License, and distribute such a combined
            library, provided that the separate distribution of the work based on
            the Library and of the other library facilities is otherwise
            permitted, and provided that you do these two things:
            
                a) Accompany the combined library with a copy of the same work
                based on the Library, uncombined with any other library
                facilities.  This must be distributed under the terms of the
                Sections above.
            
                b) Give prominent notice with the combined library of the fact
                that part of it is a work based on the Library, and explaining
                where to find the accompanying uncombined form of the same work.
            
              8. You may not copy, modify, sublicense, link with, or distribute
            the Library except as expressly provided under this License.  Any
            attempt otherwise to copy, modify, sublicense, link with, or
            distribute the Library is void, and will automatically terminate your
            rights under this License.  However, parties who have received copies,
            or rights, from you under this License will not have their licenses
            terminated so long as such parties remain in full compliance.
            
              9. You are not required to accept this License, since you have not
            signed it.  However, nothing else grants you permission to modify or
            distribute the Library or its derivative works.  These actions are
            prohibited by law if you do not accept this License.  Therefore, by
            modifying or distributing the Library (or any work based on the
            Library), you indicate your acceptance of this License to do so, and
            all its terms and conditions for copying, distributing or modifying
            the Library or works based on it.
            
              10. Each time you redistribute the Library (or any work based on the
            Library), the recipient automatically receives a license from the
            original licensor to copy, distribute, link with or modify the Library
            subject to these terms and conditions.  You may not impose any further
            restrictions on the recipients' exercise of the rights granted herein.
            You are not responsible for enforcing compliance by third parties with
            this License.
            
              11. If, as a consequence of a court judgment or allegation of patent
            infringement or for any other reason (not limited to patent issues),
            conditions are imposed on you (whether by court order, agreement or
            otherwise) that contradict the conditions of this License, they do not
            excuse you from the conditions of this License.  If you cannot
            distribute so as to satisfy simultaneously your obligations under this
            License and any other pertinent obligations, then as a consequence you
            may not distribute the Library at all.  For example, if a patent
            license would not permit royalty-free redistribution of the Library by
            all those who receive copies directly or indirectly through you, then
            the only way you could satisfy both it and this License would be to
            refrain entirely from distribution of the Library.
            
            If any portion of this section is held invalid or unenforceable under any
            particular circumstance, the balance of the section is intended to apply,
            and the section as a whole is intended to apply in other circumstances.
            
            It is not the purpose of this section to induce you to infringe any
            patents or other property right claims or to contest validity of any
            such claims; this section has the sole purpose of protecting the
            integrity of the free software distribution system which is
            implemented by public license practices.  Many people have made
            generous contributions to the wide range of software distributed
            through that system in reliance on consistent application of that
            system; it is up to the author/donor to decide if he or she is willing
            to distribute software through any other system and a licensee cannot
            impose that choice.
            
            This section is intended to make thoroughly clear what is believed to
            be a consequence of the rest of this License.
            
              12. If the distribution and/or use of the Library is restricted in
            certain countries either by patents or by copyrighted interfaces, the
            original copyright holder who places the Library under this License may add
            an explicit geographical distribution limitation excluding those countries,
            so that distribution is permitted only in or among countries not thus
            excluded.  In such case, this License incorporates the limitation as if
            written in the body of this License.
            
              13. The Free Software Foundation may publish revised and/or new
            versions of the Lesser General Public License from time to time.
            Such new versions will be similar in spirit to the present version,
            but may differ in detail to address new problems or concerns.
            
            Each version is given a distinguishing version number.  If the Library
            specifies a version number of this License which applies to it and
            "any later version", you have the option of following the terms and
            conditions either of that version or of any later version published by
            the Free Software Foundation.  If the Library does not specify a
            license version number, you may choose any version ever published by
            the Free Software Foundation.
            
              14. If you wish to incorporate parts of the Library into other free
            programs whose distribution conditions are incompatible with these,
            write to the author to ask for permission.  For software which is
            copyrighted by the Free Software Foundation, write to the Free
            Software Foundation; we sometimes make exceptions for this.  Our
            decision will be guided by the two goals of preserving the free status
            of all derivatives of our free software and of promoting the sharing
            and reuse of software generally.
            
            			    NO WARRANTY
            
              15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
            WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
            EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
            OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
            KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
            PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
            LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
            THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
            
              16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
            WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
            AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
            FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
            CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
            LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
            RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
            FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
            SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
            DAMAGES.
            
            		     END OF TERMS AND CONDITIONS
            
                       How to Apply These Terms to Your New Libraries
            
              If you develop a new library, and you want it to be of the greatest
            possible use to the public, we recommend making it free software that
            everyone can redistribute and change.  You can do so by permitting
            redistribution under these terms (or, alternatively, under the terms of the
            ordinary General Public License).
            
              To apply these terms, attach the following notices to the library.  It is
            safest to attach them to the start of each source file to most effectively
            convey the exclusion of warranty; and each file should have at least the
            "copyright" line and a pointer to where the full notice is found.
            
                <one line to give the library's name and a brief idea of what it does.>
                Copyright (C) <year>  <name of author>
            
                This library is free software; you can redistribute it and/or
                modify it under the terms of the GNU Lesser General Public
                License as published by the Free Software Foundation; either
                version 2.1 of the License, or (at your option) any later version.
            
                This library is distributed in the hope that it will be useful,
                but WITHOUT ANY WARRANTY; without even the implied warranty of
                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
                Lesser General Public License for more details.
            
                You should have received a copy of the GNU Lesser General Public
                License along with this library; if not, write to the Free Software
                Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
            
            Also add information on how to contact you by electronic and paper mail.
            
            You should also get your employer (if you work as a programmer) or your
            school, if any, to sign a "copyright disclaimer" for the library, if
            necessary.  Here is a sample; alter the names:
            
              Yoyodyne, Inc., hereby disclaims all copyright interest in the
              library `Frob' (a library for tweaking knobs) written by James Random Hacker.
            
              <signature of Ty Coon>, 1 April 1990
              Ty Coon, President of Vice
            
            That's all there is to it!
            
            
            
            libva show license homepage
                Permission is hereby granted, free of charge, to any person obtaining a
                copy of this software and associated documentation files (the
                "Software"), to deal in the Software without restriction, including
                without limitation the rights to use, copy, modify, merge, publish,
                distribute, sub license, and/or sell copies of the Software, and to
                permit persons to whom the Software is furnished to do so, subject to
                the following conditions:
            
                The above copyright notice and this permission notice (including the
                next paragraph) shall be included in all copies or substantial portions
                of the Software.
            
                THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
                OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
                MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
                IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
                ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
                TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
                SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
            
            libvpx show license homepage
            Copyright (c) 2010, The WebM Project authors. All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
              * Redistributions of source code must retain the above copyright
                notice, this list of conditions and the following disclaimer.
            
              * Redistributions in binary form must reproduce the above copyright
                notice, this list of conditions and the following disclaimer in
                the documentation and/or other materials provided with the
                distribution.
            
              * Neither the name of Google, nor the WebM Project, nor the names
                of its contributors may be used to endorse or promote products
                derived from this software without specific prior written
                permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            
            WebP image encoder/decoder show license homepage
            Copyright (c) 2010, Google Inc. All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
              * Redistributions of source code must retain the above copyright
                notice, this list of conditions and the following disclaimer.
            
              * Redistributions in binary form must reproduce the above copyright
                notice, this list of conditions and the following disclaimer in
                the documentation and/or other materials provided with the
                distribution.
            
              * Neither the name of Google nor the names of its contributors may
                be used to endorse or promote products derived from this software
                without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            Additional IP Rights Grant (Patents)
            ------------------------------------
            
            "These implementations" means the copyrightable works that implement the WebM
            codecs distributed by Google as part of the WebM Project.
            
            Google hereby grants to you a perpetual, worldwide, non-exclusive, no-charge,
            royalty-free, irrevocable (except as stated in this section) patent license to
            make, have made, use, offer to sell, sell, import, transfer, and otherwise
            run, modify and propagate the contents of these implementations of WebM, where
            such license applies only to those patent claims, both currently owned by
            Google and acquired in the future, licensable by Google that are necessarily
            infringed by these implementations of WebM. This grant does not include claims
            that would be infringed only as a consequence of further modification of these
            implementations. If you or your agent or exclusive licensee institute or order
            or agree to the institution of patent litigation or any other patent
            enforcement activity against any entity (including a cross-claim or
            counterclaim in a lawsuit) alleging that any of these implementations of WebM
            or any code incorporated within any of these implementations of WebM
            constitutes direct or contributory patent infringement, or inducement of
            patent infringement, then any patent rights granted to you under this License
            for these implementations of WebM shall terminate as of the date such
            litigation is filed.
            
            libxml show license homepage
            Except where otherwise noted in the source code (e.g. the files hash.c,
            list.c and the trio files, which are covered by a similar licence but
            with different Copyright notices) all the files are:
            
             Copyright (C) 1998-2003 Daniel Veillard.  All Rights Reserved.
            
            Permission is hereby granted, free of charge, to any person obtaining a copy
            of this software and associated documentation files (the "Software"), to deal
            in the Software without restriction, including without limitation the rights
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
            copies of the Software, and to permit persons to whom the Software is fur-
            nished to do so, subject to the following conditions:
            
            The above copyright notice and this permission notice shall be included in
            all copies or substantial portions of the Software.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
            NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
            DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
            IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
            NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
            
            Except as contained in this notice, the name of Daniel Veillard shall not
            be used in advertising or otherwise to promote the sale, use or other deal-
            ings in this Software without prior written authorization from him.
            
            
            libxslt show license homepage
            Licence for libxslt except libexslt
            ----------------------------------------------------------------------
             Copyright (C) 2001-2002 Daniel Veillard.  All Rights Reserved.
            
            Permission is hereby granted, free of charge, to any person obtaining a copy
            of this software and associated documentation files (the "Software"), to deal
            in the Software without restriction, including without limitation the rights
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
            copies of the Software, and to permit persons to whom the Software is fur-
            nished to do so, subject to the following conditions:
            
            The above copyright notice and this permission notice shall be included in
            all copies or substantial portions of the Software.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
            NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
            DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
            IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
            NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
            
            Except as contained in this notice, the name of Daniel Veillard shall not
            be used in advertising or otherwise to promote the sale, use or other deal-
            ings in this Software without prior written authorization from him.
            
            ----------------------------------------------------------------------
            
            Licence for libexslt
            ----------------------------------------------------------------------
             Copyright (C) 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard.
             All Rights Reserved.
            
            Permission is hereby granted, free of charge, to any person obtaining a copy
            of this software and associated documentation files (the "Software"), to deal
            in the Software without restriction, including without limitation the rights
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
            copies of the Software, and to permit persons to whom the Software is fur-
            nished to do so, subject to the following conditions:
            
            The above copyright notice and this permission notice shall be included in
            all copies or substantial portions of the Software.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
            NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
            AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
            IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
            NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
            
            Except as contained in this notice, the name of the authors shall not
            be used in advertising or otherwise to promote the sale, use or other deal-
            ings in this Software without prior written authorization from him.
            ----------------------------------------------------------------------
            
            libyuv show license homepage
            Copyright 2011 The LibYuv Project Authors. All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
              * Redistributions of source code must retain the above copyright
                notice, this list of conditions and the following disclaimer.
            
              * Redistributions in binary form must reproduce the above copyright
                notice, this list of conditions and the following disclaimer in
                the documentation and/or other materials provided with the
                distribution.
            
              * Neither the name of Google nor the names of its contributors may
                be used to endorse or promote products derived from this software
                without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            LZMA SDK show license homepage
            LZMA SDK is placed in the public domain.
            
            mach_override show license homepage
            Copyright (c) 2003-2012 Jonathan 'Wolf' Rentzsch: http://rentzsch.com
            Some rights reserved: http://opensource.org/licenses/mit
            
            mach_override includes a copy of libudis86, licensed as follows:
            
            Copyright (c) 2002-2009 Vivek Thampi
            All rights reserved.
            
            Redistribution and use in source and binary forms, with or without modification, 
            are permitted provided that the following conditions are met:
            
                * Redistributions of source code must retain the above copyright notice, 
                  this list of conditions and the following disclaimer.
                * Redistributions in binary form must reproduce the above copyright notice, 
                  this list of conditions and the following disclaimer in the documentation 
                  and/or other materials provided with the distribution.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
            ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
            WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
            DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 
            ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
            (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
            LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
            ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
            SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            markdown, a text-to-HTML conversion tool for web writers show license homepage
            Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later)  
            Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)  
            Copyright 2004 Manfred Stienstra (the original version)  
            
            All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are met:
                
            *   Redistributions of source code must retain the above copyright
                notice, this list of conditions and the following disclaimer.
            *   Redistributions in binary form must reproduce the above copyright
                notice, this list of conditions and the following disclaimer in the
                documentation and/or other materials provided with the distribution.
            *   Neither the name of the <organization> nor the
                names of its contributors may be used to endorse or promote products
                derived from this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE PYTHON MARKDOWN PROJECT ''AS IS'' AND ANY
            EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
            WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
            DISCLAIMED. IN NO EVENT SHALL ANY CONTRIBUTORS TO THE PYTHON MARKDOWN PROJECT
            BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
            CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
            SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
            INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
            CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
            ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
            POSSIBILITY OF SUCH DAMAGE.
            
            
            mesa show license homepage
            The default Mesa license is as follows:
            
            Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
            
            Permission is hereby granted, free of charge, to any person obtaining a
            copy of this software and associated documentation files (the "Software"),
            to deal in the Software without restriction, including without limitation
            the rights to use, copy, modify, merge, publish, distribute, sublicense,
            and/or sell copies of the Software, and to permit persons to whom the
            Software is furnished to do so, subject to the following conditions:
            
            The above copyright notice and this permission notice shall be included
            in all copies or substantial portions of the Software.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
            OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
            BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
            AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
            CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
            
            
            
            Some parts of Mesa are copyrighted under the GNU LGPL.  See the
            Mesa/docs/COPYRIGHT file for details.
            
            The following is the standard GNU copyright file.
            ----------------------------------------------------------------------
            
            
            		  GNU LIBRARY GENERAL PUBLIC LICENSE
            		       Version 2, June 1991
            
             Copyright (C) 1991 Free Software Foundation, Inc.
                                675 Mass Ave, Cambridge, MA 02139, USA
             Everyone is permitted to copy and distribute verbatim copies
             of this license document, but changing it is not allowed.
            
            [This is the first released version of the library GPL.  It is
             numbered 2 because it goes with version 2 of the ordinary GPL.]
            
            			    Preamble
            
              The licenses for most software are designed to take away your
            freedom to share and change it.  By contrast, the GNU General Public
            Licenses are intended to guarantee your freedom to share and change
            free software--to make sure the software is free for all its users.
            
              This license, the Library General Public License, applies to some
            specially designated Free Software Foundation software, and to any
            other libraries whose authors decide to use it.  You can use it for
            your libraries, too.
            
              When we speak of free software, we are referring to freedom, not
            price.  Our General Public Licenses are designed to make sure that you
            have the freedom to distribute copies of free software (and charge for
            this service if you wish), that you receive source code or can get it
            if you want it, that you can change the software or use pieces of it
            in new free programs; and that you know you can do these things.
            
              To protect your rights, we need to make restrictions that forbid
            anyone to deny you these rights or to ask you to surrender the rights.
            These restrictions translate to certain responsibilities for you if
            you distribute copies of the library, or if you modify it.
            
              For example, if you distribute copies of the library, whether gratis
            or for a fee, you must give the recipients all the rights that we gave
            you.  You must make sure that they, too, receive or can get the source
            code.  If you link a program with the library, you must provide
            complete object files to the recipients so that they can relink them
            with the library, after making changes to the library and recompiling
            it.  And you must show them these terms so they know their rights.
            
              Our method of protecting your rights has two steps: (1) copyright
            the library, and (2) offer you this license which gives you legal
            permission to copy, distribute and/or modify the library.
            
              Also, for each distributor's protection, we want to make certain
            that everyone understands that there is no warranty for this free
            library.  If the library is modified by someone else and passed on, we
            want its recipients to know that what they have is not the original
            version, so that any problems introduced by others will not reflect on
            the original authors' reputations.
            
              Finally, any free program is threatened constantly by software
            patents.  We wish to avoid the danger that companies distributing free
            software will individually obtain patent licenses, thus in effect
            transforming the program into proprietary software.  To prevent this,
            we have made it clear that any patent must be licensed for everyone's
            free use or not licensed at all.
            
              Most GNU software, including some libraries, is covered by the ordinary
            GNU General Public License, which was designed for utility programs.  This
            license, the GNU Library General Public License, applies to certain
            designated libraries.  This license is quite different from the ordinary
            one; be sure to read it in full, and don't assume that anything in it is
            the same as in the ordinary license.
            
              The reason we have a separate public license for some libraries is that
            they blur the distinction we usually make between modifying or adding to a
            program and simply using it.  Linking a program with a library, without
            changing the library, is in some sense simply using the library, and is
            analogous to running a utility program or application program.  However, in
            a textual and legal sense, the linked executable is a combined work, a
            derivative of the original library, and the ordinary General Public License
            treats it as such.
            
              Because of this blurred distinction, using the ordinary General
            Public License for libraries did not effectively promote software
            sharing, because most developers did not use the libraries.  We
            concluded that weaker conditions might promote sharing better.
            
              However, unrestricted linking of non-free programs would deprive the
            users of those programs of all benefit from the free status of the
            libraries themselves.  This Library General Public License is intended to
            permit developers of non-free programs to use free libraries, while
            preserving your freedom as a user of such programs to change the free
            libraries that are incorporated in them.  (We have not seen how to achieve
            this as regards changes in header files, but we have achieved it as regards
            changes in the actual functions of the Library.)  The hope is that this
            will lead to faster development of free libraries.
            
              The precise terms and conditions for copying, distribution and
            modification follow.  Pay close attention to the difference between a
            "work based on the library" and a "work that uses the library".  The
            former contains code derived from the library, while the latter only
            works together with the library.
            
              Note that it is possible for a library to be covered by the ordinary
            General Public License rather than by this special one.
            
            		  GNU LIBRARY GENERAL PUBLIC LICENSE
               TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
            
              0. This License Agreement applies to any software library which
            contains a notice placed by the copyright holder or other authorized
            party saying it may be distributed under the terms of this Library
            General Public License (also called "this License").  Each licensee is
            addressed as "you".
            
              A "library" means a collection of software functions and/or data
            prepared so as to be conveniently linked with application programs
            (which use some of those functions and data) to form executables.
            
              The "Library", below, refers to any such software library or work
            which has been distributed under these terms.  A "work based on the
            Library" means either the Library or any derivative work under
            copyright law: that is to say, a work containing the Library or a
            portion of it, either verbatim or with modifications and/or translated
            straightforwardly into another language.  (Hereinafter, translation is
            included without limitation in the term "modification".)
            
              "Source code" for a work means the preferred form of the work for
            making modifications to it.  For a library, complete source code means
            all the source code for all modules it contains, plus any associated
            interface definition files, plus the scripts used to control compilation
            and installation of the library.
            
              Activities other than copying, distribution and modification are not
            covered by this License; they are outside its scope.  The act of
            running a program using the Library is not restricted, and output from
            such a program is covered only if its contents constitute a work based
            on the Library (independent of the use of the Library in a tool for
            writing it).  Whether that is true depends on what the Library does
            and what the program that uses the Library does.
              
              1. You may copy and distribute verbatim copies of the Library's
            complete source code as you receive it, in any medium, provided that
            you conspicuously and appropriately publish on each copy an
            appropriate copyright notice and disclaimer of warranty; keep intact
            all the notices that refer to this License and to the absence of any
            warranty; and distribute a copy of this License along with the
            Library.
            
              You may charge a fee for the physical act of transferring a copy,
            and you may at your option offer warranty protection in exchange for a
            fee.
            
              2. You may modify your copy or copies of the Library or any portion
            of it, thus forming a work based on the Library, and copy and
            distribute such modifications or work under the terms of Section 1
            above, provided that you also meet all of these conditions:
            
                a) The modified work must itself be a software library.
            
                b) You must cause the files modified to carry prominent notices
                stating that you changed the files and the date of any change.
            
                c) You must cause the whole of the work to be licensed at no
                charge to all third parties under the terms of this License.
            
                d) If a facility in the modified Library refers to a function or a
                table of data to be supplied by an application program that uses
                the facility, other than as an argument passed when the facility
                is invoked, then you must make a good faith effort to ensure that,
                in the event an application does not supply such function or
                table, the facility still operates, and performs whatever part of
                its purpose remains meaningful.
            
                (For example, a function in a library to compute square roots has
                a purpose that is entirely well-defined independent of the
                application.  Therefore, Subsection 2d requires that any
                application-supplied function or table used by this function must
                be optional: if the application does not supply it, the square
                root function must still compute square roots.)
            
            These requirements apply to the modified work as a whole.  If
            identifiable sections of that work are not derived from the Library,
            and can be reasonably considered independent and separate works in
            themselves, then this License, and its terms, do not apply to those
            sections when you distribute them as separate works.  But when you
            distribute the same sections as part of a whole which is a work based
            on the Library, the distribution of the whole must be on the terms of
            this License, whose permissions for other licensees extend to the
            entire whole, and thus to each and every part regardless of who wrote
            it.
            
            Thus, it is not the intent of this section to claim rights or contest
            your rights to work written entirely by you; rather, the intent is to
            exercise the right to control the distribution of derivative or
            collective works based on the Library.
            
            In addition, mere aggregation of another work not based on the Library
            with the Library (or with a work based on the Library) on a volume of
            a storage or distribution medium does not bring the other work under
            the scope of this License.
            
              3. You may opt to apply the terms of the ordinary GNU General Public
            License instead of this License to a given copy of the Library.  To do
            this, you must alter all the notices that refer to this License, so
            that they refer to the ordinary GNU General Public License, version 2,
            instead of to this License.  (If a newer version than version 2 of the
            ordinary GNU General Public License has appeared, then you can specify
            that version instead if you wish.)  Do not make any other change in
            these notices.
            
              Once this change is made in a given copy, it is irreversible for
            that copy, so the ordinary GNU General Public License applies to all
            subsequent copies and derivative works made from that copy.
            
              This option is useful when you wish to copy part of the code of
            the Library into a program that is not a library.
            
              4. You may copy and distribute the Library (or a portion or
            derivative of it, under Section 2) in object code or executable form
            under the terms of Sections 1 and 2 above provided that you accompany
            it with the complete corresponding machine-readable source code, which
            must be distributed under the terms of Sections 1 and 2 above on a
            medium customarily used for software interchange.
            
              If distribution of object code is made by offering access to copy
            from a designated place, then offering equivalent access to copy the
            source code from the same place satisfies the requirement to
            distribute the source code, even though third parties are not
            compelled to copy the source along with the object code.
            
              5. A program that contains no derivative of any portion of the
            Library, but is designed to work with the Library by being compiled or
            linked with it, is called a "work that uses the Library".  Such a
            work, in isolation, is not a derivative work of the Library, and
            therefore falls outside the scope of this License.
            
              However, linking a "work that uses the Library" with the Library
            creates an executable that is a derivative of the Library (because it
            contains portions of the Library), rather than a "work that uses the
            library".  The executable is therefore covered by this License.
            Section 6 states terms for distribution of such executables.
            
              When a "work that uses the Library" uses material from a header file
            that is part of the Library, the object code for the work may be a
            derivative work of the Library even though the source code is not.
            Whether this is true is especially significant if the work can be
            linked without the Library, or if the work is itself a library.  The
            threshold for this to be true is not precisely defined by law.
            
              If such an object file uses only numerical parameters, data
            structure layouts and accessors, and small macros and small inline
            functions (ten lines or less in length), then the use of the object
            file is unrestricted, regardless of whether it is legally a derivative
            work.  (Executables containing this object code plus portions of the
            Library will still fall under Section 6.)
            
              Otherwise, if the work is a derivative of the Library, you may
            distribute the object code for the work under the terms of Section 6.
            Any executables containing that work also fall under Section 6,
            whether or not they are linked directly with the Library itself.
            
              6. As an exception to the Sections above, you may also compile or
            link a "work that uses the Library" with the Library to produce a
            work containing portions of the Library, and distribute that work
            under terms of your choice, provided that the terms permit
            modification of the work for the customer's own use and reverse
            engineering for debugging such modifications.
            
              You must give prominent notice with each copy of the work that the
            Library is used in it and that the Library and its use are covered by
            this License.  You must supply a copy of this License.  If the work
            during execution displays copyright notices, you must include the
            copyright notice for the Library among them, as well as a reference
            directing the user to the copy of this License.  Also, you must do one
            of these things:
            
                a) Accompany the work with the complete corresponding
                machine-readable source code for the Library including whatever
                changes were used in the work (which must be distributed under
                Sections 1 and 2 above); and, if the work is an executable linked
                with the Library, with the complete machine-readable "work that
                uses the Library", as object code and/or source code, so that the
                user can modify the Library and then relink to produce a modified
                executable containing the modified Library.  (It is understood
                that the user who changes the contents of definitions files in the
                Library will not necessarily be able to recompile the application
                to use the modified definitions.)
            
                b) Accompany the work with a written offer, valid for at
                least three years, to give the same user the materials
                specified in Subsection 6a, above, for a charge no more
                than the cost of performing this distribution.
            
                c) If distribution of the work is made by offering access to copy
                from a designated place, offer equivalent access to copy the above
                specified materials from the same place.
            
                d) Verify that the user has already received a copy of these
                materials or that you have already sent this user a copy.
            
              For an executable, the required form of the "work that uses the
            Library" must include any data and utility programs needed for
            reproducing the executable from it.  However, as a special exception,
            the source code distributed need not include anything that is normally
            distributed (in either source or binary form) with the major
            components (compiler, kernel, and so on) of the operating system on
            which the executable runs, unless that component itself accompanies
            the executable.
            
              It may happen that this requirement contradicts the license
            restrictions of other proprietary libraries that do not normally
            accompany the operating system.  Such a contradiction means you cannot
            use both them and the Library together in an executable that you
            distribute.
            
              7. You may place library facilities that are a work based on the
            Library side-by-side in a single library together with other library
            facilities not covered by this License, and distribute such a combined
            library, provided that the separate distribution of the work based on
            the Library and of the other library facilities is otherwise
            permitted, and provided that you do these two things:
            
                a) Accompany the combined library with a copy of the same work
                based on the Library, uncombined with any other library
                facilities.  This must be distributed under the terms of the
                Sections above.
            
                b) Give prominent notice with the combined library of the fact
                that part of it is a work based on the Library, and explaining
                where to find the accompanying uncombined form of the same work.
            
              8. You may not copy, modify, sublicense, link with, or distribute
            the Library except as expressly provided under this License.  Any
            attempt otherwise to copy, modify, sublicense, link with, or
            distribute the Library is void, and will automatically terminate your
            rights under this License.  However, parties who have received copies,
            or rights, from you under this License will not have their licenses
            terminated so long as such parties remain in full compliance.
            
              9. You are not required to accept this License, since you have not
            signed it.  However, nothing else grants you permission to modify or
            distribute the Library or its derivative works.  These actions are
            prohibited by law if you do not accept this License.  Therefore, by
            modifying or distributing the Library (or any work based on the
            Library), you indicate your acceptance of this License to do so, and
            all its terms and conditions for copying, distributing or modifying
            the Library or works based on it.
            
              10. Each time you redistribute the Library (or any work based on the
            Library), the recipient automatically receives a license from the
            original licensor to copy, distribute, link with or modify the Library
            subject to these terms and conditions.  You may not impose any further
            restrictions on the recipients' exercise of the rights granted herein.
            You are not responsible for enforcing compliance by third parties to
            this License.
            
              11. If, as a consequence of a court judgment or allegation of patent
            infringement or for any other reason (not limited to patent issues),
            conditions are imposed on you (whether by court order, agreement or
            otherwise) that contradict the conditions of this License, they do not
            excuse you from the conditions of this License.  If you cannot
            distribute so as to satisfy simultaneously your obligations under this
            License and any other pertinent obligations, then as a consequence you
            may not distribute the Library at all.  For example, if a patent
            license would not permit royalty-free redistribution of the Library by
            all those who receive copies directly or indirectly through you, then
            the only way you could satisfy both it and this License would be to
            refrain entirely from distribution of the Library.
            
            If any portion of this section is held invalid or unenforceable under any
            particular circumstance, the balance of the section is intended to apply,
            and the section as a whole is intended to apply in other circumstances.
            
            It is not the purpose of this section to induce you to infringe any
            patents or other property right claims or to contest validity of any
            such claims; this section has the sole purpose of protecting the
            integrity of the free software distribution system which is
            implemented by public license practices.  Many people have made
            generous contributions to the wide range of software distributed
            through that system in reliance on consistent application of that
            system; it is up to the author/donor to decide if he or she is willing
            to distribute software through any other system and a licensee cannot
            impose that choice.
            
            This section is intended to make thoroughly clear what is believed to
            be a consequence of the rest of this License.
            
              12. If the distribution and/or use of the Library is restricted in
            certain countries either by patents or by copyrighted interfaces, the
            original copyright holder who places the Library under this License may add
            an explicit geographical distribution limitation excluding those countries,
            so that distribution is permitted only in or among countries not thus
            excluded.  In such case, this License incorporates the limitation as if
            written in the body of this License.
            
              13. The Free Software Foundation may publish revised and/or new
            versions of the Library General Public License from time to time.
            Such new versions will be similar in spirit to the present version,
            but may differ in detail to address new problems or concerns.
            
            Each version is given a distinguishing version number.  If the Library
            specifies a version number of this License which applies to it and
            "any later version", you have the option of following the terms and
            conditions either of that version or of any later version published by
            the Free Software Foundation.  If the Library does not specify a
            license version number, you may choose any version ever published by
            the Free Software Foundation.
            
              14. If you wish to incorporate parts of the Library into other free
            programs whose distribution conditions are incompatible with these,
            write to the author to ask for permission.  For software which is
            copyrighted by the Free Software Foundation, write to the Free
            Software Foundation; we sometimes make exceptions for this.  Our
            decision will be guided by the two goals of preserving the free status
            of all derivatives of our free software and of promoting the sharing
            and reuse of software generally.
            
            			    NO WARRANTY
            
              15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
            WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
            EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
            OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
            KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
            PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
            LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
            THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
            
              16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
            WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
            AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
            FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
            CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
            LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
            RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
            FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
            SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
            DAMAGES.
            
            		     END OF TERMS AND CONDITIONS
            
                 Appendix: How to Apply These Terms to Your New Libraries
            
              If you develop a new library, and you want it to be of the greatest
            possible use to the public, we recommend making it free software that
            everyone can redistribute and change.  You can do so by permitting
            redistribution under these terms (or, alternatively, under the terms of the
            ordinary General Public License).
            
              To apply these terms, attach the following notices to the library.  It is
            safest to attach them to the start of each source file to most effectively
            convey the exclusion of warranty; and each file should have at least the
            "copyright" line and a pointer to where the full notice is found.
            
                <one line to give the library's name and a brief idea of what it does.>
                Copyright (C) <year>  <name of author>
            
                This library is free software; you can redistribute it and/or
                modify it under the terms of the GNU Library General Public
                License as published by the Free Software Foundation; either
                version 2 of the License, or (at your option) any later version.
            
                This library is distributed in the hope that it will be useful,
                but WITHOUT ANY WARRANTY; without even the implied warranty of
                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
                Library General Public License for more details.
            
                You should have received a copy of the GNU Library General Public
                License along with this library; if not, write to the Free
                Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
            
            Also add information on how to contact you by electronic and paper mail.
            
            You should also get your employer (if you work as a programmer) or your
            school, if any, to sign a "copyright disclaimer" for the library, if
            necessary.  Here is a sample; alter the names:
            
              Yoyodyne, Inc., hereby disclaims all copyright interest in the
              library `Frob' (a library for tweaking knobs) written by James Random Hacker.
            
              <signature of Ty Coon>, 1 April 1990
              Ty Coon, President of Vice
            
            That's all there is to it!
            
            
            modp base64 decoder show license homepage
             * MODP_B64 - High performance base64 encoder/decoder
             * Version 1.3 -- 17-Mar-2006
             * http://modp.com/release/base64
             *
             * Copyright (c) 2005, 2006  Nick Galbreath -- nickg [at] modp [dot] com
             * All rights reserved.
             *
             * Redistribution and use in source and binary forms, with or without
             * modification, are permitted provided that the following conditions are
             * met:
             *
             *   Redistributions of source code must retain the above copyright
             *   notice, this list of conditions and the following disclaimer.
             *
             *   Redistributions in binary form must reproduce the above copyright
             *   notice, this list of conditions and the following disclaimer in the
             *   documentation and/or other materials provided with the distribution.
             *
             *   Neither the name of the modp.com nor the names of its
             *   contributors may be used to endorse or promote products derived from
             *   this software without specific prior written permission.
             *
             * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
             * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
             * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
             * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
             * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
             * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
             * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
             * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
             * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
             * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
             * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            Mojo show license homepage
            // Copyright 2014 The Chromium Authors. All rights reserved.
            //
            // Redistribution and use in source and binary forms, with or without
            // modification, are permitted provided that the following conditions are
            // met:
            //
            //    * Redistributions of source code must retain the above copyright
            // notice, this list of conditions and the following disclaimer.
            //    * Redistributions in binary form must reproduce the above
            // copyright notice, this list of conditions and the following disclaimer
            // in the documentation and/or other materials provided with the
            // distribution.
            //    * Neither the name of Google Inc. nor the names of its
            // contributors may be used to endorse or promote products derived from
            // this software without specific prior written permission.
            //
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            MojoServices show license homepage
            // Copyright 2014 The Chromium Authors. All rights reserved.
            //
            // Redistribution and use in source and binary forms, with or without
            // modification, are permitted provided that the following conditions are
            // met:
            //
            //    * Redistributions of source code must retain the above copyright
            // notice, this list of conditions and the following disclaimer.
            //    * Redistributions in binary form must reproduce the above
            // copyright notice, this list of conditions and the following disclaimer
            // in the documentation and/or other materials provided with the
            // distribution.
            //    * Neither the name of Google Inc. nor the names of its
            // contributors may be used to endorse or promote products derived from
            // this software without specific prior written permission.
            //
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            NSBezierPath additions from Sean Patrick O'Brien show license homepage
            Copyright 2008 MolokoCacao
            All rights reserved
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted providing that the following conditions 
            are met:
            1. Redistributions of source code must retain the above copyright
               notice, this list of conditions and the following disclaimer.
            2. Redistributions in binary form must reproduce the above copyright
               notice, this list of conditions and the following disclaimer in the
               documentation and/or other materials provided with the distribution.
            
            THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
            IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
            WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
            ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
            DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
            DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
            OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
            HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
            STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
            IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
            POSSIBILITY OF SUCH DAMAGE.
            
            Mozc Japanese Input Method Editor show license homepage
            Copyright 2010-2011, Google Inc.
            All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
            * Redistributions of source code must retain the above copyright
            notice, this list of conditions and the following disclaimer.
            * Redistributions in binary form must reproduce the above
            copyright notice, this list of conditions and the following disclaimer
            in the documentation and/or other materials provided with the
            distribution.
            * Neither the name of Google Inc. nor the names of its
            contributors may be used to endorse or promote products derived from
            this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            
            Cocoa extension code from Camino show license homepage
            /* ***** BEGIN LICENSE BLOCK *****
             * Version: MPL 1.1/GPL 2.0/LGPL 2.1
             *
             * The contents of this file are subject to the Mozilla Public License Version
             * 1.1 (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.mozilla.org/MPL/
             *
             * Software distributed under the License is distributed on an "AS IS" basis,
             * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
             * for the specific language governing rights and limitations under the
             * License.
             *
             * The Original Code is mozilla.org code.
             *
             * The Initial Developer of the Original Code is
             * Netscape Communications Corporation.
             * Portions created by the Initial Developer are Copyright (C) 2002
             * the Initial Developer. All Rights Reserved.
             *
             * Contributor(s):
             *
             * Alternatively, the contents of this file may be used under the terms of
             * either the GNU General Public License Version 2 or later (the "GPL"), or
             * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
             * in which case the provisions of the GPL or the LGPL are applicable instead
             * of those above. If you wish to allow use of your version of this file only
             * under the terms of either the GPL or the LGPL, and not to allow others to
             * use your version of this file under the terms of the MPL, indicate your
             * decision by deleting the provisions above and replace them with the notice
             * and other provisions required by the GPL or the LGPL. If you do not delete
             * the provisions above, a recipient may use your version of this file under
             * the terms of any one of the MPL, the GPL or the LGPL.
             *
             * ***** END LICENSE BLOCK ***** */
            
            mt19937ar show license homepage
               A C-program for MT19937, with initialization improved 2002/1/26.
               Coded by Takuji Nishimura and Makoto Matsumoto.
            
               Before using, initialize the state by using init_genrand(seed)  
               or init_by_array(init_key, key_length).
            
               Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
               All rights reserved.                          
            
               Redistribution and use in source and binary forms, with or without
               modification, are permitted provided that the following conditions
               are met:
            
                 1. Redistributions of source code must retain the above copyright
                    notice, this list of conditions and the following disclaimer.
            
                 2. Redistributions in binary form must reproduce the above copyright
                    notice, this list of conditions and the following disclaimer in the
                    documentation and/or other materials provided with the distribution.
            
                 3. The names of its contributors may not be used to endorse or promote 
                    products derived from this software without specific prior written 
                    permission.
            
               THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
               "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
               LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
               A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
               CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
               EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
               PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
               PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
               LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
               NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
               SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            Netscape Plugin Application Programming Interface (NPAPI) show license homepage
            Version: MPL 1.1/GPL 2.0/LGPL 2.1
            
            The contents of this file are subject to the Mozilla Public License Version
            1.1 (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.mozilla.org/MPL/
            
            Software distributed under the License is distributed on an "AS IS" basis,
            WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
            for the specific language governing rights and limitations under the
            License.
            
            The Original Code is mozilla.org code.
            
            The Initial Developer of the Original Code is
            Netscape Communications Corporation.
            Portions created by the Initial Developer are Copyright (C) 1998
            the Initial Developer. All Rights Reserved.
            
            Contributor(s):
            
            Alternatively, the contents of this file may be used under the terms of
            either the GNU General Public License Version 2 or later (the "GPL"), or
            the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
            in which case the provisions of the GPL or the LGPL are applicable instead
            of those above. If you wish to allow use of your version of this file only
            under the terms of either the GPL or the LGPL, and not to allow others to
            use your version of this file under the terms of the MPL, indicate your
            decision by deleting the provisions above and replace them with the notice
            and other provisions required by the GPL or the LGPL. If you do not delete
            the provisions above, a recipient may use your version of this file under
            the terms of any one of the MPL, the GPL or the LGPL.
            
            ocmock show license homepage
              
              Copyright (c) 2004-2012 by Mulle Kybernetik. All rights reserved.
            
              Permission to use, copy, modify and distribute this software and its documentation
              is hereby granted, provided that both the copyright notice and this permission
              notice appear in all copies of the software, derivative works or modified versions,
              and any portions thereof, and that both notices appear in supporting documentation,
              and that credit is given to Mulle Kybernetik in all documents and publicity
              pertaining to direct or indirect use of this code or its derivatives.
            
              THIS IS EXPERIMENTAL SOFTWARE AND IT IS KNOWN TO HAVE BUGS, SOME OF WHICH MAY HAVE
              SERIOUS CONSEQUENCES. THE COPYRIGHT HOLDER ALLOWS FREE USE OF THIS SOFTWARE IN ITS
              "AS IS" CONDITION. THE COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY
              DAMAGES WHATSOEVER RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE
              OR OF ANY DERIVATIVE WORK.
            Omaha (Google Update) show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright [yyyy] [name of copyright owner]
            
               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.
            
            OpenMAX DL show license homepage
            Use of this source code is governed by a BSD-style license that can be
            found in the LICENSE file in the root of the source tree. All
            contributing project authors may be found in the AUTHORS file in the
            root of the source tree.
            
            The files were originally licensed by ARM Limited.
            
            The following files:
            
                * dl/api/omxtypes.h
                * dl/sp/api/omxSP.h
            
            are licensed by Khronos:
            
            Copyright © 2005-2008 The Khronos Group Inc. All Rights Reserved. 
            
            These materials are protected by copyright laws and contain material 
            proprietary to the Khronos Group, Inc.  You may use these materials 
            for implementing Khronos specifications, without altering or removing 
            any trademark, copyright or other notice from the specification.
            
            Khronos Group makes no, and expressly disclaims any, representations 
            or warranties, express or implied, regarding these materials, including, 
            without limitation, any implied warranties of merchantability or fitness 
            for a particular purpose or non-infringement of any intellectual property. 
            Khronos Group makes no, and expressly disclaims any, warranties, express 
            or implied, regarding the correctness, accuracy, completeness, timeliness, 
            and reliability of these materials. 
            
            Under no circumstances will the Khronos Group, or any of its Promoters, 
            Contributors or Members or their respective partners, officers, directors, 
            employees, agents or representatives be liable for any damages, whether 
            direct, indirect, special or consequential damages for lost revenues, 
            lost profits, or otherwise, arising from or in connection with these 
            materials.
            
            Khronos and OpenMAX are trademarks of the Khronos Group Inc. 
            
            opus show license homepage
            Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic,
                                Jean-Marc Valin, Timothy B. Terriberry,
                                CSIRO, Gregory Maxwell, Mark Borgerding,
                                Erik de Castro Lopo
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions
            are met:
            
            - Redistributions of source code must retain the above copyright
            notice, this list of conditions and the following disclaimer.
            
            - Redistributions in binary form must reproduce the above copyright
            notice, this list of conditions and the following disclaimer in the
            documentation and/or other materials provided with the distribution.
            
            - Neither the name of Internet Society, IETF or IETF Trust, nor the
            names of specific contributors, may be used to endorse or promote
            products derived from this software without specific prior written
            permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
            OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
            EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
            PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
            PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
            LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
            NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
            SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            Opus is subject to the royalty-free patent licenses which are
            specified at:
            
            Xiph.Org Foundation:
            https://datatracker.ietf.org/ipr/1524/
            
            Microsoft Corporation:
            https://datatracker.ietf.org/ipr/1914/
            
            Broadcom Corporation:
            https://datatracker.ietf.org/ipr/1526/
            
            OTS (OpenType Sanitizer) show license homepage
            // Copyright (c) 2009 The Chromium Authors. All rights reserved.
            //
            // Redistribution and use in source and binary forms, with or without
            // modification, are permitted provided that the following conditions are
            // met:
            //
            //    * Redistributions of source code must retain the above copyright
            // notice, this list of conditions and the following disclaimer.
            //    * Redistributions in binary form must reproduce the above
            // copyright notice, this list of conditions and the following disclaimer
            // in the documentation and/or other materials provided with the
            // distribution.
            //    * Neither the name of Google Inc. nor the names of its
            // contributors may be used to endorse or promote products derived from
            // this software without specific prior written permission.
            //
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            PDFium show license homepage
            // Copyright 2014 PDFium Authors. All rights reserved.
            //
            // Redistribution and use in source and binary forms, with or without
            // modification, are permitted provided that the following conditions are
            // met:
            //
            //    * Redistributions of source code must retain the above copyright
            // notice, this list of conditions and the following disclaimer.
            //    * Redistributions in binary form must reproduce the above
            // copyright notice, this list of conditions and the following disclaimer
            // in the documentation and/or other materials provided with the
            // distribution.
            //    * Neither the name of Google Inc. nor the names of its
            // contributors may be used to endorse or promote products derived from
            // this software without specific prior written permission.
            //
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            PLY (Python Lex-Yacc) show license homepage
            PLY (Python Lex-Yacc)                   Version 3.4
            
            Copyright (C) 2001-2011,
            David M. Beazley (Dabeaz LLC)
            All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
            * Redistributions of source code must retain the above copyright notice,
              this list of conditions and the following disclaimer.  
            * Redistributions in binary form must reproduce the above copyright notice, 
              this list of conditions and the following disclaimer in the documentation
              and/or other materials provided with the distribution.  
            * Neither the name of the David Beazley or Dabeaz LLC may be used to
              endorse or promote products derived from this software without
              specific prior written permission. 
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            Polymer show license homepage
            // Copyright (c) 2012 The Polymer Authors. All rights reserved.
            //
            // Redistribution and use in source and binary forms, with or without
            // modification, are permitted provided that the following conditions are
            // met:
            //
            //    * Redistributions of source code must retain the above copyright
            // notice, this list of conditions and the following disclaimer.
            //    * Redistributions in binary form must reproduce the above
            // copyright notice, this list of conditions and the following disclaimer
            // in the documentation and/or other materials provided with the
            // distribution.
            //    * Neither the name of Google Inc. nor the names of its
            // contributors may be used to endorse or promote products derived from
            // this software without specific prior written permission.
            //
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            powergadget_lib show license homepage
            Copyright (c) 2014, Intel Corporation
            All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
                * Redistributions of source code must retain the above copyright
            notice, this list of conditions and the following disclaimer.
                * Redistributions in binary form must reproduce the above
            copyright notice, this list of conditions and the following disclaimer
            in the documentation and/or other materials provided with the
            distribution.
                * Neither the name of Intel Corporation nor the names of its
            contributors may be used to endorse or promote products derived from
            this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            Protocol Buffers show license homepage
            Copyright 2008, Google Inc.
            All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
                * Redistributions of source code must retain the above copyright
            notice, this list of conditions and the following disclaimer.
                * Redistributions in binary form must reproduce the above
            copyright notice, this list of conditions and the following disclaimer
            in the documentation and/or other materials provided with the
            distribution.
                * Neither the name of Google Inc. nor the names of its
            contributors may be used to endorse or promote products derived from
            this software without specific prior written permission.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            Code generated by the Protocol Buffer compiler is owned by the owner
            of the input file used when generating it.  This code is not
            standalone and requires a support library to be linked with it.  This
            support library is itself covered by the above license.
            
            py_trace_event show license homepage
            // Copyright (c) 2011 The Chromium Authors. All rights reserved.
            //
            // Redistribution and use in source and binary forms, with or without
            // modification, are permitted provided that the following conditions are
            // met:
            //
            //    * Redistributions of source code must retain the above copyright
            // notice, this list of conditions and the following disclaimer.
            //    * Redistributions in binary form must reproduce the above
            // copyright notice, this list of conditions and the following disclaimer
            // in the documentation and/or other materials provided with the
            // distribution.
            //    * Neither the name of Google Inc. nor the names of its
            // contributors may be used to endorse or promote products derived from
            // this software without specific prior written permission.
            //
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            coverage show license homepage
            """Code coverage measurement for Python.
            
            Ned Batchelder
            http://nedbatchelder.com/code/coverage
            
            """
            
            from coverage.version import __version__, __url__
            
            from coverage.control import coverage, process_startup
            from coverage.data import CoverageData
            from coverage.cmdline import main, CoverageScript
            from coverage.misc import CoverageException
            
            # Module-level functions.  The original API to this module was based on
            # functions defined directly in the module, with a singleton of the coverage()
            # class.  That design hampered programmability, so the current api uses
            # explicitly-created coverage objects.  But for backward compatibility, here we
            # define the top-level functions to create the singleton when they are first
            # called.
            
            # Singleton object for use with module-level functions.  The singleton is
            # created as needed when one of the module-level functions is called.
            _the_coverage = None
            
            def _singleton_method(name):
                """Return a function to the `name` method on a singleton `coverage` object.
            
                The singleton object is created the first time one of these functions is
                called.
            
                """
                # Disable pylint msg W0612, because a bunch of variables look unused, but
                # they're accessed via locals().
                # pylint: disable=W0612
            
                def wrapper(*args, **kwargs):
                    """Singleton wrapper around a coverage method."""
                    global _the_coverage
                    if not _the_coverage:
                        _the_coverage = coverage(auto_data=True)
                    return getattr(_the_coverage, name)(*args, **kwargs)
            
                import inspect
                meth = getattr(coverage, name)
                args, varargs, kw, defaults = inspect.getargspec(meth)
                argspec = inspect.formatargspec(args[1:], varargs, kw, defaults)
                docstring = meth.__doc__
                wrapper.__doc__ = ("""\
                    A first-use-singleton wrapper around coverage.%(name)s.
            
                    This wrapper is provided for backward compatibility with legacy code.
                    New code should use coverage.%(name)s directly.
            
                    %(name)s%(argspec)s:
            
                    %(docstring)s
                    """ % locals()
                    )
            
                return wrapper
            
            
            # Define the module-level functions.
            use_cache = _singleton_method('use_cache')
            start =     _singleton_method('start')
            stop =      _singleton_method('stop')
            erase =     _singleton_method('erase')
            exclude =   _singleton_method('exclude')
            analysis =  _singleton_method('analysis')
            analysis2 = _singleton_method('analysis2')
            report =    _singleton_method('report')
            annotate =  _singleton_method('annotate')
            
            
            # On Windows, we encode and decode deep enough that something goes wrong and
            # the encodings.utf_8 module is loaded and then unloaded, I don't know why.
            # Adding a reference here prevents it from being unloaded.  Yuk.
            import encodings.utf_8
            
            # Because of the "from coverage.control import fooey" lines at the top of the
            # file, there's an entry for coverage.coverage in sys.modules, mapped to None.
            # This makes some inspection tools (like pydoc) unable to find the class
            # coverage.coverage.  So remove that entry.
            import sys
            try:
                del sys.modules['coverage.coverage']
            except KeyError:
                pass
            
            
            # COPYRIGHT AND LICENSE
            #
            # Copyright 2001 Gareth Rees.  All rights reserved.
            # Copyright 2004-2013 Ned Batchelder.  All rights reserved.
            #
            # Redistribution and use in source and binary forms, with or without
            # modification, are permitted provided that the following conditions are
            # met:
            #
            # 1. Redistributions of source code must retain the above copyright
            #    notice, this list of conditions and the following disclaimer.
            #
            # 2. Redistributions in binary form must reproduce the above copyright
            #    notice, this list of conditions and the following disclaimer in the
            #    documentation and/or other materials provided with the
            #    distribution.
            #
            # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            # HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
            # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
            # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
            # OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
            # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
            # TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
            # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
            # DAMAGE.
            
            Python FTP server library show license homepage
            ======================================================================
            Copyright (C) 2007-2012  Giampaolo Rodola' <g.rodola@gmail.com>
            
                                     All Rights Reserved
            
            Permission to use, copy, modify, and distribute this software and
            its documentation for any purpose and without fee is hereby
            granted, provided that the above copyright notice appear in all
            copies and that both that copyright notice and this permission
            notice appear in supporting documentation, and that the name of
            Giampaolo Rodola' not be used in advertising or publicity pertaining to
            distribution of the software without specific, written prior
            permission.
            
            Giampaolo Rodola' DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
            INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
            NO EVENT Giampaolo Rodola' BE LIABLE FOR ANY SPECIAL, INDIRECT OR
            CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
            OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
            NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
            CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
            ======================================================================
            
            mock show license homepage
            Copyright (c) 2003-2012, Michael Foord
            All rights reserved.
            
            Redistribution and use in source and binary forms, with or without
            modification, are permitted provided that the following conditions are
            met:
            
                * Redistributions of source code must retain the above copyright
                  notice, this list of conditions and the following disclaimer.
            
                * Redistributions in binary form must reproduce the above
                  copyright notice, this list of conditions and the following
                  disclaimer in the documentation and/or other materials provided
                  with the distribution.
            
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            Quick Color Management System show license homepage
            qcms
            Copyright (C) 2009 Mozilla Corporation
            Copyright (C) 1998-2007 Marti Maria
            
            Permission is hereby granted, free of charge, to any person obtaining 
            a copy of this software and associated documentation files (the "Software"), 
            to deal in the Software without restriction, including without limitation 
            the rights to use, copy, modify, merge, publish, distribute, sublicense, 
            and/or sell copies of the Software, and to permit persons to whom the Software 
            is furnished to do so, subject to the following conditions:
            
            The above copyright notice and this permission notice shall be included in 
            all copies or substantial portions of the Software.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
            THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
            
            re2 - an efficient, principled regular expression library show license homepage
            // Copyright (c) 2009 The RE2 Authors. All rights reserved.
            //
            // Redistribution and use in source and binary forms, with or without
            // modification, are permitted provided that the following conditions are
            // met:
            //
            //    * Redistributions of source code must retain the above copyright
            // notice, this list of conditions and the following disclaimer.
            //    * Redistributions in binary form must reproduce the above
            // copyright notice, this list of conditions and the following disclaimer
            // in the documentation and/or other materials provided with the
            // distribution.
            //    * Neither the name of Google Inc. nor the names of its
            // contributors may be used to endorse or promote products derived from
            // this software without specific prior written permission.
            //
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            
            readability show license homepage
            Copyright 2010 Arc90 Inc
            
            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.
            
            google-safe-browsing show license homepage
            Copyright 2009 Google Inc.
            
            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.
            
            sfntly show license homepage
                                             Apache License
                                       Version 2.0, January 2004
                                    http://www.apache.org/licenses/
            
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
            
               1. Definitions.
            
                  "License" shall mean the terms and conditions for use, reproduction,
                  and distribution as defined by Sections 1 through 9 of this document.
            
                  "Licensor" shall mean the copyright owner or entity authorized by
                  the copyright owner that is granting the License.
            
                  "Legal Entity" shall mean the union of the acting entity and all
                  other entities that control, are controlled by, or are under common
                  control with that entity. For the purposes of this definition,
                  "control" means (i) the power, direct or indirect, to cause the
                  direction or management of such entity, whether by contract or
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
                  outstanding shares, or (iii) beneficial ownership of such entity.
            
                  "You" (or "Your") shall mean an individual or Legal Entity
                  exercising permissions granted by this License.
            
                  "Source" form shall mean the preferred form for making modifications,
                  including but not limited to software source code, documentation
                  source, and configuration files.
            
                  "Object" form shall mean any form resulting from mechanical
                  transformation or translation of a Source form, including but
                  not limited to compiled object code, generated documentation,
                  and conversions to other media types.
            
                  "Work" shall mean the work of authorship, whether in Source or
                  Object form, made available under the License, as indicated by a
                  copyright notice that is included in or attached to the work
                  (an example is provided in the Appendix below).
            
                  "Derivative Works" shall mean any work, whether in Source or Object
                  form, that is based on (or derived from) the Work and for which the
                  editorial revisions, annotations, elaborations, or other modifications
                  represent, as a whole, an original work of authorship. For the purposes
                  of this License, Derivative Works shall not include works that remain
                  separable from, or merely link (or bind by name) to the interfaces of,
                  the Work and Derivative Works thereof.
            
                  "Contribution" shall mean any work of authorship, including
                  the original version of the Work and any modifications or additions
                  to that Work or Derivative Works thereof, that is intentionally
                  submitted to Licensor for inclusion in the Work by the copyright owner
                  or by an individual or Legal Entity authorized to submit on behalf of
                  the copyright owner. For the purposes of this definition, "submitted"
                  means any form of electronic, verbal, or written communication sent
                  to the Licensor or its representatives, including but not limited to
                  communication on electronic mailing lists, source code control systems,
                  and issue tracking systems that are managed by, or on behalf of, the
                  Licensor for the purpose of discussing and improving the Work, but
                  excluding communication that is conspicuously marked or otherwise
                  designated in writing by the copyright owner as "Not a Contribution."
            
                  "Contributor" shall mean Licensor and any individual or Legal Entity
                  on behalf of whom a Contribution has been received by Licensor and
                  subsequently incorporated within the Work.
            
               2. Grant of Copyright License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  copyright license to reproduce, prepare Derivative Works of,
                  publicly display, publicly perform, sublicense, and distribute the
                  Work and such Derivative Works in Source or Object form.
            
               3. Grant of Patent License. Subject to the terms and conditions of
                  this License, each Contributor hereby grants to You a perpetual,
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                  (except as stated in this section) patent license to make, have made,
                  use, offer to sell, sell, import, and otherwise transfer the Work,
                  where such license applies only to those patent claims licensable
                  by such Contributor that are necessarily infringed by their
                  Contribution(s) alone or by combination of their Contribution(s)
                  with the Work to which such Contribution(s) was submitted. If You
                  institute patent litigation against any entity (including a
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
                  or a Contribution incorporated within the Work constitutes direct
                  or contributory patent infringement, then any patent licenses
                  granted to You under this License for that Work shall terminate
                  as of the date such litigation is filed.
            
               4. Redistribution. You may reproduce and distribute copies of the
                  Work or Derivative Works thereof in any medium, with or without
                  modifications, and in Source or Object form, provided that You
                  meet the following conditions:
            
                  (a) You must give any other recipients of the Work or
                      Derivative Works a copy of this License; and
            
                  (b) You must cause any modified files to carry prominent notices
                      stating that You changed the files; and
            
                  (c) You must retain, in the Source form of any Derivative Works
                      that You distribute, all copyright, patent, trademark, and
                      attribution notices from the Source form of the Work,
                      excluding those notices that do not pertain to any part of
                      the Derivative Works; and
            
                  (d) If the Work includes a "NOTICE" text file as part of its
                      distribution, then any Derivative Works that You distribute must
                      include a readable copy of the attribution notices contained
                      within such NOTICE file, excluding those notices that do not
                      pertain to any part of the Derivative Works, in at least one
                      of the following places: within a NOTICE text file distributed
                      as part of the Derivative Works; within the Source form or
                      documentation, if provided along with the Derivative Works; or,
                      within a display generated by the Derivative Works, if and
                      wherever such third-party notices normally appear. The contents
                      of the NOTICE file are for informational purposes only and
                      do not modify the License. You may add Your own attribution
                      notices within Derivative Works that You distribute, alongside
                      or as an addendum to the NOTICE text from the Work, provided
                      that such additional attribution notices cannot be construed
                      as modifying the License.
            
                  You may add Your own copyright statement to Your modifications and
                  may provide additional or different license terms and conditions
                  for use, reproduction, or distribution of Your modifications, or
                  for any such Derivative Works as a whole, provided Your use,
                  reproduction, and distribution of the Work otherwise complies with
                  the conditions stated in this License.
            
               5. Submission of Contributions. Unless You explicitly state otherwise,
                  any Contribution intentionally submitted for inclusion in the Work
                  by You to the Licensor shall be under the terms and conditions of
                  this License, without any additional terms or conditions.
                  Notwithstanding the above, nothing herein shall supersede or modify
                  the terms of any separate license agreement you may have executed
                  with Licensor regarding such Contributions.
            
               6. Trademarks. This License does not grant permission to use the trade
                  names, trademarks, service marks, or product names of the Licensor,
                  except as required for reasonable and customary use in describing the
                  origin of the Work and reproducing the content of the NOTICE file.
            
               7. Disclaimer of Warranty. Unless required by applicable law or
                  agreed to in writing, Licensor provides the Work (and each
                  Contributor provides its Contributions) on an "AS IS" BASIS,
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                  implied, including, without limitation, any warranties or conditions
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                  PARTICULAR PURPOSE. You are solely responsible for determining the
                  appropriateness of using or redistributing the Work and assume any
                  risks associated with Your exercise of permissions under this License.
            
               8. Limitation of Liability. In no event and under no legal theory,
                  whether in tort (including negligence), contract, or otherwise,
                  unless required by applicable law (such as deliberate and grossly
                  negligent acts) or agreed to in writing, shall any Contributor be
                  liable to You for damages, including any direct, indirect, special,
                  incidental, or consequential damages of any character arising as a
                  result of this License or out of the use or inability to use the
                  Work (including but not limited to damages for loss of goodwill,
                  work stoppage, computer failure or malfunction, or any and all
                  other commercial damages or losses), even if such Contributor
                  has been advised of the possibility of such damages.
            
               9. Accepting Warranty or Additional Liability. While redistributing
                  the Work or Derivative Works thereof, You may choose to offer,
                  and charge a fee for, acceptance of support, warranty, indemnity,
                  or other liability obligations and/or rights consistent with this
                  License. However, in accepting such obligations, You may act only
                  on Your own behalf and on Your sole responsibility, not on behalf
                  of any other Contributor, and only if You agree to indemnify,
                  defend, and hold each Contributor harmless for any liability
                  incurred by, or claims asserted against, such Contributor by reason
                  of your accepting any such warranty or additional liability.
            
               END OF TERMS AND CONDITIONS
            
               APPENDIX: How to apply the Apache License to your work.
            
                  To apply the Apache License to your work, attach the following
                  boilerplate notice, with the fields enclosed by brackets "[]"
                  replaced with your own identifying information. (Don't include
                  the brackets!)  The text should be enclosed in the appropriate
                  comment syntax for the file format. We also recommend that a
                  file or class name and description of purpose be included on the
                  same "printed page" as the copyright notice for easier
                  identification within third-party archives.
            
               Copyright 2011 Google Inc. 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.
            
            
            simplejson show license homepage
            Copyright (c) 2006 Bob Ippolito
            
            Permission is hereby granted, free of charge, to any person obtaining a copy of
            this software and associated documentation files (the "Software"), to deal in
            the Software without restriction, including without limitation the rights to
            use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
            of the Software, and to permit persons to whom the Software is furnished to do
            so, subject to the following conditions:
            
            The above copyright notice and this permission notice shall be included in all
            copies or substantial portions of the Software.
            
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
            SOFTWARE.
            
            skia show license homepage
            // Copyright (c) 2011 Google Inc. All rights reserved.
            //
            // Redistribution and use in source and binary forms, with or without
            // modification, are permitted provided that the following conditions are
            // met:
            //
            //    * Redistributions of source code must retain the above copyright
            // notice, this list of conditions and the following disclaimer.
            //    * Redistributions in binary form must reproduce the above
            // copyright notice, this list of conditions and the following disclaimer
            // in the documentation and/or other materials provided with the
            // distribution.
            //    * Neither the name of Google Inc. nor the names of its
            // contributors may be used to endorse or promote products derived f