From 27e35c28f95fbc3e28df60480d53aa2fce08b070 Mon Sep 17 00:00:00 2001 From: benny Date: Tue, 3 Nov 2015 15:30:34 +0800 Subject: [PATCH 001/156] setup perseus env in junyiacademy --- build/perseus-1.js | 73 +- ke-deps.js | 2 +- lib/react-014.js | 18759 ++++++++++++++++++++++++++++ lib/react-dom.js | 42 + lib/react-with-addons-013.js | 21568 +++++++++++++++++++++++++++++++++ lib/react-with-addons-014.js | 20707 +++++++++++++++++++++++++++++++ 6 files changed, 61109 insertions(+), 42 deletions(-) create mode 100644 lib/react-014.js create mode 100644 lib/react-dom.js create mode 100644 lib/react-with-addons-013.js create mode 100644 lib/react-with-addons-014.js diff --git a/build/perseus-1.js b/build/perseus-1.js index 4e12cf83cf..2aa17bda46 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -607,7 +607,6 @@ var React = require('react'); var DragTarget = React.createClass({displayName: 'DragTarget', propTypes: { onDrop: React.PropTypes.func.isRequired, - component: React.PropTypes.component, shouldDragHighlight: React.PropTypes.func }, render: function() { @@ -3490,10 +3489,7 @@ var Tooltip = React.createClass({displayName: 'Tooltip', ), horizontalAlign: React.PropTypes.oneOf( _.keys(HORIZONTAL_ALIGNMNENTS) - ), - children: React.PropTypes.arrayOf( - React.PropTypes.component - ).isRequired + ) }, getDefaultProps: function() { @@ -4391,7 +4387,7 @@ var GraphSettings = React.createClass({displayName: 'GraphSettings', step: [1, 1], gridStep: [1, 1], snapStep: Util.snapStepFromGridStep( - this.props.gridStep || [1, 1]), + this.gridStep || [1, 1]), valid: true, backgroundImage: defaultBackgroundImage, markings: "graph", @@ -12923,7 +12919,7 @@ module.exports = { transform: function(editorProps) { return _.pick(editorProps, "items", "categories"); }, - hidden: true + hidden: false }; @@ -13183,7 +13179,7 @@ module.exports = { widget: Dropdown, editor: DropdownEditor, transform: propTransform, - hidden: true + hidden: false }; },{"../components/fancy-select.jsx":120,"../mixins/jsonify-props.jsx":160,"../perseus-api.jsx":162,"../util.js":168,"react":115,"react-components/info-tip":5}],174:[function(require,module,exports){ @@ -13376,7 +13372,7 @@ var ExampleGraphieWidgetEditor = React.createClass({displayName: 'ExampleGraphie module.exports = { name: "example-graphie-widget", displayName: "Example Graphie Widget", - hidden: true, // Hides this widget from the Perseus.Editor widget select + hidden: false, // Hides this widget from the Perseus.Editor widget select widget: ExampleGraphieWidget, editor: ExampleGraphieWidgetEditor }; @@ -13560,7 +13556,7 @@ var ExampleWidgetEditor = React.createClass({displayName: 'ExampleWidgetEditor', module.exports = { name: "example-widget", displayName: "Example Widget", - hidden: true, // Hides this widget from the Perseus.Editor widget select + hidden: false, // Hides this widget from the Perseus.Editor widget select widget: ExampleWidget, editor: ExampleWidgetEditor }; @@ -14234,7 +14230,7 @@ module.exports = { transform: function(editorProps) { return _.pick(editorProps, "times", "functions"); }, - hidden: true + hidden: false }; },{"../components/input-with-examples.jsx":126,"../components/math-input.jsx":127,"../components/prop-check-box.jsx":130,"../components/tex-buttons.jsx":133,"../enabled-features.jsx":144,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../perseus-api.jsx":162,"../tex.jsx":167,"react":115,"react-components/info-tip":5,"react-components/tooltip":114}],177:[function(require,module,exports){ @@ -14501,7 +14497,7 @@ module.exports = { displayName: "Iframe", widget: Iframe, // Let's not expose it to all content creators yet - hidden: true, + hidden: false, editor: IframeEditor }; @@ -15462,12 +15458,10 @@ var InteractiveGraph = React.createClass({displayName: 'InteractiveGraph', }, getDefaultProps: function() { - var range = this.props.range || [[-10, 10], [-10, 10]]; - var step = this.props.step || [1, 1]; - var gridStep = this.props.gridStep || - Util.getGridStep(range, step, defaultBoxSize); - var snapStep = this.props.snapStep || - Util.snapStepFromGridStep(gridStep); + var range = [[-10, 10], [-10, 10]]; + var step = [1, 1]; + var gridStep = Util.getGridStep(range, step, defaultBoxSize); + var snapStep = Util.snapStepFromGridStep(gridStep); return { labels: ["x", "y"], range: range, @@ -17475,12 +17469,10 @@ var InteractiveGraphEditor = React.createClass({displayName: 'InteractiveGraphEd className: "perseus-widget-interactive-graph", getDefaultProps: function() { - var range = this.props.range || [[-10, 10], [-10, 10]]; - var step = this.props.step || [1, 1]; - var gridStep = this.props.gridStep || - Util.getGridStep(range, step, defaultEditorBoxSize); - var snapStep = this.props.snapStep || - Util.snapStepFromGridStep(gridStep); + var range = [[-10, 10], [-10, 10]]; + var step = [1, 1]; + var gridStep = Util.getGridStep(range, step, defaultEditorBoxSize); + var snapStep = Util.snapStepFromGridStep(gridStep); return { box: [defaultEditorBoxSize, defaultEditorBoxSize], labels: ["x", "y"], @@ -17679,7 +17671,7 @@ module.exports = { displayName: "Interactive graph", widget: InteractiveGraph, editor: InteractiveGraphEditor, - hidden: true + hidden: false }; },{"../components/graph-settings.jsx":121,"../components/graph.jsx":122,"../components/number-input.jsx":129,"../interactive2.js":148,"../util.js":168,"react":115,"react-components/info-tip":5}],181:[function(require,module,exports){ @@ -18128,7 +18120,7 @@ var InteractiveNumberLineEditor = React.createClass({displayName: 'InteractiveNu module.exports = { name: "interactive-number-line", displayName: "Number line 2", - hidden: true, + hidden: false, widget: InteractiveNumberLine, editor: InteractiveNumberLineEditor }; @@ -18589,7 +18581,7 @@ var transformProps = function(editorProps) { module.exports = { name: "lights-puzzle", displayName: "Lights Puzzle", - hidden: true, + hidden: false, widget: LightsPuzzle, editor: LightsPuzzleEditor, transform: transformProps @@ -18838,7 +18830,7 @@ module.exports = { displayName: "Two column matcher", widget: Matcher, editor: MatcherEditor, - hidden: true + hidden: false }; },{"../components/prop-check-box.jsx":130,"../components/sortable.jsx":132,"../components/text-list-editor.jsx":135,"../renderer.jsx":165,"../util.js":168,"react":115,"react-components/info-tip":5}],184:[function(require,module,exports){ @@ -19200,7 +19192,7 @@ module.exports = { editor: MeasurerEditor, version: {major: 1, minor: 0}, propUpgrades: propUpgrades, - hidden: true + hidden: false }; },{"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../components/range-input.jsx":131,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"react":115,"react-components/info-tip":5}],185:[function(require,module,exports){ @@ -20072,7 +20064,7 @@ module.exports = { widget: NumberLine, editor: NumberLineEditor, transform: NumberLineTransform, - hidden: true + hidden: false }; },{"../components/graphie.jsx":125,"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../components/range-input.jsx":131,"../interactive2.js":148,"../interactive2/interactive-util.js":149,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../util.js":168,"react":115,"react-components/button-group":3,"react-components/info-tip":5}],186:[function(require,module,exports){ @@ -20531,7 +20523,7 @@ module.exports = { widget: NumericInput, editor: NumericInputEditor, transform: propsTransform, - hidden: true + hidden: false }; },{"../components/input-with-examples.jsx":126,"../components/multi-button-group.jsx":128,"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../editor.jsx":143,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../util.js":168,"react":115,"react-components/button-group":3,"react-components/info-tip":5}],187:[function(require,module,exports){ @@ -21207,7 +21199,7 @@ module.exports = { displayName: "Orderer", widget: Orderer, editor: OrdererEditor, - hidden: true + hidden: false }; },{"../components/text-list-editor.jsx":135,"../renderer.jsx":165,"../util.js":168,"react":115,"react-components/info-tip":5}],188:[function(require,module,exports){ @@ -22208,7 +22200,7 @@ module.exports = { displayName: "Plotter", widget: Plotter, editor: PlotterEditor, - hidden: true + hidden: false }; },{"../components/number-input.jsx":129,"../components/range-input.jsx":131,"../components/text-list-editor.jsx":135,"../util.js":168,"react":115,"react-components/info-tip":5}],189:[function(require,module,exports){ @@ -22440,12 +22432,11 @@ var Radio = React.createClass({displayName: 'Radio', } } - return _.extend({}, this.props, { + return { values: values, noneOfTheAboveIndex: noneOfTheAboveIndex, noneOfTheAboveSelected: noneOfTheAboveSelected - } - ); + }; } else { // Nothing checked return { @@ -22913,7 +22904,7 @@ module.exports = { displayName: "Sorter", widget: Sorter, editor: SorterEditor, - hidden: true + hidden: false }; },{"../components/prop-check-box.jsx":130,"../components/sortable.jsx":132,"../components/text-list-editor.jsx":135,"../util.js":168,"react":115,"react-components/info-tip":5}],191:[function(require,module,exports){ @@ -23234,7 +23225,7 @@ module.exports = { displayName: "Table of values", widget: Table, editor: TableEditor, - hidden: true + hidden: false }; },{"../editor.jsx":143,"../renderer.jsx":165,"../util.js":168,"react":115,"react-components/info-tip":5}],192:[function(require,module,exports){ @@ -25635,7 +25626,7 @@ var TransformerEditor = React.createClass({displayName: 'TransformerEditor', // so that we don't have all this duplication getDefaultProps: function() { return _.defaults({ - graph: defaultGraphProps(this.props.graph, 340) + graph: defaultGraphProps(null, 340) }, defaultTransformerProps); }, @@ -25644,7 +25635,7 @@ var TransformerEditor = React.createClass({displayName: 'TransformerEditor', // this can happen because the graph json doesn't include // box, for example var graph = _.extend( - defaultGraphProps(this.props.graph, 340), + defaultGraphProps(null, 340), this.props.graph ); @@ -25755,7 +25746,7 @@ module.exports = { displayName: "Transformer", widget: Transformer, editor: TransformerEditor, - hidden: true + hidden: false }; },{"../components/graph-settings.jsx":121,"../components/graph.jsx":122,"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../tex.jsx":167,"../util.js":168,"react":115,"react-components/info-tip":5}]},{},[163]) diff --git a/ke-deps.js b/ke-deps.js index 569688ee17..cbd333fd9c 100644 --- a/ke-deps.js +++ b/ke-deps.js @@ -4,7 +4,7 @@ define(function(require) { // executed immediately when the exercise content bundle is loaded, so we load // them all here. -require("./ke/utils/answer-types.js"); +//require("./ke/utils/answer-types.js"); require("./ke/utils/graphie.js"); require("./ke/utils/interactive.js"); require("./ke/utils/kline.js"); diff --git a/lib/react-014.js b/lib/react-014.js new file mode 100644 index 0000000000..7ca7f8e80e --- /dev/null +++ b/lib/react-014.js @@ -0,0 +1,18759 @@ + /** + * React v0.14.0 + */ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.React = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 8 && documentMode <= 11); + +/** + * Opera <= 12 includes TextEvent in window, but does not fire + * text input events. Rely on keypress instead. + */ +function isPresto() { + var opera = window.opera; + return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12; +} + +var SPACEBAR_CODE = 32; +var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE); + +var topLevelTypes = EventConstants.topLevelTypes; + +// Events and their corresponding property names. +var eventTypes = { + beforeInput: { + phasedRegistrationNames: { + bubbled: keyOf({ onBeforeInput: null }), + captured: keyOf({ onBeforeInputCapture: null }) + }, + dependencies: [topLevelTypes.topCompositionEnd, topLevelTypes.topKeyPress, topLevelTypes.topTextInput, topLevelTypes.topPaste] + }, + compositionEnd: { + phasedRegistrationNames: { + bubbled: keyOf({ onCompositionEnd: null }), + captured: keyOf({ onCompositionEndCapture: null }) + }, + dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionEnd, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown] + }, + compositionStart: { + phasedRegistrationNames: { + bubbled: keyOf({ onCompositionStart: null }), + captured: keyOf({ onCompositionStartCapture: null }) + }, + dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionStart, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown] + }, + compositionUpdate: { + phasedRegistrationNames: { + bubbled: keyOf({ onCompositionUpdate: null }), + captured: keyOf({ onCompositionUpdateCapture: null }) + }, + dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionUpdate, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown] + } +}; + +// Track whether we've ever handled a keypress on the space key. +var hasSpaceKeypress = false; + +/** + * Return whether a native keypress event is assumed to be a command. + * This is required because Firefox fires `keypress` events for key commands + * (cut, copy, select-all, etc.) even though no character is inserted. + */ +function isKeypressCommand(nativeEvent) { + return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && + // ctrlKey && altKey is equivalent to AltGr, and is not a command. + !(nativeEvent.ctrlKey && nativeEvent.altKey); +} + +/** + * Translate native top level events into event types. + * + * @param {string} topLevelType + * @return {object} + */ +function getCompositionEventType(topLevelType) { + switch (topLevelType) { + case topLevelTypes.topCompositionStart: + return eventTypes.compositionStart; + case topLevelTypes.topCompositionEnd: + return eventTypes.compositionEnd; + case topLevelTypes.topCompositionUpdate: + return eventTypes.compositionUpdate; + } +} + +/** + * Does our fallback best-guess model think this event signifies that + * composition has begun? + * + * @param {string} topLevelType + * @param {object} nativeEvent + * @return {boolean} + */ +function isFallbackCompositionStart(topLevelType, nativeEvent) { + return topLevelType === topLevelTypes.topKeyDown && nativeEvent.keyCode === START_KEYCODE; +} + +/** + * Does our fallback mode think that this event is the end of composition? + * + * @param {string} topLevelType + * @param {object} nativeEvent + * @return {boolean} + */ +function isFallbackCompositionEnd(topLevelType, nativeEvent) { + switch (topLevelType) { + case topLevelTypes.topKeyUp: + // Command keys insert or clear IME input. + return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1; + case topLevelTypes.topKeyDown: + // Expect IME keyCode on each keydown. If we get any other + // code we must have exited earlier. + return nativeEvent.keyCode !== START_KEYCODE; + case topLevelTypes.topKeyPress: + case topLevelTypes.topMouseDown: + case topLevelTypes.topBlur: + // Events are not possible without cancelling IME. + return true; + default: + return false; + } +} + +/** + * Google Input Tools provides composition data via a CustomEvent, + * with the `data` property populated in the `detail` object. If this + * is available on the event object, use it. If not, this is a plain + * composition event and we have nothing special to extract. + * + * @param {object} nativeEvent + * @return {?string} + */ +function getDataFromCustomEvent(nativeEvent) { + var detail = nativeEvent.detail; + if (typeof detail === 'object' && 'data' in detail) { + return detail.data; + } + return null; +} + +// Track the current IME composition fallback object, if any. +var currentComposition = null; + +/** + * @param {string} topLevelType Record from `EventConstants`. + * @param {DOMEventTarget} topLevelTarget The listening component root node. + * @param {string} topLevelTargetID ID of `topLevelTarget`. + * @param {object} nativeEvent Native browser event. + * @return {?object} A SyntheticCompositionEvent. + */ +function extractCompositionEvent(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget) { + var eventType; + var fallbackData; + + if (canUseCompositionEvent) { + eventType = getCompositionEventType(topLevelType); + } else if (!currentComposition) { + if (isFallbackCompositionStart(topLevelType, nativeEvent)) { + eventType = eventTypes.compositionStart; + } + } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) { + eventType = eventTypes.compositionEnd; + } + + if (!eventType) { + return null; + } + + if (useFallbackCompositionData) { + // The current composition is stored statically and must not be + // overwritten while composition continues. + if (!currentComposition && eventType === eventTypes.compositionStart) { + currentComposition = FallbackCompositionState.getPooled(topLevelTarget); + } else if (eventType === eventTypes.compositionEnd) { + if (currentComposition) { + fallbackData = currentComposition.getData(); + } + } + } + + var event = SyntheticCompositionEvent.getPooled(eventType, topLevelTargetID, nativeEvent, nativeEventTarget); + + if (fallbackData) { + // Inject data generated from fallback path into the synthetic event. + // This matches the property of native CompositionEventInterface. + event.data = fallbackData; + } else { + var customData = getDataFromCustomEvent(nativeEvent); + if (customData !== null) { + event.data = customData; + } + } + + EventPropagators.accumulateTwoPhaseDispatches(event); + return event; +} + +/** + * @param {string} topLevelType Record from `EventConstants`. + * @param {object} nativeEvent Native browser event. + * @return {?string} The string corresponding to this `beforeInput` event. + */ +function getNativeBeforeInputChars(topLevelType, nativeEvent) { + switch (topLevelType) { + case topLevelTypes.topCompositionEnd: + return getDataFromCustomEvent(nativeEvent); + case topLevelTypes.topKeyPress: + /** + * If native `textInput` events are available, our goal is to make + * use of them. However, there is a special case: the spacebar key. + * In Webkit, preventing default on a spacebar `textInput` event + * cancels character insertion, but it *also* causes the browser + * to fall back to its default spacebar behavior of scrolling the + * page. + * + * Tracking at: + * https://code.google.com/p/chromium/issues/detail?id=355103 + * + * To avoid this issue, use the keypress event as if no `textInput` + * event is available. + */ + var which = nativeEvent.which; + if (which !== SPACEBAR_CODE) { + return null; + } + + hasSpaceKeypress = true; + return SPACEBAR_CHAR; + + case topLevelTypes.topTextInput: + // Record the characters to be added to the DOM. + var chars = nativeEvent.data; + + // If it's a spacebar character, assume that we have already handled + // it at the keypress level and bail immediately. Android Chrome + // doesn't give us keycodes, so we need to blacklist it. + if (chars === SPACEBAR_CHAR && hasSpaceKeypress) { + return null; + } + + return chars; + + default: + // For other native event types, do nothing. + return null; + } +} + +/** + * For browsers that do not provide the `textInput` event, extract the + * appropriate string to use for SyntheticInputEvent. + * + * @param {string} topLevelType Record from `EventConstants`. + * @param {object} nativeEvent Native browser event. + * @return {?string} The fallback string for this `beforeInput` event. + */ +function getFallbackBeforeInputChars(topLevelType, nativeEvent) { + // If we are currently composing (IME) and using a fallback to do so, + // try to extract the composed characters from the fallback object. + if (currentComposition) { + if (topLevelType === topLevelTypes.topCompositionEnd || isFallbackCompositionEnd(topLevelType, nativeEvent)) { + var chars = currentComposition.getData(); + FallbackCompositionState.release(currentComposition); + currentComposition = null; + return chars; + } + return null; + } + + switch (topLevelType) { + case topLevelTypes.topPaste: + // If a paste event occurs after a keypress, throw out the input + // chars. Paste events should not lead to BeforeInput events. + return null; + case topLevelTypes.topKeyPress: + /** + * As of v27, Firefox may fire keypress events even when no character + * will be inserted. A few possibilities: + * + * - `which` is `0`. Arrow keys, Esc key, etc. + * + * - `which` is the pressed key code, but no char is available. + * Ex: 'AltGr + d` in Polish. There is no modified character for + * this key combination and no character is inserted into the + * document, but FF fires the keypress for char code `100` anyway. + * No `input` event will occur. + * + * - `which` is the pressed key code, but a command combination is + * being used. Ex: `Cmd+C`. No character is inserted, and no + * `input` event will occur. + */ + if (nativeEvent.which && !isKeypressCommand(nativeEvent)) { + return String.fromCharCode(nativeEvent.which); + } + return null; + case topLevelTypes.topCompositionEnd: + return useFallbackCompositionData ? null : nativeEvent.data; + default: + return null; + } +} + +/** + * Extract a SyntheticInputEvent for `beforeInput`, based on either native + * `textInput` or fallback behavior. + * + * @param {string} topLevelType Record from `EventConstants`. + * @param {DOMEventTarget} topLevelTarget The listening component root node. + * @param {string} topLevelTargetID ID of `topLevelTarget`. + * @param {object} nativeEvent Native browser event. + * @return {?object} A SyntheticInputEvent. + */ +function extractBeforeInputEvent(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget) { + var chars; + + if (canUseTextInputEvent) { + chars = getNativeBeforeInputChars(topLevelType, nativeEvent); + } else { + chars = getFallbackBeforeInputChars(topLevelType, nativeEvent); + } + + // If no characters are being inserted, no BeforeInput event should + // be fired. + if (!chars) { + return null; + } + + var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, topLevelTargetID, nativeEvent, nativeEventTarget); + + event.data = chars; + EventPropagators.accumulateTwoPhaseDispatches(event); + return event; +} + +/** + * Create an `onBeforeInput` event to match + * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents. + * + * This event plugin is based on the native `textInput` event + * available in Chrome, Safari, Opera, and IE. This event fires after + * `onKeyPress` and `onCompositionEnd`, but before `onInput`. + * + * `beforeInput` is spec'd but not implemented in any browsers, and + * the `input` event does not provide any useful information about what has + * actually been added, contrary to the spec. Thus, `textInput` is the best + * available event to identify the characters that have actually been inserted + * into the target node. + * + * This plugin is also responsible for emitting `composition` events, thus + * allowing us to share composition fallback code for both `beforeInput` and + * `composition` event types. + */ +var BeforeInputEventPlugin = { + + eventTypes: eventTypes, + + /** + * @param {string} topLevelType Record from `EventConstants`. + * @param {DOMEventTarget} topLevelTarget The listening component root node. + * @param {string} topLevelTargetID ID of `topLevelTarget`. + * @param {object} nativeEvent Native browser event. + * @return {*} An accumulation of synthetic events. + * @see {EventPluginHub.extractEvents} + */ + extractEvents: function (topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget) { + return [extractCompositionEvent(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget)]; + } +}; + +module.exports = BeforeInputEventPlugin; +},{"129":129,"147":147,"15":15,"19":19,"20":20,"90":90,"94":94}],4:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule CSSProperty + */ + +'use strict'; + +/** + * CSS properties which accept numbers but are not in units of "px". + */ +var isUnitlessNumber = { + animationIterationCount: true, + boxFlex: true, + boxFlexGroup: true, + boxOrdinalGroup: true, + columnCount: true, + flex: true, + flexGrow: true, + flexPositive: true, + flexShrink: true, + flexNegative: true, + flexOrder: true, + fontWeight: true, + lineClamp: true, + lineHeight: true, + opacity: true, + order: true, + orphans: true, + tabSize: true, + widows: true, + zIndex: true, + zoom: true, + + // SVG-related properties + fillOpacity: true, + stopOpacity: true, + strokeDashoffset: true, + strokeOpacity: true, + strokeWidth: true +}; + +/** + * @param {string} prefix vendor-specific prefix, eg: Webkit + * @param {string} key style name, eg: transitionDuration + * @return {string} style name prefixed with `prefix`, properly camelCased, eg: + * WebkitTransitionDuration + */ +function prefixKey(prefix, key) { + return prefix + key.charAt(0).toUpperCase() + key.substring(1); +} + +/** + * Support style names that may come passed in prefixed by adding permutations + * of vendor prefixes. + */ +var prefixes = ['Webkit', 'ms', 'Moz', 'O']; + +// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an +// infinite loop, because it iterates over the newly added props too. +Object.keys(isUnitlessNumber).forEach(function (prop) { + prefixes.forEach(function (prefix) { + isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop]; + }); +}); + +/** + * Most style properties can be unset by doing .style[prop] = '' but IE8 + * doesn't like doing that with shorthand properties so for the properties that + * IE8 breaks on, which are listed here, we instead unset each of the + * individual properties. See http://bugs.jquery.com/ticket/12385. + * The 4-value 'clock' properties like margin, padding, border-width seem to + * behave without any problems. Curiously, list-style works too without any + * special prodding. + */ +var shorthandPropertyExpansions = { + background: { + backgroundAttachment: true, + backgroundColor: true, + backgroundImage: true, + backgroundPositionX: true, + backgroundPositionY: true, + backgroundRepeat: true + }, + backgroundPosition: { + backgroundPositionX: true, + backgroundPositionY: true + }, + border: { + borderWidth: true, + borderStyle: true, + borderColor: true + }, + borderBottom: { + borderBottomWidth: true, + borderBottomStyle: true, + borderBottomColor: true + }, + borderLeft: { + borderLeftWidth: true, + borderLeftStyle: true, + borderLeftColor: true + }, + borderRight: { + borderRightWidth: true, + borderRightStyle: true, + borderRightColor: true + }, + borderTop: { + borderTopWidth: true, + borderTopStyle: true, + borderTopColor: true + }, + font: { + fontStyle: true, + fontVariant: true, + fontWeight: true, + fontSize: true, + lineHeight: true, + fontFamily: true + }, + outline: { + outlineWidth: true, + outlineStyle: true, + outlineColor: true + } +}; + +var CSSProperty = { + isUnitlessNumber: isUnitlessNumber, + shorthandPropertyExpansions: shorthandPropertyExpansions +}; + +module.exports = CSSProperty; +},{}],5:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule CSSPropertyOperations + * @typechecks static-only + */ + +'use strict'; + +var CSSProperty = _dereq_(4); +var ExecutionEnvironment = _dereq_(129); +var ReactPerf = _dereq_(71); + +var camelizeStyleName = _dereq_(131); +var dangerousStyleValue = _dereq_(104); +var hyphenateStyleName = _dereq_(142); +var memoizeStringOnly = _dereq_(149); +var warning = _dereq_(154); + +var processStyleName = memoizeStringOnly(function (styleName) { + return hyphenateStyleName(styleName); +}); + +var hasShorthandPropertyBug = false; +var styleFloatAccessor = 'cssFloat'; +if (ExecutionEnvironment.canUseDOM) { + var tempStyle = document.createElement('div').style; + try { + // IE8 throws "Invalid argument." if resetting shorthand style properties. + tempStyle.font = ''; + } catch (e) { + hasShorthandPropertyBug = true; + } + // IE8 only supports accessing cssFloat (standard) as styleFloat + if (document.documentElement.style.cssFloat === undefined) { + styleFloatAccessor = 'styleFloat'; + } +} + +if ("development" !== 'production') { + // 'msTransform' is correct, but the other prefixes should be capitalized + var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/; + + // style values shouldn't contain a semicolon + var badStyleValueWithSemicolonPattern = /;\s*$/; + + var warnedStyleNames = {}; + var warnedStyleValues = {}; + + var warnHyphenatedStyleName = function (name) { + if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { + return; + } + + warnedStyleNames[name] = true; + "development" !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?', name, camelizeStyleName(name)) : undefined; + }; + + var warnBadVendoredStyleName = function (name) { + if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { + return; + } + + warnedStyleNames[name] = true; + "development" !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1)) : undefined; + }; + + var warnStyleValueWithSemicolon = function (name, value) { + if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) { + return; + } + + warnedStyleValues[value] = true; + "development" !== 'production' ? warning(false, 'Style property values shouldn\'t contain a semicolon. ' + 'Try "%s: %s" instead.', name, value.replace(badStyleValueWithSemicolonPattern, '')) : undefined; + }; + + /** + * @param {string} name + * @param {*} value + */ + var warnValidStyle = function (name, value) { + if (name.indexOf('-') > -1) { + warnHyphenatedStyleName(name); + } else if (badVendoredStyleNamePattern.test(name)) { + warnBadVendoredStyleName(name); + } else if (badStyleValueWithSemicolonPattern.test(value)) { + warnStyleValueWithSemicolon(name, value); + } + }; +} + +/** + * Operations for dealing with CSS properties. + */ +var CSSPropertyOperations = { + + /** + * Serializes a mapping of style properties for use as inline styles: + * + * > createMarkupForStyles({width: '200px', height: 0}) + * "width:200px;height:0;" + * + * Undefined values are ignored so that declarative programming is easier. + * The result should be HTML-escaped before insertion into the DOM. + * + * @param {object} styles + * @return {?string} + */ + createMarkupForStyles: function (styles) { + var serialized = ''; + for (var styleName in styles) { + if (!styles.hasOwnProperty(styleName)) { + continue; + } + var styleValue = styles[styleName]; + if ("development" !== 'production') { + warnValidStyle(styleName, styleValue); + } + if (styleValue != null) { + serialized += processStyleName(styleName) + ':'; + serialized += dangerousStyleValue(styleName, styleValue) + ';'; + } + } + return serialized || null; + }, + + /** + * Sets the value for multiple styles on a node. If a value is specified as + * '' (empty string), the corresponding style property will be unset. + * + * @param {DOMElement} node + * @param {object} styles + */ + setValueForStyles: function (node, styles) { + var style = node.style; + for (var styleName in styles) { + if (!styles.hasOwnProperty(styleName)) { + continue; + } + if ("development" !== 'production') { + warnValidStyle(styleName, styles[styleName]); + } + var styleValue = dangerousStyleValue(styleName, styles[styleName]); + if (styleName === 'float') { + styleName = styleFloatAccessor; + } + if (styleValue) { + style[styleName] = styleValue; + } else { + var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName]; + if (expansion) { + // Shorthand property that IE8 won't like unsetting, so unset each + // component to placate it + for (var individualStyleName in expansion) { + style[individualStyleName] = ''; + } + } else { + style[styleName] = ''; + } + } + } + } + +}; + +ReactPerf.measureMethods(CSSPropertyOperations, 'CSSPropertyOperations', { + setValueForStyles: 'setValueForStyles' +}); + +module.exports = CSSPropertyOperations; +},{"104":104,"129":129,"131":131,"142":142,"149":149,"154":154,"4":4,"71":71}],6:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule CallbackQueue + */ + +'use strict'; + +var PooledClass = _dereq_(24); + +var assign = _dereq_(23); +var invariant = _dereq_(143); + +/** + * A specialized pseudo-event module to help keep track of components waiting to + * be notified when their DOM representations are available for use. + * + * This implements `PooledClass`, so you should never need to instantiate this. + * Instead, use `CallbackQueue.getPooled()`. + * + * @class ReactMountReady + * @implements PooledClass + * @internal + */ +function CallbackQueue() { + this._callbacks = null; + this._contexts = null; +} + +assign(CallbackQueue.prototype, { + + /** + * Enqueues a callback to be invoked when `notifyAll` is invoked. + * + * @param {function} callback Invoked when `notifyAll` is invoked. + * @param {?object} context Context to call `callback` with. + * @internal + */ + enqueue: function (callback, context) { + this._callbacks = this._callbacks || []; + this._contexts = this._contexts || []; + this._callbacks.push(callback); + this._contexts.push(context); + }, + + /** + * Invokes all enqueued callbacks and clears the queue. This is invoked after + * the DOM representation of a component has been created or updated. + * + * @internal + */ + notifyAll: function () { + var callbacks = this._callbacks; + var contexts = this._contexts; + if (callbacks) { + !(callbacks.length === contexts.length) ? "development" !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : invariant(false) : undefined; + this._callbacks = null; + this._contexts = null; + for (var i = 0; i < callbacks.length; i++) { + callbacks[i].call(contexts[i]); + } + callbacks.length = 0; + contexts.length = 0; + } + }, + + /** + * Resets the internal queue. + * + * @internal + */ + reset: function () { + this._callbacks = null; + this._contexts = null; + }, + + /** + * `PooledClass` looks for this. + */ + destructor: function () { + this.reset(); + } + +}); + +PooledClass.addPoolingTo(CallbackQueue); + +module.exports = CallbackQueue; +},{"143":143,"23":23,"24":24}],7:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ChangeEventPlugin + */ + +'use strict'; + +var EventConstants = _dereq_(15); +var EventPluginHub = _dereq_(16); +var EventPropagators = _dereq_(19); +var ExecutionEnvironment = _dereq_(129); +var ReactUpdates = _dereq_(83); +var SyntheticEvent = _dereq_(92); + +var getEventTarget = _dereq_(113); +var isEventSupported = _dereq_(118); +var isTextInputElement = _dereq_(119); +var keyOf = _dereq_(147); + +var topLevelTypes = EventConstants.topLevelTypes; + +var eventTypes = { + change: { + phasedRegistrationNames: { + bubbled: keyOf({ onChange: null }), + captured: keyOf({ onChangeCapture: null }) + }, + dependencies: [topLevelTypes.topBlur, topLevelTypes.topChange, topLevelTypes.topClick, topLevelTypes.topFocus, topLevelTypes.topInput, topLevelTypes.topKeyDown, topLevelTypes.topKeyUp, topLevelTypes.topSelectionChange] + } +}; + +/** + * For IE shims + */ +var activeElement = null; +var activeElementID = null; +var activeElementValue = null; +var activeElementValueProp = null; + +/** + * SECTION: handle `change` event + */ +function shouldUseChangeEvent(elem) { + var nodeName = elem.nodeName && elem.nodeName.toLowerCase(); + return nodeName === 'select' || nodeName === 'input' && elem.type === 'file'; +} + +var doesChangeEventBubble = false; +if (ExecutionEnvironment.canUseDOM) { + // See `handleChange` comment below + doesChangeEventBubble = isEventSupported('change') && (!('documentMode' in document) || document.documentMode > 8); +} + +function manualDispatchChangeEvent(nativeEvent) { + var event = SyntheticEvent.getPooled(eventTypes.change, activeElementID, nativeEvent, getEventTarget(nativeEvent)); + EventPropagators.accumulateTwoPhaseDispatches(event); + + // If change and propertychange bubbled, we'd just bind to it like all the + // other events and have it go through ReactBrowserEventEmitter. Since it + // doesn't, we manually listen for the events and so we have to enqueue and + // process the abstract event manually. + // + // Batching is necessary here in order to ensure that all event handlers run + // before the next rerender (including event handlers attached to ancestor + // elements instead of directly on the input). Without this, controlled + // components don't work properly in conjunction with event bubbling because + // the component is rerendered and the value reverted before all the event + // handlers can run. See https://github.com/facebook/react/issues/708. + ReactUpdates.batchedUpdates(runEventInBatch, event); +} + +function runEventInBatch(event) { + EventPluginHub.enqueueEvents(event); + EventPluginHub.processEventQueue(false); +} + +function startWatchingForChangeEventIE8(target, targetID) { + activeElement = target; + activeElementID = targetID; + activeElement.attachEvent('onchange', manualDispatchChangeEvent); +} + +function stopWatchingForChangeEventIE8() { + if (!activeElement) { + return; + } + activeElement.detachEvent('onchange', manualDispatchChangeEvent); + activeElement = null; + activeElementID = null; +} + +function getTargetIDForChangeEvent(topLevelType, topLevelTarget, topLevelTargetID) { + if (topLevelType === topLevelTypes.topChange) { + return topLevelTargetID; + } +} +function handleEventsForChangeEventIE8(topLevelType, topLevelTarget, topLevelTargetID) { + if (topLevelType === topLevelTypes.topFocus) { + // stopWatching() should be a noop here but we call it just in case we + // missed a blur event somehow. + stopWatchingForChangeEventIE8(); + startWatchingForChangeEventIE8(topLevelTarget, topLevelTargetID); + } else if (topLevelType === topLevelTypes.topBlur) { + stopWatchingForChangeEventIE8(); + } +} + +/** + * SECTION: handle `input` event + */ +var isInputEventSupported = false; +if (ExecutionEnvironment.canUseDOM) { + // IE9 claims to support the input event but fails to trigger it when + // deleting text, so we ignore its input events + isInputEventSupported = isEventSupported('input') && (!('documentMode' in document) || document.documentMode > 9); +} + +/** + * (For old IE.) Replacement getter/setter for the `value` property that gets + * set on the active element. + */ +var newValueProp = { + get: function () { + return activeElementValueProp.get.call(this); + }, + set: function (val) { + // Cast to a string so we can do equality checks. + activeElementValue = '' + val; + activeElementValueProp.set.call(this, val); + } +}; + +/** + * (For old IE.) Starts tracking propertychange events on the passed-in element + * and override the value property so that we can distinguish user events from + * value changes in JS. + */ +function startWatchingForValueChange(target, targetID) { + activeElement = target; + activeElementID = targetID; + activeElementValue = target.value; + activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value'); + + Object.defineProperty(activeElement, 'value', newValueProp); + activeElement.attachEvent('onpropertychange', handlePropertyChange); +} + +/** + * (For old IE.) Removes the event listeners from the currently-tracked element, + * if any exists. + */ +function stopWatchingForValueChange() { + if (!activeElement) { + return; + } + + // delete restores the original property definition + delete activeElement.value; + activeElement.detachEvent('onpropertychange', handlePropertyChange); + + activeElement = null; + activeElementID = null; + activeElementValue = null; + activeElementValueProp = null; +} + +/** + * (For old IE.) Handles a propertychange event, sending a `change` event if + * the value of the active element has changed. + */ +function handlePropertyChange(nativeEvent) { + if (nativeEvent.propertyName !== 'value') { + return; + } + var value = nativeEvent.srcElement.value; + if (value === activeElementValue) { + return; + } + activeElementValue = value; + + manualDispatchChangeEvent(nativeEvent); +} + +/** + * If a `change` event should be fired, returns the target's ID. + */ +function getTargetIDForInputEvent(topLevelType, topLevelTarget, topLevelTargetID) { + if (topLevelType === topLevelTypes.topInput) { + // In modern browsers (i.e., not IE8 or IE9), the input event is exactly + // what we want so fall through here and trigger an abstract event + return topLevelTargetID; + } +} + +// For IE8 and IE9. +function handleEventsForInputEventIE(topLevelType, topLevelTarget, topLevelTargetID) { + if (topLevelType === topLevelTypes.topFocus) { + // In IE8, we can capture almost all .value changes by adding a + // propertychange handler and looking for events with propertyName + // equal to 'value' + // In IE9, propertychange fires for most input events but is buggy and + // doesn't fire when text is deleted, but conveniently, selectionchange + // appears to fire in all of the remaining cases so we catch those and + // forward the event if the value has changed + // In either case, we don't want to call the event handler if the value + // is changed from JS so we redefine a setter for `.value` that updates + // our activeElementValue variable, allowing us to ignore those changes + // + // stopWatching() should be a noop here but we call it just in case we + // missed a blur event somehow. + stopWatchingForValueChange(); + startWatchingForValueChange(topLevelTarget, topLevelTargetID); + } else if (topLevelType === topLevelTypes.topBlur) { + stopWatchingForValueChange(); + } +} + +// For IE8 and IE9. +function getTargetIDForInputEventIE(topLevelType, topLevelTarget, topLevelTargetID) { + if (topLevelType === topLevelTypes.topSelectionChange || topLevelType === topLevelTypes.topKeyUp || topLevelType === topLevelTypes.topKeyDown) { + // On the selectionchange event, the target is just document which isn't + // helpful for us so just check activeElement instead. + // + // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire + // propertychange on the first input event after setting `value` from a + // script and fires only keydown, keypress, keyup. Catching keyup usually + // gets it and catching keydown lets us fire an event for the first + // keystroke if user does a key repeat (it'll be a little delayed: right + // before the second keystroke). Other input methods (e.g., paste) seem to + // fire selectionchange normally. + if (activeElement && activeElement.value !== activeElementValue) { + activeElementValue = activeElement.value; + return activeElementID; + } + } +} + +/** + * SECTION: handle `click` event + */ +function shouldUseClickEvent(elem) { + // Use the `click` event to detect changes to checkbox and radio inputs. + // This approach works across all browsers, whereas `change` does not fire + // until `blur` in IE8. + return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio'); +} + +function getTargetIDForClickEvent(topLevelType, topLevelTarget, topLevelTargetID) { + if (topLevelType === topLevelTypes.topClick) { + return topLevelTargetID; + } +} + +/** + * This plugin creates an `onChange` event that normalizes change events + * across form elements. This event fires at a time when it's possible to + * change the element's value without seeing a flicker. + * + * Supported elements are: + * - input (see `isTextInputElement`) + * - textarea + * - select + */ +var ChangeEventPlugin = { + + eventTypes: eventTypes, + + /** + * @param {string} topLevelType Record from `EventConstants`. + * @param {DOMEventTarget} topLevelTarget The listening component root node. + * @param {string} topLevelTargetID ID of `topLevelTarget`. + * @param {object} nativeEvent Native browser event. + * @return {*} An accumulation of synthetic events. + * @see {EventPluginHub.extractEvents} + */ + extractEvents: function (topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget) { + + var getTargetIDFunc, handleEventFunc; + if (shouldUseChangeEvent(topLevelTarget)) { + if (doesChangeEventBubble) { + getTargetIDFunc = getTargetIDForChangeEvent; + } else { + handleEventFunc = handleEventsForChangeEventIE8; + } + } else if (isTextInputElement(topLevelTarget)) { + if (isInputEventSupported) { + getTargetIDFunc = getTargetIDForInputEvent; + } else { + getTargetIDFunc = getTargetIDForInputEventIE; + handleEventFunc = handleEventsForInputEventIE; + } + } else if (shouldUseClickEvent(topLevelTarget)) { + getTargetIDFunc = getTargetIDForClickEvent; + } + + if (getTargetIDFunc) { + var targetID = getTargetIDFunc(topLevelType, topLevelTarget, topLevelTargetID); + if (targetID) { + var event = SyntheticEvent.getPooled(eventTypes.change, targetID, nativeEvent, nativeEventTarget); + event.type = 'change'; + EventPropagators.accumulateTwoPhaseDispatches(event); + return event; + } + } + + if (handleEventFunc) { + handleEventFunc(topLevelType, topLevelTarget, topLevelTargetID); + } + } + +}; + +module.exports = ChangeEventPlugin; +},{"113":113,"118":118,"119":119,"129":129,"147":147,"15":15,"16":16,"19":19,"83":83,"92":92}],8:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ClientReactRootIndex + * @typechecks + */ + +'use strict'; + +var nextReactRootIndex = 0; + +var ClientReactRootIndex = { + createReactRootIndex: function () { + return nextReactRootIndex++; + } +}; + +module.exports = ClientReactRootIndex; +},{}],9:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule DOMChildrenOperations + * @typechecks static-only + */ + +'use strict'; + +var Danger = _dereq_(12); +var ReactMultiChildUpdateTypes = _dereq_(67); +var ReactPerf = _dereq_(71); + +var setInnerHTML = _dereq_(123); +var setTextContent = _dereq_(124); +var invariant = _dereq_(143); + +/** + * Inserts `childNode` as a child of `parentNode` at the `index`. + * + * @param {DOMElement} parentNode Parent node in which to insert. + * @param {DOMElement} childNode Child node to insert. + * @param {number} index Index at which to insert the child. + * @internal + */ +function insertChildAt(parentNode, childNode, index) { + // By exploiting arrays returning `undefined` for an undefined index, we can + // rely exclusively on `insertBefore(node, null)` instead of also using + // `appendChild(node)`. However, using `undefined` is not allowed by all + // browsers so we must replace it with `null`. + + // fix render order error in safari + // IE8 will throw error when index out of list size. + var beforeChild = index >= parentNode.childNodes.length ? null : parentNode.childNodes.item(index); + + parentNode.insertBefore(childNode, beforeChild); +} + +/** + * Operations for updating with DOM children. + */ +var DOMChildrenOperations = { + + dangerouslyReplaceNodeWithMarkup: Danger.dangerouslyReplaceNodeWithMarkup, + + updateTextContent: setTextContent, + + /** + * Updates a component's children by processing a series of updates. The + * update configurations are each expected to have a `parentNode` property. + * + * @param {array} updates List of update configurations. + * @param {array} markupList List of markup strings. + * @internal + */ + processUpdates: function (updates, markupList) { + var update; + // Mapping from parent IDs to initial child orderings. + var initialChildren = null; + // List of children that will be moved or removed. + var updatedChildren = null; + + for (var i = 0; i < updates.length; i++) { + update = updates[i]; + if (update.type === ReactMultiChildUpdateTypes.MOVE_EXISTING || update.type === ReactMultiChildUpdateTypes.REMOVE_NODE) { + var updatedIndex = update.fromIndex; + var updatedChild = update.parentNode.childNodes[updatedIndex]; + var parentID = update.parentID; + + !updatedChild ? "development" !== 'production' ? invariant(false, 'processUpdates(): Unable to find child %s of element. This ' + 'probably means the DOM was unexpectedly mutated (e.g., by the ' + 'browser), usually due to forgetting a when using tables, ' + 'nesting tags like
,

, or , or using non-SVG elements ' + 'in an parent. Try inspecting the child nodes of the element ' + 'with React ID `%s`.', updatedIndex, parentID) : invariant(false) : undefined; + + initialChildren = initialChildren || {}; + initialChildren[parentID] = initialChildren[parentID] || []; + initialChildren[parentID][updatedIndex] = updatedChild; + + updatedChildren = updatedChildren || []; + updatedChildren.push(updatedChild); + } + } + + var renderedMarkup; + // markupList is either a list of markup or just a list of elements + if (markupList.length && typeof markupList[0] === 'string') { + renderedMarkup = Danger.dangerouslyRenderMarkup(markupList); + } else { + renderedMarkup = markupList; + } + + // Remove updated children first so that `toIndex` is consistent. + if (updatedChildren) { + for (var j = 0; j < updatedChildren.length; j++) { + updatedChildren[j].parentNode.removeChild(updatedChildren[j]); + } + } + + for (var k = 0; k < updates.length; k++) { + update = updates[k]; + switch (update.type) { + case ReactMultiChildUpdateTypes.INSERT_MARKUP: + insertChildAt(update.parentNode, renderedMarkup[update.markupIndex], update.toIndex); + break; + case ReactMultiChildUpdateTypes.MOVE_EXISTING: + insertChildAt(update.parentNode, initialChildren[update.parentID][update.fromIndex], update.toIndex); + break; + case ReactMultiChildUpdateTypes.SET_MARKUP: + setInnerHTML(update.parentNode, update.content); + break; + case ReactMultiChildUpdateTypes.TEXT_CONTENT: + setTextContent(update.parentNode, update.content); + break; + case ReactMultiChildUpdateTypes.REMOVE_NODE: + // Already removed by the for-loop above. + break; + } + } + } + +}; + +ReactPerf.measureMethods(DOMChildrenOperations, 'DOMChildrenOperations', { + updateTextContent: 'updateTextContent' +}); + +module.exports = DOMChildrenOperations; +},{"12":12,"123":123,"124":124,"143":143,"67":67,"71":71}],10:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule DOMProperty + * @typechecks static-only + */ + +'use strict'; + +var invariant = _dereq_(143); + +function checkMask(value, bitmask) { + return (value & bitmask) === bitmask; +} + +var DOMPropertyInjection = { + /** + * Mapping from normalized, camelcased property names to a configuration that + * specifies how the associated DOM property should be accessed or rendered. + */ + MUST_USE_ATTRIBUTE: 0x1, + MUST_USE_PROPERTY: 0x2, + HAS_SIDE_EFFECTS: 0x4, + HAS_BOOLEAN_VALUE: 0x8, + HAS_NUMERIC_VALUE: 0x10, + HAS_POSITIVE_NUMERIC_VALUE: 0x20 | 0x10, + HAS_OVERLOADED_BOOLEAN_VALUE: 0x40, + + /** + * Inject some specialized knowledge about the DOM. This takes a config object + * with the following properties: + * + * isCustomAttribute: function that given an attribute name will return true + * if it can be inserted into the DOM verbatim. Useful for data-* or aria-* + * attributes where it's impossible to enumerate all of the possible + * attribute names, + * + * Properties: object mapping DOM property name to one of the + * DOMPropertyInjection constants or null. If your attribute isn't in here, + * it won't get written to the DOM. + * + * DOMAttributeNames: object mapping React attribute name to the DOM + * attribute name. Attribute names not specified use the **lowercase** + * normalized name. + * + * DOMAttributeNamespaces: object mapping React attribute name to the DOM + * attribute namespace URL. (Attribute names not specified use no namespace.) + * + * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties. + * Property names not specified use the normalized name. + * + * DOMMutationMethods: Properties that require special mutation methods. If + * `value` is undefined, the mutation method should unset the property. + * + * @param {object} domPropertyConfig the config as described above. + */ + injectDOMPropertyConfig: function (domPropertyConfig) { + var Injection = DOMPropertyInjection; + var Properties = domPropertyConfig.Properties || {}; + var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {}; + var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {}; + var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {}; + var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {}; + + if (domPropertyConfig.isCustomAttribute) { + DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute); + } + + for (var propName in Properties) { + !!DOMProperty.properties.hasOwnProperty(propName) ? "development" !== 'production' ? invariant(false, 'injectDOMPropertyConfig(...): You\'re trying to inject DOM property ' + '\'%s\' which has already been injected. You may be accidentally ' + 'injecting the same DOM property config twice, or you may be ' + 'injecting two configs that have conflicting property names.', propName) : invariant(false) : undefined; + + var lowerCased = propName.toLowerCase(); + var propConfig = Properties[propName]; + + var propertyInfo = { + attributeName: lowerCased, + attributeNamespace: null, + propertyName: propName, + mutationMethod: null, + + mustUseAttribute: checkMask(propConfig, Injection.MUST_USE_ATTRIBUTE), + mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY), + hasSideEffects: checkMask(propConfig, Injection.HAS_SIDE_EFFECTS), + hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE), + hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE), + hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE), + hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE) + }; + + !(!propertyInfo.mustUseAttribute || !propertyInfo.mustUseProperty) ? "development" !== 'production' ? invariant(false, 'DOMProperty: Cannot require using both attribute and property: %s', propName) : invariant(false) : undefined; + !(propertyInfo.mustUseProperty || !propertyInfo.hasSideEffects) ? "development" !== 'production' ? invariant(false, 'DOMProperty: Properties that have side effects must use property: %s', propName) : invariant(false) : undefined; + !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? "development" !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or ' + 'numeric value, but not a combination: %s', propName) : invariant(false) : undefined; + + if ("development" !== 'production') { + DOMProperty.getPossibleStandardName[lowerCased] = propName; + } + + if (DOMAttributeNames.hasOwnProperty(propName)) { + var attributeName = DOMAttributeNames[propName]; + propertyInfo.attributeName = attributeName; + if ("development" !== 'production') { + DOMProperty.getPossibleStandardName[attributeName] = propName; + } + } + + if (DOMAttributeNamespaces.hasOwnProperty(propName)) { + propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName]; + } + + if (DOMPropertyNames.hasOwnProperty(propName)) { + propertyInfo.propertyName = DOMPropertyNames[propName]; + } + + if (DOMMutationMethods.hasOwnProperty(propName)) { + propertyInfo.mutationMethod = DOMMutationMethods[propName]; + } + + DOMProperty.properties[propName] = propertyInfo; + } + } +}; +var defaultValueCache = {}; + +/** + * DOMProperty exports lookup objects that can be used like functions: + * + * > DOMProperty.isValid['id'] + * true + * > DOMProperty.isValid['foobar'] + * undefined + * + * Although this may be confusing, it performs better in general. + * + * @see http://jsperf.com/key-exists + * @see http://jsperf.com/key-missing + */ +var DOMProperty = { + + ID_ATTRIBUTE_NAME: 'data-reactid', + + /** + * Map from property "standard name" to an object with info about how to set + * the property in the DOM. Each object contains: + * + * attributeName: + * Used when rendering markup or with `*Attribute()`. + * attributeNamespace + * propertyName: + * Used on DOM node instances. (This includes properties that mutate due to + * external factors.) + * mutationMethod: + * If non-null, used instead of the property or `setAttribute()` after + * initial render. + * mustUseAttribute: + * Whether the property must be accessed and mutated using `*Attribute()`. + * (This includes anything that fails ` in `.) + * mustUseProperty: + * Whether the property must be accessed and mutated as an object property. + * hasSideEffects: + * Whether or not setting a value causes side effects such as triggering + * resources to be loaded or text selection changes. If true, we read from + * the DOM before updating to ensure that the value is only set if it has + * changed. + * hasBooleanValue: + * Whether the property should be removed when set to a falsey value. + * hasNumericValue: + * Whether the property must be numeric or parse as a numeric and should be + * removed when set to a falsey value. + * hasPositiveNumericValue: + * Whether the property must be positive numeric or parse as a positive + * numeric and should be removed when set to a falsey value. + * hasOverloadedBooleanValue: + * Whether the property can be used as a flag as well as with a value. + * Removed when strictly equal to false; present without a value when + * strictly equal to true; present with a value otherwise. + */ + properties: {}, + + /** + * Mapping from lowercase property names to the properly cased version, used + * to warn in the case of missing properties. Available only in __DEV__. + * @type {Object} + */ + getPossibleStandardName: "development" !== 'production' ? {} : null, + + /** + * All of the isCustomAttribute() functions that have been injected. + */ + _isCustomAttributeFunctions: [], + + /** + * Checks whether a property name is a custom attribute. + * @method + */ + isCustomAttribute: function (attributeName) { + for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) { + var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i]; + if (isCustomAttributeFn(attributeName)) { + return true; + } + } + return false; + }, + + /** + * Returns the default property value for a DOM property (i.e., not an + * attribute). Most default values are '' or false, but not all. Worse yet, + * some (in particular, `type`) vary depending on the type of element. + * + * TODO: Is it better to grab all the possible properties when creating an + * element to avoid having to create the same element twice? + */ + getDefaultValueForProperty: function (nodeName, prop) { + var nodeDefaults = defaultValueCache[nodeName]; + var testElement; + if (!nodeDefaults) { + defaultValueCache[nodeName] = nodeDefaults = {}; + } + if (!(prop in nodeDefaults)) { + testElement = document.createElement(nodeName); + nodeDefaults[prop] = testElement[prop]; + } + return nodeDefaults[prop]; + }, + + injection: DOMPropertyInjection +}; + +module.exports = DOMProperty; +},{"143":143}],11:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule DOMPropertyOperations + * @typechecks static-only + */ + +'use strict'; + +var DOMProperty = _dereq_(10); +var ReactPerf = _dereq_(71); + +var quoteAttributeValueForBrowser = _dereq_(121); +var warning = _dereq_(154); + +// Simplified subset +var VALID_ATTRIBUTE_NAME_REGEX = /^[a-zA-Z_][\w\.\-]*$/; +var illegalAttributeNameCache = {}; +var validatedAttributeNameCache = {}; + +function isAttributeNameSafe(attributeName) { + if (validatedAttributeNameCache.hasOwnProperty(attributeName)) { + return true; + } + if (illegalAttributeNameCache.hasOwnProperty(attributeName)) { + return false; + } + if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) { + validatedAttributeNameCache[attributeName] = true; + return true; + } + illegalAttributeNameCache[attributeName] = true; + "development" !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : undefined; + return false; +} + +function shouldIgnoreValue(propertyInfo, value) { + return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false; +} + +if ("development" !== 'production') { + var reactProps = { + children: true, + dangerouslySetInnerHTML: true, + key: true, + ref: true + }; + var warnedProperties = {}; + + var warnUnknownProperty = function (name) { + if (reactProps.hasOwnProperty(name) && reactProps[name] || warnedProperties.hasOwnProperty(name) && warnedProperties[name]) { + return; + } + + warnedProperties[name] = true; + var lowerCasedName = name.toLowerCase(); + + // data-* attributes should be lowercase; suggest the lowercase version + var standardName = DOMProperty.isCustomAttribute(lowerCasedName) ? lowerCasedName : DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null; + + // For now, only warn when we have a suggested correction. This prevents + // logging too much when using transferPropsTo. + "development" !== 'production' ? warning(standardName == null, 'Unknown DOM property %s. Did you mean %s?', name, standardName) : undefined; + }; +} + +/** + * Operations for dealing with DOM properties. + */ +var DOMPropertyOperations = { + + /** + * Creates markup for the ID property. + * + * @param {string} id Unescaped ID. + * @return {string} Markup string. + */ + createMarkupForID: function (id) { + return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id); + }, + + setAttributeForID: function (node, id) { + node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id); + }, + + /** + * Creates markup for a property. + * + * @param {string} name + * @param {*} value + * @return {?string} Markup string, or null if the property was invalid. + */ + createMarkupForProperty: function (name, value) { + var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; + if (propertyInfo) { + if (shouldIgnoreValue(propertyInfo, value)) { + return ''; + } + var attributeName = propertyInfo.attributeName; + if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) { + return attributeName + '=""'; + } + return attributeName + '=' + quoteAttributeValueForBrowser(value); + } else if (DOMProperty.isCustomAttribute(name)) { + if (value == null) { + return ''; + } + return name + '=' + quoteAttributeValueForBrowser(value); + } else if ("development" !== 'production') { + warnUnknownProperty(name); + } + return null; + }, + + /** + * Creates markup for a custom property. + * + * @param {string} name + * @param {*} value + * @return {string} Markup string, or empty string if the property was invalid. + */ + createMarkupForCustomAttribute: function (name, value) { + if (!isAttributeNameSafe(name) || value == null) { + return ''; + } + return name + '=' + quoteAttributeValueForBrowser(value); + }, + + /** + * Sets the value for a property on a node. + * + * @param {DOMElement} node + * @param {string} name + * @param {*} value + */ + setValueForProperty: function (node, name, value) { + var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; + if (propertyInfo) { + var mutationMethod = propertyInfo.mutationMethod; + if (mutationMethod) { + mutationMethod(node, value); + } else if (shouldIgnoreValue(propertyInfo, value)) { + this.deleteValueForProperty(node, name); + } else if (propertyInfo.mustUseAttribute) { + var attributeName = propertyInfo.attributeName; + var namespace = propertyInfo.attributeNamespace; + // `setAttribute` with objects becomes only `[object]` in IE8/9, + // ('' + value) makes it output the correct toString()-value. + if (namespace) { + node.setAttributeNS(namespace, attributeName, '' + value); + } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) { + node.setAttribute(attributeName, ''); + } else { + node.setAttribute(attributeName, '' + value); + } + } else { + var propName = propertyInfo.propertyName; + // Must explicitly cast values for HAS_SIDE_EFFECTS-properties to the + // property type before comparing; only `value` does and is string. + if (!propertyInfo.hasSideEffects || '' + node[propName] !== '' + value) { + // Contrary to `setAttribute`, object properties are properly + // `toString`ed by IE8/9. + node[propName] = value; + } + } + } else if (DOMProperty.isCustomAttribute(name)) { + DOMPropertyOperations.setValueForAttribute(node, name, value); + } else if ("development" !== 'production') { + warnUnknownProperty(name); + } + }, + + setValueForAttribute: function (node, name, value) { + if (!isAttributeNameSafe(name)) { + return; + } + if (value == null) { + node.removeAttribute(name); + } else { + node.setAttribute(name, '' + value); + } + }, + + /** + * Deletes the value for a property on a node. + * + * @param {DOMElement} node + * @param {string} name + */ + deleteValueForProperty: function (node, name) { + var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; + if (propertyInfo) { + var mutationMethod = propertyInfo.mutationMethod; + if (mutationMethod) { + mutationMethod(node, undefined); + } else if (propertyInfo.mustUseAttribute) { + node.removeAttribute(propertyInfo.attributeName); + } else { + var propName = propertyInfo.propertyName; + var defaultValue = DOMProperty.getDefaultValueForProperty(node.nodeName, propName); + if (!propertyInfo.hasSideEffects || '' + node[propName] !== defaultValue) { + node[propName] = defaultValue; + } + } + } else if (DOMProperty.isCustomAttribute(name)) { + node.removeAttribute(name); + } else if ("development" !== 'production') { + warnUnknownProperty(name); + } + } + +}; + +ReactPerf.measureMethods(DOMPropertyOperations, 'DOMPropertyOperations', { + setValueForProperty: 'setValueForProperty', + setValueForAttribute: 'setValueForAttribute', + deleteValueForProperty: 'deleteValueForProperty' +}); + +module.exports = DOMPropertyOperations; +},{"10":10,"121":121,"154":154,"71":71}],12:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule Danger + * @typechecks static-only + */ + +'use strict'; + +var ExecutionEnvironment = _dereq_(129); + +var createNodesFromMarkup = _dereq_(134); +var emptyFunction = _dereq_(135); +var getMarkupWrap = _dereq_(139); +var invariant = _dereq_(143); + +var OPEN_TAG_NAME_EXP = /^(<[^ \/>]+)/; +var RESULT_INDEX_ATTR = 'data-danger-index'; + +/** + * Extracts the `nodeName` from a string of markup. + * + * NOTE: Extracting the `nodeName` does not require a regular expression match + * because we make assumptions about React-generated markup (i.e. there are no + * spaces surrounding the opening tag and there is at least one attribute). + * + * @param {string} markup String of markup. + * @return {string} Node name of the supplied markup. + * @see http://jsperf.com/extract-nodename + */ +function getNodeName(markup) { + return markup.substring(1, markup.indexOf(' ')); +} + +var Danger = { + + /** + * Renders markup into an array of nodes. The markup is expected to render + * into a list of root nodes. Also, the length of `resultList` and + * `markupList` should be the same. + * + * @param {array} markupList List of markup strings to render. + * @return {array} List of rendered nodes. + * @internal + */ + dangerouslyRenderMarkup: function (markupList) { + !ExecutionEnvironment.canUseDOM ? "development" !== 'production' ? invariant(false, 'dangerouslyRenderMarkup(...): Cannot render markup in a worker ' + 'thread. Make sure `window` and `document` are available globally ' + 'before requiring React when unit testing or use ' + 'ReactDOMServer.renderToString for server rendering.') : invariant(false) : undefined; + var nodeName; + var markupByNodeName = {}; + // Group markup by `nodeName` if a wrap is necessary, else by '*'. + for (var i = 0; i < markupList.length; i++) { + !markupList[i] ? "development" !== 'production' ? invariant(false, 'dangerouslyRenderMarkup(...): Missing markup.') : invariant(false) : undefined; + nodeName = getNodeName(markupList[i]); + nodeName = getMarkupWrap(nodeName) ? nodeName : '*'; + markupByNodeName[nodeName] = markupByNodeName[nodeName] || []; + markupByNodeName[nodeName][i] = markupList[i]; + } + var resultList = []; + var resultListAssignmentCount = 0; + for (nodeName in markupByNodeName) { + if (!markupByNodeName.hasOwnProperty(nodeName)) { + continue; + } + var markupListByNodeName = markupByNodeName[nodeName]; + + // This for-in loop skips the holes of the sparse array. The order of + // iteration should follow the order of assignment, which happens to match + // numerical index order, but we don't rely on that. + var resultIndex; + for (resultIndex in markupListByNodeName) { + if (markupListByNodeName.hasOwnProperty(resultIndex)) { + var markup = markupListByNodeName[resultIndex]; + + // Push the requested markup with an additional RESULT_INDEX_ATTR + // attribute. If the markup does not start with a < character, it + // will be discarded below (with an appropriate console.error). + markupListByNodeName[resultIndex] = markup.replace(OPEN_TAG_NAME_EXP, + // This index will be parsed back out below. + '$1 ' + RESULT_INDEX_ATTR + '="' + resultIndex + '" '); + } + } + + // Render each group of markup with similar wrapping `nodeName`. + var renderNodes = createNodesFromMarkup(markupListByNodeName.join(''), emptyFunction // Do nothing special with

; + * } + * }); + * + * The class specification supports a specific protocol of methods that have + * special meaning (e.g. `render`). See `ReactClassInterface` for + * more the comprehensive protocol. Any other properties and methods in the + * class specification will be available on the prototype. + * + * @interface ReactClassInterface + * @internal + */ +var ReactClassInterface = { + + /** + * An array of Mixin objects to include when defining your component. + * + * @type {array} + * @optional + */ + mixins: SpecPolicy.DEFINE_MANY, + + /** + * An object containing properties and methods that should be defined on + * the component's constructor instead of its prototype (static methods). + * + * @type {object} + * @optional + */ + statics: SpecPolicy.DEFINE_MANY, + + /** + * Definition of prop types for this component. + * + * @type {object} + * @optional + */ + propTypes: SpecPolicy.DEFINE_MANY, + + /** + * Definition of context types for this component. + * + * @type {object} + * @optional + */ + contextTypes: SpecPolicy.DEFINE_MANY, + + /** + * Definition of context types this component sets for its children. + * + * @type {object} + * @optional + */ + childContextTypes: SpecPolicy.DEFINE_MANY, + + // ==== Definition methods ==== + + /** + * Invoked when the component is mounted. Values in the mapping will be set on + * `this.props` if that prop is not specified (i.e. using an `in` check). + * + * This method is invoked before `getInitialState` and therefore cannot rely + * on `this.state` or use `this.setState`. + * + * @return {object} + * @optional + */ + getDefaultProps: SpecPolicy.DEFINE_MANY_MERGED, + + /** + * Invoked once before the component is mounted. The return value will be used + * as the initial value of `this.state`. + * + * getInitialState: function() { + * return { + * isOn: false, + * fooBaz: new BazFoo() + * } + * } + * + * @return {object} + * @optional + */ + getInitialState: SpecPolicy.DEFINE_MANY_MERGED, + + /** + * @return {object} + * @optional + */ + getChildContext: SpecPolicy.DEFINE_MANY_MERGED, + + /** + * Uses props from `this.props` and state from `this.state` to render the + * structure of the component. + * + * No guarantees are made about when or how often this method is invoked, so + * it must not have side effects. + * + * render: function() { + * var name = this.props.name; + * return
Hello, {name}!
; + * } + * + * @return {ReactComponent} + * @nosideeffects + * @required + */ + render: SpecPolicy.DEFINE_ONCE, + + // ==== Delegate methods ==== + + /** + * Invoked when the component is initially created and about to be mounted. + * This may have side effects, but any external subscriptions or data created + * by this method must be cleaned up in `componentWillUnmount`. + * + * @optional + */ + componentWillMount: SpecPolicy.DEFINE_MANY, + + /** + * Invoked when the component has been mounted and has a DOM representation. + * However, there is no guarantee that the DOM node is in the document. + * + * Use this as an opportunity to operate on the DOM when the component has + * been mounted (initialized and rendered) for the first time. + * + * @param {DOMElement} rootNode DOM element representing the component. + * @optional + */ + componentDidMount: SpecPolicy.DEFINE_MANY, + + /** + * Invoked before the component receives new props. + * + * Use this as an opportunity to react to a prop transition by updating the + * state using `this.setState`. Current props are accessed via `this.props`. + * + * componentWillReceiveProps: function(nextProps, nextContext) { + * this.setState({ + * likesIncreasing: nextProps.likeCount > this.props.likeCount + * }); + * } + * + * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop + * transition may cause a state change, but the opposite is not true. If you + * need it, you are probably looking for `componentWillUpdate`. + * + * @param {object} nextProps + * @optional + */ + componentWillReceiveProps: SpecPolicy.DEFINE_MANY, + + /** + * Invoked while deciding if the component should be updated as a result of + * receiving new props, state and/or context. + * + * Use this as an opportunity to `return false` when you're certain that the + * transition to the new props/state/context will not require a component + * update. + * + * shouldComponentUpdate: function(nextProps, nextState, nextContext) { + * return !equal(nextProps, this.props) || + * !equal(nextState, this.state) || + * !equal(nextContext, this.context); + * } + * + * @param {object} nextProps + * @param {?object} nextState + * @param {?object} nextContext + * @return {boolean} True if the component should update. + * @optional + */ + shouldComponentUpdate: SpecPolicy.DEFINE_ONCE, + + /** + * Invoked when the component is about to update due to a transition from + * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState` + * and `nextContext`. + * + * Use this as an opportunity to perform preparation before an update occurs. + * + * NOTE: You **cannot** use `this.setState()` in this method. + * + * @param {object} nextProps + * @param {?object} nextState + * @param {?object} nextContext + * @param {ReactReconcileTransaction} transaction + * @optional + */ + componentWillUpdate: SpecPolicy.DEFINE_MANY, + + /** + * Invoked when the component's DOM representation has been updated. + * + * Use this as an opportunity to operate on the DOM when the component has + * been updated. + * + * @param {object} prevProps + * @param {?object} prevState + * @param {?object} prevContext + * @param {DOMElement} rootNode DOM element representing the component. + * @optional + */ + componentDidUpdate: SpecPolicy.DEFINE_MANY, + + /** + * Invoked when the component is about to be removed from its parent and have + * its DOM representation destroyed. + * + * Use this as an opportunity to deallocate any external resources. + * + * NOTE: There is no `componentDidUnmount` since your component will have been + * destroyed by that point. + * + * @optional + */ + componentWillUnmount: SpecPolicy.DEFINE_MANY, + + // ==== Advanced methods ==== + + /** + * Updates the component's currently mounted DOM representation. + * + * By default, this implements React's rendering and reconciliation algorithm. + * Sophisticated clients may wish to override this. + * + * @param {ReactReconcileTransaction} transaction + * @internal + * @overridable + */ + updateComponent: SpecPolicy.OVERRIDE_BASE + +}; + +/** + * Mapping from class specification keys to special processing functions. + * + * Although these are declared like instance properties in the specification + * when defining classes using `React.createClass`, they are actually static + * and are accessible on the constructor instead of the prototype. Despite + * being static, they must be defined outside of the "statics" key under + * which all other static methods are defined. + */ +var RESERVED_SPEC_KEYS = { + displayName: function (Constructor, displayName) { + Constructor.displayName = displayName; + }, + mixins: function (Constructor, mixins) { + if (mixins) { + for (var i = 0; i < mixins.length; i++) { + mixSpecIntoComponent(Constructor, mixins[i]); + } + } + }, + childContextTypes: function (Constructor, childContextTypes) { + if ("development" !== 'production') { + validateTypeDef(Constructor, childContextTypes, ReactPropTypeLocations.childContext); + } + Constructor.childContextTypes = assign({}, Constructor.childContextTypes, childContextTypes); + }, + contextTypes: function (Constructor, contextTypes) { + if ("development" !== 'production') { + validateTypeDef(Constructor, contextTypes, ReactPropTypeLocations.context); + } + Constructor.contextTypes = assign({}, Constructor.contextTypes, contextTypes); + }, + /** + * Special case getDefaultProps which should move into statics but requires + * automatic merging. + */ + getDefaultProps: function (Constructor, getDefaultProps) { + if (Constructor.getDefaultProps) { + Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps); + } else { + Constructor.getDefaultProps = getDefaultProps; + } + }, + propTypes: function (Constructor, propTypes) { + if ("development" !== 'production') { + validateTypeDef(Constructor, propTypes, ReactPropTypeLocations.prop); + } + Constructor.propTypes = assign({}, Constructor.propTypes, propTypes); + }, + statics: function (Constructor, statics) { + mixStaticSpecIntoComponent(Constructor, statics); + }, + autobind: function () {} }; + +// noop +function validateTypeDef(Constructor, typeDef, location) { + for (var propName in typeDef) { + if (typeDef.hasOwnProperty(propName)) { + // use a warning instead of an invariant so components + // don't show up in prod but not in __DEV__ + "development" !== 'production' ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : undefined; + } + } +} + +function validateMethodOverride(proto, name) { + var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null; + + // Disallow overriding of base class methods unless explicitly allowed. + if (ReactClassMixin.hasOwnProperty(name)) { + !(specPolicy === SpecPolicy.OVERRIDE_BASE) ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override ' + '`%s` from your class specification. Ensure that your method names ' + 'do not overlap with React methods.', name) : invariant(false) : undefined; + } + + // Disallow defining methods more than once unless explicitly allowed. + if (proto.hasOwnProperty(name)) { + !(specPolicy === SpecPolicy.DEFINE_MANY || specPolicy === SpecPolicy.DEFINE_MANY_MERGED) ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define ' + '`%s` on your component more than once. This conflict may be due ' + 'to a mixin.', name) : invariant(false) : undefined; + } +} + +/** + * Mixin helper which handles policy validation and reserved + * specification keys when building React classses. + */ +function mixSpecIntoComponent(Constructor, spec) { + if (!spec) { + return; + } + + !(typeof spec !== 'function') ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to ' + 'use a component class as a mixin. Instead, just use a regular object.') : invariant(false) : undefined; + !!ReactElement.isValidElement(spec) ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to ' + 'use a component as a mixin. Instead, just use a regular object.') : invariant(false) : undefined; + + var proto = Constructor.prototype; + + // By handling mixins before any other properties, we ensure the same + // chaining order is applied to methods with DEFINE_MANY policy, whether + // mixins are listed before or after these methods in the spec. + if (spec.hasOwnProperty(MIXINS_KEY)) { + RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins); + } + + for (var name in spec) { + if (!spec.hasOwnProperty(name)) { + continue; + } + + if (name === MIXINS_KEY) { + // We have already handled mixins in a special case above. + continue; + } + + var property = spec[name]; + validateMethodOverride(proto, name); + + if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) { + RESERVED_SPEC_KEYS[name](Constructor, property); + } else { + // Setup methods on prototype: + // The following member methods should not be automatically bound: + // 1. Expected ReactClass methods (in the "interface"). + // 2. Overridden methods (that were mixed in). + var isReactClassMethod = ReactClassInterface.hasOwnProperty(name); + var isAlreadyDefined = proto.hasOwnProperty(name); + var isFunction = typeof property === 'function'; + var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false; + + if (shouldAutoBind) { + if (!proto.__reactAutoBindMap) { + proto.__reactAutoBindMap = {}; + } + proto.__reactAutoBindMap[name] = property; + proto[name] = property; + } else { + if (isAlreadyDefined) { + var specPolicy = ReactClassInterface[name]; + + // These cases should already be caught by validateMethodOverride. + !(isReactClassMethod && (specPolicy === SpecPolicy.DEFINE_MANY_MERGED || specPolicy === SpecPolicy.DEFINE_MANY)) ? "development" !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s ' + 'when mixing in component specs.', specPolicy, name) : invariant(false) : undefined; + + // For methods which are defined more than once, call the existing + // methods before calling the new property, merging if appropriate. + if (specPolicy === SpecPolicy.DEFINE_MANY_MERGED) { + proto[name] = createMergedResultFunction(proto[name], property); + } else if (specPolicy === SpecPolicy.DEFINE_MANY) { + proto[name] = createChainedFunction(proto[name], property); + } + } else { + proto[name] = property; + if ("development" !== 'production') { + // Add verbose displayName to the function, which helps when looking + // at profiling tools. + if (typeof property === 'function' && spec.displayName) { + proto[name].displayName = spec.displayName + '_' + name; + } + } + } + } + } + } +} + +function mixStaticSpecIntoComponent(Constructor, statics) { + if (!statics) { + return; + } + for (var name in statics) { + var property = statics[name]; + if (!statics.hasOwnProperty(name)) { + continue; + } + + var isReserved = (name in RESERVED_SPEC_KEYS); + !!isReserved ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define a reserved ' + 'property, `%s`, that shouldn\'t be on the "statics" key. Define it ' + 'as an instance property instead; it will still be accessible on the ' + 'constructor.', name) : invariant(false) : undefined; + + var isInherited = (name in Constructor); + !!isInherited ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define ' + '`%s` on your component more than once. This conflict may be ' + 'due to a mixin.', name) : invariant(false) : undefined; + Constructor[name] = property; + } +} + +/** + * Merge two objects, but throw if both contain the same key. + * + * @param {object} one The first object, which is mutated. + * @param {object} two The second object + * @return {object} one after it has been mutated to contain everything in two. + */ +function mergeIntoWithNoDuplicateKeys(one, two) { + !(one && two && typeof one === 'object' && typeof two === 'object') ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : invariant(false) : undefined; + + for (var key in two) { + if (two.hasOwnProperty(key)) { + !(one[key] === undefined) ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): ' + 'Tried to merge two objects with the same key: `%s`. This conflict ' + 'may be due to a mixin; in particular, this may be caused by two ' + 'getInitialState() or getDefaultProps() methods returning objects ' + 'with clashing keys.', key) : invariant(false) : undefined; + one[key] = two[key]; + } + } + return one; +} + +/** + * Creates a function that invokes two functions and merges their return values. + * + * @param {function} one Function to invoke first. + * @param {function} two Function to invoke second. + * @return {function} Function that invokes the two argument functions. + * @private + */ +function createMergedResultFunction(one, two) { + return function mergedResult() { + var a = one.apply(this, arguments); + var b = two.apply(this, arguments); + if (a == null) { + return b; + } else if (b == null) { + return a; + } + var c = {}; + mergeIntoWithNoDuplicateKeys(c, a); + mergeIntoWithNoDuplicateKeys(c, b); + return c; + }; +} + +/** + * Creates a function that invokes two functions and ignores their return vales. + * + * @param {function} one Function to invoke first. + * @param {function} two Function to invoke second. + * @return {function} Function that invokes the two argument functions. + * @private + */ +function createChainedFunction(one, two) { + return function chainedFunction() { + one.apply(this, arguments); + two.apply(this, arguments); + }; +} + +/** + * Binds a method to the component. + * + * @param {object} component Component whose method is going to be bound. + * @param {function} method Method to be bound. + * @return {function} The bound method. + */ +function bindAutoBindMethod(component, method) { + var boundMethod = method.bind(component); + if ("development" !== 'production') { + boundMethod.__reactBoundContext = component; + boundMethod.__reactBoundMethod = method; + boundMethod.__reactBoundArguments = null; + var componentName = component.constructor.displayName; + var _bind = boundMethod.bind; + /* eslint-disable block-scoped-var, no-undef */ + boundMethod.bind = function (newThis) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + // User is trying to bind() an autobound method; we effectively will + // ignore the value of "this" that the user is trying to use, so + // let's warn. + if (newThis !== component && newThis !== null) { + "development" !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : undefined; + } else if (!args.length) { + "development" !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : undefined; + return boundMethod; + } + var reboundMethod = _bind.apply(boundMethod, arguments); + reboundMethod.__reactBoundContext = component; + reboundMethod.__reactBoundMethod = method; + reboundMethod.__reactBoundArguments = args; + return reboundMethod; + /* eslint-enable */ + }; + } + return boundMethod; +} + +/** + * Binds all auto-bound methods in a component. + * + * @param {object} component Component whose method is going to be bound. + */ +function bindAutoBindMethods(component) { + for (var autoBindKey in component.__reactAutoBindMap) { + if (component.__reactAutoBindMap.hasOwnProperty(autoBindKey)) { + var method = component.__reactAutoBindMap[autoBindKey]; + component[autoBindKey] = bindAutoBindMethod(component, method); + } + } +} + +/** + * Add more to the ReactClass base class. These are all legacy features and + * therefore not already part of the modern ReactComponent. + */ +var ReactClassMixin = { + + /** + * TODO: This will be deprecated because state should always keep a consistent + * type signature and the only use case for this, is to avoid that. + */ + replaceState: function (newState, callback) { + this.updater.enqueueReplaceState(this, newState); + if (callback) { + this.updater.enqueueCallback(this, callback); + } + }, + + /** + * Checks whether or not this composite component is mounted. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function () { + return this.updater.isMounted(this); + }, + + /** + * Sets a subset of the props. + * + * @param {object} partialProps Subset of the next props. + * @param {?function} callback Called after props are updated. + * @final + * @public + * @deprecated + */ + setProps: function (partialProps, callback) { + if ("development" !== 'production') { + warnSetProps(); + } + this.updater.enqueueSetProps(this, partialProps); + if (callback) { + this.updater.enqueueCallback(this, callback); + } + }, + + /** + * Replace all the props. + * + * @param {object} newProps Subset of the next props. + * @param {?function} callback Called after props are updated. + * @final + * @public + * @deprecated + */ + replaceProps: function (newProps, callback) { + if ("development" !== 'production') { + warnSetProps(); + } + this.updater.enqueueReplaceProps(this, newProps); + if (callback) { + this.updater.enqueueCallback(this, callback); + } + } +}; + +var ReactClassComponent = function () {}; +assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin); + +/** + * Module for creating composite components. + * + * @class ReactClass + */ +var ReactClass = { + + /** + * Creates a composite component class given a class specification. + * + * @param {object} spec Class specification (which must define `render`). + * @return {function} Component constructor function. + * @public + */ + createClass: function (spec) { + var Constructor = function (props, context, updater) { + // This constructor is overridden by mocks. The argument is used + // by mocks to assert on what gets mounted. + + if ("development" !== 'production') { + "development" !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : undefined; + } + + // Wire up auto-binding + if (this.__reactAutoBindMap) { + bindAutoBindMethods(this); + } + + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + + this.state = null; + + // ReactClasses doesn't have constructors. Instead, they use the + // getInitialState and componentWillMount methods for initialization. + + var initialState = this.getInitialState ? this.getInitialState() : null; + if ("development" !== 'production') { + // We allow auto-mocks to proceed as if they're returning null. + if (typeof initialState === 'undefined' && this.getInitialState._isMockFunction) { + // This is probably bad practice. Consider warning here and + // deprecating this convenience. + initialState = null; + } + } + !(typeof initialState === 'object' && !Array.isArray(initialState)) ? "development" !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : invariant(false) : undefined; + + this.state = initialState; + }; + Constructor.prototype = new ReactClassComponent(); + Constructor.prototype.constructor = Constructor; + + injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor)); + + mixSpecIntoComponent(Constructor, spec); + + // Initialize the defaultProps property after all mixins have been merged. + if (Constructor.getDefaultProps) { + Constructor.defaultProps = Constructor.getDefaultProps(); + } + + if ("development" !== 'production') { + // This is a tag to indicate that the use of these method names is ok, + // since it's used with createClass. If it's not, then it's likely a + // mistake so we'll warn you to use the static property, property + // initializer or constructor respectively. + if (Constructor.getDefaultProps) { + Constructor.getDefaultProps.isReactClassApproved = {}; + } + if (Constructor.prototype.getInitialState) { + Constructor.prototype.getInitialState.isReactClassApproved = {}; + } + } + + !Constructor.prototype.render ? "development" !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : invariant(false) : undefined; + + if ("development" !== 'production') { + "development" !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : undefined; + "development" !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : undefined; + } + + // Reduce time spent doing lookups by setting these on the prototype. + for (var methodName in ReactClassInterface) { + if (!Constructor.prototype[methodName]) { + Constructor.prototype[methodName] = null; + } + } + + return Constructor; + }, + + injection: { + injectMixin: function (mixin) { + injectedMixins.push(mixin); + } + } + +}; + +module.exports = ReactClass; +},{"136":136,"143":143,"146":146,"147":147,"154":154,"23":23,"30":30,"52":52,"69":69,"72":72,"73":73}],30:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ReactComponent + */ + +'use strict'; + +var ReactNoopUpdateQueue = _dereq_(69); + +var emptyObject = _dereq_(136); +var invariant = _dereq_(143); +var warning = _dereq_(154); + +/** + * Base class helpers for the updating state of a component. + */ +function ReactComponent(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject; + // We initialize the default updater but the real one gets injected by the + // renderer. + this.updater = updater || ReactNoopUpdateQueue; +} + +ReactComponent.prototype.isReactComponent = {}; + +/** + * Sets a subset of the state. Always use this to mutate + * state. You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * There is no guarantee that calls to `setState` will run synchronously, + * as they may eventually be batched together. You can provide an optional + * callback that will be executed when the call to setState is actually + * completed. + * + * When a function is provided to setState, it will be called at some point in + * the future (not synchronously). It will be called with the up to date + * component arguments (state, props, context). These values can be different + * from this.* because your function may be called after receiveProps but before + * shouldComponentUpdate, and this new state, props, and context will not yet be + * assigned to this. + * + * @param {object|function} partialState Next partial state or function to + * produce next partial state to be merged with current state. + * @param {?function} callback Called after state is updated. + * @final + * @protected + */ +ReactComponent.prototype.setState = function (partialState, callback) { + !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? "development" !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.') : invariant(false) : undefined; + if ("development" !== 'production') { + "development" !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : undefined; + } + this.updater.enqueueSetState(this, partialState); + if (callback) { + this.updater.enqueueCallback(this, callback); + } +}; + +/** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {?function} callback Called after update is complete. + * @final + * @protected + */ +ReactComponent.prototype.forceUpdate = function (callback) { + this.updater.enqueueForceUpdate(this); + if (callback) { + this.updater.enqueueCallback(this, callback); + } +}; + +/** + * Deprecated APIs. These APIs used to exist on classic React classes but since + * we would like to deprecate them, we're not going to move them over to this + * modern base class. Instead, we define a getter that warns if it's accessed. + */ +if ("development" !== 'production') { + var deprecatedAPIs = { + getDOMNode: ['getDOMNode', 'Use ReactDOM.findDOMNode(component) instead.'], + isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], + replaceProps: ['replaceProps', 'Instead, call render again at the top level.'], + replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'], + setProps: ['setProps', 'Instead, call render again at the top level.'] + }; + var defineDeprecationWarning = function (methodName, info) { + try { + Object.defineProperty(ReactComponent.prototype, methodName, { + get: function () { + "development" !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : undefined; + return undefined; + } + }); + } catch (x) { + // IE will fail on defineProperty (es5-shim/sham too) + } + }; + for (var fnName in deprecatedAPIs) { + if (deprecatedAPIs.hasOwnProperty(fnName)) { + defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); + } + } +} + +module.exports = ReactComponent; +},{"136":136,"143":143,"154":154,"69":69}],31:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ReactComponentBrowserEnvironment + */ + +'use strict'; + +var ReactDOMIDOperations = _dereq_(40); +var ReactMount = _dereq_(65); + +/** + * Abstracts away all functionality of the reconciler that requires knowledge of + * the browser context. TODO: These callers should be refactored to avoid the + * need for this injection. + */ +var ReactComponentBrowserEnvironment = { + + processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates, + + replaceNodeWithMarkupByID: ReactDOMIDOperations.dangerouslyReplaceNodeWithMarkupByID, + + /** + * If a particular environment requires that some resources be cleaned up, + * specify this in the injected Mixin. In the DOM, we would likely want to + * purge any cached node ID lookups. + * + * @private + */ + unmountIDFromEnvironment: function (rootNodeID) { + ReactMount.purgeID(rootNodeID); + } + +}; + +module.exports = ReactComponentBrowserEnvironment; +},{"40":40,"65":65}],32:[function(_dereq_,module,exports){ +/** + * Copyright 2014-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ReactComponentEnvironment + */ + +'use strict'; + +var invariant = _dereq_(143); + +var injected = false; + +var ReactComponentEnvironment = { + + /** + * Optionally injectable environment dependent cleanup hook. (server vs. + * browser etc). Example: A browser system caches DOM nodes based on component + * ID and must remove that cache entry when this instance is unmounted. + */ + unmountIDFromEnvironment: null, + + /** + * Optionally injectable hook for swapping out mount images in the middle of + * the tree. + */ + replaceNodeWithMarkupByID: null, + + /** + * Optionally injectable hook for processing a queue of child updates. Will + * later move into MultiChildComponents. + */ + processChildrenUpdates: null, + + injection: { + injectEnvironment: function (environment) { + !!injected ? "development" !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : invariant(false) : undefined; + ReactComponentEnvironment.unmountIDFromEnvironment = environment.unmountIDFromEnvironment; + ReactComponentEnvironment.replaceNodeWithMarkupByID = environment.replaceNodeWithMarkupByID; + ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates; + injected = true; + } + } + +}; + +module.exports = ReactComponentEnvironment; +},{"143":143}],33:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ReactCompositeComponent + */ + +'use strict'; + +var ReactComponentEnvironment = _dereq_(32); +var ReactCurrentOwner = _dereq_(34); +var ReactElement = _dereq_(52); +var ReactInstanceMap = _dereq_(62); +var ReactPerf = _dereq_(71); +var ReactPropTypeLocations = _dereq_(73); +var ReactPropTypeLocationNames = _dereq_(72); +var ReactReconciler = _dereq_(76); +var ReactUpdateQueue = _dereq_(82); + +var assign = _dereq_(23); +var emptyObject = _dereq_(136); +var invariant = _dereq_(143); +var shouldUpdateReactComponent = _dereq_(125); +var warning = _dereq_(154); + +function getDeclarationErrorAddendum(component) { + var owner = component._currentElement._owner || null; + if (owner) { + var name = owner.getName(); + if (name) { + return ' Check the render method of `' + name + '`.'; + } + } + return ''; +} + +function StatelessComponent(Component) {} +StatelessComponent.prototype.render = function () { + var Component = ReactInstanceMap.get(this)._currentElement.type; + return Component(this.props, this.context, this.updater); +}; + +/** + * ------------------ The Life-Cycle of a Composite Component ------------------ + * + * - constructor: Initialization of state. The instance is now retained. + * - componentWillMount + * - render + * - [children's constructors] + * - [children's componentWillMount and render] + * - [children's componentDidMount] + * - componentDidMount + * + * Update Phases: + * - componentWillReceiveProps (only called if parent updated) + * - shouldComponentUpdate + * - componentWillUpdate + * - render + * - [children's constructors or receive props phases] + * - componentDidUpdate + * + * - componentWillUnmount + * - [children's componentWillUnmount] + * - [children destroyed] + * - (destroyed): The instance is now blank, released by React and ready for GC. + * + * ----------------------------------------------------------------------------- + */ + +/** + * An incrementing ID assigned to each component when it is mounted. This is + * used to enforce the order in which `ReactUpdates` updates dirty components. + * + * @private + */ +var nextMountID = 1; + +/** + * @lends {ReactCompositeComponent.prototype} + */ +var ReactCompositeComponentMixin = { + + /** + * Base constructor for all composite component. + * + * @param {ReactElement} element + * @final + * @internal + */ + construct: function (element) { + this._currentElement = element; + this._rootNodeID = null; + this._instance = null; + + // See ReactUpdateQueue + this._pendingElement = null; + this._pendingStateQueue = null; + this._pendingReplaceState = false; + this._pendingForceUpdate = false; + + this._renderedComponent = null; + + this._context = null; + this._mountOrder = 0; + this._topLevelWrapper = null; + + // See ReactUpdates and ReactUpdateQueue. + this._pendingCallbacks = null; + }, + + /** + * Initializes the component, renders markup, and registers event listeners. + * + * @param {string} rootID DOM ID of the root node. + * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction + * @return {?string} Rendered markup to be inserted into the DOM. + * @final + * @internal + */ + mountComponent: function (rootID, transaction, context) { + this._context = context; + this._mountOrder = nextMountID++; + this._rootNodeID = rootID; + + var publicProps = this._processProps(this._currentElement.props); + var publicContext = this._processContext(context); + + var Component = this._currentElement.type; + + // Initialize the public class + var inst; + var renderedElement; + + // This is a way to detect if Component is a stateless arrow function + // component, which is not newable. It might not be 100% reliable but is + // something we can do until we start detecting that Component extends + // React.Component. We already assume that typeof Component === 'function'. + var canInstantiate = ('prototype' in Component); + + if (canInstantiate) { + if ("development" !== 'production') { + ReactCurrentOwner.current = this; + try { + inst = new Component(publicProps, publicContext, ReactUpdateQueue); + } finally { + ReactCurrentOwner.current = null; + } + } else { + inst = new Component(publicProps, publicContext, ReactUpdateQueue); + } + } + + if (!canInstantiate || inst === null || inst === false || ReactElement.isValidElement(inst)) { + renderedElement = inst; + inst = new StatelessComponent(Component); + } + + if ("development" !== 'production') { + // This will throw later in _renderValidatedComponent, but add an early + // warning now to help debugging + if (inst.render == null) { + "development" !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`, returned ' + 'null/false from a stateless component, or tried to render an ' + 'element whose type is a function that isn\'t a React component.', Component.displayName || Component.name || 'Component') : undefined; + } else { + // We support ES6 inheriting from React.Component, the module pattern, + // and stateless components, but not ES6 classes that don't extend + "development" !== 'production' ? warning(Component.prototype && Component.prototype.isReactComponent || !canInstantiate || !(inst instanceof Component), '%s(...): React component classes must extend React.Component.', Component.displayName || Component.name || 'Component') : undefined; + } + } + + // These should be set up in the constructor, but as a convenience for + // simpler class abstractions, we set them up after the fact. + inst.props = publicProps; + inst.context = publicContext; + inst.refs = emptyObject; + inst.updater = ReactUpdateQueue; + + this._instance = inst; + + // Store a reference from the instance back to the internal representation + ReactInstanceMap.set(inst, this); + + if ("development" !== 'production') { + // Since plain JS classes are defined without any special initialization + // logic, we can not catch common errors early. Therefore, we have to + // catch them here, at initialization time, instead. + "development" !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : undefined; + "development" !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : undefined; + "development" !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : undefined; + "development" !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : undefined; + "development" !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : undefined; + "development" !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : undefined; + "development" !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : undefined; + } + + var initialState = inst.state; + if (initialState === undefined) { + inst.state = initialState = null; + } + !(typeof initialState === 'object' && !Array.isArray(initialState)) ? "development" !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : invariant(false) : undefined; + + this._pendingStateQueue = null; + this._pendingReplaceState = false; + this._pendingForceUpdate = false; + + if (inst.componentWillMount) { + inst.componentWillMount(); + // When mounting, calls to `setState` by `componentWillMount` will set + // `this._pendingStateQueue` without triggering a re-render. + if (this._pendingStateQueue) { + inst.state = this._processPendingState(inst.props, inst.context); + } + } + + // If not a stateless component, we now render + if (renderedElement === undefined) { + renderedElement = this._renderValidatedComponent(); + } + + this._renderedComponent = this._instantiateReactComponent(renderedElement); + + var markup = ReactReconciler.mountComponent(this._renderedComponent, rootID, transaction, this._processChildContext(context)); + if (inst.componentDidMount) { + transaction.getReactMountReady().enqueue(inst.componentDidMount, inst); + } + + return markup; + }, + + /** + * Releases any resources allocated by `mountComponent`. + * + * @final + * @internal + */ + unmountComponent: function () { + var inst = this._instance; + + if (inst.componentWillUnmount) { + inst.componentWillUnmount(); + } + + ReactReconciler.unmountComponent(this._renderedComponent); + this._renderedComponent = null; + this._instance = null; + + // Reset pending fields + // Even if this component is scheduled for another update in ReactUpdates, + // it would still be ignored because these fields are reset. + this._pendingStateQueue = null; + this._pendingReplaceState = false; + this._pendingForceUpdate = false; + this._pendingCallbacks = null; + this._pendingElement = null; + + // These fields do not really need to be reset since this object is no + // longer accessible. + this._context = null; + this._rootNodeID = null; + this._topLevelWrapper = null; + + // Delete the reference from the instance to this internal representation + // which allow the internals to be properly cleaned up even if the user + // leaks a reference to the public instance. + ReactInstanceMap.remove(inst); + + // Some existing components rely on inst.props even after they've been + // destroyed (in event handlers). + // TODO: inst.props = null; + // TODO: inst.state = null; + // TODO: inst.context = null; + }, + + /** + * Filters the context object to only contain keys specified in + * `contextTypes` + * + * @param {object} context + * @return {?object} + * @private + */ + _maskContext: function (context) { + var maskedContext = null; + var Component = this._currentElement.type; + var contextTypes = Component.contextTypes; + if (!contextTypes) { + return emptyObject; + } + maskedContext = {}; + for (var contextName in contextTypes) { + maskedContext[contextName] = context[contextName]; + } + return maskedContext; + }, + + /** + * Filters the context object to only contain keys specified in + * `contextTypes`, and asserts that they are valid. + * + * @param {object} context + * @return {?object} + * @private + */ + _processContext: function (context) { + var maskedContext = this._maskContext(context); + if ("development" !== 'production') { + var Component = this._currentElement.type; + if (Component.contextTypes) { + this._checkPropTypes(Component.contextTypes, maskedContext, ReactPropTypeLocations.context); + } + } + return maskedContext; + }, + + /** + * @param {object} currentContext + * @return {object} + * @private + */ + _processChildContext: function (currentContext) { + var Component = this._currentElement.type; + var inst = this._instance; + var childContext = inst.getChildContext && inst.getChildContext(); + if (childContext) { + !(typeof Component.childContextTypes === 'object') ? "development" !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', this.getName() || 'ReactCompositeComponent') : invariant(false) : undefined; + if ("development" !== 'production') { + this._checkPropTypes(Component.childContextTypes, childContext, ReactPropTypeLocations.childContext); + } + for (var name in childContext) { + !(name in Component.childContextTypes) ? "development" !== 'production' ? invariant(false, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : invariant(false) : undefined; + } + return assign({}, currentContext, childContext); + } + return currentContext; + }, + + /** + * Processes props by setting default values for unspecified props and + * asserting that the props are valid. Does not mutate its argument; returns + * a new props object with defaults merged in. + * + * @param {object} newProps + * @return {object} + * @private + */ + _processProps: function (newProps) { + if ("development" !== 'production') { + var Component = this._currentElement.type; + if (Component.propTypes) { + this._checkPropTypes(Component.propTypes, newProps, ReactPropTypeLocations.prop); + } + } + return newProps; + }, + + /** + * Assert that the props are valid + * + * @param {object} propTypes Map of prop name to a ReactPropType + * @param {object} props + * @param {string} location e.g. "prop", "context", "child context" + * @private + */ + _checkPropTypes: function (propTypes, props, location) { + // TODO: Stop validating prop types here and only use the element + // validation. + var componentName = this.getName(); + for (var propName in propTypes) { + if (propTypes.hasOwnProperty(propName)) { + var error; + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + !(typeof propTypes[propName] === 'function') ? "development" !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually ' + 'from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], propName) : invariant(false) : undefined; + error = propTypes[propName](props, propName, componentName, location); + } catch (ex) { + error = ex; + } + if (error instanceof Error) { + // We may want to extend this logic for similar errors in + // top-level render calls, so I'm abstracting it away into + // a function to minimize refactoring in the future + var addendum = getDeclarationErrorAddendum(this); + + if (location === ReactPropTypeLocations.prop) { + // Preface gives us something to blacklist in warning module + "development" !== 'production' ? warning(false, 'Failed Composite propType: %s%s', error.message, addendum) : undefined; + } else { + "development" !== 'production' ? warning(false, 'Failed Context Types: %s%s', error.message, addendum) : undefined; + } + } + } + } + }, + + receiveComponent: function (nextElement, transaction, nextContext) { + var prevElement = this._currentElement; + var prevContext = this._context; + + this._pendingElement = null; + + this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext); + }, + + /** + * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate` + * is set, update the component. + * + * @param {ReactReconcileTransaction} transaction + * @internal + */ + performUpdateIfNecessary: function (transaction) { + if (this._pendingElement != null) { + ReactReconciler.receiveComponent(this, this._pendingElement || this._currentElement, transaction, this._context); + } + + if (this._pendingStateQueue !== null || this._pendingForceUpdate) { + this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context); + } + }, + + /** + * Perform an update to a mounted component. The componentWillReceiveProps and + * shouldComponentUpdate methods are called, then (assuming the update isn't + * skipped) the remaining update lifecycle methods are called and the DOM + * representation is updated. + * + * By default, this implements React's rendering and reconciliation algorithm. + * Sophisticated clients may wish to override this. + * + * @param {ReactReconcileTransaction} transaction + * @param {ReactElement} prevParentElement + * @param {ReactElement} nextParentElement + * @internal + * @overridable + */ + updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) { + var inst = this._instance; + + var nextContext = this._context === nextUnmaskedContext ? inst.context : this._processContext(nextUnmaskedContext); + var nextProps; + + // Distinguish between a props update versus a simple state update + if (prevParentElement === nextParentElement) { + // Skip checking prop types again -- we don't read inst.props to avoid + // warning for DOM component props in this upgrade + nextProps = nextParentElement.props; + } else { + nextProps = this._processProps(nextParentElement.props); + // An update here will schedule an update but immediately set + // _pendingStateQueue which will ensure that any state updates gets + // immediately reconciled instead of waiting for the next batch. + + if (inst.componentWillReceiveProps) { + inst.componentWillReceiveProps(nextProps, nextContext); + } + } + + var nextState = this._processPendingState(nextProps, nextContext); + + var shouldUpdate = this._pendingForceUpdate || !inst.shouldComponentUpdate || inst.shouldComponentUpdate(nextProps, nextState, nextContext); + + if ("development" !== 'production') { + "development" !== 'production' ? warning(typeof shouldUpdate !== 'undefined', '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : undefined; + } + + if (shouldUpdate) { + this._pendingForceUpdate = false; + // Will set `this.props`, `this.state` and `this.context`. + this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext); + } else { + // If it's determined that a component should not update, we still want + // to set props and state but we shortcut the rest of the update. + this._currentElement = nextParentElement; + this._context = nextUnmaskedContext; + inst.props = nextProps; + inst.state = nextState; + inst.context = nextContext; + } + }, + + _processPendingState: function (props, context) { + var inst = this._instance; + var queue = this._pendingStateQueue; + var replace = this._pendingReplaceState; + this._pendingReplaceState = false; + this._pendingStateQueue = null; + + if (!queue) { + return inst.state; + } + + if (replace && queue.length === 1) { + return queue[0]; + } + + var nextState = assign({}, replace ? queue[0] : inst.state); + for (var i = replace ? 1 : 0; i < queue.length; i++) { + var partial = queue[i]; + assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial); + } + + return nextState; + }, + + /** + * Merges new props and state, notifies delegate methods of update and + * performs update. + * + * @param {ReactElement} nextElement Next element + * @param {object} nextProps Next public object to set as properties. + * @param {?object} nextState Next object to set as state. + * @param {?object} nextContext Next public object to set as context. + * @param {ReactReconcileTransaction} transaction + * @param {?object} unmaskedContext + * @private + */ + _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) { + var inst = this._instance; + + var hasComponentDidUpdate = Boolean(inst.componentDidUpdate); + var prevProps; + var prevState; + var prevContext; + if (hasComponentDidUpdate) { + prevProps = inst.props; + prevState = inst.state; + prevContext = inst.context; + } + + if (inst.componentWillUpdate) { + inst.componentWillUpdate(nextProps, nextState, nextContext); + } + + this._currentElement = nextElement; + this._context = unmaskedContext; + inst.props = nextProps; + inst.state = nextState; + inst.context = nextContext; + + this._updateRenderedComponent(transaction, unmaskedContext); + + if (hasComponentDidUpdate) { + transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst); + } + }, + + /** + * Call the component's `render` method and update the DOM accordingly. + * + * @param {ReactReconcileTransaction} transaction + * @internal + */ + _updateRenderedComponent: function (transaction, context) { + var prevComponentInstance = this._renderedComponent; + var prevRenderedElement = prevComponentInstance._currentElement; + var nextRenderedElement = this._renderValidatedComponent(); + if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) { + ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context)); + } else { + // These two IDs are actually the same! But nothing should rely on that. + var thisID = this._rootNodeID; + var prevComponentID = prevComponentInstance._rootNodeID; + ReactReconciler.unmountComponent(prevComponentInstance); + + this._renderedComponent = this._instantiateReactComponent(nextRenderedElement); + var nextMarkup = ReactReconciler.mountComponent(this._renderedComponent, thisID, transaction, this._processChildContext(context)); + this._replaceNodeWithMarkupByID(prevComponentID, nextMarkup); + } + }, + + /** + * @protected + */ + _replaceNodeWithMarkupByID: function (prevComponentID, nextMarkup) { + ReactComponentEnvironment.replaceNodeWithMarkupByID(prevComponentID, nextMarkup); + }, + + /** + * @protected + */ + _renderValidatedComponentWithoutOwnerOrContext: function () { + var inst = this._instance; + var renderedComponent = inst.render(); + if ("development" !== 'production') { + // We allow auto-mocks to proceed as if they're returning null. + if (typeof renderedComponent === 'undefined' && inst.render._isMockFunction) { + // This is probably bad practice. Consider warning here and + // deprecating this convenience. + renderedComponent = null; + } + } + + return renderedComponent; + }, + + /** + * @private + */ + _renderValidatedComponent: function () { + var renderedComponent; + ReactCurrentOwner.current = this; + try { + renderedComponent = this._renderValidatedComponentWithoutOwnerOrContext(); + } finally { + ReactCurrentOwner.current = null; + } + !( + // TODO: An `isValidNode` function would probably be more appropriate + renderedComponent === null || renderedComponent === false || ReactElement.isValidElement(renderedComponent)) ? "development" !== 'production' ? invariant(false, '%s.render(): A valid ReactComponent must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : invariant(false) : undefined; + return renderedComponent; + }, + + /** + * Lazily allocates the refs object and stores `component` as `ref`. + * + * @param {string} ref Reference name. + * @param {component} component Component to store as `ref`. + * @final + * @private + */ + attachRef: function (ref, component) { + var inst = this.getPublicInstance(); + !(inst != null) ? "development" !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : invariant(false) : undefined; + var publicComponentInstance = component.getPublicInstance(); + if ("development" !== 'production') { + var componentName = component && component.getName ? component.getName() : 'a component'; + "development" !== 'production' ? warning(publicComponentInstance != null, 'Stateless function components cannot be given refs ' + '(See ref "%s" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : undefined; + } + var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs; + refs[ref] = publicComponentInstance; + }, + + /** + * Detaches a reference name. + * + * @param {string} ref Name to dereference. + * @final + * @private + */ + detachRef: function (ref) { + var refs = this.getPublicInstance().refs; + delete refs[ref]; + }, + + /** + * Get a text description of the component that can be used to identify it + * in error messages. + * @return {string} The name or null. + * @internal + */ + getName: function () { + var type = this._currentElement.type; + var constructor = this._instance && this._instance.constructor; + return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null; + }, + + /** + * Get the publicly accessible representation of this component - i.e. what + * is exposed by refs and returned by render. Can be null for stateless + * components. + * + * @return {ReactComponent} the public component instance. + * @internal + */ + getPublicInstance: function () { + var inst = this._instance; + if (inst instanceof StatelessComponent) { + return null; + } + return inst; + }, + + // Stub + _instantiateReactComponent: null + +}; + +ReactPerf.measureMethods(ReactCompositeComponentMixin, 'ReactCompositeComponent', { + mountComponent: 'mountComponent', + updateComponent: 'updateComponent', + _renderValidatedComponent: '_renderValidatedComponent' +}); + +var ReactCompositeComponent = { + + Mixin: ReactCompositeComponentMixin + +}; + +module.exports = ReactCompositeComponent; +},{"125":125,"136":136,"143":143,"154":154,"23":23,"32":32,"34":34,"52":52,"62":62,"71":71,"72":72,"73":73,"76":76,"82":82}],34:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ReactCurrentOwner + */ + +'use strict'; + +/** + * Keeps track of the current owner. + * + * The current owner is the component who should own any components that are + * currently being constructed. + */ +var ReactCurrentOwner = { + + /** + * @internal + * @type {ReactComponent} + */ + current: null + +}; + +module.exports = ReactCurrentOwner; +},{}],35:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ReactDOM + */ + +/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/ + +'use strict'; + +var ReactCurrentOwner = _dereq_(34); +var ReactDOMTextComponent = _dereq_(46); +var ReactDefaultInjection = _dereq_(49); +var ReactInstanceHandles = _dereq_(61); +var ReactMount = _dereq_(65); +var ReactPerf = _dereq_(71); +var ReactReconciler = _dereq_(76); +var ReactUpdates = _dereq_(83); +var ReactVersion = _dereq_(84); + +var findDOMNode = _dereq_(107); +var renderSubtreeIntoContainer = _dereq_(122); +var warning = _dereq_(154); + +ReactDefaultInjection.inject(); + +var render = ReactPerf.measure('React', 'render', ReactMount.render); + +var React = { + findDOMNode: findDOMNode, + render: render, + unmountComponentAtNode: ReactMount.unmountComponentAtNode, + version: ReactVersion, + + /* eslint-disable camelcase */ + unstable_batchedUpdates: ReactUpdates.batchedUpdates, + unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer +}; + +// Inject the runtime into a devtools global hook regardless of browser. +// Allows for debugging when the hook is injected on the page. +/* eslint-enable camelcase */ +if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') { + __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({ + CurrentOwner: ReactCurrentOwner, + InstanceHandles: ReactInstanceHandles, + Mount: ReactMount, + Reconciler: ReactReconciler, + TextComponent: ReactDOMTextComponent + }); +} + +if ("development" !== 'production') { + var ExecutionEnvironment = _dereq_(129); + if (ExecutionEnvironment.canUseDOM && window.top === window.self) { + + // First check if devtools is not installed + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') { + // If we're in Chrome or Firefox, provide a download link if not installed. + if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) { + console.debug('Download the React DevTools for a better development experience: ' + 'https://fb.me/react-devtools'); + } + } + + // If we're in IE8, check to see if we are in compatibility mode and provide + // information on preventing compatibility mode + var ieCompatibilityMode = document.documentMode && document.documentMode < 8; + + "development" !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '') : undefined; + + var expectedFeatures = [ + // shims + Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.split, String.prototype.trim, + + // shams + Object.create, Object.freeze]; + + for (var i = 0; i < expectedFeatures.length; i++) { + if (!expectedFeatures[i]) { + console.error('One or more ES5 shim/shams expected by React are not available: ' + 'https://fb.me/react-warning-polyfills'); + break; + } + } + } +} + +module.exports = React; +},{"107":107,"122":122,"129":129,"154":154,"34":34,"46":46,"49":49,"61":61,"65":65,"71":71,"76":76,"83":83,"84":84}],36:[function(_dereq_,module,exports){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ReactDOMButton + */ + +'use strict'; + +var mouseListenerNames = { + onClick: true, + onDoubleClick: true, + onMouseDown: true, + onMouseMove: true, + onMouseUp: true, + + onClickCapture: true, + onDoubleClickCapture: true, + onMouseDownCapture: true, + onMouseMoveCapture: true, + onMouseUpCapture: true +}; + +/** + * Implements a
}
@@ -541,7 +538,7 @@ var choiceTransform = (editorProps) => { module.exports = { name: "radio", - displayName: "Multiple choice", + displayName: "Radio/選擇題", widget: Radio, editor: RadioEditor, transform: choiceTransform diff --git a/src/widgets/sorter.jsx b/src/widgets/sorter.jsx index 192763a147..094a785998 100644 --- a/src/widgets/sorter.jsx +++ b/src/widgets/sorter.jsx @@ -95,11 +95,9 @@ var SorterEditor = React.createClass({ return
- {' '}Correct answer:{' '} + {' '}正確答案:{' '}

- Enter the correct answer (in the correct order) here. The - preview on the right will have the cards in a randomized - order, which is how the student will see them. + 在這邊輸入正確的排序,右邊的預覽畫面會是隨機的排序,也就是學生會看到的畫面。

-

Use the horizontal layout for short text and small - images. The vertical layout is best for longer text and - larger images.

+

當卡片中的文字較短或是圖形較小時,建議可選用水平方式顯示,垂直 + 方式較適用於較長的文字敘述 (如:證明) 或較大的圖形。

-

Padding is good for text, but not needed for images.

+

留白適合用在文字,若為圖片則不需要。

; @@ -146,8 +143,8 @@ var SorterEditor = React.createClass({ module.exports = { name: "sorter", - displayName: "Sorter", + displayName: "Sorter/排序", widget: Sorter, editor: SorterEditor, - hidden: true + hidden: false }; diff --git a/src/widgets/table.jsx b/src/widgets/table.jsx index dc74bd2984..83844806f3 100644 --- a/src/widgets/table.jsx +++ b/src/widgets/table.jsx @@ -160,7 +160,7 @@ var TableEditor = React.createClass({ return
; }, @@ -1539,7 +1529,7 @@ var ToolsBar = React.createClass({ onTouchStart={captureScratchpadTouchStart}> {" "} - Undo + 回復
; @@ -1585,7 +1575,7 @@ var AddTransformBar = React.createClass({ onTouchStart={captureScratchpadTouchStart}> {" "} - Undo + 回復
; @@ -1648,6 +1638,7 @@ var Transformer = React.createClass({ markings={graph.markings} backgroundImage={graph.backgroundImage} showProtractor={graph.showProtractor} + showRuler={graph.showRuler} onNewGraphie={this.setupGraphie} /> {!interactiveToolsMode && ( @@ -2395,7 +2386,7 @@ var TransformerEditor = React.createClass({ // so that we don't have all this duplication getDefaultProps: function() { return _.defaults({ - graph: defaultGraphProps(this.props.graph, 340) + graph: defaultGraphProps(null, 340) }, defaultTransformerProps); }, @@ -2404,33 +2395,24 @@ var TransformerEditor = React.createClass({ // this can happen because the graph json doesn't include // box, for example var graph = _.extend( - defaultGraphProps(this.props.graph, 340), + defaultGraphProps(null, 340), this.props.graph ); return

- We generally do not grade empty answers. This usually - works well, but sometimes can result in giving away - part of an answer in a multi-part question. -

-

- If this is a multi-part question (there is another - widget), you probably want to enable this option. - Otherwise, you should leave it disabled. -

-

- Confused? Talk to Elizabeth. + 基本上我們並不允許答案為空,但在具有多重填答需求的問題中 + (另一個 widget),此功能是需要的。

-
Graph settings:
+
圖形設定:
-
Transformation settings:
+
變換設定:
-
Starting location:
+
起始位置:
-
Solution transformations:
+
答案:
Date: Mon, 14 Dec 2015 11:20:04 +0800 Subject: [PATCH 041/156] Move perseus-package css into perseus-package --- css/editor.less | 895 ++++++++++++++++++++ css/editor.less.css | 660 +++++++++++++++ css/lib/mathquill/font/Symbola.eot | Bin 0 -> 890190 bytes css/lib/mathquill/font/Symbola.ttf | Bin 0 -> 890008 bytes css/lib/mathquill/font/Symbola.woff | Bin 0 -> 474392 bytes css/lib/mathquill/mathquill.css | 410 +++++++++ css/perseus.less | 477 +++++++++++ css/perseus.less.css | 1194 +++++++++++++++++++++++++++ css/variables.less | 13 + css/widgets/categorization.less | 106 +++ css/widgets/categorizer.less | 50 ++ css/widgets/dropdown.less | 120 +++ css/widgets/expression.less | 133 +++ css/widgets/image.less | 18 + css/widgets/interactive-graph.less | 11 + css/widgets/matcher.less | 36 + css/widgets/measurer.less | 10 + css/widgets/orderer.less | 115 +++ css/widgets/plotter.less | 26 + css/widgets/radio.less | 146 ++++ css/widgets/sortable.less | 202 +++++ css/widgets/table.less | 47 ++ css/widgets/transformer.less | 18 + 23 files changed, 4687 insertions(+) create mode 100644 css/editor.less create mode 100644 css/editor.less.css create mode 100755 css/lib/mathquill/font/Symbola.eot create mode 100755 css/lib/mathquill/font/Symbola.ttf create mode 100755 css/lib/mathquill/font/Symbola.woff create mode 100644 css/lib/mathquill/mathquill.css create mode 100644 css/perseus.less create mode 100644 css/perseus.less.css create mode 100644 css/variables.less create mode 100644 css/widgets/categorization.less create mode 100644 css/widgets/categorizer.less create mode 100644 css/widgets/dropdown.less create mode 100644 css/widgets/expression.less create mode 100644 css/widgets/image.less create mode 100644 css/widgets/interactive-graph.less create mode 100644 css/widgets/matcher.less create mode 100644 css/widgets/measurer.less create mode 100644 css/widgets/orderer.less create mode 100644 css/widgets/plotter.less create mode 100644 css/widgets/radio.less create mode 100644 css/widgets/sortable.less create mode 100644 css/widgets/table.less create mode 100644 css/widgets/transformer.less diff --git a/css/editor.less b/css/editor.less new file mode 100644 index 0000000000..38fea1a7c8 --- /dev/null +++ b/css/editor.less @@ -0,0 +1,895 @@ +// Use this file only for editor styles +// (changes to the renderer will not work in production) +// + +// Variables +// Should be consistent with webapp's variables.less + +// Colors +@grayDarker: #333; +@gray: #999; +@grayExtraLight: #eee; +@grayLighter: #ddd; +@white: #fff; + +// Editor Style +@editorBorderWidth: 1px; +@editorBorder: @editorBorderWidth solid @grayLighter; +@editorBorderRadius: 3px; +@editorPadding: 10px; + +@widgetBorderWidth: 1px; +@widgetBorderColor: #ccc; +@widgetBorder: @widgetBorderWidth solid @widgetBorderColor; +@widgetBorderRadius: 3px; + +// Dimensions +@questionWidth: 480px; +@leftCellWidth: 360px; +@cellPadding: 30px; +@rightCellWidth: @questionWidth + 2 * @cellPadding; + +// Colors +@wrongRed: #f2dede; +@correctGreen: #dff0d8; +@ungradedBlue: #d9edf7; + +.border-box-sizing() { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + +} + +.size(@width: auto, @height: auto) { + height: @height; + width: @width; +} + +.position(@position: static, @top: auto, @right: auto, @bottom: auto, @left: auto) { + position: @position; + top: @top; + right: @right; + bottom: @bottom; + left: @left; +} + +.user-select (@select) { + -webkit-user-select: @select; + -khtml-user-drag: @select; + -khtml-user-select: @select; + -moz-user-select: @select; + -ms-user-select: @select; + user-select: @select; +} + +.pod-title { + background-color: @grayExtraLight; + border: 1px solid @grayLighter; + border-bottom: 0; + font-size: 1.25em; + padding: 4px 10px; + border-radius: @editorBorderRadius @editorBorderRadius 0 0; + &.closed { + border-radius: @editorBorderRadius; + } +} + +.smiley { + position: absolute; + left: 0px; + top: 4px; +} + +// +// General editor styles +// + +.perseus-single-editor { + box-sizing: border-box; + width: @leftCellWidth; +} + +.perseus-json-editor { + width: 100%; + font-family: monospace; + height: 500px; +} + +.perseus-json-editor.invalid { + background-color: #ffe6e6; +} + +.perseus-textarea-pair { + border: 1px solid @grayLighter; + font-size: 12px; + line-height: 1.6; + position: relative; +} + +.perseus-textarea-pair > .perseus-textarea-underlay { + color: transparent; + margin-bottom: 12px; + padding: @editorPadding; + white-space: pre-wrap; + word-wrap: break-word; +} + +.perseus-textarea-pair > .perseus-textarea-underlay b { + font-weight: normal; + background-color: #dfd; +} + +.perseus-textarea-pair > .perseus-textarea-underlay b.selected { + background-color: #ddf; +} + +.perseus-textarea-pair > .perseus-textarea-underlay b.error { + background-color: #fcc; +} + +.perseus-textarea-pair > textarea { + background: transparent; + border: 0; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + font: inherit; + height: 100%; + left: 0; + padding: @editorPadding; + position: absolute; + resize: none; + top: 0; + width: 100%; + + /* for Firefox, this helps. it seems that the underlay is still 1px off and + I'm not really sure why. not too noticeable if we're just setting the + background color though. */ + margin: 0; +} + +.perseus-widget-row { + margin: 7px 0; + width: 100%; + + .perseus-widget-left-col, + .perseus-widget-right-col { + display: inline-block; + width: 50%; + + .range-input { + float: right; + margin-right: 5px; + } + } +} + +.perseus-answer-editor { + .perseus-textarea-pair { + min-height: 50px; + } +} + +.perseus-answer-options { + border: @editorBorder; + padding: @editorPadding; +} + +.perseus-answer-widget { + border: @editorBorder; + border-radius: 0 0 @editorBorderRadius @editorBorderRadius; + padding: @editorPadding; +} + +.perseus-widget-editor { + border: @editorBorder; + border-radius: @editorBorderRadius; + margin-top: 10px; + + .perseus-widget-editor-title { + .pod-title; + border: 0; + color: inherit; + display: block; + text-decoration: none; + + > i { + float: left; + font-size: 14px; + margin-right: 10px; + } + } + + .perseus-widget-editor-content { + border-radius: 0 0 @editorBorderRadius @editorBorderRadius; + border-top: @editorBorder; + padding: @editorPadding; + transition: all 0s; + + &.enter {} + &.leave { + display: none; + } + } + + // Are any widgets capable of overflowing in the editor interface? + .categorizer-container { + overflow-x: scroll; + } + +} + +.perseus-editor-widgets-selectors { + background-color: @grayExtraLight; + border: 1px solid @grayLighter; + border-top: 0; + border-radius: 0 0 @editorBorderRadius @editorBorderRadius; + padding: 5px @editorPadding; +} + +.perseus-editor-widgets > div.selected > strong { + background-color: #ddf; +} + +.perseus-editor-widgets .warning { + background-color: #ffcccc; + padding: 4px; + margin: 4px; +} +// +// Misc styles +// + +.MathJax .math { + // override athena silliness + color: inherit; +} + +// +// DOM-based styles that overwrite rules set in khan-exercise.css +// + +#perseus { + margin: 20px; + + // Question area styles + #problemarea { + /* Override the min-height property used for displaying the problem. + While editing, the size of the editor itself is a better constraint on + the size of the problemarea, and having a smaller problemarea is nicer + if it means it aligns better with the editor. */ + min-height: 0; + + // Force the question width to make too-wide items visually overflow, + // to indicate that there is a problem to content creators + width: @questionWidth; + + #workarea { + margin: 0; // override ke + outline: 1px solid #ccc; + } + } + + // Answer area styles + #answer_area { + position: relative; + + #examples-show { + float: none; + left: 109px; + position: absolute; + top: -30px; + } + + #solutionarea, .answer-buttons { + border: 0; // override ke + box-sizing: border-box; + margin: 0; // override ke + width: 225px; + } + + #solutionarea { + margin-left: 0; // override ke + margin-top: 20px; + outline: 1px solid #ccc; + // Make too-wide items visually overflow, to indicate + // that there is a problem to content creators + overflow-x: visible; + } + } + + // Space out the question, answer, and hint areas + .perseus-question-container > div, .perseus-answer-container > div { + padding-bottom: 25px; + } + + // Add radio choice/hint button styles + .add-choice-container, + .add-hint-container { + margin-bottom: 20px; + text-align: left; + } +} + +// +// Table styles for Editor/Renderer pairs +// + +.perseus-editor-table { + display: table; + table-layout: fixed; +} + +.perseus-editor-row { + display: table-row; +} + +.perseus-editor-left-cell { + display: table-cell; + padding-right: 30px; + vertical-align: top; + width: @leftCellWidth; +} + +.perseus-editor-right-cell { + background-color: #f7f7f7; + .border-box-sizing(); + display: table-cell; + padding: @cellPadding; + vertical-align: top; + width: @rightCellWidth; +} + +// +// Hint Editor +// + + +.perseus-hint-editor { + padding-bottom: 20px; + + .perseus-single-editor { + margin-bottom: 5px; + } + + .reorder-hints a { + font-size: 16px; + + &:hover, &:active { + color: #000; + text-decoration: none; + } + + &.hidden { + visibility: hidden; + } + } + + .remove-hint { + padding: 0 10px; + float: right; + } +} + +// Only apply borders to hints if they immediately follow a hint-editor +.perseus-hint-editor + div .perseus-hint-renderer { + div.paragraph { + margin: 0px 0px 22px 0px; + } + outline: 1px solid #ccc; + + // Force the hint width to make too-wide items visually overflow, + // to indicate that there is a problem to content creators + width: @questionWidth; +} + +// +// Button Group +// + +.perseus-button-group { + display: inline-block; + + & > button { + background-color: white; + border: 1px solid #ccc; + border-bottom: 1px solid #ccc; + border-left: 0; + cursor: pointer; + margin: 0; + padding: 5px 10px; + position: relative; // for hover + + &.selected { + background-color: #ddd; + } + + &:first-child { + border-left: 1px solid #ccc; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + } + + &:last-child { + border-right: 1px solid #ccc; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + } + + &:hover, &:focus { + outline: 2px solid #999; + outline-offset: -1px; + z-index: 2; + } + } +} + +// +// More Options +// +.more-options-container { + display: block; + padding-bottom: 24px; + position: relative; + + .more-options-title { + border-radius: 0 0 @editorBorderRadius @editorBorderRadius; + color: @gray; + height: 20px; + font-size: 14px; + padding: 5px 0; + width: @leftCellWidth - 2 * @editorBorderWidth; + + position: absolute; + left: -1 * @editorPadding; + right: 0; + bottom: -1 * @editorPadding; + + text-align: center; + + &:hover { + background-color: @grayLighter; + cursor: pointer; + } + } +} + + +// +// Dropdown editor +// +.perseus-widget-dropdown .remove-choice { + margin-bottom:10px; +} +// +// Input Number / Text Input +// +.perseus-input-number-editor { + font-size: 14px; + + .ui-title, .msg-title { + display: inline-block; + text-align: center; + } + + .ui-title { + width: 100px; + } + + .msg-title { + margin-left: 5px; + width: 230px; + } + + .options-container { + padding-left: 30px; + } + + .input-answer-editor-value, + .input-answer-editor-message { + display: inline-block; + } + + .input-answer-editor-value-container { + border: @widgetBorder; + border-radius: @widgetBorderRadius; + float: left; + .size(100px, 53px); + overflow: hidden; + position: relative; + + .numeric-input-value { + border: 0; + font-size: 13px; + outline-offset: -3px; + width: 100%; + } + + &.with-max-error { + .numeric-input-value { + width: 60%; + } + } + + .max-error-container { + display: inline-block; + width: 40%; + .max-error-plusmn { + cursor: default; + display: inline-block; + width: 20%; + } + .number-input { + border: 0; + font-size: 13px; + width: 80%; + } + } + } + + .options-toggle, + .answer-status { + height: 26px; + line-height: 26px; + outline-offset: -3px; + vertical-align: middle; + } + + .value-divider { + border-top: @widgetBorder; + } + + .options-toggle { + background-color: #eee; + border-left: @widgetBorder; + .border-box-sizing(); + color: #444; + cursor: pointer; + display: inline-block; + text-align: center; + text-decoration: none; + width: 25%; + &:hover { + background-color: #ccc; + } + } + + .is-strict-indicator { + background-color: @ungradedBlue; + border-bottom: @widgetBorder; + border-right: @widgetBorder; + cursor: default; + font-size: 16px; + line-height: 12px; + .size(12px, 12px); + text-align: center; + .position(absolute, 0, auto, auto, 0); + .user-select(none); + } + + .simplify-indicator { + border-top: @widgetBorder; + border-right: @widgetBorder; + cursor: default; + font-size: 10px; + line-height: 13px; + .size(12px, 13px); + text-align: center; + .position(absolute, 12px, auto, auto, 0); + .user-select(none); + + &.optional { + background-color: @correctGreen; + } + &.enforced { + background-color: @wrongRed; + } + } + + .answer-status { + color: inherit; + display: inline-block; + text-align: center; + text-decoration: none; + width: 75%; + .user-select(none); + + &.wrong { + background-color: @wrongRed; + } + + &.correct { + background-color: @correctGreen; + } + + &.ungraded { + background-color: @ungradedBlue; + } + } + + .input-answer-editor-message { + margin-left: 5px; + + .perseus-single-editor{ + font-family: 'Lucida Grande'; + width: 230px; + + .perseus-textarea-pair > textarea, + .perseus-textarea-underlay { + padding: 5px; + } + + .perseus-textarea-pair { + border-color: @widgetBorderColor; + border-radius: @editorBorderRadius; + min-height: 53px; + } + + .perseus-textarea-underlay { + margin-bottom: 0; //override + } + } + } +} + +// +// Radio editor / renderer +// + +.perseus-widget-radio { + + .choice-editor { + .perseus-single-editor { + margin-bottom: 0; + } + &.correct textarea { + background: #aaffaa; + } + &.incorrect textarea { + background: #ffcccc; + } + } + + textarea { + // http://stackoverflow.com/questions/2610497/change-an-inputs-html5-placeholder-color-with-css + &::-webkit-input-placeholder { + color: #777; + } + &:-moz-placeholder { + color: #777; + opacity: 1; + } + &::-moz-placeholder { + color: #777; + opacity: 1; + } + &:-ms-input-placeholder { + color: #777; + } + } + + .clue-editor { + .perseus-textarea-pair { + border-top: 0; + } + } + + .choice-clue-editors, + .choice-editor, + .clue-editor { + display: inline-block; + } + + .delete-choice { + margin-left: 5px; + padding: 5px; + } + + .perseus-single-editor { + border: 0; + display: inline-block; + margin: 0 0 5px; + vertical-align: top; + width: 280px; + + p {margin: 0;} + } +} + +.perseus-widget-radio .perseus-textarea-pair { + & > textarea, > .perseus-textarea-underlay { + padding: 5px; + } +} + +.perseus-widget-editor-content { + .perseus-widget-radio { + .checkbox, .delete-choice { + position: relative; + top: -10px; + } + } +} + +#solutionarea .perseus-widget-radio li { + padding: 7px 0; +} + +// +// Table of values editor +// + +.framework-perseus table.perseus-widget-table-of-values { + th { + .perseus-single-editor { + width: 80px; + margin-bottom: 6px; + } + .perseus-textarea-pair, + .perseus-single-editor { + height: 50px; + } + } +} + +// +// Categorization Editor +// + +.categorization-container.categorization-container-editor { + @categoryWidth: 160px; + width: 350px; + margin-bottom: 160px; + + .card input { + margin: 7px 3px 7px 13px; + font-size: 12px; + display: block; + width: 81%; + } + + + .category { + float: left; + padding: 5px; + width: @categoryWidth; + } + .categories { + width: (@categoryWidth + 16px); + } + + .perseus-textarea-underlay { + margin-bottom: 0; + } + + .drag-bar { + float: left; + font-size: 10px; + padding: 2px 0; + height: 70%; + margin-top: 3px; + } + .header { + margin-bottom: 8px; + input { + display: block; + margin-right: 24px; + width: 76%; + } + .remove { + position: relative; + top: -14px; + left: 12px; + float: right; + width: 20px; + height: 20px; + padding: 2px; + color: #666; + &:hover { + color: @grayDarker; + } + cursor: pointer; + } + } + .delete-item-area { + position: absolute; + width: 150px; + height: 60px; + padding-top: 40px; + bottom: -150px; + left: 10px; + border: dashed 2px #888; + color: #888; + &.target { + border-color: black; + color: @grayDarker; + } + text-align: center; + font-size: 20px; + } + .card { + width: (@categoryWidth - 30px); + padding: 0; + &.dragging .drag-bar { + margin-left: 2px; + } + } +} + +.categorization-editor-area { + height: 30px; + + .add-item { + float: left; + margin-left: 17px; + } + + .add-category { + margin-left: 173px; + } +} + +// +// Graph Editor +// + +.perseus-widget-interactive-graph { + display: block; +} + +// +// Plot Editor +// + +.perseus-widget-plotter-editor { + .plotter-categories, .pic-url { + width: 70%; + } +} + +// +// Text List Editors (Orderer, Matcher, Sorter) +// +.perseus-text-list-editor { + input[type=text] { + padding: 3px; + margin-right: 5px; + min-width: 20px; + max-width: 340px; + } + + &.layout-horizontal input[type=text] { + float: left; + } +} + +.perseus-matcher-editor { + .perseus-text-list-editor { + float: left; + max-width: 50%; + + input[type=text] { + max-width: 90%; + } + } + + input[type=text] { + width: 46%; + } + + input[type=text] + input[type=text] { + margin-left: 2%; + } +} + +// Info-tip lives in react-components but these styles are perseus-specific. +.info-tip-content-container p { + font-size: 12px; + line-height: 1.4; + margin: 0; +} + +.info-tip-content-container p + p { + margin-top: 22px; +} diff --git a/css/editor.less.css b/css/editor.less.css new file mode 100644 index 0000000000..d541f8b161 --- /dev/null +++ b/css/editor.less.css @@ -0,0 +1,660 @@ +.pod-title { + background-color: #eeeeee; + border: 1px solid #dddddd; + border-bottom: 0; + font-size: 1.25em; + padding: 4px 10px; + border-radius: 3px 3px 0 0; +} +.pod-title.closed { + border-radius: 3px; +} +.smiley { + position: absolute; + left: 0px; + top: 4px; +} +.perseus-single-editor { + box-sizing: border-box; + width: 360px; +} +.perseus-json-editor { + width: 100%; + font-family: monospace; + height: 500px; +} +.perseus-json-editor.invalid { + background-color: #ffe6e6; +} +.perseus-textarea-pair { + border: 1px solid #dddddd; + font-size: 12px; + line-height: 1.6; + position: relative; +} +.perseus-textarea-pair > .perseus-textarea-underlay { + color: transparent; + margin-bottom: 12px; + padding: 10px; + white-space: pre-wrap; + word-wrap: break-word; +} +.perseus-textarea-pair > .perseus-textarea-underlay b { + font-weight: normal; + background-color: #dfd; +} +.perseus-textarea-pair > .perseus-textarea-underlay b.selected { + background-color: #ddf; +} +.perseus-textarea-pair > .perseus-textarea-underlay b.error { + background-color: #fcc; +} +.perseus-textarea-pair > textarea { + background: transparent; + border: 0; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + font: inherit; + height: 100%; + left: 0; + padding: 10px; + position: absolute; + resize: none; + top: 0; + width: 100%; + /* for Firefox, this helps. it seems that the underlay is still 1px off and + I'm not really sure why. not too noticeable if we're just setting the + background color though. */ + margin: 0; +} +.perseus-widget-row { + margin: 7px 0; + width: 100%; +} +.perseus-widget-row .perseus-widget-left-col, +.perseus-widget-row .perseus-widget-right-col { + display: inline-block; + width: 50%; +} +.perseus-widget-row .perseus-widget-left-col .range-input, +.perseus-widget-row .perseus-widget-right-col .range-input { + float: right; + margin-right: 5px; +} +.perseus-answer-editor .perseus-textarea-pair { + min-height: 50px; +} +.perseus-answer-options { + border: 1px solid #dddddd; + padding: 10px; +} +.perseus-answer-widget { + border: 1px solid #dddddd; + border-radius: 0 0 3px 3px; + padding: 10px; +} +.perseus-widget-editor { + border: 1px solid #dddddd; + border-radius: 3px; + margin-top: 10px; +} +.perseus-widget-editor .perseus-widget-editor-title { + background-color: #eeeeee; + border: 1px solid #dddddd; + border-bottom: 0; + font-size: 1.25em; + padding: 4px 10px; + border-radius: 3px 3px 0 0; + border: 0; + color: inherit; + display: block; + text-decoration: none; +} +.perseus-widget-editor .perseus-widget-editor-title.closed { + border-radius: 3px; +} +.perseus-widget-editor .perseus-widget-editor-title > i { + float: left; + font-size: 14px; + margin-right: 10px; +} +.perseus-widget-editor .perseus-widget-editor-content { + border-radius: 0 0 3px 3px; + border-top: 1px solid #dddddd; + padding: 10px; + transition: all 0s; +} +.perseus-widget-editor .perseus-widget-editor-content.leave { + display: none; +} +.perseus-widget-editor .categorizer-container { + overflow-x: scroll; +} +.perseus-editor-widgets-selectors { + background-color: #eeeeee; + border: 1px solid #dddddd; + border-top: 0; + border-radius: 0 0 3px 3px; + padding: 5px 10px; +} +.perseus-editor-widgets > div.selected > strong { + background-color: #ddf; +} +.perseus-editor-widgets .warning { + background-color: #ffcccc; + padding: 4px; + margin: 4px; +} +.MathJax .math { + color: inherit; +} +#perseus { + margin: 20px; +} +#perseus #problemarea { + /* Override the min-height property used for displaying the problem. + While editing, the size of the editor itself is a better constraint on + the size of the problemarea, and having a smaller problemarea is nicer + if it means it aligns better with the editor. */ + min-height: 0; + width: 480px; +} +#perseus #problemarea #workarea { + margin: 0; + outline: 1px solid #ccc; +} +#perseus #answer_area { + position: relative; +} +#perseus #answer_area #examples-show { + float: none; + left: 109px; + position: absolute; + top: -30px; +} +#perseus #answer_area #solutionarea, +#perseus #answer_area .answer-buttons { + border: 0; + box-sizing: border-box; + margin: 0; + width: 225px; +} +#perseus #answer_area #solutionarea { + margin-left: 0; + margin-top: 20px; + outline: 1px solid #ccc; + overflow-x: visible; +} +#perseus .perseus-question-container > div, +#perseus .perseus-answer-container > div { + padding-bottom: 25px; +} +#perseus .add-choice-container, +#perseus .add-hint-container { + margin-bottom: 20px; + text-align: left; +} +.perseus-editor-table { + display: table; + table-layout: fixed; +} +.perseus-editor-row { + display: table-row; +} +.perseus-editor-left-cell { + display: table-cell; + padding-right: 30px; + vertical-align: top; + width: 360px; +} +.perseus-editor-right-cell { + background-color: #f7f7f7; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: table-cell; + padding: 30px; + vertical-align: top; + width: 540px; +} +.perseus-hint-editor { + padding-bottom: 20px; +} +.perseus-hint-editor .perseus-single-editor { + margin-bottom: 5px; +} +.perseus-hint-editor .reorder-hints a { + font-size: 16px; +} +.perseus-hint-editor .reorder-hints a:hover, +.perseus-hint-editor .reorder-hints a:active { + color: #000; + text-decoration: none; +} +.perseus-hint-editor .reorder-hints a.hidden { + visibility: hidden; +} +.perseus-hint-editor .remove-hint { + padding: 0 10px; + float: right; +} +.perseus-hint-editor + div .perseus-hint-renderer { + outline: 1px solid #ccc; + width: 480px; +} +.perseus-hint-editor + div .perseus-hint-renderer div.paragraph { + margin: 0px 0px 22px 0px; +} +.perseus-button-group { + display: inline-block; +} +.perseus-button-group > button { + background-color: white; + border: 1px solid #ccc; + border-bottom: 1px solid #ccc; + border-left: 0; + cursor: pointer; + margin: 0; + padding: 5px 10px; + position: relative; +} +.perseus-button-group > button.selected { + background-color: #ddd; +} +.perseus-button-group > button:first-child { + border-left: 1px solid #ccc; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.perseus-button-group > button:last-child { + border-right: 1px solid #ccc; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.perseus-button-group > button:hover, +.perseus-button-group > button:focus { + outline: 2px solid #999; + outline-offset: -1px; + z-index: 2; +} +.more-options-container { + display: block; + padding-bottom: 24px; + position: relative; +} +.more-options-container .more-options-title { + border-radius: 0 0 3px 3px; + color: #999999; + height: 20px; + font-size: 14px; + padding: 5px 0; + width: 358px; + position: absolute; + left: -10px; + right: 0; + bottom: -10px; + text-align: center; +} +.more-options-container .more-options-title:hover { + background-color: #dddddd; + cursor: pointer; +} +.perseus-widget-dropdown .remove-choice { + margin-bottom: 10px; +} +.perseus-input-number-editor { + font-size: 14px; +} +.perseus-input-number-editor .ui-title, +.perseus-input-number-editor .msg-title { + display: inline-block; + text-align: center; +} +.perseus-input-number-editor .ui-title { + width: 100px; +} +.perseus-input-number-editor .msg-title { + margin-left: 5px; + width: 230px; +} +.perseus-input-number-editor .options-container { + padding-left: 30px; +} +.perseus-input-number-editor .input-answer-editor-value, +.perseus-input-number-editor .input-answer-editor-message { + display: inline-block; +} +.perseus-input-number-editor .input-answer-editor-value-container { + border: 1px solid #cccccc; + border-radius: 3px; + float: left; + height: 53px; + width: 100px; + overflow: hidden; + position: relative; +} +.perseus-input-number-editor .input-answer-editor-value-container .numeric-input-value { + border: 0; + font-size: 13px; + outline-offset: -3px; + width: 100%; +} +.perseus-input-number-editor .input-answer-editor-value-container.with-max-error .numeric-input-value { + width: 60%; +} +.perseus-input-number-editor .input-answer-editor-value-container .max-error-container { + display: inline-block; + width: 40%; +} +.perseus-input-number-editor .input-answer-editor-value-container .max-error-container .max-error-plusmn { + cursor: default; + display: inline-block; + width: 20%; +} +.perseus-input-number-editor .input-answer-editor-value-container .max-error-container .number-input { + border: 0; + font-size: 13px; + width: 80%; +} +.perseus-input-number-editor .options-toggle, +.perseus-input-number-editor .answer-status { + height: 26px; + line-height: 26px; + outline-offset: -3px; + vertical-align: middle; +} +.perseus-input-number-editor .value-divider { + border-top: 1px solid #cccccc; +} +.perseus-input-number-editor .options-toggle { + background-color: #eee; + border-left: 1px solid #cccccc; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #444; + cursor: pointer; + display: inline-block; + text-align: center; + text-decoration: none; + width: 25%; +} +.perseus-input-number-editor .options-toggle:hover { + background-color: #ccc; +} +.perseus-input-number-editor .is-strict-indicator { + background-color: #d9edf7; + border-bottom: 1px solid #cccccc; + border-right: 1px solid #cccccc; + cursor: default; + font-size: 16px; + line-height: 12px; + height: 12px; + width: 12px; + text-align: center; + position: absolute; + top: 0; + right: auto; + bottom: auto; + left: 0; + -webkit-user-select: none; + -khtml-user-drag: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.perseus-input-number-editor .simplify-indicator { + border-top: 1px solid #cccccc; + border-right: 1px solid #cccccc; + cursor: default; + font-size: 10px; + line-height: 13px; + height: 13px; + width: 12px; + text-align: center; + position: absolute; + top: 12px; + right: auto; + bottom: auto; + left: 0; + -webkit-user-select: none; + -khtml-user-drag: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.perseus-input-number-editor .simplify-indicator.optional { + background-color: #dff0d8; +} +.perseus-input-number-editor .simplify-indicator.enforced { + background-color: #f2dede; +} +.perseus-input-number-editor .answer-status { + color: inherit; + display: inline-block; + text-align: center; + text-decoration: none; + width: 75%; + -webkit-user-select: none; + -khtml-user-drag: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.perseus-input-number-editor .answer-status.wrong { + background-color: #f2dede; +} +.perseus-input-number-editor .answer-status.correct { + background-color: #dff0d8; +} +.perseus-input-number-editor .answer-status.ungraded { + background-color: #d9edf7; +} +.perseus-input-number-editor .input-answer-editor-message { + margin-left: 5px; +} +.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor { + font-family: 'Lucida Grande'; + width: 230px; +} +.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor .perseus-textarea-pair > textarea, +.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor .perseus-textarea-underlay { + padding: 5px; +} +.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor .perseus-textarea-pair { + border-color: #cccccc; + border-radius: 3px; + min-height: 53px; +} +.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor .perseus-textarea-underlay { + margin-bottom: 0; +} +.perseus-widget-radio .choice-editor .perseus-single-editor { + margin-bottom: 0; +} +.perseus-widget-radio .choice-editor.correct textarea { + background: #aaffaa; +} +.perseus-widget-radio .choice-editor.incorrect textarea { + background: #ffcccc; +} +.perseus-widget-radio textarea::-webkit-input-placeholder { + color: #777; +} +.perseus-widget-radio textarea:-moz-placeholder { + color: #777; + opacity: 1; +} +.perseus-widget-radio textarea::-moz-placeholder { + color: #777; + opacity: 1; +} +.perseus-widget-radio textarea:-ms-input-placeholder { + color: #777; +} +.perseus-widget-radio .clue-editor .perseus-textarea-pair { + border-top: 0; +} +.perseus-widget-radio .choice-clue-editors, +.perseus-widget-radio .choice-editor, +.perseus-widget-radio .clue-editor { + display: inline-block; +} +.perseus-widget-radio .delete-choice { + margin-left: 5px; + padding: 5px; +} +.perseus-widget-radio .perseus-single-editor { + border: 0; + display: inline-block; + margin: 0 0 5px; + vertical-align: top; + width: 280px; +} +.perseus-widget-radio .perseus-single-editor p { + margin: 0; +} +.perseus-widget-radio .perseus-textarea-pair > textarea, +.perseus-widget-radio .perseus-textarea-pair > .perseus-textarea-underlay { + padding: 5px; +} +.perseus-widget-editor-content .perseus-widget-radio .checkbox, +.perseus-widget-editor-content .perseus-widget-radio .delete-choice { + position: relative; + top: -10px; +} +#solutionarea .perseus-widget-radio li { + padding: 7px 0; +} +.framework-perseus table.perseus-widget-table-of-values th .perseus-single-editor { + width: 80px; + margin-bottom: 6px; +} +.framework-perseus table.perseus-widget-table-of-values th .perseus-textarea-pair, +.framework-perseus table.perseus-widget-table-of-values th .perseus-single-editor { + height: 50px; +} +.categorization-container.categorization-container-editor { + width: 350px; + margin-bottom: 160px; +} +.categorization-container.categorization-container-editor .card input { + margin: 7px 3px 7px 13px; + font-size: 12px; + display: block; + width: 81%; +} +.categorization-container.categorization-container-editor .category { + float: left; + padding: 5px; + width: 160px; +} +.categorization-container.categorization-container-editor .categories { + width: 176px; +} +.categorization-container.categorization-container-editor .perseus-textarea-underlay { + margin-bottom: 0; +} +.categorization-container.categorization-container-editor .drag-bar { + float: left; + font-size: 10px; + padding: 2px 0; + height: 70%; + margin-top: 3px; +} +.categorization-container.categorization-container-editor .header { + margin-bottom: 8px; +} +.categorization-container.categorization-container-editor .header input { + display: block; + margin-right: 24px; + width: 76%; +} +.categorization-container.categorization-container-editor .header .remove { + position: relative; + top: -14px; + left: 12px; + float: right; + width: 20px; + height: 20px; + padding: 2px; + color: #666; + cursor: pointer; +} +.categorization-container.categorization-container-editor .header .remove:hover { + color: #333333; +} +.categorization-container.categorization-container-editor .delete-item-area { + position: absolute; + width: 150px; + height: 60px; + padding-top: 40px; + bottom: -150px; + left: 10px; + border: dashed 2px #888; + color: #888; + text-align: center; + font-size: 20px; +} +.categorization-container.categorization-container-editor .delete-item-area.target { + border-color: black; + color: #333333; +} +.categorization-container.categorization-container-editor .card { + width: 130px; + padding: 0; +} +.categorization-container.categorization-container-editor .card.dragging .drag-bar { + margin-left: 2px; +} +.categorization-editor-area { + height: 30px; +} +.categorization-editor-area .add-item { + float: left; + margin-left: 17px; +} +.categorization-editor-area .add-category { + margin-left: 173px; +} +.perseus-widget-interactive-graph { + display: block; +} +.perseus-widget-plotter-editor .plotter-categories, +.perseus-widget-plotter-editor .pic-url { + width: 70%; +} +.perseus-text-list-editor input[type=text] { + padding: 3px; + margin-right: 5px; + min-width: 20px; + max-width: 340px; +} +.perseus-text-list-editor.layout-horizontal input[type=text] { + float: left; +} +.perseus-matcher-editor .perseus-text-list-editor { + float: left; + max-width: 50%; +} +.perseus-matcher-editor .perseus-text-list-editor input[type=text] { + max-width: 90%; +} +.perseus-matcher-editor input[type=text] { + width: 46%; +} +.perseus-matcher-editor input[type=text] + input[type=text] { + margin-left: 2%; +} +.info-tip-content-container p { + font-size: 12px; + line-height: 1.4; + margin: 0; +} +.info-tip-content-container p + p { + margin-top: 22px; +} diff --git a/css/lib/mathquill/font/Symbola.eot b/css/lib/mathquill/font/Symbola.eot new file mode 100755 index 0000000000000000000000000000000000000000..0d10a95b88a50ef24c7ea66b1ba6bf2af17a3cf5 GIT binary patch literal 890190 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ǃMV?li31U9)mV***n(s)}YrAuPD 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 z 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

)TOJ!yEwBL8Uco035(&Ce|X5o|f zEU&HIhbTv>Js7l?IuNz5wsv`!!RHfqP?8A?s68d_Qnx&@Szjk|&qrGytHVG4Ydku? zYCRGSGn{v8lS@jHwQjt9(VJ1Pzh%EsqDquQjuOK#{QLS<=h66oA!*%XufIFrEvnOZ zz5K-&<;o++t7}tiwv^iH<42U`)aNRRaeqr{dh|^J>{;xI&G$6eD!n84K=28eKbgQ% z$p;f@6!k$Ruy=G2YDQyFE1HO=!@Bh%w3MgXaq}x6sf3;Z%>#2i5b8(^!o*4JFLlAJ zAfc1pf(enC;{T*)z+nw^DX~N9{*O~_vMlNiWCKwRhluqb=^`NOpviy>(oewb^9FYg zPXRywFKf5VJu7n4ULD zasoret4_#l&C9MZJ840XfVU9xdEkU(CKd5o8_>dn%_v;L37mRK310X@+3<2iqJbuW zR|k_OZ3NhWFsr_N1{xS%YJ_=uR=sCZxlJz6$- ztT*3f7b#qBbxmh9D=8@}+F7G^y9{<$zIW_o89n;KANjswg>%%X=Els`2J0QJA?Vn^ z+ zM$W$1rw=~Yrw^Dy+wpgHJ9E;SrnDnD6F~#CbW~){M}tRl8m}jf8Cagxry)O7U!Rw@ zDnDnD(>*>tq?c(q6c#Oxh+O>u{J+EELvO}toCK+&8W=J z6c#(}sm+DCd3CPh0omCr0~xOJ%v(|m-Jz=NA$hTf95rrtjpMb<^`XQ>-{edsP6;h= zOJvSrX>7CEG%ML`PM&4Lm(;ciCZo|b!KM$`rS=qOidYmpmu=%1Q>xA__a@4%3WZfZ z6n1Gd?-|qv_*bjgL>B(ZUUry!gd0JwQ~`Asz{-e|M1S#6aT5WGvm=GwrqrnP5tVQw zR<6JbbaMHQW6wT&Y{znR0)K*k#y@YJHESyh#mcD{RxCjM(6|pj#M|&w3#cVXf`46y zpC3IMcB(_+f)@OVa0Bx$_#`DYF`OG}b4M9ITszbnhDf92Biw*9P)iy9Vh!F|2Ju$Y z(L4Ag%2~lpT*Bs5!X-m<1yg>sSeels$#TYDQ-mf z--<=Js;c<@;yU41KaMt=&6;B0J^f2pkB(&JbUnM2I;?e$xu6*H!w+M|zz(gPF=KxJ zeaslxb#)kjFedBmrFd@^G+D1UQ}b=c_YUtp_)1%4uEA;OT@qD&4T+!)oO6Ec?l)tfy&1cE{(Ne}o0RQMYQlUJ zx%!%<0law(CiaQUVbGuw+YL_d<)U7DRF8;hyd5+RtTTQF&CgCeQTO(Vx)X@18;Jjf z&*R(CEX0nwk$v$rK7t3K{V3=3^X!du?xx>1!T&G6Q0aJe><7HUC%q9pK}|!CwM${y zPADkBOSuIvChvg(E?J)`|oj*)UDPWP=nm%rMaR3Z9Y&^a4gh z!PExks65jS6Bf)O;Sh)g9xALL`~*lKS_KmcQ9Tn5rO`v&RA2`Q&yR@puA)1;$4e;{ zV5Z6}5+e8VJ3{^6nT6=A;S-C)U@2BwbK??N12eIZ*E5$&m;G@MW*VLpW^hNUN}Mx>U39EyE|h~9C_g<^v{utki8KFenzJv78Jy^U;zXXFK2~H(R3Tb@>SjKzoMC%LlCvXTvXQb>t zhq)g%pT})R;2c`n#sOys?F`#%_(?bH>2*9`noT+K@`l8`IHKmb1Kqa+G>6med}aD?3vc%wqFL}OFbMSYB)-uBFz zSxfR#B5s>)!(eZ=Y3P!$Sz>lis+#-vra4%&?PXMj>i$NFZorow5g`p4v3{Mpq}cdz zLw?Z$Z<^5^{4QE!Zm#lJC5FiOzviK?&99=e=nJv)qn~{iEg7qh;$^YVZzXUuf}xi_ zVka@*gBDE6`@#nr-m?=1MHB)zaS#KxkqSLBQb;Gwgt*tsVxK4&4_+Mm^#FQ<+I-^q;40^D=OX~#z&>V-5-$0^Q*#i-GoEe1m7Fdhs*HQvkgY*r=C;jIR{OOpw zmghb*q#()4$GgT>-B1Pp)YPYCybDX$iAvSdFJ|)XP*C%ujkpH<%9YJ??8R<3^!g=ACOHR zmOsnq`w#W?JnPN}wng>$ZtgMWC%}X`yyp2SOW@!Bta$ys0y^*K~gfj4ZI6L9G@6Cem(#o2;l;O$Lpar@pl7> zmh88H$s!I8%rr!+=!A^XAZX8_4iMABL3kHZ0gz45^=d(XNX+$!Qjritpp^uL$p$7c zeGGtr5eJ7|V=YpsvQdgZZ)s|xtdkLk#~Q3T2KNxL=;70}&S^3^b@b_njl=ypR)4r! z(J4zzU7F|rFO%bx>RJ8zD=$9oM8+h2gQnD|N)yh&AD%dYKSbUWCy*C+BxlRrxtua9 z#hIm2Cs(aD3f1Z9YN0U+{?Hz}OysQB-Ef1h-YF`hV~?uGtF#TMzNxsliG2NLN4DJH zR;#j{DOpO+KjXc^tFO`Rb%pL?4Ia{6LU(yPl9Ddhv%}mQf&zIqEQ))*QSuF>!yi34 zr%@rDiSLUyiAd}oV#u)?!ehnE2AR|sZxx?Zwn1^D-kz8Zc^-`&e>>I4o58~kPm+V4fX*D-Fh5--&gNB}As7>b`sJweNI=)mM|*3j@*ZR1~t#!T*F$8@;WY!t&G>C@uEm z7vK2#=QmKvRddpR2Q#bz1XUmb1ZC)d4KoicP`6S7`hN*@*SVkHz%QbbH-08<-FqHW z0#6P!`tnSAW!}1cMp~GtU?S0LTKF&j>sF2Z>zY=Koglyvpa32SKXK_SD_}kcNWhvM z!5TPEA3>V~Yzd)m;0>HC4+04W5seT%AaFs!Wiw({&}FFEJ8|Ev#hr_1?VGf(#?S>f z;3R%y;$FBB+xEfx_uTXT2X|9(G^V%D@`~wtz|9yPq1AuMu zrDM!$<^r@6XlF?~*==!q1XwBqQNu}eNI+X7cK#Wd#K283M5SLqM{zc6js5kAImjmb z{42N+d+f&x32e~%vEUN2pbdCB{w&*%!DwY~EG?6{fP=9qIC8Jfm_cQuCUh2!3{V*+ z-Mtrb&|0btb+9hHFm?&gcd~q&T?LmLsCQi60dt(V!q@?D1c^)m{F)%@>6V6~%xde$ zm+)V35FLlzvXXA#z>8Tu4_s_A-izu09()QY?L^PXW8#+i8Yy z5r#2k#An;_S!8?z|8(!NzgP;Y~6uOve`&XP#mA1U3Tg2N6(!j$q8=N;R(zfHV15zZSnrQ8Yt+`-g7klGg^utyF`d* zJE5JI@M93iKn04{H%_0%Z=%TQ(@ff#!`}D3~n2hT2QhW|RH=}yNB?3b`fd;+TQ!Igio{aAV2tekCT4$S) zp&eQ9nRfhDZ1!ms!EXYrZ=h(r{!3HXXPI{dTHZ^SQwcgpg2Tk6lO5O%P=(Lyc5cF0H(oa5?-PMZ{&nSQiVe{8qf~NMqH(% zjL;d|UO63A)D#X|cp8^|*?#CyI~t9*e@fr^7tkT)PEVK6?PG_oM6b_$4}Th~Vk+7{ z{IDJSKZhm+dKtLHGJl1-#IRq>2fN7y$nJ#=K7iZy%f3vaq&gBW33M55&~cE41xIVW zxG3hYcx_=JnuU*{K7h+<1T!=1w>9%pPw7 zu%DuVj0SMxK2^G+5q0-D#laS{gu{p14s0`>9fz8=0Q82O{MT6a>eEQo_;+eWvSRQPC@iK@;%Z_~J^Mx)Yx{ zv2x`JWI0^KCKuvYV=??PZl=#1{i*AwU!i}H;Bh=x)XAJ95*fh-&dICWoDQ0$lrW1Z zC@nc^udy&bHF6yImfrg>bh@Q()+5inf`%%a!79mwWh%Ydk@Kl?7$#mPa z{IZ3U(Kx&c-gd=-2PQ8p%b&J7srr>|gZl65=-AhP(6*PWV@1e{zdUjTXi)MS% z<9H>mePs4c+qT^_d)(rvR(MerUDDjVB&xc|XrqhAG5tjs4KkVVD-nz%F!~conKyv` zIiRn|IImR|Jq*3S4 zQ`irx;A!|>@Q+rDPJlkoy#I?&w{HCi$L_yx?%W-_yV`c_K6~%|Ot^N|xow|(ycK0` zn|pZsyRig(^4_-Bx4%=<_U+bFALIV_eYI=H*&V3=j<2@g+t&6#PhYYhv*qAf5a=my z7pW!+A|PK1e*Ff3C%S5~bOYTBOGIFK0K^EyCXmhIFoOZ^+FSqj!k8KF28-GS@z3%5K_w|t=OCU4c47JB(7GatrB zyOz-(BlVR1_>ZnJ!r-UR%zpB@sYy%UxqnO2gKy%0J~AfbSNzTX2X8$Sdm3?Z*ae;J zmoRQj1Q%gyBJIozp?VTz?s5zB#FhOrcKh~2D_0)6KXyBMZUJaVmLcN;^z0vRuu-b+ zwuw)y{M+AFJ~8pO&c#~}Avyl>(3Zuqy`4}EPcK@ymCQeQOGl#oy0&2y*E9?f_jUOw z42FAKZ+)wAK*{cs&XW78I@|B7w^mGC+nN+z(lMV-NG;kh;+t>qk8{SqLofM!?2GvG zu3P9Yk#x$F__wYWp$&=dU%GS8T+7^#w{5iSIMsE-BJ+rhvd)vBnFAVj>0|Z~^Bs&0 z&}P%H0Yr?vViXl4SfF4Jb=1bjqr6G@H5{A(jOA++Q69B5_MM*kklLfC)Uj6n77kB< zcuFK0bx&=_gl>HJKx72k7=gHJ-8)6SK<|0-)2;LHf_WiJ@v|{SRw;lm!Ol7rU<08~ zdR35Y%>-(y3vzwmdH3Fv_qOIw{%B><=6eIex`>X`yIp~spIJXDP;iTR#yx#1^XgxD zxiULRVlu7mYPsw78$MdHeHZnQWBAR_cj1dwH!Yq!H{oBS$GP@ENGbi~&6s(!F0_J5 z9No5P(OvivwBT#cz4+;;Yd;%=l(E~kezXoh2EJT~&Fo_CL#98>9c1-}qY?RdVT&<* zuDaqroHHK}T!8Br;JR`uZ4uhD0PWca_v+x@!e002M}x?WzwG%=Kr?zSF1Gx;C*AmS z>0{$M??FKy!61m6Hv#sPEQeTm>tT=GUWn`RA;fU`1)O%6Pzvb6$le}(Kxc`&y3xUU z1aHktXs!)p7G7N*f?aTN3Pz+D;0eN96bu7lQ5f7~@WT&;Eg*1^hvsdcI35{5SELKV zZK8WeUVYEzT@)e<>3}S-ETSbpMD-Rypm+m`jXWeP;9jT`cGZ!o54`a}J%DfI3)=`_ z;hbzBjo5=WkoH_|NJ%V4c{)IBqjXwG0;Rx1$Vw={c9=&lFVuxAZ8QnMOLB*s=)N>Esnem3vC~moV z;w_uBK9OPFCxtEj?i>t0AQA#)$(2cxlGqEQL~l%+vvJ8BYGO#QHBn^=8jmc|rk5zx ze|_A9Cj~ZSq$yWW2}Pm8@RR=eCa0lIQ`U7`&E$&gOos8cR;P=^oVx|xgg4_~RNRj! zSdGkI*wnxo`yD2Cf&%4uX;E0Dp_Iwt^qqgho9@^?$#0;4St3IKiJE8i#a=^Vf;cwZ=38z`E*;~h(q6@{&TeZdsX+RQk}+L# z3POccOU5V(l7QO{BmvU$BbDzzly1C*>;wNb>xMR8(Qu11{MNe}4(H~yobl4k+yMtr ziP)VGrIOc->F=iQdkvpC-k9lAnqbH& z8vK)Nl|@~){Ec}EJhxw?u3%)DMdQ_F=9RkjG=(}XVfhGkMjCFj3@}E_9(7`(x@$vy z3B4%GYozNqTBpecrLzF2QyspGTgdz&Xya|w?*!|Y(=aBxz!^F$6awQHCe(|Vegw%D zRI=6r#1_~FHQWGaIuSKdIFlRNP&Ti4hTE6#(V(v7eMRxy5itcLhKs}!L2P_qz1krK0)wXUy&2`lEeolF$`CO_8EpA=*B%{c>7_g zmgeaK+y!z|1j8^Bf(r86ipW@mkqTom>}5G<13n28FLt&l($6VYNoy-d+mn(f8Amv5 zI_MgMt8v+27jcEeDJ-gKj?uG53@k`e!g6McQZ;Vn2#Iklxn4Fzg8Kp0XY0=~Uq@Xw1W$WWt+tUX~ zjD|w9QdnP^P7h5AhD{lx_bEe_!JC{D-B7)inv1+5=PZS0q+%6+R0 zDGSkZl?qRpI17To$|(HD0%?Znp$t)qKNNMlhvfdAKZ8jFGsizPX^n?4UAyH^wjuwBvY@$Tz8|w@?7qxoS?nR4dqLE7fi$P(|q+n7;Lu|7o z>dW>B`AYZ*k3*yK!en2f!}|_?L;ytXWVc7!3RO<_T_v z9iqEozx*@g9mqTuU)$lwx5EXa$4=&IvOGk5XLyNy8W~CPp-yNA;aA}Y*1y62m>>Sy z%W@PbPD5lE$`E*RAkSdz!Ql6TQ!HY@0B*bVK@X4vPOAqWQZO9#VK2}VGHCh1>EXgo zo?JL>9N_?nePcw;2a4nMEkUAe5Sj6Lsz{6fxUYU3>@hKHtVJ>-9I0{ot>QTGL9%4%#Mmwhr`v8uI+a` zv%BT5`=;!E<_>E(96MsFskgea_t;Z+gX5trZ%KjMT~Ol93gHh89*<$OwZ6u*JJr4? zoA$0-*LUq&ECTa0uzsq;^SB1E!R;p)f);?zaXIQlTfwK>BWNEu@p%ctvA>NzK&R1{ z=p0}L?AwE_G8`*~Wj?ZflXO2%hJkLfPA~9GK(C1|j2I^JHjjka3y~xwG5;w9b96uy zRrkz*fLg;1pwZ+9)1I$f4Bh_;jzXhxn5fOTxsP1w?}3#V6uSD!@48a8*(tICs-Pv6aiD6WL5%1 z?Rf{-hz<_u;4usaqW6gs%;ydN$*e_6As^V=Me2n&gJbU(^~7JBROtm60n5Se*FjRn z)51C~OkMH!i@4zgw!4DO1Q&r#wNNv7d+e^&4KpUZXO!Oo0u2Y1LOVc8k|bVkJ|dhj zu{ed6h^KbLivw5MT>;{+pe0C7&~}i#P*Ro5>n!>F0Z_Hxe$!Jbizq1}$D_(CI~_2|143dZ%f=ZtzIPA`NKG&lf&Fwj_IE)@VmHHPrv3?Vd7DxvZ;BtCi{K-O(zl zJWMk+eW<)DDp;(c^o0S6PU)l4P~MyrnDevy2n({3X-m{((hJ2BQFei>ELSWxWz=v3 zG8LRuE4C*@Yos-Kn!;*jbzg(KX_&mZI-*ZYD-&vbuDfcAT#ZN_mCAGKP+1l$aU4%6 zu_X>qGMJJqDpjE@>Vdk1T;}Mq)`RJ8-5{?>#uyqRT1`?}vEAmQkTH$r@;G&#BhxC+ ze#xC+em{Ght-?KQz)nM&u#YfkJ5XlSQE$sL3?4DKTU$GgNNqYCbuIRLrTA7$v z##Q!_;-Cpj7+JgbyDoCm64m3blvFf4GB$;j_$hCN(GcfO|$xH`Yxc~ z%BtCsOxt(%&!+B}Q*?gI!V7}ZPE9!dE8}khsH84%M`G*zNSmVr(csxff#$s>x$vyIuRqTH!YN0}~16;v9f;MFWM zt0a)DkY`a=ACsU+GkW^Ds8o|r;Rjbg>LS_=Tb0FXN0HZFs8BGuE-HuRGzDT?iXkN_ z$%$M+E3!)5iBfZd+RxdN2BlOtSX0;(*9{HP7GWY=cqVCT_V~WHS@P2pvjWqkiX=@U zqmd=jR!X8Wh-oV=Qb{C~g%T&5q-wKPZh%HbW;J7FRC*0qmaC;na-mfyQy&mH*u6A3 z=p4CWRMyk=vcb<}Hs4V`Kt4o4Ct4(Q><}%nB+@e&l|{`^Z~98CvVoGWPK8B@wwGy4 zijtA}`Xo*CU7^(@N$rZsEaqexwGCz4jJ`RcB7JeR3+yv!3+)1h6%91|Hs(w473>3P zd?=Z#f!F5Ak_u=7e*q*HrfD)ETacYhuxi+24}k}X*~t~{79mh5tO09xxJ?ZELSd%{ zd?gaKUw_lvS!^+`r?iyTm|LocKR~PTX--w*=ftL$0zB|G5#<&Fy4GYH3 z@-#E_HQb>j3bLoYZq8*?gu{???Q~(v%Gdf0$ND} zu>28J32g@Ydh(V$zXJ4>7iEBegB%0v7I8r)3hWA*zTn8KTET%dFTH5NIyRsuBEOp# z-Qh|NS561=a>UW5KB^}huYiGq_GO8@0iKxQiU|F@fhIWVft`Is>W8d|n81TZ0LMP30iL+`@^Y%pMt%SmxFP=F8A3j9$| z=8pi`3`R5{J=zIaJO(`qQHDVI#0?nl)eknl0)~K$MkaJJ%h(tP*|`?g6Zcxc5dxer zZIUS-HlHx(_PsTyAT3E#LyP66u<1-EZkUEI^fy={CKX5Z%VunS7QOw%U5}xi&!UvV zoNSBF-3B&jg*gGU@7w8tKCw@Ws;djDi{P)YkZKq=964?oSn};%b7P-HCKRQN^GsUg z5}`9QW^}bdZgUEC|NNXHd@8G88r3H^5(?S;$%vvZ*3C^ZXHnd=VBYlpfqt)sGUshM zLw#-i0pHt-e`(G(r;0YP51|J?9FdrT`;EF`q`@~caRMHmHXZlNoVJr{Q7a}k6jyC^3;B3#~3<29PYQd7vLQnQ)hhWajjA)870 zrv~sp8cYte)?7Vw-s0>sDRLZXTKBwA5y# z8r+m*wZr7C-i`+R-h^uL(@mTDhVt%;OkGwH%*XvBZPZf*b#(=Us|zbD3u`bvY9piG zv1&tA!j8k)%cm8TrjZW(u%#Yobnj1v2tZA_mNh!HG*+G#~$O;EUqtV!t z(dpqqU*!y~>pQw*r?dj!Y*DT%&oZctsU=iFlP42If0a3lHlmbykz(}i+(^;8S%s1R zkGS^$i0bItfOqcQyBC(aEbP)@fn}xlT@dL_z>0#3D2jj*3-%HV)~K<@8e23)W7OCa zqef#*f*KQ(7}JdD&Ghyv>>dAS?k-qj@+RN+{r@lS?yYm@&YU@O&Y5$b6Jh;6CO$ZE zl8;YErQkF^xi>d<X@^!sAAp@ z_yd)Lx4{etN(A$QaLKF`P|)RgMwtjPXdzBAxhzB0L}VjIActXtWq+GZ!#+ybZjx=t zg6KUlnA!#&`(<_s+i1fWMpO$PZwL|XraXBZU;yAb7?fD;HHPl_sL)N%TyLmK_+pnsU|!Q#lNA4 zp4KC~<6SCCSV*U zv6=8MG;f2K-e3_7DHZ|Kp=g9^X%I0TvhVxo+^zG=_{(M1KHR&aWZ>R~&dq&r*st|F zf901REl+v;wZiReNp0?=6sUJP&;M!&3J#`Mqdh(0l;VK;-qy7TB5r#G&{(D^npmB| zQU7l>ZEXrmx63l5C#8@S5kZA^g*qJbQ;@7<+Z60@Bxe1;QCwqh zj$iVFwp#}Ec*>~lqoxd}aUK6JRA1>3^w)yr%cY-&nchgrPfpHHIhd1^k!s8i3CTA0 zGYwN&;23r+@F9JXL$vmQtW|^DCY0OwBmg5H*Ujx7N zYP&{6^dbZlxGm$T?OU`zmLT0CR81^{utz0_gDpewNXAMnTgYKbsO+%IR7+F_c(!sG zvW&v2%fbhlSY=a*8Rs-JF%yqrj9t{l$>j<15u8EcSQ<%zbb`7wdoYSLsr2^3LBeSKirU}XG1Mu)w@dHpfYfecNyjjKTApi0u?H`@h4`ihtAc4$=VXI>WKlnt z%6`5b>31dG8GU!80y1q^WTy;er?fBC~=o#rnm)6`V!mf;)scbchS)_N3&HTr=6>*D*zmPxhnp!?+Gyh;DDb zFZ{9twPmNd&U|(Xms-XPg>jsDD%UH^F_Y-B;#{ISx>@%-He3<2u5wShbSe__I!beN zzV0DC_o{cyYp4x(iESK1A70Z-)VU^H@mD8)AZYyE1b$@o&PsK~7VG!&>Meb&Be3bE&=o;YRstqI&YEPZBpBMZFZtI|!!TzEC`43def2K0x z`L*!m3V};%FnBSOADJQ9UBE0KreSts2#Q#K1%rglrc^ff+x-5vSS5Ma(Hi1N-c`nK zdw+AkSfbCZ4i2u)C3?Qkxa*HURPRf@+~VWi$aUZPhaSH^E`wG!tzO+!Ntqu&?X6FQ zgLs}7^Kt|7wTQe_EItD1lb{_2BQAs3R- zdezeRIB_}^5O9iw_Fmesv9~(bV)1d%_ukmBw0GiI!c|ofZmdf2JpJ*pA@q@nC-(0@ zF_AP5d5mbDe_{6Q7oyS$r!+SZ4zt>}YT(~~Dj;c{C&KUaQ)dWv$+LE9gDw>w3aSKa*xi4@_Yw> zFObe?V%FZOdX$T|XSy?k8IdjbdaSt_(9ZbFAZU2ITavs`D6igwp9`5YcATT%evqPk zJZDhSJg3$Vo#!SE%6VLw@&Wz!+>RN2CkW-|R;)NzE=*85UdEwaGm`(|BJN&PoEU^=eCq*BNlww(EhXXfAk zN*)~>r_+5oIdtFj#vZeeySg5qeW`nFZ1?{{HB>id*OR2!~Qt|Nt@Qc_gI0Ls&i5=DHye4#i)!;q0Y(5+{fNq z-!<}pv-5$-u5?$|nKQehjo^z*&pL3zLBs%t!h;a;X3$zWW+%t%GUEu0J7F+oBeMjj*?jiUqI63Fq7I zQL=kv1bjXe?1M#lYVN!pl;Q#Iz45u=3g;yH^FDiFe2OKwx8d{TUYzG!^z~N^i-sK} zx$4%dD~{VA@Ya;LTZ+o1?avW*<2lHcaA)0&cRooFcDGklGPZB>#ch>Vx}0sDW`6;t z^)tq2@y_;g@dm~_sx91EvXM^_y#A_mi)7qsFO-{q(AwPofY<4W!v|kr_2(38=wv<-!01GCQV&U!$`Ccc2VjwSr@-zxQhIZfW?{67$_~9eZg+%usQxfA#c9KJIj@iAy zBu=o-8+CS3U0&bhpo}!@`(#F2*&J&dCwZ<2)d(t9w9)LvYXl9q+d`AQEaZZh1!&Kc zx$wCvPvJZ1J^WZd=O#TUEtJdXfm6Ssj3|}^+X&+g{5%DGL{$dM+SLAwa#6O$9KfQ< z@#`hBXZ+?lz(RLf26%c7U>^(VZQtHbckS?0`O$TxZw+Fpru(TpXJMbaWZ!_7_A@nz zmzrzem*TMD&t0mKPz^?tM*6j|PIyDXY`vbLXefgQ-Y=dYPB165A?QtGzh5r5v9o;&m(=$;sn_PG7 zU}s3DJI|0#wliEKE|ZF*nr5=gW;R7}hwi#8<@OnRzU>Tq2S#I02(2m|JSZF4Td3sP z<2|5$$!q6w-SHN9AI5~ta?SA$*k<+D$@Rt?VA~U(FtDEi&^h@k{+zY-Y=EvZPHSF(%Tkyk(!CF9tqFON&c_o;4BID8`&tOcmm|LqB zEs-QZVlguW1p;qW84`ilnvrWQ$&o{Az~YZfaf8JOC_NRNn1Kc20d-OYdj<|FP$hNn zC^Yc`Eawc1m>0D09<-owMP938@ENd0YE_}Iss~}2*%P)zi&m$%@I+&fO@*p;MwicM zLuOF?5K3v+-!sRm1g`g_sIp$9i!qk|8aL=jjLzr!8~VJf^aj~01<>f(UFfGio`Z|E z8D#4jw;)%?oN?rL^4g~w&ET4lO6rc7ep9rsieC`^0i912`%0Qx#Q|CGkZDr)RPrw8 zpi-ZGSI;?roFDN+ey5w2PEP&Cx_L{!H^Nd>$H;l=Ri%GP&;)kyqH9Bh054s@1=#U2V zFtYY4IX0DESD?^@OT1^wrh?Rl)G zJfSgo^UUq{Y12-BS6@fQIuXAO0%w9sXbSA@cU9j@_b(dylTSuQ+c!E@?#Ztj@k@1YYT)=2-R7XW~RI2}WZ z7IYGtBL0gv_`G;BwceOpd~(k}uXK-Dv#Q~IeeBw`Kha9!-`A3@kJ#HDvlnwL16~N0 zEdDuZzdQR}vDmff!FgVTL^9SIt3CJ6>pib}P*7uR|DGO%L=G4#uj$;|&M_?N3H zLXsT@Y1Tv^9OSBXQOU6x_wpCR-@gr9_4rWjKd&~IOxFFpSo+7cJ{2wCnKXz7KKa2D!twwLRvHhH!$m7RUDPcE! zxh6XJC4CjSuKeDQZVYe{;>f`)f1NV#bfWd!;s?m4>vU5le__mHwC*!9XlU!O3=%~% zyG?M1mA^viLgFKeea|GTe3f(s5=YXB5w-h{cQ!I9LIlQ0p@RZBH5}!3h=AusSK0SM z4z6Qgf(JqXZp#SF1`Q!W3tRR*B7*+@A_DCC?IMDMLfT>7DedIS0k&8nEk7UBr*B{x z%}ww-7HV?Ra4(JxIZJnawb`29JM|=~_`E2QZ0AJ5asO$xv(vc@<2xDV7NuI+tos^!wsdTbOfJ!A@sUBk?*>BS& z%8pg^^aV0@X__Mo2%;sg=DpfNIF&AK3z^Yo!Bp&42e`Zl5A@wd1P)# z_D(imJKWJ;Ucl~-QKUc;?*qw<;d{zaz`=?;(LI4Ebtg&bnN2SWlypCO3jY&5-APV& zw_W1Bh@e#8C+Ixgq4efDAM;Bf$IAlA;gGR;o4+Exts}=L7JW{4oJ{4$a%6W(<~zoW zb55@3_jAr->k~Scp*_@UGHHj<+9Z9!`H@*<7UxG}*1vdS+(<&YJz<8~H!k8^m4?E0^7VyExwaCOviYtIqUNE6KPqtFAMN zl`5Y3@THB73p2-Z#%De_v2hdu3@r2?go|!ceIk4en`=1e#^%z5r~tT5>kV3q9?Qf$ z36bOb^+@X$Y=+pa*X=E#xNb zkS_E;LS*Ui;VU0d(oc5Hpz5?I#&O~Nx|{Pz&mYzkq3gMcbkDc%ZKD5~y#ejsnO+rN z5cXip5xO|TuTW?;$Sdzi49MyZT^8~E8s^Es0vgOoojHwAO$QNOYZ{#=_>zfqZ>N@3 z+;9CWv$87tXVR;}dpBE#(U($TmP+Xp8BViY-=sD{@%(u{6$^i zo&V2j>(Snm|E=DCZqrPA{U!CkY-B$9-uG~9e-B4sQTf1HW&k&hLzF=tDC9nMB!5Gb z_r3n3dmFoT{NIxMd6e$(6i7~Ecl;BoI8 z(Cznq=YP<(|McDO9Zzj-U>{vPvnRG=VTa1Iq~U%%9g$cz`zo{l{dc(QOM~z+hN<=?XG&t4w%er2Q$r| zTZ*3l>!-H21X~;Vn|`_T33tMl{oT|4?rrVQz5RA*c#_XeQ@zM{LQND{XEmr^Y*`=x zV)g`^A8((7e9F$k!wFYNR!#}K2EK9K30x^-@saJo>2n88AE>Jhr%&xuNQCWOR;cZ9&!#QYCo zb%JLs0}O}q!W<0s7UpyVo2(mLh%6@2MC?F#%-NTiusCLdF-?cth{MZOo|C%vqFu=o zLG^?DfrT+LaPXi2;OKVy+Rwwo`>em;2O%|8;UD;i_@DLm`-Yq(ryLjM){!o?K5q_O zcJnjmtVCD7wU2v&D;-czRy$KSn%jr$<2FC_-h)KfNlkNTL*U@Sti&4j1O)RO|Jo1b zhWdRFUOCYJeSehe;owb(%QUzGfuQp=lB9wrM^$=Ts(oSZJ^c8+^b}N zADV~0gpFUtZ2U4h8o+bH5C@MuO-emO&t=jMbID|ox>#{H8F`aJ(6+4sV({^A*8=_a zouUoo@Rkaa*hJS|H7~8LU248c*ENyEiY?^uh9WF9e^=ixE2|&-(8;Tu$gDZ!?O&s7 zHvkj7Ht+D#rHAusTOU_$sEtOR>N&K@Nu{%0+z;f2(cycmQv6bR0~rJgpqVjiIqM}B z_z4rN+-uBfiTNbiPS}%i=q(84*1>?tR)JG3>hRvvUr*nD ztn1`nn>G@VL0wCJuPOU_5iGNddCwG9M~g|5%SWVjxHy8rqKp_;7m+riyguI{y1MY0 zys67xyuw}J2ly1zZe)K*_5fZ=zVhNS`cdfzzPwXT<3)s6eU&zzSy~1v+ zOLhX~mLSsriwXcTBXiV3BeeYh(~K?9CPCF?7H)V{Y4IadFoR@7rYdHXVa~8deB&y( z!7^7{0UqDB9kX)pLp?^VZ^^5gI&^y&EEmWE3AoIM@qFWtM~X!Q`E_yXs~ z=?T8tKsUOrckaLtb;fX?z%ex4+^a`7Kfls?{z6*i3)=?obh$94`)KhE!;698jw0`I za+tnvYJ-Ld%?%X;A`ixt`gk519_p*n4ec1yZKqoLIil-+t}JK33THafufsHsy}PqQ zO=}(AP<23FX=a~DK{P;j`1%b+Zk7qa>zs~uV43LTW-zDVU0C+8@KE@;C+baNsL7&D z(vn~vZX(Qim|Y0GS&N=y-fI}wdeIbO6wx3SguOBUF<|H1=W2!l+cq1(HyB`7MjR3F zE1q)gR`s*q%hk=jH{GXJZS9^F64Fp`D|Sn4cWtVc%cjpgj^n}g@lt1-;*Nx=xF+J)A&csyo33X@l7q;4gCWL@<*S)+R|KDkWU|f(c5Gs zz1|^4`k{5TL^%$hqNph8Fvq>-SgcdSb|v$(50yE>%NQ?3tY)%%xL$-Ui~WHG$ZS9l z3XqR5?;hFTkp*5Lnh@u82BfL zKbsjjbmeJ&NZ=*4LvqH*lmQ*9iO0onRtznR9`Dnsq-))nEXTyq+!M89w|*S%8)-ns zKqj{hqko7F!Wviw@-Pbe!(4!|AI|cmVHryv`!Lx7(h#6La;-u2aQ*}skL=J1XM|7{ zO9W+7-HFU*@?`K(SeyrxtZ*k=e<3dB>8?FWQooDz-mX$@_m2E7wWLSar(@#&;y5SL zgMg_yNVg~dVwUr|2|2khbNSkO<DEJVeJLqF7d+qwgM+W zWA8vmIjk4W z$h60jgG(f9POXNn($wbQmyFQBaY_LjMlF3(^{Ma;B(zB6r%6-fvM6A1&j%0-K3y>f zE2yg#k1KX44zQJdtc?QA3~`z=giA^?Z22DGh8O^BbO68!(GqMb#iS_%ws2bJTZIrg zHtk}<0R#&6+3IO9{ESsN#&|3nVK~Yh<;-w~MG0(86=FMfaTgFM(8?_RIZkL3De{w`{}AF$W!^Y93wPbEZSy)NH`p*FDm2zK5|ilLT4cZJOlk zJ9sMj*vTn%T+jNa54pM?-n#ta=t+f}`xva(#uZnusG05-(Z$8VX>`x-hR^ z-`H^3hfJe$eIm_c9=r4=7yOdb)TbKCpW^1yw*vAD{YZ?ox8Mc6rArL`&^VxzWpe(| zRGKq&SLLwH)13L|Q}q?w%TlGiRUg)visK@)9-g#w+RS3}kj{kxS#D$aRi?y-+0Qie zUA4$XDr{Waw_-p!eRfEfXL@Vt8j|3jQ{YWs=g4vAS?jxv-|<>Td3gpt#3zzBMUr$! zA1`NJh|EJf(RWq(!cfr5QS8gQwJmN;WC1v^-J&OuO^%6%5S`JpEbF~&8eE3>RxqodsR1*XclfB zwzZ+3Q@S`at)?bzrkL*3uVL%3%?tY{#7AeFdJc9i4Gip2ALixR<$P+i(20xB&yVLi z3DK$NyLftq)%OStEOi~+)07<@pTLjZ|LfMFVG(`}$>HJ2m2sW{)erT}HSdUt*EVo?LcvwkfVCab8tmApd%xuYu>)eTIxIpAdVjx}l-^SnP!Ikwf|*^|iq_@O3^g zuxegnQJjhK2|-a!FNu!}m*6E72unU&`2hbEOjy4*h6h8G3f3dT9S`3(vzD<0=uAk| zg?zq73sgOp)WDd`Qa_?+6fEE#3L5j6!!D*2<^!h`AEzJ2B5TUd>-1us(2Hz5Lq=Qs zX04yvF|X5uJI0LPoYP?;8QWuZ^$hxhk+}B>THU2pOD?L0kKNDtoC|yHXL^LJs!qyJ z4C>3JABf&3(Zjs&`2U!{%1<}w!~&Hrk`w4cdiiV3F9-mAf==?QR@{;vJR@D9FYoB| zRNe+I?znMAXrZH*A+(UDHKosNCK_wXW3yg&zq~Y+3|^D6`tjFUTkwiK^cmF;!e`hL zF`oca2Yv_8y0!2;Q2k(T8Dkdu-TaTrQQlg{FKFWWH(3K8288ZbY$|x-L7x$O-o76$ z3*)i$M1{BK$adZ4v#T_n02Y z$C5-U=@x#ERj;Qj$txAyy6eiR)+@4ZeMb00N#MDW1pOLv7jP#bZOCw;2vGm^cYR;UQT~{|--q`*r;SN9c z;De8me$DhIQZ-c(u~~W}2md}FSVeC(HxsdHpb{zF=*Cu$oi)df)$DXFD|5ANd9)%w z7&l}HEm+=MGic0W%ywxaIwje>6j_5fMtgFxE=ML$!QE;ML0s~;gw%UbqGI9DPCtldA~hm zO4^>j$gO@ba(PefBGyALBp|bIw;Jqw-nROW^_+-rV?wB9s*R1$?ukp3{_HO%mZ-?t^Z@(P< zX?OGT#(iOrT_S^@nojVaP9wA0j`8mMse0zKZtcA`fT|ZCXn!y1U2y2;>2-d8JSAwo zXPxkL7ugr+UF&{|ekY${W187F&M1A*k1S80{9bpz6r;mCJCD5uvunI;Cp($iZdV#T z!rFg%Ggr8?jks(i)m}9;xqK0O_N}j!j|h*!r-`j`-IlfSM2r2YdJ!ZflTG`RK^kpT zQNAN#N2yF1CDX5%tWqU=(#VuOrL0or0|t~|lI!@!?fP+^ zcQnt=Pv**XtRpKPtz~swWi*lpEf)LxX(YewHB*gb4yF}nKPtATO0A6Tj@qNyhttUs?{W$o>*P8lXkwleH4pSTfw{J zXUZ-^EYN}JM2P!fSkFl*F62%Nuuz9WJpNp?bgS*boY$E%GToqe>=kRd>zN%CF3R=F zCd@JVyXZn8CNq7^mfAzPo*w-Ed!|x-|2=Gk^v5%2=#NB$H`H*2?ZbWdn+c_-?j%~S%Eq?ZIZ8`%+f(Hle!BfO1#f4A%uc{|{?jbe%xF0HTv9SAl1WQ~ zQDYSN6r%uN^GmH&%nwuf)aceLbUR>3pI^O(99XlO?*8$i@$~!gHkunv7b$nD2--g# z_d{amcz~sG48ahpcpMB!avC=`1l$<`+Y#!8nH9L#oR`j*=z+G4h*cT)TKT9p@p4ZK z{mjzya-ufv>2=`&8@Ov50>allO)XW;RR!bH>bi3aSHztzydjF+>(a&*aIYt&52vYg zVRSS=NM0SDp0xIfcwGYV7(JT)kf4iy;zYjr=bz1xI!)evcY3L4Go5>m#BeEY9$q{9 zdYgjma|{16`o)={(91FpXh#-q?qX7B7#paO+Y>U2y#?C@6lx~tY+b=b5?ha>F%;)$ zy|Pj`%6t(RiZ?tEV1t)|?ty5|yxO5ZK?UPONGkpLTzhhXterppxO3U2u1Ajp8va$< zi@vF+h;U*V1vvGOJ9qy0;1K2%$MD4K1wWMU3Y;)S1ZgiE*4p6q(x{rVa26`S3WGdp zWPv?30j6p$TRI_098Z?gv2-lz`!4GHt*{s)UIDpLghOmCEQ=(tkRAheWbA>qQ^npTs-La|N)v7%(Qw{l_KRk>6w>bMjX25 zxGO)W-+b4fO4Qo_dr9w}+r2gJvG{N!`(pHf{!$uM3b}oubl=gu;Yjqy@-9G~h718? zi_$pp_<;7ded1N}C{YiZNY2d}J9f@F;u`2rf3tUFRs~7e50vX^d>Ct zL{WKbimH$DYgm!wzGQlg+<}g)_f&nPQKWbT@_jr%f)q=mxE1seHb@B$aVy9#(#u&~ zNBL_y*D*^v%cW;YFSGHEav@l^D6cUcBZ4rBkPB3{v<@QYXx|CIq&qwTc_z};Pvi)hgVvYnchTa-1e7h>`CSgbO6I{NEXx<+}8zX7iv z`Ay)&gFi1Bn-SR|G|FqzHk!xZptf3D~IfW6Jg(4C^|4~BcQ;-n_zT|!@|Nf=_swI_0mzUfUGC$xq|sM&kDp3JmW)p z9gwf?{rk|LUn(Vmo26;=7=71`__?Li1K(-E44%_m37;rvNRGDR^4=0J`n>-lzAL(~Vag-{c-3 zm0Q22uPozU+Hd-Cl+LyG3;JrA^{XrOZ_{^uxG<8jtd(A!L(>AH%YFFppWf*GJTZOK zH%iJJo(F@h0zH1a4U?c_WML(*6ll|ZWb}r++K-1#0d{H_2o2B;We`7(S%>6^IvoS? zXDE7R4?qmyBA(fhEJj!!fOv=RB%P7j!{u#!%hw>R16TgJQ4@}B%{3P$XM9b+q2GL+ zkz8ob-FmF;7)V{;c1-#--P9{OFUwa|DF)F|y-ewad7MY@AhA+KXH=?udk1kH3iG0S znW(QA)Z16(9-UX1Zo0Q=Y5j*}=G@ebj7~{w*Cut!$Vi<_XMXr0z2_M6ul&@zDrn?j zy0f}|LgTQYs@@rcCC{M73H5K+R|hpp*%^aJ233)T6B>i6>*>LfgEM-|K4nTpFBK`fR*0j<+#IjGPLF*0@d4M)rEXg9`W2<*{xe8J=J-=$zU+8 z@67rd^NHP`R)f(J0Evb5cn<6WU13qIQH(|W&RoSjU1_GLZbs@Df{-+<5$jIWDi*d zc$PhwPUem%1PK&v%Y6cKk(8G`z*Y>ZXX)q7ufEz0#CF5^lPAv;gULG}Wu9+v*arH` zi};7^KP8~tEgg@MZJi7%&`sMbz^2p{xbu`crmonDNc~^_2>vGa-L2+_& z@dEnnJAq!5MpYt^#)(>;$@@*Yv9Y;L3p*z!cE;QZF^NjR2jf%%es4PZQX1gwO?c6T zO0K~~DY{duIQ^ zmtwl3Z;@dfJ&bN|@8Mw9!E)c@tF5cC$&jO2Pixsp?eI_h%<67 z*k6CPN_r&BJ76QIg>=TznlSJGA?a|V?H8T96~rJdW+{uKwnY-BDx6YOsNv$GRFu_J)hB? zzY|b%lrErBmq$}$2qhata!yw<@~VjHWds@fIg=N`GMoigk!gT5Z<9y`oG z#w&Sr-wSIu9UDvo&AyT0OFTOS27X#sr#yIN89l~$1LF`T8&_c8i!a!C!&5;62V@N# zs0?c33_UYQbVg6=@8U?J1&@zxy)Cl|Dc6A~(a!Xkpd!({BR!?Y@{zw2{mw}wF-{Kj zhNvOYF6u!fx_1_RJBvJXSNqF60GuE&igAJoo+j`DttTHYvjWT>clLos_Dqdb#G@Aq z!4G;V7(W;aOh%SBwMnrQnIg6!SHwP`G9Cc-+nv2)(aJs4&I#K3hII|=8BETsf3Rz` zcV7njQRek2ZDU-^E-}iT#t?~Qo_}W-{-1WLU(l|qsy}yYZ0xXNujKE8{QQFE#m15Z z`sKOiW~7`UzRl;(H4|UyKZB2LT6>}IXj~=j4v+LTlTSebI3hg~h=1sO(rEVeH7~L6 z{aaGtM%zgtfRTcu3k}15R7Ov-%r??(G?C}bNa8rYc}HnCu8hK!JDf?B^B*?S@m$`; zV(GH{cPD=m?WdMz;1ute=YYTj(MjqJ5{mLuPf@$vNjZ`Pii#4Q=uI4ta#2^4C{Wbp zEMD^uD2nUHC`w6+=?2vyArL-;%$}Z)RcCiYu*RK*?=q}Pc|}7B{3+RYOAbSnmx^Uu zx;#1|`I*^Tq`a6Y|6(wz4oSsQvEtUmq$On3XKVJ2RotpAjoY^N(W!?HO?`Cjwz$$4 zmjFm#z2rr@Ffl1NF_B(OOwLV6*vvdANyM5-PmJpIW%ZaV+r}-S7gy9}HMpr??fXo5 zK|%R5eP30(HDuMT__?;Uv{vb#n3s~2o5H?BLXu$PQYa+E3{xf z;|Kv%@vkl)Rh%3?>_oyvlFdZ~CObsNs?}a~j*)R{k5MiO+2SI8*2BUI;_emi%RQv& z7gFtJQP+Aqc!^2=?kXM;GcInLAi+WH5fUZp^@b8IMdd$GV@~T(K6l_Ur||gR<9)Rr zeb4?}u)p!F&hjMxWVh5u&ECuVboBKd6OxO31L3_hTwOz)iWcM!=VOYJCdQ_@Cxi}8 zn=~}2By~xg!7nj3Llx%C?@;k)MiFn=si;95q0_k`ZSl-DK<8QGeza}&L*XNa_xvv4+52;ZA06((SEA^Nc%?nsXuT0lWYEb*Z;pq{z;wNuW8?CuXFp6_6mx%>G4_WJhw z?d6WR`|*Eqy6q+IzR7;Ht$CEMr}j^c8R-;m|DkW&H%RooN7_$ueeI{L)9f4VNB+q* zf4-~z_Li`F3v562e|6WN%lRjDZoj5|qrGD7N7^^+@4)2x8oEJzO!x>q!~>RrU~rXa zSsGv-`Mn@dj#f;DcDX?D2$LW&r!kjYLDtpTM5Isj3`u6Y%rPGxXNhbR(aIso>& zP@OJxep(}mHhYB`BZI9c8dG#(T(^|QKg^Axt=G(EeF$weo72MR+bKBnSy-r-B}Ewf zCsC!v*H*xMbE;?PT-*?TZmnm9gl%bTY)K1?2oEC*@D%A< zW8-=DSiW0hs6HjS(c%@VYYg#9eLpxVtg&_9pXD1aRK9ypBTAI-T%MAbn39`>Z&{>) zol}hf|D3PWIh`GbDRQa33Vg?ipli2xInmwRRk?~UzE({?5Ir)l}QI|F4$@r zcoBqn7PA01T8PtF5OCzg1!3Mdhk1vEd8;1v4x4=QW8sEI>ZS4VVc#0=S+<4m+0uGx zJy%a#+OEW1PpN`$e$2bybESMYSI@4;8X7sTa95=$r^#!%Oq)p|NnTh&L*h;%ux+9o zMG9xZ7q4KJ)u)O7rgg2n%N?90|4LQ-^;uT0nYKOHZ3^hC;t63o-a1Ie@Q#A#dOGa> zd9WaqpnRwtCM^T9me+XU;=!CekoOJm>jAtb_`8uL=uiSyeVNlRQ+o994`rFO1pCL4 z$4TX_Vke(8&%~ut#nMDi&qZ6l{dUVDPww~D;aq9U>mz-fij~Dr(HFj)nic%oufM() zoHaE~I>lv5r}*U7cU1Ls4xJ+neoDD2JuWhvE(slpf1!CzRV2jUpMF%;)LP5$<@~cF z7_@ zS|Hq-*az@iEJp)VXW=r78H&wn=yJH9YIO3dE?c<(m>N^P#OWI*ng%Q?PYR+ppDn4R zQe(FV{O1M~3?5RN-gCqFh}CK=+)X3uIvoymStJdnb2s)_&OJDBv;LjtuIIOGF~nAL z-)JKHy_{|XzM=I8_A2|)=cQ{J zV&M9`P4;Ee)8{*<@s)LS7AxBse) z&JAI9;J)xoBFsBUc9$|6bxJLgyN6;a5<`W+C7rpJrxTW-9e8vYL9A_oL8p>00c5GW zA&G>Cnc##fm{FRZ#pZT<>JIUW?taYyZMyU>m`JqWdbT0WR!q6=VxxQcOF-qN0 z9q2Q#Xdo%amro#eNA-NJ<7YQFY}mZzz+&DdCHw_L%$CiIa~3~CE7LlEx#-}QisCQP z;7@k>DmJ(D!fzx0Q&wJflmr>*CtCUYQO-**T?fWIVIkXW@h}7f(2V^7uN%Y54m58-OS2#mi&;GXq3Bx(OxbVox3th#{IGJO zQXM+)3b52iU6~iER!*#x7W{hhmtRhi-&!lYlSs_ft0X4Ln{ysLj9#b5p!<0Z8{IP^ z{Q=8Mn+c(}Hos(fAU%SFANcv#{lEN57iJFolzu>rpAG}v0Kb&(5H|{+f}?mNI{vPe zLhuE2KFgAV054cpbeuDpIm6ZDX39Ek9O8Nem6asOjkEwnUtl(=Sk&$Mz;s~>5 ziQr`68s-iFcURdh0M27*NDa=&ElRL3iH621Jvae~5-XSB@DQF-u#0Tv_>CoSVMp7e zClH3h`Xh;Xw&M?u?{ZPtLSe-04xvOgRl_SjROPOh-GaS5y^<1noRh^P6pj*<_tG+tEQ=;3yDvPiK{~ zNT+g|Eof^esb{6f{FYcdaJH+qE0&zPsU13dJ37vGj(oz_rux_0$&?}DhzW%|cBWzhIO((;lL;FSt~0j}|$eZ6O;JBH4luiqdz z%^R|sjMhEo?ECVdto1#D;@txSv%UHm9!xQ0yc0mgbxQAU^kaI^A}H60?iqYVBAJro z5%1>Lo9Clwf+kku-%F{qcK0M-db)|7i`7nAs?#_*l$HzJ`~3=sh+eMgIOs`ZOupIv zuJLY(pif{&x6>!&<2(HT*j)Z+Iy}|V@Wcd?(|~c*&?A3OLtA?24yKzrASx|EsMov^%Y| zs*j-`+Qx+nZ|cd`mN7YFnl=DR0?}_+Zio1T+=cMN!DKFOoHKX@nb?xKV(=U?Q9yPv zY_w$3hjCar;^D!I77c!wOuX?beke8`9*m)f@iOI>AkIgelB?|Bb4Nd8yZ|&(obP76 z=ob~`XT9jwTUFotYRfKehY;%R*HQ@G`iP%*{+8B`2zOA#qEFsLpWNA2erPMxU$+)( zHBgSd#ehUPeb6ATeA_l@r@eph)7obnw|<*ckFRa_ZL?#?_!4dh=|_i171kE=Bcl(5 zScu!?x~Nby76+n0BN;@sg!;xl?wlnO0l&?>{2V0 zT8|44NTu9!Eo+u=&q)YfVDsqha-Bd6a+xxo6hfk9uEj(zxm>k8bsm-kuk$xvl_8>v zq?YUFS=m4V1K!j5mg^FtbunX}7rZ1^=URnA+{ix*965j4lNLxkM$Bz&WdPk9MA+(% zctB#4j4rqsIvLp>@_T<_sP@ zCr!p(j4WacpUgktdRm{RsK#mtR;seIfe# zXnS9?Q6baj?Xke>q!H27_HiMsu=OYxG0qzQp|nGsAYEZclmqSLZ#Agir(e9w)wewK zqV(%A$kA(Vxr+N#5s+CFdJHIxHN2(;;9==BWH8r-_m)PM@VUQ;e$q>{hm=gNQyn+A z#QGNNrwT-CzYClS9i)p`o9`!F!rc`>)eut@mL#+hmOJkZ;=MCalHX6l;bZ$F-A%$j zc>Y5&wlKMnjQ#L=vXK6E>=^xxI3GJkoax(DIXPAA!+ixmz7$+tM$VIBZ}QTz>i$HJ zE5GSqy^Q8ar`gqQciL{T`5KWq^sH*S@D<+C6FeU^y|W+NKfl`QT|J7x|8zLpse|^$TN#d6Gp@l>T->ez*E8?Tv zB43S$AF^OT^}<1|l(yp9iKLa(`Ed!-n?h>KT4@IHB=d+5{R#~6E6}|NK6C~0<8$`0 zgdjDnZ3nOzCn)z?V(=r#*6hR)WQzjk7`k1L&<9N0XWwUPKfbtA2x9IDQ1y?HxFNnL zZRzF29wQnFo#K$+ae8`ya(=*esH>5cJt=?o5XJfxw?nG zIf8z{#v#Uvy*|vh!R8-@l|v^Iit5125)(LLuPnSlkE*~3k;Gesr25y&o8IO(T0f}g zeCf9)($)HbiSwKy41x3~ll$PWR(Mo~t8SI!jHx~s@IRE$@Qrq9C`vlO$KhV>Qv-NkSP1Ry3- zp$E+hzTFjCV*mns%G+<#6d`k5>vl4G#||=k0^M;6?kW{0Ngp!qBJCIvL0-P7^aHZY zc5C0q>B6`;II*mw&yb4!qz~PRXL5>Qx>x*I7=~W4aa_g)@WFh{*uls2*ahprbM&Z) z$<{hZ`P|J`{&{POihoXefvlnGpg)QOg`IMZ+0)pc{Z|}#kj{|y(;3f`+58J+HvLfvEM}VB zx>wmsPSPCImsecBby4&Zx?ya1FfMo>BrXQ5B?p2ihp$;TY}mRr!?_u2*EBS&S!I1@ z-KL9c*9zU%ytR7uTWhQ{)?Qlk=-Vq+zp-xZuwiRa7}}%5tzuP(kcW9R0o8@(1Faqk z4D=)u)Ox0L0gxuHz%Me4R3bA^Z>>ajm%+ys=$Lwp^SK@8O0c_X~ z4BLwX(&Hap-MsngM~@Nf+=jgk`?`8rtzKRCVRP=Pdk@f#ACZi!SLx}GP`Acg#o{BV zTa+C6Vfb_1SWEu7cA7itCq6<)-&?^|Wcj^STqU{uWgY1oU{a*KVHk&C!f<=fzB&ZjhHU)NPbY zQts7Q|I7#LOzyFov8{((LW9k!Xzy@dmDFFK=0pikMqic#hMXCt7G?v7Cw?W z<-t9vr!ykG7FDIiv+#Jxwz>2t@wjjTF;mH~^ug&B(yT$t#2q+*h?zWK3YfD6RCkt{ z7dTTm6K(>cr3Jpt>;O)(a92*YYMMzf164pqOY!)Px!lG5-qGW7Gf$q+3z+xQ&7Zq_ zcxyuoLKU~RJfAV=y-{5<=I>S-KT>|zTcLgSAqaj}5>mx&=?FoJGycREvfINhczK42uZSE0tL}@#%cSLHhcS^d|j5TjKWp z1xinB++(hVV}v%KscO(9*MRevi349C<$DB#`Uo?m1WEJpta?Y{TtD;tnklvZD)+_o z8#H8&=ZHkIS;@H!n+aNsx^+yvEQCM`^M>>tjQ)Y&iD=+>%r{zjNsNf3Rc(ETk9>C49~gJKb8e0-oU^@C7+EGY%qb)n>6oxitX{mLD-@;!DpyFLWo*>6 zd9LvmM6Jo(K`)?D;8g`A1xN#omY5?d621t?L;)XeSP6lw4aYAylQAP9OXLmm66BE+ z5*|g2i7W@2Q6%SQPd_$$&MOPA2d6vuRMq4l>2sA|Mo$$-D!ko`!i_oM#GM{6`{iJ{ zV56tOx`{6T)VQsyqhn6xuoAK)B+bQ78E`B-yDOdV9^~pD)UQSuhIb>1Bqw+J`#zQH z>|@hr9hzg!7D#?{f4Ia4znve5Hlv+yvq92VZhtN}@eln}e~nvGS+ zCNC9CBgka!WyGS7*nDHu=wvcYsZ8km@_XICGvowldH3O+h@WfsTxmX#na_urkDXMT zU;et%0Jla@S0krr{XTQS>nRUMd~^CV>z9f2viPv@3&yZJxVODu@btD00%>3%^UO>O zPhiH^HEbo0&00wY9MEVD{Fl?4o}D#|e_-sy4WmbrMN-i?qqCvL9F`m89W#(dlKNNa z<_AopXI9r`^RFkB(3m&50^$Fm>^lIOzPA6l-;qFo>=0If5JH52j1a=!vSkT~h=_dUt+m#+)>@yX*7~fqwszY3T1RsIpZg73N8j(ge^W`m z$#>jw?zv}v&TlX5?V4U(Ji~mYWqoVQ)nn8wXLh&5 zoWLCr)JWN6KScb4>=vMHA&e0X`IQna;1$9K0!DxXV=OI}yO!njYxF_zK`E%!)M)dj zfmE`Wo?nUHq5{wdW%G_4Tx5Rl9elj1e*4y@Qk09P zp`^+QYi|preIbDR6ppCS(@60_Ac8_FkU9BK_bLA2%s{4l|Mn34{eAp{vHSIX+v5>4 z1Mzl4lyU*gixhvz|Czl2>xJZ45sCoQ5N9Xi-U<38Ic9g8x1zkaP!5#Ypng#vk|P~Q*e3>BK z76he*$@IdGrgSn|t@TQX4hNr{QA`h{z$-_7ffq-G`xuRJ<%DoQ_o8Yv_}&$8H%Mn? zpz|?tMG}6>3xiy>Je6YLP;Y)#>4Tv1LoY{YY$?jT8~iY(yYQ8~se_}x5jkr?#o;{;;RUk-)`TANz1~U_y+-_ zg9e`K$H~;d;OQ{n1<(UPUjSzq>^UZ4)TaSeho|;}gfh93@zRFVa_A~-%lw0PSMlq{ z&Yv;i!9PEn;h*~2m{YmV+wD~U6gR&z8>dE;bxM9mV4j=X8!efs!0dmKSgSBs`M+>qQ-QuCuq)9NbB4r%QLi4#Y{SXbHf@aHhs0kOwgwZU7b zC1I4{8{j%Z1QBR%D4_+?8$jjbbKLd09s%+xfny@wc+?%-zj)?Me4naYHF!*^`996dxSyF?){#4=r8w(_@?ogZ zaE&e!uwJ}e&!OY1N*6~uBVT`0irS0uiaB53nCDf*^I~m_Z$=d2OZaLb6s4>b|dlT&NRB$2*HBNmiME}u+GqM1oi$iF%U zzIe)2w`^m%wc0H7?xMXiNJ?Bh9(vr|E)YM};Cw`=X(_QTxXXo?JWl z<)-k4X_L{fY>~EPc6nx3lF&_88X42!SGHrusC-v%dx4MgmgGkLbmTMF%iS4m8Pc9Q zazc_tJ+dxsSX2ivAOU9|-Nnwc2?q`|(q=Lj4EV>>q7>L`NhG0BT!>hCPaYdrT2s3wGkgf$8cY89uQGv1QYo>N5g6hF-C} zezB=%JAOUdC2g80*n}d#T6?n6QbjEZ?1>*a%Ch(Z3j7p}uDN={@@AROm8OBUb3R)T zBr@pJ9E3(^F=MB9aEfe@u8LcHe$I^e3B_reI5*@S7E)jc!5-sk*N<&nQ#W>X!#HZA zp~7+^BfVyDTK(Xpak**hTK;g;%Y-F;OM4gf6vP!~*z%;VIq%NdwRZBbq4sX3LtV@9 zL_ETj8j_5bcAZ{8FG`<<_licj30SczX?e^1_BSI%LX|{FLCz9tbW_CehNV?^EvkJv z&VyxWJE5;8HZMIsARrEXJ9fjk@hj`h#~N3Rt6Nu#A}3C~m|c^bR-bD=k~VfoYCYIu zD4WWMU-MS8+aRJ54DJMX64n(gx_&;wiEeQWY%q}L3yd1329#i81Tuo0!NvQ)Hp7AL z@Z>T+%n{@|f=Pb0@GutQKYofqC`dm_ual}AC{|EDps+xtlFJw;XD^XE^}{C3a9Pz{ z|NFSSG&0BN=`M2!P}+?^tRJck2%^Nu{V@84ximojzU9tCn{OB<$9tf{bhkFw&3UBD z_yKNmm#o$%jmgc8x->)O9K5i!+4l~vDT(!2IkAQoFb%ezn{l^tBFhLZ$0$2kmyd9> z?I1f4LPv-?2OBC#tHhH)!dwV?GKdx&3*s^Z2yt3fVIB9$;AJC$bID(V4+ocUN1P3r zBrWKi*txDL6`I5io;6e|DY^0L`n^)EhqF6UUGx^0jr3pXA|BpeVnnU(UaED|7o&Or ze4_9Qcv07sqLRW1R0LW@>UBK$IXB!Zqa96T#(0G<@@hI70@%}lmtN8El17{EtwCBU z{S58CZ<3?=K-nO%&~5*CxynsHqbLJmxa*_)?!M=^x$j@r0wCrqu^WBg8%WWKP9`5@er?mp=qK`bnLE~?>wL4h}~8aE^% zI437KVF)!&kmHNvN{zuNdwoO0dh!of;yB+N0h*42jo^6xKXKxz<0f=nEXFF6Wkcv} z@1p@_g~J2_rS(SZ@u;KTvqPauv|yMu-xxu@@qK<4`wirB+aME|J0NT)6f$)g4WG=l z29S+H$U6z&B9jcDIFqooQtS1!dFTK^=JlBfeeW?~E2?dZo#RF)GSmE#TeOBqnNZ z^8{*tYMY4f0{-wZQbdiK6eOhiUcbwct44!d<-dFJX<^VLY7~@BImqf<_+a)Wx@{G5 zV@sI^pmL%iIC0(~B4q(`1z!iTcxp)EA(iXl14JiD*wP0A<_{e%rl{R*dUW7HG1@07 z>l=7$ATD6GS{RCgA}MZkfyIW}i{El`IoV7QO@kA^YiR+@mwFc`lwbk=!GoH?B|O9y z1Gd0G4p*QRFgk4j-?$%y7VHU>0t8n^18asvjQ~4`;(I1#xE3}z7(v+MSt7^4CgEg& z1Ax;6qY_w|e6`$)16WNZOaq+3_ccQMxru?5N=_#@ey}$HkrI^>2-LbpIWdR|5ZA06 z8JE5&QR_D$F>J{gd}2F@^b>>Kn`C(zrW^|W7Le%F)#)Mi$2DWL0|rY|L|#gtFXz{X zdB;#b#*Ns;4=PUAX^VBID(Ct7jgbdA((_8+XI+kDneJ33q7g{G6nU3SgX-P3qh6U5 zlWiN7*34+qvqnd>j*jdV>Hi&rUw&)uE^zgP=Z1U4iWEa4$7=1Qyla_B5v;P=dvL_C zkes1RnzOIvhJEmu(!s&&YXZECz6`yRiVe@K*)_7mY0hdstB`GfcbN3bkZ|OjJrMtd zk8GH{ld7h*sg)lr&RF@v2mSMpzh+-!--K+_!8Tmjd^aB~W_S15j~Bf23eq6vvw zB*{rhq>ykW`3UA~AY&yLJOv3{*3P_q+^NC0pNUy{eb3$7G_AD!D&XgE;PFsFcJ4Uguruc=JQYhLgN z57p`sD0x;`fW64BBtRgQirfu?fgb6D)q{j#?J^cj3nI#2Dv){1iE|yJH2)$;YBkt_ zgsv1q!}iDq*g1P6k=T9+67W+*P6bYP*LXQG1EP^iItUPiS$mhJX$hMPSIT|Mh6W5( zRR{QuNggASh&)1FDG?Kw;xL{k^6*UdO%pjULpMCU<2&*7a?f#Ip0VRfHzNo3cF7*& z3fnAogq)$$f{Seh`dXJQ_?tyF_A~8Vg5nwn`cv;K^KBi2<#ha{{eig0mXg{A%3@s6 zvh@$8=pQZE;--?jw7YuCwINWdQ+UwiK4~BeMM<@i!wt}5>R?-Nw7RB z!4MHxoZ_=@UZAh<0^F;gClpo9@<*}-L1@h}{HZu6xE!qz+YXPO<4MW#*&xc+y*)*v zlSpc`(tyd{v9a|L1*^Wfhl5%@eEj2%ji&DB{`+F`!H$^o^8)v6-E7AIOCU^uoAe48T98YW$LfvPT_l=03OP!jf=F#_MH;U`-9P84Fq6 z1eF*7S4eUJ2=7E{jR)PETTLbSz5ikrI`oN3ZolTb)xQXHC${ zMMj-4NIh5+h|&W*@etQ^7n)99Df1d44R(ZXxr&3PLHrHJl&Y3!(t@pizT=iok1VAYB{LKuW;DAn(rzf5T-!^fcv&!oiaaHXK zLz9iTPi^~e)O=m6#irmgzbnjce0wiL*^bEQ!TSsgbMWtpTVv*-0*HS&dY)3?;|LUI z>s(dCT={@Z;|l&bf?&kW6)YXtZIG6h!IovxlJHR?q-j`&cx7PL$RA)&Bw{)UGGbX> ze;f~RLB0o+f|h2Q!L89#NLT4qfs~#ec_2jR9Hhb9kV2T_KH4Jaq6(st&AYGDJA@Wx z6dhu|u=;MwVq}x<>1-O25HOPY(LNH}dIw-841zZzDSKCY9uHp`l4$Vc+3&|6&uA;d zkr$~G2?H>t4~h=PiI>nVeA8^ifBX>mmTSPw$jmm-zsMX_g52iC`Qx}P5(H1M^K-Gd z1~o`Iu#ZAM8Eln&hPIk|Jdx3dOIwCLm58Zg;0)?GQkM`;*Me%sOpFh3_e)J{cE=Zz zjDBs)!YYv3XH0U?U}NDpl=1oSs$2L{NK#f-$_Ve1_;&Rm!;pv})5Ctt4`?b3Ek=~Q zeqnfiNL(A@ozx(epUa@u`2x>U)LiU2Cvj@xnVG|D79BuT#r#n-Y}f2cnwqrCJr)0v zu20B?&wEzd&LVRMeY3g9-^lC(n;(e_C8kS)FeU`JW3HcIs0G6x_?w8glwh{Qi%0W- z93jsfWDSC7YBDhQM`R2L7kYMR!UvVUR_~mz9n|dmua=U*MV%_~0EH^!>Xe$?#)Ute zoP>(Px83p?9-W?Qtk4Bt%+a5O@ZzFi+HOD=YKf8itkNr&M*5WXEKVNb5`e$$MOSD~ zzM!FK!q8^YUIeo24fZR6<( z_eWoB5B_AN@Hmt!>`S*7I!Y1|y~IbIrY_gftW8X^iIbW%vB=xr#8z$%Yim3&$73T%BHf~Ec@Eps2up)e?;Z9 zTV8+e9(MNZPk0l&HsVdF8m}YOx#3?W-his$ANi&VjY1XN5qyKYxp8l0{$w)=4<_^g zvJ6rJzJ`Lpr3-;pXtJq-iHB4-3J16`z**$f3r?s}%DD9b`z-SgYp)#;hEK86l6IVgAz0!Nv2eOT2SAi61qY^Lh~xoBPMX zTQPDG%cbg4|R%EZRaQheG?#}n&i(Jr3U-kyCiPGPK;_N0({ zfb(w#v_T9o_+@fiCsrJ2>r2zv-eKDXWvNVuhc|Nv zqtF8EcZPgCgD#=VSc@*Bi>MDyC8Tf>>)|{-x|oCg(4~{;5+=dV#P-PkV5Q3^pUwUN zmuYbzx&Sxn>%ZA0?jpi(Y}oI)YaYi!^|uUM$n5u)1HV`fQJKF`*_Is_s7&(t-{kFP zUmu}k>-ATkxc+gE5%iS3iZwWz>(D851v}$BbPao=Yv@gggH!i&+hDB7u`a39a`MO0FN1=l7#iJHK>XLOH8E>vV z|K~iKo|s3*8-Ih_@D1dK<{)8cVh+7-w4=?c2!G{$NRW89~B4sH8ox=I7Ak2jJAvPt@7(vCL zv{IJnlw1<6kBlMMM?_~GYwy6ji7wdTN_z!e>Byt(aRm>3dXs18ERyoR!FnF*wpW-p zDeTcEI~?#WPh=}#7El5_$_`!pmS^kiKuLKwaey7#ERdTwIoJu%MmrpIljkUxJMz9o zpW5Nk0*dcISK5Q^r0U^ywj9-cOrF1^%;%g&uc+xjk{p7VM4J2CE@L3OmX=j^~cb^xR-&iSLA;=%ah&Q1WP zp9dj*XX)j(Rv_kf%>pTx=A7pVr zePUw!CZH^!;#tk$CK)ly5g!6!m_#5@64VyrJpmV~mbsobyRoh_vwly#ZIDJ)v|xy9 zp*^bHS5?~9Ts1pu^5nI4F>cO<^GYUDNJXbO=PfF6)(q0z9# z6Z;xz9B4byh_fOPjgo6E$O*)rqkx|{v4*Iy?4IVyhl-^kz6J*et-Q=FxvXXTl=>iL zwSCZ_$|PSY!`jm|y* zLpM?sksA`8`P!uB*N5qn()6B%DpPg)OHEZK|c=3wylMiL9lo5nLtlx{uzwEM%RtI+D)BmTp!sG%T`|hZpGHm|5d}kvH71{ zW5&l+eAl;OijbBM~#XbfhMN;|kYoAOrB z*?A3F;@HBBaUneXlP0q%hjlN>%{HpEKH8Ri4U#c|&6%Y!;@sLCN7InZia5AbmloCR z93(Sj=f+5V*z~3x9lp+lj!!R)5OMSJ4KE1B!i&rcF-Z|J3*qS~P68!D9eIIVXQPCY z;mY58uV&kWU}u;1O8%W%Kh2*npG*@<1gU7!uX^f~JuhzaCl)R8Le!4@HELUtoqhI> zQ&;rr-|?~(35+)E8xL=A&lA~@t&6dtHI$9k7;YmoNFgDWNWB0G#I=Knxa0*o3*aLK zVKc5Dqz%WdkfVcUq-&F)HX^_9-OtAsC2M1&s+Sr+{>F3p=*R)00PmQnF{`LU;dmTi z2-9d*hF=^oXB)UdTa?@|S!LLvxfqs4DSEcpSj z3Wsut73Gk zMf1GSfp*?@BhC0KQa8^w47B$NH!YolWaGvLR7NWuRrZdGX*>2zlG%$@a$DKtJqIII zs`z-7%Ch(O1kX7g9rHZB7Ng=cH`S1Q4>$BRKQ8qAKSHWJq_*C?*w9aQs*?j8kV@zq zJbe=W3VA*#6?ohG4(ytUJXjXrpY}qipPl&^#B)qnUf;cY1u> z@+0cNGblMnTi1D7cn%+SBMwoUuZ+x}itjX9I7U<=S^xj@1{j4OO;n zch)#^eaGM@%BaF|Jpe3c;O^XhTI60E|yE?hvF&Ye>`qAxA)*WzWdvtzr^;Y*2Y zeyOsYK;JvuT$Fu*o`dH+9zO73{09EUb3XnkPG4B!h)7Zg8lG2M!{T0TTMcpnvp%BdjB`3Q6Y2jZVG_*$U+!I|@K;#WWZ7!7&T zD)o`J+~5&8gVZ^LcrF$yV}j?^0OllsbeWE-w>0%8)z0B^9!+lr0K!qZ}9mIoG;WjT&&@oFjw6;gW3Mg1A-FqXg?y;FDwUq6fl z7D!mO^4sft6Fghk|4hK?)Iv^-3}Sb|YV~L;`6irx6#t4Z;N|$vUK|1yADqAGMF+NF zUT+UpqB%WiH`=t0uEZxS*9BkW-@_?6s-TpV1`GA*F1CfNTRAe}Gw4UFT+b4@9#$dr zN~Q)}>_7y6)NsJEA8f&04)`5M+}TaCOS@5*BZ_lCom+4Nx{B}ojN{SUKO={4Zy<-e z=qxtg#dmJ>uN9d4jd0&5bNFl!t3!~b2T3ei2$a-9e6qx#V*z}7BQ6{dnBf`Mu2K3% zTnHM(1YFoaZMk;s7Xn1Si#}^UhM0TkceC+b^SkGdncscTjD8fD-!((CIsNDYJd4Ds zX~BRg(~uHTtdS+jI|dqY-U=x74=p=MJX z9B^h5x@2ji=3u`hbjYDZhV~_4Ew#kbjLs+EJQvb8tE{Src{0L*T*HzGKyW}pxjt_r zr_uwhBMwLr7y#7RR3a64cdY$DGDwfKXc#I$4R%*hfN=7J0<(BU>I!cN+ zi6Mo)N6)i$U}DfN8DFHt+bEryIwLXSQmL(@5|vo4LS+Uu?v{xJap z6R{LeZbE0iy&^9!cct2Jxg`cw73k3kybN!>44@9H_!R}%aO=@Lu+?l27qLoWFgeei zPD>Oln&rVP*pcx!cq>`!1ZczAY8TvwI+YH{0|(X$q_#C!2fJH4o+KAQorS9nd^xl2K?)~#)P`rd z3eaykj8p;jcBCo+Q;1F>p}PvtK@;4qZ3e^yXfv@WXi4rJB(kyuW(WA18OM9V9&p|p z68<0+9v$@tTXT>nIt+?_511)Hz3V}jbr7r`sDqh-k_-9t(D~`_!o>j7!0~ zCcsO8f8ItlWk_CIjpSw4BluQ;H2`%sq&t}wfUOrf*%Q8w;?&Ah;bJNr^U zvdUhd!%2n73bBK$&J zmGB}!=_2F{$s$nqm?$|xz)Bv4i)pP|8NiWQ6(T8k)wD!e22oebMhuFOm+XJx@OZpf zpQ6i24roQ+h9*~Z^dP@%EU6i@xOR-?PgC;Pmc#S#L+aJ!kx7FGqyP#-du3{vWEj#j z4VevI4sH>G(`_GT&-yeU30h*!X`T&PlTRjyQETmzn(C#szFzg&?WgUBnBNYHhz&>s ziT}c^Us|(jJp}H==|S{~>(IY#9MTN2C=%ftA_z6!6sJkc`*lnxBEx+JYnRCBMzAXq zZJQ`=AjyNTmbd^pU79B+$D9io)*OtHg2zP|f=W(b;x+a9G-ZV5K5(NP^F8xY#;2zn z5^R0GFA5#h;J2lL;Wh42HKw)Zy03F}P)E9?C)5ndGDJ8A7R)aRO>fY5H@rNwblQ+% z)T!_R&Kl9c@{mCQw5=Bpy4o?csPoTYaR|Pf9$XqC^>x(*CJk^I;1F1B$V_(G;p%Fi zduj5poMe^k~{QWhUS)VhDL#Me!-cc9q}XcV5{m?K@_f(iKG zHwD`O97CtU3LHyx8uANwWC92s>nCEuhZjVPz(|2U%h?qmp^FGuPHaZB9^B$6Khr%m!%CA^fh&t*Wy<~^AWE!DJe=F-c>%QCvJq#7`3V+ zwz4E`r~`d{aJWwEqmPlx9BT62gOg^QiBa+Rg=;I4!`JBpmku0OxVJX&2(psGJO>{M2+T)GhNXdu5tEC4naVPbt_$+Il89Ky(LxK1K?+wrxdO24 zxv|gyQ9~9JnM`iVO)~J(gP{jH7zia|2t|PLhpW2?U6=D|GWpiA;_)3}5W!Up))gge zVSqmv4@VH;1mRCy6eamW$HLEW0ozE=$Zj5Xq+Ophpr*<<#c#^t(YqJeqI)12on17R zp1!B%SbN~bQ3H~6ZLbe+$e7PV36Zn#r)c1^S}a_;OjWI_c0;krsr;Of5%{9;)CjyP zs2tmuRGgLJa~~rn9c|MDrcd}4e_t6=9Hj|@@SD7_kx2P#S8;{Vaj&P&TRgs9Gq7yl zedJkd>L?qiiCQ)SU%TItSMK02HZ)KK#)*1r$?`DcTzvul7xKzB_nKnLqqU+C)y)QU zqND^THr!N&s5c7i!yv=IU+)I^r01#00C^Q#HgRB{&9EOxLgaBzN z!BYj_k>v-DEEqk`HsWhE!BtjNV(?kfWsI?C_2k}Barr?~swHgV&K<2~sro#Dpr-em zL&4rIc2bGQ%G9>q-4_F0T>?if*?zBw5ei$EEvu-vS}S zF9#5ATLI~Zv&0dKfgm@imCP9<`g?3$FI`2IH|%3oU0J^ zAy;yq7Edlb2xtY|<<=6oPQYux%fb2U02GJ>XFd~Hki-lbi&n#`cm)%g>4R1X-wHq2Eh?+L7T7K#glerwLC zSxje6R4|d<-z`TDEB01zLTzQ$!E-i$ksp@ILrH0WtlM$m%&O&|z69Z3jYn&@#OYXX zc}js4IW>MXd(kIVZoLLWuVvY&l`c_B+%?{loyC%dLoKwT@wF+g1qmXBi1Cc>wnPbq zs?{;YCo-B2)yX8zo$e%d8gxyfw+BH?WjWx3E`+%0S8U#~`3g{l$qKeIbk0bpBjg7w zmRq)j+<^9oF%FDv{T4XLl^~p-n-I8=`vfssBoGG%nv6J^DzZsD`swlMWbqTu0P_VK z0L;?kOW+FbVrvvVOcF~f8u#xs+$Wf|$KO3-t6XLVxVT6Fw{>P=iXU-ZE0ZzNq&wW# z+|+ZQc-oH)GY6Z>WmEUI+7}wi=b4J8d}N$HENZBI+o8#9L3rgHQ%URDF^R2_dC~?` zN|32!m*9;Vc=?zmWwKnSizPpRRS7^E{#N#90Tc+Fr zB@ezys_H!Cu&XfMKR3A2EiVcUs&81^P*06+KPlLkm#9k%9_LgX*^n^`ua;*z1@fBG z+*p2)OPWj-`{G#3Zqtx}yqYwRu(z4BYBwL3pd5*li`OY$S3q=OukG=UiuC5lVwdJn z>eLBcfgxvENNH1Rv2k8`aFPAg!lV8p1`eBUtZ1Gz)HtIuJl}B&a!wpIKP z@H$0dG_p&ruFp~%kJ_GacMeb+3&e6a%_-ioNbH$i>6GcD=SkeByYu-W&Y23OfoiWx zYK<&VR)wVcCl&4z9hzYYsbAYTZt&p7-ny^?MO|=)Z$jQa(b4vrLhrD*m@}@Xg6%v zww5<1RMnk&&9N?N2*kxN4R#+r$~)RrUVgPXx>>vq8Qbyt8{$#PlfEu5H^umtjd2TF z`rfMI_;I4G5oiDAR3F*maRprncieyHk{z&Qp1Kd=; zO247=@y?&Nj7pxk`dbv9hU}7dF8-PtW6rFPS7`D1P|Ej(WG`eenh&i(iIz<~@Mm}6 zk23ph33;GLfZUDvI%N>jN|f-fF+p6XgcTw34iE`}@FRKGd4d^;yc_tC=_1j>5W_oM z0h%&ozT}0zYa1)Ww?1_}%;YeK-7erCmD$>-xZQ&fFNkgX@yE8<1t`7ewxX{!b3(bPvFD|F zQ(0?z>t*?!9+bW)uI+~(+Ts@B!##K8m*ML&Q~gUljiz!!Gaz_XvvUC3d8o~B$b1IEc z`Jw&hx8EZ1O|(s9FH!_bmg7_F@hvxdxSED&1*i2WdbvdDFftW?9Az}Ur6jY*~iwWgnH6mVpv8jw`A zZ0XxaJP!vpR9?NBu-P_Uur>DT)yk&8!>S{1Yf)xjA3mgg`-tjrU=y4WyH${GyEy?) zXb3#)dE{*!K79EyN~g3bV}t76m!YI~^Zk-#eSOPH?wi~3aoPKIL1R;@GiJ=ltcEk{ z&q(px9p-z(S6sflV)#9C2a1=TsV8S-&X|$WZ!;o3Pabg1fne>5fmp6GKnI;dETZ1N zCg1`P5N`s`p@Id(yF=~VRlWy&eX1Sg8>vlL%M}d8$LGp$cx2C z3uwwu!bpT(R2n5Wx;R8>J$Q*JzFJ)7G!VTl;5*U`a|c)0xuds&s5G6I5Kay#9JD+_ zF!%5v%R>h{c)qhyfwY6-?L2U_a}at<<$zM$1gKjPY+1-XE-lSKA)e6aDl)m+F&?(b zDZUoRv^|3k&$esXQV<|vWKbyV9!?tQ0#;*&M`T{B&5n#e4c1wL6{iEKE7m3(YCORB zgTWD2EEhTi<3d0j`WG?b>rihGEOqdY>es3H)?alnhOiu9R5?k88&R+m5JSjuTpNg1 zhJ?oMi3{(Ys3usSnfV4NmtPyDZ{m zpFnKTp>_HPL3*?-2#u;-G>jY42lht`5b|OH>X%5MFdo3B;Udm`>5AjKRMM>X$TBZ;B>tCT=xkywwVjBz8#6;K5^yVgW;8+_G_1n_>uj zR~%J6ZpD~!S;7J9@!Rt9`Qz&5jgq1G^=i+Qu_ITGPwd{9SihpGHp|s*6H1g;%&)DT zUm?XOHhFjssu{VmF@9q=G4S-yHSu%XgEvzHv7k{PU*`gsCN6m*>OwXGF@|vF9vzrz zVKIUBtKnkCpjRyEFIW*kSb-(TX>wr5?Y9m=XJuBakO}l+fa(Wtw}Q*c^d;VWVj)t} zJT}DWVHDc_x^-3De}lf9Y=RE3v# zosuCY9Oq4J+B$Lk{@AogVVr7^$b3A)7o04;GLcLaO(Ir3?81?a{FsLMIU?Vkuj`iM zXj=~)5}p>}n5>F+q;zZ+Jg&gW$1x`2>VPm0ek7K5YwSGCU%2I(LQsgfM?=Mp-!iEs zKYxPxuupiT+93r6;tPpXn>Hv(Rmk#Pv9}@H-B!~h#+OYnYF0bFJB;aYA{T++qlE-b zPRG^Je6Y*H-p0v7fG`FGL&yk>1O0)|N|qG3;>ZMqDH+7(S#=RYO0<%gli_-nOaFA@ zxlfcQ;YBhua!~vjjnwaoAB>jsHjM+F9e63PGHC=d%J7Op-h@npA{N!j@cB5gCS!zF z5O^stlgB7a3@L&*zgyucK`DuNy9_nPIftZEr^X2)f^H3L%<>RLq7W$_>!ugyr6@f` z60}WfpwgSvtLVDr2TLvvV4HEfQ18S0UeP4xVoL98Q=?Y#9A^T$)&>{UAV%2LBE(qxtc!jqXzXa}sWCi+s5)C-O}^t79yh zJ>}NHPjS?&5hG^K95G@R{q?IaC^i)5G0e{SN&hGfOHn(IHli5;8O<{v#E+N-r_GvW z1Nfm2|9XBRo57IhFv!5)={XaAmRldIF_)m~*ka48FxVGy3 zDPE_w({_1`#!*=YLuRJIkoCWGg`Tr_Z1K?D4WY3u#X~n%Hxvz>;!$btHe|s~va-ln zbA6>QLe3eXK^g44;2BlZPYx@s20lt`7yULM>f%ED@(U`j8<_WL(J!%&F=7Y6N z&Hcpw!DO&`6i)f;f#iADd9JXY9{Eab?11Pg+K$I_1vto0P*@FkW6q(FDtrzA|C6YX zAtn(HsbdiT5rhoofV&%l(k-CakVB}Ky%*&nP;Uv{Y{o~ZR{)R40rnM`Ga8~?z*E{C5^F9yxL`+<>f4 zo7=FSz^P~e@9phHi{QZeJ>_8io~&9ZO<96=ke{r-(Yn8Wqji>8>g1!}C>QEJ^c^BK z$lm6~WgaWR1|v6kha0Hu-S6Np_d-xeg7o3ESQ9hz?SytkePhw@XWI%?k_>2%!<wG86@VDD`96>9ZGTax$2CNAQEa7fPp~+PbyhcCR+1WpwJcz5k~nBYP?dY9f6h z?brqu3T}mIAZ48kt}~G)@fbY-4G@n9IrJ5i#&DKfHgM0&pWEB_Ker&^Kvgh4|DnW> zp=ZyUugM=Y{ow1K<>Lgt=|!TgjceAd4bSQ60xa~h$%96{SubOo0vwS9Gz9j zFhXXm+F&#()O;SRAyx&z;Hvg){u+PrVOK?BZGve~OTy%B*(}~FlfSiM->g4T!`2d1 zt1ZFD-|=K*jb+UDmULW$-#WQt-l!#IQwC2-+4TU0x}nBdSLb{&^`hdIQA=GtZ~ED2 zYvq;K={~jxVswbB6Tlc~KBT^JJ2(`bCQs9h612Z?IX>Ro zd%L%n=^UOL=AT_zQ!^@CJFsBE9M$6R0DF?>)h#w$MAH*4npJ~W`luy}0ygg}*wS}?izIKF-nDs8%` zm1mL1x!N$iF}sv$hX_HN7~IGEjNK3GsEEXDBFH`mZ#)@$Eoavy(m9c_Y`l~@Yak|2 z3Yg)cQ=v{Y(e|u76>?`dBQe^PpI=-yaXCL5e|Glm zInha;B_K`M?GfZ3XpuKfPM@4JczW);Yt;AF6ojw$W$fItla@?uhrpT0oU)ybDe*|z z`S!GzEdLf}$K|mObNj;ZagoRD{Rbv>6$KUXJ&e_hk!x3W*~;?J;c3Owl3WtYs?5g@ zOm>->UlKletCPQ5(17}6BRYfv4z|BIBx|%lV0UF7I_y7j%1|h!M{q}Z{O_2T0hM70 z842+8d2v(-am~H{T`ooG+r?-JPe+V1u`O zHDras-dmpO**Mh6D}3mESKfrzYfG9aui)_W*Ym0lE-so262j={@xcQjzc_1lIU^ht z^x_RwwA@AHKXg6g5t@7`o0-Tf9o#S@Y{Xj6D>L=dqJ{zCQ3@HmzeT7{F0|5F2wp(X zfZFE}AR!amXq7wyFrno8*o1(ByIge(e})2Xsc-`X5vD@i+4qrtVb~5(eAi;TFuzFj zJ)uJ|#XpWRY{B)Ju^6l$;%Zi4}#x&k%MKq`}op*Dv^EK}PQK(dbR#tqzuH^9@s1A}fAX5dwY_LAo&z%^&B*C4n? zDiPCa8|o~mwS6~kfUaBxPa}B}8;}`Z8*m<66OWfst?UEvY}z0-fb1cv719fSg0LA4 zRM}WYAEXbOvz|T=&Vv8pyr1wDqyWK2L#3Lt$eD1S_F)Ho7vyxfAIsg3zKdHdZ%~8K zV$0zf)EVlG1(ckp&a>W+zH4~{w@~Q-gu57^I!xqLIIjXPV{D&nA7g77N7_fNgxHb4 z+V{kH*84HG_$SLaB*#BeE1zgz9bQ7I0ZWt*jod1V$`f8WAW!&0EnKG6} z>}BY*^S1cGVlVOF_-)SU^s-2{7>6l(V{@FGa$@S{aElVuH4d=} z@)jZE0P;$?m|-Pk-t(wm;DHd&^vna%nZKI!hck{Ok3%2+^*Hn)JZ>3|eB36&EB?YP zfe22Zb~RC`$X`%dyp0kKj}Ns(AfZGLVUr&d0G6k)Lps*PME73V6+dM1v!EhoV^%Ev zuQFkJxW%i8lW(7VR>(8YQinrmH1T|ZgNtw*s|w78t?_L53bhQ{!F&Gs<}dO5bTl-! z^h5l`x#Vftdb@OedqVHXDEvhzb?g{rPb^JdkeQf0 zbnB04!}rczI%jg^kc5zsJYf_b%o|Pk-(Q$K_Mi@Ho@qHKp&F!66Qd_6mqxHc#3CKk zM|gf-r*FxIK*4U4V-32OAQ^BGzlL(3ZI&gwloncejpH*#bXFGY7(Bleee%rMkqpGY zXv!Aq)xZV{wS|c&Nn!(tDTIbehrj^XU?ecGWFP7uStrBuEi=D)^RsOglO+}TZx#DH zFdn&o9M<@UMptAUJQ)%k*Pc2to zsvO{u)tFS4+_CVfvGe1k%fDIW7DZt-Ux%9XmF4_~4oo)0dUhU7ELSh|Udmpr;no`)1W;l;1O6hQ10Eq+})yju;gY zvgH82^wqN6P@wJGx~y-yo*7?=1Ak(CZ2;#~r=blXnyYDwj4Ch^NH}=DRhAu=3$X!S z;hCNgpS<|PEfY)BLYc~c=d&%^EXMU+5fJeEubrKF>Z@lzKtpYqCwK;lwg!do$u@E;%l6F+RLL0Q+%Hct&6K6YE( zy@PGD&rW={ah4?=OTw#PY)Oecu;^&@&^MRorktWaZY>P(is>0%iw&vc_BVFa?s|4z zkc!36wAc#8LUacc1tbX+2uqkK*;a%IA|3)W6np($n}^nZwD;Ugv+JhOO@^u731d@7 z7F502wfqlH{qXrH=-D>om%mul`{iqMkBr4zD+2sQsZNm86ImW*cpw4c8uMD^} zMgr=`F(Bh3Mrv(1@Fu?Ee}N0bt}`d#dF$jWHvHTeynb%@*wZhrlB`F0Rb8#aZvM9p ztlC+YpYryIH(NY~8zi1Jog+@97?YO_nciQxaEWlxSXphxpb#;_vX z@HZ^r`9>a2z?c#7CrdxrBXOXTwtve!Hgx74%nRrRga+6r_Ae#)mm?t-^goR%VA#NN z1ChjJB!38R0O<(=_+WeB%1$c7!5$k#Q2Ib5_#aw~O&0uG^Q@2dPH#kkb<>YryftoF zNK8XSb-B`1wS0WX?g{^`E1er(PA}T>+EBK5>%zR`=!}Ki^4TI3pO)^S=}PqW%)w<5 znSREsDZ^@uo?VLpP?7XM_LS`5-d4`?*vjWc!#2W+XQ1;xx0gIeJU9rd^n5omS&}?_ z*-p{4XrgpLl1 z%J$YUd!|s+m%)Gkty9#s7qD#F;lrJO{@Ho>!BMh3d3)!XN1@UJRD-*V@#?2^4aoU= zN|quLI}cPZ*f0N1{hIsT5xa-<&p$ug3bSz|eSX7I%kYgbc2DYE>Syn-1}&45B@_k_ zz=>w?w|d?=%Y~mx54P9g28DW&%;`;34ah%8D`r45nCso!RN5h%l zc0biuQhE3377+ag)EQ#cR~n4I8jvoDX2W@(tai}n+hUGB^y_=O=1dnKTwR$W8$1$! zzIx&4X4E^n@=I#Oh#Su~$?S0%jXaUNW~bNd(t|JKPk)%R4$T@f9i@5di1*`3It8!H zljEa>%@=AxKi>k&dGkqXwB_a<^zhlIZQgB8p|`_*pOmFFAWJ{P1HnybwCXFw0u1&Q zPGbS&bU7c&cz|*EQ3wMB4E;?5Ze2S$zX_k5IPYlRqRD8~KbHJC8h<-+O|$dV*Jn&x zUl;jovn=C37{(UuUOqT3t#J9SQg-+ouasuzkEBjC<`+*&NzJw_Dje2W-kBQ_kOOUh zl0FHd>{FwHfJz`#6qFVr0fU4EV}KRYudEPfz~40Y8qPZO+j~1_&k*llJ1SM02KLCc zi@u^tMtxf|s_)sh;$4*BOT6_&?%JK|*JX!#Axt7T@YAZ9PmigRiw}CbWl!lRgohCY z3Tg-g8$)6*38+$%=NpGVi;WwGqf269O3-PGr1LPN^~tBGnKPLV&h7Y&v}gX;Y>GGM zP?3aN(2<+mxu}pI#26vo!Un=C0kgsg+0qc- zZCPtM=y=)ULfyRVNM%u{=6=sZC9b7zsMwaXpI6x=@#EQa;y>b2!Qv4}7NGqb)SL|f zQame4Hjhi|G%sukO|PF!ceE6a>&{0vdaCNS<<#jScGoxLt!*x|^pSBu_WW3;lk|;@ zE7Xx;yY63SRp=N_p|&TWbvPAU<4f}RiQ(Mx~T27_MrlrNgt;6nW{`|xHE)IKO2X%ZH!F~KE5AGx4;Xmm8h zA~HPFqrLTJw8Ho|&=60jUG8Th|hTBZK?Z?JCu zQdl%S$R?Fe7-aL1@a!s^GyF*AZJ=^OeLQ~TJv~)w>EX%me}j$#@iD|#0e{EhHE{oD z&u75;`1lI*R-E+L6(AXL?STYEz14?rNAvafBEj!bMV+!lQ>UnRxplIOpT=C_^2mY8 zz)LBCTG<4@4~qFRQ!Jz385-wRP!zYH`UiE+5`qfLk`_!rKdF0-x?KQ#MWz7y@Z>%C zP&=NK3Ig9>|2<|Oj4duu$CjR;Hgfkk?;F;uMn5+%Oeo*+_#U{AUclZZqd?*ifKE{z zK#TAwwdE>v9_h@@=JD2NE#uu_%n+^wkS1ziE&q?T?*NRd%Ko1F%FJXYnM@|hBq6kr zOokUqAPI?-gc8Wok)YBP6%awB2#TU82q;p5pkhHqL`212U=amTQFO(EE26NjqM~a7 zD?&2!F5mCm_ok+?`~SpbN@ngo?Vfw?xu+DPY6>~^@lUP^9+EZhDkQxAzIX23m$qB` zn)K7_U-N^lQ+?M}ZJkjp=r_)~Of7^yL!6Qi6X74SXXz0S6Lc$X(NTX_|Lqt(MRKWS z93nTW5p90AzD~Xbm9@4@eI&!jJ=s!ktm4R6m3of!B~DiQ&Nh0gbX;nsf794d0C^N#Zbnz#t?#iv+1m!)BjW(SvYc+nsE&+de~t}&P8t_P;ZSoN1j@Yhc+SoGoBC9F zn!a^C+sFQ(HAZV-gY}^DCujvJU^&R|AfQkKK_;M-M}os^YL+WKsU22P;MlBH$~jcN zgiTz9?CZX-=m+%A{DRZzhd@H^%=tG=8cKV57$mytTZhMt;E<|D9E{ zlx#8nxvVd9u6#@XTt6UN`APog4Je6otymw%ewYSm#VHYGO#x^+9Uh8tBvyam=kvvH zKXJ@19h4U8H|rfT_dUO#jr;sBEaxxygz`}j{UxoER{r(ykjm{J5DgGx%m&(~DE+Z+ zjqcYu@Dpjcy{A(GLPK+8x_nH{!BbC$6;%RKbIl(W4sJ$D6OVXP{HUh}4B!=~bw72f zl|Dbs-WV|8#^3+aZ#gviV84Tt|JnQCv_tHL$pTWguO_Q@OyZ@)#w*C1h z_&~Oafd|#Nr>GUg23XTGP>={2>iF%IS*{P}Q93S^t;+tjcPCG`_N=xFEJ`n9y&l(( zyP;7sJnTGyWR9BH)w6GFxqEgWU}2wDmd@|seY4R>jbD?4VlNl4-7jHY+Gjqu{-(Y_ zm26ZT085c|NB$}iY@hE&%L`KCZBXh7ZkKeo^|u_LB_|NZob)(uS)Ujn_H)u}h1N*9JGa)_CZEKa4 zW(*1(=BV*nmM4RB_}7!=%N|u>o-$QBHnz`1hdwlE<02l^q?bH5^_yIN!(XfIzp|bv zLGyjaLTOW<&aa%e>buUDu^z8n+1=w@jSj`Tm(JvmvDUZ76IqM-6z{lxfl1`K=iA<5J0#bMXIyl30~x7mW4Wpe-OefJ~K z>cKJRjGMalMqYU*vtFKkFMG9Y==zQ6`~8Ky4$}%8zqj6?Y!cC$BDxqs)@6t`$CQ8q zhdU$)fw6QvpbQAq1VwC=y=cw((+9BZVuknOUBBrv<%Xl$7wk>;g~Hz(e&guA(>ivq zx$o8o3lmtk;iLNYy&~)KM8$Vyw^>sTm0W?qxa^tB&Yl0@U0QnE+ZVSMF#K-)0CtWa z5W(y#!%Z?xL%VY>T}a`GPxL028nQSnh|#bqhsIP4=sNf4hh5L#ImkC`#PH#T6`x(X zJ@d|Y{kM#(Y{9H|t>ve)S=Q}$o~J2QFSRZnlK+kSi!Qw{xWjdUGWgn|clwv3U~WHt z>Nc966~kt{K%DeMj*+;o?N&miL#f2KD2a%qBC3lEn&57o(%?}$mlFI1k*vQBJ$J{L zF%vpnG-rBc|GqtuYF$3joi)Ejw{e~3vfU#)6rEdDG3Dy6uDnjmx^3G-o5#AL#7O{XF2Z5OYS+mOTWUoywm!$ zfiBm;wDs(tGYhLaoL7?AvDY|9mVLmKA#!1#^ZW3phE|PiJGp&oMTe9tR$h?hS=YYz zHyyio{I++eJKUMW?wyd_y&|>!Wo^%`8Y*ha}~r3%gCN3Al} zEyrrhEiJQk<3Kd2eM+%b2?GU=`T$YAfcV=u~D z{^yQMw>`-A?Sql>Wx&(12x3y?0~YB6on9~WRp{*uJ0eH zDOV*;ldn!n>EH}5RSNrSTCUTpob2B}Fh;ITE^s9UP@)62eg$mEH_-ErDo~1BaWN_s zi_kXAi%9SK@7Uhxc>0r$3G&^p^mLbecf!2jOTm{^)-iYjl`ogOQxVm(JYgPxoxh%& zo9l9^J2Nuss$4m0|GHQIq&K9wSy_6GD~IV^#vVNvIPFudEfpQ*5CS`=HHGcht(|iS+cUl_m_v<@8cPNQoYr6P`=x=OvB7-%XZj92AAXw63+lUe^V7R`eZRWq?HWV@o#f8~ zk~XNm*#?k2JA4;ExqCNr?$Y-I0>EKmtQFrReWU&;q8X7ZA-T&$#Z3_aQe5P5+bBGM z^o8_I@23xs**xaX4wH%_&-j};C}%nBN!IF#^*_&Oo94*M;Ya!NPx5b`xL3T!5{sF` z>y{`Ckkk-dk8-}-LvBw}PnbqpIp*-wy|3!r?oLb;dd6OUlE280=45%3vu6B!?-Q)m zlgJ=wW4>Ph1g&YwGWX2K%2DMVGj5v}HR*Umo1oSX+|cCTBaMeZLglEW|L$zr(y9M0 zX)T=W2lj)rg~m(!bn4WHew2rtYT&}GEM>Fm)UpE4DKA$`sOKiB$7kmLjVUCaaVtKFCfgbG>#Mm1w&nrFE zve4M#>J*4#ae3fZ7TQ(msRfVs?xngCTNI$^y<8v<)>M~vR1f}~*}0Y9W@Cv`i<1tU zkH(MH1+r!8nYHRiN&shOQ4viQ^=tt(mWhlrPch0Ep;#=u0w4M6zV-XnmcHshuZ~i( zvn)|^jl=0Ie<0p%?ehhal(z#tlt;6&0^^k~fse2TBV&uoXVGKh+@c~_274CHg6c>9 zx^I0xwWa@Xa0vUCbZJNZ_rx-%{#&QPc(=9R-y!hP-57m5IQD1&cXSxL4SJqup|7|b zk-DwJdL9yCYMlhx^ee){XmvRqy5`Jr>g^p)>5#+ic1Vl#Df(1teeE3w)~-Ephjghk zhd$zzK6kXGk2v&1X}vyGpCa8i^^QBH;z!8fKOuwf8ZroML3scd>${-|HOAspio0|3}vum0(OXsWE9GzY1^YQiX;w-of5;mWWd6!M`;Ye=aBCnKA zz}|&##^6jyT%)m&SNilKpHF%ivb!X-eC$3*lNnX8E8?vG$WJW=ku`w{waQ6o}C8w#Qe0Z@@l=NTwgx9X9hJm&d@Y9U(?d` zTcjJ(%IdyEH2MnZxzfQ~wY?6`>zOk^f_@9E1mO}`B*ysuyVhgNqh^vLy^2H8ZdFWbkEr3`u& z`KGB#O`22YUs%hUgrQH^KKALA1c$WChiCX5Sc`co0pl*?H~wVN__>&_FE|7J%iq#D z^zw69LOt;Vtqk!49H^aW`xS8DOx^$-F#w2}fA#5D85sVEFEAH#`Y`7ayxgbh%Z=Ie z+w?L>`n7oTI+_K(1ZJ^4Ag?lNLlUkoM)n920YFr@H%(-Xtd~NcYwUZ{T#g0XL(wT+uVcEPSi=aLMAq(*meu>;C zxQA`z4`s=#<<(hP!8yS>S@K8Hue!Thhm#2Ui~ni!tB;#^Ex4yev3EKtz&J*wcVR9e zUKr)y;gX^A6>7g{cx`#Igbpqqo4;MJdHkUlr9sJ=naLR?FY?%c4_22b}8O_ zkf$9ufHIvwA2=Wl&q&TH+sU^mTidnkaWxya(>5qML%hev8Sn8e;=RM{E8h0-VcwQ~ zCFIh49se=0WFzyFLG{W-sm zzo*#-j;tMTeYAEwWPBFB+avs4l9HY*1*Izy%}U?x!RL!F_GimRUdK0Sn)T6*nU zPW{oH@4&g%ZFAhraAS-2F|IsayuVnyznIo;JOGJ}SJopLh2*`R#3Y&ugDMCn5oqSzKKRx zT6{S}%opr|`PgUjy}jmk?G$*sq{oGzAMj^~flphL2k;+?tT7RVOvfy8fn_m~$iNP# zI`SU4&g-&TUEb>+$aAD-j?=2Dv~ijIB~PnGk1rbW!()&AFal3nc@i>4k6q7i<&W}P z){h+xuYkcT_ETssqhYSFbU{7L0KyqZFSxi+oA0OiIYM(wRWWn0>)CjA1I>|O!XW0V z;BQzJ^&hB#A!G|Y5<5@i5gZclgdXWW9`aL9!&w!-btpFfnrk#|cyTed_G@rduN-Ri zXLlaUvi_dcEyd$W$?EoZmeqM|wmiI`MY{kjV`X#o%(@3)i0l|Me*Boafp|7~W_92~ z{AGT-76o3H$G?JE3aYcR3aZaoR;09d0c_AH2JVJ-3>-x>3~N2|2-%>$6k=#RQbdSV z0et-X2z>l|z}FZqtU^F^#)OCoh`hi>nGel#Vf9RPvd>pHkZ@6V;MoH+tCh|8%d&QG zqyz3V=U67m-zb`>YYU$Q_3jd0IWJ-uMV5sKQ!&KJ+yc#ypvD`dPyU7m4^b$>~fQJiF^+`-Fa9;D% zmMuShygqM)=5;v|3YMm&EiFiJxV&0*-Y&F?I|jP8vP@Fm3BgA)9S=ljCNe=N%Rz`e z$pg7m+FCM*oXR`#fLxpBI>vYZ^wXAAYg~y1j&5&{2RyhpUdFsh?G~Wo^0qi&M&zyk zm;k-TS&*FAXBf+V=N*>KgS+yoaU(JJ%v|RXH48ZmWr!v2i@JrHwczR}QHMygl-u=Aw2_KUM`XE2i zPRdTSoj1IA`zVjKt2Ka$yF{`0fMS_{oh7s|rt97AhpgW@>y#*^}|&VGNw z$I(QqPZ>>%rbNuV{TiINc@o6(ydF^BHA$QnO@rGs+2T+E|E{)pz`yx)rX)*5RHiKz znYcU-H_>bTv8Io_5Y32NJvgtFxv}>e+J=NGjk+1svCl zcq`L-C4F967BXCM|0y^sDol#?qL7QyImDIsH-7&vG4ZJ@{C@kdH1R1np50yaV20Yk zX`RVBJlj%pNma?JBl9+XPog*Ph&j2Yl^o0?;6D1JyVZpN4BES=SW=ziK$CMU28XeL zMZF~f4pE5er-6ys&c%LXXdDoTU=u}`2r?TW7Q`xb4t2TS{poLQZ6)c;I-kC)!}4;c zz4e&;u3qPMw<%|7E85sf(r)W$yRyqI6;50CHrlecT8_W|(o?4|z5e=3?e0pff-_G|6$QWww{_GqgZ$f1% z0hKBL5ceF&zHqb)#}}HD3eU5ssw*5|rthr{Gni>E2j`IN^+U4~GYjOBoAjA(_XfT> z$>T}ln?sKq-7d|so8Ds=vJ0ahpOY3ZERhQ`9oa+fhtc3n9=)zd3%||2X1Z%Ne>*Xe z+RxDM)h;b9VQXR{f1C9P{oXMB4m)b|RjeCBJ(aLu*j8e%8YOU|UfifpPfD)LQ%2#E zSm&Xa4LR)dsk8w$GGX6l6vw`#1;5hG^_dwCkJY86+j@Qb<1H6WK-VPWg?<@)N|$1{ zeh8<*`;YasrFTk5v)l7`-F7Vcg}b#|s&ZK;{@hg?m?~!~=)SnA*UVXWx{J&g{2Gk0 z65DhQ{8V$dFh?6il1S~^-0@}4m=|givf!g|zVxhd&Nal2v@ec=VqKc<<(ycQ|62;Y zt7(Td?U3JpNIa3sq7naJs1Qqwv!MudfW>251>Ih1o-B}=OXV+{-uQ^^t&k5+`ybBd z_#us8TjkSVflF_9V@g4SCqx>6!#Yy=eR_X=GOa`GhkO10y^Se|w|&01At`&qDgyh_ z)s|Gid_62n+^WXu2orpyP*P=k=a9Q$a(deFKGHKb4~g6`d;chV@zH@2Zhp%UI#P1Oe{2{9pIRn*?9 zj{-iUjQ#cewe# zX*>Rg{000O-EePG>NET@bOTNyI>u>DH;;9~{RY#jO_IBag)`++%rPR(X0U)}+n{mU%mRJQ*EtJj zWKAk|W=O4Ck6I_gB_fqTH|@vu3igR8_?T5~=l2R<3SHS7u|rh3l@jr&;wzjmrYV!VABgO7f|}g&a0A)wH_y|w zoi}URk{$2@Erw-~-FX~Ke|d!A0ou-57#<+G@NWU!GAqZIzFdnP%bLG)X&?=+xBsnB z7M`Emn6yARepY(?aeg20*U-?!S^=kdQ(!p$#3BzlenRdZaXvQuJ>P9N{ZXYa^Pf78 z%LdSk;keqdMAL5GscG|W2GEADXXP2g`NX8#;C%8H0BB`9JUVGhcUp0QS$p{9rOI)< z9t@zdRztQ=f(3a$bkY+{DpfUffz5t>4J2qb;EJ=UG%a4Gxd1oa zvzj&{^+ZJISS+RfE1L0-V5xQS>2LeO&-{F1qts&?Lex783P#{0`ccJ?_&ugs3N}tl zJ`sR#h@)k2gP(r{1=Gc^za4sZmQ*Etz;lARv+YUP-vdzX_UZ;;j;>f4+u zZaTmhL=w_7g&Kpve<3u0S<5HdXfLuo*@Tf^>i3sM;~j652JiB};q$%W=L7vd{$1!i z+@kW*yYIfVvPHzC_th7;7$ZJT`Wg~NO}n0dU>>FCU9tY+i`QQ!Y5EZolbjeqj5)SISumI3L*Qrn;N(>QKXIQU_9ttV+o~Xz5BEFhS4R6O zUVjBz(AmzAt#ccYtI%OCiY(-m6ds%?;Rpq0#Y!C1PQ1+M3E0JUM95KJ0N6n6uBW0! zsiA|Naej%AqduP-IMWF0D}pZ~!s@Sm^8{x;G=sKzxNG=~*AVvm#PRKLQ}|=o#Q#$F zv!lS-(xEYGMDzcW2Ivu|S8|#mNb|?srgTW~WK)EZozWzT*Dv)HYK+!sN>E}{NX&~k zd6{_@^!cyk=Kn@5E^FGWO%d!>7_|ETPP4NWtr(KUyok`xJ{Nn}g0rXJe?`WImtXzu z&OWz^{fl=H>uym~1YIOP!VdmlX?nJlZD7$hLSNyV%QHN)lnsOb4J#(fK}}vd=p=Hs zg&k;ha4D%;#6KNY$Ad$jF>Iz`zjRp1V%sqH4e|+MUb6L?Qw=bN{dI?$qOYov9oN)a zjhPow#N>%K@y!j};te4$*@~MX#j((y{N63WF@C@NNQ5dqQO+{#!mm%Fu*v=_ygCtT z!HXYx5h0zi{}A2ih6HpYzC^sIxy_IIs2O7Q}DN@l42;c^83X!_r?TE72U)T152T*RbnS+pq4~aN4^UNWOTR0m3EUkIl zN{sMltU?Ifgb1O<(W_gS9{At`&7OgX9;Q#HfT~rHWFp$H8IlMeF(a_arL(MYy3EJ1 zlmm{lygJg4;j=`akS|RZJ{?Si)(#?P2O=j-ecY@Y%GUIu#oVb2BJn?BFVO?b$<9=+ zjk!vy!h8$s-HeAlVzJjr&>ai-8@8qJ>0k|G4T$P+#iGXs%xuxplaj$i&I4T>peA2g zX)g7WAisdPc0e3@x=4cX+LmTkF695Z>TileOMGdaw-o_;E+y<@=a8(9OVK zm=^wvIy3wiklC`}Oe=K~Xik10D!UyDsWPfVHcNG{qEGqr)mHlrG2oS>?c;sh0#7sQfOE-^_uMB5*cLXfjGmYTu+ zG1RO_KNN4ruF{-1Qgjk>_-IiR#&v1b!l7`OsAY!%Y)d=39Kk)oJq}k#hulY>(x_;zm)1ux z6bmZ6)buHG9|u1{17IKwDEE=p#}GPNY^O-;V~~$plKK>UA4o^^oPl$!%tY`Pm!lMO zO6j)IpO{wQ9|6B{T&4A48bvEZX?^I+AO;2t?r927eM$^{&H`uQSZ-8B zMq*g;Ip8l|H;uDCC4ytD#5ROVBRK0*Vt5&)M5Xm1I^aMbv66t}{KiGX?q05WcGsQp<`AuTMg5iPZ`hjd9qV zsP(g0^FgQK!onZLmKa+5VAC4@!Dz)B;&&WY(Y%jUd60ux3PqVfz?g(1Ee^FPh-~&a zA_>^T6pA;DLL>|$7ZIpIQJd=}J@kz+6pEIyw!mB5WyEYa^%>cy>@~@@M&vQhz>DP& zvASs)wIgB;x%#P5E3g?ZKu$xfgw|OQ7W`%i9=)E`4dK<=Byp{8My)}JSk&6`h1OOq ztxcU0Cu3wGHf}LM@t_u9Sn-6J(1?uHzS78nK_cNuwGIG9Oa&Fkn|d1~+qe{>D^(h>ye- zr+>%j>(!3UT%Ge#e-6YIaL0-*B%6SZS6R=MW)W;>6MH~K_6^4ymEKhzXeRF9`q4Y| z&v9e;EYqgGv9X!31NQWmijJC=Kk!e2%Q8)Qz@!;UK9b!i;>L}*S|j#A1dfw=kMLtq z%7{lpt?*n{bJkNyt#0E#HWfMn6eK^QCPwl@Q{OOY76n_r9E#94q9DLLcpi*12hR8S zhdki?EGE1UR0mC7eAXP2W-UWSm?pv|-k8cX_AJUyd=Azdu)W1EmwQ@s5aVL8c-)fc zQ)Yx_;2=cC3l%XbAx{IUzl(A{*wv-Mza4+yomx5Rru<>Uw_K2lKJ6`Ao?j@jP5j5( zTv~FHI)_{JTHg9`=Js|i$j(NW7wfb~M~v`&I64=V?T#TmVCahE_Dxk~GF6ioYv&Y%jl8x1Ec6LZk?l^(JgxrK|z9x6{hXyUsN5}Ss@+!qQ z3tgG-M~Vds6yOZ&r*mPL8~};bQfXdW#Esj&h#$?@*tF931RP2YO#pBWLNDkM4F`k) zL_i0qJbFSCXAn?y&8Ssi%s zwILyTvR}t-xK!bnKW$K;-U$mF&xNy%_yzbFGx=qBj%m%G4aexpnlLFB9zPT^0$p1n zujjwur2e|^l%}2Z`%fa0+t)l_p9_E1cS`X1@R=pnd({2HON-X0e)2zcOEc>i!2y+v zED1zTQ4=$f{9^FlW4(uW)#rUHbvnPSWs3FkN4BW>A5O~HFIBOJ=ai2sbZE&bx4$U; zi@(N)AI+Hbe!l$Z!&7W2EziN?e23l4S|2zx_u^uwtAqPCK0O`|HI4j8R+`dWZNf2{ z4)Dr^ytM;dhPY)|?>WDd^sPRRcYX2plw>Wbv-_SQn?_*(X#iFANhVZpV?IpAE!Tu4?n>QU>M!mdF+ZbKZSwcKDF*CHeX6)^K5Kd z4MlsGFE~Gs-+P>&=F4K?Oc$|F0!#n}XBRO@G$^#lB^EzzGKQU2TGmaW4F9$k^#mU+ zpd8EYXTBTC1W;A?qVC+tYQF!+CA|%>OK;>sz7C}U?NnS5)kz7hC!}-P7TeU@MFjea zv7ONXt@b#Zns@$!w0wfRW*W2c75bli8JjQYIrmHvYFpfkn~34iW@oeO0D)BOoD}gA z**gXKO%~8TC1UlgbDPQI^B)Gu75Fi;e z5$aT20m4rSj+qg~8Su2jVh~EKS<^s00$gD}^g#4sFZ*saI*5ehoqYUJ1m!#iJ9I1}2FCm3h0V+9+UPG}0Mco(u%D$| z!gg&C_OlX1AEI?bQL!R=SMJo1*hNM9LhQb&2fDDQjr-Kd=~zT6X|&~VHHv{UJ;2%r}u#N4z+VjYKAsx4y$ZbJSemw)sO*>*Aa zlqKeBiDb4>8ZdGfh2Ez~I5OsasDFvHJ-G-rJZjC~=yH8|U57j~)0S^Yes$r(SCjbz z=ACBlXHU3$u6Qk9wy9<&9Gh%>giR!zwPdyH?!~FWM<>)Ivp&fl{TB58znFL?aT6)WC+d_h=0EZmdN z^6#29?JoLhHq?97&HFk=0>AYil3(Sg-h7iKyqYX!gf&;keTxD=8w1`YWSwFkCy0J~ zh zBn!f{va-%`WPok3U9sivU0PA8{`FNKTTzzN=G${?Y6nCIJj8#&=xOdYtN&A)<<=fy zNv+kEd2QBy-5q8V=F8=8D5KQFqSBDKlgkrT5JG2Uh_E6`2?$A6dYhm|L(WnjGG8kB z0@Zqm3o^vc%C7Dv{D^PRCQYbRY*qQYZ17aVo3->D(lG$q%ukh#Ry@_VRXo3Lql*3a1Y*QDp#CXtV~qF{a4B65olj$B<4GFt!php! zhyeREN-PjzLMg!dG5k4RAfz)hu&!FEb;cZ#ldl}L#*Bh)BpXVr^1ypyxbs2_EF^O3 z0SvGIYAmb*zu!8?z!$W_9Gfu5VYBvC%!(p>NYcn^fM`%Pyl9yd08a`{%9Mym%s~;g z0$`~l0+(#)P+UxyAN3_Hh9Ba~(ZhxL5hq$_!;e_mHt?_+{D>B6gDhcw#7eX<7#rn> z0eid*NBE(G{BeK_j-37_P8urX`B8tR5KkhKz)r-i69{c#h$FAX3AMjAlh{FP-;AAV z8Is)k8P_>ob0T?Fk4iFRzTTJgpwTU(nJL04*1RmVl4{+n^5uQv5N>+5B4#}x%5YiGd7 zk$+Pk#)hE5I%&@4F(IlCwLCQ*BK^*Is0}y_I>ywPjI&7yjtG6KqjeN(H!( zN36}GKh+!_4RMd`H-j<_N)X`@&!T#Ipz$?ko-1PXKtoF`UJo?1!gA{A0q`uMk0{@@ zLCdbuwce0Is<+k~(ny~+u-376U(GJCS>#gD0|Q%MNE(gE;Lt0abS!tySsu_3zJ2J@ z2{+z2;Zo!I@;P@(Ro7P{89k@dx#xDu(X?V%<3>Iu`FpNKP2fUwRBg!TBgEctc!Wxf z#mcX_F5)~rVp)2ky*RVr7ZRZq)yarHP@-(oAQae8}+?Y4MK_= z4D?4NGXZy3UR0tJWoF|2QVl@++_kTs8gxTDXKKrtdruAQHpXdBNNLk7#Lr#!!2bJ+ z&zX7e{;J}xq>5?nn`i!9Bg?k=Y-#v?8-|*6bEC2GP((c%gt@sK0=_36=m^Y)|Me_$ z2`K)%L2AcUwK1q2mtPRPvSHwx%{bsk;=xBu$y|O|_y-97(U9x^BL*q||1tajgDsyG zk38zk@-1qO`U$enLzNChuo*=`i%3$0&Oinu*J$9`(A7W1trI;2fi9U9bCQI#;GBcB;_A<)T>s;qfzFeEW2KQFp ziglxtozCPj>x|2`J8%I>=bXQ6CzQLXmIa;A{Vdk=TEC{43B6fC2T_zK2*m4nZlmh~ zZE$WQ=z|&3%ZPpWoBTs&8^D%py>feu3SYfLmFc9jRp%IElItiIMtL^3u#C{WF3>!hb09FYBKr z1t&)pt^+U;{`MQg)%Asi?FeZD(IUgh@(uTEk8-e-rwSXTOd(=zZqD+T)l zZ=*I54@AoV(U`jbL^`gZ*KA&B`?Z|Kx^mLX|!PBY<3f?OWyt)$3{pL z22@`J#x}jKwkoHTud$z7n4fxpQ%glGd%#FpLf+ysdeIiGfzffE{vfp3s#TS7W2)ozRE6Ktla8YvRXu2ArNf!5=X}_Y|^iT2K~w=b)izoVjV~3v(X0J z7J}wYM~hoL&!D=m;Ycuwy(-C<@5k`$!dGAAn-^=w)H>45q{TF~vIbM|2WblaV3&?D zlNsCgE;DM%iK>-vf3x7=v&@m$_w>AL^aLeUe z)$wv?n#<=W?+&o?TZwphZUZd|Bk_V-F2l4?6B-BK8lkF*c7);<87-Kql$#I-K{Z2K ziB)X+K*_>1CW$;#Zh~E;@i|eyr~7<1lx{hVnlsUlf=BHw>*N*kDb%)y ze61Kjq^VwCiW_czz*Aa=YrnZUypGSugxR?o3jbPj__7Z^psA%QnvU<|TQQyWYuQ@B zxAJ`egQG2<(xdjA9%wq7E+8PfOQII~8O$yE+8XB#3VH*tpu45?G>>0$r&`?70V?y& zN3v(BruZX|JvQ;4)%-_(JkLK5VK86d-^h9XyoKD0`nul1tex~RYr}uisYtUVYMQ&l zbGT_M!^MoJTZv?N{2}&k=5fnzKGGch5t@xX%WuahKcYDl&*jh3`0U4De`P-|#H{?; zz@02p`i`aZqdHPPL%3969vAxP(4K@lE-A%~=3{P_VwI$dRA=tjd-i;t>rCadSnsFq zqzd9Y*=EElYHah)R-WKYZsq^6wt9%)*}#|xS_JThlill)-I71WB2|dt#K6^eKE-+i z+(Z0AjAhHi*!)6%$a03wc&PRpmKlMQ>d!mSVa9+{^nIYVFVXeqt1(Qt_vr`fzp>WOuq2uTuu`PG04PwhH$@P^<4T}XVOP<5bGg*CmVM}aD5Bx~d9q>Kd&nma>)wig=2Ov&6XE|Q zWl1bwSoHews(VG8EWlv+85jlHrm6S>rs{TCQ9+9bcOySemJt;7l0|&N? zz|B9{3d)0{!{^0<$TA2-MqRTa81Z>P$bgu9At5>sLT#zB5E>+dMA2CdKS%6_zy)1E zfl$cKH)AIS2h?bG0FktePKdEc%Mcrw&q|2BJz%rJisQ5SsmiJ1`TO%kZ~nJlt9GQ4t$UxgUkkWo;AUZuow{6Q(hw#~1)Ym2p0z8HXBlz-lVSHH!a_wJpQ-}Eo_Df~U3zt#M2 z&}}uJCY4xo$*S~WeTAJ6A%$tEP2r;>{VoIrIigYtYBGnaGl!}*Q_beB32B;Zb+}sd zdsGj)@jB4E9h%F%F;p)akDwj-=F8M-<)&~AQc=j4EEYcz4-JO9Au!sgshT0IF&r|O z*O!LA=IA9|?GK)x-mxGpu}k({KHpN?OZU|}v~&kk)<5m@-M(15+!0K*%MIk@G#*Co*lK?7ntF9$PYWxHAis0Qs#qE z;&Cb+6E#<25QH$lFHfZ&UBZvh!1ptiWeLuXp1>E1o4()DEhkwE(i3&Knuynb$NUH3 z?KY}E*cb(9P+&RO-H=+3grSrB#GS#^inJENm$M2druq}?*NzRM+D6v*%WnNS6*Vh@ zW3RO*_*2^t&(11cxJXWsra8JM@k?9ydnbA|rDF1pl9rh`=d~Yy+doTV%+>r{APk+NvBc)!Jq{j34(iG`1s@J*AoOA7YtJLt9EZA8c*E=6vD4|Y9_MbdDTdq(RhpA2CL z6W*i%Fxsne=?*6c9=()n=ezl|S_-y#H_CE(}BsD&yjgm<9LQnIC%fR{pR;X069eg@Op;er-83T9$x;uIctnpw zC#88ZSdJB{Nxv^zP7{)yE}N}S|4oxU4y$5M)3Ou6)+jMGWn5{WE9lJmKSfH+`WazlL%RTNL5(cWY&LoSCpc@VyH($)NubD zPx2#Uq}4@)=Q!+(waS;q+GNPNL-22Sv7uO1dK#7}_5dK0Vg{|3mXV5VMcb#6;cFLK znPsKe1&T_E04jEHmY=8oPV`Pqb|ojtC}ACvC687)DxttL+|X$s5)hGjm0O-CrghR)`t@Zyp@dyDX#a5DawtCr?LWDNoUUtc@L zhHiN3$%2GYmCzl;j$!<$&9BHwz}rO}ffH`RqnDW+S-in&C5{Z(RgCVVR}S&;MNbKC zbd_Hz=#*yYutjTy4lC?()#L;vImwBBqlRz*t<;ckD5|N$gmARpvPvkjXr2mO4a6wB z)oNfwa$4-OD!`P?k8$sj z4o!qiN`$qjNeMYECFnHO<%b@JO|mzFNgBuiDaR72PX=q>{+s%4StX?3Sf?SrhSsUo zW*`Md=K0kkp{fMq+A0wstvj;vN29gcyqFtO89D6UH_DobHrMLii3QvM3GNvx29 zt1;5e+CWnZg+kKJ7nO7s+Jxmr8R#)0YL{%LVvCnh%!%y$xC*~nK!kG3qt z7DGiLW6?%ZNm>XQlrSA3xF<)i<8h4EbaV??L4_pjo8^Lb#|c2>)-+t_0pJfh1s!bcyit=pF_89#nm@T*2ZXO*MpjU790G#^zD2hf>63>?aF3hRp7Roq@; z4-)FB#K;rOG23w>yzXqMt^_+=Q_|jwgzj}3zy)ytqo%HNQZBp9wzPdw)t9#?g zBI#JCv&O~5!DHg2@BA-tflunpT-zU5hh9X$;)aO9nl&0D8oRw{j96ThhtsYthoPY& zE{|=0l;0g`dw5TI`8}bghj*9r_xSCQ_S@YG*B9&TDtAC~v$+)VT(7BNfL+8l2lWfs zMS%c+Bw8ofjoS`0i`i|L+!lWdy~;=-4G_*%eoPv{F65g7{006fyD%V@{gWcu_X74< z-7Yql1=t*Sz@q#Dpj5s(MI{|;u6f{0KAvn-`&e?Yq-iERSaQn1%zBrFu~U~IH+s2# zf-k3x=sj4{8vlrX$3a2)&?)RX@zG`XqYUhaK3}k_@feG9GU6sfncL{*2uM(GFQWG% zSj$gB+1a+q%Qgfaewg%xq42_(>z!BvyKX~p{x<1eTEoj8iPE=(Gs3B&X)7=etG$qK zB#zQC=t_ycU=c1)&=!Qf=4%RLc0NcVj{wfk$J0Iu{hQ(A4?$u<%A>{Tw`s~*EClSl z=oXrb!m<@RyM94*d(5zKL5EU)Jb2y#-v4fv9wHmo8@=a5Df-Cf6Rq*#4k&d~#-*9V-^1g z`jOBs^|IL3rhg#ihxV$_ey|aoZ)<#mJ+_Uv-i{I4KD?1V27*TLBEIGzr@niHqG4%{ zWSL_7!X~SRd{%fBeUTkYa4Cl6?A74wF65cI#dWM?k()!w@a6Pef4AbRfreB1vUY%5;Y7uh&@6`h6-!8oaIsB zf^Oz18}@6+*fA^yXx(%wZ4lNG6OFE^)zCRtvz4rs2%pL*j}MQkC(gJPHd4TZ&nku)Zoi<->jx&g*h~d&3AUQvl}F>g`GdipQhTE z5u345xKM<^bmW9C4V!{X^1%T)5g=vBeSn;dQR$o-LW5f8MfZ zvWr>U^vcSU+AymtxmPRxIrFzNAqylaZwGp?$0{7J@n^cV%V5J_b5!Idtz4Ouhqu^y z-P&dG7w}fDYvoE8$yzl08I+S5kAcPOwzfqsxd(2zcGk357^Uxb?dGR<@A`gq&D%Ar zV_=ZC?BXYP?`FHqzc!Xh) z)t}JQCf|9P(1jPVebx%d-Y|~$q0f`B!65R-pg3th@~Qh1r0{7`{i#FUjt*97v#XO! zdek~Y-=J?$yZY*od;~Ax(A?a_M0H5ZmUY__bBXO7jW@}cEao-GuQxhtXwZ5?(V9Q= z!KR#j-6o=kvQT$Bq7V1%#sJHLOpbRWUD{#@Sy0uUM7npy&=_7hCR^Q~u? z^%iwGR%|P%Dxp6NoeFXj%7&APd@16(NoHUOzL8gVlilv~+3o7$Jp8V^DKAe&Q@8w= z16|azKo@y)ODC_C3*_qxWIn(dm|h^WUCx#*o$M94fHAftcv|l-+xd-Rot|&0wz-ua zh~dkmJPk;hX^bQD7#^<3dRLhz^wKjnoWH!&_$|>L5O!YX5@ni74U;~ zvW!t3N(pRw1V|AEMy(GqFziS2BOo+NMZu|LK8}w`1|Dd)`#9T@l%iGh4GaCr*crwp z`{gyhBtC{cp5zN2l=kusXE`=NZ+L9|P=kZ>GB#1~h5Y;o+>Jop@URWQ3sy#rhqco% z6{sY$x8Xq@`~tSsakCar3M~bH;bUMFMBt4bKRRlNNF6=CgKgy(I3m;zfv%-GK>w|d z6wM^Kki}Ol7by2A#e$Dfw_=8UL7ORoFXtr4%02$zY#&(2$0YgWHGZ&_ZAo6G_hJ*- zM7{x3kK%BM>oQo)HTpYnu|(z~T9FsZxWyNN$23pFb2KzC(LOpxKqZeS9qD^Bv3>;n zWoA7>5d%fz8`vO5z=#HDrla$7o+Kj=aR zF#Mmaoz?9vZkr0%sBPup=WngOp!^g5?`IAjd2We*{A>tl430}1b1tH_%^RS{)cYbbL85a}LFm}yw*jx5KgNy#^Gbw}Z zjtpf9d#&9Y(U&{Oi)ZI%2OzndSsYi<;N)oe`gy(6scAN-M*CM=ZRi=c^pZ|<2z$ouJnGi67S z4PoGdqZVxd-BLmn$7L6(&GeK;@UmJ3>S^6mlA})ef-egHAaaWW~Tr3KY!nE1yoU z4lEw%pP_u_n;saYED9_F{7+bF)KzMK?0sJHj+lA?8i0%+(g@+LV^zrStOe$E%v4sm zliF4X%eG^KVwY<Yho+w=P0%-yE?5C5M#z41H!>_MihnV1NCg&8f963i_<>NWOXJlx}hxtdw<37Lt)D9}K%l`d)h8KTeU5!V?J)GXbp7Zgg z{KFlrE4xYK7x{fDE!g#;M*v=dpGW9jerxCvzPUG81%Ctd6|f_|mtYt9Y`I~e!%zMT z=o`z_`@di{wV{l*{~A|iVq8L-i97f<2tB|@8nP9--N*?&iN)PuVCdE(C-fxDKsrmB ze6$(7)SteIczHSh(0Dx0?_aWmzXe`iu|xkitnrZxiKUmbuEyg9KHn`nSUHZGcl}+; z_3=}JvxWS_zq2mewIjsG7mVK~Yr)>wcljH{Ug-n=Mm0E0Yj2^Yzq(Tyh`R>UdPGlo zx>^#(7kbCjZKpU-sA%IGm_|080?V#CFm1Zu|DXThbh5+e`|(G}{9@LRQ}8CU+-2#m zJfn;vZ!t7}s8hX=Z?kNMafeDKfe1TSp7HU%fUJ`Iq{eSx@EQ>9i{D`9Nm2Zi#PyVq zilGwlapwVHnHm-^Gyu-bIHKs|VZiGbT05u%JLp}diK;s>v2I(-mgQ zh&flpje`So{5blC`XdRv+n`=`mQ|%#H)K-aZrHs4hdE(fE+bNaFsF?m_t-KSV!p}j<)nk^8GMN+L@lp zGwMjJU<+)mXY?2K7o}lRRq&+jl%1fP@Exj0;IBfCIXO1erXYnwG3?C}E~2^on})#^ zKE%gjeWB_Rcw)B0SIFOJ5cG2L9}dA4M2zzvXaJ80oM#24;bcG1N`bD^UielwSwAzK#E*yj()TC?r&@pkw}BettVG zCw3K`@Yz-LoZlWg=@b5u`NiHwCwpUKLn48(D~U(plra`kdh;_kGA-eo0epV|zD7?u zA;Hm83XzRLH$j%abU66nC{zbK9Bg|Osuv+Y>IQa;G|7>N5AtOKa#|=E3Lg zJB-gBIV@y80uNd2%|p{P5Y5hwIU{u{DGv~LBIK1d-0+_8GvC=&KJXZEyGS9S@LlV! z*g~8}i@)gd4D!NI1n+F~$<^^yH#IG$swS-q3-VsNBY!HCJ!NWDL~M62Xr09K?D)<8 zWvApR>xZpu`GvJzTakQQkgwDo_DllBH`C4}wj{7SSO0u<`>$QWhdkpo}N$O)1Iv!j_ldS z$tBl#Fc31V-%!8TBK5G?v(YX&v|-~Zc5Ax7Zg?NZ=MCI2m(7Z~a9Sn0#mv?Cl;N3e z*3itclQ%ej2)M8{Vb~O5Sgz!Y<>#!9Q2r~<$3{$4Z)Qmih3|np@LN3B!R?;)6aS_2 z`A+8&=KeW%sN3Daj{4aeJH!-Ry=bWquqx*7G{Kde>{^NDOMfe!lBzkA_~qP-f0q+0 zE$3psyF&9NGfVg&Op^%fpbhgdM3>2TIhXKXelli((m2F59<&n-KQlLAkg6~V|D5kM zCSmunAMx+LBqzY&FZ06ygXY_M<`cC>*&!;3BXc#Ms?le-7((DmsU*FvGb+-TmU*c# zy}yE?&a9QH)0eeoYE6Z5VEFfQlCJA?UE-Yo3_qZtnBYev{xc^LZzRq6e#A#gg;eD= zo~jiU>PI8!!(MvF{Pcn0|G_&3&$qHC)f(w2-P_|FV53eQp}AqMh3C`13{52EL}mz$ zOQX?U9G_|X%-Y)RSGf#d7J8X@w~-zz;@8?fu%;t3C7C?q=9Nvzc!`Kwv^>L9yi4k# z?+t#TzbW;UPO~6a^%AZ!U3sR9-m9W5=DzU^X7$LEgVbLDcr)bsR*j7#q_ zU3^}aCzk3hyL6Gh#V3yz7wc`};DM~i!vl2zJ?jtOI14`$G?3x)BnJ~~3^w^yx0agX z)=%oEQaow?6v?6gmEuqHq(}*p)18v4x%EGrf|iXIACeLyUrP`J>3>Oy=Fr49$+C>k zwB|rwGvVPDffg3ZK_)Lo8ay`^924k8=pqk^$fNb$d}P~{UhMMPT6Q^}=$G{GKfbab z%M@WP%UO=H2YYN_$SM9DJNJ~b4KITKt{h)kc~Re(`MNYQAC=XtubWVGyMg(i?ZO9^ zmhvIR#cW$?DcjMdNl0dv@_}8tupRj1w&G$wgx1h9ejR9#hFcBDE>1?6n$AZQ|DJBm znGxtSBPUfYDdJC+lvo3`YDtN$EVXr4L+)d~3!$fk8pD@B-z}=!pPDm6*)xMb(Y1A| zt*oS^R<#C7kS0R&&OP%_>p|sRl4W>BaJG@j?T9B%!#|1F!kIuf7um)wi}fHC63N)l zl5qLzJaNL=Qe*D-c@`cekF(VI&x80Sxg&AVrb=Kh%G17g54U_1{w^+dpYhEp+t zidnq#B<)Ps{ywj|d%9<)H{gB$`2BG#Gu_jn>ZN*B_3FJ>+P4LvbZI(!JN#rp$fNwZ zpn#XN&kG8|Q`J~FjM)(YC<`Lt2lXu3`Vj!oRM*3@>BRk^r2U4fK71cv+Wrt$FTQ(= z{|iUJgymrV+gt1hoGAAstKm}%3fSkoyr4jN%pEESKf&IS8q-1r+P6}Nf>5%m{fYNd z#=^h@ny?+sU%A&RkI)Jm>^S(@#HbnlPHbAU(u7-tp6@ zs+*dQ%T(FzPhZ1tbZ4v2-dsKQ@SW$qy}qt`uRH0$fWhnE)`r~s*B=+CGx?PKpEhm! zsg$2zb;5gm6r877(?uUWeK89sHSn1qjqVxQv;J)#-;tD_p3MJ||MvR7o%1alb`H^w za*K^nnlYwmaE$;d5gbhX0&qZrR3aJB0lw(<^2qhOzJfAacnG0@EXlY*$V%Cz!urih zvkKA4T|Z{YZ6kUeH?2pf4DFX(mA%iqyZzD~`Bh`CI$_y{p*@c~xl4XJ>wjU@SiUne zZ{*fFw^#RG#0MU$!d2sTcM?CAJy1|rQNu@^bo24Uy}=7dugLehr9sllr21u3uAOib zE>>JP;&T4ikBa%Pe2eylQrZ6o{s3R+K3NlJYG1N#Y%@ZtfTKcVyyO#sV`ta#t_7~! zfG4)pv2XzzVlHmOJ*z%DtF#>t0sa5m$Gpo=Sa#bmB2cG{tb*hHLnjk0kL@*TT905= zQC(mDuG4)%Yr3D`e+)mTl_xsY8c*mYNQ5xHiki*~~RA3zEAc$gS z=0=nXnNwm|sCVgg*;#TAUFs$UJ7r{hQ(0PRDgQauS7}gJ$2^e5e=jd**}1(j9Wbyv zbqn8f^QD2n1y}H`7IbGzc`pS5Z?f}*yN?Y%3}s{BlPE6$P0yoXieTj^kaZYMlD&}H zmjP_O4cKD8*TVs7B-O`CaQvuKr7jKx@X5JeZv^m4>FN9{9D|vq7Tl-t?W<-40=KM$ zVT`|J^6m@P>ncRB-M2UpSofcJ*b&hm13M8EkquA=sv~g`E&yeK#LqT>iMn1kQ3~Yp z^%=gdG32dCP;`J5L7|QW%oHLSClB@6J(v$k_p&57cKEZhqe3yNV9pSCzSlc?XkKXa z1g|?kdGtlacG$~&Sr^>!^4j8tkM6nTtd3=-bnM~hm7bL3$@h-(^H=!W-oEYvuXkw5 zuND@QH!`(+JM(;y_6ysn^?Gj4L#6C&mPC5D`9FqC4??7ko$_v(b~H!?KPwv{m*{4| z5W{e&M``#6uz{=t!cz!+6Q`4pFIaTrD{Eu0=u*>l(LM6~;=JOsOESFPjFPiU{KfN? zmsS-w%)0N=Y5t&z*O&a<^6mW4`)M{z&X$g_!RcEroLR1BRG$zCoKWpk%4e>6n-FVy z_qja}m+~k09y^~>^c-N+CUxJvY)hTGW#ECK8jR)%OoH_)J4?D?KxO3s`n+JY+)?@a z%F6hAF&K6BWnn4$)- z)r%6=@60x!On@FtaSemam6}{j;7kJgnbWfa4ZoOOcX>fw!-h|yM6cZNNe{lyBK6sly6Vge3Gh1} zWEs((;%q)M^ApnNus|EK-wop@!XySPXYr4=Uc0Mj&_;r&=sS@=+JfPs1-R(*u_94+cl_73+TqusaAqJP0rJORo&{|4qeHP0sm*4|bZP!N*qF(CD zA|>CgxSpl$&aLDdKJE~0uY37ral(G`-CDVHcj-@Pn}3s*^B4H5(sFGHo5HXN0T7A) z%4v|Jlkmes0hpvzC<-@Dg6go*1JYXM=sPh$-RpZc={l%1UZAiyiAY3NBi~S6F#3&Y zgKk}y9@7b&T#?0B_MP9|Q*gm?ojV_QaTc<5bXB@t#xBq6ZA#aqU~z^&^YK~LBjwxG zy0@?HUbJF~tz-B?s@Ph&X+U=2v}-%2Cnu+OTrorg!hsIfXyq z&8SGmhHx{IE7FtMysRE})UwmqY2Ne-FK=XbdT+usfBu+@_-j_%nI)xN!Z&&Y8OiK+ zc6)M0Aepa!1n#ota0`e%a|?MLU59TW$z2P5$TOrH$rIP`&}1gPCm=YcM~o{Vu8)ELa>g_b|w``ryO zy#(6+(m&k~drBiq%gf~}O1GE_wZvaq=N~$09nG40k36eq zm#P6uhuSgjQaBKpoS({H)il0r(`*`uk4Oq$I79lJ{aSGSR53=jV50oVu^P2SNGxl& zMZ^|BVRa_ZQFYleK!*V~mU(5@&gQe+H>#DU@0YMw2+J0j2=heLi?1AM*ls)~&#zsh zUFFX|rgKe>v{OLj% zKFt#!MoySgk#CUV1ZhNU?_lz<^n#%R*6zT@=$Iip>H_1Gdax|8_MFs|kdkq8*RH)N z8{yefGy@?{tR#egYWRfz(9d1z&PcuJ_IyfA$hIe@BLuFGAYbh_$}L!xfd$C)ytGUm za0QI6Tl6hZ3(*?xuu{ugFc5a1HIax!K%{2)5Qk zxIq39AE;}^_@vyhEk{RxEg4#^AWM0B{ik_p#62wpzhuA zQSTOyOrIW^ZoiM`rB?<`8HE4TK211OVZp~fhETLE7zdThi}+T)t%#i=Er_pG?H}5; zE5wo`uDH7Fb!3W_eRmm+27{1{DzcsU5z_5!j8rlQ&)(Q;?8Nd>xpZ>k$>pQiISCbS zYnVQ*)5M&H>C=lRMlMLGUDS_QpS7^zQ)W!afpcxfsvWG7h_Y>ordXV@ks6Oho-j#C zw2an+!9z>+(00JF_$SuKuS~!^v1XqQafpsWRc?>B^9T%7dWU zW>>DdR+@`7&1{`!!p2Y)BMnB(wYGKWupT{z4eg04v1+#xnf|coN@Y_S%0<4Qd|LC{ z%3M0iFS&m8xv8%B`?xOd<2i93Fi^bUTEx)!P0Bc#=E2VrSkQ$HM?Xnql=gHGQ8iQ8 zCRT|w%7^%Mv@>lmflXTX5F%{$2P5Y?dnV6^}IgC*ENOh z;&sWD7ze)2UQf=bOy+fLSIRVTy*>rcv0c&YuhVn94)4Klew=Hu@|}7Ucn?1wi{oAi zQi)Crno#e$^l>icfOHiAZz~ppQ_*!T|^e{zUq;z?s!VscFPON5g#z&bP24`DJ;TJ1&u)f4|W-j*9OYRX&D(v&qTzfU0FdyT%c`MmqS1) znwBrgaZ(Sjrln!QJ(XS%@8M}G36DnwTRS;kVF-B`AJrN4`s!?)&LBt=+ff`QP8x*$ z)xw1$fCX>~*d%I|@Ma4a3jM`<4%h&8BQ77~FBKzUzsM0mV;?9n5h`nW?1`nCwvmVq zjaWB(lx3_hUpvt7JUQ^YVCnC_3;p-| z0U?_QOlIn#p0U^}tNB}e9Ez)9Pq3;;e-w3|QEcQ@QP_b4M$w`$vuG^)Mq}|Qj+gQ; zV8)k#KXq>L-F}wtx`p9jYnV#d13*v6qP>WLK~D@2=tF~q))11efKFu_$z|)bq1s4& zAOW$&yuj{D+eP>0CoQY5PU|s%PNM^-;5}$~z6V|W*XW#)2Zog-Mh3EbLwrvlz)Ent z2t$Ui6JUUU2LN z9Vw>4v({*)_E4m6I!&rVf1Cxl7z{UT-Ip*L&aztT;BDA(pYN7tf5%|Z1 zw2ulxDXO%jpg>!$LdN6ZX@%Av-9!^Kd{l*(Od^;6Bk_F%2j53-I|8zn=%1gWYRd}> zq$T9JqkSZW3Uqk*Vr4H9e|6CFx3(y2y7EPWI|s2(5WaY3DKF_V$STqJKhF46IUb3`D0`xLRy;v{g_G&BI{d&8s(tLVEL{?~O>PbN?!KJ~a}#8g&LX z&p3I~%!m1>RKE^q_+1=lFMeIX``P9hlTMzwnRSMqqrJK;dWp!a7OQWCVs^ofZ@BTa z>nhR!$!`aamWa}&dV_O-`HxUD7#%FMP1h*QM@!&e3>_hS*pf8pT+9UZR?;~r(hoZ6 zK~nrtrI@6FqWAC*h792!+!Lb`P1Pt`$aPDWT<4$_?HW?_Nzlb698Q`lp*<*mk?b)q zH%YTNY3mB^WtBsQvPyz1UUS6v3fC>Ud=)?h7-$cDn%`GDf*v`pPDGJPW(hvHNgbg` z-XI8pTpxM5SmmIj-Vj(5snc;+?g?q>x`<2IN+a@$^s|;Dnqy)e#^|IU!}d#L0?5nF zM3MvQiiHM19pQ6=!5qDJ%L}a0aa6!S={LO1MuNcV@<1T`m@*!H+VSY-p26`#`8rxsaHt3U zwc+(ibfUf0f9k_65CI8hF zRoN(9SIM)dHOVeZgzI}iaNCHC36e{UMvQKdej39=TgLu3Nd zrw*W!I}McQ{#k4Rv4H=X|5*%V7R<8KXzpBtQi3c$M_v?;zM3WzedM7(+Xxl5{CwYY zr$G(?k0Ay66xyT>bGA*n(+tY!b()efi?0sZ143UI_BLTuQ^Sa9O`@#sYCjYsQOfu5W0dk;S(6Oe5V9gG zd(~?}6U@AY%wn+@l54nLN6m+fBDej*_Ze0rvel)qZ1k{T&}%D+6)X8`f=!e8LxL=Q z^{cF}AkIT#Mkl*w^QraV71WR#uy!0o~05Y z*)K_h3bctF{){yCBs~b*9qqaYDHE7S4Z;Frv0JJ>8~`5;KKmx;-jwb&qEmpJP}{Ou+*gHr<1B?&q^GTg+EWXIxPT)PlGro}bu%(?G0`DPv+ zx(|^URA-x-GefRSY?X%d9+2L?EQ#1C}7N8AyR^+ zQhG4IUY>NW72xmI&P0KWv>j3dtywl7udbErX|0m&a0Prpz{;BYVC57?*G|-_VBK>K zd>Fi9?Nqcx%aCeO%{sG2L0Gvo%%<^2?L~bgB>$60cC7iOb~Q&qL_guP09`#8IdP8D zN6=*YGBPjVAXy5Vb`Y>VipPoYE}Y~#)pZ8p zLIH+$T=ZYMM$L>l#G<7C(zP&VD5Q*WAgsy_?C1y#qws{HFgwG2Q-B{3i7t$M7Z#2! zJ#Uq*<7(k+;0*oArmNerpGmR4)(sIwQU@|ylKntJ8^AkMrwYMwnCR0>BkMfPTn~A#+p;A2a2=Cv7HyQN29Vs zV|dp^s6Q8Dc%*wI>2}q#aWs~fCn;${_kN7~w*$U`BwNC(sTByt&Z@26H}$mIDh91# z7ieliUO#t0In@EX@OFobtWaoLYNHDwXxpJ{$-kjm&xLM6WVOt;u(0#NgvLC!2D!-> z_7}4uD_$pXO%4%%*hIja?{i~aUi5{oa|HavkKzA4KbTnM`{TUe&zn9_>{lmDo^iU^ zLHCUkw*G}&Q@5+D5POR?Zm#(}B!|*8f$Jmu9{7R$BzPs}5Kf$O_Fi((sBu0_DpJ?z z8a47g(|E~Lk_x2_fJa%)nkb&i^{Y984&4s4P(n^3x3ZpdMp=W2Orv~TN;EKa762-H+b zG_wP>4c&Fmy5`gmN^A9`4t%eEWS_+TcE4*HIL%`;xr33~ftxuVjNhy{3b5k3iB0s( zmg}SNLUWn4vFPP=%`-coor3kcO;`%ikC6`MnR%4c&6<$z%a9__2z926x78_Vq5Bd!YVlTzLTAD0be0IaIR+b|gUUZ~KDIO@ ziv{1rLLa9cMD7IgzwJmF6roe>-o|2IV!6oSlD9z4EGOS6uURZ2e-MLs{k>@n_hk9Io)# z=gU(*Kq3+#d3SD3HkN(MYMdw$UQ$2jrt=3+?j+~Rxu*`OKdsY=efsoqqKMk_hSB41 zI^mpw{Ra+zdfxcKnGI=O`E_&WLXDZUv0!teO&hQ!Qiyu9?c1# z1F6XZ6saNU9B=P5T3qaqB1w|l+aaVz0tH^}LpfBKBvm4;j_k=soxY0HJl&ow-zYsE za~*khXl&ZtWV^oEdcOHJ<^JgNblrGf-eFyL_p_dtA9Gim&x`A3`Cq!L#n^X*7;9xC zTK^atYbCZ zacJC6-Tgf4c>VZ({qB68?^`#%fp?F)Ks*$7lUVqLCEn(v$nvnOcOs}Qz@I4K?SNlC z=nw*+b%}%52?5=IT-TSdl{#rl()Rj1X`nI5r6nnH$HFLV4GDd$+6-u~Jeiu-HS-h> zhfnF4C+K_%`$xb@UGP^!S9>e7(}spZS0{DFk!TtRlarQc9i~JYwgi)-nuz=<5h$|3 znR0rnvy_6%hW8rz4pG0N%PWkb^R5+M4~lvC_vhOu1G1HW|f(}|{i-adHM z=Q~m}yQV#T>`;>A6*Cw9`RSzDALI1kRiC{^cec=-hPPMDyx`AId1rreZ-b*$YY^)b z*1VP0)tCB$A>9L>TB!8X1^tB8Z=`k2NPE5`}v29*@u= zllT_7dyxkY%0W*FmT$IDN7HWD6XA5iClU5UNE5NKV3!U$fO+I<2ZRj$dK>g>F2>QJ zcuNABO)FLqvE)l0JT_ja+s)ZnYZin)$m6LqLrnrRJ^>fVIv0{Yb(q1e0N`7ai;9xj z7Ae%p%NOxQUcF!VgK*1E^3p!I!H6UeL?#&iq#%@}LS$NoTdFNe=40gUgf`3!f|BOK7V+U!9?UxNa5~Vx7UykCDI0RAGBm(G&Mc8a>o zy4qie4nh)_}=3U$@2m1q@)Hno1%s~sc=t!$HSiw$!v-niNg4UD&OpGNa7De4SA3| zyjtxPQngb%y7_}L9%oZ%0^o#KTVNYlwv4zwF=-j_*0EN;ZyoCJ2W_BD{KA;Axre$& zJss;?CB!RJrikti2&ika!slSlg!vohPc)Z1CkJzXnp|P-KQc?LElkorgr6p6aPpBO zAr&*X-bl|zlPgU9o1o$o>$Fc09fSb`yHwPZg(0)DA*Zkqb2pkhDkEvepA5$U%o!__ z3PZB?p%-y9y)kp6$)n_!Bw9EZ^JfdkuI<1wYUqG{qjh{Q)Xgt#qAe|pwY9{-(*^}7 zzQHhNwN8t>q6Vy1Ny5twXvF*yIWyH)d=(fgP^=~L{>dlBTo?0Q{W{T-=KJn|kQaC- zw<$4}I@OzU>-4nWRpz!KOP+DI2dM8#fUOO>MyG8;549m@%AJI!fl{5vik8STew%M--F&U=MS_dBzk10e(b1vWOL|j9v%B*UH71AlX?p8 zP#W^1J%Z<~_&&I)8rt+=YC%CNI|!pmGVjHECI8p3o2tkP_fPD~9AP(mgNE>qeBc59 zo>pLwbSX&X$pkffm%W<|HNulqg^nV7B-yp#uVYwOqN*I*yg4dIs3UDhVU9E?$sNk# zKK3IiD81*RE5h8x`a&6P*^k_p6~dJSgO{Rx05#2po8xysLYFG2pW4%Ho+Cz1h8Aq1kj4Z%F-T*K zw4CPT(rgFY$6+lP#3p)9whp`RmT5rd*J5Y|5Tks$MfX_~4chcB5+tcN31f!5f_0c* z;#dHIsNcUUDqWsX(rQtowGJZ(ApZ}h3+1A6`evq=i=g5OhefmLLxq6=- zlzhT#56*hnsFt}q3u}Qt{f;|R^U<-cFAPswx>P}$0AUi#XQ|R@%$rB9Zfy7W+Alw_ z--zBq$41MBM>KPSnzB;ZjlRw}oI-M78h%^BC~|zP0XPu`M+~!L#xgD8du@y*xMk$| zf*6Z1s$5qWW?1_ zxrVJr{wdNKE?l2Qa*f3g%Q6>rOe7wHb!MMVa+nH(q2AX=o{PCY%(_mzrnN1lS**p0 zzTRxtRtpzrFcyfNOpV(jwYK9@Gk+p2f7ugDf_w`cb^@83K7S;g1u2WVu}&!+3Ux@E zw0zkVxNXi|f79$JY#ZPM@{|oWvUO6f?+t)0DD<;6w<}2%v9K^;AZ>^yUW=*>~p3BI3giJa!F|57heavr-qiF@y3u7 znl74E8TkIQK_I4SYu$hr4ePtmJ3Uyivw)%`K>5VT)=Qo;Dt7$x3m?Z;tiffTj$d!) zzw^+VgjIO>M~%Ti!kR^qW;DiKvmaap0P~S6}r7Q%8cw-Asu! z^bn0(Ulp>c_f3`rSZA$ZmpGVc3nNH`Zbno_JECC81>h=0PF{W7aI|uvLvJk>koz0b z!9tg`LrQurP4jh48^IriAU*K0hWHQZZT%9%j!JyW$I{XOJFz99sns@wu7Hg@4bFUs zCyAb#as#}IL|)IMm75lEYK!IptvwjY3mh2|o@Sw7$A9d_wb>n+%>B)91QQ2@Ta#gj>wfH$iYxuRrwRT`9|L({#t)NZRBpdH$ zwWp2!AFeR9gRg&N#i?aZYtQ_lbr*|9MXniwMy+VV|2z7$Ef;@)IxR>_c*>-IT-vouK&*6a(mZQZEjmn z6juhGd%b#WY)@XZ{mE@TRm3TQ0aL1d?Wz zu3YTIQEK@bt80SVmcz)Mb>U%Y415%y|Cm3^Mtv-e3~F144LM`*V66F#J8*!FL(jeU z!w>mhX@=p-l~5PUahbzgsxf*_2@-_yOkDvkV@jpEOKtUZtOF^AcOMqSc~ z1N?DRSp4CK3TKX~B4gW~J~)bk+vdU$QJQv=f65KDUPH3rk{#~U|(to_w~Gr%7p`o_W$#ZzQc zHU>_vmf_%^?&2>a=zJhSpr7qRR6LJ`L&19E~7}%X@*gn{u>DeCG<7gatraiFJ-1$AweU=zE$M`Li@1*V8xDg3N;N31` zOR5hIzu1+|a>)^E7;+Cc#J}mK7^$Ro-cC4LpsWKN&UB20BQhgKDgj1xj`2L~vVV)6 zW5nEhDfXU_0r)j2-=aNtYgtbTXC-oIA$@FmV708XodC^ zV9A3@IaCLWv0tfEAL=l>Z*i8^QYYKK*%?CmVmo1NX-o4mLzXSrqtuV-laB`WmISIT78A6JxT-Q^>nicI1sfzZTp}#ab&^cRv@>%I(?Z*K?m3m&F_j-VE(WwjSe)x@85ZYSov+5x zCA_K)SX!cs^YxZ=qBD=;=+d-5hD<~kw7vcEow~flv;pFa!3$g87$Yy9{mvAKq&q`{ zW@8&>v&FH%pi%1Wnc&f_!=+`NgXPEtWDKy)ZIOB~^NQlHMh+fhmSb+Kgk4UcHwd;D z`Ci{fAK&|;KIFb*eIr>km>RMER{U~jfa$HIJjh&Z?R9VPhm&tFY1uLs=tW`lO1SW~N)$0Md zPL+m2tyhQL;D6LB!+xjGn~Kt??~#l7E0u}}S$~$Qr;q5IJwU<~T;VJEG5ngY9aB=% zvX-%0P_lMemM^DcS84p$d_9}@RhP25zCHMpe)%VK7rB0RVvo@yAmd}3?-J#ArwA32 zWw<|M7@}ugtdPv=vh~`s>+-NIyIv>Dl=G6RU=sa9DsCiF}9xj29v!Z@I%wK%Hl4pk z3$n~Lv3aTVs+vmvB5M3hR(ciUlMJ~jOL<# z71XXpnu(QxfI2t``~2BEna^<0D{B@p@`8bvaVnJLzG zhdKfE4KVsl`kys}z}C_BU5p`!Y&-Cq5nuA=mdFv^MLrD1?SuDz>b-v*F z&!0PZuz#<=;Ow3QuRXThS6y23@Tpz9`nTj)=U%>`KX6>wyi}PBns(A5HCiMVn5?LH zvX0=FGB*&pjEa}9hU8op{r(;)4G@<+7|i1>w2EF@%uq&fMwyGuRhL0qT&;hLqSzDQ zPCtCMkU-es!kT#ta2Z8YXlp!p4nW4%K(b0QK)8dhHkq@NH!4X8c7zt?+ldGSru1n5 z-J^Cb;ZEN~32h}wv$j&uRmi1$2jmNMwUw^xIMm@N+d^JrWt_>VQs>n~ta<8fMCX+a zfABu0Oq<-BWeU)R{0m=rjJ*VmD(1eamtabMoX?$lF)GsOLTv*)v_Y=Z#RPjtfX@a& z;NQ*X0R5zZS{Vu>`+Wa1$tv2J&ez7!K&)kOyoHpiY%u z#%{;(M>8c03(sO>T2E~$+F>=)yoMsj_8LCCm;6;|eB{{ja_XEmjq2TdRPb`hFUeI* zIg~NLmSru^Q&V1=3%xOQc&`YSz(Vp@y@ro3j~pxirCb`(dlWwflD{Z8s&{BS(W&{{ z=J(-VxRB&W741dW#t35})QZF+FzuRz`czhabq_A%p)UbvIe$cY9QML=7bOtN^SM1b{b{p5EB=!0fBF7PL!nDHzVzd| z_0y-XU)QL9^|xl%Uwq+3$nUf&isYC z121j7Boyk4LK{&yEBi~c>u=kb>#rHgD(J37+UqD3MeF6d0PlN%H<$d{gw)W6XL{j= z%vgJ(Nbd#szDtcNNHa+*0=&tnNc~GFe4o#%?DSCRNC%@T*1Wg*eR(WsjvR|R%~hQ) zR!6Ag5}@AD&H`x*M0I{Bbb4A!c3P7E8qofF>laudjo#0ZUzT;RPs&TjGh^A`Dl7TC z{r6Q?&NnX+u8?UXrb$>XsRK4yW1OH@u;s|`>j1(2uAiVQ(KBXH9DH?EDAebz`cSB< zI+`tmuJwHj!-A@6BWDKX%J4<7|B&3R^pTSA58!QopOHDkhkUt#$Ok2llqh*%%l1sl zqd{=W%-5W*EJ5x9@*Tw3PNx@XOYld`O6_OL5^8mPf%W|s=9(3Oz>(dtN1X<+BYQf6 z-_=e!!mcWGq|H9r_*LcU7~n`|ia<8~^8iK#r-JzXjn8T16%s*TAdj(sqe+edwp;Aq z0$10*=DlnO_DZJx(4n`;nn}UJy6dcUWLFLwHg(95skU$B5q(2$o*H}9%Y{A5TOwj_ zMf4JBp7^*9!nQrvye05Pj67XfD32zuN(~v{$Um`ZWMQHDJY8wJRh>mw4t-WwnADlB z9Io_ym`}dy*OQ|eyPh1(_^tfb6ewO4( zHZ402mS2(0wKD20)%rDWN#UW-2r|!yhbsxzq|SxfO@&P(>6$vL=~lX?K2O&oPt!FC zY53@xJi3s4lOkORFnNo-g?#2BT|^?a6X=?>Mp{GHv=itWpHJ7=EH+E{*3E|p6WJDZ z-(!j`(EX8!?oqEyEEYsrAv}6xf5CymbjBqA@r2l8yE__t)O5*gArLt(Dmf80%QZ7f z&?t#@=X%q>Rrp26xoyVBDBHc%FLiY-RZfM_4;#+It_{Rh~$PINu!n}_T;3DwlLb}<;s~g7y@VJR98uE z>SyUQo>a)?)D5dE=)37sbwzo3)1{b#p)5W^a-%(ovW$Jm+A53xm5TA?(f8pWJ$dEj zhkquCGPI9}5e>DJ3=@J_&@ABG*kk3D5YYaK}8 zg+cNL#qL%}7+6*Bxi!_xze+Am4d0!Vm-Kf}R#2*)-pwyfdF|U{zN_+XfonWqMMcyLW1tmw%m1Kk#OGYSOOd-|U>6*KJx|FbnUcq#!iT zljBty(|o>^)j4CgeKcmp>Xg**ok?z@aTJ%JZnO21{z8;q8KlG%azY0x4VY9{4P;fh z9(SNDNaG7UlY@C?6=KaW-=xqzw`0muwWd4;mRhgCqNXorc-yQSqYm@xl zrt^6dmaR@n3*Y7SY<1@)DbrKSQdZ}V+bVBZzAGse=q4qF?@CQ(MP7kqN(x@j3f4{Q zmN$9l)ST5RK3`h+PHzrgPEs0EQ&z7S^U=1kHe3W>SQX8ZKKGOPAusC$HUS}vO`i&0gzo|`wtBqEbdyDVzKsWj zqL&pVr{Xy~o1|jF4W%&&FXwo}cbZ&s;Ej+of>>WLD+jn`wIpm}ZfNqspIt}n68!5a ze2xhfnyS}(ZugRe#quJ`E@c|nwMFL$sIPP66Tv8D6&L}?V;J#GlvhA5nLnrVBYdaH z51mf}kA<#G?-j~ru0gKTsn-UX6|q067z|)SB5XYsuqVK2Qa38pbw=9&;MBrPtI+8C zLCpMl!le;iA?%aLt z4dIVD9Xjxz^I6*G-_(0DJ-+A-{&R;8EGK&7>0t1+8MXI}9eYphjMr@EAcvUeWO~+s z9%O(gWZJ?%*Rv)R$!-~uUqWngphdXISkGMj`76pM_4SxKF+PSGrBQMnv{n}RtqQ|Y z7PLT~vMC=(VYcO5vaEu*m@vto8gS`UG>D&)ZLbq~U0ALg?F}0~(s&v2DFrKz5pKnT zyJUS6oK`j^k`^=%u$uycyw?bZ#qd(iAU?~VVhR>0)ah&K=k{yo_UPcYb!}|@!b7-y z8ns<|vpxEe=x)Qm-CD3+x~^S1Es+N8)LiY*Pwmh|diyf;&3~_L{;)pz16o6GGb5Bu z7^e(stIf33ZiT;6tF5U;O(B|CN=r=)@hG|~jce&>eF$J7*cUdR>RAO_s<3%O%jkLsduD6*GmV@vQO>xOs9$N=nA0oBMV^5dXUKu*w-yZw#Gx1LERu%TF#m{*J=J z+ea6q=698AmPi>G-)TFR*2q+sRODHu_NHBCXjTc$k5RWi;m;Hmi!Cfkp^+8UpXXVH z3T`+r)O0>-IQP7DsK9^B&6BA1$v5W&JIMb*6-%`ps6xtEQX_Xo?W1omEWG3Rq|8(s zZhC#CItFB7F|gEoE*(wkkvywHO}8XgqXPjHG0oKe9bXTjxm0Qh+3*7`MITX{fE9Xt za_}I`_3F;o>6SoL^<1hgBsG9?gjNhuwSQB4m0XLOH>uCSuSCX7)}_LxOIswU&osTH z4r&aqJVhN8?kx4!UTxpA$P%0QEXJEuE-PhvvEk0j#YV{r+5hY?7|(jlX90q8F@V4k z&m}kabC;;&04tvJs+sPR$brZKIYnBcEtf{nnVb?iAT0@FZHdZ_eO{(Cx5gXR^Gz2i z5pB8C^9nNUMk@#_(h{o*@j`t0ZtH1nxm5uHB%aTS(prUuBn_+fxrpW|f>&q&(PX`` zw@d?8@ASO2C%DET>#K{E*Ou2-d+^D|Cx8#GIDB%At4{ayYv#LDR&KTWOk>T4{Tnvy zZ*1h{8#b`d8ymIS4I8948XF@cHf)ezXlx8mu4&w$JhY*vG2FSaQO3iOtj0#EdBX;c z;h2fzuZ@kY425iHtWn0)G@`6aH(b}Kt=hmYX^h;pK{~rJ{MZKh^1YP@a(zqGM&Lk-cMxmNS{JQt`hfVVCNY4KceB;Wl#f6x6r_-NgO zjM80_QT>U=BYWtfBa7W7NA}>RYcQK3$#T#vN0Rvf_6nQ9UO_q5J+qwJ@?8Ci#wL1( z-`CWHGNv`Z;BHjsBBIpgWu=JkYvj8lqxf!_$%7-8$k#|P28cOS^f|Boq>^1~Ju9t3 z!sJCqg6Ds0L$o2%HfdXe~Q=kU$`4xFv~pug8+KEdkv>-=?AXFiGN#T5Z}N7t3oYi60!YkV`` z%qE&oqRgvMXAg0o%9OLQGl1Mff9hlWGoM76Mf_{AhaJNT$*G&Y{u;`co_L&wP?U{N$5Q679RVD%_7L zGhrzNO;vYkNw9OKFHl!n;#b^{@edC1J$%n0{sHTDh?TICL#!K0h}^ks*`3(TP@yC6 zw8|iRcU&nl=7OcPdoCy2Mf&O>hV(rz-d!!o~;%XJw2wPWW$k|9mVcw|0~+M^kdpfg^-ef#>m`2I4f zFx4|*O!c!TWw}dI(og-g_kwJuh|3`b)xCgng3Iq)F zzMqzc#q8dk0MkrA_MD;uMOYWjz7WwxBg8y^!Wmoh<%of4Zg*Obf2{C#%gXY1d+Xwh z--=nOtSPX1{P@+eXV>r_^3wAvuljqrob1lbbSvJvXP&Ne zIxqkGRe6=^dG2!>?!q$m#C7W@n%~e+3!4|F9FP5OtFg=BG2q~_Iu9jRX^Bg22M@_! zn_XHJVim5SoauIX)XX|peTe0`{3*u=d9jb5#`ogy44?L7tIRyn$L^5^vwMAPZ!kPg znwY^K`PcY=^GAHr!@shVecBZ5VIQ0HFEAFmWg%P3I=0SSR>aou3;0+6rk5XL&!^3C9)&J{f*xg4*;M;+TQZPLU&~)hO=W%c z@3rY-n434iHkua0+`Cg#`D?7N`TYnwN64_zCdD35<|3%hOAiLK5a)8yIOzvj31}D( zUlLaD7RX7S>X={V`VPk1L4Fpd2Q$9u@5v3NyG!4=`bYD0_rpG457uFvoR;J5p6lti zZ=d~#bO+Xc{uCtUEy8Nhs{8nF#Y(=M{rJE7M^70Wp1y=2;lDG4 za|l?H+hOQgx7>2p&<-ALNZ^%V@Rh*+qm%o(V6YA(9aYGrvf>-Q>=z1I0)64Rx1Vvw z?dM)t%;0Yq(mp-v<`4=I%_&E^s|RG^G-E9|i22PFy;bPMQKMvP{fzdZGia{sI~a)3 zXTvNEjR&O=rPitd;T7N?w0@ixC91EJ&&T9B{^TrodMMY^{~LOLUq27@LE=B{QwFSi|4M4;Bj@r^^d;9Lc`{x9M9JZ3~X-%~WVMEfi7v*BncxddI;8mgv3YXf7bE7Em4 zTE@9SJh8iNtlN)!%M{S{yv}Dxw2cP;g|cgd1d#(K^6ggia!PCD_+xs}Ng#}VPp8M( zG4x0fhCkK^WZFA^rzU|7owFpx7NTES%S7Yhl}ArNIF_MdE^C{H|2-vJYmUa)ax40pdg@_>Wfbe66qa1pnYvQy zYK$?ZSncYEwQTA-lqzf_L~HS6Cf*v%PMubD(%lnkcMP2IA>T3KxZkUDLRoV0*Y{^+ z-2Zj4oE6Hc{{6UFY~Xz-)x6Pf=DRcc%}Sv$@tn|*A(dbCI$_`A{IkOB%`CM+!SY}| zOWB-V$Ul30-{8=-aAn`gWkOR2=v(>=iK}+;2v$8lk9JZOmq}>1Bke ziZY_}?u$g9-&gQLH_Y2yMQMjP(Gj+aV3h~4)!pFy_(Am87(BASHI&?0K?P}PLi~OG zt98(c7v%G++X?*947#vJh~R5l4n;IX72E~d3-Oqa*(qh09d~H!Ma7xkq?F0EBM-eg z=a{ykmM8bAzU|FBXB<=3yL!Z%8~CzN8=zAz``yC6;fHGx@$316{KFw~-rIA!g#O)R-sv5gQ#J9iek2xl?afSn!!Nu9)7IT@u_2j}3xYv;btd2T7O%jy zJ-@IynNm$#cznlS2MX$Iq0nngMay~pI|n>2XrAs_tcsl880)|kW~@C)0n`4_Ia{|f z<(QTw>qv$)-RcBIwKx#IrmREPy!5Q#b;|mJ9j%TjxGP|Vbb?s25Ae<*Wb^IK) z5vHY)lTST$vidyE?wm7T*%%lZ8amn?EbK9b6+Bl^o0*lBSy1~NE9fz$Fz6nQO$pX4 z3Wdg0SEKzeS_9hKV1~RPC%cSs14)S)2W1^$6BKe|9(yoj%`!_RnOO`No1-v>uYn`% z#_@BS?nGe7^8{nlNSrm!86U>Zf665$c8su-MhGbRcaBhoOpN$)~}d*&t${^H2~V9=d)`-FyExm$*s z-euMYktduQt28~O#GQ50vm>teq!vnLEbA_0Mtky-zWEBvuAlwMY2U>*PD>XBu?O2E zr}n7>9p4)DemYU_2p38RE$mqp+X8fa;v_sW+X*G7YYA-{bGW!R%(G%pg-G9I<(h>4{v#)No|8RcSGtLQ}Hv12!msrmj1b4U5e`vE~9@qPMvPGN@ z{{$oVM;lY|mV3ojf20G%C^0(Wa_sW7Lr$`#!%XeUq1QXQR`p-Bo}+ImXd3YC9nTLa z%hX$aZU*CMTffEn*4fHB^zjrs;9_caK+R^Qh0I?b^pyKO_5Pr;j^BSZS+K9>_p`^Z zzWVal`uBhB-u`#p)nDSx{2WbV8?amS27XTCU;eV_`GpIgC!NY%$*$dUqmqPjjZymW+3|teX)@qq`?!xcq7s*tvV9ixA3p7d<>zg zzwnnH$I9mepRfyA4jcF||Ic3j=8IQ-xOg2)+skU$6JOrQul(w(r+Cqmd%k>7yO6gT5v@P-BK9?#h`+BN=F9lM@wbdEV;T5cb`SsJt+)6Wtn96~SlQH{ zAAIm<`he=Tm#7eW*8Xnv9lWo<^E2_Cl{KH^{zC2Sz;^^z>-iX}T<$OU1pYSuCa_0Y z75*OG$#;GECEvyBzxSk5-2#`pWwn*c_m)NuH*_YTC>-i}5?E0q3>)Eq>)OzWIgD>$>eAG+v;>S+XAJn=T z4;(Z~h}7wCwy9s*(m(&Ze{}l#fAsnvy^f}T|DU}4PhS2fFYO->|F6CLuf6=Qz5M^v zUNCo?Cm)t>ad#sBS$H6qXO>F0@KN)m3iUBQN7V9?W_lFcNS@G3Ok=+wQq zxI2CHSNSmg7ZMEMC6uv|H5v6Naxg2KHSr@kbJKrtcjEji4?C4neumiRJW`-Ki#5&7 z;YV)#LEh|Pi#aF1X_O^hEXpEy^wMnbm?g7J6C$e)8&vV-h}w*(ToD~AU98v4?>5UZ zVc2M*Cg`V(1}q*xBIs9Js*DB&`6&4_A_RMOo=HRFIhuDHPui&%eJh5Jc-;oFz<{!*Vj^n|lc zDy>WIdcKL3`q+?e{Ih=3(&wbsVzP66e|4_HpEgkxJXtE;BkFWvKIB+qi?uiv4g!FO zdYRz5v5E;BV-NuQ^Wfcwy=d$GZfV%Gs^UKRfzt}RCfAjo)N5L8acXi#@A~W^^3rK= zQ|dMZDRMgX|9EX}$4;qpuw{#&&%4q#z$)TCKxg4oFKyGdNMq*l8{~JTF}#e;;Wy|o z?3M0!=ipfv^I)oY|B1ZgiAt{%**7N|vKYPZ#pZ(2{kYA(QMZc&W~K8G5AH&2Q@Se) zKHweT%iPV?3*NayT_as5pv-z&Bp^Q2=VB5~p$`7i+EV(!pC0yYoDjmLGEO}7!4tBF zOkjuz&+*hE7FI6vR9ASa>dW(_r|OQGS~vWuh3nsacRBCIKDb!xFTMIL@0mMoS}yO& z{y|6fk8kPf#dLr9yYHTEywan4=Hkrm^rhaH)_>Ru^_O($oOx^){$rngeU9|uAIzTJ zXZCFV0nYdJ;Xm4*kRPq7xu>Sa#Ud{LgyL$3pDOSIsEX^bD+$*i+;ne*xF>XoCs&e0~&aO5trwbO~Y5Bh%2U?i$_Q%cq9AO6(PTDmDV?cSjVod z3DiRz*slxDxZ77hWhwu+@9r}ejJ*+Q=!9abx8t&f7P$|FX5a;Pn3Hnk)K)3=1M-$I6eNH01P?_y<;5 zRmx5(D?sut>@GMWXd7YM(xNHn_P=(~F8=okrw=(vetc|X?1FhCPdk;>>|DLP|IB^o z$xn=pjGIDuH#aL8N4ynDq~wwqUM zy#j5+yehw=-#tb@5D=UA)w|Oz=a0x^9r}f={n#Yl6bmO77w*eb|9M z;#(fV_ngT}xKA7ekMQNjK8Y!?wFF{emCI{kW1|*PTb-E)H5Qb~_@ri5NPlYR(xrhu zp?Un=_pU1{nm1%j%GlaRrrgLXiWE)1*U4ILO**N~L3Rar<=52) zML?napCqNO_h5G7dHv41(qEKSyWm*y=-9W^NBj z>LE2KHKkdDlq#vZzF(J~a!pyE(OrXbe`)kYb#PgBFsUKkb8P3X>ECs)d!cMNOBp`= z!uM-0-@kn9x!pp;J21Js@7~ipWsQ5G=cJ?#|ETGczwSV%PfBZ3m6?C;@>Iu84HM3k z(BessrHiEJl@B2s{`mH5@0UscNYD4_(xq?TE?xTYOU*O3LVI2ssVvg3n^*g2yXR5a zj4LCQJ?N)9kldMhZCE-h!+r#wU>5Z}B3gshL~WkZZ6{B>Z1NPT!gtYA{GBr{FP+o- z)9GhtTtA^^Y)8I*aK~Vm!omt=&&iienS9wq-sQ?`e%qPN0t3D04g52!8eCCW*d<6d zym@?b&5om2`X0_CN9)FyToAaZ+qQk`AkRGRU)Y4#Pb!IhtgMZ#< z-cR2*$frkk$3H`=s5;X#4^@3XU#^JU*Fa^s?oqZW+bBPApw!4!n`)LC`F--+>W|n94-sw1_nSgFW^jEru74@6r;6*TBKHjBANZCj z*`jTcjoZfJn6_oVUWP1E{pl0QH_zDb=9&DMe$V{fA3INphx-G-R_kl2Zn=k9mQ{;Y zbF{u_JqB=8pF;R4S4Q#c*-i{?*eX|=wMU*a&*bCGGuyQm@wUOELiT?Fz5is;yQjWF zYxT=5(V!(>IMIfun$THi7UhsST4#s$bsVEiIHNaoo#2x8s%Im1x76jz&cSTLk5;Aw zjGoeuj?WJBp06j49XoHx(3`ite)sOwN3MKQVrCaDZ`&ED<{Mak)&n>G?ZVUi^Rk9a ziTI5!T5n(S5O$rr2d#)wUa?A6OIbnDf%ap$(7k&enRZf-9>X7*H@rs=e-Cx)ug@-; zH)ZIz*Pk~pq|1I6mnOX+U+;4#Efq4~g?-Ev>1m(abtxVo{pNCyl&?n=GD$j?;&f+3 z8i?bEm}Jl>1FJg5+LpWO0si}qUwpZK{TH9#$d5dd_srs7-hONU;%9j3;X}8cdFBS` zP)X>P1MA*@f8BvwLM0cLO_)%o9sK;_i$6bO^=ciaqgoe6JN^It`Mt<5^$_K>a!(UH zL#{rlubAtAZ8;2rQCq`AX5N?CCHxw1#}He{*MvH{yGJ@DMLHIQyz<-f+ujiAB$Oq8 zLHV$#EUc4GV|9XWC{vzC*VCYP(L3&@>!cs~eNsR5N6~Lo!C3=>$PNt~#@`sP{y6T4 z*E15&%*8W(@k|n4&>e`-Y4qin3>(I3$5Z}6_d#72@Z2w=EQ~P_?S$|pIvL8;Z5 z((s2K`YZpIeK=_nUwpCpBmeHmKRhFMUUcLXcTdO>)$w!m-O@5&KfEjhn$ohIYUyWQ ziMQbd%wr*6>;E)|!-V zC;j@XZ*B^IF4r?MH^o~z@{qPq+jqz}#T!=!;YeYRnOIw$2Dj2TIurerf4}k#eLbE6f?m_ck5mdq?IlN>(FLeR8(I8<`R* zLNyL^R#Oj;uT1gqXsn;Btx`Mgiai}Yi zLb4gCC3)m*ZF{t$8mZrSelKdF`iN>J#~re$b|l%oaRqOB=g^^dc=#FvCkdhl8j|fM zGbc}{Vmcz*k%cPLU%_r)ALQfNW5M;~%NH#wSC)lWhrTE@DO&hNc)D^yaKxDKm@y*~ z$^&&Pbm|UZ+1TZ~J~NodrmhdN$M|@oyj0}^D$byE;TOtX;ngTk*+RvkeHrb==T6r3 zq0u(*dzs$O*mQNf9P+u<3&rmu=?nQdx8!rnbK`!`)_?Qk<>S~~pGU^;Fe1dj*I~`C zd-|yt!NM^BG$3yW-6IS#NkQKg7(()9i*!7F!cay9dwQ*SJ*xVEnLyvyIZt~f7g(5XEF>@V-Kyl0m;Y3V_~FYw7* zeaD?KG*Fq_aF=r4W}dzE{;6Y1^8T$R6oS6TvRL8Ol5p`dVy;UoP&xNfHn#HvAF=26U)gqE&ej=;sOum4=TR%77h(al) z-4>p6TimyffGfFGxLpJz!9#xme9YhWBVD&(C3@N6v*6X?x9$VJ$ji6AfImP7Z~!2_ z#U)pJ;3AkzTG`<-VWoRITvVq?6&*Gm7W%f}5!Vg^9Doo72cQvzxa4vrwMZ*RI@#&v zOdqRm`2sqpPYhK|SlU&$$tUwj_3Jb+%Qo>fj}|R-SrN3iW9-7r!l}(zavjB-Y9cO} zAMh^{*rmjRM3-=jGW2AkB!fSH5Ka>wyTsUG)+uJfXu+Yw)iT@$oPvZli3XIq zTmxdLAeW~FdPeDJN_DLC5FAv4$w`xT=5JGKMD_R*wY6Cn;Tm6`rS)2>&n7Eob#Ury z0WZ>jQQS%^Wx_zTu<9i|sRk2YogUG4VAB1Cwq?p*zA5uMj)~=4T8QeE4P9s|Awuiu^#RpI z_0pfoZ#r5qB+@os2iSW(i|$c+8=62I2*`HpEE66(Y$m*PjD^u`b0*#Fzv-GKvlfg( z6U29M1Y^6}iyc0K#r#c2t7o&rVaknpjehIry6hP6#L7>bu*A!d2?t##-deC&bkJqV zgd>h-cF8h864KSKe&6JbskKe1rlSd&)!*77vd-x&7DA#_w0%X#N`T6wRl8v`sYP(c z!>CJ?$tCk>!4)s*bO%tGFaR7oXa>#N%|E-Go0N)`C92Po89OvF)FS@bTb+QfZJ9PH zW7ZuHkFy-b!(@XmDo1u;+SmR~SmL>4a?F&nSeTqSWv3H8K_63l+F1rD?Sp}K>#5dY zG^M^RiI0cT&d)@-k3y<*_Nd37CWm$DB957|ZXQj|U~yB2!W4DU>*)Pk8{=-1llD4^ zDtcQprN_=Wt4^H?^xNc@Q7^y{t*agLBeVW^E}6e|8rb2m!(yG&nVl;pM0N?nxz3R` zXhLzvol4v^*OuksO(fMKa{-RnzlJ?Ba%=%0i%p<`-=XBqaSgTIElE}9?qTpB%l2&hre3){P2n*FgaM+KI z^$Wp>skn`LTdLD)9j(`?x0pDN2pNHXY9}x3_}b5j50-qG_?vh;{nqc%9ZPRE6$*ov zAPNa>`{6R>)ee(+9t&4%Fj?|pzy%Yg4#9K56JGlv}cD7fl*MxzN zCI?6wbc&dD)3GH9quP^AE;UG39e zZ|jt?>Wpod2~-i3u#f(9@o7(gVp7C}ijH*6(h@rDbqLIwEyzq+0SE#L@kMlKXP**Z zza<+~hgDB({RT|Yai>}P|D)}@1Dh<~$8+yW(vi`OCh1C=rs>{`(H1)BZfOgJmes{7 zqh+-0A!ScNKoCV#1Qk>enW7@@$xxh#TM+j^fi~CQbN414Q2hA&<10dvcicVudG5LA z?wol4M;UeX?UI7-+~}eK!P!Lv7yjLUyS{h9>Y|BLFkEURj@$kNYy=(`9|%mh!bk3P z@#nw6N1k%o@=njvsXV~1|D-=I$a;r}P{2hY*Qbj*T~Ly5Kp`q9-6`bc-G74P-#FJ5 zm38mCi#t7aiCn(}zy2dlT(G!4T{P-lg1W=uqEXj17bIQ8>C~tHNtf>Zx}?S>MLi{^ ztG}*DwI_dWkrWEVf43>UK_cok>G^i7yPyy`=8}#sD*X4pd*g!Gx2xYZ#C8|DNek^bGW@1pmu*poZAQ@|B2|93rgQR3FmF8%0^d3SiaUw2Z3vchRM z=yyt!|6$_^*0)l`1fP0?lM?^Ij=H3u@ZZ&McX+zA;!fC;>ja*z`{bKT zLMTLCVj>FZ|I||#Rk}mu`c6LY%%58+(^FecZ0|mb`QLKlq6GPL_3!%LMHv_N-TQV? zMeLva>OQvXHe6vPS@=ES1phqjt4vk`LG_bVO-??yh-H*&i;h&yslB1{49a4ltY2qI z)BTEDfD&$>&LH!b(Kg+MviOK(?%a3ZX?-buk8gc!(ekwqtCy=$WAwSI_N>S4E#rT{`=UoZAR}f zMt1n{_Xr%&F}`;?vT<6vwHwrcK}{H08Iu6Zxac{2Q2mvLdZVC1>mK>`jLnlCpSWRc zUgS_u4gERo>4v+;m&Qc($#K5}A@)&#$|kj>g0HrF@aHvm(o;)*E79dN}#x|T0f z4Et;^WORId|EuPS<+U+)x$7cFOnu~KpD|^1@vTx_R26}hoOcUy33avopssEptS5j& zNJS3Aou_6l|ULL`8Rb(|p* zz<4>%`}ie@JiQ>(~Qd7jNPlo=h{^^M3oT_c1~0Hk_!o*+i_IINXjL#ft8Jj&$9S zV{K|y%~P3i{03N^11zE)KU3V|9Pd%wG=NovkB{R6sAwd(onxX6t8hjcPREU*>T&qX<1p8i!d+}Pt;>UES ztw?t6m?WABx-(Hfq!C%fiWlLW5`LY{@q$(D6DBiY4y=V~u=P4#jasfV#Q?>zkMR+d z|8c)Z)uu4n4s^tB#}OqA9KzrT9TOd_)Wdd=pQ6%h*H9^JY5CQK3-~MaT9i$x#}%Ua z09*U-FpBof1r;n-OoUyO#EWqfomLW#L>SxObHex+Y`GaW7%zv9Z6Z{aAESJHSB=G=E zdeP~Q+Vi_yk)2c6x*QSb-}ZHaOh)7uflW$bNpu4E`712zBXd2`pETiHA+8WQSTAgVta?nxmzo5PiE_-XvKn<~r=mBMG3(jAqeQa5EdT!+tpgBR(;-B1~MNd+&X!EWj> zcYFX|5*vNW4dCax(N!TaKuv8YWnqCwkeQS633dxub8kx$iVI4%=((N%v-9%si?|s- zpUa)qwuNYQ+=n{HU9X~nd2Q8sD6=Pg*!;}Ji_iR7R#H+1e;wyOKX~x-?siQBYh)68 z_kMJr&u;$ucHhIVvkUUJsSrVI5~QKVw(mF}Be^o!7%COG%|@TLsdB+?EtdQH%h6&cG(d*;;=M9l2p8{?1%xtq5&ZC%%Kw#gLE&49)27;z8u0ue3%;1^La?_%1rdclgoj3hq+ z;971moFz!A?Omr}f`?$WAkHA#2SY=-%C@txBQ__s-}VmK&lmIyo(JWIcWj_IpbH1# zbl*@e#%^!B0kPIb+yZ`AxN|%x?#=MOV}#q|!Owbx1w8@={9rGkj4-TwSkTx#U?8}W zH5Dy_8$U*jxk!W{h6XMzg{|QKXUuhbB-79{$nxwNg1y#DEW;Ld1zKIf7mZsd@awp( zu-*!oL3i#I-MlkK5gj0nUPZ~GvFt5zV7rb5W7QtS{z!a!+XQW>2ghym3g}5M42;Bf zcRU;}hs%wjjN<|<01{)qZZN>e%O%mGmF-0%iL7@Y2@p$o zaoaeLP-c*e7^rJ+?2kQhl~L}vz=rzBm~aMQaQa{V7&#}1nE6{`1QC+|7Aion1Uo{| zh+(VK8%Kcg|6{P@1#rF9B@=EB92QR^fkO?N1}1;{VDu$K4(wp2=oa66YX}icLx{iW zPy{^m9dRJBXg}oKs@eJRKSGHv9NIUDIGnZHe;JJ7Y#%hT1P_IeH$|93ZVxL81~cE< zZ0#L`+0t7v09AHEeM^8L#zC+iW+iS$vn8LvdO%q71vnY-A#_#J3j1_O_+(g&0-SfQ z2t8C88?ee3em@Ss=dvZxCafcY-%mgv ztJoRv8`e<6?<;WsG=BnqbM!at8OX8Lz7Bk(XS;vxQ)zaMS$LKPr8;p@L(w58c_id~2&#O>dXR{DaSn;n& ziNEORK;U5+#BYZ+KwBl>!|D}+GV7ne$zdx)MvGSprM#$^w<{VO4meV-p(A z%zRtm6ef?DO4N58zScpE2f}Z2`=Q@-vPMo5$Xe5oIRNSG!RfyhrUZP4Vz1V$`G>!V z&mR1`E_7bMiSP>PkK2zD#dlx@z1e0@^yXkwY?Np{k6*!mWllnhwe2}V`o1eozVo7H zq9_Ss`twJ)i$VxQi4u~f<1WIv!n^n*(}A`f_wz@X{z8aKsu=C4CS6Dnxz_V}a(c1& z{QoU4{(pH5qC(|`T?ebGKwn(DD~RLl1UPL1y^xtXYGCHhjOgf$%uyNax~vhI86&gW zzm3kw7?qhp@kJ{9D5~Wz(>;x8h)i5Kss*M~uEmS!UfM>-N6_ZOq>b)cPnL)R(VPko%SpS|HHLOuZ<^qQb1<~A zO=VZif!`S_0Y2*}{I2VBo!93|>ImGhhj1=RBvzHsQ#{;-4i|u4!5)6?``Y*Uc?8?p z1?&R*8(~Ux5@#vH3|e#!M{9e&4<6bTzR*F2G}qqV+TLo1R@kBJP-q3Y8?em)YkKpS|5(1wJ8g7(HwrTojG zXa!kE+^roC(hkk~k#sO=4AKQ@{OOx%VvAGCTFRXCrftIWBE2CgsDnSGVK{*up65@~ z*5L*6{5r{Z+*bBw81g~;0zC*a3UXmmSQ07Wwl00ED9WPrKfkFYeKiWa2>Vr^sBTWP z2u+I6KSy4sbxh5~THksW^w@k0ol5oE8n!~Zv3 z7kW00ByrqY=~W?4%*VrlNnHnzLM$qUy$8g=1~&WwIi&xPR3)57dDY&eR;|G2JTw{) zd=5Ts@Uc>*ngQM24?j>eiV;7e$s;>P+xan}s+IUHI7t*XTPOdnRE36;Lqp*VXxG0x z360|<@zSg8yP$W=V14agu=()m*dfvz@8jaI1Fp47B-j7A<=WEDYjF@yTqUdK$-6h+ zqt8ucer2cdZ-CEU0VIWIK~s&mMtWI@gl~y(_G&4dR#-2YC0Q%kD%mA@LUKg%yyO)L zyiN9nc*3|5ht3k8zsL}!J>uucojz&1)qyhSe3jmGIk-l~h&S;^t= z(q6vVpbMgT)#&xM01<6dGFq4 zCak=&tg5WcYq%xW-zQv{)BHs9w`F~$iOo@K;T-MBYwPhZNPf1e7412-@g>Hq-RIGb z8}~fAY13}zjjAfMKkH*mNHqFDp8x8`hj(w7G*Mpt#K;i`M@na+@Y<0h!`AK>|E(D@ zB77|zD_(*Q!a2@v_-|xJ;|EP1Q$A$bf{~84vckf$2a9sozxgHw@9p(%O78dOJ$opW zBMZoXrTRRB&tCSMqwdqR>A6Tf7LOP+oEf=lScs>|aU3hq9}VczrpF#f*2f;Zseeux zYDh~ngeZ~MV<>Q6{Oa=ABSy?9TbVE~*j)Uqx$~d#%*ck>4SP6urZ@vnWh%;<1M{Dr zcYfFcqJwgXDF#W8K`xpnaw7?Yo$Qh&{o!=x3K-SJ!D(ZOy|Kd%d;%^BQZRb(2hK3+ z;#s`Z20Jb2Z1x0lAXy@vf6@_2&`JcI240g6ts5KX(~Wf7WcvpnejFEK0o_E;!k?RO zyfBxNvnVqY{nl@QBarEP%+Pn~bbRXgf#nqoaa-J{pFVr|a2Jx=oScjAe9FY4Gw2M- zf8*GruO|=^%q@tXHEUvR-I9Hl(rLSg6{NgenD+!exM&}K{ZknGuqca}FPvoigEb;+ z!zCm}Bax3jR;qB#KXPfW*OPgo@rOn>%i8PSP?YH3f>d@vAMPj%ASZW}gg!;)FlhIze^>E;{R{D05W|?SbMqGiT}Up!r6amv$uOL{6U6p!@s94+!_Dd-?bCD zyQ40+?%hEbh{l^AzV^bj8)OjKtg#x4;GXf=}t92gpN@zFqX_MPEAGJ^LTp1zGCW zuG2@jS|AuXmj26qkboZd?M@%!g1blj(%sM8QGbA@^j>fJu7*DED&ULE4=4?4sV5Pe}e@FJ!$_%d>(m${2|yogWjWg4Tw2mb26xnySb7X zd5Rf{x1JJq-Kd7=n9k=|SA^|k#4aKlYH>!nQr$iW?G;=5Pg6GH|`YfJ(>dGlR z+x4{gMi>7GeZ{Ap|C08fg;%bedbayJ-QJVc^M6A&<(BtIkBJspz4$J?Ej5eqkvCm` z39Jm+TN0Wc2D?8)zR@O4jDv|>C>M*@+4#hGJIq6o4a?jSlE3$u6g}?I;(?xe9ACso zAF9Ar#cb+m)aSqfL8$lQo(~FYi>-&R|6GQep?dTJ`UgYu6l93>!QJH3Y1Rick`DD@ zZ&Uyg<{MxeWynXNBvMF0sv9-p7Yih(xSM|-YQKE^IP>+>Gnek3yYXdwSGdVqh`;!; zX0>0)P&j7UGCIbNrapD5o@*IfI%;pr14i{TC@t@F`Y<}owS{8^1MZ*21Q9kA?!V{;uZ%{}t%Rx`m} zr0;mZ-2*60_CAw@!j6>$bu&wjdV~A}^mT44?wFI&$Y#?X|*)=Vm?RWe* zr%S6h4k&(YfAI8R-@3ZeR+c^a(XiBz`YO@`HlHaPgS}ECW^$b4Jj*Vta$KA{;=By)9@l!(IW|pdGza zSm(GtFmjgT{gu&Cj%)QIP90bI$-p1*ipZve1K;7WZ#X%xCz~MK-JMUV$ePGiApMHC zRRL8mxR~|Cn)&jSj6ipWQ@*_P58zhgjjXzBj9#e2HKu&S?4BIcT33DwEPHwGv8v2> z>i`rHU;ZHA3-b~b7Eu|X*vI+Bn#dCnLA4XP29$I3C_avlAH~VX@CkxE%0+{Yp*N56 zeT1=XtBFc5L5_>$6VMlgvDgd!GS=A-a|!zK?Aebs5v@a|r%yvw%u_GF+|>%a?S!x6 zD*GC|XL7y=rLk~)AXFjJt^c7gmZsF0gGje#Lo@!QW@gor;UoHPu?PH48f)*rtu!+w zYfi@SssUp|OeOuR*yl;Zl+XNbXcuAtl&mAC*Xb$7U=yUb;0^_viQJ_p9#Z3J=q2}! zaN6YY=?Z*kVRsTR$%b*HLp7f6=;uZ7S25~^cvKf994DDXWoO@9f9PB7qJ=287AkJ2 z6}4Phy1O)4H!iik|MBA@O*W5x+3_WzsS|eLx(ItRlq*x)LS_dnz$ho%5F{SO9T@FW z&s+kdukr*tROGm0RBS zt{d1lDF5iB8IcvUNHc0pI(tcUL4xQ;joj&9kCu7J+Ru^>0DzYia%NWHWJ;s9VP#o<7K=Z;0=Ji z3sXprn98WA(#c5{vxF3MOG!eQ&N>k^ppefy7&3g`a0QW!F5C>}?J;Q`lD_`>vLX>R zKon3d9dRIaXuSn_%8XY0j$@iGum;r^%`YA7qr}H;skONSY;J4o?`q9{+DpV9Psiua z?m9GhY6P+ynEA{Y$HpUL9~@FN_MXb^Bk+xwpt6vKE;_#ibO|Qa?>2A*;Ge8!HCR(h z7MJ~VIxd(kht1z5Nh*4muS|}eT#C!ei=RGBydW%feI%V{#lP+a>$%R@o^ri9`d%=&34Ws>73D$}6n4+0J2;fEGfTq=n3 zm1K^dq^pV70t;f7VsWP3U36gwRW^k1zI%2|cso=}Wa$;Mqo*QjLor zo^c{6RA&zY(40P@9q0sJ4QK+U5WJ_l!5u|1$ij5&ztF*UV-k(t)`Cvtm!JLbSe_%+eY zhWA4`2aZtLcKrDT>rZTK``7zRo8EYm<&{Kz2)rG?@%y2Dt=K-)_<%7GTZhR+ zdm?xF)m;Kk_MGF1;~xg%<%nnoIXw?3rCBU=SL$vqpUgRbBoJhFq`@z|}%3*|k6yk8r<8NLmA2x_ra#?8)d z0|VLg_Ll+!ot?kRl>9`Yc$JNyP>44B9)Q8-ghB2M-9+0B@f;|T+=-|Uwc4e>UU0`( z(fv>2FY%#uP_q1|X*It5i@VzkPn{V)j_H_{Nz?2)Znl&J4pqVh&2EHzy9TUWC+K0EIdILK*$kBA{ z{HVcWgYx9uO1unxnd#m(Z_(7x958MMI~v(>h5e3w5%fC-Bo`(o0)ta2-@t!@DWXvm z>_!VGcqb;%@DwJoY>9M!iA-937kGF2q~Uv8>s!v;cc#2DrB6h`jAB&z$h76F@!~lz zr}rN`t$+WFeyT@PbLSnb%3#VzFLeu@RaDsbmF%+Zm@{ejUEI(-aLO_lEL;&!=HW@C z5$C0X{cquDXLSOEQi(Qo61Bmwsku}Qc9MDMjc@-xyJB|Dq=hm$n!TjmptH~HGdFnf z^j7v6d=*#YpXSzbzotx9Iu4F;1eBxl(rrcYj*Ck~StWSq0N!STwN$VKGKmTF+zPO7 zaQ;X#gl}qBu+ZN(LbV+K06Gy)X_hYV!3nBe(gZ=Hq8rj>vf=IJQ*&0HvWA2gehk5i7z75rJ2J zpno(Dj>YX8XU@EP*5joM3mc1~TzX(=cEjN0;-Xph6*ZqUIQqa4 zpZLs3JdFJbaEXM7I|r~yre4Mw+$9qxQEN{+q=yeAB!dS9{+aFIEWs0y7~BsLx0$3# zu#kyTau!w+s=fEKDO;bMkM}Ovx1l7n<|`CgUpzH>Kw?Np66b5q{{nwqr9t!c0TpZ4 zRs`r@$2VUaUt9QLQSIYwO3`bZvt#22ZJZyUeWko?%a+Fn78DIjO6;eQ>4whTx-UM! zHXrTJsE!!$PR85mk&a2TXV=68+hYknlwMpb$Tw8EQNIbZtwgNj%|>FRq!8MHq{B2Z zj2e>h-y2r*XwJk}k^e^g*Nw$l&G&2oYH`bmKvy2cA3DBnAk<5F;nZxLK?nxA4F81k zyCEhrKzAZZ2ys}#9H$aN+b3$XvTACwvT9f1_6NWt)we<2 zewy-t=}5xW=s9RpMxtP`772(>i;qv#W3Xz4|~zVr@!s(LB3!c=~X*6uRu9Q8LiT8FMQUiMj27KwL6Q zf^PCvEfS8nDR$bHwb~z1oaX{?b{@%Y=LW57>yQxA%|3~ix$t6DnD_3`&o%N6_r;m`5Xn})(n}pl;u9Mm0;iz!jh7cUtjc|L2!4QGlqkN1}t*r() z3+@Oq;qPD;`ug8P(1^hsR+r)Zl@E&Yil=Zz06Vpfs7px6w6gtX)CYjK=w zq59$MPxLROKd_FXMNWpJX>@Ri1+3!~lOD-zCa7S;qPMR6b>{wthS3}FN_Eb62{v=M#XNXd4FuZm!XUs2p^{-sxeifkf>^ z83UfwrfsX*Skzb$D4aSzG zGP6@+c^$9u;Qa2%pH#hT_GVLz^F)Uk85QgBM|@(jXABBmX^i1emK1*W5-)o1Lc;*9h|rZK9{a# z8N7U$0l6^!>Md@37feEioZjiM~`*8%bzzoj(X|I^$kvo9?cLlS#u6 z_j=PWN%lluzeC`sO7Wkb(>x#B=Q-UI|1$5ZONF~<#*RMtPs`y0KmcO5NN4B@Hgt9w zj`G)#z8!y~8%oA051^5;&^P41NURBcvmjN(O4{M@HJx3Ics0Nkf}nRYv6%%g$z(e{ z-$J@AU&7%>5AV_xUpgg|-S7Dw#+yDzlB)H~y$UG=_%a?#I{fVmFqH7AL4D9X^5xx= z#Bx%4;%d$e{X64rg1Z7zhh5p1__%cB>|G@9{M~{uONQ?b-7~RdTK@RlK{9^jfPVOm zrQZXkPaf7(iO6S6+R{>zkdqr<=FdF2i;X4SVjcRF5?$1KHXA{PC+#oM-V2=k1#4?j!r zS2tRZZ>aM#jOgdX@YsDz(3BviIs;Br-tAj???`Zf=o%&goMA z>1T-w5^Ri|+2WW);vWLfeGumdLe8K+5SyM9;Sc4WKw+{1A~_y10{|e2bl@ixn`vMa z3?aNAg_V*?EGauGAY=1e?u#1m`c={lf-%V z42f7b1-CXVbbREi_Wp*@5=ky}d?-Zo6M>c>mjEBs#)SIlK-DMY4f%rB0QP_q~1vf5Yfe!N-&CbMvwf@z9yr;zNDfC|!L08|Y}F(2$ffAs(DT*pql( zkbxGdhk$7PkeUA*+wq%@O^K1#YOT9Fp_X)d6tnpJZ=a?g-S=^_)f4|N&HNJWX3Ov^ zj;s0rf$>p>cM<0bRy~6%UN`1~UKRC=vUKj-y@GQs_|*lD0)Mg`~V8R7y^kJm)#!(x}( zYyF}eIN0#GQfS8e;h>m|GF1eY2k7N$PG{wuG8_pqoJwREBvc?d9dh^z3`=3e*d@F= zEkmFt>tWy#QO=V9A>baxmmf3E=qJzdFskiAI@TjFawWd}1OA%vLWLhp+wSHy)u=Pd zcHOsR`T4)jpBVc_l&T-6I<87$)LfjDkt+MHe0Gqqc)wG$j~(+=;k06}NxMGGnuH^6 zoV+r)!1#8o;H`7gURVUQ2a`t6%!Q+6z{81l3Z}1!;Dfe-C~2r^Amc*uaz8|_b{P|I z3psL^yv|xQohHUxkktA;qj8htKe@fZ<8XVOua!?8VM6W;9Q#*tduGz*rD%e`EVAuOA1{9a8LR+eaF9HLvsz_A z3>a?cduGRn+;-?Yv>UC7b`tL=CQ1YCVDSjCsiYGn_2x|VKJ#Td&#Qrdt{c0)xnxk3 zhr)kHeQBoeH!{KVIc4(8ggOE4ydtr^Zq;+sYVXO5%H&p#8`8+O1_a1;dJs(!Z($eo zUFO1@uo*l)xGGU&2&+l-#qz{_P(D-d1!C#sGZjtm_%5okofHys1{$oZpTb)V9&Ga0 z25;Haz~|mK1=Y0S4~jHrA};37{AFT&~>>J&*T1TNU5 z&jM_PFa~o*4TR++8YjI&4Y;?4Ouh6F&)Ya+rD-=7J|Is)d5BbpOtA%qRDGKaAd5!4 zzlz(;ysHaEC`8Ha(g^PO5ALzx@qgC@LJ~48yxXws+zWUZ1D|Fgjx8&0z=kvfevnc_BUyaYE#J3e{||INry z_LoSu^Qk?*zcFEMan&B=|K4GC6h7p54cWg!`OHB4(T;sT|G5aS!+T~fM+FF?3^8^j zKF>~OC&bvXO9-9O8JXNC656Sdh-9URfrTA=&P?@>2^y_&cLrrq%!GR<&ONdB1$<;7 znAJu$4*z)?B93K9heAf1317kQ`YK)0sJCU8Za93`4D6xOm>FVG2b?w}I=;t4N!-Co zF5p&J_dF4DPYLwYF_i?21vO42_JTw!I0o=xqEG824j2w^63WAXGDwr;Jk1vjn&5^H zbnqH;>D|LTCKWv)azvf^a0z&?dZ4>IE z3SRM#D#Sm%8$UguldO+D_0QOaIP%*SmqN_uqJ^IxM#q;p6wlVDR)o7z8h3n1-f7ugAuye?qiH}oVMdZNGz&`5ptDxDQ9mB2|IQR&UoL*M7!!lniedsDoV)qn zIggyOl?{yaNpRPD7c7~$E_KnEpId<)O{^dOWIeFsu1hGbHUOm1EJYU4jM2b2vlL%y ztPD!suj=SCH8Eh8J^FzOV-wzq8#&VPo6El?y#owt`x&eT=vONEk`ut6L|8W|)soqr zgy0~1uu4M4@~-eWF&T#ZWIBr@q6G0X9sX;<*2KqsqI?0_F4f>8eHu~7p*IVgJ=8uW z?rNPJf4BT%T@;E<7=u52{&Ibjr&eAs*J#lGc^fx=dv{GkzAYD(BlXs;`f2#pVD&T< z^VZEIV@~|YmCxgITeo@%L1+`yltH}@jBkZ(knz4QJD0}NfB{Av5GIfaC_zKwS8C`W zz!M`|vKkKo(4t#H?F;<9xW;CS2W*IwwDCw;c!`HnyO>i*4P06rmm;<6vSRQLN`Dpp zM=n)-9<~68>nCN9dvFvN7QyH$qd%}{5L%$naC+8&9}P=c5?E(5@owpDm#n^WFTsoW zX4DAd52BCV>=i_A#6xgq5CzdZQ@s>DATeiDGGO|$o9z|?t4vn^fb2x=R`-B3{5d{) z#%rG;hMN^U_1a|rqiUJ_CEdIkk0bYp1Jqbi-z{Ys&w>)iGYR7#{qyW2eR7!t)dH0Y z&{~U|pQo+8tvq|?1|)roIUb;k)5ttjWcZ9)0p_m&=FV7#5Du8kLJEh*4%AnZJhl$} z2?z+-SE0{6x}Y_cj=tW0e!>Gnkh&)Nkq0V$q8F@T8hjgqh%+SaMzJ^AI)L3r6BImQCs2)%_v72$*hNJnG%_^_6ReCZOwo?meX)ilKM#rni3Nqb z0Eg^uIKaH0Q}V>*A78%JTL1Mp|G@F= zCwOz&h*;6w)|dr- z5NgM>D*VC>3KCFSc++z98e@(1;As%7H~HJ(?8_MzQ;1P%75M@H^1oGtPfAx{BUUsR(+Ch)#f@9b?ox-qeTV?zQ>?u&)H=PoON= zv79juO!syN?E~`DF<>shO=4r%L4uU8fn@-AyMi=ixz%j&xw^JD(9rLihL?FMwHr94 zG_d_djFC&iFT69UszjmC&VZ0DfQ^XeqxIfxeQSz-NPuljDj_&i8hp8zOETZIYHg?z zYyY(4zeD z9&7MV8>Yg_c%M{dQHrlVHp-A$S>S<3Uuv?g8FolNQx%KyB8Gf5BLC5Mkbu1Y+%PU# zIl1oDy~75LMQ#yHKJK%%?A*2r^qww!DZunCKqj+JzH8Kpn0F5YeDM{N3Zx{Xa-{Vr~6 zdEk$!qt_0;%CwAE1i5L93dW%4eI1&!%ZlW9{m@J3Wmx!t2yNK2KpU{>lrm(&VgfiD z@GI1iC&dSou`DZ)oDF2W*ynWN&*HWn$I*x{t9SH|&o4@h*fL_|nrz$H+6x=wLlGAi z{qj2xe1q0hS0$9>#3$7ZYUq%xI=NdWa1+EQ{B*ksO79t~N zZxSxL=x_^D?iTPnip)_t9%_AGbHWahJ2C0atB@&ene+i2i;$NQ%e#2PpOYKf`X{Fn zUPK;`E~IRdwcOvhWCNr2mDyxkLLkTf9$a$5%f1HmF%b%hGsGY^P#;NSIEx_8rIMLc zN+)T&nSCwl5N>~9|Ivpgy}IiA7VHRo@$P8F{m6?}a@Ig5eD3k$k(j9}?w4GMSGcX(1iV%)=Lm)8J@t^3zo- zq#<6n9|Fk8MBm7?==`SWO;!)@JaP()uobWQ9-><(iHvXp(12l~uN`~kLK zfgTo8Cjc5v)YwcTLzw>~S*vtJ6^k$sK;gTTiDduSU!}h(!d5vh1AN2t-g+q1Pa8ZB zU%Pv1^Gak$mzAa9$1YB>ttmRK87EW3vSXya?TN{KPt1?b+G6l-8a1%;$(3(_cDYZP zzhNAUi#HEB_h2DDw|YiP;z=b8|0|lKkE`+Q5T;(CU$NFkPv7% z59V(6@mpbxKxo(*mV)8~q{Oh3{T&HhV3$DgM8Ft2w+)nLHhcSwd9ZMdX=Zuf%6|S~ zo@%2{_0ED?eRG8fmo7XjG$#Y)1rNGbS7^^gp%+(H$1SjjX8%>6AC!*Y`(`--g)0gl zG$1#0fQ0Fo3g?i20r1G_sM@9Xu*;LwmBj#H02V!kgs3HeN%9+nx&S8gMP_JzR%l+S z{4MLZYjb7{h{_)w8DCeB>U&0+U6~s`%G29_@!|3*d~qo0(J|H@)P8C83uyzQGP8$h zy~h;6sHR_X-Qd{6Iz@lPHo16N3A`K#S_hINW&>%INlb!^ccL?KQijxOkhBj6TG44# z2r+}1nd-K20cpUO113G}S&`F_lU?Is$_>646?!_LC14^LmYCvi zVABUAISTw;0!p8~Orpu^ z*N2#__~I{{hS);5lo&2Zt~Ggbq-dJRk+cwWk>q~5TBq_(tc6S9oeb-`lFkr8b0%1c zDI=On{&rUcX_DSJdRJk!|I(Q+F81+Qs+N04_3>^t&3t&pz_5M_t1&jkl#(8lHDZuL zV@wN3d}t!S>hk}wK=Ix%_M!HUQ5 zkGa#Ll8oa%|76JvxFb<#Iv!OxrTo|@>~kxg&S0L%Vy|d* zM~VB^U;>nC{Fl#sWOn6;2foE+Z;_Fg0xf zelof&D#n_$`!1&DRQ(3x}9(*}C zQ!{75d%n8&C>r&})}tpvYeyYk6rNi%3USQPZ}F_N+rLI@&*8V%y}16%Lj2cpn6qR$ z{=~yLQmYg}Ml%|cVF7~$R)gr{t=!bB7^r`7jdAISo!AmG)Yl}{4Kp^&b)MJMS);NP z8bi8Y!hI7xmfX9vFsrd0f7N%W&x3uLj5UK#LAiu`;$Dr?j6icKKo!X9%`^#R-%`;5n2Gu0>B(ZZHt%{B4#8V zi2)e638KuRnt;Kx+F8JbXp9(tF_Jnze|hw9lfN;BnGaL(O%CKYKvy4*@LB0j`?x{G z$5$NILHtF4w8)su;-(MTRqr4f^7{ROpcYStZAi`>iW<}X6Yd}H-on0^J!MdK zrPg$RQtX#ihr`SJ5ovddj_--^!s^2P&KT?|fPwfem-QtRWi0VEQS03gmFL<6fwz;{4U#HYXUs5EQaY(XiL8v>Rc7&_T| z-G{;H?^Sxumk+&QWm`iWb-p3vk>F{RYdlhMd*jf+kxZ;U3{5OZQdsdJ+Beua?nR&v zgdJxknC&q`C-%WSFJChqf_TU#@a}V zgZKnN0{ssl{WC5~IVY=~Zo4O`fKoJSBrJ2fDkoHeq+wvwlV|!2!@uv2D6#h~OEwQw z8I9Gu^6PBVp3G^HDbtet)B5_4@O$`;c_9-9*eck_YCLAvyE}HQS~_z1CzGRd2S*(X z8F&K#t;6T$ytz1U4dTyFPLa;Ro0|K*gzj6m`T;?NJ05sE9N^9(a07oqnt}mbk(r&z zJ3HZgry_tYb6P(!XcAR{Ix{^tJToe1OibFk%vsI#gTl(abpFjR9f+-1lb@6|AS!Q6 zY}%%Q1@@Nvhj<2fC=C9yUfh>dx+y<7i|regon7hW`webr-ZVJ+Xmr|N`}X-+v!VtK zs?hq~L=oF#?>=P9@z$BruI=CNPlipBd3X?44zLpj5F&~Op9&v=m*kc00tD=L7FQyx zaa_6dLIl42WYvYxh4v$C>A8rv$ZT6a<}eb&0Kc6+_(Lyr}53Y z;YlT#VHxa1^a)eH)PW2{NMaU=@)}ZyUs-x+b~$rbfheQ>L6_eIc%g0$Xf2T@#SuyZ zykdehPz>#oB*_3Y@Bnad8ksnFhJEujoL6P4d?w~Vg~HQ2pyj#rtrG@k%MI_Mr-!OC z55>$*Q@R<9mFrVCPh8G;vrh&5hG&kI4?650oA&b~S!2{d#06uS>~Th&F7~P2yTM05 zzJ_1TH-V3U>J`Z6f_%as1k=S(azTxSw7oK^=L}mrVj0o zzGQ+OpAx!=brz%+-Uq5!qJcJ@bru3t3Xq^PSwqYmNo=wSFu_FU>B%?No8&e4{!LSA zHqX8{ZaIFj9sB6rs&amx8>>+;m$sJ7!@qmF)m>S9f6)s3Qll2hmz8AkTn_$v+$ewL z%JZYH4|V4d&rOyGs-ik1I}nzAj02B5&Y^{qMV@`oaY;zyt0~XONXlxazMU2dP}YGF za?LXkFBU5-CEg7NElZ&Eqi&w!6hm?g(6<8ZV_4>#7m?P0AFtzsg#VQ{l z(We)G#nQ22scXT5=0zY{Z|1m-?aFaQySrvub*2A)nwzcT)Mzmj~36UEz z7X|eNw6=ugpK0kt8UoQFDJC*XCRH(3Ru5Mo=pZshZUFa0hJt{LQ*)rVQfnZ0MVg(w zes6%fA)=~IFL-Ivd?)f_6v`4~{Y8;cm(_pJ(K%wyQn{x2o*lLnioG*c8ajUFC1y8aHG8D>}h`Pc!CcP z;8Pu_2V62>yaU263L7zXAZ&U98_`0-_}h^Lu!HF>D+?Q#K@25W(LDT(2;LF}fcJ%) z8U->IHqIzyC9k?CP}LY#Ia)7hH2qBzIe&$Fg0jFgW~yO@zmHZS2rlqs0TezHkL(Lt zqk`dNJwPfe5RlSxOz@;sl>jGWAlTttMaQ*BLS!@!WR&=6k_=Wt379jd19AyY#wC}; zNCF-r(4B$|AtB)fFZ^N*Y0$=M`0ys}46MX&ZieE!A#Y8~80Du!<2hBCmQBiBf^$}f zzVuYZdUfbqMl-Bpw5RZF<+TcRu4yR<>QOXy-ls%R84i1D%-L&3O?SMvXYrHIR+hZQ z*`bKaNps-~pm`enfX$cyR4FSazB*X|G@}IVyg)@do`=WD(-u+03j{aqK zyjB5g=6*8i-G=8+$I=;d;xtNp0oVZ-@_xTd=@Wx|k-yQeIeG%RIbpHV#{$bdD%^OX zZL{2}iV%b$?mXfdf5(^Ieu54FH-I%t0ehn#$q!LxSOP!Pk$1r_3cxM!GWVlUlg@2n z^v|mlJ^;^q_+z8D+sLBdh_>Xr7P88z%dPVVpQ5A<4i81RBm=uaypIgvm))UA@?0Z*L~6oIp_gr`?z33Dhf z$!Qs6YQ$rK(W0{CWXNzI6fa+5{sCV!hR4Kw{dl=d9zB@QL*x(G>zHaMf3$8bk&Bs& z)_BUFY98{Mc#WgKR36-409g|_o>8sBGdM1Y@T?oj1Yww*7aWf=74G&fd|*zGteq42 zM5{Bwkx@4XICQs1A`O|XsK98J%d=+xrk(TjxWwU7gOAB)n@rt4v`dbFl=Vnx+r%u- z{!{}1_Q8n;Dm>I;cJ(d&1o{@|>PXFEvc_feoYe?alBr)6tS}cM+8$E0>JB7#+LM5n zd;&*gb3cVlG+9tfpm30xsJEbTM*rr>->g%?Y~Y&?D)PTNl63jP8&}O^-Ka4c4V2Py zL&4SswO!@(K|@s_=v+vrpmR-ad9a9VXWL;<4iRFCaxJ_CFpD)Fw3LV13p?sGa8O?$ z;v&+ERu@DeYA^X;UN#0q&E(p7ZMj0`c=1dB3334Cj1vQ55YfsA89M)zUy;=m22>m) zFfvWs2*}tiZoBLOl%zZrAs@zY)-+XnElW-$pc=tQ&UakmuYjHN5NipDE;#4Q5h;cz zu9;R7@K-+j0q_0^wyHaY#{7ib@iYCC2Hb_;Ufw4zeKCq+Yw&&eCjJ3={Dj6aLHHNP z^-oa3kUES$#%~UzeqW4@9sydI$$r5^tJ9%AOGBmsNf<)7L)o9({B2u)?kB_`2EsNPt9Q4<=L{nLT*N#L=*7 z*~0NwbvReL3OQb#)()}Jd04kfaQ1`spGhFcq;3Etm_+7K^+vb=4hpEC@q*1bc`+Hz zsJzLL)jP=xN>O#%xa0)>3jX z`Got|tg`57yh-V+ib^ehc=an0nHytXjF~-45pQMX)w4g3eX+UH@hdU+T)_t9_<3Aw z1+}}WV0T{znx_*xNN4;>@xD0W4_g9)43H77G(ifUmLv;+ArS45)vu736@4w>NaC7c zj^%Ls(un&d5^ZH($J5AKqf| z;@UO~ytO~TGzH?5&j2Qvh@yUl<_;y!NjDPNQ@>7K2OS6#m_?Ij~Tiz0}*ZYfuSArkb&Ze$nG*oJ8+poWi{~j^!h14+C%gq9gd$^nv z+OJGbJM+;qj6)`8Y~a7qT>#GwfX7PV0ldi~1W;f*D_S*gG0K1$cF~XJ-fN1PAC!+nq^tl-C z5I;`)qbUNI3l~3W$4T*>J=><7vI%MaTs;m{+4yvSc4dhf zOzkyf_6eA5sYBCs+O!nQ-|$o8KG|G@&PNR~g_8(?K zU{0Kt5$K1wN#PgUsHTpT#>m1DfFELH!ap!LWGeD!mPd%DH0a| z%Uw9|t;dW$0ry7W9mqYd!eqfW@FzxNmCqr(I-rOLH2yed4A|b6m!f??gbg5}F$@~* zK0bqkHlnDAEK2TDZ9J}a)PeO3g0P^}OW@HdoZIO_#_$m^TlEh!hzHj}&@1!e1iTs5 z6O4c#aPYJO@F8PO7eAZ>+|Kw7iO_d(M3hKj#5SM!MWK$i5tgYw7W^r`4Bodge?*5Q zEX~g+5~B!{&oIk7=rC6hN@K3nc*it6mgh7`6&WR9MHu%C!U;;%pGNlpWHj334i|Bs(Y_A<=OM>8Qd)Q z;0iM%a~px@+TO_y%B^o4$)N;JhEFv$o!XBBKuf-Gl3av;bac#32j#GnK&pp9M%S@=!}y|`F> z?((*SNXZ;Qg0F0dR)x|T#$qk48oy)DKXp^9`dcPX&I-(DM*o6mpT0M&Ue1o}XETI3C(1q-w=k@d|zs6hk;tQo0S0GXxp z@~oNtB1pOv?>Tq@6}3-z=+W7vVqhs76 zaMctn$L|gLtYOf|yT|tnt%-DB;(rf2Eld;h&!ksDAQ*`c&ViVe=nQx?2}lG@6Oa%_ zgoPwLKrWm@k`yoP(i!$#4EvV?Ss}A4ctxuD~Oga8h1GT)C0eu`4zF-#@|znpBlM#0oV-C6+Rc_hR$Ko z$zkXgMjJ#a1Tv3I$wq?~QGUo(nEWAwALk5r9G}bhJ<>dUy-!v|`KA`LSG~M^bYDm? zgbW4kNdxg=kZSU5+6UAmEvmyT}pw5P%zjW>H`UP#ff;Dyl@e- z3rh5B@tD}6>R4o80&|DY7`{&NptrGqjNM!5UiHo^Ydv=ve5NJ|O7}{>t|q;Y<|2g&A|~J^6)6p{lq6$s zkuGu8LxD&Ng^bof#+WDK3TxtuO8J9+cw^zhqWZYLYPKLXTC?B7UYcspk@xdv!e5idV5N3tVwD%prW*1X)vU4ByGu2a)Qo^tO4Pf31F z>SB_pUBFE;EAL_}CAr}n#Q7*6i7?VJM$JXTDGBqj7%1gz~ntvcb{+t$<5_fV$jX}E~l9~qqS(vtQ?8E`-y=@aBl3Uh%HD8cSU%9u{=5a$O-C7O${t{DRz(2+`_H*lL2)|g3L z?_!Cxg$c^7oHKmAXK6%6LEnJko?N4RNM$NB#jCt%X}q5?)w5(|D!a(To}%~l^v&7+ zlexXOU+)6>k%3KB0S}cWN6~t z#nacV#D7H%=ocYVFk?Vinl>U`!06w~ib@6_Jb1ksugV|toPRhd8O50=bJZkP>(Z=F zg8<4;mQYcnAR;NA+Cxm2H!%w&d+0(C%7}81dC;(_m1{i)N0i?+Q}2lal4V*KR%!l0 z9)=`>RV&h#*M^sPd(VjH6(0U^D1qnZRW>$M1pYt1-UF=3tNkD6Jjs)=Aqj+$1j3B$ zP1t+yJ!S8`mw*B)NJYgh?z;Ehd#`G(wbr&;I~=vG)!JceHHY7Qo}lgfz5dt#>h)fI zgO;3of6l#*%|DBt9yAxR7U0(oSx$lPNoZK8q+pF#@U)U8zei;-1Ss)H3!Gnr+1|p$ zeq~=A6XuoOc#z6wx8R*`4t$By-|oNrdfBWbxA3u9iLMb;)LXpr!afBmy%>JrgG_un z{orsW3I{v?4d<|P;rC8bc6cjqM*m~bfF*zfOcVnQ#A1LUsoxWaN%Cy`k4}j!)gr!B zm$`{Gtp!d7V_Dk*nvlijS&M(DjEZxKw?unNn{yCdYk57)DjFBi`I;;io8@E~9VOW# z$^W&f>B6dCkKTyF%P6N{cHg||sv^as>Sf6&gT#M0Uksd&$u}UT76Z?2Dx(O2fS`a( za8UwQz}D|j7o77NAE0#AsOT{Aq=K55N?kD!N;uqlpMEn};V_D$G#G zyGD=Ut+Hsq6fSHX4I@u-tiVarSJqpPru3MLD7ap|!B>%_Z2Gs+sizI?^i9cujFT_U zs#u3o+se8dYr{R1K96Gy-%orV#6CcV(b+-kQ1C!CoS%tPE?{#BAm^C(Hb+7?<9H_W zA>`%-T2C;Ei~%N$)+;LjkS$^S7@(+$9M6PN-sy@CuyyrvG_SXnYNrWGA_fh)e9c74 zW^e!TFln22?odp?BsVWd)20~hWc`xJ0b?#-Rm<7nb?4QHgnHKL#$|QBdD+_1V3%Or zmhD#D6k*~-Fu<(i-EL9!S;2MwIl0=VZNX@u)Umie(%4NPY5$_=yai|?IW#?3 z#Q-%@2B`pMBIe5^;g#M+sVdCr|F5nn1;pOs*J%S!mQ^H|#rWI!Cpm|8WCohWRLh0&M9B$`@w8b?&#F+AfCC6 zQkhb&jZ`llp!z_!8Cm#(-D5bnJ7f18nhUIl6Dkvx1gDrQGl0apkT#3!NzP0hG&JEt zksb@y71SNH+e0t442x`XTT@iE@bUE1TDtRzH$@ea9JPSBTsZL3=wSXSvoS zr0eU^&}RYelNm#V;tY(}an)X)xfd}%S?qqL@8t`HC?D=TZ*G&rwqx@tqacrFrvb)m2ezkAwpr62SZS1VpV{@C5Kgi#E zHPxeaeRb+8{LQzUM|K$>KP&x};`4~esi*%aJu`%Ru2-MGJlH{-(fy;h=O0A6 z{~%YSc{Hg)tI9Vc&S74FbAjjH?X$C*k;>TH)Yo4YhbOeM+&;R6bN&2`EMqEC;}<|u zVfc1_B3^fB`K6nOJ~j98HvRhiS7+xxJ-`1zsJ+-WtajJozmFwv$D6l3D-J$^ny_wV zgqK*4$a(MhFZ5!19mu(g?7fEh?w`4h^ji2_&B$GC{0ELXy-+1WB^7E5WXCLlt^X$B z8B3Lu^p#;j33H%5aW3cxvz){t4Wqq+8r5+WD z@r_9yk>M^C$M9cWfre}U*gpF@XI=S{T~o~^^6Nh!ZercW3tuE=*h5W3)~TN$Z( zu%EqeR+=kJ0^hsrm0T0QwcM}C$b@enXf26x>1t0aubNKZU43+Bt)tj_%KlSRhS-yv ze%y08J7ILstqiGN!=`#+N|^xnvs>-tUu@i8Tj=@c1Hy~(6XU8k?RI{ zm)1}RzeNdXUQ60!{@vh$?l%j9ofn{ti>L2M2eKoKOpNUEdXpxz$9I0)lXmKZVh4)# zQ~$vtEel_K^hidVzp2Q4Q6<`THJCP;U4GL>@nle~8fQBPQ{`5pYk@SN?JW2`5xpER zX%Vq^2fE~of7Z1@JRUw$6BC1c!wpRh zEuHzM5wdEu%glr;a~ZknG%q?6)|CJ0VeP+%rH9w*p&Geu)CO%7vsQ2AE9~$Rzw!zn zOl=Hq6qyPfg3OIeQ;-4bCbp6>{tM?5##TtP85-X={!A^MUc}seN$)1bRU!TnQqP+Bz!(mMkN-pz_-`Np{@Zd2!JO+UP*L4f7m~ly4R4fqcIO0&71QHV zkYFZ?#Ivz%gCxK|GWu~NlnTGWAIwe;{pH1!?G=g6u@NPHX@N1D=VkX@>v(;0x`nnx zYxS9SkyF4ew2b!8w3~rnRx9i(O=lG5@bK=@{t+Fuj+^nq487WKdLs< ztC>AMGSGI!rH#QHfPOHB_f#`C=81})KsnT-PwEdWLO+aL=Ogp5_|srP`dB6c920hg(Q;=)QxFzO@O@S-9Um|IEw)sKv`06|EP# zs0g(A^^A3YMJaxq`E*)iT4z|TDXpdE<8N+!0t%vMkz|!rpcOyxxnh+qvX5Jcj6I;i z5ol030Xvs(!!AHl2i61o2J0rV3e4;?67JLC57G%hRd3#WDU1InUIfV3W z6Ejgq%;C$U_%A=pA(W16S6?2iyK2hSk{TSncQq;QAJ`rKY;|@#(q4D%*Q*&JaqO3l zQ5ydCk;!LfE8adBjG9gbA=hm+qiwi+op~9uM4@O}XWAQl5GM>YZ-fO^Hv6Y6aC8H^ zRp}ak26dLz;IEV6#7tKohoEyNfBt`z%u~Q29*b{fEoBpWzzcz{lCVbX9DFyK7$k;E zA{wM>fFMrM&cVhH-3oF?e#F=I9jHihPV%nt&I}JNXKsQ7R1}tEb?Py;OpTv{)RPP(*BxL??(`j6ggE%+v@QTpHj<;>+YfvC?nBjHD1j zz$U?qe){?Ze)~si;|}9jf7g6`Vo|JTcyVIx;IkJi`nMmz^X?Sw+_gka;(~uaS~K_< z^`g2bZ|rAo{b1P_Z0QsH;^WQ9KlAX;(jt+?VrNEvJ~NnDx(_+FnfP%Q z!Y16OE!Cqa@rUbgxn+gvjX(zYl_YSaZY91`+*lg#k__5g5ErqeF*+l7-mcGd zB3uO3;d9xi*YB+#>Wi#Kd4r-*wZ4`$_Zl7!p{#Hp{>eABLBTOI5GgUb~pID*QL=1q_F|@$H8S4U(FwLzHBtTE0YmiaI z3D2kknn*G*I*19qKp(-*a@f`b|2aKP-!Z+nR-9fiR1_R%*A+1Ra#5n`E6?=wpnUua z3v;4JkgmF^DkE?~(@cWDA`c&_xG|o<+ z#<$C9#(%Gh$Ey^>C{ILH&P=zLxbH5xhJTx$_buoqk>OJ{SGfDdGqk`cEX?t8RcJz% zTt%4x_+Qzw#O1TX|>R?5`edSc};2pKe*gi7LPNnm+r(CCEV+5Z9Cd+5k6UP5j*e^5)~?hgR&ttGk>U%i^p23cM5K zna-1vaxPG5-(GL6!bfMuHt9Q~&Q&%(oOKPS@ek9=Mo`+5In5(}X}4>Z6F%Gpf2;*Q z3cNAo1mDq0a`tffC(Z}r=sUp^{0~%XL+cX!5tN4B-4dZGc*3L^gBB3YCn$%aIn;Oa zD|@OEJ>tL_$>Uo#H~5uaYzXUZh$@cdPl-MF{kgb~>a>Ee3NE6(eS++gyvz#9hzo zYD~V>7@)Ul?y9l*$Y#lcsp&~-xPFoZ#a}%>MUZr3Cq97Bt|)~!o7nJ{t36=ZD44j+ zRe>A;WQUo>0bra&Za^71KAHdUaJK@YW$!pZ(&kV*cOsoU04g91kz#@rHc}WcmQRWb z@H?Q<0^0YOvIo>788*TfaP5z#xyElX4U4GQrIuIWZS2!im4;{kc8MyB(>woxWk6Bl znTn2z8#<{|o{cmuJI0stQQ|L1>#UuLsLY`y#?{Ke{gkV&X7uN8eh>GEjwn3fsdzcH zd@ws^#frOhS<+{=M%s7mQsR=Ew^-XqqT_jKDJC!R*`rsNES>IT(<8G;aI$vJYeKr= zgOPu&^3P-EhCD;wzj~PKEcG1mGW;o%`d*=iArQU43UE1AOul4d-p7*_7eA6H*tR~k#llVuyT?toa6O=+ zVvx`vZ4-Bd;q%kotdf_W@QSZaa`26-jKMu0W_j_@U}uJfVn>vq%Y2NtH09}687>cD zquZng7?34#70$!@ovwkrmCr;3V*CLJbRiGZM%t7VK#x($h2W zL_C|89pUZ4{?Qltdfx5^ULs$qPl$=hxrK2BU4~no-Ag_eg`G#HkA6J$4Xh0LL#pSS z?YhKSywfjl_M()c1HaIYdQrSMV;7Cn`Ef1x?U9aiXdlMB++R=uY7oHt1Jf0sp{yS8u~qLCU^z5 z$C+SM)< zZ?#(~)9JQa!rvDgA7AbNN8`#YD;}D)i0V^&^XuYmCjRLPMXv0f%+!H)6Vg5Xj(V^e z*e^h!fEl@R5O+f)M>b`!;7^cw(^4%BG2cAAU=!*M8^pf`2F{+ET`QWJH1LIg-{!Wm z545K>+B<3SOz6@0!O`&08M8B7i^Jye)&*5Sy8vFpN~(kVJ`d))YUu*#&vOQzkc>W5 zW<3Q=Fow&GrvQ9E+-Bs;8-rZM&46+4a7!cSV_QYK&%<`HYd3!(s*P)#THf=xbA`Q^ zHD6RV=3(r6cF{J(Jt(y)DhMuHdAoLQm@!@8TbBpDw+FW3{iaBtKN4If`2PAe zr20{GEI%_FSv*1I!RE8_KE=nEjvU$+OtA6zr*KXk>JngM$hp8B^E%jF7hOWSLV#nW zLx71;97L-TqycvpfgCCG5bvC_l7ZB3VTlpeALoC244A=`;VBb9$)FDD7GW4^#VC>hw2ebu@=7lA$#@w*FMe8G z<2Lc`m57Vy8diL+E$Rqm5Brv<_!eip+31%Yocq;@ipRVk7HTQ>B*LtVfWH(#Cgd=2 zEbObG;rmp+)RGdD$S1y&Vq~V2EL%o`Gl^d;I;}V$-K*lwU3t#_mZd0k z!-#0~Q>60CP<>5cg>hYMM^7RC{h^)Fv~~66^V#NJsewf)uTQ$W<<&)cQ_WrHcsJ)u za0h;*SL`!`KPR|S=c9)iMp9Jn9#aMSbsywp3I0fv$p%mex)~?L!y+ir9ZD<&Opvq( z0}jc_i6sBix=f6c9Q64K#roIiTacG540RdHK5N`nrLG?C&|@f_mJ#Tf;t}cYr0KNP zvnSLbx=GwA>IiX-r)%(yH`jGpK_EAeG;~wqh8q7_*6n-7R+|#>t<)&d+`N!fxud@v zseWSaR^_%&U9ZP-Jla3@rqaTRbz!Z6xm#7kqB zzIWZFFYzDQKk-{}6#gC6sK?@G;u#*J**+n5I?+Rkp>3spf#oP_Wl-e2JlGDg*tjFi zIbM5xS)=ezyQ))ouJ$n67cEqD=u-AIns@cp-0RRpa!e zdfTDjV88cBmJPmd)gfKOTbgP~jy4e^{o!nejNb=4U_2{{iT_3(eLWelTp4k|Zb>PC zl5n--*NM}u(-Zah({A;fIf%gPYhMgcuEzh!bBZ(qxvC>GxHoyVmPvH|aG6)C9|WM| zhrg@Ck||EPJiagWHQ^1u3cf6hy_8rc5Fcz%_v=C!E*ag<BNB#!B7%R87(4;Rwmkh}M zi)P?lp#MUq8D5Z?+_K+px|5=-=k;9vM=4{`?Lz(9}n_4sfKrMMJj%k!;#s_pe+vtqfN zn?vGOm2p9WaVA=8;m{zO649+)b;UK^S6yJZef~zVpF1p9e6WwV92vG+<>{bF_(?@< zqRj%{Mn9<0C~b;$mS&S#IQfLNO!y+X(iago%5pQXP{GoO7D>BkOsk_XI4$)RxXjqo zNbDBr_5HCk=u0egGMFk|#yg`uHE;PcbWrh@SM~$SO{|aOPyJ6o=epKkor zyvK4exRrNy`w8f$8<|44Vv>9BBR}zq6N5U+G#&{mj6fy|;KXe+YsLWFQvaBmoSc(e z>SH#jn-1Qv*fM=2u;X*L=7W)~;l6RfR)u;zZ+9cPv5%RzrA0`O$Bs=Jr)&2%1zZqt z!N2s|S2Qnc!gGY?yBsT*4<=n{3+<&HgyFmx7_7@MUp{Dk1LVbEak`ee3rHO5NE7FU zV=)NxKYXMZJ|Zj5dv8Nd4hdzVVegL(H>v={-XJwQI6tARYHQW<8PWG@cZs~(+^b-+ zx!>Aw9@>U;=^O^=nEq&L|zilNoKCy=5Ad(H7~a$R$qJiL1#u#52`Ny z5xDJJtOJc7e(im%elDZThR207^dXlf@WBzlQ+d4gUCzE)Y;Bhpc*&JAh@<$9gp&R<4#w348m+VvU&3)c>R>dgFu)0_-c+0JpxmH zF!f0G%t2B`2KnrX+Mye~0cirTK%gRkx3z#GYklRLyspTM;sJW)=yR6#;IKV zq${|^(TJwm8hNfce;~7uHQJons7NqLE!6t$Q`9RtHSQc?WEL6Rahbwd#X+W15KGr7 z6hZwH9n+MAX|X21wRzzvh3jZNJagHMyWr}HRQ$$2qeX!C;MM`1frPVAt0u)CDRjXD zRwaDr3z!Tiu~8iaLue4DX)?3MI7qlDx-t*czyk}^xl(?(0I6Ah*p`a7e;JV}$a81a z+13Q5yDMY@4fCfcq-ZYg9oqZy&a?OIa$DoRrv5HpiKiZC{*|GQQyuLn^u|L*f8jPw ze-E=Y%Ds=I7R6S!aRcK(lYxswK`nielx&~0Llnym))EUmX~S!WHz;2Hd5_=qox{sW zE{|92fea-nsC2_o#J+fH`JcAlztke(7tccU+26Kd-sfi@YdSf?SWghURezFcfQFyE zV_5O{QDd&+hT{6rBE+l>Q^_5_!|nurK-3^r6mst%fQ!Ux!VfSM;>Vazt|W@UPnbm$ zB(%dvWj_Nf*Xb;Gb(S7_<;HEz>lJjGuK3ZCTbz1#YJ@P)g_DmDt?$ckP_uYE=kVQg zXYaG0R`^M@SRqC=H^ic5e-|xL#F=FhQH`H_YQDr>lUAF1$t$E&Vln$=MDU8k^ZJSI z>5iY~!~)+ShYsf?Y!bpb%_w-_ggK+!jIa+5Dx@tjUgnpFe$;EWft7HBMHPN?tb`oeK<}VC>M+$&<9W8I=^$C-Ptja`jVgCpDyrCp zp08&AsjVgs(oi#X#(&_~>as+=zpu1}^O5ElVu`~AmKiK{2^B@j=>`o?lR#aG|G)xr z{+Z)K_I2R1ay|misATke#RH*FaQELT77@U^)>}TQ_FQ*tYZOfV6xVedM5ZjNIpn5e zu37HkeF-O=>ZMzyT<++?4YNM}dh1TZ1auBrzh*ymPP(kk-s@C@r8(Iv%G(!KJLZ@M z@bo`cxM#rD_b_%cI(*>K?viX|hB`n$k&4au22L~`q};;;`FRS`+5s$AeTL->!m(gD zt-P8-eRrbx`(AUI=nTW1d_oQsB@!CzB_KL(>h6{covk!x7RLpr{+|I zI9qOaoRP79G`vJKB|#>p#I3o!LO0rt!@Z6vf4Tg>;ff^xpQ%34X@dbV4w^%}04gbI!yP!94*Mhr0EYBoW z6t0Xe^lt`@eoAJ0su1NhXps(% zn0CQC!e5M>5tq9nt*uC~nl>?zefH z@ILuUu?fG)StIe&%# zsw78AxXcA=*b|3BAFU>CDS`LF@Rv7Ms5Qz0rA*%obV;sOErD1G z6O~rPhl0P<6+p6y#B~-mvA|Uh22RchO&tWE6MseiKXY5+s3Y*e2A-~}B`56Tb=8U# zFAmJs;Bj`$59_!y!+DyMaeShGiYToqfTgaQDb-Wu@C400V;iX|Z*^^xRH>SVt(!-L zRZfIW9rCf{XxK04YGs1g!ORGbjDU;)%H3cf#XsKR*oZEG<8dKG18h^ zM*kkro`k^eBk&}SM4q;C8!AQ{@eaIN@zBFYIwf?_b`;%02gGvqe4K#`4~(&QOeun+ zf-ZE7-=W`vE-<-1E(Luj6ud3PKt3o=!6ScC_&{!^;CYp*OVk7klk{8DB*jno(+7W` zkbgWKe9G4z{s!JWP4P7ePsJCy)eQIro+x3(9@I5Ck#(@U4R(h3BD;rRoA(C98hWzu zPP`PC9v6TR+swoXuu@HN6gO9T!I(+3>Ki4r=|W(8g%`J?JZiq9AE zI!ug_`QR5waP#;hynWrA{FQbgd-2Xglr!?U{{7E)@X0sxTLSbfX+H~x+=0{DqHw1; zwEXEA*aOk>!|3@$Eun4WbpUOYDt>+opT+pcsx&(zFfJ0K?r<7_k3mYLOj^2GVBBz4 zW>Og*D7JX-n3(VnIPV>*B7Teu&wvxlBLS*`PQc^SOH=yeQutkx6+c>NV5`Y?V;0G} z#qN;2^!zPM)vSzgHVqYR{E<>wJ9O05r64vw+ch@M^>+@pWi^aYErCU_i{?3+e2tT_ zZyn(>tcPi$rqIp$k%Y^gvtDgqIxWbn{`1*B+2HYk1_!`huYlh$Q}HkEk^vP;ti{xU zm2Lz47~_2j9s@}b-G%oc7@cLmN_BP7cF!JuV8?yFD!l#mSKlidq{|)MUChPR4^Xs^ zT64%^#f`%#wZxCTtK3<_L%zD+?db%=xf>xL@ja^F6Wu{~~beVWUnBr=KhR7IH2yu$U435+@ zeGPtSKhq^;3Nqx)HO0}qd1l@H@vHzxoR;NB8}(Ueuw^ldh17*2yIgx7-6^pTx2RWq z-*>xSLzJcg@b)j{sD3|W13xsDRyT~DbCN?w)ZtwA<5%frfKvds!UQJ?L;zTsiyct} zI1mE{0kA-uIRrE1MUV+&tartCa0GH%rNm=*v)v>okAt#onMUZYeTq+t@;j#_d$~2b zIV>J4O6uy1P3rx2IZ~DD%W2wI7fZ3v_I6u!iKazPRL@4IXMe7JIJ0a3mO2?{_3chHHXJ)j&Ko&?0G`%VzUe>;Nf45(fmx8fhQ%I4bEQ0z83R@_ zfQqQHkk;3ors&|NJ8%%s8XwUw7NbV#=lfnbu}WjKos0{s*^@o}u!Z8a*i(b%s)eEA z9n=wRV{e7q-9L7oMXX&K{OJ6E4hBC*j&I_UT@&tb7+td5hZHmkUUrxBdH)^(eh54x zU(Q4#Cb!Of*;eX*n1t z#j%_4GDXHw6KW+TfM_!5Yo3P_lA$~*i5zg(H}KN>=jgQ=ZR8y$QQTGF3pbI&z+(T- zF5neZhUgb?R><`e+du-L8=MH>8VNTHegk0>S;Fy&tYO82g_0D4orDGuLg62BjbTWk zUvSJ67cGRfGbU-V^{$h--2$5+rME#g{IOQZ(X$?lW*`m%$&WCofh2ZN7k zvi*7OrbX;erNVB!4bOR2$jz$Da&Jc!b1mn43Jo(f#No9PST!~S`TpW>VQL-_pY7I; zZ`Im$yYmb(HN{~-M*#kd9+==cQ#>SxB+cTa1(HO5kUfK*Nc5Kqgh~zgkNgL;r(l!1 zjva}g*rG{>YHW)m8MifYhin%D3*8$%`fLy$XrYPS>} zYT#;G^UbvS+|Wh*rUAz^I5pTxsWYD#h8cfzewU;Y-`)^trq$~~>6%0#lm2+*5XX*l zbOZR*U%PIy*wkkOCPDqZBor*)MZ|kb3G|< zz_BO6Uv;s{ArB1YV=HqWRI62h=gK_^gz+5Grvv%{FWA8x0+XAUv)*o^i}AOYoUM`h z>DEELd8+#5iBjOX`plGQqj?HnnWq;OA>I3d}XP39_ zxodiQ>PF(DjBUOBBr@Ig&fx*&%ClUB{!dfjhZxR8QeyzmAcQSzj&Z=U103y6_7WlAk^6Gy4A36?ZLPANhhhS~S!!iyIEW32t8aHcJ8Y z!&^Nx^oD?hfd$a&Lw>OvT#{fmqD(AaK{WK3k0#Yfks2REopjk=~S7%Q_8Fz zUR5Qc;_2~5uE=&trn$2vjuRKQSr|q6^iu1+>O?vhLl>owz+>s{U&V~8=*0_lfmW8v zP8>mF);8DyVbAQRV02w>B_M-t6XJ#}4Tr@{U%{7yJAE$z$bL$BGzXoj2v7eD)ftE2 z=Y1LFDEL%Kqq^UefB@uuKJXZxqQ*5kJb+Y7e!P-ewxSJ3j3G<>_dy&Xb1s;%=p@n^ zdfk?J8&!A(yQueLy$?T|^yL0D-ya9^*hSU&(b}f{gKvMRMxQQehw~zpjbNXiz%S4i z$og9o+yWVRz)2&ScRl834{bLu?Y7_4GnyTa?*qG8Nj~dQh|o&c^7H+G^eb} z2;&?J@0g^n3xkb8L!)P3oo1(M?JBe@^UT0bGc;!*qvkiX&3!v`L zf%g_3G2dzZKi|pKgVr|^BcO5v_QLoGIZT6+GoTZuJPnUa&hWKDgGBf2S=+su%UGe# z-5~-eZ)>B;QXkepu3e1-eD@D-ZMYu)UAM`jJc6(45_in=88SOtBNh_=e+qiK9Qbcb z_^%?P-m5HpE%8L)orva=XiFpjSrOtLSY-|PuTZ%lK^ACqJi;|cSAJx8Th7#N@z(a4 zIPUDcpplRLgR7?>k5?J*!M}A|ilTg`vi2G$OM>MgZ$GSSTw0;NA{O5)LELhy3(FtC zIW7U;#c&Rz2@Cy?b0kKp?6N`Uipvd`NeuU($vFNqHRnh7F_GZZ@`|nZVgHE@fe!AhGSsD1ie#+8P z0ZBLIdusFG%-}=b*#rY;8Ierr;KVTvgaT;L7Z|9pTl(QGL{3QIlL2*Gvjk_WLJMCV zeWdeckCd&&oxb@@5I&@L)C|dw;@ZcK0-hk#2JK2rbg{^EAN!mNI%KE1i}C(6S4peFzU%?pUtkM@YlCjp80E+iIKqQ zM0fviR;8>PTMGi@rslKHww4VXqpZwzbw07Z)f@rAdOW^i*EE}#WgJeK7WQUIR8@IWMvfPGK1}*6&-Kwfxnn~`h3OOP8^x@ zocMv0@ZFgp10&)G{^QBXA>N}0xRhH@Kn71%4fCBw)A8T;^PH`a`KhKs;ZA$~6|2AA zQWm>eYimI(e4l(OwGi7*j;eS8fh!`WlCO+Ye4?u=P!V9;!gpH1hlvou-2NE3L(`Aa z`+(#rMl*$M+g7n>$&!S`7=Vk3A{Qg$1W!+GBfEySgNtNAEIoOa-^VozhGIAzqj2k< zpZW^yOhuuNel6eLUHsSqXxu(N$_`=;0gVtBnXD90X2oo7k%PRsfSW#7MGuQR!_+N>;9oSetQbb${ei zsXnf(^mek28Hjh6`9-%)GL?4-c)mesQMH#KoE3~W;>}HAmg2ZWC8>{BB6Y(U*AcrI z6u)1T1na}dcfWu*Qwh8!-HQwgWc(_bFoTf-uy&>i;=OH=!-2`OZFkeDHOr=Dm8J-F zs>5p&re69`Ex;i(E%_i41mR0|$R#FX`^*#FIn$6|x~mbq+lhzoL&=C$r=!icQH6@o zCG^@_v0izG?c?LDH>~+8kYNS+k`fsgWJ(dQ!-qniko9I@SDs095pS#|*fV{H6|y#N zp{|F1gkP4JPT~Z+A4ZpZ&2c!sg4&Q2)_)SZPL2Of*TU~)^2RLSB_LeL)x7(?0t4VD zG+i)`jRCh4G}5&T2gY`B3QjN8%gc#y+U|&|qH_Xep^n8l!_i^>xzx2g__r5GOY_X# zSCMH)(7`gP!dri6;r>o8$Iw+3zh3e=^0+Z-;t6MXJl;-^vN8a3sF2wc4j0r&U`-M1 zM=s&-)RyE}09&$G9>Qy9tgxQ^t8@7>y5kBm)l0=+HBEnlI6*_m@Uu_uT=n$rP#I4_ zsu974y4rIdKbpzqvK<=mgMH|})k}u%@yED`Z3yx-WOzyX>q)eN`iM2~(^bef0DiI! zJ27PNR(-{H@cZ_<$(mZPs3UW?;1bAqKw_IgPZ090K}~@?au*`4-2~QI$^p=k94)+sYCzH8jerF}xvM8@ z_8&)bXYA}54GL@SqQdQ)E+k(yPIK1vutObwq7eMl*|H-WncocDj&~Wins!z$`eBFY zIDV3xQ8BY1R07eW#5icyF9yaOJ(pqENyu$dPAXo-jXsaWGI(VrsK-a{pVXR?dx7DJ ziVSqYjP7P8ph#K>+%j2G0!`^;CJ&m;l{a|_xkNKHavm9{A!ex0F=9&J5Zl50$?@Ue z9zYvqWb0WKG0nfxzamnrz`s54vl-j=rP*D|TDoNBkYP-Q>tp%dY71|{NS1b{8+W^T zi~rd5dy&4Z$){UWtLumStHamKG&D8!_m@{kPM-eJtsSc`)cY*YXefxLE*~y8_HI#i zGQtZK>(AL)MbsPRdejsd#3p}g$6~C_i(#VM7m=In$C4Buz|K>%b~wAf4WI@z6JY9d`HJQv=2Q z`>afJeb9rDnO~n%ZS*eTcz?F|MsY=O!|d7RNSZaA zSbEq$Lf{djc)0Qt)mgclww3J%Qemd8eEe_rRk{QEcFW-hl*$mua|c}vH&;@+g3|EB z#DJ1=C}5Dh77#|POsSM^QWcgvG+#nA2K+(@gl7nLELl5VRk=@1_xBBRGyzyjA*ErgC`;qA{dh3c@jfN z0Rw)-Tz^P}fhr8;PId;E^Pqi!WC`J~vZ)RgLwzQ`n1mvs;FpBwqM$)kn9G^zMmQTdo#H@(%<@`TDl8HlJEp zH?24+cD!huyt^uhA*nB&R=v0 zzxr!)0ceerNykC_TWs5^O|QGJbyS_ashQ$kHdgIqa7yk5IAcl7mG z=#IJS2JVZ5~GL{AABz7a5} z5kv<5!h)$n0pWx?Xqh2e2;x#z|UFP~T)EA1&K(gsrsx);9fIpMGC6>ArQ%-ACT7XOy9I#Y?|jDo3K13UebgV>dG z-md=$f0}DKG`T6ev-EiB;lI#__qL}<5(4bgFc>oh^}xSrif)4b9+H6t=cEh01zefj zz|$Q%mzk^#W4`*d&;atCuHd2>*G$3EYS<@yIyHOouNQWSdX+X31u|FyJSR8HO9Liixpho)a9g$G~H)IsFdpb((C2H-GhB};i8EG9zm{{4{=B0u?0czho;lrD|#3){YR}5eW!psOB^itIj1;jVc;+0gkKMpQe!DOH9q)tZ;a7b)0@9c z=nm-$&WPqs4sO&4xw5!+kI3c5OH>uEveqkQ(_`+^AqNkG^{UNV(eR04Q6>_mMdZVz=Ci}*Y4ZZb zd**qcM)RK5f899OyD9e2Tr&&TUZ3Xp;<-0_%FFs2=_?gx8oh}J@Jts|WlT%~yE#S| z!kv(Ga6r<_3~mpMc|$XqQXe7UK>0-AsS9^CQeG#4N2!mHkcNWAX8gFPRWh36TM;CZ zEh`MZ_t>iQBX^{GtPH>Y$@6xfje%+5Hw!1D%AqUl8P^rpaJ#=wv41bGaGo0MkwI18 zUvhAGb8a~dn%dZSn&xJ=X5c?d=B(6vM(jEYpQjtZ=lV0d1t6M`U_yc)*Md?W6TGbf z@Bdf%giNcIn-%F$AW~yo7L*A~< zbBjV7v_db>uR36BbE|2sj$tC3g|9>e7CT$+ZA`4YIabk7$~xQY{$2iZe9!gBRit?$ zE=PEbMMa|1ZG(YR61ELUtt9cT@;sfm;sv({N}u+9Wa@Y|xS%Gf@$K&`8a6#UHEb+M z2Rf6+|K{k?`7lKj!DJ~og1^i_ zw=(D!h%>O66a36o_*6FQJ@uzqW^82d{1;@08N&4AI!`tRx zR(yx-(p!hy3&QOTP1D>K-dXWrMhn`4+~A?4{053-BPE zNeNEi2ov{PfG6ZUq!bIMC0?2N$Qr7_!|78JO?}Sa>WP}Z=i$)lq4aQFT~)qOa_-Lv z9t_HuQ7k@oz$GGU_P#Hxmp7RlQN21>r*dsbT+^3ny{GDYt5)Q(B%HRip%WJt^YKeT zLi>Y+g`2t#>Ec_2cZG097r^Zv@WB8eh0wr?xov=HGCoD=vYD9X0T(HFtAkuOJY--P zB(RvkR01ou??68i^&7@6co?wQQ(Erir@1x0nq~dr<^+eANnMT>>>*n(LDTH!2-eEI zJxhx|j66>*{sc+^)2swX>aXIM-<)Jw`BOOoRpsr8QCqaNgPYP9oJUo579s65SBS5q zRPy1RlOdM)G4{%^h)MDMYpb4cttX!tSIJ=3|G8l(T_p?=SsCa-tOnmRfy-e};T zJwBX%ZNvG@h?<3Vx|W4|SRa_Tf0up`zYNi>4r$Q2&5DLa4O(*x2P$WI6$KaUh!#79 z*n8z^$7IgCeCm9a&8j+%1(p98-w@7j7&`XN(P%$Yv$9mkLa@MVvblV^8jw@A3QS5M z!tj47`@cb8q6>)x0{B~?KI9%uyejcbjL~`m#Nu$lr!j;B9G(cj9Gd*x1OYZyhFVI@ zdJs|R+w8xESLNRobaNx=RcWWvcOg7wNa%TQcT^u z<+ag;LpSQv@+uBw6jq%rGK=i}u4*a%eeITAS%ORINh}Utz3a&w$)>X9zvt)AHx(3a zN^dE~3pRe2r?m|dT+3lce}6ydu=m7$hU~TRFoS<4l#>njO1P-NsGW=>L1y}9 z3U6pUJ%3)vH2J|&^^{AifIre;d_$Ik3? zV~JirtvnUdNPTM2MX^80_pA$Vv*zigP^VfvqU|LX>0B$rpMH#%*)-!uG~HM6qll0T z`nYNQZ|VT+2J^}gxO3iw)-g_07ZOs84ss~AOR*Q+B7vOgDo1 zJIx*cy(w{#hlx*ZW@A3e8VMb)5eXpELXo>WtDKI3H~WB>WG51>B+U~d3W;=3EhP=; zpxgwGuuxepesSkO+WM|Xi@OD0=!LPNtVes#$5AD${2pwXesr;h9xsP7Hg%~@Jr`wU zVU_T?;+MT~-9a30#pMq8zGdUDsDD_uRd^sh6#=*nPq_dF13*>~9vl(eG4u?qmL=s$ zPo2SWYNK^gz2_&N9YE4tPY$x7sMTxScu9Ee`PQQmc9Y|(ZcwS_1(ynDD*5DrFH+uM z3uf?}q4ArzCT0;KU=;9MjIrul=&~#*o`r|!Dc$7K7AFH$Gj?=GYeKz;VuBO!_O~CiQjvQchkOt444-G^v+hE^-W7PpW5O%I00tQ- zE6Z>h0*;YP2!K=Q-+`?}%$No!q!Vd9&iJ5xH9jd?!{1gLo|?qjGxI^9<>$^L2xVb) zJ-%h5-7ZPe!bEC0o)WavV_|yaHcJ~zbIU4wk8+1SHgWmWkj2eHuPHIZG6TMeH-419 zJ0CrfSq8y$2GJK6e2SF@G9`^$y0nF*67qup!F3U(`5)EQ2h|15<+IXo3nbM{T{|LM zt^JEN%d!h+#psEWv?E)uyPw`XZ+aoxfHhuTLf>xfI1{0`;piA@5s=-e&(|uazN__! zu{V{av1JzD{N`0zjY$!XQt==E8@-~lVCEVm!UuUkZpzw2#7yjhfBJu%y$4*A*Y_~a zeV&A{AtWS(FtWp5frPzx*s_OA0YMNE1aTlP#En~VYu$TmwXLg;YHh34wsu!rJGHHL zL9Xw)Ptf}PzQ5o5`TYO2r65V3bIv_`U08a-xCBII;TzSSsN7V~#72AT7@22JUT|_? zt*J${B%`fjEL#!eksVb!DQ@Uv^h2dso>dqVZ)R|Gu)+ECMLt39wYEeST zJ&+re5Y(n?nVqw8gg! zJY|WOI!dW%qj;9a&-DX;>MQykCQrb$RB+{7Lhq6Pfon%*Fa$zKngjX&Rn)9K7A4ld zF3MGWxhO`N$XgQEzq2oyj8SPSlU&F|icY!>U-C#yp|H(P&^8pXSfz0d6W%swa7tS}=_<=d8@FFxA!`O-aEvnzIvaLl;#(!L*4gxiu_?Y9I()<2^*;#|Do;$h^Tn3w$#%F6Sf zpBY_g$+JmWTsR*0!aeV9P0V>hd`6uIdk_79MBDz$s9=Esf1@e^BMfdCYN*jv@;YL? zj&^s}^5QGgl7pO*R?eN-FrEs>O9f#`;v9dUDSTVIDX99Q(jz80aCGfJ{lJ7NZNN9p z;8(bSorRtV*zy4+W{3-pK1puD_XJOva4?!%Ca+Dtr4}q}yj(Q7FxqM9)XKX0nk;vv zrB_pL<46WPz4@yThCu@_b%Eb>W*N#hc+}IQ~F}usdD#m8X-OlAVA+T`(QkevR96Y3NF?-NyqI;mr28gA3$@|Py_DhRkWF-NbXr3PX z9)+^%{gc97gG^(4D))=#cqYv%%M%50Cl+;5o%q(pDd=pIJUHFp+#**hauR2mvI}fd z{HnZd+TZky>TU9-Wzuh^x#7X5Rl=AC)wA{RY6;HTC~@c*;FgyP_HU zNF|x+BYn-`KsOuklZXv>03IOT3t@cXSEzMDZ6uNhYhDBTVIeqCrp;?7C9lO)c(EVrPN0gu?`R=;2DG9rb!41)VOzxSe0noL4Qz+^#OU+*} zZf>W2w3}z)mcYb;&;n{>cz@-J)#q9oeY5H)vw*+x!>&b#f1P7fxTz|kba+?SHZNto zBCj~9B-f)n-$x#?4}xT9TOfH1c026QQ9uN(Wu|ywcLKRJ8p;U(0ogkwgvY`qdd%O! z%ub*X31Dzns!}74kW3h;;mj=IDn`&B8WlUpGFWPOQ!W>ePQgWD=&u&Zaj#TbC_y*O zg3QrhKKM2tQ9@_zlc;PBOOHEP)g0A48Og02N`yI-b(~(|5PE4!TosSa;)vAxQLIA_ z4nvdc6>d&0u`JEeJiP4ko@dYg+=@@&zpboGT%Cw4m=Zi#-$D;ExhIR%wqwcWK2i{7 zM&AGzqmu~NOp^w5S40OXAsA4=1SN5w9JqikNr#YrAdUhulwL*|fv4Y^~H)39eywK|?!vlOM2$1P|ag?RW`^U}t6wZX98 z;f6qP!vVFNtI1R=RH^hkIeb{avU~41zvTHf4wjj6?I1rF-OPQ4jAkNl7K zR3%+rxdhV+6)S8wILSlm!Qy*LL0o8);OF<*UT|ifkii?7t6&+kbT9-4h(MPYm(S!Q znR>F(HD{LVzycz*0Jd`I$b^tk#rEQ4;=}9k+ju6Lj>0OQgs7aH<#M4l?Dzkz>1=sI zeEEleY>(qwd(RSh+xkm~H|*T^*88U}A!KdYwF=D#_aPk3D=n46;Ivp4SH0!u{n&f$ z?KKH@^q@KN_QMfq?&So06KCT~QLnw^w-Puf5oj%6vY!k|OzccNm@92{0J-s;NC>Yn zvA3ht0?6%?01e_BqO>Hh9td>|d7x={F}`8gDl#*3NQx2L=Znl_^j~jX-G5+PQEKJ6 z$?@)}-Js&#cNE=+yZP`I!)thoHT+{`GmgHVZEpqNs)i;Z4YWuI!w$n}Q`3Gb?(X3A ztf4eVP7;=fAy)~eff!E-*z;~=YLwh|v^M!5- zhg?rjmY-B~Xsc zN&IVkhwFT`!j7+}KS<+Q>a7L%yxiJ8m0MlWh({ql^yVFwN`Jx1#{Jz6#e5qlTbycc zWzBjj^D(@?#NSzjbLwIm=?^1))Um_9Ngh5%oxxfHG|+&YMKJpbfZK?=`oB>nij2`6 zghH^8Ou?kFVm{nuXw4+kW>E5hhc zWBj0T9`ql`(k_stV3@E;GRY)515Si#CHa5K6lBZ;Bbj}0fSD9FxD&ymL3wC(5GP9o zCX9gD>Daq8!XjQ4zA*WPlvO>7WTec|+R7#Hug2HQ6Hv{Ubuls-RVc^L1)kPEl6j_0 zIt_jrX^@>izI9*+B@|nk29|zfXA_qE-$EB(x%KD$UmE%fzl<(WDyjMA$kTiH*_V!d zXZg+SgedAMzJV+8`^krC;bl?_Ao~70b~NOgpuPeAF8oY=1!pN{<_H3bnhy^8kCWmP z^~e|ehu|FylpEH`=lHofK&K^D2jBVQd;AZ1{JZ@0bhSdALf=Z`S*PpODZ{~;5?17J zK$3@hGW|}Hhnmq}&GapJrW`Z?F~;yz<{2clKa#uyJIA!gGU@<~kr0@Kun&j^w4o7i z6@E|elLKeWnDAC-$+&{h&;nhCUy4FBU-m@wHupmz-o*;=5Q{z7(Rx+taN(KCd`)Ca zXim=PQkt9K%c@Ki*y&FUZ4UGdzeDd%QF{#8a&Qr5=cZrD&OZS%_ZgV#Z<%GhLc*7&2KR6r%JT z>P2}}T_fiDdzd%Tw^G#V1R^gWDU96#!eF3@0=y=u?vLm_ax5wa(~)B&>dm;y4YV7$ zbN{K*UK=_>umKFIM7c+vQrFiz6z#|r+c;7>mVa!?d_%VFRUY?-gHe2w6?(lib2xbX z{FdYZM;qMdd?6`dJpE3J+C83t=12Gm?w9ohxWZwNbShNsn3ICk6cx-xgr$IWK@AyM z8)6Osc;sk==Fr~8oRAGgcw9{wj8R8QC>3!`K{+0kNv-2Tv5SRJXn~zWOB4#cSneIi z_10v{Waxmv98E@3%pK5KxsxzDv~-8+lIkaS!zkP_fIigg6FA5+LQQ`%G)pLCO&d-s z*6P(VineepVmaCC1;bP6*#f1LIc*uK9u5u)2fUIzhTcx_@_mOsG_;eESI|$jjJ$$w z8qrsKKwp_dhS7n<<7NnI#l(h6jrJ0%l6De19ZXIV8xKo2dT=kk41Z?8g$m*5^obMO z29_ool9HD#-Fo~4y9Rd|`f(@fr#jKRp%|Ex9z?#$M~1&Vre*y;WUV_!i;pKmO|PDm zzl{2WwU>b>*Z4Eu!UlLipTL;Nh<@p0eqS&G?<1BCz^jGR$zWD-5T8s2y%b3DxJg@(mStrtq|Wr&3nLapLPMSy&&m2jS5bS zR~bZJ5+#~^rMWyLM2Xf0DY-L#t^Bzta6wYjqN`W6S}9(w%#sxkjypHXws0MKR?DST z!{^R+?XMfqN8}zIsNdIqU{pj&v%CK|`w`pt0q~*c$+o_>TX?)9!cnebupS5%(#RpcM*j~K!x3~MmNQdtz!4OIEl*e zKiCz2uSgG&QCTtO8^%tBb@%3dj#7b>u=d7y>icRzp2 z5IGeulXauCNgm}c7Tzv0nEkO9lsXs`*26*<^g|L}0A{3cC{G|@&26xu?8HjFuGxIcmSh|0TU95F~|wQGvt#}41 zMw!7uv>GNN1h439xT2m`lMbkVkC+E-F~%Rs&%+muDgHa<(nkKO)@8eFyf7;5f8J&T_W6NRH#f=e`l$xNrA4*++%vy>_I2O zL?QT5GnWc59Ay8cP*UD)?7!%OC-_3;R7X0{U9Hx;#v@7Sp8-W-a4&_0Dck-Ya;QY< zUHLo*8z6(LAHMNs;1s!|Qt4`8=5*~#L$T6~&pIyg*C0C^Y3T6z6A^YcbQi3oy1#a4 zx7sIA2Bb0CH0X7Th6;?1xgEjiM7(Or7=QW|t_O7jyiG3EGYapBn8GUv&ofGeJwXzs zW98sq{OV*f!%C^T!WVDndN}0D(Nn3r#0`v|beNwU2twN;-BKX1RN=9BCy(`!sUNBn zd?I8!32nrB_DonJI=|9SuU7aJqd;oBEJkGKqKq?VvH4L316m^~)r0)X{D+>RGOAt~ zXqIo7fzK5C_>S0*&l&pw=MC|c&+})j58(bc6?hcnjtgjn1N#kugc`d28E;Ujg-u|9 z69;@krVmm|=H_YPFtcRa@r~2@{tEqq$U4t##RvCKUiKzHR zudfS=^o!{~T@ap8yU@{lYHCW@2eElu42JM<3c?JI=s{ZJGR7_ zje_8iAgR&OTagX^^!}mARUgS@;o;zY1j?uHd*{Y=xcm$8{@PrVw`ou)OwOYRpPS(P zq3-eecKWvtz0B}y>F`H&=uyoC9JGt(b{ihgWqlVIKWq~pP-WybfQ^0&&cGG4D#W)C z0WobrKywIkAW$VC92A9Nqzw9iBy=D%HiL+VVMo7}H8DpKm-Hu6Rm7?jZ9HkOOS2xp zeFeb}(d2oN388p$W9DbnpJBPVVPPtl;djCmvs}&1CeH$?d<&Kw|2f?)SRHFP+>1W% zZZiBy;CYo+QpgWNk(%-7g5mTPq!CH@FR_3L2zfLx&rCq&s*F&v7Rlv!U(2TZ_)}za zXKzoKT#f=|`a$8K5c~Xvcq{U2@VM-(YkGY_)etN{F)2k8fKo%P?d`1kfP|rS0o0x0 z$8#wlmb?R9X|KiN7jRVoogBgMQiJ^gO37dJND!9=WE4io?VxWIVs|yudQ55sd}f~9ba5PvHDC_pl6`F;h69cFZ(X*H(f#gBtKa6H(GBPUnsCK6DsxX)PR2W`8yZl zT?D>Co*rk0H^&F4GU>42nxN8AJdnB`$J&AnI3MHt21dgnF{BtV{Ss`7%zBX zcC8V~g>^N=9VF}sz%g?UWDEy{8$u{3vhf1}3CQAUImCSgQj;9AlJF&Y2}h=87V?qB zF2q#~wxeNT3W*y@QUXjUd?+~`v|$&b=iK{hIc`{b|42jp*w^NuS#4ux24#k3g_(u~ z39)4qKlKYc6O zt16?pIit#OEZDgsZXM;9@&4KbZ|{V)(=??E8gujdHx(wvWu%vdhK6x19P=h_E=UY= zmPFN1d)zIZ>^Xu%uLY;!pHkzTgC7Marjai~J>sXtEy!uZtLaYJ77?4}eW@fOpb61% zTV7~Pt;WMc6A-b>&)qGc(a0C9GoWw0nOx|Lm}o@P7|Vk%jP1YT1fmXZ-oKhvqf#>R z#W5`;XTssz)|X01d#nbH)9+Ra4+{**pn?tyK>fF)56`~Qjd!-gw?;Lz zGOq@IhLhpO*3*0B3C-9mF3>-LRZlcgTwnkrUyzHS*u8KUwFLMX>MP8~FyI8j1w6(X z_)lHQhY>ztb?_8;FX2R|s^jA;E92v<)&BuyvsSB61O<;}0Azg@Ukxv-sv7dr>&H?4 zV?j+OwX;IB$=cx5;Nb{rz%R`3UW7k@1vbhAH&D+QxD?>i>x{ekKpTxfMuS~~<_J>% zCtZk49i9pNN1y{{d;y-84FD4sq@EE738cI)FF>#YVrMTr4Ri&i-W(jHP-wLPY1+Gn zrwJf(FTwri)AP44fZVnFTcSkj>q&YUvH*aC;q^n4>Ab)MgX{IN(LvD~PY)3(w16&! zFX_MsB)cE|N_5Qhv%%h0V_f{7WPRyZflF$R1SCBPcK|@95()v(?)Wl0=>Y`JRpf9e z|2M?{$r4`$rOOa7O9lQMDO=vr!&d7hvmVMlH-@>e@n|@LBSO7C+0;xB`B-?l^#zLz zue{+`CvaBi;U1$U^J%t&v$Mf&ItrJ`-x}o+(#mQw@(LJF=viWTWdd~BNJs3$h#ehq z`5~ktF2V~~A!}k}Sw{=GBe9(Nbpj)!w$lH^J6T#=h!i9G-!pmGG&%tK3CS}!ZS)}c zry0h3P)0Hf|Em=J&vNAg87t#u_WvzgWJJj5!@MeK90=MNNo(vr1D5N57dl@}-}|U( zMDkLs#L0OoMh4eAzL3FpFTRjL^zXNn82ARH@#@uASb`^BlS{{QQg7f8H<0;rVu0RIFd%<*u7FKqUBu-WD&wqUj8 zBw{onju)6|#Q0ep_zF6NW2}-e*29j<_z~&wF4cF?nu6KX|Z}=Jpw$ zbmKnO{J@0as(5JaV(2pho0y5H$;=LcDVPiD&BP8`z=bdrHDUO1H)YosREM2v0PYbVXExA}c&Cu-Gg<}W z5s*Cn|E<8F-wW&ohfn-eNT(RxXB9nLuhpiz_9SV+b$-QqWgRG7c&b@1!;2WpKt0x` zr?)BTjZ>C?O>7s#XWK59~{fF&e1_0c4QT0S|>_w!j@U`WXHvIQ}hSsEvtymzJeEBxv~`PtW5B7)^C{7 z`NI{IBfZjRVP%zc1uwqB+j<2}yyCiVcomuqwDXap9m| z>+bISSS~LM@t&C(Fv>a$&30yU%nYBmN0vl)`zv+LV}gql`r`v)V(sk6o*@z&sMw{9 z$4jy;#G{1LG~?{b!C7F!7akDYflG5C1cl}cp^B#E@~38V!6v!QE)q!7#GrbdEvh-e{^0qGpbq(R>U{SV@@x)rHFr+_f{20U6=+gjoxX?wR=Lv-dGq$O;CseRasW3; z4W(?g9NHm;Qs~m=u*MK4N#^R#F+E%rlp)7UWU{1nz8jyLjOPRT`{h|?tbsIDx)e=N zC=&X;79mN)=?pXFG@(C!rz6JtBx;$O#KST(rA)6+VzJD`cS`)n5GScewH(DQ&?mFa zW&4wTOC7`t{dmPJykZv37Pz_^xQ-EM-h#X|9JsPLRp9CZ?Z`%bU&l5BeEmU_Mlloh zBV0-(>t839VEcjz$mA@OS$dUeM@|_ED2xXVZPeewd2f*56~0HtVVplcKhWA{LSj%5 zp36-kY`jpBZAK3I?n^eFdpF0HwNB}b%5Y-5r=z0>u=2{};g9QjPlpr~wENL<0iCp$ zqE4@tn3_36!wk`9uW)rLI{k(;&@bE|z}KRJJv~LyM*Ki|Tn7Byz}Bmc*$fVNUw{wj zC=N}kn>xT0P7ExZjwcOd%Q;%59BE+vzlOeSZaBXIXAcK}pxzSQ*f_YMQUW$HT2`seiszvG@w4*UNc!!$VSg zTYw9h2%bMQRkI5i4ukq1p)G0JRgyLUssf8jgwX$}CY_c9 z38vi_%&`DsSm?XHnNWS4Sn_ zAHH9@8-NAq}1)ZDbVwHgo#-UJAUwXi8cTXTiHXfnz8_=wZ?fw*Y?Z z>MwHLY-8P=M|);;9sdUVzh0d)Q?X(Jb*6i>dByxGQT{HdOgFqpq>7M4eCf6dbf631 z*#~%%_#S#AkS>sn6A+gM=naxVTrD|ii+>eqQ_|c7Np6zkCg%j0LMMw53@8jAag^{b z@;($~qK0E*wweZNO_RNa^u(2}f8&pSe!F+J)4|5riKdDlc6mJsE=?NGPr5rbI3RLw z)UK6>+itll5&N|PTaLY9(AI%6eLa%z#LekKpWq`~!|Q`qj+=FF@@t)RAI;~vaO*C8 ze`ry*-Q4WeTlTZ-5Et!>8tt3LOQ`6Eo1&4()lb~jQoCz>bz}979ead6;m>Z?w#=bh z<$GF&x$8}yQ^nz~5medU(lJEd$o|uZrg7|YrfI&Iae>C-v+)vWQH{{3b&wz6`f zmpmbF<>=8#qk?)k0crU8`tR`lHRnFPf+c7@%7Mw|?j8I0lf63RY!l#Y{h6)lWJHyW zOUqzDl{vDJY6~;?NHQ=CgUX@vMW>ZYpn?Z0c$oAHcs(Rl2Gf&T(*!&ne=&fAW2f2K z+sl959)Bk$qJE!4{SKbfr4^qoDNuBFsPMz5H(-~*=s%E6B>w8}KZQy}!L*KT=PkUK z>VicCi$3Wy-*hI(O;YZeXcbvr{vOLGenoDDKrBLDzb%|}_7?Vduzj(=qidNgxhbQX z*V6fKMmXCUf8iI2zzG$cRC@?3Jt&VOK~mfC_{?z#4)R%!LC&Oonabj07+h z`J(-boTl-hOvgBXzAHgp>Jk*)<{qfrSvIq}>gB#Fll#6W98`4PO51F{Y z{+CB^hSl(cn#_z4MMH9I%vv<#0m0_57pXYHkffcI3{M&NMF6uxub)<@97(vrDU*E* z@G-_!y@WzQ$zbM;S?%K@`^~5Bn35N_I?{sYABIdmeiKKWx*IB7u&7;PW8M5!*PgGA z|8)_c%T#pY)qCHI&#B3)J>DtndvE2@-OEw?F@#np)MvXj;pugBrg=*3@=SJVRngqc zY4N_61)37PrTf9s>CMyME~$1uAqneBrOb!devCgTXlUu1P0g(v*xkz$&p9l}96^FtMdHP|M-q2S4F^c*QWJMdl&< z?fudTmVpuOVRA2R<}%%zZJX!Jh;|AxZ?KCRO!3V75Lb=imXCUO&el?QD@DkLl!U2N zLTk+0F~w)&6tOkP^5;vG3;t#E+}#&ZDdM5kHNr4=N2Q|7JlWqf&gZw}{Aja|@V1N? zg@rj^t+n#&Y2}+cMB}$mGF+6fXH#+k{xdeLcnjS)rl&KhG2~IN;rg2IJ^(f`@`>q2 zph+40K!lae^b|A6Q)pfjLZTa%5)h^kYPmt+9};2^wlQYK2tzUbJ1=wsStbOWLN0lO zSCAYokQUy~GTk`6>P>u2nou}hmp!id+BeDK-5Ad-X}UGPYM0l+2iMAq!>r^xS8ktl zx@<~CYZLIoQq%0M3bc2x{>su~8~xGyQ#K@R9Xt~{f96f(jxO$$W&aTN2_| ztLMBC5|5}O6HD?D`v$TND|bwaSl?1Je`0h=_Ke9$n>nlToOw_CqAG`jrMG8LepzS7 zPfTcTzS-;)1=R?m^G>n#u)o^P7~jD@uVY@s=Jetk9garpaVgp$6BBb`x8Gs zwCoN1cxrfrS45$85Vc|I=~OeHpqL5ar62E_zH_`dowa*x|2NtCU7iY+pRRes<>LVn zJ{GnKSQnzk6AKR3!Ll-T`M!JtsRgi{Ol1 zndwTR0-(N1%o8j!1*HZWk6#yd+=LJpJe;_o?yJS!OOwwp z?(oSsFNkWJxdq?dk*5zse?QyvJ;9IIEB5<X>RIVPPe;L_7Ii{B+EuvN=sY z$*y5JJ@@!M$mT;za_(Ihyz}pEKgF_MKZ2ZVWcXNzO*+? ztVaE#c8FZCVcWEB(Uz*HJg&mj&MAL!(lPJMlWVVE-+DRJVPSlAffco6@3skSF6nUBC|?j}sqw zJ*h-!(P(MCsAML;$ifWI+U0B+l!P3TQ?mSA%}wo>IoYzj@z*useP{5A8 zOst@gs4>KllFfw->4-M_pD76h1czM++vz|FFcHc~I#tKW3^3kHLV|O9!R~e-e&cVu zR(tSrSUIMg)H!PlR#+AEXKzf4Dn6=CN0vAG$IkE(AnH<*r-c-@D$`ElNj_j>3VjMK zaqm8VK|AuAAjwta@vXgOXG^$mrbYaOf$C5f zdy&SaP@dFu?I$1I_}k-R@XtJ+6O|o~Zw77&v&YY}7R7G*aDFb&LKGr-!*ygv#RUAr z2A~J&Q6=8)OBqo}Oe9cG1b-H`E;H3u<7OZtWZ)!%`8Ns=s1(x%XrZ_{dz;^TbHW=v z6-vl@dZMRD`#OF&N`+_XSB99Hh1Xr5+W6;gm&R4Af4%%Ys`}!0YCe7sFUS;jXD(iP z2LJHIPUKwd)U`H-D(k@C=XItIc*6j+`gD&IG5JP5@Z5nC%BVa7c)P zVvY-CI6H;F#^U~y<#GZk) zLFtssg7C!r8{cv1Gi=f?&hTzL}n>yvR21jo(6P)FdnoCXi{JaRy)3kKZ-Q9@M!=3vp+UFD5#FX zo5=hY`s0n;V-n(YnPNKyy0g|2)j)?h@&bL&@{O_(YIKSZ zeo#JX$M&A|?MaSL%fIff9NloEKNq)#q=(2;%*;G2@ai`t9fJKA`&<2O(=0a}`}D>s zG~H< z1eq}v0S6DYcyj!%a4_WKOogUuVp5nqHcx44S~MZV-6=HEv&zy5Z!(ug*T*JMY@v4U znujyaoJns~*mpRx=U!FEZV9W&?z7779=rVdE@|?*{?}3LXbZQP{i^lrvs|6bDZ%56 zBl&HV09~}CWo8c611AbZ;bRV*%uH`M8 ze1cwzk3JZDd+gK=^WzE;FLqh$TYX!&dtu&UF>+diZo8CA6(#hc4WAzPt~ME& zCRLX9Q8}-#8QbQr@X6274#}cydI%|0_C!;0zX<0ghy!qESV_PBX$HHi&hy4!^x86<-So z(9?>0yK5eqDKaOzW~RE1%Y0P)Wd2}UdC-Jy8~Rb#`3jWgnYcC+*^J4@zu|wxdEL^y z@8gjocXEoWbiOPy$#ri@przHWcSpI%d=i`zcIe%*{S&t3)XSxkf$^8ejV|-~I5MHu zT2Z)cVvKg4wZPRsQJk1Pd!cT^e#@exVDoPSuG8U+pwE*B!o_edSbQRmOiqkwAy92P z0W$+nWb}oX2HFa2f3P6dIW;s_3pSxR5iWyRn(bv_o_$TV>4dpek1kQqq3~;+_IYL$ z8+TuPn2IbVj?^lTU>`mT@r}+;9sWn<)j_qYG?WW_Z}x2;7b@G(sSNcox5V#{vQ3Uq zXW*T;!W0}h7h`UO2@`P}u^%ef2Mh-UBaS3&gfn1NFT5Za=BZ!! zqm0BwA&CI7Ax~mV55Yja@gqo`8MqW)&c+-+{{T@{e~>JDq9pt8oA1n9&i-mjW}~Z} zz4gH|(E_iBS`SU~!nDQp0~Gakatl9s@A6|PEr&Z9IUX@2Ad{K1$JL#!L$<|wOJru7 zAcfH(NN^>P`LSmOu3R@ z5~l-vz*kHm2RwhGsFh^DA6YR9%A8G19|Y$gc^9X*xTfDYeYCjF`<$EII$cF>8{VEC zn5y`3s<&6#4Q;)CMdokQL+59;$g`08(pR(n#X*tn#S4B!%1kRI&n41My}b6Yc`dSY zi)>JOIu}LHjcuo6Kj&q%Aa1TA(-8c_#l~IPNjN9BZc*vd3-ml`rdO0pa?9IWmIVuX zC%XoJlc(WK``s=Vm7$CJaY6M7h0{KAi4T;kgC&VAZ+x~X!&$p&(|e;jL>!jAp-30e z#L2GN*2K1z)$Pa`7v-&=%Pz`1Ga0%4sKLP|&kGlRkdo5B0M8gJiYU@-XZ+|NK&BQ0 z?MXyrY^)+u1cg+f3Pb`Na&;il3ZM=+q(luYCx?qsU`rb@6yPVoFUW8%B!$SxEbO%g z69GXW$R$e%nGXSb@z~|57HYdP~u?V-qcHP^;+TTvXiwXfio3 z*nr05GQc7N3UD0}WG#$7E%AiFN&@phUV}-@Gnj$n1DOr-5+irQiy+ZC!dbv}j2i`a z*+8M5@EU{}rf|=XIUT?1qm#Z8fy!gF+k9-}Bbd~!O|{39yiS%+&?!7-PHr+Y3vvlu z8ZjoNgPXE(j(Nb8w6U@@#DBBvx>Ei6KNE9@FRh+>2pt`ZmzkRS96Ceu3*mH}s)FD#+jI%$CslSNt z-Ntu@rS74Vwk}H{g}&#Lp$G2~JD+55m0-=lf`G|~7DYKp-vKGe@iGk&aK50X7&FLt z2=FTjK^Fd=ycCqM9UC&atVi!1HeBdU&R3@>RKdu5?eWbTv3vZv+4s3#yp&m}z=kmY zPLYHQC|EEQu-}LAR$xyOU0@m~Rde?j?6mIM6V$@@Z#}kk?JY}c0`}I)3R`2)$-d2E z-h`scmXx`|@`6!2pXR8eT2^~=tn8z4cvL9*S{Dq@Rlsvsvwmf|B}it>hJuF%gZ?1q z36>=ZiDs9M6ls*iRvFhFa)tEjFpuBc-OimdQ|e0GL^=q>!UqRx{D}pXKIeeWidBxRH9l~A)?AM@YN#?uJQF+v5yaqo(;TR0`LR^ z9h^)|;IJTMg*#C=w3=85Mu>$hfKOFx5$qa+29`b^4opoZ^!*B~lM zZ4ZTnUgXYVnc@ihpgEzUc~cTq(9Zz)#=z(Iv7Q2zNoO!5P{@h_Kosx=IZ`uvRtrj) zV9eysq3so>U0@cn!Og#5Yo*VTFIj22h$YBQ^>|&Aw=-ALlV7zwd+punfz_F`T|Tbv zaSL+KTN}x>@I%i8$>uhBYwO$1#irw>uD;5oVc&FQ81jSd1^`Prz>)>HI>NLfU<(UC zwMrgL&J)$e2akpssZk-Cd%P&F#SsO6fiqkN%H3z#o0_j(#`C_1;@_N5i#<=zo6lQ8O;|Ac>?(6WgGxl zle{qb9o5z2IaAi->=f=|VW#J@_CycTE-HF+{9LZrj*n6R859TD;pmiC?{iOzGk{FpvJGRenQOR(o7NlPg zwx2LG1>b@;dX*rlFZS&UgiusP1$mP_UBe}1+BMD|axUU7YNhL=WnR#-{uEy8 z%tF7i_@SMYhqYM2d#~Sv!*{}Fel8Z~A6c(}-0EIDj|zn6nUf6@|2~hF6Fwr!0w|+~ zrxHPhuOL$7mN9s2yB|EZeD`WcQEZbJ-vb^Ud$zGyWzN<4v&@}-f=Aa*EA%T(_b4a`-2MSU7!6Ik#mP)^{3$^4-vQSbRkC#5-z<{V% ziVl@~JIk!Rth_DoeNlm}y>;pGmb^%G*Z+yinwylMiS2L*7&)1*MO3{W@9(H;3y_<& zWY@;5)3U$fjAA9XOogKn%{mf-5~k8d+IZP# zd5Yr2EYF|PMWd}OBJ0w~BEcpo0K%iy+E?`U~bIyAO@(j+_`bi2Mw)M;Q3UA%gD!2T3@HVyBwM z*d*ca16vhV?)uQcew#@Xs8JeGNm$@KJMU%5W=ZDGXLLVN+@1T<+xDk zctbkxEBkqYl-x=djm^W+trf}AtfP*i{Aj4dQt-x51zzQav@S71-8;T5Fl2{24r6z>B<_6IL^X$~? zW7z4YVoSR+0MM>7o`*63xNH}3h6k|y_W=_IDY-8I!|`Wz2Zp!Mwp^AydgSa5z-SW7 z01^&2x$NBf6e0uM1tYej7hvKtw^_Wj9k9-cG0!gyMU87n@wRfskx$$u*Gt#6%>Hb8 z;G{6>mux(Hfy7UdzaiYki*mE#%S!dP{c^w>ga^Q9D{w0PHLDz^L!g8Qn^=j`fum8w zCKs^vj9O+&n=lgskvy#VB!L#;Z8#?Zm}JsjDWvaOx!8v^X-3=i=u(`bZ2cwvd5D)+ zH1oCT-X5V>oVaeNs9J1|?`vYxdt%VtIdM9r7mu>Evhu4KV4=#C z+OF|pYp%>CNg?dIk~)xROB8rxA^U4smsVF~_m z^Fz(7ksD5SP4__PzKXQJ8fA$lX8@DJU>AV5AtUQY!q1l)2r@&!;T-f?rZTLXi)Tml zZcCOsB+31_$aRD8uU+A*J)6V-kZa3%_)&0SlF(9uc10?9Pt!Ji`Z%^fc`I~eLQI$P z{4M$jYajIOlQ}Np8G-H~aRHRdA=CnSVe}sO&%}cyfh`%@g9#0|35uKym~gnNj{Fh= zI{HX8{xaNVp;2}C%{B8R9ZMF8G!bKW zES6pPR*2TZ71aj!gisE(u)nOkEYtdIPHj?DmCmQFsk>+Wf(iXDwEe`cc{1;e-m$R) z+*LBQF0I#_& zPb{9l*HmPU9ywS!R-=48(2MIU1GxCvG3%G~XXMhy#3YKcBlZx4km!7(*ZiO}Tn92q zY^L$=V6GV?maS5UXNd(~Hp$3Q)1pw8I4J!4?UjSDM%UWOFHUZTe~+I?;n#~7FW^R^ z8zH=}c(XKyPq<Y>KC4L2vsD>6I6-}r@)lCTu~A_kUVBms4pe7G}Vc7EFF}IXX3ZaoFMe} z#@gA0PLzo!=->`kGDtHd-^rfN5l3@`QOOvSQS*|757&6NsOd`}9f$%J!hA20YazRp zZEBTqcUs8xC9a+cvh*}6Vws!cK!n=UZt{_4i3{ALB%N`=N{%AqN>ONX68_FRG~)>M zp%T}NwbHEM+zqY*C3+s|Z}>-QZ)4jY585_2Bo{ z=kG(cF4oagL~aQU!i2>7G%l*Ev5w02X!FW_4_O`=GZvq>P5i^fv#de%2L9>lB9yvJ zRN!PIwHI3{7nW+AhO2G$arqH$0UTbIokdc}hxq6iv`|%nH?-w+0Gw9PIC%nQaXH{U znn>lel!ksmo+V$m%KbJ^UrGhn8O2e{|tm{F4EDp}v1oxXP)KC7=GXX-!*u z@>%@l(;xC{*_>p&wbf&j_}I90c2hENhkMm@XFT8~ov(=1YQrG95TLE&Xv+n48>H6;na3o&pLo7 z3>ezr6@(_=vi<~`xB|C<`i0HcTv8KJ(8ep?g+LpU?|~^-+5)y>t)VRNZ}-;E#Q)R; zqIQ({!#}1qg#$+(KQ}>^6Jt=x62se5y^0WP)?t)@+B&bNyT{>ou{FLy=uggmoe>Y9 zg%q|rXyB`cwQjp%)b{Pv{_WISLp?j%@FV2_w1nM^AP}uD@DA3%dPFHKM$}NP2E)OF z6n*H>6jth#DMKg8Yemn0re?uwx$pxM$Usqwuud>RiJEo$Xlpy_DA=q~;|DNgTXOiU zXwW?)d;=}%C47lY_5f^`U&5y0B8@p&cY-puZKGCSG903s?-+hq48ZwQ?-}|HAynlW z=6!_LkKlc5vipVLLq8fmx1HL=jvj(#APmmzIQTut3*ZbNNw79Y8g|?^JiQ9{u6cx- zP{og|eZ$vj-Owm_07YTr`&g^teQ<_S=1o%gbk^$k4V`O{IhC`9b$1BXy9}*hjU(_= zaE=ey9_&)UpKQ!DR%TzEA!t?Ol|M`cny{b;K8hbKZ2PXz3z*PtN!xb?UVCfXA3p4; zsqH}5+H0vz_&8qbHyW{L?u0mVqF)upvvxjNv3Kus?6w@fGS4LENqF4`JUGT~0)}v| zOz!~1wcuZaB(vD<{dnlib~L7I)Tt~F!`JU`t;^kVir#l*(tK>nj^_Ieq~qEh$TnVU zVEU{87rc?30Jyl3&9cTG*;i13K|#=W#A+~A95NYBTnI9&B%wwA9{-8fm3^$yQ}Qxx zt6J8b`MZ|j*j`I;9$6=8{J!uzF59@&vGnTz87dq z@O%h(+A?_BvB^q+mxyv;fR?B$76(5*`0wp#!sMJoS?>Gr)lbfz*i3(jzZ-8j zN;w-Iz>vReUSijeh9|4wj2l58)q(7(2=!PJHLxtX7K^DbLbILG>i_|Su_q?~EM&3j z@YmSx7wRtJEvo1)8a?)XymRZqi+|stj^RgBOU7Soe+Ur{Eahr$`nP!1zD3B}-s~-lwMEIX=aidV*sJLyE6TSnt6Imki|rRphD zs^6qF%;y0AGxoyN#DoYIhyd#Zc6oqZ4x&A1FFX35^T5qXtTW`9psY;~!ZYDL@Y<1= z!#hk5;+^O47x=r=c=IkKLC(7&(d9%jT`!tjvoGkzBhb| zF5Aem8(2H^Baj1ls^Iyzus`@P_|_27OXV;X!E_@*_RiRk1e;1Bt2UCUCB86Sx6VDU z;>q6q-6$(1^pDrf)-At$!?5&1-=gV#;j5}$0)2M&T+9gOI*##>L~rz5xd(6GG!7xS z(+E;_l*w9n-etBa$f^Ly1KT}8$#aMThR2{6YZbcnKku9|&0=71<=`2ZTH}2;t8WtR zG#%&RKN7vzrZ{NI@Hy(>Si@ry-yoC1=ReZ%^dTY@aKAWnT`XftK^8&xLg~c8lyZLW z*)R8&t~Oh~e0f^T{N;x$76LKU0zQc<=Pd>+!s$$&o+x%o$%bW!((8J;gd2Eya??($)CT zSjs+tp>+|!xq&`zV$a0fQl`hvs67;R_7HSIv5h08=naOVlLMI-gUwE@_!d9^39Y<@ zCr(;tNpTT6w|!@f|DKG$&^hGr7?kqSBu8;YmKAwzmD&RDp}Y!z~i(k|F|dUVd?-7`Bamf^m|bAFsRZQ@uQ z>b@yFC2~@J>!QhM17gLwx1C*qFIS>JVV)7-UJG_>1JK%z;cpUxlC|B09VA?O!+M$L z<7I>J57JOJD?<}o4Owvfelze^0xM_+6vMg)-W<^$fG7>`L@@^sS_}@dv|EN?XocYP z{3a~nIK{kfNq1U9RJ zQ`)@)4TmY4)xpU?9eS{C#;R3>JTGVqpZ{O9g-`uoXiMJByq7X50vXr`?=?4pU>W>J z2^3}RCH55TFQfO}$5o$vf;QdXV)z-|yn}y+i>N<@rK&%H=DKJw)&th!eK6~De8eUj z<@^Ooqyq|4Jg}~$TmQ?RS(63_mu)=5dDJt%Z5-m!&QpPQf5qVGtjASTV9p_Ztl=5q z6~deQ7~ZrYnE)gwbFd?FNjUOVxm>*NbY=GA-Mw9e6PF}M{?I$89q&VDyVuM>JCHdr zVMFmMBAFIJMmkX+1Ft|kBO^Nu2Qsv$J~oTXnz3+jaL@d}XzDlHHp2vZaNax!H3)r6 zpZ`F6gYE>)NuqVeaK7jgAazHm#Es}7rjLO3p3#Vp4VrB}bl=ZaAJzTEB{aIvZ1J8< zZPJR{w7yW5wRF z_nz2mG`84F>@g-rO*AH!*rLK6-gjmfjlbXT|K9sp*j@I{%sF%VIdf*mh$-<-7G?(a z(MN`^X|=vjGuMU0vs9D!OYEv+L7^jI^u z0ZDCjOUy|Ed0IpC=sz{I%S`_S$LYvMVXQgW-vxk~(*`6Q#^VYVws)|&VCkAU^g^Ah z@2gr+1nDN^%CF`{rVJ3i;m-zv5BA~N&pK4xN2e{LGngK<6PGsh6qm{_!Y^zdxLXQW zd>1;Dh;9bNO$@dp_^WXJd*<^$XTDy&>G9aVR8RaKwRdKvspjLJC%YyZ@j$cS@GxoB$!T-wBl4Uay$P~B9GlUfR zpfE@g|CGLdN~deSpMdXw_Ceu^N(u4;Ayz&?Pm61%Yh0^iyq*B)e*BeUN_|~v7BJo{lb40S4g#4ESDn`;byG9!i>$We@o?ZZ1 zwmNX%=3|S#(FcU!dusUEo_(4Nt0OLY#0CE6ZMHV@4|t9UcC?!I?hbQxurOVoC$|s+ zM(}kq+D^gTY9Ey0Ii(>75LLh=-lE9Zf{GkO~xJ0tLC zxOh`87v?s=wUon!vzlj<@hs<0{viHSB-3;9cKR!sBnZSwyxrghm`;mP;LkMpp$iqA zVK)O4tPdyOL#3xPcF#G?RPqNTi{*)QG3iZW-*lz7&YmQJClsCO6d6s!$Oz#pGK_Ao z_>H>$^^#m?xDhz*vHp>UYI@euhSmlI@H08vGNzS&7_y8uKBgxH-zPOIX~2{LEqAx8 z6qlVIzJh`b^ZHWN(0V_6+KP>rM#u3r@?N1VM#HWyQ+tytcSvRzXDnR3V#UI1*QAo~ zJD3b#dhVP)Jx}+ub>mMTy8pC#@xtmCbYq)}T=$!Hhrc!_6~b^blungzksqEuq8@*# z*RL3f^&4~hQ?qndVS^p!!iI|-a+97G!d?zpKCu?Z9>&r+d)oC3oi(Fs7kN*074dC~ zj?X=iA|D~|iC)YjA8T5{_dXLoaRiHbr3(c4l$!ePsN#i~w=O5-EBctF%Sb56V zXV+8dmDvMgF|cR!ioQS43#ZqR`?pMwf9%z^uwZa4G3=f~R{lD)dkOL1;}aQC>S-C? zizu&F7Ut5Q>l{>_;uCG0B8O%(x`$4b76CS931UxJv_)D(A%|&KX}pwOzeUP^%Dy)R zbYY3_LGKX@U|0)*8ASY1G7fUGq<7)g{X*}OxY5L7EYSPlANqmlyc4@M?3=%E_ENDe z8-vOI2#mq?AH=>MQAAKzItRUb+mUnvwZOc{23zqlqZ`C{(W{2VC_(q2b^~DBMM+%j zh|XTRf-aKZ(Zx_+ZGVI+OL`C2{Ns1x)&}^*4R+#h>>nQkmg{G^fl<_d3FO9noLaj= zH!t6p~!a5@doaGv|*OHQlbCv2AoNs^o?T>VQdefoC;7@yH|>&D08eb{_9 zERPRKrS>IFJ;Km-8ygQ-l9eX$^d|eAc%R<&&dz$dlZ>bu|E_e4-3~IZVv#(z<-QI% z3%c}h4pFTdha*WQy3$vPKl_EXKT5YoL?#`>tqquKdgF5`U223LwE>D*PJ%g-Z0BJ! zYi^-I;kQ&Z?2vBWaCor7@xHKs!{d5+Ij_gFSLD4{uno) ztsHFSvt%^=+sDSQ0oezJo7Bd~l2Oxo8E&}k%7-^|A-MD!fh03e$%x*bH}6n!cJILiTX8?69P_7LSm1_95Y&#b zet>3hS6w_MTe-lPc=Q1 zVK%MsK%w(*f0Eq>1CO%FpL}4|Iv_9h(U0_Ybu}p)*;(?mNXXMUEBgsQoV6vHU@#6h zT`L&@pZvZ&4}O}7Ih5R=L`644Z@7yBg*r{}zkPRjjr%NOS2}nu?e}cYjK2CvoB|EG zY2jt{=e-_B_8V+oNN!)RPx3xWp9hoG@cOad>7Z3#j$cOKJlCWq24^$Lm)?vx&;`oH zYs~^=_0G*M3zsXg^vVTn4TdKy6h>*@z;6++YsMvyh7Is zcKo}b7ZzTDlGPagEEEM-66*03i9SNl*@(**dM*wV}|`C<-4oc@Jt?pFS9T(igd!;D@ZO3|QKeRZrBWvp84Hg7n{Oj96k z!9q4tH2wR}Kj|x+kG_ee5joN>|koSbhN-TsSjXD&WmoCUreIz~gWU|hP5Y#XHJT~4k|oXhu6^cI(M z@7j$8Jv8gI7QO8}F8AV_F~iGI7-!@z!%v$$jhXJ)`!vX>?SK&yR%wN^F{}ufC*-)V z$qv-9a#?9=)Ags&p*!`rKrx>k0H*H&gF zCO+-e&euZE#v$s=#_YtlZ}?np@Hc;y)@b5tjJR2zURpFVtm9!KIOeA#KDeW;FmofYyNc%2i3QS6@@$I!J>2FBpL33Ux!i7{{-j;=p- z4qMufE+P5HPmnCSh*;3S$VG&EaOEnE#Qe6PL4Q2U{Z6%-m;B{MdTb6%&9Hmd;CGsn z0&$+aMc{TzE7z!Ccl9L9t3XVDWL(!YMtYJ}}o#Kwt zKSvU+;qAW`{tCJ}pf`Q4h*#))#S9simmf$x+PQntZh@`jt?l;(d&)12oPejw#wUt6 z*o(k5@x-wm3xtEhgAqj03Wec|BiIV%4ysRgpEyLc{vzIQU|-!Qdr1EuFR3KA9kdTU z^X<)pr$!Rt9T`a)27SkPH5xjb`5)ZhWU#^9V23dzf}E$wa-Qa-4nz}5f=J61$NCST zW5{m#{n8JJBCMagR1x2IJbm%t)TtXdVmGb+VqrE(0PYAISGvx}MKv>!qW(vu>rQfP zfpFYej;q4|4NFOgB7PdJoGQOyRukbkKZsY@+otE-h;-0NE+`aQJIeedJB=DV5&l@B_q$mZ4S)9Df?LBFQY znZrnfoFXU4_?M4VI!C1+VusT<<7;SP94Vb5fA8Cg=%QCg6?r=J#BL2-iefcfEJngp z=c0=e_YPcGvslhtvWA4LsS>uqW%&4=P$%Q61NpH4W@OJ25LLALS)v2v>bQglE8W7y zXuDnXn`Uyo-Pd$`Ge!K6`Yl6-NZCW!GmX0&pNVOB1|FHUt14Wb7*)e&OlJ45a1;Ay zu4ozTwx8a0AZH(W)hli1dv%IkB6^K%u-|c%&x;BacIN`)P2^JuO0`I^NE9Wq7y0=+ z+Wos;>qywT4QPuNFOQLvg&ylDyha%Xj_UnDteN|#9y%^aq=?I$8;+3Bb@b0^*s=Qd z>hEY9;X7P@uzZckvP4RvZA8znBj)niqT}@OViNjvuVBG5KFb?!i*4%@F$ocv3RaJy z=z%e??>uUSG#y-o9`yWKI-Nem!)W4@MUb&X!stf5FJ_)E^#%P7f^Sl;=#07TFpQ}V z&UUD|L5tmM2vPu(1ZklXOHqFDE?xVQek7Yn!AqheKdULbp5e87myCAXd&FL}wvoOd z+Ak4+FrxKiW2@+&lWOtE1^)T6V?T)(7^Q>_gVEX758t^?M;Cd~k>-+YGi zE5K>Q?F|MZ++6@GVsAe~dh_vla(O4IK1Ns4cca#k5TV!TIafxV-dQ|W5x-#CdN~wf zB`5h;1ZDOX_LP5bSIqX=8$Rz%@Tx1`_z}d+kovX8@jWeP5Vs>?xk>aFbZ6x<&el58 z*7k2G?KyH?*%hrux?O&L*IUZ|NbJfd&xhN2@5pL${k*4?*s6U@8~WVaGBD-RG5VtX zWJc%cc5^5ABqTq&IjXE^FPj(cmckJ*LB~L@FlfRRj?R#fPuC&b=z>h-wEFha?rH41 z6G2n(C0P}Sg0=fm1~arXxz1h+T7nBLu{*f#kPWdoUY^t9$hrfq=}~)9QZQ6hHC*qP z`nsyeDKVts9wLAr*m$Qf4ii@D*sloAQ1owj@^HtNxxz6<&>-g4(gB8hLIn7|tZqWh zOJF4Sb^O&CAdfxaDgSXWWWAeUx5-UV=T1l0*Wl@~(%AYT5?g!YdCbLhotoG2Jd&T7 zuRxwpLU+BVid{k_y}0Wwc?0Gvk-G}M@(p3Nu#CB|YAT`KI@LJu95QKHZ2@q@Bu6{9fo;UFQB9C!G0-H7pUsyyA83bL4&-zFHeY-&RdA8WGuHbl>aUGY!Hl z+d4ICS?7D-JB+3q8HCtQvV31vNhE`yNGu2I@xyv(>nY!cqEvw6j{v;RS+sZ`~_q-au zspHqA7YR)bXtx1tO+hTWCDy9WH)_zsTzPiPmv@wB6e~jhF%KD?j$1LrIAlAourS$8 zU)7SJJG1(BUD_bNUDvzw{{Cx6_S?h|GF*S;&e_C(j6)i>{*aL{V##D$Rw01FrHk$MUGK@j1uGBD9pVdIVKOmJlaqBt%_K7%+@K_b z!_Aq68Xm?gZj8)j`?0y333?r1?*C z`Y7id4*93e%F~C3EgLj|uJ&3QJ*6rmHh9a-_hd+tSHt;-ze+Rc>u)dgBLBc@1RQ>V z<2?3A$*~0xK-Y|jI87mociwo~(h-)+E52S)2WslOuNJM=&V?` z7)s$&gz#J}^Pj;QN>|87wNz4X0eS7Q!^7f*@yw;wmNQdQb?wWfTdP*pTVDx|70Ts1 zT?2+WPC|4BwlGc_3g!PEON|o@1L5Wdi%Ag5J-+dz7Tq$ObyMO71i89w`_6%M`>{P6 z@xytW8BVPOXA93pH>A`3fHMSko;%=F%bO-xAmglyCnT7ORKCG742M6ccac`|AZr6msY(IE=MFV%ol}?9}(=! zGQ++7$72szZg;_g&-;n_{%b$^Bwy?&#{KW@WJ9sNOog0bd}R1Z&TtW+;T=wd=Hfwm zh+!T!a zl8*~kf+pmmB|I2rueS1&a6uOF5f>=R+4QHSy|?vbGG*Y}5#{EvtC%qHK+^DVm6)(} zG9B1o(C6}2%^%V5;f%3=j4d>K#Ta}>&F1;bt}SyqF*PLGO)pN=8Lr77FX8bqqGgO6 zaxQcS+k1pR_&o{Ce@9RW1~N)PKb<<~qSbHQs?PCg)sX|gdqbzpche1x?_T`ACUU@$ z-^s8l7vX%Vo9}ujgJ%9qCV!W)-p|2*b2~@FW}%D5A8)f9TMs%d1OGil4jJg?N{E?c zoL(W8z=cdiX%nMa;5&!XoEOG}O6^PImd24pdwR6k>M>(IkS}>LhGmq;(A+L;%$|_p zEItOG<@1;-&A8m&V4|Ce@$4{Fg06kG%UYAe3uWV}kQyrnZ(d%vN#sI%^wdAYVp*;^ zKd^R)@Qv(=Ksy^BReq8c#{X<{NLKQmCCgU~CTJ)6Ior&>y8^pA4&VJxn?o^Z9NvGJaE|@M^NrtQE*7Ww(&j*j!kY*?j?(o<(V3F&_?F~B z2>2t;&hpOJ$Qinl6!EqC(5;dMo`-D)+aKPvl1LT}-)$jA8&=ei13c|KRqQEe2s_yK z8-Isvor&*%VQ+{to5|^dw}WhDhfw=V2%P?M$5DfXt)uXa(1<6c*RWB(%snFp@S2`* zl^1EoH>})A6lx+A~2#~MfQN#g|i%_WWtT}uPHx|F+5dao1G6A=+IDiN< z4TmhkJlP9pG}ID`0`A$-T1AtIB+-m>%igt#z#Yl1{mu)sD?gw2I-|mLa#wyc>@ndxsN6dBi=tfG)RpbTQiHktF3+cob(_DhuT?glm>jao0ldG6YU;TXQ)K#gZVYq3;*-2}9w61W6uw*c>IpFv)`he~IDHfox2$5$b3Mpao zp*&$wNJAzHe&Ts& z9Ps6=#+N!L&sd2?1JKs;3#6T{Dn60s*`@2nfZ!DRCRAv@klubspVZa8eT_yXEFo}eDud(y{>dEG8VA>skbU=*3{6|J5*h+tLQIw)Tt=ey^eG zuLqy^qfxVF0f}n9W};}6`;uC^o?cne1B(tNF>_f}wmcWviLe_1PvVF04kHpT!iX}?EEVTX}&(&Z?B`fh^iS&02Ga9AjDTjyWgk(;1cI<#yVN zoi!{$o}0no&hCv-aJu~jgayE0Wu-bz@d4hkfvMzw!?nkTzFsh2&;T}%Oh`OAURTUL zm|+-HJz`gW?$zB>r?qW2Q4OZm^yzPifO7VKW=#D{6zTKZWm|(B{8JK;8E=(b?I~T^ zyqW&K5wXULHoP1oJEx$)A;$nLjt2`ME5X3xP5HDbFoOv4>c96%4 z30-GK{t&iIJT=AhnJBcTcZi|Q@c67FSrd?(lh^;6XmLu&Ax6yx^}GJ`m+gYvi8%93 zQq?+lTYn!b>yW7YC65MG;`HO5?JhO}-cG6AulzB%Ae;VFhxxYw`z&^*jvKIT4Of(e z(XNg31ks}15Q}{JDNjBcvibqO3kp!j4ZxJFB#3jUC`iI2`Mt#n68D`+c=+1|F5i>5 z6N&UfGcu%2w%EGiSW;k@fWXPMVnG8sCpKX2Ti_u9<8d9%qzcg%8vdknH<9Er!CxIY zXwVTqFg!J&Vgqp(4Zn#@2;n~^(H$#~r0XJR5M3BbQbqEBBzlm2oMjF-v;@l_%n+25PA^@dG^0Mz|yQ7(q`CqBlvW9R%{P;ew0^gxF5LE;Ppu-^4Qkc;*Xzt_TQg zC>NfE)$b1#=gWB^iugYoX8rz~I2hU={9%gRNIq;+cIPs@2bHnrv=tPVI&uCfegGRJW6u=Thgw_bw$qPk9` zDYcGmU`BYDI(~p8UCH8Q50-Ydq7PB(@7?F?$;6G0YqcPyPv3-A^M%3mheljU}g$ zQN^5bm@^FdOC^^Rh#l}?8fNCA8G@NzfPtui6o#9IiP`#1F5x?9{~Y0EWvcbvF2f$IYa#DfN`l{ca*dC{}l zS&~Q1?{1_wH&x@ztM{ps6LJEOes7tjb3*nKZlAE(w8iu)8&7DY$iI&OzW)_7;G&EN zV%dd#Oxq&ri-K+*lkz0FhnD-f&mXuvA=znK4c$u|{$AGEg18)vTsJSRcF~G<-Mb~x zwO$XSLc^yOlBf@4aFTb!<&XV}r1-0I7DSTO3=qQdlTrcpM&o0;G{p=cbQl>)1xC~8 z^)lP))&m#OTa188k4=Y2I2RftZy@K&{QJaeQuM%iE_{~RJm1aq5khiG))bKKZ4>zj zBSYxvkYM`IWH#}xvL47by06su>#rYQoN19D43}RPJLcJ+W?=*1q#1JfxA=HS@$&JE z33s>9#(>2Qgj;MhOV4}scy54oM9e(zx*h)H4jZptT6+j-e6mYetJdrA+a#8Y=Qb0T zq%lCG-8B0hJ-fH2r5d`g$uc+$74ko1(GYr1ozmxcYJ!c$4gM16X0GR_8 z@u!CAB@Runa6D_T!u~n~62uNZMl5S4y4{o79(VHa!JyIV}TeU2uq)$APD8^)9k~gxy z+nhq3g!%{cxLT<2Jrw6_Y5`CRfK60ynJ7l8&R5LjTjX?Pj+aByzsdn9(;cw8Q4jDl z)&_oqJjMCdrsO}%K=9zf=K=v8v33HTO4_!n*f)(v&x^DRI#Bt2s^Q-${dY|vTPB4I zQ+joYXycVQY*%hl+c&-)^1Yf#5kAR-_v9rfKE?hQHa-_yp&kHO;hme9yyY~@Vh2#t zJa(`g%xB|QHUXqtQsp-ymUzb!D?j>Y2Wz6w$o34{f9yHI$^%Z&T_p?#t!&8DrSO5_ z7ef1K#sqgWlMv%JF}b+urq$J1^n>v<(!8%t+~k3ai1%72uH}rz&GH*TY1@o~nzO*}}ebftmI=-8a@YELa3vD3rbBP`#LLdzx z_6R!NAgAeL0`g+`2mrk;!5BP-;G$&4lC-4ZEEQcc*c_6MkGzTe7TB=NSLj9q0>q^|BNVS4XiRP*||a z1w9@RerkG;aw!yrGkX~EFDWkfMYfN5LNKihN-+1%ev#M0EQRPB1`KOqMD$yl`_UP* zXD1~k1sQ2Se5h>{l#~==BuUj_4vyjVHQGjGw6If7LkuDj>kWpD#3B&BjFz;~tCvrY z`(t(R3Kxa55Ewg7j{b_CIDOspQwsiNx%?>R7pXN)MD` z*bG=Vvz%Tg6?H!(g&9gj3M45>$L9B5>F%(fD92ptPg}`T$Nsp0;)*$~PRQT6!XD>q zkevA)_u*k^!wbWU-*V5|&B7LAz6fI`#M+q-mRyk_*+v_q{rsYd7D*jtr(^4$4lYgVp1p%fZ28J!V6_8WE8|7s8 z-goWVUMcG|H9z`mQmCN>=v%g|Z&*mC)g7&eH4B*if%{gNClvKV8dO_bv5U`QS=lVS z%itiqW5tPZH1P>*(850Xv_epCPP#l@hAE{QHl8U6Zip-<@3Edxe$o-&E;6YwFia}M#0 zJDb=8)mOo6QJ+6><55;%jYaTydFGcNu&+yPGw8F9LB?s+ubG)%XS~S>H0o$;s@pY# zC^LeM)5s6aO!Ycym}ay1J>h+xaaOIh-`?9R`gbJn=(>L6Di{efpqRbq}vd^TeM@@NGt3 z1|x7_5bV_HykGMq3`H0YrEH9cH=iXsphM!Bo$3`-Zf0KycQelAfE7^)G(2I}ZyXXG z8ZbN>$#Te3eBsUgVEVx0h_^m^t7JbIqGaj?BZC zW6V9F0|JfE%`kZ)UErG$7%gbD?;2~IQFSt0^6Dcd0~=)vHjqpix-Oq+Z*Fm;iXH3gB*+(sba2N ziBYNl7s9u8JJu#Pw#~6_TYuQn^l}SM9YjA&>DxEuAw9)^GM(KTxM{)Z#r?DNM(Zx< z$8c;~lavSw=9Mk18NkEH;sWy5);F)W(dT$c9~DG077}*ut$O;jYA=`5kLjkzv>XDP z$z;)U_+0tPe1MJlhR|aiZdcxY4I80@OLZ9R{^b830yJ&uozO&!;lg=te=C)Rxv$%V z!1#;Z2mNoHSSl0LU&?8RrftB^ousp>Buj(%=ZgOiB#}X$$@tz9uO1MZZ2cD4w<6#x zLMs8(#QKn;Z4?uq>eaJ?VPggH7tt`7T##JXU zvE%^cX4icBF)!FK#0c$x^tV>uE`oxVQT4U~xqLBEY|9)7rE@&+RZ`jr{dzf8W3TeoQ413C!4SmFqm$IcZ z&Bbhd_)Pp{jUy3Pl)l;Y=qsDZcdrT6Q$j%vZI0^on!6dl%533v62@elwzbyZ#m` z`yjSP@TPGlzB1*b-3y3)L4+Zweo1KW(50N@8Kuj*2M~34Iv~7fq#tf5$jaaI zoSgE1Q_s(0VC)>63iC6Xhxf+BP?N;u({h=K=1I&}VxlM0N0~tH83zptG^Rf%Dt$WN zFYs2z->^3n&677LD82DslA!_WCx>@ICdidbCqW%M3au*hqFQ zjm!j{!G_IZ(hZgioeH++1seq$nG7-$^om4doAEZpI@m>D5L~-6!p_@XAk`<=*K`Qi zts>#!10v-6%H|!U(a9~D`fpe|#;=5Iv}qm?EcE_uepyt5aF+{A!g`HzoeLXNqlbbG zm{w_$-AIf!Ee=u(2>c9-NVvrkoB66!@$K_{vR-xaH%TQP^nQZED9nKYA#nOFDg$-X(+{^2-yWvI%hH&m)7`NiWIjaw*t$a zbr4fa3{WJ~OfF0t@ee~oI5V1A1$nTuSF9W}j!2QN=HYt+M;)1b=iTZ*2tDs$9H6j^ zE+k=FhJ59-l`dF4_QLd&RqjcCMmjAsmeuUa2$Sv-QKfAd-=i+AU=0m0t=lcR1ovsz zDH@8KttSQRNmMw%9&`bg!<@}|hYw3!tPHb|k*t-a5&<4hNGo_1R%B)+$$Zv$sJ3iw zQBH1Mi0iBIo9f0Cube6-^ua;Asq{g)eon5GG{Gad{+sJW=fYFo*C%Z?Kmvx1q!6D4hCyqT|o}$m)hm&lCc6?%ybun#6|H^E3a(V{X zRO!<052wKO#QId{0^(EW6A@rCi;?uCy2tl|=q->P++{(+759j6m z_+w7q?bDMlNgF*QBHTBWBqzvyYifk~3CRN{ECw<~tt9k1Zz=8s)rM=~h#Ye;q3YOW zr2GX-HGx=~f?1xX;p{FSJ|T0<*nwL_$3Z{b!i3C475Dqj6%#yy z+bW#96wW>q?&R20TTICQYISN@WC!9`n7k!EXGrbYgw#k%#%>#5v#nZw-WNrsu0C7* zTwT$thgE;#Y=#3nU!l3F7^vb4gh}{s~PN=DotR}QDwWE~-ac{eZE_VQ-w-k1W7r~QY z{fya_0PKcqY*sK%>}lL;OEaM;E-pVlo(#{+kgGECi1-ri>%&?aDin6{`RrHqeb_G5 zc$zuO8XL-%rU<9`*pQx0V=J*q2>kJ@+IY);9G->r5)=W=%7LL zX-*!=NHWrCn&{)6ZTHrAN5yy=8tN@87h5GHqf-r|zi8mFJ#fgR*_TGGsAKt`I0On| z9I$yU+*As2XH-!J{U=Rj;;*YGZ!OJAqnp!ndiTyrpB>^#3X*%Ile~2CZXqlK8 zXs96VS8nA9^$3=YNh@LEMByDlILRv1jL*Bh|7e;wEq3+ z1Nno(C?GK@Q7~Fi)~Pog``_;p1B?{He0-kVM8{aa_b2%O4?5-w(+bDy{$I&B%HhAM zn27?PsDIJ$49K{Tka7IHK0%c-j673wbV=sN^*x1_hd`cBqFM z_=gUHY)QoWomt|4xx)b5dEVo%E|mb*>uP30h14Ge6^8IN~j^5$D%}QG-)=()+jx{zDl@} zJ^1J)`szBufzU4!2U1?fJG;rRglv#VVGZn*eIld$^%kb z9W~QL5H;Sg1@0Gav1dv--QV9LI=v z(mhawZ`;uGsnHo3d6)Anz58Y^DE3Z?B~D2}&70@V%?)a27G&kzs=a#@U)LDe8+y`e zwJ*YI#y{yM7PizVE_i-wKV8y0O<%4(oSl0xHI)=)Wzm)E7FlTP88>fFjK?pYJ6X_A zNZyf`w*&g>W8IQKLqxS0KVXgm#MeJ*{cwms^xsh%j7*U8!ic7+xoDT9oV>am(swSs z!bEw3iLRf^iOEITd37oJQcX?E45B4?AjPWmkPqiNS`O?(&VnOM9n^9cz2_SL0SzzZ z)bpkPg9>lv0jTAk#{E%>&BF`QiB89GT`vp!cSeCh1-9=ZyQC4_^iX|&Q;R=E8_2xm z5CbBk!&a(rOPH7(3?C?s!xxIV*m+0T>zWuG=74E~fD!XIU<8OwJ`OYDmBHrlG?+Vz z6JOk>lQP`QT4-yJ)${1j$UFw1sn!fC!LZB2Yh`sABvaeYY$V#?&zUcK~fiVST|(@`&dO z3}Dr1_zH(R)ar+$!#bR=mYdcnS0duC`I+=XnyWJG=mE>l>GVUV++3n3=j3)I`f1L} zkTokpm9FVTHzO|xz2<6a60tTUYd%2j=8@Qhid~koMyo_ucf*k`dzTU8Dd_DzR=LEYHzPLT|<&AwTD_Qv=@y~4;2Cj zw$Ud$c?dZ}*xe&#z!~aBnLKEU9}^dLS@tK_9E)Op2YevOA+X_MdVsK0{)=>I7KE}SHFW=h1LDcpURFUVyCyu*)-I8T_N30I zQ~TCWEy45re5+Kh$V087E}(~5L0mixh+u3q#E4v}za$*|=ba+h!{g({x56l*|AI_THMkH-UAdey{k3zsL7smq#}~RWws%;e5U+?(fke>efeEknF@1RrAic zB!f4Hh@$^C>l zd9OU1tV&KMBa)KTa|=K7xyh%stmW@TtcBZxIKP$4P8Wphupa2)9Oz(6hCL!$SzEq4 zq@y!Yn@lwvWJqStrBCUuHB@diodM*TOGn(@>jO*hQgm&2ZlC}T)pKgU=W{5U-fQ4T zhM2(*{OrIU8Q{Di)7&m_t8g?{>E;I^^BHt#7Bm7uT^h3NILv*x+D%bxF2$IYi0P7n1jz!K^mG-4BfYn9-s&I(eV9hs_6-e;ji#h4YPEd!wkCl zVvkLDEyw3QRyd0;0x@@1{^!=B70DGtVVHqDPfsY(|8i$@x}}F$ zw}X~eFylcz;t3mFL+S(}WMB{aI9TlLY(U;oZ5?N+U2L&KWzoAAWU7uH6-k$m-G|y2 z$GYho3Myf$UVG~NG%cBG>)Ghb*Avp8$@NWpCpB=m44dXvbW*foRv+gtQ`prwddjV9 zNC+q_9;}B@!bhym59Byf)z)e~M zl&>BGpF#k+7}ZSAZP50KeYbBdpSYvaP1o2ciU!M9KwKibTLC?+8Qh-Ce<2>0ZkAA! zu$JJu@LdbVq%64@>K4kcD`S^!c))nDWtkVp)`0;omKdLKyUa!Ey&D_p6GerZm zP~iya`*`=DbIzuYo=>kmM)#owzg@Yl@^d~rc;#vJ8%0B7XJj%A36JvD1Ehpd6W%-l!wP)Hbd%PSfWu;LZgo}X!YR_hE6Bj_Ob z4Wbb%oU7z-tDNb&)SlMOx40g1jyj2+2cwO$V766H92Kxg(1+;FRa_;cq98hUP!F@qJg(*vAAZnuG(E+%mJTPI47+jF}$H$ZNlLB7)lSTU)77Z$*zxpLa z1a;}(xqD2McW|HOUmYOde@~xurQfW%GEs6RPxsLcLlf50ZW-r(j4_Yt5Uk9pPsycM z8{X$mWwaGS+lbeoqY?8&6aq!6-0Z*xhlBiKAGoobx>&dx%_X`Ho#?*9ZA?{c3uSUa z;XvcG4UcB`wl_0&6_37rpG1GXyzbzIVj^~$x%I&!GtyP=`{=-6PXtvtyvQBz1H5WK z&k7+icJG*)Xc)W0+u>J0v&0B|kgyOx*aX~G7j<{g_q5`VYwPysCy(DYGP|?SK@0cfJ|0&CVt)}s7qO-=k4dkO{BaTOb)}Hm(=LsFt|A`qQ!D> z&lPUpQJYZOIs#g8kbUPX7N1_87!cp8O?g^!tp5R&u-3Nfam*km+UNJlsVl~hxLQ@vC^S-#2SO;pbgak!I<9-OjOjUSpRofHo; zn^eK#A8=67>=qcXc4G@;@|l^8*dbKDuWU7Z(Yw7u`N-=Xx*C>VTQbT2O@N1R@bbx# zIN!bX>pRW?V|%S?9@^*Zf;!oG;*~X!zrep_uegHxEi3tcE83q z!e02-utiuL-IhVBu?5#v;TjSPI3B1vlb;W+M)@@f+nokeJ4F&hY3|M6!%V zlf$XBR(KWF*Od0Ki`?#4QRW>QwVG;Ma5{V~u9%x;_);zO zfU#-QZ0XsW)04yox$ap_0_%p}8Q4p3@z(Iyeef4B$t5+sU=9=-%Y~z*EQA{)Z}I*R z`q*Kx>5n!}4sAtoQC{JbIjYdqqSj(!^%?3M6eMhJXJef#M9Drxkis=`u_gq*14ZpsO^gJ!#hS#+v}ZI)P8NR zQlFU8{Qu;qA5K573p-ZwUkufGj!#Q3_b3lXleQ6Q=i=bBH_5`Mz>N;G=p>dNz(0O< z372>XHAR5Bwa7m7o{-H0TFyTo+Pb}@D(hGb-?9<$WzhR&i`w=wfJlxQ)HWjE<9b#R~8Q$SaC ze@1o?LhElVZ149=3t?+e%IxBh=9@a7A-C?J`O-t0PX8&TE0&#}L_Ta8wK=CvDLs`x zSxuiM;$X~yT=M_5w>&EMNntS2#H8Tf@+IFdOA3ffX;Jmu-PdeJ+*Ukk*HyG7okEd`$i`LqKZ# zXYUWRd;R-sXev9e@ao*ambJ%(`U$i@m2ptfRDM=J{O=7THgJB!-iQ}4o*jTg6D{WT zGQ)!H5aiOQZ4ocfAHY}&QaZGdo?oio5@EhjFaN!1s8f0~=aD_?s9?!fq9YAIo53C_4rwli` zf8VHKq4Ftdb;Z>53O)2x$@#jCWRJaffzIKw(4YLLEX3tc!Nl4e=SL*_^*u9_?0x97 z7vzweWmqR>kMzt+Zf5n%3tHuz^uV}7XS$}UXxJXPL5y7%F@p)is_sL3kkzvLOnP?_ zz~po0OZC7d;^#b`1|g4d;U`7M(8+E7U^CVq6}MosD2!B}Q*o<;7HjZoWGyMwZ^YUcT5}>9aOEJ8)wW~172p=^RSFc zt@urGypiR7VR`Xe-Qr~HYerD)x?_l{E;8K-vi>56`!ddkhw?p5&v91?EC zJM@pA=o$Ns5(jUZlW+Epn=^6Z?D2cihet=uk?IOB(oI8BCQN_vqIP`B5E6Z>*Lp>c zh-NW@R>#JB(q+Zh@P}9xhlP&d0$s#84U~k`H14$I23nZ2mZl{T?-_t3-er?w`L7cr zj*!-W|Cpns%eUnSP#P{0te6o4G zZp&_MQo6=JpljqC)w^ay(idG`tsUEh8*wUd!(vCw^fI$(iV!18^vP0Vor_qE9?}3d znlRRA$}hwzJe)r9zBffMvPZ)-6Lq4z=uw4a92iI!HrZxsx$5BEwL1z( zH1Zk!k*p;%ifSytE50$0v?Dk`D^ zwaX{JqVWX<d`4DBi#fW7aB6 zvT%)lW8|X>wh}+=Jow6HetfGR%e#|A!Lj*wMXzjUwoJLxkG;jw$OB~ap0~Y{HZ1la zWRIWzh^!GupB;Qv+M~dq8{-XAv&2;8qRj*`XJ8)j zWE`wL?bU$1;`N6+bf7DW^D5@6EH#Yn`VkkQt>U&3Pt%()=^_pCk% zzC}38O|YBhA-{PG&!#}Uh(+T!EP8+_3r^B9jS7xZ9qHoe>>3|xrmIi%bpu-k2a44# zS|}_njZ(sDWPb-k`bPIwU>`}cvNe|Mjl3jpCtU}HwYwFa*4#=zGht*4HwVA^OHR5f z$-+%i^A^@CzEzAw%nq>)4{M$j;GshFMby?2Uklz1Gi?ln*C@1T*+IT%V&bN6>#S6G zxV5Mck)(#!wqVI7ICpV40htEwHvD}`(|he|{vH)@&}TOqZ))o+N-=LUh6^+qcX8D; zY{UJjED$a*FW*^du41Mkc*%wT4`#v^yMzU4>&p#v-_P`&pi5faC%VhGumAf@pQ^Ni z^~CYgo{AuScYS%Fu_{pC%u-*NVeBP#rMu+QMD;646%y&KrCXl89*aAK)(@V9#?v0l z^pAU6>Uktv>YVhp(DwjV)G&w}_?lrTs^4p`d0XnocCmcpZK0dkRsO^GxwVc`O5W*fLAtfnX||Tbr=b_{ z6{5^)+-tKQe0axkk5y{eh=(kB0*jxGZ^ArI=KvTc3elD9(}#z;*f-A!H3dT%YUi3H z`$=oOY!_MR>(MvT2G1hsKYPC#YaM;!C~u`dOB+18V?R_xP}muIOD${+TrE8<>LC=U-)x@iAT zavvTqZnJJM1I^#xySz<9ro;ar^0~iM&|cdIPr7k{7>&Wyz+Eb6gPreYkuG*@-VONB z#Fc?WMgs!$2;Y1be`e7<_$`V>x_wi2PzlLbGqim3c+)2(+$P%C$YP4AiMC6FB19?R zbf6F=%AsNlg_pRpa#@I*yjb5vJ{9Ye=Q+w=Dbi_P=Au&1Oz;+t`q7fz_ zMYLq$s3WS(W*cS{(w|0tYqvz#i!EMKHq#dcJ=5gACh0{)HL`av{h2O0=DH>xl6>=# zy=?DFjJr(x&0cuqMjvHqWZgKvCoTD&w8x&X`cGuN35&TwIsjs}elV0(7()X72nubS z_F}T{Gw|WeB2!1g!!?mbm_%y8(~!pd_2 z?d@THGGGLKRPEv&GQ!5#n;!RTZQESv=N=Gp{JxID;G}0YgV;__P&kk$OtUto52rN+&HNvUIJDV|&gCIB?kCNVg^6*Qf_WjvQf1hXk z4_m;KW=jVZ6sMW(S?xZnl+$4mX#>L9ok{j!5pjQ3)ySP4bi-myrg7fcmw0u?1GT`6TcjMG(OVQH_9aNHQ|wZ9K%}xEv?~$kAWH}NaC}B6{67@ ze4y!bv5{C`EayJC;MEdm$3zdSP)NNz7^SCc)NvAT8~UbxJvkZ?1B%u& zQJe0C-~XNZ61-gRGf!5K3Q}K6?|`KG44xxLIG|amSN|1aJ*~Wz`QMdt$R$g zeTcw4e%8brHmg@Z!=t}j@))&pAIJYFb?K07Lm4~tf9ivOKSJ>t;3?>cfd-IaYN=OWFWM%COWcgNMiZv z0&^2jhuY4jg5l+m}1kkRHIlszpg-qIeo_7ZEVXb5#D9{d}qH3k0-?zBi?0VGg$gw}&}Ff<{ngD+{+ zLZJn~{PomG?b zi^#vJt0&fmbyD8q@`0u#7h*t6FL;sNl^Jw;xQf*nQZLdSD$trD*o_gFum8Jvtl%$k z&AO>Ep1uaA#yPeuBv(L_E^fZp)nJE6Z1?G^&L0cf8DWFs95A^NA|0R*g6 zA3=OYoE3&s^O(`J=g_Qhk7-T2znNuJSKXMAiY`Yh7mcZ?FHOc?(R^+-UWVoE_^&n9 zC?8#KN7}d@>AYP6|JG1)_|x6JNRFQYIe;D~p-ESAZdaTTR{X>(-bKOpWMsrFfk10{n{4t~;SoQ6JP)7Yv$+F~P%jLF&M-;CO5fuoWFjLcap@^Acu#jq`ctXS8uXj21w{G*lA z8LL{Wp-9usEBWadvTs?}b1s>GM)5abQ}7`mjvyig{Gg^F_`S-6LNSXa;*#C_`kIF} z;R^2orUoIdOqllE94%8bBVWhcayfXRRWPDkG<&IS@xo5_G!YcoDB!&b1hs#Ey?I)v4Xo z+^4{Dj1c*X8!U>=*G{iA*IFzdXQBwRo#JU=t&QTnQ=VkUt&YJ{hs!n1x$lzXn$@_j zGUD51j&4kTqQ79s5hBW~WNzR{+6YdrX5Kd~E$#H>q1qFIq|-Na`TGT+rS-n@#PZmxh)a7D%DB8FudW3fFWk!o`KBK3>P zf%!jgLCFcg?~{QBBG3~NYKdy;@Xmi}3LS9CyS0WV?ZapAZ^Z%Q=paGp=m59jA(={n z+5gfWJ!Xu#qplrV)_P!wV|i<0zuLCLMbTDb_ghC_wCMGnmXo&7$Zlf)a0eYcJ#h7@ z#(86gEY`I(+8XF$Y3}6};Os9mG&IlB4nhDOGU2LCGIxC`8PF;#M;VLy1EeZlh}m#1yc4T_}~2~ zy+_06zW`Gq@d1>3kaRoEV2FIhwqSX?IZz*x7$im{+(-gS?yu6{T>|y|torBu?J`|x zZ0Qy(I+r>rE7mPn%S1720dub}J1q7PZe8Reu<}G2dr{+NtR@Zh3($2yCqQ>tSL^Gi zTmoAs0s6bcc^j%KQ%O$a>syKM1$qt=(hfxX5!+%76D>A8nHy3j6kB)(t6%e&G=Jyf zLr0wk=Di#rsw*Fbc%~m%v1PcQeSoiAV9oj-p0oBld}+q%**NN9paacwEbh{0ufaPB z+Dd{70$LF}2F8^}6(9pph~r}f&QgzUAdnYZm2c0R=Ok~Kwx11O_OWc^6283_wlqV z3x7bP@X>;iXEvQJY`zWE_0Z1)&NY)_W$*?l6oEYvG5W7#%q+nN=julVYdzi#WqvtY z#)?^UncgvQc1o-M3Uxc?e$Pn}-ho<1&Ytql0N@=~tr!o4S<~Y|SKF#^bmAJRI3^4l zy+eCws<|alfd*Zo9UNIX^n@fiRrpIVihAmANgBO0w2du8_TNDDA4h2!NYLmrLvxxI z*4?;^)H{F9jvIF4?(_ymd<}0E;+u{x>PCF+pPJVfUPt|e=(e*VHr5$coZr|g>^vz# z{gP)U1`F5-@t)PN{{g^P)8UN4?L-D})lZ)|CcsVL`>GPXlpqKUjEXWet!^YHum~*8 z-7UNzTu&6(M`$bxxDyhel7{1iI)>=h@k-w;p|L^e!&rHoW(wM(uP0%*2$WL~9K&y% zG;1Br^WEitAx^nn(?FA{WsZz8(6K5E@wj1$JDC_`SQqgn)A^V5-YTTs`5vhfL*%3n zMxK5qLPl#sA?A>DBQ?keZf+5GO6J3-?>mnl`?%_BnMfn?y5)fx3afBE6XSua6N()N zKSM*b^i70#$z@bNINUyqb;q|be#Jc8XCT&SMCv9;G6>bIO7%GG0R7w&ormCe1@}$) zweAMI`Imuc*45rSkv(znh_2v^frfx?f-a^fOYDP4kJ644i0kG;ntL!V~77; zRefZfN6zT7MK!s8cI@W4hw-1=zJJj>@;$1bQgIJSOKR4Tzb+5ZY-n4*K>4P2@xk8s z(y0kE%D2>jSg7d6t_HdRdIz#+<3O~FP*q|NSFwmx8yXO0+T8`3U2QFzVmG5S-5u4r z#NvgP#RKw=8?Nr>x8l(L^+Sd~V8=`4)%k4}wvDG27a&ukc>SkvH_tp(Mq&jbldr*F zb0uC4d7C3d=8)bbVYrI5<+Q3r7pnGtuW>i_PLAChaSG9k2l|Lt{Ri|sN$^nT zSH(^C#Mk^)%lm;*en5YR~Mh379AtE(gD{WDL$M#iufh^s&+9D}vksNyPOYrd*05Wj9O z6LNpNT%SlFAra~KOV?~C=Z@jIU+kn74pI+)rv&`-yg;eMWDnACZgr_>>rmXQ$q4ff z5&JGf1`W(4B`)Uop7N91je8u5Tpl8Bh?tYU`~`Q)W})55m+_+C8wz%QNfc|X>!fS5 zhqZxS2EPY#2Z)Avj__XaI6$^+AvXY=P3n?hVRpdjDw_yFJ@At?CxsxdVV8-=q(2%2 zHtub<679(W{iX*cBVk+Hp>Ldv@>KC2T%jYzv2EPez8iepjE0z4MIe`u9W&93vf0OO z;LEd4&iN?`{{g`sjY0V@yf1JSTyUeF0SjmK{}q4m3t@yM^$@JZa zGH&YXpZ-sUaIGps`05!x&^WjO9f`?_QO+((9EvP=UN^Z0cBm77#_d#1Xd^SKChmXV zttL`WpX@yTi4DwHUInd|2BUuFPJKssTdp|VgTc<=tH940_!X1gPBE?`%9nup^Q3pH zGsFTs1n>aei7A1>yRkssW(>eag7&ehQDFjGRF9vU8EfW7f1IRaCS}i?*)Z0ex0#?~ z+)6`(k0w(s%?xw|f=o>g@mx8lZWU@Hz(Y)-iE!hXeq6^q20;@&J>uswYLF@6?D;C_ z!v>C-Ga|x3inhfD5(7Z5*xx$G*y}Ot#4TJi!e^6kt*O2x&)C_0fv%9w@0kxuy>6UY zm1h}5_XrpznYRghhC;h;T<IQPN2#y_ym%>2m*GT&4Fv%qoZW^~ixW z@e$eLc4H^j#8=OjM}7vXeZV|$?wo10)ChAAYtUK^SGkxu(hyhq`oP+354rEzQ!<*DmyXaJ!YErpbJD=M*^g$RXYXUHyTB{Ce36mFP- zvkabrsg6yyvbn@sU&}yUq%h48h&c;QeHfo*>SNY=Tuvgh0c zaIWM&)ju+*Qgg6D;;9K)A7aVLiGBSW(tm!B%A-UhH}<2thG(jol+QIa)U0)XPd^#x z;5+zdQ~2Y!U$MICZ-{mO5l_}GG*goobS&V=K?(%@w20VNbQ2kf**a>R9;4v zC-W!A>q@nZTzSbnby3FwGff62lJf>STp}=v4NUFuFk`1iZwq!(et~NQckFx@I;EH( zK@`q6w$;~UT$zbl7VZ{WRI$->MNq#iFsF1P4iG|d@VSDI{d%s@oe-c>+wMCC)VYNy zfG*pJUNHdc4_ydg+D`XbGoSGxGn?G%8pHilt@X4GY>lNuFRx7rW)g?YSlNG=yNw|f zxIHOLvL9(ONopnro!ehSz_=D?APbq3aZu##Wp(=w)GlkjWFRmP**kfc@+rgcwjx)M z#h-wVpgW+tM4=W8i-n8JLL0I)`f6}2p_SIZ7!Jx^R02ryI>cp>le%=)4lW~z1?+hg zX=1IR5mo29sBXsD9cNsOC)t^bbztJ+2~%l)mFwJ5O~^^>$CF2Pg zX16}ipmeUIbWQ|1L(WY03b_D)B<(afux|b|8qmI4-%O{NZsAV18lTJOt&WE zd{Bgmm4-&|F}ok8_>VbbW}zYWck-JV@G{-iu*ud;tc&;I6J|E)V_a9AGVN`CF5hnA zKCjVUQrJ*2Bj`L5jS4@bZD8&+9G=+$N91gvR$5R z0_PYCd_5WVfWRhEFGH1o>F%w?bY~@rFGkxt!%Fo*nM-XHVu;Qy5CsGr7~m&6qU((W zD9abW^XWU>I#N$&*4Rr2x0o^J@AQ(oUe*>Edf+B=Buq9&yyHIYEsV!CjmXVS0NC1c)h$0YORWc=q4q`q$iS|_a z7DtA+M)G}fNs5u{jM+_==O^sCiu~X19Fp%|q$L6{H9s@lZ^e*ZTAG$@Gt1+`I8SMAeoI}*ovB;liqIIzn?bAWYvb?4DK0!2kNmcyQ3%2rZ9Mo zVtjHa2Bx7V1S7yE3I{Rucr{^BG)#d^9xR$-;&SfU)R8bh+rDZHUuhZqt?&4SH=0l5 zSjQA~gC-ZtJ#*X2lLjfK*R3s1F-a{w`Xo9ajXQL8UePz7@Z4+4(?)hWQ;{7z^Kt98 zW!TcPmsAst-?^h6C*$v}#~rx0^GM%tr@S$`2MAxQ-G>+%0Ug1*63567SeoP%X&6Og zgl>%|p`*Ezmeb{t3=AwS)+N$* zAbyZL$)p0s-k#rYa8p6yg%Wiy6L-%#{9yUuNmJe2no)MYVbkzf%cY6_wehUCZIGUu zrCXkpwJc+Vdty`Ga4?;AF5c($e)l>Ren({L=u@jv#glY|a{ z7Z9R>EvIXOx;0n{Ia$(`t0(yaqGBkQ`3Sq$$vupBSajvY4^inYg%N##hkH$qOUPSbfjNf_8*viX2RAG|hYv*TEgWfZO zR$JE{fu=>Kh9x@sCWO!GAm&;^X$cVyxg$#}`o7+a1%~>M-|DWPfp}U1MTp!I&GQBqMZL-04VMrU*tY-vF?eqvrw!KV7_MAWe-KI^ zp!d>}v3l2(ZOE|m@l|FRen{x>24eI+>?!&#lI&NJfpoM523I8jK;j_p#P(raPv2V# z7ueJL2cZdCjxp7iLa}ZV^5p~#=PC<~ESSM=y(2v|c;#AO*Z5J1W-g?*_y+7}J3Jpi zC7O5n?>CUL35aQlk_1)-NhXp7j7*Rc@+Ytgh&^FyhsJ_rjeh+D(JK0WdBhvpkUVEu zVu=sm=aqEC9Cb=5L* zd1T7hm6=tTC0~%(i>((ol>JY6l`68v{n7{LwGMDa;N1#mF-C9Cd{j&e2A) zjxy^807#J9K+ts#z=Lx5KqZ4n$5+1l?=#RRX5*hzp@+gdEXmmuIHI{KI#weyBZB># z5~s+ZDY)5;lgDYLXNNN5v>f_4vYMKy$hY8KeZ3{#qG?WK?UE|K0I*{{w*7Y~n1?T5P)(Ds-sf?gnMeM6kVN42p@Y4yiK#d4#{tL;; zuCiCyBtkq?PfHVRKmv31bbA!a!04H+NVL(&-a|JzE1VrLZV!goSw~ZwV_9uZ19?R- zB74MjJ|2l;Tys}?Lo;OT%LtU|d!&r#MOngxF5X^=p1d!qk9tJr%W zl6!{a4DofS5he}ZyEO|<&iJrz9>zJ&>6O;|=);QiwiYyU(5(L9R~^}2qf?#i@Vdgf zrlQ;*+fcZRE^_xeGD$ztQO~wdwPBXrYCO?4EqB8mEpo@XOqx>?(B@p9w<#z`;2&hI z+v2$T-kX#RWcJZdU?$ujXqqq9BuYnlpK2cB%aJ@xHO11WQ=Yp5b3}#!UJsrFsfhr* zhbVFq_)tgW9x52kX2D@q1Ol}ag5l_8GqRU)2~jmrM+YK&KMrDDPT;|E^AvC zNtCDY;u5qPLAr-gTLeB@Jx9#<8+KQt)VBlDew%* z=_uH5A%1R!r?YBn;hxA+ehI{)_T4uJ1Uw6DL0$(5W6-5?dje|0O>&xo(Sr<(KCcIn z3&St{`3(LuM#o3rf$x1`TcuM9)O^7J+=^cdo=}Me+(5=vI zz9ABZ*Gg@ToETX=A{=cO8M?6bhGOLpP}RP?)-rs!p=H)+80n^^FN5+0J4i7Mj@8l^ zTZdN|Sf0WU&?f^}BCN3v=(hss2lvs{=#@C|msHg~UnvOEMqOfB_6K1TQN9!qrfC^+ zMV~mQyz$($3DI@|_{^<1O2p_@HB%g-C6X#Xfu6dyr=6H)nHYimZ>YMs)Z+q4zj6YWGK|2*%|P(9Q-)@(w12F^y4)}V|vf)QVVq5 z8DlR)oXxfcxn-;SrO7gDPOfKj2ao%90seJK{+v1E@@4|UH%!I`;)hk&`l0A=7erqh z72X2QFa!Mf10TWf1`Ro+l3FYgv6?4%T zr1!u-7~j}gHXzQ&C(fn;nf(qUayEQ_u+VkDt%D=nlG*KzyW#Rm*|yJU=&c9iP(YJ$ zzE50SR@e)`5KncsgyC%&yVr;RP0kejV|FR<9oTMyTHCMyB-u)-GZ99xbRr(GMBqhs zsZY)Gc$DKT!%M|Kct(zOd>?$F3-$ZlV$ZgQZ-fOjAwOM<1U}3IxlY%4xX;1H#$58ZisBMQ|H6^dlf@k>KHmp=;|$Qmi_nCWtkO)V z%Bun;!2?a;&NU6P>5ttRJ$s@$xHI^aRen%SFAFyJ;8YuYD|PY+6l~i+WTb`}lec-g z4RVc}?HkO>53iURIAV=Cr-{#>DVzCC=h&-@TU|%3GJ|U4kQ>n}4q&LR02&U(3H$_trj0}~~jw+QUr#D6+q9c9;VH2K4cO-F4D2s$JCY)b@U3%3xj2VDG>lL%k%?SVEQ2RZvSu<7JY|_*bh%;38G5+-)rM znQ>3r{c024{E_0pzVBh|fw0KLAk}{7f{~sv8ok^EAr}`-cgU4!1WILxL z=UtDG`MJHFc=^7PzAo9;y832G=8!<)g7(kI!YBJ3n4X2AVQt_m2-J8}@DU?`hAQuX zc*NZ|Ux>6D`g((KQNz_O@77|dOaZtGTvfO@B~xW%z-@(W%=ch>0z@;{-{{c+(GEVs zq9Hvh0NKd!vHNR2)twnPrd0VfC9?0AwFd>4sa<;Y5`Uyx;SJIrCPRBq7IiBH^j0`J z_tpG?1qXQ!MccZ@<$7E3%fTdq-RcE?G}II83G}Yg&&whALHqsa5#)sS(&S=klCuqz?lw*h+k!N3_mn3MxMn9%W_(|7NTV-LHNpSVb6 zC;aasU1K*5;JFX!nt+CcM(`A%HaQcKl=sHxlt1IM+`^u7>8ABf`u<1s{r}KXkMsce zH!Z;;NgV(Hu$C+SmzV{8jF`;^$|3qYk@pVK{}8l1Yvm$5f8))&Yk^-)51x-yk05M3VYf|;m$l1$Un5}=!icZ#QYqLgng$?Mn*UXuw z_@{w5YR6pU;iybTB?tP2n=<>1H<3L84|nr7DXK(j!vSL@{oUdBfwg(qrk$DzNSYq~ z5q=UB;%{KA#wGam4N}0AF**EFuy^3b+Z{aJwSQDcb*L8+BW-mZymB2iZj}Zd+Y7ONxYGh;$ttuzC19{^g?&d7Yo{Giz zH)u-tVQS7&JbFaa`SVR9SfQ`-*RWIa#zjc&mtPQCHr5;S3!9Y}r;_K-!g1U=J`?($ zLdFppaG;5SroJ!`2UIP97d-I=93dhmz%^JeLlJla+&O&p*6aqDe`<|JkDoWPZWjLT zaB{u}!wip&%L+MG)cPxGz4A*WcH_&=JV`6u*gVwrX2T8Za{+;sAw}OQZK2!)&N3MA zg70AtHrW|iZ78{+z^Ef2Qc!*_RfBMYSkLJ@i>vDFvlK&;(6~k0l*ko(ov`X{7>i?? zGmuZ}j4Q8P@7pLJA`K+K3|>jh;RDOvIEJ+LG-6 z)51+pD363~v2E+2D?-AwB`Ek~$BP9YOdqxEU;iv}b!Ee#k~1tn6Q{i{uDXeQijwwE z*)!qwx;~M~#!VJ_DOI@3|jo;a_1kQ}A$F~7bl2pJN`k=iyHyWu>Z zP`&!wb?a+U+#&1crf>QgR}P*z$R_#0hN;#bu|Cl#Dn#IkJfgh)9z|wH=yAt1#4&?1 zDeV$*8r#9oCOw;Z6>{qbJAlI?TZC&nFi0HOLLoC$gL}0+z&mWm%1KwGvK){7Z7=Hg zqs3zu2ic8To_iy}LAj|Ji8snbAtwj+75u1s#y9yqsz=L>`#!1+^1X!}@#1DviCGiL z^&_=d;FlKIBiJyIIyf*JA>kLoB!sAP=upkI;Jf-3=YTzYbaZ|D1a6LBgGw(zf1m@^ z4xt&!iOeQw`>0i3)xI6{iyxd3hBFew6RqHxw&42%=~!Do8Q^8Wh0vWI8oG$-3?8Ww zhf{P$%~5`yGfF2V%etlo-EXO}&cd}`c(c1(=+j_V4IHGw48(ZbjT_q#bMf`uUAyMK zM!7H+*kR?$sx@oL9xA&&F}r~8^Z~=8IcbqET|H?-|Q0Df6OY znN`YApa6MxEYP3~Xh8S?_z%XwL6ojqHC%b~b@YR?Dw~yX3BP}>t=-GhH_7)_^t=b2 zNHdDHY=1HKFJ?c;f#9OnHJpOXj~7Tx6{(;gW(wLkd97Qnn7gQ+?3cLTVR8><`f)LF{4hCH|oM_Urn@ zPXn5QGKcvzKs||ygNRoF#|CX_0K}U1GA6;7a1s6;-^H zeqCynrC>M!g93|1a4yvz^tjLXbq@aR%^Um?>HQMlC`2!miRaqenVYjm|I!6(Mz;`S zp_DKR|-xRO^BU z#wuyIAoo6?8w1f>LI+skv#u`uOeMOXKFunVr^3v}v+aKnr{RxwmGoZ4n^E@F!PQz< zz;!47Q5=pFcyf-gb5m6v1uq~9k#Z|Q+Tb98?&W>$MUZCaMV!DBzn^{vQl2Z%om<(7 zTsl{rgN{$Pkz40@k}pW ztNbky?2o#AQqs#R1iUX7{`1wUB`)mn z&Ur3Ns;>U5+Dl^BbN&RJHSjCZC9oA+=#~Tb5T%CD6@ui|h@t{}2EAxNuka_r3O^kx z*DS}=zWW}9ylQn#gSmcgt*=nX_h@-b?f#~wPiK+t2XQ-o@@ud&ipPgsf__C77sU`V zseG!ZTq17(egSxVBnu!V<*UF2ek!Pk2r*b5xZy=DHJ9i)9S=Xz@%rT2NeKTvVz=Jz zv&dj<1w^$MhO9fz+*z|2$KHn~-MuQU3^ie*&fCN#GjMR?+{*K+{l$S_upQ(PbOxDN zYzRBF1HYh04q=|K)QB0pwc4p|^Jjc(!|XS^+ngq@{mve(!P%0n!+z=gJ9;s>D*8>u zq2ss6`gLG-=2Ga9Dy1DfYzY)=&3d42n?Vvyw5C|q(L@5_GHfFVG2GHUTGdnU;j0Nk z6A#}+#}mCBFS}bHZ&&Y%bZrS$k7O-Auz(-~xLEEHVVx-oib@hp^B zf(nuT*|~4g=+zmM(P-d@2)O671$w)YbE7T|?97^A`@AD?19caLgp}m&gS|w+Zku5f zUzCP#Xe*LD@Y}7u_iz#E;`q@)$U_*F7>M*&CNsv1whC`a(R4fiW3@@Q8}03v=k*h_G=V&bC}p8{)K{6%Q$RmjDB4khfJESEb%UVkL~Pi=-@0WY{*+)K&P!EJ zN$rsg(6ab4l?zlp`yv*upVhJsB;)yW7h>bOc7ZMbMB+#hC>OAK#P&iM0-xouXGA~i zLCi%k4d{;v0gIkOxd2+OoJBCk5$4Ckp8;*U_Q3bZ+?%hs2K3_KjlL{n-O!l1!>}>H z8td4Q&NDslFre=MBLZu<3*YskpOe3?fno!qV0bpGHVANyCwza1lTD~DC!hx5do>YE z^#t$08Uh7!268QcQ`pUjK?>aUY;ijjXanY2}$n-z$w10gE^P1%K` zheU&IWl$CRQ~9tpbKrG=gz(<-Q^cL%jtlMtL{BP{V;r=;PGtF^MJzUBr4=d*yQV{uO=lyAtPj1kTIbY zehcW1h`J%{C^2GI;NRL7AaoUtLON{=(fzlp_fH9PU=Bvd;4{Z3$Jr>un1n?0mYJVe z7FD3nEiJ#|g@58t+>-Ul!;Ls@R!&}L^sa$pENs?f^dq!=3h#D;eE>E>_zqe<07W#A zf_L(RN!7!2l*gEM-;SGdrXOxn@L|vKxL}<4{0%H%`5SUpJK*~zbYD=#2XrBy_jcnW zdiDwmji|{Lq~?ZjjT}A07v&8nS8Amp*AETyUr){p&A{zxQf4N)tNWS(cw{-iBjx;S zA%1=zW>UAIqIrZ~rGSyF1dN2(6LR-Vz{5J}WLcWFf-JI>^jI)t2%|beyEAedlG;uF z#wEPe7GJQ%%|oPqWyri`pEU}QewosQ@ZoUT$h8+vD4$-;FYxx6gkm-sE?R8!A|aPy zTdQ9edTPyTkqj?Cjvpb7(a~~aWt{QP=!Egen*GJm(O_wScelfSpuPF3 z7oaD^+mP*6%~F@Zf9$|fVBvZq3>|i0t{bHzMY{gYZ;<>5^3TXXii`+cf}g;>kf`sK ztSz*n1neXw?AMU5;0Zt}uklKD$+_+f;w*+4k141Z$aqc$D*S&6-g}Pu~HYD3Hn%IBFmTEDwXb13PcwX{XrL z%DrVhC=0o_=MNZ55nwDvDujzdEZwz6atgCZbdaMjST>q%fXg>ti>A&D+=9Cfm(}U} zLFeP&ifT8w&0hZs*G7ukX3Uc6p@F+R3F4BPyC)*~CE@^c`PS+~pAGou1o@Jd+0leX zOxH1prN4z(M@;Rw%JX5Rh+K*QZh=IX8XaOzyP$tHsH_q9?WLn1TZWed{1WblQm@P( zGJfwt?6_ra${>cR%E&O`!ez(2wq~K<-YlO>F_=@&LK3F!ZH`esgc359UB|o_2GbXg)udjl!2<%6%PY;FY5%!AI3~?H_5wICrW70jGotkh3@nL<*jV6Wuzc3o18Y_TXP)5zI z>aM%mZrFOt(!H)t#_pQ^(3hGi!|e)|=RfN0;H?bH7NVFU%U<^L%x#Yi%mA!rZ2Vt# z?vQm{X_ES=GQ{T=cEt-I(t$P10p5BJdnIuXq|8CP(Yn*GKd8_ek`#O1>kYp9&~Qva z>jHdl1>>RBi%SmN>~-|Wv<=J-nSZB%J<#7OkK#5OnpPCKX(DIJsyRVyWd&zytU6Vg z<4(v2gW=&E;mN?kG9kfpNOp-OU4dv3lvIHJzA_|FFU2D(YuUb6SI==-9w~j+o!HR2 za~wLrE4$`a7e%?_Ad$tC(Kj=5FaA1rOXp2*my7t1Z5P;0U+_jBoc#Ct%H;#;J|_Z} zL*hHocsyW;3bIcc{lMFaz>?SqReccFATvSQtWm;IC@f2m)oZAf?rxw5=0-y-_yPPy@JQ|HhE-S(F)@&(pqd`Q9;QC1VV-clYmsd{i{q3x3X#ZXH4J z9sv)C4>;SDkHmmSJ1PM2Il_6LDZ&`PkLN8#5H_q(#5r6E(8do4MWGy!OTcu9h5SFHhpG!z>%%N6m?IqEL^SGU`G`X(WT;@P%z8A}JZzJz{hbAaQ;oF+ zCh{5!+XKT21W$CvWmx;8FvQzwh-#9|t@dA1i8R;@cZ?;B}zc5h^V$8Fb74+ zRrSwMK$N8KhY!6wG>jOB__v3j;wy{XZ1T&OoQcq9@*+}R0vedJH$3G9;O04;$~NrkrD(6DSiyXk{)H2!@PzPBkeqrk$m z2Jj`1m-GaIv%kVi1WEzj`v!EuDY|w*0!f5TE1*Cn5GaVQoh5~|u<}#-GMGJFRX!Zw z`wrIr4h$T=(sm=#FS~hXxQNM%O#TV~1$YxX1s0#0duAm8osa|y*@)bf;5^O-;#^|$ zN$Ny(;g5u;Hqb+s7P67@SfXOdn}zI|0{mp{=pROFxb9l?ot+0!do|Ii&Zk5QG~mOA zDFIAvEe z7fMu>TY#Q+D==D|1LvZ;11xmllZ|+f0K7_h?p-8kvzfIzw#Em4Pw|v&9HvMr;hBe$ z_P_Cur%uKqfkn3}3T!R!eGw3=(i*KRi0JHmz;N;?hGW@1?~x>o-4#Zc=arH(j=7;KibfB{bxs9|^1+#fkBEKgrTPM1~;?BmTvB4@va%H4(d z9uyOzQ>8QBJZ~BBL`Hxt`w7Lnw2}35<=AKfa&_AfPr$U=*@G|@grXFr4X!Q70bxsh zz(N?3v;&n)n3AY|@OSu#sX24-qeDrWGY&7@B#J_g2P)ZYfdH7rT(uA=&J#Maj81r!0mj%xFBf= zVyAKhh&J&tqR6CZ!Fs4>kzOGeG93v?*jXn?od?IJKavnGN5i zpfzqdo4K`hrjvXlUNEXfPmYTI+C5e7G?e*x=(wK2E`YoebH53Vd5Zz`qB7p~44!`g zFfV&jYePJZ9tYLOl7^r}$IuOu7JJ}!0M`@&y3w&cw!oV!*$Cjq2xO z^SChM`h@kM&((&3+;maB;ZEL8tnt5On5tF>cs=Z00wEXBU1gtW)4ncU-_yJQEW!_p zkJioY<&ON$dwLdY>6S#u50zQon{upnCcd=9)u;lgg=#R_iil@TV<w=scn>js*WfK{H+rZzk;6nkGWyCkZAhv z0b*Q?YJeDo$um?xS^s;K7*3}X#gxlSz~+#7F`Zz$;JHW&n>2!cc`^W?$!KQP;22*h z!-i1|H#V7tr$SC*k%v9B-hX!&-D5h^4eIQso6mL+ji5dE83Sm-4>-&JcSaiUMOxQu z_7wER)FPQkirLcSxZIjmC6Hkz2oM{TAUh^DZm{yhkl6U4jLsk(m;0{Ty3)7S+T74J z%JnOszg)%iU;Daq3fh0lqq*7PI+pDSo4bbKgK*CQjN2r5hi*5$1h#(GaETbkVHz?9 zclufbj@Pnccq&5`3w*|guucjsg`9(cN2oSxf)HQGgbkEX- zY0F?CWb9CN6n4YecW72beNJR#_Pa$#5Zm-e`_1-VW`<=EX#!1X*)F(Nol+8L))1MK z6FGP5g98g@Jv^apx*j{j`?7%+-@yAIRY$8W2;b3A$%wqbkBqM(X-+v!sjHf$!)F4# z83>>pgZ&1-Kfm-t;f(wVeX9zs^%j(xrC84yGpM(JLgx6aE6Am4*5aDk2hq4ww{|Xw z&dcvT*($UytQpw_7^yQNWOcr`ddBF?jPRzNp?wzB9`dx>2j>I42D5}yAs~*9uktC z5*+iFlhNpuLGeO+Es4#O-3`&Y7Jatd^>NQ0$7X)SRc~+34@pZ84$i6?7rhh>2uYJ@ zF{{n^NGDT;P2xuNE(pk(uQaD~n&3W%9??XQfRWNAL5VqBtsweRC>N`M57p!YMtb(n z^UFB7aRJgBJui7=Qk2XoVQr8t3j9gaxUg+jv85JU{ueI)n>m6kj^AH6+CRC^@I-;f z-eK4JEC1d%#U>YT$IaQ+ls^-ICKvcgRPLbdBB&ve0mOk&tD(99VJnsyIV1K0{uyPO z_UcoUgsf^GywU-tiYrH`FRJ7I6ySO^_V+RPeLzZ55ZnQnyh_J>4P#0$U-s)B^+Cpn zKWRWRXmD4qhj~bo6w-Ck3alZFe}Zmb_5${sU-8t>KWz98DzU3~z5Jo(NPXg;gRx@r zgO+0ar4hA$`{J8@HybN1ZoQJ2v1IG8xoBfiL(+1uRXNHdHH#`Pg>M-I@BVN4LbihX z8vkNz$VWkj4KhKr-8|8(gxT3|M$N>3Pu!R?B59a=)_h-c6g2G2o%h$!M*L{fVl9*W zQmKepi(ejp+B!ZUImN%q!0E`K%lUt!1)p#nMBYc+#@l7ii-#q^@RK!N54oFsG3XdF z!w-Cff9n}BxK|F2q`X5YcN78lnW$R+*#rB*Nx&s{i33+LsI*bJqOo+)L}qYdpnv4@ z;HXubHgDTDz|9&Lg)EEo59qxzikq=jIdbET?=~{6Tkm!3nTdXzy-8kjT3Nq!sO%?Z z3W~&sm2LRc@RZ3+S^FTxrWUL-bFBZwCp9A^({c4#Xi25>YRpub?G9 zWRN-2NVziHH)2OgmE3hfczJS_O`>aX@5IDJuG-SUn$r_ke$HAd`#;nOR6wTMw$Iy0+M3@PvBykYEBA1%^`4jy`eiA(^!pLkkZ*pE<%DVxEK$(+3(twbe45V^Y-pM zQ?m$Ci9FoVdI&v|ilN5aA9~p)s%21JNwW~ZRGeEiD7ZPe6Hl48zG!AaepGSe(v|u4RhiBfQwC>+ zW@k>wnLY~ju4=~n(UhiHRWQDtRsP{2^%uEI6PVukg-6_+4ay2%-#&8FNL1T?J8{68 zn1Myp3b-tQ^5lu*vxeVK=W-gdvci`4i;GNM@TDvp9m}rNO~%)%O4nFbUZ)>%m5{LlazOW z-c#XyK5Bu`=O2Px1oNW*rMG)14s@n{Q$#>_i4oMWlbh@CheUCcLMlVhE2?2GMj``y za@oYt08N?(xgK47`@7xmKu@RVNB3EHY+T<^yHwpkE0+Hb>0E`n)WiO53j+r*(&qOY zvzy-}&)BhHVxaQF#NNG`A18L+>eJA@Q=2bCLrB zQltE`W=~Yu#h`YvpRVm#Km3QkIun63@!N$<<_xnH;onzpQber`Wk}@{fH_=j*MtJ5s*ynn_3G9n4%|U@NfpQlz*^TI4KWGRgCT&`Tws1{eCIwH}+EHu( z1r-Vgm8zp^bOt}y+?Wy=n7XR;72c@Sm5LJM9etmpWu7*8Ilhs5q#@!2-xM7JtsQl7 zm-0(sT3R4R;@wE3W4V?w!M}<^WU`L%hzOMM4BsPsB~Y6QYkCQ^*9Sxkdh@7-szKs| z#07-*-IK#XMnP5`;nI)XQ6-i<+(H6%P0BPCq%8tPk?gunmZ1br4Lo@6<$)DAW7!$x z{&Mw9R5NYc@5p~nOK`x9EJY?mM>MYg7k^no4hOE{&>fP5y()k7Rb7FaqBhV@W)1h& zx~-8OtLhC;Ix8SO1*ZqMXQ|Lgz!-43`IFo5JHk{W`u6tCojE~a*Sq4U4rKfsIUQZS z**|J!NWz>-sm}bRcv?9A3u%O#h6RZfI(FRDEy`6Yo=Qy}o~RxMJk|dtI`!_$BY&6~ zaR>OO>=qt`w=;S3Q2MrnZ}47}j68=WDz^meoE?@ur**a#>`WGD=CNi=0 z^Xy|ER7}E88Ww>+{1%vZKOaTzRY3ha1UE3(4J;PSB-pR?M{omgVN|yIc%)y?uB<@z zUV}UQ32#9y5>Z@ye}bpO_ejet(CV-xKb5bn16h43r`9>?X#Zb*O55s=?B9Z>R!^G# zX3#a}@%}X_zeLaYGOBi8TGqgW^B=s*-bbG~4fgvEp6ROMQaD0CT15++bwz$ETSNCv zids}2IjQbq-z84OZ?7F@_g`MPAtzx;g8!txg=xJXKxjH$X?66~ug+gc?v?XbaRpGLcLQ8s4gX zrE(n8ysRBBQ$9xH@gy|<0`s}^G}EY@Ks)Vo>lu` zlW<%03f5FPB{S}R-9o_WlQ*;bPPT1ETOcjSY-`2M>KTJ^VOP@rksDO!&l$k%X(L*P zLON~0g;lr^X9$EAfFUJMr>Q#HwgDJ{Gk^lK+WJ*+H$OTrB)5?49i8g7L6avY&B43l8=J*;_Fb znZf+7aqKkZy4_4Ox2yGZ$7F67;R9B!pz8^z$>)QHu_tv85K~b<;h#ED8aP3NTjKt9 zXWivua1Nl19-?1sIb8C3jmI_4`MYw^%zBhtH?y*;ankuUkK+3+9$vMHs>G`i*yE~mb~jonZXoH*>#OL5`6 z%*`W~BNnxcUAcL9I_{i5Ji4iE8e*7_ds^|M;r>9!KVJm8rc}IaM}oR#_y*#KrtHC& zlDv~806>y;WOhB{W`ivE{8OhASuHAU53<0U z%uK!K&-XSp_d!x-_4a1`CCd$EGv`o_dk+3G3A+`emcso93h>C{1LS>(%$wjM|3|Jt zzPZTGRmcoKpBpov7qrVX_>TGO6l3dN*3m-0w-~;+2x>H-#t`HhS|h8<$Y5BpHH6`$ zgQ1jL)QO;2?ApXpn+|Gxi+)t=Ql@0AWX4^-vi$1OL6zf>B=x(K?>{6)jDdAj!oF*I zWEyxwL?xPpd0&N^4!5utcE3U(Br?s_;JeBf-|C${wQP~4d|IeqP)Lrf+*x80j8~l2 zxq%)c-KH_8;*8PU3(xx^gW93xk@gWRx+~}vEUmDNuR*$L8`f29GjlYX2{#pi{vlnR z+}3}|HqmrY*h*!4>mhtwS<958ghSW@C!i2~5=H#ViaYN!9?F|4dQO3TjO~_hB8jjM zYn8?WEkQ)xN5XMq@psDK4(XppnX@)+tl2JMS14y>9_fet(dqlRBN-XiOlTkK!n}Nm zyLdyWvx0S%!E+aajGIy-R(a2{Td~`W*I!KmS^~YUkua{WA4GleiTj^NvU_fwi zeB&8gO?uvNaRTZB{*iMj8qX?~oA6p@G?)ES*>Qr)hQG(EC4ihS1vw`bNq{R5FGAHf zRsO%CuBLME;TWNx4g|aOfE~G|hZa4;Z(18iEUF*6w-wEtzJKJzd6RIH!DHn}VWxqr%k~dUiOkxYH`m`RU^lADn46g}wYQ;zDE;L}v&f+bVQI9$S`Gr`5Q-5J$GVDi`3mx~58C`;`` zLnjYhF?0ot+WUUm>TTaRu^Eb-X@2@R*A$3&G`v2J(SKqSaBnDZMZp{q+b=6cc_B6XLglDK>%I?*}OOmb8S_YK&b=Zt5HGjri)&Z7+T8syjCnhB=i1km9mN^D4w)i`n7b^ z6<GjP2--F-%!QoTJ-Nw|cE9Pz7uxRrG^Q}FrdTu%!^_+jzSI)c|UGmtg^T+RP z?dw_XJap?nZl2d*5ExqMU3|{Ec;kq3asNQeRU?VT>u!AEy!g`?uX+JK{eV~g%-W=8 zWQQ&A042~zlVD~6SiuP;01_~6B;r_5=s)R!E5=t!yH<{0nSQ0uZ$tmE1rp%bH}b$q z(qYMo9v^!1vdi9V*yN|Iej{o~OuS1G=}cej23YVg7C~_$ELi`Ot>OwaGM;0gm+{)# z0Imec7nJcG>6LGP=924EYg68_Z(Q-hT^D>|cYSaaoW?I(w=VtGd7q%x!9vli-(9=) zQ>}x2Yh71AjEKk146G*?BqNteTVN3-Nt_AaWuXu1Fc!d<<*9Y-sv3F%%$^tn6ayWs zh>}-jJ2*>%(jJrk@$5SnY<}pz^WS->du@-SY3Y|Q+GD*MHY4Bnx2HLB>=kNpx$=rvGhMTKRdn? zCCJsUGBjY?hK=jNu0iE+4X-n6$>1C8kj`utm(dyw7e0i28e`cSq?0%ZDqyL=xCmJG zGwBBDr;i`pd(X`u`~2s@!Qh(*AD3P`_1WFK*PZ&z&wufQW6%BI;){QPF8T6nuRnU> zS3;3bo_5#H4d1%!`y0YvLF;C}a9(QmjvWW2(=NREmcQS28^E~`?oGHh8Ok9aPa@+# zP%jol1U#SQ;NajHpd_#z5?15W>}T%UC%w1k^lgnjw$%EE_Mc+BTDtlevV7wo=WTeL z>~$~t*At(A>sj)P-;+MQac)QdfnB}J#K>o_eG0G8J0GDpz8toNE)8scQc6F0)gFv{ z3=x;kXPa1?Y`@z>TtZwAi5SlT+W^_@FjD{#FyKK1{5Z*nDq(H54JI4AI0xR~CT|dl z!8C?wTL8tB!fEx{7}7s^G3;-d(%s*LJ1NKQ!*(hZuKTP^*jXWPgK1 zXI!Vb{&elu|7N&IznA>(9X;KDy?iz^d5=Tx{C}cpUF9!_n#?5cX^(gbGFe&GO1?9Xu9t0n{HzF-*nSE*RcEd?R)2%ee|bd zojSdKyLRqrb*vdC9C{c5oVYR3w;1ZjCy$KAx~~25od@pOww=+@ZvF2&gC^9q%;1SF zzrq~ehxB|M>GH-X>n!S@R}Bf)et}}^%yoUbZ-u{UrZuZsuyN2Lpe(3Zh5hmg;;u=0 z1;Z7Vx&j!18i`ySBoYH@gp;KrxVK;{Cv0nLN3dTDD|oP6NM1e+C%B1R0&gi!#YG_h z@)6b0AF_N7+u?w_1Ms_n1P`Jp$AAGBx)v;z(3y@zuoJjJEDFc}MF(YN1c*g>A5Gjp ztGQwCV$R5zyS1~Zfz};{S@y5Bn(JYA-35-bqqNR-GQ*x54uxAxNJr8d=f}5l-kqPY zUS~eo4Zh7E(=t3o@pVW~F{eNa<{U}R4Gx_vEaHvQb#z!Ya?j%1WxaYDvwoofLI5wlpskdJY za9IrV)h^l^=`#9aruADW*6T59yvqzW&O@Eaw=!g>v_a@Fj(qFN5qH>21v)mf(hJ&I z+WH2kQ79QxD~OY@&Rl6sQDDY{UV!s`uwWbt!Y-yvCy03KFK}agupOu@-N}v+%xObb zsGlPdi8~^|kYG?btk8iOQjK3_xg_o~PM$@Lz`zp|vtY9_urG&77yUXyJN+)pc#zfC z+ZTz_8I+cD`vlk6rEtjB$DJB=v9pY=Cv}F9Xpfw;@P*wP z?~TG-3fb$$hA3HY4r%Q5-G|B8vZHrfUaxDAKBH;z^sb18HT(sk4I!Q9Zeya(LPyp= z-09LJLw~)&dm~u)OU6q#J|Vdh#DO3=M9MB=tG@$$y=guR~TH9s5U$R)j>kh8|Sg7;l zHhSmf#=85-Mah$X&n9E82t^u(7G2$Gww;^)G&4(QhDI0Bjm5+UV%sE;z{D0X2@_%f z1JD3`JQoLJIt80+W%3Q!2Q3%lvq>z50l+d|?u~%1_Cyd4Qvn1NZK4`LdMvaVX~g}u zmF6US*3C{6B{*PRWPQWO9URAt7Jf*3N^;&IJxVV1g#W1({DS67tS-s*-7P)%Pcz4q z!R5h-7slpA#MdiBhzbG`gn10W2Vi0u5cu&B1hW@_4TvoGxCdPa zBT;729d<4m%M3(0yOjfC3OgR~EHbuS0crtz#N!!I3YPK z!WTRR+#EzuAS@J1#9h26I-GRalZP6{(ep7!>_wLJX`B(Em%47?5w6U6X z=Juzw>%J=R7x-GnHLmV6w8qlTq@IoFLQj5VaX{A`TCUX@9T&B=TTg59i_yT)BmSoF z62F&Y4HVC7M9Ye$A&1Vo$G*(JWly3-y2oqN4zkTQ=3MLCL?deSowda^;%AJ(L46ZD zW^{V_fSFE?9qhM-Pj!%owvDnjYIpOhV5hUodmBt9H7$3xwcN@W#JL^P4}@699=4S= zkg!0anCHrKnU!crtb&B3(hvL3o$#G|F7=0VgR3Tdt5#8eSXBy(za2ctoOkfxyH_#i zZP@VcRU0s#az%LB2rHxSC!WIkU!@u$F%IV^0v?58K{|mYcYM?|XXDy{tN{|IVu_&0 z0?`A^1v~`N4deueXlEh65vHcW%7Doq{Bwx2Q4)kV;5)Nm@r5jeA{OVcIu{Gs9Wg*#_(9Lt zHH({4dv29BYfOvLFW7)(sgd;P-KPx({?L|SBBa@TshuR71NCfReqEB$ns<%4Mri3( z4K3;@N)OX6vFAy4#ANF+pTFaX(U&y(OmSzTfj3A9*@sN^v&Dr2Lc$!qe3L#J)w)KV z+7|9d20zuZ7Ezra(IY~1Yg|2Zd}01VeeV*^=Ip9#WjGBvM3(j&9JT1`Y;ZaaV_~~F z{Q}E*ddV?Y&~=j0+D+QTP2l23Ad{@!BbcCstv7nSVkqz7oPfwNFdgH=awM4MQ*+0eSG!`a2P z=rwmSnhuJBll^Q-I3}kEXM(WOWh?O*@ofSOSrxGcJ2Jw@Zi+T5sGG5ftN;Nbz&U&W zcKDNilnf~_kB)6Z-O_$Zz~4LV>& ze9heR{srV>!^zDoc>C}S=}FN!OZuVFD=<1esc|yR==<+KUT&vp@0Fp&sM|b5SqCC5 z_gH;qkFzIg=9xrfFC8a`&5WJf85Pu~87a=%ftuoh^af89)maLm%jUcm*P1Y)sKzi-iP|$^KL0IQtVX;uM z%V7s`5RfgJ1SJlX4G`7fp9A~t_#ov(m^1?W9}L_COm@|Z^%B2#X~-Z-kNim2LEg%P zfnmVwq8paz40^N!HM#0y*IQl9!7YZxj+k`!UQkInm&w-5?&@j#Sp+tJ8W!LC{tpZE zl#yA=2FQNLUe_a4V?F&jzMo`iKkc^aSi{j)tx=$86BTdj&}jVnVa8;()Uy%ha9xXm zs_#d)YVW2EbL@9gzdf~IMCY5u?OoKLKdMV;*wDnL_hpDs|CnQ7jr8w~ed(`FHU>0B zGKL>yjBZ$cc$O@=!fbXW*%i((#Y#tl!Sf`URWU&B<@rf$?gUbc4_TIV?GGBoYgUEQ z4f6x;Q#A8Yr+@vNM@8p>Yrmjr43nSJ=}2wEO~03xnZ~TaM*`xxx_Q6-0PweZ9f`eX zVDuE3Q+wO>~3b=(+w({Ss;J`+|#;=}lY_{*4j)LC^jvP~nQ0 z2mXGsm|^b%>ndo%Kt!>UoK>HrAx5?yVrv;B;|ZOAJM@#zo@f2ixl35S#XoO<9n~D* zjHj;@yEglg6OQ|TE9v{grO{^1T#bQdnD!4f{xNBHJp*UTtv2+GIE{_;>9^XrX5Mfr zc@MdT_a&3RH(k=!vgHnnNq^x3$HQW|w++q*KaF^n_)p@OlVGBZb#PK8?C$LXdp6i0 zF-|fe5CmYR1}5YHG5`H^tvB04n|qzE>j!5=d8RGi*0H75;`JTUpS`jlIHF0hly-`vhJqq;kryvwAYf8e-QO!L;j4Am>d>%`lW zV45tMVQ=<$Sq~<8FliW!Sz(q0PZYpEF$AVX&}=eBK(I67*+M+6Qincp8MAfqCu~ z%wJ}=lWgGo_lO3&e+O-RC>(?ZsEt(9xjPRvS<&p@?V)zCrwe_zCe_;tk?W;%x+bYhea-1Xf(HMBCx` z&flW9NsiQ$Hqt|e$rciJ09KMI!HSNp;(*?GT{B(=0~8e8p1=tcfbT|Rpuo5Q1_pUq zjEwJKUw{FCS39scj;G785xpBWc-O&{VJa%ZbC@3Lj=|w9u)#>Q!<}Pczg;StV&NfH ze7gN0w&H^EVhAW4Z-#}a2vbQg#bgUX*aq4gTwx9hPISP5OmR?55Z*MPC?w5-6Ewhd zn-rrl5Ie-~C}>uASwj?Qg_c)f#G@%# zm|VU%GBXTSi6!D8tbGU+c+<1y*QrLM2@FJiVFmniV zRAA-k0>88(ZXce1kONqLf~5Fk$B{qtyjeUw2W?TY~8)xv27u5eYW1r ztP=W%DbIiScuMQCh6K^j%dl+3BGiM>ICt0}vevkv@0<0X`pU@J&4Y%$-HevETFqJ= zcsI6dEVr4RI+IHmGaKuh9H)5AG~K$A)>#FUsbwjPw1P9lTSbdb&@fHBRRDm;0WBGg z!$`Vp&gB+?`(!8Rg7bLOdeNg{1r}L!t&G@cqMTalLfWI_^u{}4y2dLFHjn$_Ma>Nk z!Nu@Rtb2}67i!XpUCj5o;;xf)NHCLei4jaGC%`5v(o&StP~L-7dDS*6o_=saV?i~D(=jP>kUYlypO z{go`!pp~BLXPO1;4U5ku1(Uv0NP1UyknJ0^dlDMwl@AJ00hT6tT{>3xW0T(7y`tyJ zu&&pj<)Ym*D@I0*!us^DlNzf#LA__D1b;}nMTl5+i5|a^;@CMoJ|kt2Ua&NWLSnRZ z+J|08wWS){O{AfB*SoU~>kft2Nq^-y&3R1s+_462-No%AK1hU<;Fh*R%cg zt(2y<&MB;3b7zm6t@ok7z$~?2x5;4F8tm;ppV2T+=V)>nkb^TeI+9MC#@SwH2?D-Y z8^H5NP-`;NW`WY-9@_yt0g5o{F4c`fJ=#f@r1)_nJQwYiX{p5b+db_3l2RH}oEj9Fr6tHn(k zbj%Ih<|qs9Nw@gHFY0I6JNx>Dm@O*0bgo4E{L>nkliH2--C@LoWi1xGaOA7p8s2C= z?@Em=%C>o}4xiTX30RCWuVpI*h^y6*THfnPB;gP|mN76!nikBT=NlVCcDJp0R*$EH zhnaf_c-wj1TuVd;TiAxVs^W8f`f6|AMG%r}7I0g;b}IM|@$uolIr1Z<}Y z0YyrN>|zKAP(qBVrKwPubTpBm=|o}&zT|`4e#++`r1ryKHc%Wd#aQ-k`u+zVxSysU zKx^)&C!Ws6?ni6yr^)vH7a?@fw;CFv`z}W4Nc#5TILt*Gig+)E$q=!CSVF8JHW4R- zjGKkfVZf?eHpP1@NheE25}B?03@Iz#MQ)W_9tA&3F#Ealx@=OKF z3gneuL4ecpFN@bGdsp%m;=D=^Nl)Z^qOez}RTa`*C4HfE4ppCdkY2r?x@kYY;;vIt zm0a?G!4D?y!pehXvhK`u-^8fgi{wWe8YZ4@XrSsdgDNK9%6b@1X{f1>A0i%yxv+13 z`1`telvhdZJ}7KJYxCGvN?Jc0m_ps2!^zbT(9)mxUqq5wl1-9F@OmM486Fk#t;nB@72@D#7H>j&v-6|n_4+CJhukRv`O>-4vR|FwIG2LM-}AihR? z3-tRJiI<6A6R#0}BHo$=U$YWeBE^C)o{Thx!%RWAFuhW^D8DSe`DHdI2StU;;Uq<( zi%gmemA|Nxq*9iWq{2MY*MMM1QTT#x%mt-$a>0VsiC5K93-j*GijX8Nvrg%?j9i31 zj)hFjGo`aD=18y3u-lt5IVXO%A41CRTyx>fgKRGJ(@Ia|SF*X7GYr=wbm!8BhV=i*A@rK|69`?AeibBNIdo;^4CLqK zXX!3EBY9&Lg=ETvy@7@MIQjw4cLJuL37CE%aWP15R}j|_Hvz8SLwp`qcz%ia3fQv# z1F-$SVAb9$#BX3X@9X%4nTqx*Oh2vITm)14*z^G#nE}<4oPc8XEY5@7qdN&sf>@5i z8VbZfMMDEjxbYIjd{Zbi6DiXyb zkE87lQFKUme)Rz$#nJ$~h%=i?Gn8-@=eUjB$Q-xbDhN9DW(oW5Cz z_r-Mn0O0*q#C62Y#GS-vh@*h@kAXb$ZIDO)3vm7yfb)L_oPV2`Km^Ph8^M{g2L(|S zwN)Mma3XRRt!t<>9rgqD5U;*{-Mq(YGEbh zKZ{BHaWal_hIFFXO(DA|Vm%oSqsEkuixJHT+bQQ}(`QzoM`%^Y?Kz-1+(&#FMrlP( zM9HqlB2L7L(t-Vey$2XocgzM$bMTh#80Ji{e+|yB$Ga9_;dvAe zW`ucy?DPxlIpVtThEkZlFv2vqe3TxZQh~F|VO9iY5AgmiU^Q*0(G^w>+g`@l6Z$?PKD?h0c+7?ZTTDm&X4z8jp|SUqgE!(2jo% z_^*^TQ1|7k2GxW*VLymZ3?9idc zmM-g|g~hQv#jfHN`}K8w%*UX7j(DuuPaT6c9y27W$Eobt49cTnR`+eZ@-W_ z3*sqFIB8DxSUmlF4~|dvoJ~d|$-eH8lPA@>0_$#tgXhVzi#VRe~-bm z^-P4em?N2}*|2ruqRF08U(L38VqG>sZGl!#d<8DlH=x}Uo8bcVxNg!hcm#IqW6JzI z@joCX%|>USThOP`eduBIB>Fn~9{M5rDf(@7qq1;>7KIB&rR?-LOTUZ41*5g--NN*$ z%7L*7JJ?_@84m$q2uVDK@n8^vTEIePIJ*Up-htfCQa>g0A;2&x!52dfV zZ1d*J@DH_=htfA)xOVM@_=j4`L+LyEV%`B?BwRmG7wanwqn5&0VYu>>^i9!)5iVxa zMIt&&0~=WwEsdj=(v;Hp)H%{!nBbt6{55?OX2+-{e@)+HgFn=gzm^fD_cHLlH=QgE z(1RIZ-y&H{1B@pF>C4g!O9S-E445xWOQivZPIZ|2hGuu0JNt8?^qyRBibVQAWR6Y~ zvdx)ek7_h?B1N(E3q{cy9?~xZ1k<~f3%wt}m;RA*p??OjlffuofVNGgBW7sZm%&o~ zJlLs^AwNhNJJF3m+5SR`q@RqD?PQ9aO^%Vv$aUlvawmBfd7v`2E9AdSA!RBE7o`_a zEI7N3!4n8c@#;ww2`5FWvVK7ABl$#HzmhDR{DPanlsay%a{CH?dpS&E-!x%Z~^B?+WH zOZc;F_m=cuN)pJwWa)pF^6*TQtq8xr{F%4djxmQZrmyG2lGgi>8gsHtniXoiT?q9 z!ht7*WpD!XE$FN04blpncbHd7=vc zQ&mjz+);%SswyjaKB>YJRTY>#$D9UttgOmZesW^@=G5xX)H!P7tVN1chSwJG*CM6r zC=l}ovVhALDp(o5Tgq!0Ma|0b+A?)Zd6HAR6sB9Qeko6KYFLi@mZ@XPlbl+XW5Z?Y znes$cP0MrPe5iWWE&onFG^sjQ%$AE|(^vJ1%PEe@YM{))bE+VY$?72P@4QNgW3pO^ zS$JMGlo>kchdtBc=~mDaVY&cqK$oCm)JC&klQ)ARJ zY8|zO+DV;79iT3uE~l=iZlOL+-FJLkzKFBWlOSb@+c{z5j&T z4yv&uRAEz?%)U@r=21kQoXuHDs4V*^B2P{jQW7f5K#J&-vr#Jvm1QAC1j^a2m4xGy ziSj~EKBOu< zm23d}`<3Vc^aA=H(o81EHRNIPA@b)GLv>P{s4J-(sN1N|P+y=Pp`N0?N&SF&k@`9H zd+N{B->7$JL<_W;cF_U4kp_P;)!0!Y1=31kxX_+axSF71dIjmJlGVL%B|@Ryr6|2Z z-9B{n#2)L4CrnG`R3kHx15H_mb;=wwQpO3Ar%seiXRe{XwOEd7DmN?BMN009tfj0& zDT|lLa=CeuY`U_ZMUeq>@sjT--z_UYn@{<^imcaq$@=w|;Gfh|9-;^(O}VF!Dk0@g zzIEQJRp;TK)KVUz2qjIqr;jQj&gKdB{ur3f6xf9a!{dwVa2Wrkk7n+EKlwKk{7EhOD@EWi{!1Ut+)bu3W0{y49+wQ1+$S!}CZr$D z2GFNUQ>g1QBjdb3m)z5dY=X2U8z9F@Q|SK8pxCvz^V~E|?3Tw{yWq-MB~RwYDpfTEXWe-l4~Kzaf$=rtt-=05O$JDoW^#onjLr{{p( z?`oLSdm89t4#El4kvQmY9U zl~W+e7JauMy_z}~<|!(tpq@qFEl97X&V_l3%9%>Q#Y<^RW#DQS7M94#upX~mhAl0p zn#DEcd8YFvYgwCAN>LRrZFuE;@fyeM8s^gFkSaM*X0>xQIaNPiVTI+1DYb?gOh;m- zz!zJvOOac1chyuyiY2;&HVgdlz4Rxi+k#yd_!00!Hdv?>&xbN`vz)3T4ZnGCeEgz| z#>WpT_wr{(fHcg~-`W5@jYJC%F- zMI}bISC^K{@82|cF8Hy}|I$BJVq}{VnmkR(MMheD_Ex9Y<7##IT3aD3f&dNSmhyCu z8>gp#oXM4mWpa6)_-&HRzLbgPvq|23xVT`lt^6~Y&!<0Ep*D-k%ThjHSJw+dwNa>p zgPDA^x2LYI$IH~21aBRV!^6p+OPVQOAU`^J0ljtU$Bw^<7i+6^d8^PXZP`CbzLWAb z{aLt?SK)B_$8rje`v(UHCBq=OJAWM&=MQc_WYw6!)2OQd$ z9eop4CFPuKV8W7pgp`!@ud^u(FORcx&XKOj4mi@AO__K$8zAelk0zcePJy>B&!#Ys zX2)3i&Fnx!mu6EYLULfo4s;~@Xd;+T!6S3Wj`Ux%DU35awxsjrz~;@QE}Js(P&Pp7 zvyUboEKb?9Nji{CVLsCo*0*$aH0h%2AOP~XE-LZ4wANe*-IWXGGESVH3uZGm>Z1i2 z^KVbg%DfHFbFZN1a>4xDl2D$JarSobg2&j|3FqW<9lf0b?}mt}j^{e1WN#-A!h1Ff z&$wI!J>T1b1^e84ypVfu;&N|iLDcJoLY17I=((bDioTF}F_%?-F;^;j1DBJF!oz&M zJEavxACVvCvN9I|u1m=c8_=B)m>7f$dTzspOaLcI99$S1jD_UjAbNgqaN_jr{S3H2 z2kG5|gUodx(kK0X^t|6cvB79G<^#__Op3w3`5^ zhGF!KovC9YOe>RQ2AO%x5@rpvsXB?i(yV%+v|DSqsLTQ>xRO1(Q1Y!cTvTR(L|;^g zg7jM3QkcJ}%=fch<#Kt6EF73Jhl*@pQpUeejw)JPgJgW7Y~Qumv;W=l)&#Sxog3^6 zMf(zR`ot9Jx%ax%_b({+_o?nV`~3{nM@2(XvDc%Q6kGhnxDv{zdBl zx8tLil(dO)C6rIght!_tOQCL1?DTp2K6*(>n;2I@`LujU?PQ=>mpSSy?mz1=L zaV3;b%ZJpS=1ZaWRj|odoDV>MukgmifeH^QzESZ(?L}3rF7;Zet-Ulp^$Y=esq~%F z_{4Z=N@;xRGN#Tk6JMFSwbW9u)n?}+&`UTxF^;d9aCu5*)`GefG@tC;1bPXFC&uwL z6E085%wkZtfmJskTOD3cdgE0Y&W$|R4Jx9M+ZCoQs*f4kBbE7KWoD$^NC$|R4Jx9Mnh z8bg`uleEeN$48V24kcxhN6OpuZ*vn9lLXS=FMmk(l&7iXQ%kG%-SRKcBa=)`6wi$m z$I`D)@*=rrl82MNIqAdc7h7ES;uw7`9**#rz6~ypHkj(JHX;iz^v=LHUkcg%tVTtqNS+hv!^ zb~pq8`<$N*r|Dx)W%AkYsia&u_|U@#y33je98fQ>fW{XnuMOd)(4xE^8lSX`9ZkX+ z@wfyy`a6k3pg`dh^Wiudc}Fjt6OWIP$A{9uMU+FbJ8(G(`>q8SY4L7wHpN9#$prSO z0{*cbg=!C1pz5dyJrgmvWpO>>rJdrv#L+eDw zYMUqhnu$8<9&@x`6T5AR(V&m*?{iOp6rgD~Ux7|b|Mb}}!Fg(wUK?B^ll5&_T6cnlBW3diYy z7jt|f1|DY+lRuK`#^-0?OeS1I`3D}&LvaI~KL`~CG{xQ(VA#QEYzI#acrb!13uqoL z)4|O`B7|XJIuKMFJ_U{^vnEq($MJa5|VnF9;-7@h|%$g)e62r9_h{c?V_tWP}d$}>bxXt-Kt?o zEgNDj#>H%%mH(v0W{9O+rgnSC40xln3y4e1@s1&*(HuAhfggjQ!Dr;?b|Ju?6zcUM zeTVe-1#DEuYR$bi!Q$a8X6lkF9=&znNMKG!LkN-J={#x)8U1r?fqtHG*Y{cH)AW36 zU%i{*`vbN)eq+cIW$i%{g&I2M1V;AV`sfuKXD7FBPtKN34e7$*ok7nwSlt}UIz3dw zH8kyJ!YogR>ZzcYWqH(V=7S#I(?n6tJFa=~{KcK_wIQ1CPI+1f23kF-ZpgaU-MRSu z2d~*NyI~-bYBV_F4nt!qGSKjdu|Wt^-a0dPsLo4;g$82>_ej&+0iVId>kVB7J#RAj z2Ie-oUCf4_o(+sk8q$fZKrb-q8LO5qrz&QVGJWIPP>(x7YR}N^7A(RXZ-jMuDTXn5 zsAk$id05)m!&oeSqpnMI>%+XsP4hmNaKFL2%^>JUIj+xcawM%>%IFv)wd;($(P|dG zJV!Sn+NFDpZ?8vf28%m90v^Pl?J)*OSKrGW=}*2PrGFQ{;*<`?qSpr2gftd5?mvSz zUD|FRPtA))=cUH&?U$P9GyHMZq6w`DXgMd-amp3(-y!Oa@fThgCw)UA#qe!ftHE|H zit9*<^E%P(&A^59dhpPxGa|2^*M5|O-AH`rvH$$p8$ao*e!vGZS7S1ZVLsfb+%w3k`txoKw*e zbbT?mXQ&XkiO04LGq`&KHjF|dIA)0gON~W=inJryKNPV0%)eL?h8~>n77bCr*j;qS-=V%VmxVvhw&5)eRvPN>wq76OxnPS3m3(XW;hDFG^ONG4kJ3`5b>n7h#tB42lPm1!=PpP);mQB%zwKphS>RpzF3lcZ5Yknbpt~Qb>DQSU;XHOZRdhvQk>65Ms|8#J6v-uG23NH zgEyS)UiAt~k;t=_)^Ya6`Yp`dT^0~OC{_c9!0w_DB9Yx`N^UopA`P9J#rj#1NHc}> zIvseA<1~LrEcWOl6!kG@d}A-7O!K1Y3wPar29M&)@3`=j;kq{dseraU8fY@~y6g?X zBYjWsCnGjMr^f2FT80^i<7heSvAHKT?ypNaoiGS=+<=}AfM*-GujA0jorwW|Xefc& z790`-j6SgPMOrj7D9pHlvrvXsM*64mz6aR(PmPRCTtC<_prKuypOJoX+sXm7x}otm zV)8ay$K1aTlCP6`udqKT{X7r}i9P3#4sB#3!`)%?n&P`U!6{8|lm6Y0nark>cs*m$ z*(f^`<*A;;VqX{KFgQ;q(fv>AG_*TBm(uEeSvvG08otMpJg`qn_Xll5$C}7r-0ZbE zmrlG(#)Z*yZ*7lWhnoA1e$NwYz46Xv^DmpPYa4GQyAE^GM!lK)Q-8d7?%t&jMGstX zwaKs#J*Iaf@)wLSw&DJv^8v-|Zr;;EnQb->-P9xqCe*xF-`=pHp}r^NYUMcUj_!RE zx2-@?YjnqH!zON_K5Ex`IGy8k#~0=>(xFd`{-ti1`s(BJZ=1s- z>F;NMaSzLO?rf+Z6i#t#G!AlmZ}*Xp`_40mzR=u#@r5=zNb+t=>pDT&J$!StBl4f) zCPU;Arj0QeY0lz%kEk=~%wyEwLOP3!_URWL(g=;W_o8LS(|b10Z+d{7SS?+!_8Y@p zW8nVB%@IunG)N?75hLJNWDlHHe;7`Py@7ZX&i;OmcnQuyegjTy_!nTQ4m?nX!QEjG z8bb5Yax{*%q1|Xdx(KM%)#wxGQ|KP_AbJ9Q4Sg5AP)xljSb&Tvhb<9^BU$f=0Xc%h zBeDM}&=i0oI6xM0U?~eE93U=H5d^Tfh-H89>1pl88V*QBSRMoM0~~VMvGM`FX0ccV zbPi{PQE+7Zss|%)Cf{>JAK)Jz3WkM2=&y4L@K2a0sMFc+pf)t5n zPdkJ(M$Q7M@IPZ*PFWrBA3R)Pfe^e#Q}`H8I8K^kWAcfdkc2=g16pi_8&D+*rjvpk z6Y0(vlSL1bL!2JN0Msa(Xr+K1#3BsnOjz}@iHw-FOJhIJ5v#0_0pVqEl(IS!NIvQ; z)r#3jOp9dE6T!KjsR-0kmiSWObqXg~^TaQ>>zH@fF8Z}y$2Oj3advDDo11hB7Fl{t>NIrKP(+BZe+Lt=7`%+XNz0<-={6<0eI4a z=AcnIcSHJuE+_*HOV4WITrMbca4`LHFlo}-PHB6+Y%56F;y$OlL3GFS4xMF&6$o*zoGP57dkc5@6wx@j=eq8>3B_Up^PZPx!qro z{m=Xayd(b;32^3Q9fE^mE3J$Lk#%#2)RJYgAajp zh80H$0By%I7*4?dBAFXpadEQ{V-Er41BZMdcEP`77npWH{RR=x3L5YrSd&2Nf&%Q= z;WGkvj2u>1f&ALRTon{KtdL@j7|Ui*gaZNZz-7-u5pdsVPk{aj@7SSAP}er3M!aa*6IBQnr`XQ^G?>*v>6&}eW9K) zZu4oo_gYBCEH(#vbi!zukB#zL+Gvb`-?qJaXU`dol}w!~1efpUWAuu}jqb+fewVw2 z!%N%bfBy2Ye69qVY@v_fyOAQ{dsw&idW3pxey1ax~AH4BlRY7tIm8yiQ+F1~|j9*FUo2b3fX&BW4dR zXjwFSU}UeizrAJa(5m5{g-!b57XR)uuCV!?-nk#GAF3M)&3$(X<9_zaYcx*=c1WAs z?e!Nge{wfPwQE@VSACx$-K)QNrfZ4O;_C`?Tx!9dA@s-b4amB{Y_w4eNZngMOq_IP z=lAEfx?2TnefOy3V|1hMjV1k`wbG|Io_n=!mBT{y^}hBnuiO6yK^TiOGcCl?Th zz}9*r@hSO4{O`)%OeYyvSS6Om6Y;$cMUAA_y2-;XljP9!>dDF`YtUOF2tiy(aI;SC!OsOt{-De$O4kp_(~ z{Aq{XL^Ad;lK8`NMVU;sajm4kXIg{Kg6bV!$iJGY_~8xs*`G4CUzBMUebzagt6uLi zv6e0`*r`mk&Xi6kBNRfVwaU=7ywZYi|ycgnw4=n<^YenYywz;Oy^^= z#vM%o;sNQ#6rSq_E&&ya!gK^!B<)}+#9^*G1g8Lla1X`|%w@pr8l8n=c=7?FG3*}} zoao{z3q3=c5y$jgfG1K45}1b*;OzJdt^R|p$I zQern)GjX4Q4K?LZ8DnYxPQkc<^tinvUQ;6CIGCc5tM!0AK$12qi<<187!iHabG9&J zZvDeqcHh@YVa1vby{GAP9z4i`q0Ub^`EENx)LMNcAhaLrvB$|F6mXTmhcHEUp1w8rTYc*IaG5k?4U%;0m?)rAnp2#AS> zSuJDn+CfCzMKQs8BX80{vyGHS%ky4dFz~qNqCM(xzM|USi8y;%rzrAxIUrH|6wX@Jxv(YYH;5A*^ zF?=m}oi;}g9Xr`+XZ6xQXWeBp=nzBq0dVRqPQNd(i*)vd!&-MQZycp~)}k}%M0Yc3 z_2_jjuf=_4$Jt7S~ZD!ucnK{zhBJg?*X8=FG zG%(pF^IV<2&Sf;(c(&UYoJDE52m%`q2_3G{Ae!QsPM*_{Rs*HA&#}{vG)aXh*5cH7 zwe_>zgPJzCjSq_mwQ3z^UK1YTGy>_guwI?h(c)R6(}_)X4-0E)_X_Qlo^dqNdaY3# zB+ZnWUTUy|or>0(u%ZrTI0Mg_EJk|Us3#cXP1Xjjg|k?KMh6QwPV1(|3~1kikgZAN zh2hXj9?Q905gi;PMu`=`jqjX{2EsU%c`v3^m}tad_7nWwXUvd5=&*4SrZT`W1rR}C z)!0J?CXa}ViS49agj*=Z0ckXn_!diHw@C6m<|mU7jU~90$k}I;_y*ZI5$=e^)D7$w z-D*So?9JnIFX}jTdk;eOSDM%M4tdCBI|iHG9S%}+iPL)#wdj=V&5p>>pk#NrkniR@!neZXm+!G(3y-g} z-SY}Oz9o9cO};Pw{`X(>-IV@Tcay{Ist@`VquD#xu>1Gzd*_;c%n?t==FVhtw$MIn zUh9R+yA5W0E1cYn;+L~zDsVns-;a{IFX|fRH&`bg?pc4I>8V2#yW2KB@x-RK-4lnN zGTpbn=cM_~YYrV;)jYZ(wf?B_nM3J4?VBEdd{g_L^r2^rN7tt|j5e=2cxX-YeEM6g z))j==)KIA(-z6Yj-2^A)e~I`XM4?Ge@dOqGq!V0`VcO-(HzzZ|xUly#-;8PtuVqpS~ zjoer*0y{A_>i|y#eg;|+JZdAmK;lZkv|Gkp)g>F5@a(f_2b&70BJgpboi;Jm4KwHF zuFfFWf$dQu$X$cLyExFPVjvEJVFjvWPr*lIu?#-g4F(=vFf(_tDRFQ?&`nYmekzc@R2@*6|ltXIR*^ID^z z7hn>$u7e7b25pLhgV!#$(=B|!;9}p5UN&;^)}ax-6Md=8>Sa#8|36L&)vunv-x1U= z`W&w{n;crIP5Z26S^6*IM(@ZlMNvX)45$=oHyT68*T=Pr)=g9Z>0Mn72D1&3pGBz7 zw(}fxF(t&_c`Rz@n};s%`)JDL_L=w#T#-$PEYm!gOK4-_$Ck04E%nA&(Adf>xy!Ud z%TqV#>X~}ZDvl-etfuKIzTP3GuQIsJT45mqQtRzA#WkD`CNwp}G?~zwNK)@ih~9v` zS;I=#i(}Vbx!OPt>2Zn|z^DsnG%-x(hH03`qPK#!?fYywT zUOhUmThHQV&u3iEsK5i6yC(1(~?Oe{KwAZm>h zG-y=~+~4R^z=M&Iuo5CcL~LO0O`5yF+-s-I0dpi^4j}k(e~bU?(s-P^I1YDi@x(RM z{)zSYx;`GKein~UG*CaAXoy29q+#Abm6TmpatKNE-8X2{2G{|i~6Y)28DUqCCc~FXLG$MLq@HRP&UqUpDdy? z%GfT!uF1zo<+T?M4${wD2wC1Z=#TYHDD(D)exSAQ86>D3| z$gFKNPS%J?#$diV<#a|FcNJSR-BCBKkv3TaYZ+g7T&dBRF=7$W)M?O|TKcrQmRF{^ zwE>~3e%F-YaK?}KI)KH_Vv1WxEsI;7ACEJM6M3pz14Yh*C`WJudN+(aCJf>F19B9*3arII<`F_h|YE7tu)~f=(oKAj7a;S$H%e$_VM{8}#KJta$m!KVrZN|qE|6-* z9jw7Cy1XLGkHP5z8QuccfkFtJNbXYj9X06Xsc#LOMh%QP!gyRfM-BOASpO!^RX7iG zQL*wmX|raK-WT`xIXZg)Jx!Pp41ST3#C^n*<1XuvEwVrb+J$p-_qTPY*8`TEUB% zqEmU0D3~%$=2#Q0FN9EGxDvDq^VGsA^R%Km$jun0l>;#k=<0A!SAlnKA-02Fb`Eh# zW$sx_S@XJCArvb?dgkylPq}6aR~5po-18tkPTZ|oKPg@(8GyN$VrzdPq|pLp%;q6N zFE8e~)K(==9#+#-P>z#d)iS!&T9&8Zr98R1Hs<@Zx?!Sf%b7OMss;PiT8|DX{h06T z624s>7|Q8KH4JUM7f3Z?&y4V_LWs=-RaL{Qyri3_4<`)M zriXhq@~c9qRSH*vW^w-NrOfF=cIGj)9LP1|uD+sta0YRfEFWB5EFly_EiVf-dl)U#o?L4Ej8%nVSAkT zRu0H~N;RVJ3E;nlP^`p@XAU>3)6i!cTg&-ymH0bj{I?Lwh2csNFU)hiQh6SGtAl<% z|BPdMc}LWS|AtBAp##K6z+Q4Soc2>R<4_Dqb&05$OXc$vzFVoMPVCsoQ}7cnCn?M@ z-zCRsahaz4Pzlmg*<%WOk@}3HIZXz)=~-yXk+_VS>PmeEH0PjyL&53c-8bkA%tt~$@gbm zoj|E?k}gtYm3*JoApe!~a9Gzat)UmOsr(+FQaJ_h@4^4*MX-%0w^8Er@*W@9%_Ci& z+xK(vzb>VIM(zLCA9H(ripmCwzj#z3D7Ls%*hQk0H?f}jJnSKAz*l+weNkDk{$8!L zLQE+unapi;QTqn^Np@!dUV~rqE!gWb)z>EdGWCg^pnIMYQmX^`p0YdPkWv|tNnyQF zu0G110NC#nnPg4~L$nEkRo+fSPtt`dErzv6CGA!AAHbUYN_4q$dij_y#Kyw+)cTgZN@;zK{r%(8 zu2d*zS{Yj^{huQON@f^-c<)aR9(W(*%+ns`0R`O(X^%42YZ~d3jP5-Bn`}(y>rza2 zlyO|qZlgAe3wv6vcgsd@zK-R1tkPfk%0fSt(j8@-R;+Ph?WUsdYPFwaWKPzONylSB zi^}PaG7e{a6sonZs*#s(=d{LKL2G3@RBoK**C=QA0u|DU!hWliUYKV(eXG{`s``6s zI8@vJV2e_Lhq7k7h$>VAg-Us*Gj7$Oqn0+w_*Q6;LTRN3r$ev{5vY)MX6W?$CAYCZ z&DK4~TQJ`!rk}ZeL6Hw$Zd0#sDgB&sZ_rejQ#c0IC`=i4sL7vI@d4EamDA7T+8;ET zOs&?sNvK72?VOZOsI>TfmD{H3+p4I68XTskpDJ>I3N&O}z6$-!?GdU>5A)haVJnNn zlS{RQdDU=34LUXA%hYhH6@S2LMFNDxkl1X9SNhEu%dCzxhDEw3zp_vmmkG7>Z`eyrdvvdi7E-+r1ZZKld20(r*G9-pHHi; z$IIbRD?tMpOkIY~@qlU|F%wj5a{QP!?aJZIyDw#NCTF-(#Oj zRHywl>oT=)Vl|1bsXO5Vwv2T?I z&nPdeWhAKe?X+>d91hZWDF&#}WfgeL03R!)8O7o1DRH&XIc|I@hts5VR|R77y5^EG zQ+S?E$(aYm5K-3vD^cSUfnPI-b2&m=lW?F4QaBTH+Pth1geyU{IRDJ!s2YTi8*i(C zb-xT>{Eg;1;p(v|YOUpTJTE7RnyIi7QT0*2~9I8NR21Lwy%Bvi8wsI>UF z`SEn^25KB9KT2z|C6sgH929cHwo372CiKd}ky#i%-jSAvPCitlEn*T#R z96+nk?5mT+<+Z~z!;cFgT^Oze^};+e$U&;?fr37(X5H8%cwa?do3=br*xF(!Rnq%s z9(pGd-^z_ADy*#>p2s0e)C$pJsJ}nZoq2pMhjWf>R)@jIDNED}^-B4t;#7t2RZAVz z@LMgdD*jXj?a1+|nv7iKg8=lD(!YWcR8M|$T8EK#ZwuGwfZaiu;mADQE};fwu!ZY z58r3vr<8@uF7Q;P_=vyu*be$r&SN*zr|jOdXAk_)Jh(^?2DNemOiUQ&xb&PcP!a2-u*27u8n!=-4#~oSjI)&mIyJ2)tv* zz;!FQqXQq<@f3K#jw1(NIvfj`7%`9vn?smybbq&SkD{=jqOF7yU_FU%xF}&+!H!Ab|hJ5ozbrHACkQ zg11pR{Tz)ra`612HB0Z zy#3giPMkZ}p^v!x+!O^Da_gEKH(nwAjQ4nW)NsYd8`s==${A;z@g~VoJA8`%wxk-9LhHx|qz96IE$*(&luhj-Tll?KbS$9QqfYC%eEQZiow|!VbBoWlzv{aD)iHc%ic) zs?tU2%K{;%vr*8Qj2@5CZfbNoLxHX7Q*0ypK-e=l$FhuCjGT!6R%y>2TT<3N_m#XP zjX+UbOUp0otL8{cq+XoW=VO@ISzZ7p~NhN$i;|u-*AqvHZvt+7Z#vjfsk6C|U8c{; zP%M?OtCMFnd`JS(#Xmc|FLGq1!CqhK0ZMYnuEv3-pR4xq(`u>T3|NQlBlgtLK z4C|WKu6_dDk`w8Yd}HHEe2 ze_?^qD+^wQtYvDd(_3I*Bh~X02!U zEGVW6EpL0}Tnpkf-mKhMObQpRJGJN?J>`i>?@`(~WMMtXgy}u{7F-s)%UAa|Hm{(0 zQ646d$jler1(wFQ?Yq37Z+>Dy`MheOHTcYhF71A(UW+5ezuNofP(*mQ>y3eV>6^!+Ov;ysis;}i$2f) zbaDTm3HYxT61fEr{vkQ8C?+;#Z(I&{d7gu}fWW``#^rl%_|Js|c;?V${m+%|R~;>O-YsB!EeInl_Bwl(pGYcAAf4g}(&56noiSjF8J+Ut=q$tFn|5!Ry7lLFLdJ3`+ z>ALpSe9uC4F6>fh%kdy{vioqo8b^}f)BER86ttV*aaBoHYe;M8lB9xfmk|HpM_6`` z8TRz58gP+I8>6+#J{+vly=|U;9+GR){q@0B?|#Q#)9`x>s4Mx4g(`pP0#}MNVC((< zlv#r>vw*H%-}j=vd;8wp_cwiC>ieg@C;NUwJUj{4kyFW8+S z7Sfm9|GlGFTwV~#e63!<*!=SH0xo{~=mpjIQ`cYriG?cYe)iChF09c{uV2s4S-<|z z)#c+4R^x{DExtUcO@ijeaG{zGDFuT}Z*- zxIh!S3+lIX{PD*>bu|9qS-kB4{ciT@-OC+#|J{Xs5B9ya@15}KW(XxFNs%JyCsSlC zIf|S@c9K_zb z0Os*2bkPyt=N_W} z{}(6iPCKbJI<+#c?=)M@s9sgrQAA;xj_w6^q#DiXcC#ik@l+LULjz={OeQ-Gg~l|R zRi&@0cAB~?ofeKIEv1htU5Gw9iB4ndu_KeIMyDN3HQJ~(Bcm9|r>RwOg~-cE(AIgaT*KT-=B&JQ5|OJ(+})7{X3Ch4v*lj=@2t z%>fqUFqv-FVl@>v;rrkw%x8-`v0H(=X(S1E}wQ0?iC zYU>iPuOwTTbDY4`Dm;wT6a-+D;ta-W5}#FXyQqa)P}Nj>EkQ?H8iA7v(xYcvH(TE~ z-Bi6j!+JAnPBm0bO-9&%gec+sTGH?dL=?DiZL*`#D%{&fXZ5IPL2BTN*^R|!Ttgdl zi>8}xz4fK%XL^)K1u5#xp256LcdB{{rkWwH&Md29sZVrU%d)lyW`UF@~C1qmn< z(4Q2h4;qJYOmK1v7oiO}P{%g6j2PNG8Kw7>sd);z4Yf&(8b;P9&@0ti3+d9Wfyy)? zrwd$N4reLG zJxA703SE!zB<02?l~nYberBj_o3?OmK`|D#of=D(LLM(uR0^wh*q&+c_FGV#c>y91kj14-zvn>b;LZ(-A7zy~4 zQv9$~_vfZTg`mVTGR{zy9Z#thV6^;v)kr*%lU|ffxt!W8Eb(xxpIaF#bv@q_mkgg< zf*X-Xs3T2>g@lL9V?GaY!Vr>h&#WipT~qeVR~?oToRib}s2tps88N2iVPt5?ntm3h z@Y#n^V_43dONOFlQYxdECEqOtVa`saM-`#6j1K|j4i&|QFvZ}^8703MR7fV5Hi;EQ ze&k3;P;0{Cbb<|bzokNAJ85CM6k3$+zTIrd(T&df%1RPjev%QBr>9-ky>B%YPCvQX zNK0vj%M^F=^-Q5S+yMU61sBwKmM6`8@vGA+l;R=G^M z6Ookz#(Tm}iIO zwg;K4QEZ3yKrqa}128Ce<*}TktBMY}p;;UYYcy|oflq?8$eD)prNvwsc22IiRFEh) zR5c0X=|Z5a`mrBe$#XWE&Xu%+@^fYAE^!QQ)ulA(5S1%jV_nv0xCN?3QG{hDBdT^_ zyKWRp!{z*ggrl%XF_{?L%&)2*8;4=kNY^m!q0r`tR%`#@jp*iLS%Np0DPL^Wp zvAGw@6b)Z(ekFXf$x`H9WzHp6N+`yB-^}ODNWE$vFt&fc0%*4xA>`skN+v}_x}P{Ot{AyTZ&nfPkxapFXiv>8=SEu{{V zMHU=>1e+WYICH=DZ7Fg9n17YP?33m%*>i(>m<*`VZ}D-gq`xO z7ELo|bQD&Gs&82S606^S`qkuXw@^DaxM2jYNNUANawff((C(WH1B8&%gW&Yj{lb!X zdTaZN?$?=Yy}A3(+zL~q8ltt7H&{&m>blF*-BXxVU^$3NCcuJJH(jp$qT$tFZDu}Vtku;YnS(!?D2{YY#tKTlvlwxJ# z*c?ioW1B0PU?nD(=h$7`NJqpWr>=0UwL%HL-hgadwxKePV?gbPL(a3q3(DqKT0?v6Ea39(|s4Ebj)#kv(@W%J!Xl<6B8Vd?HuNksf^N{A_gx(PcEZNl~V6G*F6 zvbt4amCL3Ko!P_KNb2kR+5!HF=G`69cQW4P@d7aKUeR|)&r5k2jF4~lJ>K`@zF!kO z0Lf|OJaQ4aoLo(=C%2Qk;Hlh4{)&8vJVL%k{)v2t{GJMG(h_abG1{W*=mxrlZlh_gg925Bu*DQ#UOu7$^?vo&>SO9r^%?cJ`hofn^@Ms-{Yw2#?N)y<0wZH&jecX9(K1#T ztBv)>M&n3ht8u(>v2nR^m2tgsqwx~scH>^-jmA5T4;UXYKKTqjTF=IUUlZwFXziPH z{xmHGX)0KkaD-a0 zGF2mi-B%&-j3QXr@GLT;a4WQ*14FRqJi#x56WfbTlvS&ii0+Mw;z{@^uz{=a zb$a$WjCu?VtlUH&RQ(ps)1KqOtAHG@96fZwI>^&JRk%AgXo~ zJf)r=38w;$fI~CcnTE63f(ea2!?A57V6wuQz<1n>%KEBk2wK;u;*jVGvskAl zOQ=*gPxn^hDmaihiyIrAW_x;qs)}|g8=XeFGYS6-z5(jQeQ+=vHFPmi7^R+X*-p1G zStu-%z-4bt>i+BD(E<`D6WReqiM{E8FOI6DZn{1WlBce-9Z$9~`Ao z7^MWIXi){Rb_%l!erHo*I`zd$qLvtSp%8fbJ$M~ApnE;XKA9Eq7DlfIR|Rv`L*65J zR%n>ML{ALqU9Nq1-Tn!pyN#3ZzI5RUoGQ#GB*-UKxWgD263zO2dRSW>xc*_!KSeWi z4|>zpY4pGYxc4nx7<3>?;Q6#rA_hl`E?N&YX!gq25)+pQ@C>ao`Uffzfx3#iAO*N) zHQdX#1~#S>+*3~=-WW~X0yiD5F6Iy=p)nZcW&;dftukmRAQChc6Q(f<3{acEZx1p2J-JpW5)wGuF zowoh5v1dXtJm^`R^h7*LFbN6Th0dYzjRbh)(0mLDnwm^DwYD^xSX*M?DLC3e-MR-@%1BR5CzHu|3f*jWaBG{W zD%z%HXj&_o9#{=|=$>OtdRl=BI`OQsK)WhHLfWJX3{8)S)a#p8bo>ugW)jnkg$;Md zkXm@+_>OU{s!Rvt57B^R0L$pa5de(_7F&ohTB|3nH}JYnE#4^rKgVBRlqjc1yX1kC2Aw*Nn-gW3GMy{rG z6B4}}plj_tbJ~%fNZi|lTsr8cMt7Q>Nl0}K(3cjLP7-14A;#zsfHPo<7`+yjgDRE= zoNvh{I*4gb^g5~6wRRJK081%!N}tiIDE>4x+q;7KYNK#`#jN2vt>~C>oPr8r2`Q5v z@}Wl?eQ)8}gkc91nV=9Y(poh;@t!fnJ$Rr22^@vas+Q{MtRCkOTDgYw0hqyp*+4*n zE_`-Hg*fOZ2ozF3ubQ0*8Uy?XBBG-Q2u@>-);H>py|2)z#gH3a7-+Hy?o9NZ`ghM~ zeO&i2!YntiI^jWrN@p)xOBA%E)9xrd0D<{IWY86TAxc0=wO)z6(t0)YO7GS1Ojr>v z?X?+e1y=E)ZAkEShl6FJX#rZ%e-vH-0%bVb<#0CCOr4FF*ofFnPb+Z$<_#c4A>ALy4a7CYOQ?iLe|6`4w)N%Iw<RgrpEvP|@a$j7V z6)TF_IP|TVlQ6)oeql*bG{_hHE3)qMz}!(^H_dCA%P#Xw5!3G!10gDoAUC?46}w*; zAJb4}C2wFOa6{erqi-8K!D!KTTfXNY9EVxNBSQP$>d{MZ4w9O8hZoL^$RNzxS|yPgnQ7erZG;J#e-eiBANoL3&r_-iwuS`3pVMpChIpjPuw2YMXE;RBHIA%Yz(nioU zr6q)%Qs#(3DGRz^Vt%@j9rhtdaY_mH2+$vqs#TYk3Yo$5h?k>PGENLpmgFW;47M7p zly53$*a(D|6{H^xfq~@6!(>^~Y%!Hxh6PGSJTM6cfJm!+p`9{~Dm8t=MXLLg43&1} zLMyb)DkTOGJdwh!BwN~htAM=HdlSl(vb~4`-ZJ4uGiE20Lo3{fSy_u%jCXefVYE!C zvYb{-)9}%8-L6$?O%Mv2(VfW~sp^34OD&`OGO&ayUY3ga^-Ok1cRERR+lD!!D8Qpg z3MhtLY6RSToD25X1gO#*QF3UTVmre$J6q9no$ zkU`87H^(O~JZKUnfXbWn9G7Hb3D1*1O{Xnlz@av1Pb_2!a*_44T%;ftpWY`v&6JU% z^8I#7IBOl@!CimBTILEHQkUsIuG@KmOp#0o(g6*>4o{YwA(j#kz~`Gvf#CfPztQ8o z@UPHN+zUYVdei)je`Vrb1IZ`ftVmPxqOsiMGtaX7wVu4@+ANn5prIm_a?m8g=VT}J z>Jl@Z%4$9Hgj+Tlfeu2FWC+-XlfBA$i<=C7Y+Z`yPSu($>@?!X{N??`CBO<8d6!;T zY&G*xiH%T0F9C}1JPka9llP*I0BgjtvU{CxR}RPWmrDakGkoYgoo2@#OP?=&D(`bm zzD#z1&|86cT9AkMa6k;X%&@R7q@=`RmA34NNq)58da)`ty%lzQB{1mPvrK9Wz0T1| zY%jX}Tr7j%-M)8KJVH8`^_EM;#5sBaB^pHkOVf9Sl)Anf_h8t(ZuX6{Xcdl_mfVH$UMHETnq~=z;jxlwm|tLMvN&^+nE>l&B5;BbjpM(-@2e9`K`JBfG+_+_ zUJRTtwFB2?1!tyVv;~*PamG+!nG3lVXXwkXoCo@@>VDnhe)n)92{}??avk^jOi0d` zvimD{gz9dH@C!Ng%@VqA??P7%Z=fF_Hq~9v>ahrd@(WxnyXhBEkzwvZNbafW3ob|v z=C^Lm?;bxCD0joY>&3&xA*+AFWurNovkog*r;v3a;^`b;MCm;3&o;b(kDAj^BEuTC zlGv1H#Y&Nh3=JaFXHKq;2aiXjYbe9QBZ^pQQfQ_PtQ=V7RglNN!1L3bIp<)ZHdri< z3EivXScQcQHUq+Ps+jPSvMpePro+iF7fw2bouDPTU>Vjs(#j9Sz8YE;_YWju>CrZJ zN<1_0DNMJf<=8ewH9T!ucpQ4(IW1D%WC`q07-`e>C4tR#l{azt~^yvP|p%Rl{? zqOZ~~KEVmIR5SraCJyNx1|bG{QK^@`UkRZV%cb+%~RrVLkUk}d15Kc;Jd6ep6OTt*y*4Q zbVrr|k?(@p4j^7I(kuD~*PX==@cadG!M86hqSsWJ_4&KedrIcim=x_1@;BR7jOxK1U@ z@k~AZgyYkj?ai5=sUQ_fj{v%*DOKWtWj)1Q-rvP8jg_)DV4?ovmeJ8M#@wlLK;^&@ zqpMWO%CZ~Xt>(rngVmpI;>wk#nOJx%rOdSbx>Slq(Qihq$j*jl#v~mfx{nw(9u5!n z8un>}nx8kYk7wi?j&F0@tof=w9V*~yrp)@GKXa-@hr&~w%reF*hIg3qR#$yaN68jJneP}wg^V9^QE|nP2$nv3 z%d%|_Q9O{@gh#@ZKYqKJh4>XRRpGQD0_OVxwC+2|vvSX2bFpG}F@GvEWR}lAHdV7G zt&Bpu^ns&?Eu(+k?4fmNM_SMmW*e5>+t6ocjP*ld&3gJyo6)Z_F}QFK2lR;Ko&6)i z%zeYtNFb??_8^`3*IYRxrSwTM=GXE;b{)hLgLbs%qV{KtX&=2{B z)|&gZ{*WcC+|#D+8=+mtMSFGaKrO_cAD^S4r@7H+{a1W>s&L01wYD+`=ykUSoge3% z?p$C^=uQ(CYn-FDIS%>5?3$9pzQydC5~N%H=@ZV(%V3asZ^R08e3Fo%IV;nB`xdd- zT4)uMb63Ez1J=KLdTZoQ_OF_TUPX)h7S)&ZR$3A2rS=TH^d5iUa(n?OA?dlxwHch| z!t~R_uFTbUXS9!k>Vun(20gRmX&9VX0w@+uz`U z4a47c+@q+Yu;EJo!|T4nVCJz{?7LTCAD>){%TAiNyE41=GV@>X)Gk)EEvKkK2C&zh zmZLTU^iHlBVS%U-p^Uur2OZPg%1rtbTuxqe*x~F&*UF>kUvND!vxeQ4Ss^&UUfPn= z)Vu(9b?pT=c!q3Yk*i=Wbgy>|VeT-w(S51+AA5Rn?7n_|7T1OQJAH&61j0W7!$s`A z0)JHB2?y-cEa_X{x3TY3ym9>+#9_VxyELEe`)1#F;azMcXOQQT>&Ok{Kgmz&03D$# z=_Yy*0WSce*ai;vC-KU3e7NS_pafug8femB7Z5B30#y^}JHQ8U z!oWn48mt1n1=u-&3ZP{*V3KXX776g5P7M%knSgGDbFB;@F%6OSesKus0T3lM)k$kW z5#KZz2I#d8AaP1n*Ak6_qZ`1JKnKzQYz%~vc7Xc#Fvw;L_+4$X8BL>gKt@_kK#yoE z(8NX)w}J15a%&!`0$l0{3YAb^|2AeW#>-9Zg94}?H7 zQN&bB!_pdC)tFlhw!X& z1OSQv#j!25ngDWbYG7FZ;Chs&r&-UDRB0ftO8@j`7|ofztPMsnb__sS1d@k&f=pwY zG&bIoBuqMP(4;tE+T%p)CXiXoLR~9doP?lz!THkEH9h^16VxX(7>ob0TZ6B_PBpty z&n3QO$_#sOS_4oism{Gl_2O^uC!d@l%KYMwymH_0&{mq7s7(pjAT7D2~ zu7|r~7i)3y92O4rIZo^P&=Uv<1gus7U0mb4dLl6_AiaS%s$1!kS{t+I>C7<@?DXtr z31l2X)?2HzLSv?YaWBMzo8F!Z0eWPX<}BN?4qrJwzKY*_sNm?|>&p);p!=321O@Iw zpU}jokqHz`ATJjH3ukGlK>INw-%FPPrE$TZ{0L)a!6xajA1EfVBVb>V>x2r<7!{kI zZO|0dPyo2n-wYK4we7@VnRko8>oV4mN}-gj zJ-`Cu(;!f(@Q4A{KN=dAJT|26db9geJnfh4U`CR6?rFd*1IbOwK-ts_i=;YISmtC+ zmyL&&b6Y1&elHOglb%_Tf=t*Rqw8-woe6a%c?Y3a&j5LWd7xw(-iQ^zpDf!spq)7| z04qhIn#>#+bnDdV0Fij^np7c^@9%#9N{-@z33%x!9G0;MmPcZw(q2LXc&8XDZrDX| zWv;sYcF+>;0*fd-{D$yd-0Ez8&e&3JZaXn%m!389F+aY;FI@KWOkNY)WK7(f_%gVY zOjAoNuHazFKpGg8&8}%tL&5bIQqJ59G=OffOzvI^CX6tEEm#09!Tz)O%4&|yT<>st zDh|$!;|68}>IOZJDO^Q7c8dTWV>y(y{i>9Rjk-eB7K?@fh3#7sdyuVF}=Jf@Z_YBfXG_53B0gT`hqQ6+fRQYj!r0Fp^Q z6$rv9|0RSnG>osNQdjR@;;M5s5=s1lrW{w*GXiP#I4&~~?Vc;PWGDOnd_c_uCfU1$~ zvV$<9_niVyyPuE*fVjvVHNJAyQ(ry=tmvtq;>z&@?&UvkscMSzi5F*xWhaW#k|!#* zfxQ8j@D2;2$f9M?8I1%JbS+<7nz*DnL5ptTy9$k*qmKTLghNEJV|+$ zET0n6HVsv%1<*T3V$4Vg;U}f4ldhdH@%K^AowCi?&O$0O-TyTDov5LaC&P=!)@89a zD2EJWf~M;~hxSwYt^c|XcqP4~YjT-a562g9lmYl>muhEo4B&0Gtc%@d*1GSR$_2dhgSB zW-4Boj)vWEVwykr?vfR_nP*?M^70Lp%l$2O(7q9|8iTH1Y!m?LHpwP;Oy(V|wV8T# z>6y~XE#cH#RRL+5aPC%YdL9<9na{_;a>7^K3|1yEVdY}opn{uXDxDMbRSq_!X5K*| zWHrg@qY_J&FF62E297f0%DUD9(lgD>a=?xQtPU_NVlT6-jqc@Uke^bn9j*0}V-m{~ z#3?C{W}`P4-RC?Z6Gt<+kL)|6?*e$n*MqZ=9!JlDfBZW7PWlo0Bl>GFDkV#^GW_DL z>{P^7UCwS`x3Z71PqDv6+|*XE51+*^;xFQN^0)VV;m7!w`9Jb+^X~)n?}I8=#7eP7 z94?L$$BPriso)*%0`KrT@dEJ@afi4Y%)@tz_lXaQkBMi>#s*Uo1TY;T39bhG+1YR^ z9Qc#`Wn8~E%o3EF)>MyHfNY6Mhit%?fd2{`6@D)Mz{E!&Q>-}_12C~`+S`Pu(sPU9 zLu+ap%-IC2rXGP0Zba`Z{33~n0o*z3nZhIw;pxKattSI;1mH1)g9U~eJVX4#`Gdp!T)GAXNf2Jh<1hH zT4>h`U#ENVEbt{@Zo^H~VM;w#qvpmWxVI5?;JN`LfSUl9q)}TM!M6cbM!{W$9|boA zLjhkF7JYgO{q0mipivCYI-D~6^q7Bu8ER1*{2lGsXnIMHOCy^RhN1@n^n9*aS6+gK zqn%Nri}2{I<31Z{NrQUaV)0!BGz#+|>%iu;_ z)AOk@HB~eO&NJ&d^1X&?-%$Hx=#cIi`UvlQme_(bEriE4!E{5LP)bI}hoNlUQ2457 zN*$~pTnwKH{IvzG5^xZ3b@_zAr+W zAln+x(Oxu*;d^5MbeltfA{ygpNg!7EprHhGq63LbgKVQK#TYfT9|)$77Pv`tKzr`G zlbCzmJ=}?77!3T;$P>7t8f3w|V;r^5ujd+~fF4JfS6!Gs(g0echYthYkj+*HjqFJL z(O8Ip*Nd@5d>TZgV|(1vlma{2vblh%&-oj zYh^m^X}|_L&{4CNVl+#mK)NhFzZkJZQ;xLagFpk?Bs5IxHKNwq0GFD&0}X%~H6R*V zzW@t>Tc?2;?U}d0@0vtTHweoVP#=^MA=j#2$`*Ia7x%~Yoq8>U(!%HNK;=7018u?~ z4HIZqmPXqmeL!n-4A^5@uL61y8nvdTLS=d=m0poF_M)XM19ga%M({9Owd$zO42QBY zIgkSoymZf}+pM=r)Uc3g4&OrVdt-aN?(pn!@tSqnxqlV!N~d!BtU^Csy|(0$~7d6IzD>7>HKnt@d(p_$l_4z<~8JN7XEL z&bN(5B+_nf>Ju=S&py)6orpLqwy{;6*aE{Dh8;1lEnsdS=-f=PqOnq?T!Ebste@x z*vh4o*q6?oCtN#75lVUfmaU!b%V5#jh+FK>_vs^S5rSM9>L)?uk5R?q(AIKgXAvbc z0J4}NjI>Q?%FltgMp9ua7?z;BSq?cd817e&Z)`Vb9%!n5@_WUNBK*wmTeG$q8t`Po zU$*mMYLZp36YDNZQ{KHiw3hnn-(&8_$};j+`XzN={E8c_(htWOTfBDSrZCpWC@a(8 z(eTxb^9MtO=0}7!E3EMswr!{F98exEPa80-L`Z%nzD)U^4@Z*j^x&ONgPx@(&K!zF z$BZO)&=n<3&S!pkFc5I{K?uMMG#$)_ri33VHkDP*EyToe0>>$i@Dxu<>5lK89s8hL z(VE-|9Z~XDw0);pRPjxaCWKFBY^P9gUJrd`Y+Kuw*o+6~<~$3K6FG)if{fZoBfw7A z%Z-?TcL!IL90U^_l{6g6AG52Oo1EHo*mVe;b4N&BYz#J!w~kKM z4ei|3*?NA}e}Z3o_xcSVo5-DV(glg7Qjv238>OdokKVylx=c>rp`O0@1>0&?5vYfm zU3T(aAGLkU%Q;2C!Fm-z#ur{GFheu%M8lOMPZ$_ljhJkUjUDx(caNU3W6i7Yjt1E1 zF>fe-=QghH{Ni7n>W|-X3TSsilrT@W8Bm|qfnR&+VrC+J>G1h-RMZ9y4|~Rr^T60U z*Mk_NtYWHo(*1PzljM=@zEiepuc%z417cnC*;gI0@nS?Ti%l0@yn2&I@g$?Rv%33X zHoX329@avOBTzi=jf`A6q|}Ou^}|iXk1sdxT1wxR6zrniy}G#U;o^o{(nBFRoi3U3 z6i^r78(^PVF0c~AR&%gkf8UvuIW=Prdf zitZoMjZVI^?a_4A3%VxT1wd}w5u#$$Ju~|jBc+%zkyqU{YnW`l2T{th2)2(MmSdLG zt;`tVb|Vzoy5XfFvmeMaD32KlUhZ&0#?r%yNdnK#kaGOOqh1*^79P7~No?z$`)-tY zpzJuCMKKGE*uVo`hYP>L)8I71SquFGq%iZOqBan2N$#h|Or9q$9VUNUDpo4f-50vR z(i}W21fCO|*4bU%e_6UY&a{@X^MItSJZ0u%whuk98OTSlE%3-+3J3_R#rr{dz5@>l z0~Hx?s&8X}OFbx20qc}+TshE|5r|(WW7!f6e!ma8D!8W*Yo&p%?x_y>;et5BB4L%} zy;fCqpYKQxs-tDY7mpw4A%tpsYgULQ_wy@fuoWan+S?Od{@ znaefFOK~KNGf#c*;Fk{^`0jxwcn(MRod}-8jn6Pr`;x}Zj>R*)a$x`P?HjJeUN4~Y z+2}20?V9N96$=>oGk>#xl%D?jyw?Ko&*_2Oy|p)Z56wH-y>@nN_5BAuJCB<)Rtvo% zpnuPx@{9M5%fEgV$Dc6bGw}jB_{FkC#P`evF7A4VI12~m=Xai2u75Bu5x;lf zWH<+4md(CS-=@Cf@V=7^`mXD{1yR?x{|PfPU-tJQgz&Q?c-H&pWS_)qBvAiGz0CT} zd80mG?#ZHg^t+JW6`S)*^%`;2eog2;us>=3V{>$1)!yXzS7Fqb<~Of^?9b@WxL@Dh zJ$J!G_;a;kR-9*7k-e$!pZfYi>M*)D)&1Yj8TZ+{W=jy~>`iSyFSos(3q2DT_FdKY zO7N=Q^FNpgj4M!(g)-UipOeM)M2914dI6?s3Y-!wLI5WKPX3YET40sxE;dj1FPMk^ zQ;R6jvlqxR|MrDv@)=jOxpR164*C23h*BMpEPk#^&7E4k)*YB1UeD=fyy0Re-f{7Q zJ+u13zK-LI+o=m+m&Y#KorH1ondQW!IXUOV4XPy_) z%ySOR+n$@Foev$DpZzm)XLi4C&(YR1o-qOYT&>)({G$}MhwqMqJCfw_1XD9xo=nB<#_weEq$-+dk6C1E^c?to9+3tU!Qk= z{&&%{z5pz1!%gQ$->>caR^S73q5r9p@JDof|J-*U**|j!eBQY~mH8j$$iV&kQkFmV z$EN=oRs4Vn|InT(8_MN|{&UXs?aw>@-h<|TY;T_N+viO2;*+m+{=j_Vd*}Q)upF<$ zn<4J*dt2X!k;UYTeP8MO2QX#-?`FSep7%^~uv{0Md>r4O7hFT%b8Vi3zaRLBn7=CY zVXx?q<@{c7T{u7<=E}(fd$M`YeRRKVPuA{V?AL#?>5qv>_r^t&aWA?$EG8^-6K+5C znS*Uyoe?#*+)EG|IewsmteXdjqAd++n(e7png#jwuqgH`Zxx0*t1LbeNeC>JMJVR>h1*Pi% zd+_!9Qb^Axuhvqu$Nu}rg^dleegDG6k^{0(KX?DlbB)LSg4sR!8PiP96}|4NB|C4u zb?1^J_1Z+H=PXWpGfMA%V2eICYqNAe@{9&b_hWNP+n+1?h&d8Sw#_Z>~4;qwf-M8eY_Q8$7nR;2mxs#cK9lNZ>Ev<3hI~cXS z-o<#cU{)kLe8*lh)>zscV*wJ`yTH5 z8)OI@CY#8y$P;!6c^-0uJpj(lyT}K~N6FX8;g^e&^8cmM^0p% z)qCe{&33_sI+KoWs{RPaHr8Yf5C%|eqX}{lh7Gip8n_QSBTqtVI+ZOlRt@wDMh!UJ z3!(voA&!>TCi}qYk99LJcL>nv5mB0&@epI;6^K5XtpaiaCapD%*+J!KH!3Y5W(IKs znggK!fW*>cnP6zan*gf=9}p^`s-4M3Ek^1e@MF+!R5=9#3L4QtJ32j5f1|F+F=(<* zr5owL;5#5`E{F+w+Q14DdV)duKwBylOauHRs8_#)ZZ?gPUfFsSr9BRRnShdmyAhbA z>jfk*1seekXreOw)%kaDT7e;gsZb5jH!!Y{za|T(a01=bp-5>R%QUI8N2hg$GzbAQ zpy)Y98Y9p-& zP2$ZUs2RVlY5l}#Mm>@2$heLYsy$W!{btPz$V9BS3M$jj7(wF zi#HVAGmH$S#LYG)LZs9#P5OQ=Zsw68(u>V<)OpVHjicEl3l3YcnH{c{PDFQ3o|24! zQoWYhR*n{snZq!#O(VRSpBQ0*afJFSF=m1??4~h!ZgF&b;S@hbI>mI3E-6m>wd_DB z%#qU3LS|SVj8h-4T^-LL(TTLPMJGsyG@o)T*C~*=RA^Q#FQ1`K(N1^D-CeJU-tfM0 z-$}UxEhD(uIpfPs)&v6=xi_*D8EZaXPLRg7#G1w$^7q_jzby~N zLBn!|m6u^f#U{2k+orM78w{{pMWvJ-ha#(tMK(T<^GmDgF$BGcPEvX_n?<06pF{XC z{(t}UaK=9862`9RekH*EvX4zGb{I>k39pK7DCD~?8wjA~-h}OV+{7yfWO|IfA=4`4 zbH6|s1F;Ws?e{16J#mkX@hS1GckbPL`0@UHzPGu#?h5i|H!{{_PYS`BFiNSno@cq_ z;#8@7j3VUI^}O}t(K0eqd^=qMBZJ%Pw&uo=F1cx(TE4z;cm5|qc1gB?m&0P1` z%v%F49pqj*EXY$Hlt;12e_h!a_5FOU>P0grtIPm{hIt{KxdGu-CHeriG#QV(uQQoQ zWcSI!#lu^6oWB$a!zo?&nR|9P!iu-7e$#zB@BdU(7VmxHil_Sw7-w{PRXcqIo_*=z zbi*p9d3LkKJwMyAlL>PT*+wft$xo1hgM|^Y1Dzra+w!J!tXLea-ryk;olXqY9jcH_ zC;%B}1-Ml|Q9c>4m6`Dk;l_rM&RE6Ln)s}ZjQw(H|2CVRzq(RfdDaqeWG=f1@iBSk zjWyQBp2U=vvi_1Q)C8iflGeGTa&rlZdxz5n!fx91kM@=3D}OQ(jZ>--D|@44>|^J$&ll`hL^*lnzUR=+((evYDKKjJsEm z=aU=B%gNp34am3q2>BfO68Q&e(1aH0AYDqQ>1w*2o=nfB=Yz?96@4Ln8KS*kN8f-* z@AuKark|vLN54YqMhCjvs z(2E6+L{4lLCy3L;dEz2*nYc<^i_E)k6Ymm#1@8MN#izyR#FxZZ#W%#a#6OFliC>D} zBImJzc#fc#g|{RJd!^m!fo*@P7hE^30Ku(-f;#&;NpFnRTbxFG6aYZLF5m?dMw z=IRv!LlL2(`b{Z`HXQdDm9c&Y1L9-hzcgUOY0D6yw@syuL-6BQBkN=urM6qJ1!052 z6bFB`6W4KUoK|7$>bo^R9#*1$Uxjvn^tU?9eWXX}z5GOKhOq>DS6jL|0dVhc6S3C1 zUq~|P5no3T*A%)j1;RDV;EqIqJPPXQEAUT*qaY}29y{z|9cHWZw1RusLQ+iC>y}R3 z2;kHN}+^;XjzX*>; zS!k8c!m4XVl)9cSv=5F?N9WDd_OaCHDU#d5>TVzeSdV{aAk=*D&KlMMc{{CJ07^Cb zhGt`2+kHCTy@x@-(ExS4zNa)~0Eh*O)OCT&oz6^YX9Pt_5KMa6Ffoie`6n3t7z2cs zOOP^9Z@LQBcCQe07+wjO;z`dFKsDMgm`p(2M$~eIECv`J?O;UhbkBoALUuscv0Hf)s7Q_nUS0`o=PE!k$P0K z&2@|g1{ZlH@I_xV8?&KT4DFQS(6kPmKu57qV6{;hXq?6eYMPagvZ3fL1tqV+L&DHz z5C{Y1$B72QFpx`E`*Rq69DwxU;$A6Dgf76zgtyhv6QhGcATio;MVTPV;~)KlM5h1| z&|u6i`k;S%LV%?X{vVbK%u{C?lhn%|n!tHPd<61@V%1ZStX>&tXHy3XK(O^JqZLg! zNzhw-M&N#lNPS;ZwQvz41;BDb19W0>y`FXw)k11loa_bB<9kyz!Gpq82YH?vg{f<`2OlvA`Zz=%1Axo0LcmwW_^sCJhR<+Dky!!$yPgin zNiWnvyV4j0y%^vY9ThTLBC1k&6iE2H7;j)kC?K9p>v|LfOf`M@@H*2(HR>>=J?Ukg zfLq&9aNAL4r@D}XJ3lSzqw}5I+=1y&yI%w?jUss5k_nX=ygVR>Txv-B>01H#>^3t~ zcsWHbj$FKo!se^LXckuaXMyC4h=6sbq?3q}UTLJnsl-!9DRmlri;GO;QbU+$-RO6b zYLg>bq<>yCh@@RPdj*V0Gez=B$c|UEk(DoMrochW8AIO05Z+Cb9?Qkt3;8CCj=#f< zk)aQ14#5jV)FJKurj6MD;*qz)vd?DftNW+iPa!|&bm*GR?hooIya|RLncZ2BSCAG= z&rNuTg$UthG1r9W;LOZ`+)sWj&1uf92Dg?sFAHUub7eAgCMDp08yg49t-6Cucr)Kt zYKj*7$t1Ff*6=2TI{6J!=OO>A=zai^jNI~tSs%8tJztQo$I_cb~Ki!#oU6ES3{7al07>E*X!I)dTEpJKcTG&=9E( z4}Yn8n@FzjUYkRR2eA$KB_`SE95>YHerS03#6+cn&81p)Q$);^`DQ!98(yqd4rm>> zCb|XKo+|m6~n4fGOvHZwkP$R4o<5ei!DVRxS zIQ&P=*a;14JP>$J2@9wgZIf`z9NE8}|oMNR4g@|<5)FC)SXM!4> zP!&(y6mS;iJ^9*Z!5*<2d1*{@@=?!Bx~npHCrBy-X9^i4eYmO#lD};x=FWPueBEHG zj$~g)KAwsj;25`Hw6kcBoafsE$avu#d0SVS2?DnFE5$n|9Q!bTVhH(dr;=Fsq3E|+ zRvo7!p5x(EbC0$ycl-0!3QCr#(w69ARq>GRlsnK&QZexwA*R@Kz@a_MI8jH<``oN6kvl~;IBj|SH@rpubon&g7v|V{M7#S!AtF39~#mIPJooac&%FvVRA>Y zDwHAd8zz~Cblq$*>tlvQYBPjoba#O0+b_;c34~``Nc@;Wh&VnW6xzvIA`C=`EER-L z-H*FY-l)=pw8r^}o3!vpfai(enOl-WvX7;z8oXL^V zRyT)=Ddbb_H5h4ndkr=b@r#}e$nJ9V3VFS#`XugpF;Xr})lA)caL{-9N2RN^%j2{d zMyyD3OK;)zw+D43G-;ggTL|f3*Tu}p#c4Tm5SsG;sCyGQxyma2zu&vot-80WZf&>r zuBE%G_r1H4bZ6fa2q6R#31C=dRTfu3L~ubt5pWbiMG;34WE639+(u{I5fvTxT}Kqh zWn>&j34Q&2-`m|uchd=x@jsu>pU~CSRd;>2d!BQi^PEE>n~(o?33tjb4{2)dH5?#U z$WGuw=!hc2N_m(p&MX!8mr90qQ7x#6W;mgDiJzOPwTV-Z+&#{WqI1oPZ!2abi72k6KL`b|_QHDWL{QEaX9G{vRxoszN5hqs5IgxJk zm8mY(KcK!ec40KyyX?nK$+lC)go(?oiWAsV8mgQtImFXmNb~nJnyza+)1YP>v|BI#C{Zq-&}1>7VFvGb+wbP`<0$ zk^D?Dk&R;_w&3er15$oP0Hr%aW#Y)dJV8P75|{U27W0<~RX4Y9<# z(>p&*R?n5ERRW;pumr0EuE@QdZXKjCHH><5n)vZjTw zgnvM8kEd^T|1DB|GxQEzgWKzcu4Aqk`SW1pl+_w=1< z6vaz=URue%`QPR7AIWry7tFsQ|0~?%^nKzlu9+HeGPajmrdhd)+dCN_MebzxO!J7> z_4VCckE;|(!W&e*qbHs2WwMdG^Cj83g_)L~{+?|2knEha5p)jL0i6T!pUy#aGABFd zN65q8)7AAl9w%}CwrWR;YGvZ(O31dSe^QP(YOKaUNW>J%;vo-gi2E2J>0q#A2cNBJ za_qd$PEMYz=T^u;HT{=xXM|Cvv=)p!44^ao2N{$zqw~`YR9lW%f0?>rS7oxP<*fZX zwA~T2CjLtfcjRm45BF*20XhqaVfQK{jA^fu7olFJ%%Gi8?PyAmh?1O4TQh7)ZV zhQ76bB;M{e5Pt||EC;n7#7NaWrg=$|$Fg~xWsOG*p>jQ($TuQXNy`?Iwq#4{@*p(dIX#fX(wtUK`${#poI za~YciXx+qhxnxqaOpB6#JfJWMvSBQk$at*J)lElFD$a94x_JugC1NqVtU(f#dTcGy zM>@x9auc`X(&NdmSX1s7=X=zic+B{+F(c*Jle!?cr^^ve@-)AabaFZl%SRI+9 zqfN)60=Xa(#S}w9rRABn{lrS!K9j^)q>f1bvCz?tN*>u+3w(9`a7QP}*4Wo}dfQcP z55ODz0<523wf$$?AKRWlab-yCq*m`a#JR5#*HH=UF7aORPvR5eUr`NrlqsqNY*Kbp z`Rc{WHOi}$`;-TikK%=UNcldsdw;7urdHLa+NX{N`itw-O@Zg_#b_|T9KYMQ)gP+A z;K382-c?51t{tzPs6A6VPrFEap7tW`#oCS9?b;n^PyAz0_3E?QR|D;dN3>s~#P~nj zG*U7wuDW{!j~JMHDILbc_{5ghT$G{=AX{1dRyw~Vgf+pnK&wUzj|~0|a^ofDrA#l_ zh;SZTw7d)|51?4^=jhm^NaHk-9tr*)9U4!W;C~?*q(&nLFJaf3nL+@C!IW_6U`a?N?t$Pr&BV7iAxEW3V)7}`VPRZ zNiWK14M;9L92p?An%Ck~I1RXB=}W=wg7703AiYIKdT5l3l9CIif$Pib#3?|WR4Q6< zUa)O&E!^+iRe;GQCqOoOL!!h6m0oMoQ^yAr_^)t;;N+l|GCRnelZj@sZZ>gDNPiP3 znnvauZpS6M4OTbPTvThE<4bn{v0VvQ`6oS%$>s#$9j~9MM*%mBl9aCcQMATy|ca z?&OyQ$`p;39w6x-L0(XHWZ=4?=@}+XoImnxa<3WR4_zU(FKJs`8S;L-jC6b9iJ~*P zWBf||lOhP*g9QGWCfx~9fr~*hf#Wb- zKiCz_1e^d9O>(fB#u&qB2Kod4leiY?3hCjM3WJIw9%pC_Oj56t?=p0bblNa>8?EuO7*u9_ z$kKP$@|u)KgZGT{1!Bt5UK?3@NVd|XNa9K9V7waAA@gK64k{qbHGId?MJBlcIP)5k zF~QWK#VFh*$q-CeoQyPi&=|}Wk130*G;rxkZwtbev=rltmPUeRNkYL=YKwO)_PKmv z2~|b2PO@Y8+HjjOLTXNQS7L7uCw8@-@YMnz1sResjFIEO}~}3|Lf+BRE|m z3ZYy@V6h^vs76A#Hz-|lXTd{`=h;XoI#eJ=T0C4oLE#UqgwF@MNLyw?^Qajm@%cNPH;{!vZ2wM66y&f z2eC{OTPU$=ZH^%mmueX5s5M0DrO~3+yckri!S$;JbyYn)orz>84QLQKrS?P+H;l}Z%>XD6YBnfv-YozWv=+_HIYA}#8%to zzkll8qJ3FLe97E%{Eq2qqJ~aHYn9VwC#w3#U!?(Dfe8Jjk zmm$tSX`5zTZW&^D$LXOx;`cY+=wFJ8*Sbs27IxRv<~slRKN^T6_~LM`vA)`|vhG^J5UNG&s@&1~3Bh<;$$7;%QDmHW`%LBu?P9s*0v|ktNFSdtCZALqBM5nIxHx$C{R9p~XX^w_w zC{`KC!qh6k8AaLXIIbcL{1oZdf!L)Mcl=NH8ey|f)O8fwboe+z9s0PZ*5e69RC<)8 zsMKPHx-Q;mn5onQiyR5pB{PX;wv}?rG^g&rc12I7SV}9$AMz`_B$J6W8WYWgO^E$R z3CgA@W$(jkDWrB~Y^WHPJt-vyws{n7N}-Bp#i~`QLT8O4`K`sb=>9(#hUQSd8wtD~ z#Z;f<30Oi(@ij|$1a5kga-#mmH2#fetSs~+0H=g&bhT2eC~7I^h*s*@QWn75i9x2do!Z9EHQ^8fb6^zJ6z_{rTI5QK7vWKUr)iHvq( z#~9R|MyzSpPgFaM?C{Xui44jS1C-eo4^V+T9rG(x-eH7%PmLxl^&|)_rbaPet+xTY zCqm5#C)SJbX4&o8r(jsP}uWUz$ zhRj!Y#L?vwzwi^|=Y_1!i8Dq!{EHv{&ZEjdAA8$$+b%U$e{GLBJd}#${Dzv=Vkz;k z`VZuy-;?@+5bMm?%{xl|pX`t~G^i*PBzFDZzSFQPg%eV@=Erjzyxd0ZWBc-P@53UY z`HwxCe?KK{3_bc=PpMGBMd=d?_2IRiayo%BiW;`9!DFbU?T@J5FMs^-^l``DMz#5n zc=V!fE7X}=d8W9^=;$y|`4!(BIqhxz`v)eT{q{}Aq3}>_e5I1Kdm+uZu@VvhHA|WPPt`D6u_427^;Etc zmEcPMP^x5KHvQ z_cGCV(XA>&x>m}EVpImg`H7qgx~!IkwlAua4Lwv>BbhV2p4Cd!NaP^KpwsH!J^lK} zUED<>)2+u@u921N~qyzs$Fr%%zXR1%1U{!qf^dDsZm)+`LTy9O8aVAD`@dz z!|i4PT8)FkhU15tLWbw8i$V&bsV0FIU@|S{d;xtF-G7^XtjOfc>B-*D85ZEvh^%EX zU5CtTILuRCZP(vB9~n;%Bt-@lu+WoUvXyD6Z*&Nc2Zx3n62mg(~riYjf$HX~R}8FwI{hN@6_zXABFuikgbVx6fLD zZ>3)1B>e5Iv^womGVC2UzN`(55hM2mhwI2XUd<{5T4blI);LA zRO`S(8bCpDm$nxHob$CywHv4>a2r*e->KcLeGokRDeW`bm#E?V6YWv$H`<>9G@I0` zdZ*s6PoS%~PT!;-qwmpA4Ok^`N{)bXr4=eg5SCC-JPguhaDkAU>D-U zs0>}3;GKGHMqh1QMxRF~0;UJpZxs1)U;_rf2`U1AnDq?dL(G2|7}7Y!$~GihLy|Ir zkgWtdKt5Txc$R-6w>3QI=IoVJo6^E=AF?HcO$RBfzQ(@_H6&X{;8?lm` zom>Z)S3;qdEFDS!JJsT#5>x|#2$?rMUQE!p{26VGjY9d5<~gXEWd9~mM4mL*Ug|xL zW+bo$A&r4yCPrt(9@#U1Qw{X+Xez_#pU9eh*%&0f_=y1-K&x zPa42L7#@bS#E@LuD8&0#)9jSc4wxu|(SSiD^ax5zSZkma2{!d6fGh;8rGBKu&hm`B z>NE-aNl8k6r|}+0HoIgXc!cQzb$S%rna?E8nCQAEgS4~{t%loz=q(Tf?*ya|$n-?9 z0V(5>b6-a`pAi81YyfqLwBvmsrj9Tr10yI74TwS(GQf1eOZf&ZK`x3rBu>tIz@7w_ zM%{$bBQYBH0>Yt1C0YqCMP8D0PQWwZGh*=E3YSd>ayHsPHc^Tc1}DogX{$r z@C#9&T~fLvLL@mEjpj{|S=|7-?24h~1WIPmH7TzA&^D}?URIHVMNWS^#xa1hg{+H5)5@$*k zPh+es3l2!|O2abVgWru6A>+4vD;RKK%{ zP-qK&iA1mb&lXkgivCn3qaqkjCUZ{W`58`F3&1Z&J>z;%xN>f$nI9hg%;XGSC2*%z z=sOTI$s=@o1G2?LnzI{qIUb;ij5nonCp~Vq8WT*0bd8Y!Cxf=*mAN=3p)-BK<+3BF zz6l6NN?f99AalDg>p*UtS+pMmioQWelG(-Kjb^QhbYT;ZLdpwjEkH$(jvtzmQpig} z?G&SmW|n>sNce0cX&iW)QrxaY&iHyH{ekNP@CWn@#=e|pv=t;Ssw_0*9%QXZ;4OU| zMzU$9O-3rLis2N(l1rlLCBzToi^23q7mFNz0Co8oWdm)yo<&qCHjq;kod>(RKT7db zgTid~291(ic&o!9eOn^7Y{iXsVpKJ1rN~Z0*{WI%Otlm;(N->c!%m^x{n6h3I5L6d zJV7QakNpHG+&tmy9^z;>?Dw~2WcfTd4TF2!sfl``Pbnn_bX&YDrsa&VqJO~7_3!ct zGL|fgR$5s#fhxP3jX7p46^nF5L*WjMBAqr7ETtoA<u0owbI{`;D zY?XU}P}&rbF-1&O3B?C5R>z=q=8SO=k1ARS689>x81m3+h_Yu!JTqvy&@w{_SFICr z!ZbX)n%p!YcJ#+{$Mb0PZ^CZZ>^gcxlERTfcJ91v*e#x$J}u;bquik&m+cy3c`Vm! z_a-6px?z#eo9d1UD!@jSXz%3tqn0=>VeBo$SNmy-h@SCX!lx zNn1ptiDWVnjVimjQ5^Q=db&r=_SqG{=S3~eE;hp1+W5t~UR{~*xz+Z4>@P8y@IM+{ zjc8c@>mt=-jA&$^c!3d5G=?wEl|t2RVClOqxi&)4H`oP{{oSp|X zEm?+MTP6yw4Vi#ejqVMhWQK!qG;pe27%WBL~{C)Qg_J482Ehx=; zAv~G0E&qD7JV%tm%lE$tM6N~3o#8~dzS6A}&8WKx#!JqMuK7gPxp8wyY)i&m)W6J? zna~N;GaRK$Hm9P+(!iB^!rC7q%nuw#Nq+En{ zmYjT2$>(oJ0&!ldf^y#YY}o!X|24&;*Pcw)Lb;uo$d(>L5nj`_=4cxwES7^Vu0yC- zr|{ue6a`UYV9wNVUbV+xFOW%(GP2&R7}O!4n1g8INqZ8yUZg;{RO&+CLczfoRl@`7 zIK7_?ZGU~5i1fBdEM1}kX;S|(fJ%!{ZP$owca*+b7hTqw?$L^({Q^4|vfbmO>s-Cx zt&a4Bt#~@zm8S%-dA5l^NMB#xtCdR81k4FHSB_+a?)eXjs~zHd`?b&$hGPO@94DSg zQ2N;ax1Cne7(?tlz07g`V|bq#`+lgBU90!GVI`pfrqb$a0_!QGVxidHE<|2s@;6I% z6sC$Bttj=7K`Ki)TnwR}ucpmvCK16=MY4i@(k08%%EaIGq>M<2p7JJMGnD9iiz{y2 zVVYj!)}|6c3G@})KuOd#jJMXi6hlQ^l(Gq`(ImvG7nvJyehAYlA^+F)q214>(^6;M zM(vC}(T76+0}2#o?}~c1SsH7+LwN>eM*MwUuj<{s-twP)j2O)&OC{L!V#+(o@tddQ z^i(LEAKCgBRh+b0H{x1F1~zNAtVngJ+VmspsMZi~fR*$IeUGXQwA-ScKl~f^?iEA2 zeo1;gc}mgp4v}kbp+`w95EVvJd#HO0EywEmWS(QGfO(^DszrjrC zb=^EMe`~fQ(ScswmXoGGCqB2KHyMg%(_L$|l+tsecw0CQc5YM)?_4&xOo-Q?aMR77 zbe4@M`E>jTr)%m%me}{f0nIF&;h(xahqGWDML`;19Q=F) zR+Vxwp~3P~O(TNVX-{d($%&+9`33173 z;qb9y>#lZ7hb=}eX>y}nb;Tv!JruNq7^Eoex&uKcLIZYgG9AT?ucG`ijS4?!)rxWa zesL-uM9RaFXs)As6#}(=_12`Q#+O&b{r9}V^sjOt+a%)#UR;xk;kF>nN`FbT7`L^Z zb$e`U%u@5#_TB zsi}xkcqk@QatL*+{THPieVJ13-98wJ!TK38)|z#_qFu-WJ~ck58=m#bb;Ey`c{^TO z!o77?-2%^C`xce#407MB!LXB!hVAffBq@!^F%XRy2vpT1W^K2qXq49fJRh1r{^%hT ze!rg9WV!D#3a-OvG+acFFVb1FHbH?p!=fU)do2|zs8y^fRUQI_BJ-DL)O!CgRa;sA zrBW)7`U4-*RABgDtrV%LXa=BvTYAh_`~ZQ zaF>VI{hMoo!)g6>vcVE8-08oUw|dqh?LO@jw8DWm(g4~Y7k%ZQ!w!p|MEY;;x#ymx zbo};l|LS{WBP^lccPcwcf6YSOzCzowwyCx?sP~=TcJ@=W#u2sp=2}GlmN~~GhtuRc zQp>!12~9n{Yrz=N?q6b?=_d}?OivQp+q`hJEEd+gBxt3DdU}Pn_O^kxk+zAT63DUW zxgBZ7aDP+*Yk|aPo z12_9c5ZRW^DjN&uMMk!i+#}dCaK2=Ypz9{vPW~5+EC0V2YPiJ@4z52gRB-#|+#YgQ z|93}HYYSGW>8f0lUqz!FQf2$@!BID-#`YS%7w=%pX_I%_mV>Hm3pLkf+Of$TT+z0w zZLTGsvK3{!1fwXJi#VC&gA5I|xprKnn>Mc%4>#uI&3|_G$N$42*|R?$Y_|V8D0=pF zwhP)=?zH463)*PcJ@?#uJvV?6C#y#5%rEpKPvuWG3j!*{8aEzCH6P zRe@(m&0I^FQc(xrBGSJ&R}VH6@8@ZZ%{AZbz6yk*r_v0Y8*_7Q_vKktutRIvfmuzk zAJJGsZg#Nges?(CuS4T(t_>IHdi~{KGcM5cx|^o-^#$#zz2^veUGwL#d{S;<4$rKA z7ot$}lw(lZ0#d^wSO@1O?7@be*OX7z*5XUKcQC7iMY3@O-K@D54w~)jizKpwMm=r8 zq9|TZ8>@FO5W~85ezW_J9!dCWrtQDO%zc=qoYS{@LS-=fi3Llge=-{#(y#h^HfNW6 zr@ze`?N{?;s@hUddfwFAnr;2FF{SmvygxLmFFKmmpBvZB8Qm$_+;dOhLl5Oc`cm@y zV9UAv>a*=nQDW$6Gl`f-vo_p^3Y2`pJh6R7{wX=PKIp|6@uwHc*8kuYSKQ6-xk zs~=puRy%X;+NGBZ+1xpr&EY4|ZTbogseCBVYg&JBw9n`?rDdy2eWquyaf6?OZT_Zt z@=I;UENJs)TW_002J2ZnUfgyoal1R)?nQ%1W|DszuIdw_4F(0iJ<8~=5?jR{@k#L& z@lEl4@ni9b_^o(M{6&cU5%D*Y!CTjN!wM}iRYt>W83BN>r zf%+2l73%erJAI>ihkBQKulf(_ht*H1pQm2<*VONjBmQgkG4)SJm|^(BnOB6FMpnvR zm6Hm#V^!K;Vv!z`7$xqM9vvr4FzPmt48tLwHZVGPT1w96D)^!DXrw{P5D(whiKAp% z%?$cN@EK=*@Yo~8M3`(wiYZV98Vuq*L6Ar8AqiqK@`5K@KloPiRYzokCW*R4J>-*{ zkO0Sm!bcWqTKdNcM-bAG0j9wFZxC3J!GYEYaSI&ghF*uf!&d~2B!7-e31V)<*@(@c zl{9X8DP3|FwtI( ztF6j8WuB^JUXtj^GlAcHE48bFpcs*pprCosj-ET}$}ef!W~MG9C9^-UKxsZ){%P(j zFj(Mv%D5tp55tt81YX{xim68=LIyBu!$~5AEwe_xstmCaMQD&)E`ypWSw&hMVN0$d zImYfPZQN?EB8HRZ6a+}P6QWd{imM)lTRL-NvcrNO8P_Dmo{&z^0rKF4o8+BS1B@(R zLPCVW2ykZT8_1ZR44BX|gn~T6Lxhfka19Y7gFouBDdjO_+Xj(aZ%l^xOoPpuwPBJs zGco`t#wQpLWjrwQ4>>kyT9x;xRLOzCu%K7@iZ=5M!fXVzSaxWE*>R^fXS#ZvxMqf{ zlqZ?lO@>uH!mCZ0V9YoogjP?>gE0nN;xdHApnf%5GGgO3(^4!-w!A5on`ZQ!gzSCp zho%~r3AcpcXjCqNvov7LHp~eb;4w(vHz?CZQaDjL;!#XDb_#+!a@t9 zPfM-lb2!{=Od;|n&1A?mRq~W4Mszt3&4x$BRz{2Eo>cCVaWrn5Xi<{pUnQ1UXAh){ zn+L-Au!kg*_CeOvmjyaa1qq%XJSfxTKUguNlzp`tMz@$ui4}?6`J|)9Vc1cQ#N3#P zB17VIWy*2Ssl?O%j$`!+RCy|;Qog9f!;}e5u2ns2Z6VfF#?`9U*m8NZ9Cnkj4m178 z_IKqvd#>^(W&!30bt436O+j4>@5)z_Y|`Mwjfq)kxs5FfC*N_?p9cBn?A z?0H?~A<;h3v>Hz8i3_PNDw@v5CQQ*I>PqVGS0y7v1hmBQ?uBcVh# zQi(Lesd~{I9IwQy@i?WQhEB+LKXB|u)RRmrULg|-j*3M&VxPa7+4T}(l zRya=fC~kY*tU?6MxMeLtrJeI|;@M=z2{KUHMKaSB-ms&TG}g8ci^^E6)Eh1SuHkft zmFIe-zNNH04qCd;@UPNpROHGi!lL@Eu@QL~&GEJ-JEK}c?~ALEDVvhS*Kcd&PhK-t z7r8_#85XbP?Xi6H2n^4ZGbVI6{RQC+Qy$1oLdk3@_99*P}Nhbyav z<4K4_4mvP|{PH-vRkh!cWxE$!AjTotrq^L=_#e{0{d0alen_uL{jckU@zSgG7l~pv zyYSAqH!^D660IDiV!d1b%$?n>*Z(G-@sJbKDz2}ta4^ZuP*YrE%S>=hF5}@1F1>N*PDE&z&cJvAVN7nb|y%*~N8JafdAG=?^QLTu!9=pU}lm zn$J>t=mrK9B-xDHZ?5XBtPpPr#hpxbttBrY9*=Vs1!UC3`VJ+9_dXdlpj6V-;Z19l z?lA~5=5eV;CK;l{G>KcWWAy}l%~CwxpB1obqf|?a+farg(KoTy5=DzflK-k!LWM88 zu78Pbzcih1zp~BpU_x49R z%&by5H-2H4*p%B4p`uj9iupU9+5X0`wtB#;9q)?hxVQu9r z(XXgON*W?Cwn{<2cK@1z=d5|g==2#`FK17Gn73#0k*gIYl~mE{G0RM+IvsKo346EP zShO%@tfm}Wtk76zQL4S!+(C_G=-VM#9bG+evusD{i+$$;+k3|HmOgn|$LBJ%d0&Fk z_`9*cKY;!HFQ|=wx$VbozvP<2B1!e(aq&EHgLu7otGH8qTzpD=Mmz|M?%%~P;nDr4 zIDn2*5<9%E^eP*bW0ez?Qvh{ws8x9yi+1af%yRqhfRh3Qm*8 zYGb{z$vD9{**MKOL#jC)0WDzTK1r_$i{v0;z?6HEMpJ79z77VAw1e6OHk^x~r3w8D zYl}oC%tOql3HiPWi3&Q*1bJ83{zkfK2I(+Z>sZ6mmcjHU#0)+L{^w>#SLs(bR z`jh%9V@W%vyvdx4%QHsj3-dH2}5PKIM6ilVeEH5uG76XG4 zGdo~|1%{_7wN_wcp(?^Puzm0jYb%YZ-w70uR~HcJ8oWW1Nt>aV*QIGLy)L5)34( zI=3T%%8X4aIeaKKL1~&`bNQ=99t~|Im7Yv4023Fxl3T^j8)>OB@d<*F(FnaU>3;NXXiCz@F82ph@sNkbAY7*}g>4?%m4&m`Y8>+(~{_9H_F2_Kol#2rFy zV{;?ap-)dd*I!ObtabkTX{_H2S< zgF)XKgZs#sXH-i%AH8qV)RM|6bE0^IR2fh>7!m9Ogp!Cx&IS~wC;%SZ*ld5x%q!Bj z=sJ2y{s3xIK!H?dL^4ig+5_?Tjdw1T|N0m;{u7u=X=m1Q<5q(ojM?2+@G{6plf z0$)SWSb@BhTp92b%(RBgxs!)$%GoZbBr}kC!Mfp%^YLh7!c21!OrjRM(T$P}X#|G| z*ociLh^>{82#)J^M;Yx5zecjo6|<^wB}^UWCU-3Wf-H#5+BhUQQ+8Y?Io?8G$&{TV z@f!Gy65+G!=wW^bWK9;ZBX9LoNBL{NmuqF?sn05jk8<(hw#;z?b0mDu-f1V0RNg&} zCGUWt%y=`wr8Ox|XF&919GPBHE?~{{k}So=8cQEqh)*wCq_A{<(j~>pQB=FyPSN7k zW zK7oO>G8>IV3X!ktcajNMOxdBawD98Ie56Ck=o9$&oX4FIq`Ok|9U8dI2ot z^EF1?NF?wBLw8-6bEpq2 z7n(Ofj*(UCyTrcr=84@@&qeEo0>%-G44OZhdQLef8ZCgbH`tjDk&3QK=r^SJuO?sW z^2L84S&HGf(oyoi(P-2XRj0jl&ajvie;<51E?-OXc$gl0PBeikEN)Xs6bTqIc#F%H?y0 zru;kPm%%*-cl)O3Y8YRcP7w_ua&QiIs;Yh)S|wFbVGBYJweQ9UpIbgl{L1jhVvQs^CJtFj>14>xsIXbvjmc}P+%}!)9}q?^f&Ohc@%iF9 zAYEtLKCYUiLUu3&c*H1V50;_e%8@e~mm`Og-ZDWCG9W4px|JFUhRzSS*^zYk zB#@t2QP)=pISa%{*68o>Lg|F{8X??JDQTNy@6qnG3z2NJi1^0&3ClylCMsuEr|asf z+dMe$BI3@P!(1H5LS~Y@R0_&6R|`zqIK@fh5$3c|BelxGIbG0m+8MQ6XpM-sAp6AY zaBNXi`cU|V#Z2+-w*B=0$&c6m4AyEgIBb#A(B}ClNtSv|zL1fq>t*@k|0V2%{#m}m zv7ze~`BFIeF8Hh{|2*`v=-XhE;N|P^Zy%N01_usK5uEJf8!Y4(#PpAU%?9q69#JUFCI zqs%>q5GUJuOGSMsoVffm`cUnY?5SGv-CRK_PyLk+OHUBp=0z2vQeiu z5Wh3^QBYr}u4HqTVaCZ9Yej6ULrveMpKIDx*P>RpyE@!(YgD?8S*hL2L#Yr;lw+~R zG0wFPJ+sjmua*n`&)dyts$eDt9UEyR)Lk@v;8V8#^5}`y;4>FU!$^~{R{h1!zw<2HmrqBYj&?>Xx=Z$OH6wL6Kkk^?YiO*zR zb$>$&=2%Z6ixj#4{xA+2&(&TryIjZ>NP(80jgclcc8xYL{R%6$E$rp`YI#ckPX8C* zi_h?q<>!*OgshKvv3QSZ=1=2q((5@xB;wkmHzDXVvrxS;lewR_{-2{1)F#!u8H;tN zL_5wiTR42t_Lt!OM0d*n8GoYLGPj-oQ~tgulevXoa>=`lg7t3gCVL`-pXarFaAC;6 zZJ3G2d$^GMuICeZRpLQjrhh;09+b=H--Gx8-^=@y%i}+=gal3Czv)n`{CcLHaG=p_ zFB1dC3Qb!%)1Kh?9=xiw^YR`~>7V{BYDnKSjQo>2=C%!+H;I9nzVq*+Baw?*yY7;K zPoc=ZsI&clKZ-%(%#Nyd29>zAVaARy0{wGHcm5?qw)<*^tglnE{Yj&`e`dJD3YEh@ zCMQCAW@=>Q%-A(ETMBaKynb#TJrs+*Hy5|#<=krzPPu%e631)ZNFSVycUER*=*)E0 zW9iu$9Pc=7@jUkjXXm+gvDGYZ=}013XiFnP@powUXnT7#Ym4QxP8ff$RPw=xPR_XA zuITYEv4TzUvz(uCencChaWcympnKJSRR3B1 zg8Gp9TlG)sH0c=$lz_@wL+jB-wMlJtpb2!cb{3jIuRsszRuqBWP7dXJwEM`S{FwGh z?bF)lwTHB?Y2VbodjwAlh!Rzps8o8z-j>b_39c}%5Bge`)c#S)@ssGyAma#JOe;+x<`ifjWls>hJ-}Hz-W0d1npa$G#3syu4i9p!LfSYexdWOEhJf_E5dfa; z3!}jiC3xiAvV*-5={Dm=TkJQ?Tj|>4<`3}&!0@!WDI1jl|4eLC2G#>1omGOsJqki- ze&hNXonYK?BMe~%g&~Ky+)!ROZOBI)gAbS>B2ooF8WFZEAu@PJy(t8p_Vp}pWD|L1_QkqNTf(`ncw#&#^@TByoFh#gO z?zWYdmw^{RwperAYm=Cp^hOz0&ZI~bZZgH^@U&n)N>@h^DIR5%d#nWqzhuKe8=cV& zZJ^$iP78({xr}len6$6iFq-2`aZX4ABN>fs(Fhzp^i|+X#J9+NW_!*~WV%VW%VtiF z&jgVh(wRupNtJM*`^;dI{#3@CDM$Nwy(EWW6YX;ZuW%kVc_V#ROU0d+((`%40(`HR zo~-8c=Y6FJ;-UHBQ})-hw@1;YAwqAOB&3nqLz4bF&&<|xIq|CD15P3o>78+))XCG zk@xxUE1=;=W=}>*AnSr^Vn}myDk`kGB8nsGSVr;uYtL~pVa%8=+>9!UP9;WSlAdis z3W}tAEr(n!OerPqgptvR=q`ao0Fvp1C@w=7Gpomo{!dZq`Fc9y04YS){Gfs=xmJ$g0k;IO#$VU;&k3tqPlWgJ2_KEtY9PUc?;EA)OfC} z@np#>k0{7qNUa!+#$PTa{D?DckB1F?dQ|BP5j0g^p!pg$iIPOOCOiE`r(5kN0Yg__ z%7fhz(`Qr!v7nZ6a@vYniPFmINX{+YPVBCIi{o{;MXc#Lm7*3YO9-gx7I z_Czw>2opIj#1YJ%%!#L3>Hx(^?a^ElgsJvL>`rx=Gkt5HI_w_~}Z-4fAr`S^y1_g6DsHk*rfcxI{Y zMr*6Ly(8Oi-0zi_pE7=)X|CTuZdp2Q?9#2x!%WulF~4>l+w|qaF1tBDPU&m0mUl$z6p^F>}6Q*k9o1c;2IgVs;QJY@u>x z4ya~0{G`zO63RWFpAVClknFi_)!KZji&8bst)Dq=V0%u6(mN*Cq7&@}Efe1z^1{T7^GKJ3jJ$P2d*Xe=YQoF+SowroU4t}WMZ)H8dPtkpGrrUS-g2#`#wyd8>&m>?N+`j4(i7!m6#5~&sC4KcNVXA(k+ zvfIjpO=J4GVLXAgJnu!I`z^ zsyH7lRrxS(Buh-cz%<406M!q?`9F)Yydc|&heHod?+qi_M)9QA;teAcE-rdks%|lh z3!q0S3>T85V_%?tY`}c)b;X`_%g(Q9#u~jieERMuqQ~AQ_QMrI;25wg=6vPf9d{M}YC*$#GxIKdEyxHm;u#(AoYkOf?ZXzFQl*)b0V=qaWk-^8? z^Z8QQi>DRs3n#5b4hf1u%$r*2C@E)XxJN|Ok=~jSs;zjx8>(tiBy*E_-5RSLx4O`O z>2MPAxJr0BerEEoOMNx7u^v@Yvv7*_pozET7i=)h4$8@(7YhRzK zLv+C8gh!M~^oU4GdY7}@cl4Cre|^OeD2Q~AW^4O_)s zbD{m~9kIr3X0EY@gkr7NCa3=}i}1u1TQ_aqH>kw39rgGDCvPS34>^xLQI^^ zg<8bXWvjVdsD-*X1j?j9$9MyCO~uv(1xZjSla(_n_8#O;fB`13#Fl&|qp#Sgo-2(> zgV-5CGLW3a9yLtK40UW)i)sc%5F}VRviwYbJu1PKM5|zw)&vhd$;d1#EszM(A%yH_ zHE~STKQP_chdl!wn??(>I>jFu8B)Yj#ZZ?qO9I4HoE(?TN#Gbb59TUo2;dQ4j$w-j zkui3k4Hg1;X26R?aG0SIr0}m3?3|GZg=j42m4RuPrfh-e3_wE0Y2_7gZy4dd1a1K= z5}2g1Z!u-D)ZwdhuY?Ez6$lVCA*V`w7s#4|j(}lU&j95ySwLr;<03bL#V_ATWJBZ1 z3&QNiDyFU2u+@-e_6(q&5I_|fItBg6D_^C^AUb`<)_jBo4|q!_>3NCisf1hSMzH_u z1kNQpfVK|Id~PAYMH1&2CY=tP4Z0r?BZ2Su43L}PAY5dVPYkY_o^8>TK^LzUDEgS5 zNyDI`#D?;speMJI*z!pn$MPRr$QI(Dv|B*)2&%nGh(#|FBMy{n0#^X#co1imoMTAf zvWdAa+3j2!@LFz5iKZZ<14Jr6ln0cz#EU#M8^~Ym#lGAu3~1=Z=C~Z763$4_&r#&% z1Wn21(gEo6He_cY&N9kXt`dM8dF!&XQH5lf(gHL8xO?g82)c(?st5(aXRa0=f*hR; zT=rx~=|pKTJ!ssZA8~YeX*rqX+(9zA$?yk1(^-r(PEC(UvT|C^CQoASbfzV-v4pYB zPD1ul*%y!~f1o`}1ZLJzt3h6tt}q$(&;#VapO8)fQ-b8ixV&|F$;ets9y_|QK-3Aa zq^XWEjktY7!ZP`*=|WED_6JcsZo2SlR5_XgmW?Wz=gB7C4M~T`0U=SR?4*qJ;cz!l zCnS0`8(b1I586p{1W?zK@p3o=To#~KDhf$S=qdp8AZNK#`cD|yNL~Sl$=9TxXiKOC zG>_3R`D=ovM7Neplo4Q$gK@DEeorK&=b+AI;aia|g{8pb67n_XLhKk@EMDV3W}3$M z>MO}7*PrV+Jv}>7)O>Zi=jE|@S4gaCY`x`btK$S^*|Bgm7eS^KIX!y{BA8Y)Wo#i*M1xH%$y5xo`;w^KL4v~~zc ziOad|7ih_@L@jO)zy31UFveZK(iht#NYOVz$WCS4|9&CT-dttIEy&#ZJKq}DbYeDz zT*Uv78#7lpAW)H{T8s)WkY`XrP^W^BsctMk1F`!5wlyk9BnPou5I4{#RQ1sf3~Q&IdIleyl3<8u^wnaamXf2X}m`(`wW&VNU}5OrLPf{@51ohre9L@&*- zuH>li>#p(dqmrxJEUL|uAX7V2;i*dI3QfDx%%T8f{V5)%E%W-gKUHynwXa%cL~0H& z*F!bME~^-LMFb?3E&yaTT{^LzAGWM=p`k9bqgyNJTNGS19ut?jn$p*a$w7TfBEr;w z3<2WxkYl1Eg7zmeCP+vmB_&x;WKfkzpg0Vnak$p*V$f5Vz$$h3Qo%BriKNX!Jxpk% zlDDIkMkLd*DlY(aCS_F=RKN#EPQ#V5o;ufOTDD3j|&asu+hgfwean{c28Lx?N_YPN7|G0tP-kfqO9~{dU{_oVB zZfxx|b;Jx;s#E|?7qROA5GVpy%u=FK`cN~2;i?snEeZn8k``(j*6XP5iqOJ2zZDaId&Htoe5-qT|M6DxIROqg`zp zQzug5rdH?|WwYq{uMCNY_iv)PT}HT0Ko-FwG3gzS{nK0?JQ*z@WWLY=GTqRd%Ra4v4S7+>ecwC94VIdd< zlJ)Y-y;xUIwlCA(W1g;hz4(qOIIJe~gZ@u4_&5@kNG_HO#S-=LXbmx(HTI9;-LH

H=AqG|{(x<&^Ub|YIdwlQ4Ip_TKe>I-pHK1O)!F`-qOXVtUSi1-3q68|s zsVw>ld`o87F5$9V1O#9*0nsy4@c@jE+9)W_koXW+X(!BPFs&rR8Yv6e7_v~Ll8lFk zdzyNTXnRbmS?oT3U9Nq}#oybMQ)_oW;LMs;Yd&2&OS@bvbOp7i%Lh(qKKK`Zc5o0K zC{1Bpsv|BXhHaU!8cNpuXMr%zDeNcmOZ@9FDuU{A8ovf!0X)mVuOWe#H-o^h!Sr|r zE(tH-3xMDYUQYm27>n!r@66X(39Q#sRst@ zOYESJymXgZWOJ0vuY7P@UIjzIBi^bX5^pgcyUKjrafAK85$`o&Mq`0GLrH-I8THCE zClu@Y1em1Sxmi$a| z;?N)+8;o~gqcz7#F^$m+GV38JW1av2PQxfa(ZD7WxF<&&_-qt(Qprf%I8Ih{+JE)h zr(}LDx!85go@)D^NL>3Hw|qI`P1ZtaWkKkGEjhYRgZ_XkyLMC-TU7aM!DQ)0HTu}# zbE24<9QCEb!vaf-8AAeS^D$}0d;|{L*=;n>!?U{XWVMpEv*kbsZy2qYP#b-6Cb6}|(1-r;uzaF7Po{A}NjF71Y3Y~oh! zkt0vq#GUG^W)0TyDs!*nH0*^EpzRi_kz@G>sesxb26Y%s%n=JDg7Kah`2(5%W%`h0 zg7+Xw^Vm9S^0;IA6NYsd&q+4KsZ+!Yv{O#+49O5=K|DF+9Uql|tkIaU=0wySjj%05e#9$JN;wL?E?Zb-QpXY5l*lmZw!rMofl&H=OF!0 zHbdIc2jqOR-EXuYg#TpDZi)e)n**2ikui@DyqJu6b{~CdCo=bic_IUΠV8)Ly&( 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

Xzn0VTkeaba(3(B zGT362pFHRfisidjCiYi3i@Y65N}gz58D8gx&xdMZlVU-LgXb6HYZ`XM!7?Pzia{Q% z+zDqS+(T*{4P7j+;+}Zdh6CmEP@=u7-{$NDf$_gGd+1yFu$zO{^RQ+2ickD%rL(_y zgHkE>N*i=~TCY6s?lU9$o!ETHla|fPz;Zbi#r3dI-u}i#_$Vp>o{yk>MY*gI?4}VQ zI(0zJ+|{;Lssrtln3fKxn?oAG6ln-EnY4f=GC9#3iusA1&B;|#aLU){M8HH;;_dM% z9?n|iMx+v#LX=xr$Xd@93A0`CpQ`K$e)tu!v$F*6UPn<|yKkeYb&P19P>AFK5|n_F z#A@XH=)|!4Q?m{YN|w5LYWA)w98=Nnwd#ql;}MAxPambgG4_MpF|*hWRFE;j-bR|n zvT0&h>Z0L+mxgLFjww!sLds%lvz@gpO=FCuu6p5_uB*OzrM%n=d3nWGzc8?|pQFxw zVfCan6%{^U0y!6*s>~h=9xmaf@Rk#wnNes(4A-X6wkd=+ z!#eLOehU8_t--sJiZivG4}scbRae-ta-RhorpS|m3?GX8Y|E?}Ml?qxO7}vs&Y6#0 zBT*&Hjuh1>UFne_$?~xqu4?2n`bDLrME9K`*WB2j66uwk`S|@vfz1}BQ&9lk99U!% zA)af?#GmOWP4u8ocqB=q1Lb%58 ziqi18mj>B*;A`Fc;>CSq@c|E;w3t`%D!R(k7$LTmldC`qk(7GRqu>Zi!RJo+c?0c* zQ>oUK>>Z#zsAc`dw1<>gerB$PF z*f1B)ENK2vP5rzIzdlSQan-6Bclv^wF*+f~hA$I*?VPnJhBa*NCGw{u&Kb35X<1y+ zbe#=z>0C~jH_f0}wboA9oW5YvR4;d$!NWAn@3{e<%@q?fLjb3dxR543YaE>a{Maa_)`eeP`q*8nnPKmgD=6J}(Lj00cBN1a2OieIfWyBhx!#$`t z^9WvZh5^(PU@{CQ0EE-@C(ia)e|+t=AK%g89m(CKIv>AVu6>qU=f8XEyYEiDn{U0m zkLxWzADy&Yve;z}<+J7_QsDb1*BI}t@k7a@QyoUHxGQa{zrB3kyyds+n`C!ZjCM#J zjnDIEYq`#j2Yiy)sv0yQu^osCHTh*x(XeR|nUF_L42u=v^dyTw1RuqmZ#&A#_biWs zdgjCygWX3n)gi1aRZ5R~jkj(QT`M~ai=_%3369!?F%vqCNZ#mAVf>_D!+ z!*no?dDJB8L)5kxF2*5VE3>tMevXiir^ei5YKGYKymZqq)2&FCzFAuh9@WA@l*!1vvzI7R|={ za%pOlE)zQ^_(b?e|7*~qgF$HU(1~Sb6NjQnj!E)Zxs&nBf)R!A*ZaaXvZ<5Hrp7hDkpS|RO^oVM90mUyPEm7>vq1)^TmB=|uv@Igz@2eM zrz6a9<$|>;G2+9toLLU?ig=%#KT8sMlsPX=h{n=|jh4$GFb9<0>ch&Cc!SpL#eyBj zd9g~NW-hG{eiQol=+>kA z$mqU#xtk{BR?S^=V8SaCxBP)!mJBU!95`!}t*f|Z_N}3-N3TIYA!gUs=-#3<2>I5| z9ueDf;2V4Jo!sQ36I=sU7W*aac=JSEn5Sp3g9b?_P7JABQ}kdp{%rs0_?*SXbxET< zb#iT@&SQSb8RURsw~s3KKeTJc)!cjc}v z?lC)1=7l*)wKxQS_4Nnt$Z8}|K~Rt!0g*jn zBwUlwk?AY-G1_|%`U=^O7famq$zRUIkMV0L4+b_nUa5ZPt19XR9|``bxW-Is=4_zIOFb$)oi^4H=$ zRuy2w>OK^cnlrioT7dI#%g^kK>^7+XfLTDCPe8(TD#AjL^(GG@(iR*7I0Nw)Ku>^i zK&FtB6R6>b3Gtfs3Jj8r_LXpD2`G&Gh?0GAcK@WpO^RvZekH@F^<8q;+cPhrqQ}7b zyKfzu#xD6-fK3~N6KEr9&$H9_JDy}9gFFGblGw?@TfBf)}g3#iap)s=uZ5o$RopEuUvd_-x zAH&wFxOjDL_c%XE@MyJDsAC`I?F|Ea{N9i~-+?hPoF= ztD4dXuDHHvZblAgCBo=s6)DC7=aSHaS{hCqDYH+>X&Eqfx%>jB_?V;3SGZ9(*PpKQ zKoj|?I9#0vdL4$`sAA9`eH$p77i!UOZ6zJeUqVR-f0kET?%S*f`3jK%SYe=m6eL#y z0klT4WN;lQ3Na8IAbEnw2*`m65Q%L99b1u64CY)JDe2*Em~?NWK7N;YO_6?w**CmGkWwSgZ72b}8p}sB!E_KEeGmzqO zX`jKWLrZgAQiBz2X?A(vym0(6${k$UsEN`gpWYZ&6OE4^otNsbtE`BWiZYcs#ctK; z+tnZ7`vp5a>6l(06(?`F`9fAB zKzb-0nQeYy)^#>ggG}u<)PWvSjuX!nPg6@n*@SP*~>RnB1;(fdC z$?e4^#`}-r@N|Ig%|DA&JHT8I8Q8)QuW5ZC8UEe&KP+5@-hp9aVJD^kY zGRGsOW7c-mqYSe-`r^Jd4<}7SAHBvKCKZ zdJG**W##J}#m0Z1D*`aW>DX_{`??x?;K7qi3g{vNK_6I11bSsq%a3#tyAtwXKy92} z;WPyew+uWBH_me=2Lq?;f%|AukQ7BHjm%g(Drv(=H^nzUE(pKGxceWp6*98Gw{EOa z9ClXeb~6vs`|V8Z+x(7gkTbqBvvwZ(&Bn&_Jj41$+;57A!rHW~(?s5ajW zQgiinT8D}&ZHyYo=jkiuE z&RXnmZKsMzc^K!TtZmFl4ewo|c>#TpQGUR!Hhp=)4@l7Wjap>OJiukfD>xq=MIP7D zh_drL)%u1(v*+dP^uS-_3`!5ajCb8O5e@X;e6Zncnp3u=`r zts1NrgEeG|>e8TjO-=97a^g|~2>gf+qMw0POu=Bbk=}OUG(*OKA3v+jTDN^u$^-nXbF{6e!ea!o&FFvO zV4uQ8`?e-tMX@e0@!ip*dB?OzSZT6+bBMcx-{64q=s_9&FYS-j#0j>2L~paPG1Qdw2uh$&`QrvAMClRg z9W^k}xFgAVa`MYsDZL@QG^;px*vTF8?iCFKk@#1vXmTr#%9(s?-MqXIH=zx3DYs1$ zT@6gQw=AP#Qkdgc6Y-#QD(M*BRZE;s+Uir7_5LmB1RsbAkxBtzPtMxm6)SO7e9hsZ zXqlHBlmrXz7^n?7@G6Ylf>o33xAxbDrPxs-*(-rDcUDisFX!molv?^FYE?B-=BkZf z)#9V$@(O>;b{M=WaSs^g(wd-U zmZ^1f>y}N84tE)#R~r}kK%JYbyfD;~UF`R?CP_Q1NF3_G?$F*RE2p zU2>|mQZF#EB~s<#As1I;Y`8Z&O5MFc7e32WpqBt2WjB?4fgXJ;NoyzW$<^VR zs`LgRQltl8@vtn+V>}K1P?HDsd0BpXg7da`p+EFSkolE-ypZ3(1PV^BAbOeGFs1gk zCNaZSJBk+2I<-;`E(#Qt!|Ene;1H6^3m6|J!ISaPx`brn zK7QyYs_yO;S3Coc#LLg3(Rho%`hw1es-uPp?X+tACPRA%_81iAXWVN%uyCTj$Q(*M zkmb?*V`d0d3dJ9LjhAd~flRDsL(PIG#OJi|0^~pOsi1y@WH^8yNnHkH{7LW-n3c=n zN5L$Q1T=8>VSMfW#fV5>YkOi`fOSeY>s$=~g5RN1Qc_%W{BLo;liBhEqlMp*1MPu?;+AERs%Egz z;rFDBi>*FhffwUNig>*(+Mbe9C=JqiQU%7Np1L3@wTjA4Nim*;x3Xed4uZxR3upEK zd0?8xC8Xfu%~ltuw?X-k!ed}CMhK}@2_=MTz$h*3%>f+_$_Bh-$Tq|0z;{H`N3&z4 znHUPQjN6p7pExR6^}a}NouZ^&B~+gWD6RniQnqi&Sz~|${sSAPNN-bp(1d!G5j4a5 zV)xs&^lck2x@S=y7{W8`g*F;%dL(_-*HJH`?1e6#MvMabkHSN-dTJVqekW@Y8rq}z zFKaf58eWI4NuvA>QRxB705M}7;zMAx0zaE=WZwX)j$3Sqq2J#)GFd z1tHF!>yDzxF<*=wd+8`f19H$Id)pA2@>5e14aGDkc?b18?-b&Wzjki&XGRF+PD+>N z{r1iU)ZyXFO7W5Mo%3aq>7OJfzJ)3(Lp1T2*x)pQpVB_x^Jdn|s~h<|n-ScE)Q%k*Ng zZp?}+DPbAWRF+})^_X$F>rcOFZ~Nv4SCDA?i{0W!{VUmL$nN@a;s7yvm{jbOP4K?WCZ76d5O17k(rNuU1UAH9VFSs=yR17+cFww(Gxh>!a3?IZi7zF zaSUfx5TMAxK}JQvp}A^fQ<4UX-avM>gOK|@@^dH=MG&}Ym+A>kRTExdk9ob^w7Vj^ zs?X@u6tPXkOvgjw;Nn+80_+`ibi{YY>XDJzA%$6mPEA6|A-B@c)W>L}r!Xa}8+*TE z$>^Sq;|$F*mEq#*$^vb0kL2D7A%y|-##%ZsRhKz3r_@O!6fHa&mVjPNE95|?dTU*Z zat$BNtxn%UCpt9WkVmJ4dPDpS{DB=HS3U+Ar2($v_l|h09oqyiMAtx}bG_Weg>pwk zhCuTaOacUpLw@<{Qv72f_bGHoT7PNHXF>~ z8W3**LR};&p#pw@A&Gp|A?#6vS_@*?fm~qg{S`fT_EJ^&t~UD=NFQJ zO#-XhmiO6_>{ZSRDTf^GV5_k_uDPloQdb2oB*-oea00M4m`@~2dOFwoOGos5ozHoGyv`k5)T4k44?!Q4;K)F^2*sB{c~UbP4>y6 zaqjrvvj%Mf@3=7}$(%IpUsB&r6%m_hx>LS{E0KVTRAa`t^v@0>QO7S~${#=># z+W3M*mxZso$fT-L7>XV1w{D%ANA8}V1XNPojoj{oXZ%(Ki_~T$ZwLrc7KFXfM||yy z`+|oyxIb&N#A9^Gpm$5+jN2o(*s@E`0LqAth`_gmUkhv@OBx9k1kj1`_bVni(+5xt z)1$#u?Z^uYQ$~YZCHS)oWfDltw*k(7o>zq{!C|uPN|6LJfi&0|Rz1^ELV+eX2y7DY zN$Hc|2Lb1@B&7+Ze$NdBf(YU>VA1qR!ye+vz4WxVhk{zYJ%m!$4YqYhsR@11q?&k? z)asWR6Nz6&?jsBcJeYa~ZX+J5<)L0%OURA5>1rKlXtDst6euS|`NRv8FomQcBoIhe zo;7I?^GD{lQNN9-8$NgNti28tS~)JoL$e@tNY+w?8sJ zIlTbC&?8j`in|K_ZCo^E+PrDwdafUr83)pjLDe` z8>^^sqCbY7olrAu%sYhvbvga66$g$a@@N5mNw9`}0KE%(QVA{R%e@5Z$gpT)yIH#A zAglO1J?F*4E8=-_p|K~o>nu&H6SGA#F7&hWWo@?$MQK6!Mo=1KwA^BcY$YG%IGHx^ zY$Rs5((`{7ju+S2yPh5a+ikeM#83`R7Foof7+$Sk7Htpg< z&qE5gr;DV5x^l~OH?qfTNiX;pO=v#dA!3-^v+!T%w_eI^|Jphl9T>6Gu>5JWHn4M|f7CK%Q%uV6>TbRzY|rf2s@vf< zGkUE|6J-?@*Ti(|*1fjJJa1Q$Jfy9908bOxeXL5!#z)vY&Nr`t%H%B#Fz>kWjxb%9 zc+Ie#;_m_tSt$!y(8Cc0ZXH_tLR|ky-rk{R6=NHWRg1 zsBBDEk%8r%aul`S5@AT%IYub|uJ9H5tsUMNt000m0S)@L#Hufs)qY~nAyFkTKFPf2 z@Sh;IJw+jlO^Ldjn!?z8I{`LrN~F@dio*{r@neXF1&jLD1&azBsd>SoaZl%%Ye!4Q zQ|6tFye-1(plGnIAkOn#EfmJhM#&h>a!}tGp8KvRU&f< zf5@T6sRZ^;lg^7y;rjbhwgW^6bk70VnB1v&rIk;jrT6nOU|iA_>1uq~A)d_qBnP_a z32~KS9pmZ$fRnm_s^%O2jF0+u0b?-Dp)*6ql8rhfE7GS$=t_Wqu3CAiBf5H?2g|mX zFkQfl(e0W3Y?CEJ&FUNvtmYa1ZDD6TMS&do0&)wyKmU9Q(hkCoB}03Uy(7+V=a+-o zMCRsGn_<2d)TrX?VE$1rHyAA`Q5&NS}KTN3748W@{YD6zJ7D0HQtytAFD&7X9}|}4_voGW#}~vreSBm0{{@^503`h=H$_T-FU1TSiIKE+ zg~8|GMst`p%}wK)Q(Tc{I|^wB<_k**QP|2}g)wQtxKVE=3WuV)%pkg?x`%9e(_gI} zDL5ONSa38nuS7{r*W#$=qShu_ac8*>6>t2aae-w|O7k>r0CTFlm;pNC&d;8K^Fy|P z^wYE!xP=Q)QV z3?xzluH=W>C4h4K<{%=a05y##6`jCf0IOSRgA#Y9n^;V@AxA5OB>r9M84f zv>C(Qb$KVZ-6aS*WJsGatza3tnMt5CuviEEGg$TSg4rP#b9~%#)9$JX_KrIs+i3lt zL*F5j+g)u%$)k_EiW1?lr%}=|`~M%Hr~}Es@fP%zFn}|N!|@WD%UDH2AqVkeKp>Fb z5=R9hiAG;@9ho&>M+PDUx-Z}xAW)%36DrW2)Fe8SL?J>W%=P`mzHv}UwZp&aE~4V8*AlxM);n5Sn7< z50Kv9!=+B^06P|`mVr6bS-yw z?j9k2X1>QZ8UGIffjBBjpR`vFBBqtn4Z8_uQ+JuF_mwmX1kx4KAe}j>ZWn@h&njRPa&uF4=JS{1Bh5CPo zwhqK9%!wv8+)OrAA^>}x%#Akf`GwcM{A=l^}YirdjDOQ14) zDs0nLhC6X$pep-zUtm)?yOyhcW0#v?P?65OC!zR<&^#MPp^iCk31ydoeFpSD-fa*6 z-@rmgXdwnaxofDM`W5b4XH|u^TUqgU&VQZBqc^~7$d!X%06!UaI0ed5tZk-Lem~9d zx&7dV5kr9{2nm=G(EjRClM&`_P!Hqn1?kX%ALU?tk@E49Ra5YaqY9SLFwCU6X}W*N z;XHZ!Ab% zt~jZi0g-x6~jvd!N_;4?7V6^{D*nC%GFgxP?HpynZh!!_9XW(wqZ2$Vf3 zwB-5$p5&?4In7WJMnkJ)BnVYv-aRog#$?{1U=DfgfL?nJ7hF4^*tE5WC656k$r5aA zw~l-3qpb9?qo%!+cXFY3(#SnS*9~#mhdi~>ZfPQGGo^8CMu*!V`Q2^_0$76fq`-}J zV9{&@MOVGGg!8B{#ZSBRJ_!tYK@WHR6fX<07XqlfPGLrH@&vNz?Qj8cd`nyq@Ga2+ zCfswuCePZ(xXD7iPt8! zL2b!l|5wmIhrfa>xr>uae;+%~U??-f+CnnO7eI8zC znqM;|-1oE0^d~q?AA#=|!5eV#BT+5XMcYE9P5{_Dq?bs~{p*eRLPZ}^^+dWPVahJl zErRn2Ey|=)NWOz_gJBa)N862hA|bP6)R4LNK8W;DM_m8PSm+b^!M(XdM$P={ zdW4!y!UK%=@i?@UQlL%EJ6BUFD^9pXHh&iB(u47hbUCrYcy9G>7yeAdE`x1JL0o^6 zk{qd>evS0@GL=!1<)l#FCxHYyxN&eS6b40o*~36!VUm(gg%?uo4@y#4|H^UCo^7nDNzie0cCj74sD zy$Nq>ZbDtbGjR8;)4}*+@KK@K#W50U7bOrg1Ru4_*nRT!dn7L3-3wSVZ~wmfHC@2@ zQxNIU$1Y;yXa7BZ1=)OXz3nczm=f~<`V4$c@OhIRXrwZMTb~gP6UZPP#I>kK%Hivt zD2mF0X{$|m0{-%S{H~Lnv5^LRzoe=!O2xN^{POoA+M~d2SVv)8kqh@kT4LGZlo=@rRK7me~m=cbbkg1X)zs(W#c{Cc`CCTvyVS>?50NQDA48 z;>XI?!a9!6OYk4e9CoclfX4sdzXrK6-YP`c$kagBEXWPmS0#tSD4PuQUqJ0TkyQc~cI%KDKj?KJh3dQ%i?crvlw4~FB8{P?z2Yi!B#{h0*1TBn$-fe`COWw2j9d$)vNDhI$4K`8I@W+<2{*1CM!zJ zJDkecv9UmC?j>uP8+S93U@Wt3>XGacM?E3L1=oX>1Qblt)Td z;W4HUT(h4K93TmW3Fnh{@N*OmlEXWQ$rEz&kMFS4+b~&Uk!E(96MK|OosK^qlVRg$ zzyCl^0sI)8RG^Rz6gv5mlM=db4=*$s3kBh%Hzf+liEl;WK5(U2eCvsDK0t_Xw?Sxr z-&PFZPurja@ZoHa?ze;9;<-G$+!96zORB@THfN4JBq4lzC=e6*ws1bYOB;mvHbB^l z0q!a6W^xa$(5V1=q;G{DeuThlmZ{*=6Pap4uDmnhN=^U=p*bmQoPk?ZD!t?f!}Vv1 zTe=njGwL0FqP|}sivdyJo{q5v{SF!!n;KIV-d-{}b58>Oc@_ooQTI9)eM|S(< zuK4z$Zwo@d4oFSaj}n{jo}82GTPGVdzzOq-l) z!_C61khU{FIyEwU&(F3nI9e@|+2?&bH9nTiy%N}FiZoBwYMDi?_DbNDIhOa4LGA;F zmP5B9P!EyMKtH^;Hoqj3VZyy(Q!jBmbpRRs4R8MvU==n>uyK^iMkWyJ9fk2QVx>=w zFD>R@G*5sp-6FLT2D?}pSf4%UnBG-e3`@mKPe$j&7R>6VcZ)alNf>p>J5_?i9+}Dcq=F!h& z7G^~ox45MBTeGHLnu{>kjPR~9%cSA!YirjJpXAvN2C$=^qA_oV29pZbmGQ!f)Vp%l zh?&5ipf?VV_5{{E8s9U!1Fa`+1(jLR8G%j1@0&b@)>A*5z<79Cei0sEHk0i#u-5AX6BE&I&&M(PZvvRo6fcKh_K=R`RJ$OFc#npg91;=U zsn7wXcqJ*xa5*WdQz1h<9ARy7G0^}aY1f86}rom63-tx$XEuq1Io-*K)&nQfRbxtj{mzYFmdP7ddu?=4$(m@nxy;9 z@&qIz(amOuj))&wv^R zo#x;0$3rio-t(A+HuXz)CI)UpVmOaN;<@~r7#BBT&b^fqPX!zZ$u|3D|BeQP0#^VX zjE7mS1V^C|pCi&xV46(OnFt}%Gs3<2#!V8j2A@TE?47~*ZN1)5`Anfg?+z=xgL)g+ zHN93oW5&{x(eCu@N11BlL#>t)JzvnoA$H1XV-ppaxO-{+_MSh(+4JG-O>p)It_t)? zYrzDF356=9)X|Jzmx8 zPcEG?qx>lofd@yO`3Ma-Jq0&EWfnM7aX!*6~xIQdFM=@xu$Xm&?7e|8Cq`-pQ3UPdXFKhn;mzE=?XZ~xSL9l8Mb zIQQV*p{MO@>n5-lfFnDQ!L9yPCkpEso|pB6_Ax2LK(oWR<=G^-!t9XMbt2FImMhs_ z<`aLv3gR0E=yE4qWlb@_+a!(wtOAZdF)qk>XBd0JjeoSJIL}*V@S+NvcOi#UurV0L zZTvic8KaEdX(I`87PuGCKNycPJ%l#?>@`Ol<0U-CI8*SpwZbi8vA@zfYD05$NS2+u ztZK}bB~%((PR(QpZB2q?-eQQeXxeN8&i?1aMJ6MM_iF_p{T%7VdcEM*yT2&*NgLob_%p zrOXpgK;rQR6$GMGN_w&D`g~{Z{bw0}gSV%;&*q<Pg_*uxGqNpmS)$Eb843djOlh`I|P}T0D=#B^RP41jH>z=7O>? zu9A2_V8C$BJ-wL2i{-)bdVp#f4;4y;8wISk!OXk?M{1S=I(S?{d_nLL&og9| z0WA1P|9ICkd5sMPkUI;8(_w&I?k>YyJ{BIM-zGD$IXjj#O87#qj^BLB%^&4rffgu` zSwY5ECOoFscPrR+@*(~dm(pz{Vu=b0eSvb(upe$RLE5cbo7e5e{qScUQ3A?F@8fsy zxBQv%;Y{zrnaC6$K1@#T!0Z%&)`qoIp!`|~Q^>r%tY82bVdwW$2~Y9}jZ5*T4^QqY z=%&}-`~eMv6MaE(ch22TdwzqpOt58-ykzR}_iE@JXN_I2h<{h@Uosz3odT zT6HmkDkl~tM=_npQiZxlQ97OAs;<+Zs?Zy#2+qWCXKDiav4$x!m86D{<-8H_&K`iPi__qTVj(q>wm+{*>F5R_>4hH!$ry)FYbVNg>FCElYqjy@-CB~8=xs?! zzi{#IC(;foe{q{{Z5+N3Ig!l7`QgEiG}vS;q$V!cr-%`)5H!A>uGjynC7Pv4jRTgz=PI6x#y{IB^f7;sk9lauFMd^8px@07li#qc2Z_CDl&W z)^@g0jRzS|TS+mZM1H;u)a-A&2nlv6n)>E;mCoAw)Lnq$7Oq5lkRB|v-fja~ft`(9 z%!+i?GS|k{5~*XBO6u4xi=p%Ditt;n;fHu3nu@GXpp-ltXMeT~uO%>yr`)-mpCiXT zgs9BPH^9C*%U6NN!<@m9IKNOHkR~`t;(o8-2Ocaq4J*FxE|f_?$DoZ|Uhp%h zaUu2+u#ARJ{t;=*c?k5|rbh#z@@HXSLl&HmOUNDMPt4OBh6_JDTyQW1Qa(|??q04|S7Ks5%)7oOMBN`YONF!@UpY+#Jagx$Yh;ijS8 zSPx|X3K2Z*a0atTIf+5^gh?ewX`|>1Z2Dqhp0d48f1Ia}o29<(kZ-9h@Ivj{W3l^|f zB|7F^YB#BoX08G6dPV0_es^b5p2(9H1>E-( zPPQvy-6nTY;6y)hpWJ0~veL|kL}IpAflbHq^N*4Hd8~cD~c#_=VLeSkrH?>O$0QC_ThoRx*>}GB!x(GIObCwVvND~O3 zSElfs$MZ+-D6aQRSV@eJeVd@Et)9UG{~d9gDd=pL4utWDK|z4xMGlNg<3H<&yPka# zAR+d1?j(emE_J|Aor3-({#&DQX3@wSoJ8|KyGR0D03|P=nCt)K5D+_jvT)>?K$AG) z<7kdb`ML^_0pnW+3mak0u8w&G@Vq4vGJis?P7GJC)Aqf`HAS|oghN-axi^i8A%yWKBd)u{~Fq&#j6d9DNC15 zp`*}j{huU({9fQ4HAp?XrG3v8JF*TAB1O!D>vr952meJ9$L~X2=rW2Q5EnN9V4z`+ zgxq>Pz>ovAvlRdZ7scajRv3I0-5w&YP6M_T6ZY50c`z*C`G2&12Vhjy(*K@Yc9Tur z^aiADHkVF95~@_`B}6(%ZwgYSBLa$aq$(;PARtl{P!Mb&iUl8{@!AruBup=i!wN@d6yg>D14(3O#qZ(r`1 z?r0ppq`voriRGVlmbDBEso97B`ABqht(Giqc`ZldxTSUF3}*a#gV7=A1Q(0&8P|grCHRw_{~wc1Ql$%VN;Htqg>p_jtZP%13%U>>nnA`}4LWs&&Hb z6Iq>S(zM7IR?qUj^Su1?EU813>P%Y79}Z8*zEt194CXLYd;^ijA7;}SzxPK|dt^vd z^O5{@8cxV^izg}W860_CMkJ%f7@j=vUYVylo>M-?oHMXJyf#PK6~49j_3mnf9Yf@5^2_;%W?$6S zw9!qQLh-HtX;!?<*n|+rfG$V=olrX_Cbe)EOP}TlsfWV;3dy+7?pd*Vj+%vS(4zX= zlRy{AH`k3b;VaB^;uK#XR)rZ}X<`d`RTwm>OM4rWx&NbgZwQ*q>i*zKeC-%bUVEqE z!L!$xw+9ytZyr2xgQqM_S215(@(#*w_z;@Xsg9^|q{t+E#hOkkN&=3S24zhy%Qn0k zwNQ^PF#$Cxi60Frt1iKkAilE8#Sd?ecf~|H!V*XC>9*d*Sc^;b8h)Ie=wki0gvP3o zks&qO{_%nfT-xYjHt5gq9Neb$kRh$x+#BY2ke@1Who|KIE(x`rac!6XUF-;}7rUfh+49=UlaQDfGji7SF{QtbnLZ0VYsFYKGWT0Pm(__5E&XlF%I48(w6ji>v#de=ET=~*7+E(_ z4cYz4wYThHZbu@&+DUoesn!lvV-V)It@Jl%R2`@CepmikR)pik((ld;loOOb1%+8o zXGn6cR8}9+P&A(cU}KGq059?fO9iG29Hl{wgfSSREC&k&mJUkXfr3IYS#?JiNFHZa z{jvtspBf$AeC3wX-$J9Q?@s(`qQe~$`qs5ic892m>T~kIGv6&e;fTm$SzYl3;G(*= zEpHxO`fF(ID5vs)l$#vlbY>M6^nr`G0&IrOlZo(GK!6jY01PZx#Hb}C=76Baed8Dq z4s@d(EXVzU zE5n9if{+na5k+? zG1DTjuFzHB6>yg|>)1f9oe&x0S<3mm5nDy_pS01)R(UAYE8WzDc&c<+DV+8Jzz7aqUAOvdXsEDToI z%4?S-OC11H;ckPy5#&GwUHg}lv(6%#s>2bC8{ zh+6a%ajitn0AD^7B(dZnKo_%Ph4Yn&n3xE@lkcSKLEfQCzwVjn=&fupeS!_%799!C zbX@4(@Nm|QzY!k3wQ8?%G}vGR$b;+!KN?bpfbEFL)dVqXwmMQ181Od;$N&rg zs}&ap$zG*BXZRs}fnbKYYMu;YXcq=Yn0pL2jL=}U5&3Yz_zU&;{U*0C^KVs_T~JKA zjtu~Q3cugG-7Faz+AYGL9E8KoL`?(%Y^VW2Xx%W9A`ohT5rEN+A}b`A1OzrqhMW0& z10CXT_{7cJf>2Zkt6|tU6bwm$jw*$0R=T_4z6&`MU-RHUpIqt6w^q9s!$y$9G4SX5 z`|W_;;vomI7RI8yGtdt2A$HYPJ#^7P5d}-kDl}42_*E zenCiBtdgB7|DqMAdR&%P;gxE#^Zj-;Y*K8s*U z{O1%mKg66#o;OApY%4C_RxtVvY!OSg7N%Vm3@gO200;^!7H#Zs(HaehMhx8E3CQ>n zK;t9EIq^heWw+7CgsK719iF71-eomA)$7(Y`I3nsi#HMEmkGhznl~#oRsPI}9$>ZT znnRV4#7-_^i*dG{;4a!0#jt1O39u62|0pGWN|5Ow!xjk;(U~T&XdId6F^+dcRy_nc;oGu z4TuXO^#b!mn7yQ_35baY1dvGg5tPR(WCVZ{2xet>plV_2z2SIs+RU*Wy`Awyo*_#>&QY^)E>vQlPCO)W=0eBk)h z6Z<;`qtH1%bcY3xP7B6e^>Y9V2|kRW!-r{6sXQN^aJ#*qy4_DyIVovQY)VR!9!K*SNxZI`Ot$O(;CBiIDG_F08Hs~lUTvnwmVdKg>VQO z4P<2m^NsPlE?#`Z@WR63QpSQhyltHYZv-NFGq^G5oW+ahd@-b9!y&;~V$1^ZYbD~* z{;N?#(shNQl3gUc0+GE51ob~zwl!umi%W`Uk}##AyczVop)_t{(C&Vyw78tllO_dJ$IXiIdTOn_Hx{o&1@%I0MMwR)#;zAcZ0sdz+ zt77gG<#=yn?z8>>3+i36q=V!Rq@iS6Z0aWUsisKfHIxq3G6WgqV3ljBF@Yc)VEy3! zdh2SS6sxedRwccHS6EP3&L+_ryvl-T`WS2S8H$XMY!aOu5}DjBBr+>J-tNo}2@5G`80-BAUsb-)%97i+SN>|LN(K&ywt8H>2NmcL zMGRkV&{3LjvfFj?_tws|$jCHj>)%hhmfW&s^0GhrggA4PQn3yvNWv!(2-DL5Uhchue~xa#|(_Et{tUwiuWT1}(Bf$`5w+Bj*_MtwK^C0&VP3zlO4 z#%-f&IDuK|;%rBR4+-|8cmjmIh{@!>N&8h<_yGUG7l9X6IRH=JQ&sVRpeR1_FZkmE z8&wJm#C914lH6o{0p88A%HCRNz*Z!S$#F) zWlL?zd&Q@NS65u$Z^c%@8H73^0dVExMdkTpf+^;Y2@FI&q)4@S-HQ+!{|ZvN+rs3V zA2?GgPYeT6m=Xe-z{vr)?gqV9A}6A&fJ<`?LknXga`uHKMD#R*RS1}OF58w{| z09iAd_q*yDBt?9J&GGX{FznS-0T5$T1;0=vN_G5Vp%K6~7O*$qp6>*Z`~k4=9C0hB z+zbx|b5a1ot*R=1exg%5MZ|QV+sYuj1$I!LO?7M)j8N6w#bXR~Vya~@_Ny@}zuuU~ zf=BB*oECt-kKg>hopdAH#*jeOc+3zfB+NDlVaF zcbDT#bB5MA%g2;KnYb17V?(5qmG5&eIlwR;O5F%{DV6<+O||eqhte@}(E*r1CHGIr zmOuSKkyFn5GhiWGhve}paE-o^T2AOg)Q#@Fr3mKA=JttgErFxD5e@10)>@ zj(hz=#e0Q(ui16(c*&I!8CkICl}0FlA1_B*5@hP(VZ+LP9d`I|V38Ykp4WpTc14$G zd)p%smJr|cixbGD=k?fm)JLMqHaVl8)8BpWIVtbC(W8YfYb!smOjB3cT&Rc!I?|B@ zMsc~=j9BQeEQ2Z2^k1A!ochmN&CtWrq~}7@H2#@>o+YTGLQB^sC#%zCEs1;B$4UCj zI(*N}wy}JjJl@`dI7Dd2@TbBkCfB5hW)Qyg9HT%W^n9EkM!OgC_*G+O%^I_6_1GCR z#;$JBV&jk@8`lpTw!TG+hgWpW&+oWG*|ChS%f4&T;=7hTdbBJX(yB*~R$sRO)xi(x zz$09J0l8PS0!2Hd3{>=^E)x>-MH~VYZF+?YG!ze(j&vxIN*M_a6F?LdD&Y$r=ifYE zx@h~i6Sk&H(cOkV|6VJH1E~Ss3u24eFB|TEf5pNVMr3*(xc9j+C30>4<{$h+&gN`> zb;klRJYhK%cw4 zuX;Rkj2?pg%&T5he3DzaJsvC^-SFF0(?D9{H@;BjI6JsDvSe^>ExApNxUZsEXf$AX zGu*2})E5!hl_fJ*hK!!{EpuF{wL>P~@A2%oz<0opH}8VJ0juru8m^SuA+bZ;B|Sf6 z+5D9Y9uGg*ASWt;HTDBiT;Cm)(AcdnmAdLj^bt}w{W*XJ*t+no>aXfA*n4w}_#xE& z%k)^#WxGTfKw>H^tFj_T!=%ekw=v{qM8ix{f8_)Cg|p9G2v5j$T;M;mCt2NhpS}>5 zpgAtEn3CW0tVf?^A#A3;kpG7-`?vJjBO*DW-(CEiON(%_MxU_Taj@`{cd@)EEzHT^ z{e(Zk@?I_bX$YGwFXPMbt+THxi9^6E$d<9UP+zn~pfaJLAP9#T1`52O4e=I9rG1kW z>3LT>mvmGq)z9l6xS+CysI#-ON|%JpRmPM(3VhK{`Lk$eqR|ebrHu1Dj4c6F;c21h zozaHgMM+ZkCM_=8CDl`Jw}+H2$;wh^huB@~L^I%zz1Y0mtE>dw3}`R`ZLqb-Nt9_b z4>FIVC(2&LPwIR%o2oN-U-_eN^F8ts_%3I&{%^A}aMQDHrKJoE!>_)kX|M6CVqEs} zh00#=OnpR8;3OU4YWIyxj)dO8Hs-j{=!hUs>RqOqhm2r|WjLQ9R`lPg;{sxy`G@`m zFkYNX3^RFv+dcD1Rudq-zN2MxK*Fa3G|Ba(-s$v)M>Q>qZx>uNuocUC1pu;M#6$cY z09t_Gwh{6VfSA3bf4%0*LiVIV6ZtE7bCoo);yP+FfG2@I7zyNAYBW&ZbHoN;%TuSO^iDy5N`zvdvHLe4;n{07Yr{qjAMaO0^RO zza(1pPl$2goD7-H!p;L%p#SN{Tz%Z_e)&nh89guBeET2+gz=-65c!up@CRWT!eP#h_ zlfM$=1{`isT5khsbpn*;2#FU%z}|g>U$ux$jELsZKCA?Gn%#>Ux8{t4)(IA8r`^01 zTACfA&cpI)?~>U@^Uv*3>eJW>r>r)j5PVpuv>|+1Vpf<>gg0NbL+&uc*JY1N<(a9e zy*lX$oqDC3_jIS;O;2%Go|TnVWRJM^M-gtaiqs3nwX}9o^?g_D3F|jG;41fBy3*_= zm3>Zk(ofX4ac}i)^?27Fz&p@S8staQ*!-bW45n&9N z)7=Z(-B#3II_uVVTD_pX!ESp7p5uSnzcd{dg)|LMr=jOn0-q&(kv!Y(MD5BUM+iUP zYo(@mJ=L~YE|Fi0c0gj=^gRNuT-HrWlUsu?6A5d~QkbQrC}0|jS_M!J3Z=Al#Dt2Tv3gKYlMoZ|h2|xS zkS6Xxlqd}28UlBn1mAD1s;<*Pak8;4<64~yRX)Q|nf4jOb@`-Km0Yp>MJN=+&5 zK7UfP9#0MIe!ADt0|Vw(4Xr+W#>RqM#trDx)83QqU`(lRXOew-zvV4MZtYn-xUfNk zqT9E2Nm&G$>c^?T*5o=^i4$s@v-liLPe%bMb^!;}X1K10M2`n+I-6--2KN};MQi4) z$?sz?L?&fC$p7N6RReyTJ90y1oM7Kt4$ZxzNV+?&zWy|Ojkgs1{-gS)ybSs%NwG}X z1BKKGRD|l87?Xj0AMh9a5#*u*m>5^QLgi%CO@?Pqo&DGI^$zlH_l)c}a13jAPw%^) zW;Hyuq_mXPvqrTZ+N&oaP5A8gXD)nl=z(i}TmF-O{`5ze4&JZ#Zh4V4U3y^u zgWP*|b(f9aoMro;Ud5ENi+eo`{p(x)5dU`l-6i} z8MQ>%Gv+!&nw{WrY?G)Z?y|c)PGyxdUUQZ`trS5!&|<>W=HXgoco`N#l2aey`$uib zmga$&7!iH%YbGHEDp`i)VQ7t)XxR>ZlGUU>u=iqi*sXt*yqlx81AbiL>L_a5duas! zc$%&JW!@fOihee!CCWI^9(&wa~R7+6(vTSNfoU#GsH)HvK z`u1f?GXK829xnaay_F_OZ6X>urFN2*9EziAyPaAXE_q%*#8>bYhmfxs%{#CWkTHm& zg|wwDBM^g)AlUdMO>-RdAiTuJ%CGSb(rkPV(2&G1WWTAjFoW`>qDZr&XmvkHSwGBy zWgf{rN`2IKEb=ylcGQ+XD{4Z%CBFx)^cB{FVpj+T>30DGPer&zI;KSVrdWPWQNK{H`2F4DeIPfc_Vjl>2sLp~9L7yYfrr zZA26rqa*@mg}DH079rAKYAInnktc?wU?d{L($d1DNJ-I>m7ZmXlC>~Z*_oVNHdr-y zv-|_J^%k||lgboXV#<2uOG&>%E$CMyw90;DKcZFT@i4V)aB{M;Qw`IS%MK|$!RUUt zQVh5-uAv2&di%I ze%?DKd%yl*5rToNA=hNlR4=mv3m3)KXVHkBPho{HJEyO?v)|JsGSOYlv7}i}(B32HD2i?h1n5E-UfTDs+$F=?6;#-akC8_&hed zAlh9d@=$#9SB8cfQ&bq+7)WO0+@L5X$&Q4)q8K#}_$q1_b11tdvrztYjX->BMTLZx zoSN%$20jE4cquEc+4L75rQ-XZoSU1{{k>07H5qYavtI3^q-LqJPV~+4{`^UjhktL; z=u3XbysvrLtS|i(>bY|2)TqoQ9sN)G?PiX7Uomy&7i_1=0Au-{=uB3x*A=hr<%vJ@ zId@6TGF|!nY5tj(>0n{r%)t+&1`v6m z>#Yye(0~W^b7MYyJ~{A#F$^WSsXY$)#v$&^`I@=iw_9^FBleRcIcYu4ewv!YYVgg^ zUQBNF?wM4ce(s(4fHK8Dm+5 ztJO*W>wY_!yyRcZwv09EeZ?HBG5qBs`TJ3?nJs#=Wp|*_N`oe z8V^UE|l6|wgYn79G>RNe9t;F=P=}|FJ>0@gp)S4pC8k(Ba2rC&Te4@vq z)W7(hm1cVXolMPoW#*VHB|5*m+uc1sO3fNG>WOqV_(eAT(4EVS$OL%UtCnFVnqxBL@brU|EopYjKsPC8?54P!!L=-0 zXH+THcKeXc>k*bXevLCwy!~My-jd}-tQpgxKDjIca4tlJoNhOZv$-K7RIdP(!w?k< zy$8s~5Y7RbNYxm>(o~Ab7?Yk@Yl?Dmg@y3Ngj$1hvJNNZOy4F?xgomEUY62(Zjtk4PqFij( zwn2loZN0Y}S7~tj_Ji8B{i@yVZRxprk!Q3U)UMs_ZGzf%!S)Gg+iH>efU;I7nJt?w zdV?FbS~T00Y~Nx`-UQ4J;bSt}h!Ix+&hBg9o>F9SjAolQN`K>9-sL8El+zQ8b5}ZdCJ7Aw;_{ZqEt*82}(vqH|Jhf(Am4blxQ`A+; z)aV>_^3)X5t44mPY2{tj(`p+$M>M3-s?8nkpw`uSRV7aJAu>B;*+CGk7?YsypEd!xjBKoxw#ZHeL90G{AqpZGVK z1b>pZ=37Z6Slr-| z>u@9tPSZDhecp7J!p{#kF*{lXk21t&qA&7`*!~R~-2VTkZ>44xeS2Rv`Ud^^LiIHE z$wYNt|Guh$9`v@raiCf0+p{qzCz7S19iTu8xyM_4K)Ymb@dUWYL-swMFn)|RG8-q( zc_P10^ROVRWbv{8m=V2yovZ`7^kDD`|yx|6nU^hM2Rn7~^- z_z=*G;ty<~*Q0`7`8Spy{?YQ^-Q2iY-a?MB)xh}UjoAKnMzY&AS;JM=YwO?ckU{o zFMCkqpU||>L3L!7o~9YG83>&+OZy$3SpWHBd+++#czxs^3B@RXj*y#iCZ1h82 zO|I#?U1}z{=D7wY*R$SWk!2wO)6L6Z^YGh4Zr?*aGN=LBul~BP=jNG zr$Az*NkL*(jGIHIdI}UPYod(>CSVO4JFC%%0@Kb>8ani*v_}@Vy>CSv`7% zkS`s7+?puU?wK$tf5;)@CHrmDZ*3E&=<~&#d906#_jr~&A-T2rqKmvn+9aq@a;r&& zf&8PvwVGJ+j{M-+L<`KJR;VjKI~7=o^!u zZ`8opF2vY6jIm{ZRxK~CuM7C4g#YgP`hg`Utg9Sbg}%Tk=hiPTY$HJb+K50B>kVpz zWMzt~9MDUYbT{}3oufKqI+au;V=OyA4@raSY1azA{lEdfWqGs~>13UxTUcjj6rv5B z{5TG^e9;-HMK5O~4;)}aSGW}Bikh?Wq1ll!S_tPM-r?e+#YE12XycqH(1zBYK7gah zmV!75Z~@jetm`O#VQx87=r_WNG68Wr)KVh)Em|-DVLp@AZkPay+_iq)M8x_G zTzFr9w}6RRFlFBmCLukq1B1y^RrE@WFXjRDCC<~N{CTlUYgiS676L&(7sy>q%i^Ln z($-aNWop*?IsYh&{QUCn0qtXJpsIGs-Y|OgSqb?ds|mYx)fXGR4>3#`pk(rsyvgjm z^!K)g?E^$$N8E1RuNWPv5yo|a1%Y+-VO#pU*|YR73z(|< z_4nq#tBMZl4x_`e1110stsbrGb$b@{W)Y4y^1Z@dtU;Bg{XP1zuc~hrWAtenkM@;T zm)2Fj*Tj`iHg8yf25{4T%Rb%FPj5R9>ibixOY3^wt}%y+hvgz$nqh^Qx+&(dS$YtY z6{&Y|s1TD4=M8rF5&dVf7yGt-d!A~WWVLtMOuQcl=!)UwR${lL-t z?;A8|iB8g82u$g1vukU%UV^S1lr~?yalRCP+qdZ26c%+w2>A z4kpGxG}9<1Q_z?;F|jpfhVDQr`g>O9X{j+Ng8XM}3Xa^3NllGm*^#WX)uDBjS85(9 zUq9>7RB1H|O{}ZA*w?isrvm#nA{>mkRS`B(72TD2k^EEY5@Ba4u`Ha0#-wVM`?l9` z)YR8O4_mEj9{sG8@A1Cn>)gUS39+1+;;fs(JgBINggvcIMJP6ymq@0hVA3(2#-S%c4z4IGVE-$vyPLEQCTgkH|xr$^RM`q@)5V&>6FID#ONDC z4_lo|MeKJDkDJ5nI}QCdgsya(?RG>{P81MiVm3MGB=C5|U?kvg0fqKv737P^-vpcR z9>GY?z-n2Ps1}IV;FN;K_@1XIA8GY?j*~nsd(zJ~2#v_kQH|*;q9xR#jM&CC>N=&N zLu(d&UN5;*r9_LDy_fXuzo7>&@31N(g6HPnTQaI=qx2eK(e_C(Y2h)-MEPk8 zUF)h(DGA+g=lA7jHEx(vt66rI`cY=*rjgxKYg}ub5*3wM_gamfp1wIeukX|+?(Wm} z*6{;E*A)~@+;m^9Zo}-6_4sXfI3nvK{?C{h^1~xX-k#lJ#Hz|vzy6F1z|rhiR2UXCAhOVRB$ zdp2p(M7nH&XkFED>$;U}=svDhi&nQjH@T#Zt7$}SzI@W8Zvp^<{Zif-^0>dDP5REm z47M))K_Px?Ot`~J?1=~=# zwan{V>Y0rBR@+}WIL>NE9dO&Zz@0e5oyf+_{)7(cjeoml` zP*+iciR?`rZ;JSjzX^4LKIBvRY3R{!`t^>ggrOgM|6TQTu;`&|4Wfrh6!OjTf5P|r zP;?HgI2$7TAgsL42R+ZI{9HW+8)*wjTG#r95f@2qiTAb!zXuy(FYiF_!2@r2i70Ld z%7w{Jp)7&0anM=-=b$kLrsfgs&wv7=uF^v6Ws_11Fi7F@ z-ByNKtd@Wo@ucLo#8Um=z?@n(iJ(>5mc5b$_?5M(HwUvkH7P>BNYG07L12rlUyLZ5 z<_9zYW*WEh|2VD%jAt!rf-yF}=f-$u&~xCp3442EAcJVH9{C@lB#W_IC&mJvh$34w zwoHYu7FHZgIm`>}^4R2PhIef882)DeVTtv^YZiRin+Nt%U3pHI!(U&@9f}rqP#EAyq7y*j$hv>2KiG;d((th z_fwsH#I>ud;2+H)$qG*xc;E61xy2-~Tt8&8gSx8B5<;0O_*{SJD{}XI%d=50;?!H@ z)!D~J6DRRLr=+`*kY#b6Ew81?EL&eM+&OoDNes@qOKuUgu02J(b4I_+FNMi*{Mrjd z!wN7_RFwsh=__!@T3l`crzSYuvbri&AM-9jbeK;gDA@Vu^%=y_(vt59xS!a`)Mb4A zCaFVG1b;(+Tcj`i@FKzRDfC*(+TGmyNZQ|R~AOcw5^PF7Mt^cAQ$AK2Q zHk2T3hq&mN9|ipevd;wlrfeqIU)De5-w^DGsEASW`7ft@@}YW|uR}_VGQlhpMJvGk z5Fa22`^z)>C_&gqJ|yrzVh2)F^#ywX^D@3`O#sB~v9}1sAK4eIxghTwQfEQlgYOU~ z`~#jZr|;zCuY~`SKZ!M-aZDN z_y&%ZB8V(p9=WdOxMPMxQ-4N3!G5T}>9>wyi+OobZKsQA9Zg4OFA4ge7}9R6UZEBp z_U9oY*PHr_SBYA`>+j8oZAVT`C7%EO-G7g(AtzZC^F>T$Kdv;`)#G}*{t@9P4d|*5 z7Q?>bRzkZoJBVSwGSQFgtNfXk)nOXR%Lq3d#I%>S61?y>TS_?d;r}2KT-Dc@$ja*D ze3w|~G4JdhqCK!oY`oayhlA#N9`GJJXuQXZ!4H(HBi@7Ow=Gp&#NMH=uBeagY0hGu zR7HK>B2fpGHYO_Z14`zC511icI@BaSh~xK(NpN6{{)?c7a*fa z{iJyF$~pd9gwmH^`9{D08&0mx%6LK}t0=wQMMm;LQFSaJj;t3Go+ZfcFc!fK$v#zZ zd?Vfkc*WJ#KNZ8@yPG~tAp9V`E9J2x82(@CNSXAm{&aWg@uX#ZU#mTQJnM%*WEm%J z8T_7jju0#R57z|;B(tYkOThu}FiCL0_wR}i{DpusP=x=$i}~we>RsFUc3$Je4oq~? z9iR(tB2Eyi6bfBr3so%LO$oSSZNl!fDhkg5hfGJ>*ZcUNycrR!Rdllm-Y z@;@1?Qw`bp6WaI|uWWJG3C&zGW>;|=-`emx){SQYAM}1>{Rmh$=)LEH-xFhe7PNoW zR^X?6(5@Is2!t;i)|PSLTGf0ubJyN$G5WV@o)Cu= zhJB4VDUnvrZ zRX+^lsnbQ)g&)1BAH#i*t89kU;V=FS8m;x=hvc*7&scNI&~3$;+L&7bnaeo_ycV%& zSnDwOZH&~|xR^x9K|r6BIF~fG>F@Dxfdxx9GGk#*|H(ImhXWIREs)~J*f=O>{Ar<3 zwyndOe*onC`LNz(hFsV$KRnL=$d*5^0ybbAoK2dafp8(i(#-R3zSePnS(5( zju+$;YcAQ`D-qZ9VrAP}Jb%gmT*wB}jXPrw8MbppJK0P{4mOkpp~-8J>4DA6kc@0l z-0gj*wllSkoX-COR@%Vh{|41RX-4ZvT`M)mG%49bWh9SDaGTV4kTFX@S#ijv(A@FzzS8~fpg zg)hIGqG>fx5a1^}@t+QWtv`{|*I#bs?a81ETX2hc2b);%bQLqN3fo^uF$%n>epb5m zQ-{JMYP$yVhL~3^57PYr_CAHJ1kF~yPg@*XCpH2G$>NaOxK@Izx*2?ZxT>4o)xlM1 z)|Z{C2pDVwGuJ1@s0U0!v&sw@nQAwZy_RDxuvT#wGJ27mUO7XirG9*C6ML2trNl<2 ztbHi9=#EEHB}Zsyd(q=k$Li8&^x1PiOtjZx%_r~e7@D3~_voaEvx~br zDD@qIpTf65Sl?RXGG`FwKpD%pW&cnzX+n`JU_q&z0`0GsyTK9b4#aDgj z2xD%Q-GLmm31z4+pgioMN(J%{Mwt>OToH>svktH6tA!SRBV-^PqC8&7ryqZABVOuq7&;*lsHH zfq(r_;-k0JH=6JLz2x5<_uF9yOPHD)vUGW}P+ z49Ay-K)t~dy*IG`(*4G$em-sc+26BKh6iR zyN>X*BWw?^`S@1$B;Rn9eSMS<2u8eY=@IrNp0Y2uZNo{d_(u9swu@)%*p4z80l0^t z8fAO{?bRIARf$Vf5O0iW9Yl2LgCkt!%eF~BvYC&2XCDpj@X9u-mGb-1OQ6KHqu$xu z!6M+h-0}f-NzISW2^mFvr*f$Q-cYRPB7Z)M>be_)PsLu+;aa7?#(j0U^>ztv)VJ`j zD?7rP;NOu^d@;X*e~Z~%7Kwjz`MO;*X6&NhQFnIlekc9H`5N#IYC(K3;ETo=cFiz8 ze`heQTvUCu5_brr_~vD0Fj0dzh|T_Q#AfgS1hX1DeUqXSW8vpX7v=#bcU2ggnj$T) zM!Zl3<_N+=3U_-OVMFK~5<89S^sv)%TP#@M9GAXc9>tr~*|(63VC|l7(LsLK0W?J$LCh2>D2Jm*{We zzw)}cKx78=b{-8uXOji6p+ zfGKzvZQA#kZJJRihDv7gfxlJ%oqdm6hcoF>b0qE_x7W#A0U{`*9i#v@nHgj=Pm&NZz?-?l%U{G6HB3v&SHW@D)F-#o9p4> z{4{G$@E~RZ`;o*WS%AmzA!W#9=Ct%}su?pU-yb~Tr#Oo*qJkK)ziQfc0tTp`5QG4g z*vlp_u~lopPJHAi9#1#^qX;Efr}QGx0HPp_K>xuSdcE)(g3&3Kz<{YXcGQ{}=ZRoX zttzNQy+TMuf2>0QaIXAV13-NnB$EXoYea;KdX04j5g#}zHS~em?I`CpFqJM;gp~IH z(J0_S5Y^%y-Ah#D)AGn@f&cj-bu`Z8#W0HRf4}XAEz>sS=8o!ha%wT$&{I$L8kL*7 zVcN5^Z>wGVw%O?O1N6Dd=o4tCtBNRVD2!BW6N}?iL@pUUK|r&r2-xyyc*-{Z(OBws~fJ2d;qV@d3W@C1}2QCG#3jZ?xkEnHF7B`qtvDs@N+)z3?) z;o+9_kHS*e_uhu2r|#usHz5v0z3jJ-f}a2Ee~y0hn9cF7yb`(sy!W<*XnQ)sx+7V7 zPBgMA6A|&vj0kWD-LCv2D7MF3I>2|yP=lpY*Eot_Fm#p|M9iv?@JJIh zT_HlH3ebrsNxV*YK`7T0Ey;<=co2KFZZFno`Jh`}8;;WHJ8q~1MSIoORlMs*bQD{Lp`%qF*>Rm&tsqzZ%#5gS^ zME)u!+3QxW-v?$*Fh>49s=!C|!MjvKM)dJG^aZNFL^i$QJM_826kBXYp2lF?`ztY_ za_kD3z1F_0pHwXKJ%9PiGU+c#dkyON5E4BW>Z(&y9Ai=qX4G`x33R zttUo(*&eNxlzt4Ch$}{Y$?ho~uX;*9#`kHBHfq$s&jDT8M^hv6)vCsm9F~Uohp@t+ zT09QrfK`eoxE&#Ftg^R)5sXSag<<-yT3Q(U-l)T~&8e0RLLHu`?I^=@P$?$4#ZY5z zqCLazq*+GG4OOYKWx+{J1CAHucW~J=TDa2rBiF9+M{vWQk=nAS__n+ZmvZE9R?H9n zUDlOeoJ7&TWqd0CreeF)NHU{LU^HukPamDo3ws9dr@z8`rMp_NvDdD#v2>Hfzu{Ba zGM1s7gsxfE^>2QV75}Xq!3&~)itRV)EqM!8dxy;yD#v;piPBsADgG4ecLqPOt8s@d z*{AS=;K*f5*-lxZx{ZMrJli>`XU|FWD|IlglRysoylt$q2J1m6UZ}BdHI`+hGGz^a zVlf>Vx)?QCpIN+E;^lmtuCqLkbHY>Wr-GWM}YY`Z(khdz_l#P4LCKk@zBCicjM6 zz=PGZ^;exrW5}u`vONRrH?f!*rW;s23u~IwZ?5?bwGzH{I^TM)$FR*j@*1~cmASni zO0V;+Y=qtdguhN!y?=4Jx%@flLKS&)`hH`bAszF)I!@UJU7c1k+C`UWjub@8h;}f}Kc}4j zSd@#Q-6(Zj&aBP1Oz)&={R-Ya8l6}#so>Pi`3*Y0KYWoEQBRqfWse;=>PBeM33AO(cB9nbZj^oF zIefd@4haCA5d9eY#_)^?>%EHoE0ie_d3vM=fC3q$-O}D{^?O%NkN)ApGiMe`b+9*h zaroxV!=>Cx+suFG?3zD+S5D6CAw#faRe+_sJu8*86T_MVp5uCPb_mjy~r&MuO(;62|y31|Zj5E_x8X$4hlgU}X>l2|(^P0@vV zYn3-i_&59iwLd3k(Uyf>tKA-%K4Ia)3DUhF+WlSn^zJIn6Qu(y!a|&ZPO7R#hlA|# z4kc95>WEt;2~<&{j(^j2;g&@?Ie@5|YIWXUK&N?Kd-v(0qlCG1F9BxEapg;#eFMA8 z2ZeFOjSJyER;QQ{WO~)05Mj~#+IwKjJu?p)*S?MKYTCOS_la(|kLnZdO}XV3`MdBw zqqZBx@=nefAAY)J%hTa^&Uw`shslULUW0hTd?Vho4l__Qjdoy(+QlyOf?nYs6H~;6 zTSO7yLf%MuP0Nw6(NU{#T$5Wy&@UDlR4W|WvgOE;EwAv`k#L|VpitpY#$UXP$b0E0 z7|sdCUwr!%yM>Yu$kq|@PY+S05qZ7z3@VXeKREb#d8v4gnQT0Fjutl46T&vCrChA= ze5ZJxLCOvGz0~?z5P_fL3WEXp;03u>iSDTh6~wKz#f5%{=zdvWbX*UuSnf ztNK<+O-?PF7;5( z(n8n(HXx)H!YUSoUJt&iV4?A<2(ur)%FtAX*w`+rUj;1Jj#U9QNJuoN90SnYLu11~ zM@%9-sS-Fh=sk>2;Cm#8Xl%jb8SsY~+QoIF+Yl*kSM5S3rIUcBrQjw4-oBo^l$U+T z%j#KI{?O;i~;kQhwZ}Fr_wNDTlEHEa&>t5 zKe@iVPm&$6b16?P`_ zDJ9Tn^@)0-s!Kzx5=_y8U=Gz1GuS`!TTa6m^@@QsE_cAQP{qQJh~&VUn< zL;7F>ujDtrArLqtgunpLUG|C_0jy)?A4E8UfUgT=&hPNl!QTwdH|Ztl1M`r;Fd{^( z%q1f*#E1k6j&yMAm-x3SuAJO$JP#}IV3w8=o#WZg9(J$t#X#`M+Ri8~F>x>|#YSlf ziMJbLSP6!}sEF&sP$6QXS{RmL2SdbCln$x{0_Y%e07MQ~dt;VVl>f1&gUNKkyD|H% z>4VvjkZ2kWD&~k;maB?Xt|lip48Fa|SpHH3va(pwhI@Po0k=OihP9=q{GE++&8jX{ zrgZVQH~m(a-k0mnIx!Jfr66o8hB0)-asVr7x8#om`gMTjex@zLc@HpxC zXS9K{gWXQM3ve|4_8?bSCN>$^VD1$AOTX`>-3Hc~-7B_jzTahRJG{Vi*p}ay8~Usd zo-Bfg{DGDNAmm|?Plbv6u~_DEV^2bF{Rsi{INxjRO-PqmCIQ61WOpII;nJt;^s#I) z?N#u@e2IW3c89TP!FRL21w>K%!%~*xuz_u?nYZCFL%&`q^6cn@rwS{bVM$b#MP}%+ zl#At3WkD^scYbSH=?Y)=crJa$TYy|o-B0V>IQ9U@g^d|~{(JH$cL|?(yeH1eo;pK2 zL{Z5bVOk8iAgI=cjTe!>UmpY2_JFDl_0w#s{N5{|@|nM%5xTYoYo%4$gw;<%U%WXb zP+56n1|@@F-Nqj_$vN>+f_F2{7K_oF9|o+;_}uON^f%coKdkKNK9i!KFtPISk}twA z?414Ka(I zsJ9!%BK2Oz6*~Jj>_bPI^gJRYhGLm}#_G$FR#jg{eUQe5*464uJuIqp>W9Roy554? zcEFELo@h~VB%noF!BDL;FM-|Pw%wri?PZ5?>1>w&R7bag&vH;Zy_a$Ieu-+KsP_W) z7k-yxh#Q7)NoWZ+aR5SoMxo8}u>_q;r5xAtf7mIzru2$NPR)4Qz7od zdxB17nxFr$-(o#i|1h81*{wq<7*qI}Q5?Ljf@;5jG z%dN*jN&A^bAm}VCr6+Jex5DOpgvP*vlig|?daZ^*D={{PoX!Z!-B1wNPP#RnYHi#l zD1fHo@NC%0f4)T?0Y zxTkC*HoeDtJY}a89AIDesd5Xvz!a&5d3^-GNCKmnm{QcTIEcNROrxGi6m3S?(ow{n z*0)yV?Xsn#@Ud)OPEY>NrH*gxYKxbA>V)zb>_Z*?vir>I|n1H0hc& zNnfjvlO{Hp$wm7(r9@B^_C}Q$_zT2Uk4ydb-lfIb7jhO z(=&A=IHp_O)vu1YK7izMbnAVkTCh-^3p0q>PVr&VID3+)Z-pv8@W~eGMIjrG6gp{ecsM_^G+NWPhKI94e#ZKXqAk%&Ss}g4BE#L`{QafT(bGJh zVVm)SHDC>mOM~#(*zm`Ocs!F`(M$OI^oqZay33>BV;=?|djyz`X0IucvF;6XbA)qw z*g?0whIVzPI57w!065ganM0_oZ+-_7+*~T-B}{TY7fZrnH>ab9mQl(@r9KRi4{yEb zqnNgb7E{otaWv7)s`@ZGpxK8$+#I!Y*kW`w9^%BYOvJHFlcvclAeSoRvBIqn1su}5 zZgrHV55;=%E~x{+BltT3c*yWS=|dq3-*rom;tSga9<(ncuaJJFK2*>u01xz$2Uw)- zZUsG^g9~X0wO{e`P$FD48DVpvHRx z{f`9>lI?SrE7zB2f!iHu0@9bFu;u#tL8*8opTTmaVjjzu^BIJ14@p)ps!oa~qwOLi zfxx;^FLvZBagghO_{xrK3(Lj7EmDVe?U<9@O>f{X7ez2eVNUnJ*@o1P*%DDgw8b)Q z4y2{17u%P@GBDfFo0s!-(MoAFUq{Y-qY>7ZKk49~Rv&JpAJ7jpQv0+1=gzVI{Z)P5)BHkjsjgJFH@_ecN=oEEVc#h!B37kYBA8>p=om z-?Qu2pZ$Bo`aADjzu^w4c>UQnc*hfqcSf+JvuF9_4d*xDKUe};0jrcj%4;H1Cj&C4 z4(ObP?PHW{gU~~@Hf$0UWo4BMV?;;1_VX@C!gP@QYe4?Xx9KllK9iB4IwBlhi1$n_5plagmEL#&cF!e#b4EIvP$b}I2GuMi)INA)>8#LhCk6qV@cMJ&E5_M7tx<-Zmz zII=)rIB?*C1p}8Y!(Y6@FTGe=Jf(P9lVZL_mxdKLS=OsblVZIG{lyDBFK*JLmz2H` zpB=Px>A-~xjx6+=F9xBNgy?>Lrb!ztql!rS$b)7)Dl$ z&hu1STXWMt_bJ!xb4+6SFQ{u8O-wiM4N_n}4lh5amSN2g!Hi3_O|`vi``iYFxKgf$ z`2Yb;EDuMY=6H$mme2l{P_DLTq(#M>vXQ^)ZkNT?gac1V5Lj?x22XiGJ5U84NOH|p2;MmCfbvE0jD7zTY!Hd+|uINbF9?>ErGOs{YySFKk6-6omLMkdpr8$}} zY~Oxib4QwZ>1k6Ug~%msx;y!odoS;d82gZ#?hb7>ay-i}Y*e$2qNJ-2jg8m|IX8+A zR=$HynhcNLt+xKQJ7_)3NQcT;XlraE)iEO-s*4@PQxoE4ge#DXKR!;$&&!U*{KjWc zlF^=#?!h$2XCMernvqW9WqC!$xnEHfXVUl&ArYYaVMzCL5?69=EcJdhic9&~d%&XlJQc~(%jTz?Jb@lR@n8YQ%8Q)hlyi`KW1Z@|<+qV4uu zg|EQ>x`XlB&>`@C#|p2Jn~YT-XJ@I6po=A8G>q&MDvoQM11Kea%S^HwE7I*zP{&49zwUIpgj^_1;h8I57pHJq0>2F=RAkBJ$X?IKGt_HTB z0trS@w;rq>(dOxbX3)ENz+fnoI>;B>WDc71)`Vx8*B?K;?U*HPit6ewsEw4_?|b(qzkY=D0{4o5Vr!JCRWLJ_tOts`P(#07nepNtSlpGe4 zT=+3x&)0w4GbAiooyKN<@By1SO=as7of)@Wx-`_87!tDo)T#XxQx()^Q2jTAr(~py z6Is+n>NLLWgAe$!X{ymWyNlf=T9-=Arb4W?LGKrA=hPiaJ=hen!SNY}Mo1nbhTs#! zP{YO+iP<1SP2JI%&*|KmJ&clHBPTFkzGC(8}xVUoH=vmoHM`R+x5+35nU;>n`qC&^4ckD^YYqx5PcSX?u0eVqvgSh!cKj5F|qn( zlKTK{O)SioiNVLl5k9$4jEZdx_N6ddq(G(cq_d2vjwvqIeo1u5Ez{EUx3jAoX?x|y z`X}$Dxw3c%-XY7Cmc?GhC%)reu~+Fk?|{!@^7S{*Xl+Sw)k59yl%RzwiSYW08?wu|jkR>ca)^_QZf^N5FI7@0WWP^jt?h zm&+gc`#&xFPxFge2iRy#|7qFF;lUb!pOC0&eX2wHOq zIMzS}xe#lIB*LWI9&SQsbCB{E+Yn&x7+!Id&CRPL+Ad$N*UigFBpE;<~#ls^hS<1>3Om`y0d z-iTNsOhzwdlOdks>X=00b7^vmoMi2n;<44;^kZ_K>M{A?~=0i zgyq_0DJ&uvF=Oy=dr|}+q9|-zM3T}zDS~ZN6h0&($@7I01NV&?o?rM3bzmb4%Z*5E zWaVE(=)Dsn_!rhji4iOpR*o(i4t&%%6?@+lOA&k}6i5`Qr2PwJ0`EqUS~Aq4Ys)Yu z7LkBG45U=DWW}Ab#tmwgBEDo0g2=_(@GyQUh`e|pqRp-v~q0X#bb)j~czwZ66*fGw0X*UWKCdP_Mi$RQE zC?5&08J5Wkl*~Bo3;vz^AWItNQD%6Qk37xrTBl4f#&!qdfA4`_BOWqu8pUE@@G3O4 zEMzNhs90Q#R4g{qu3)c;4Mw82M}Ic*nVCIjzWVA+C|4rn9-g_RGbx`D!B3RmQP$e0 zSb25r+E;yg75)|JRG1@T$;V}Fpjc6`i}EL&VAOJ+=~bPpLOb6u9X z+*9AJZqxtG=JPbZkj)3+vh=K+sy(6JE6Pc6Hs;7=&#D*PVdcR&=X4ky%4!4Gwt3 zR)d3A$k*1ZCwEKJUxFv!HFAZ%Kip;u(_b_jZ=$b}yCAaX-oA1d{bhasB6%`$gv;0J zt82GSb_%d42yB}qT=GpNS2eJ>^Jzs}uVIk$iRxj|zYk26oqy}&lnU)V9^ONpe>q60fgLxiFX$r;@3WOmEB zb8LtmzI09a$Gji^lr>UX*!e>|hd+|+>;0VX;P(B>kNP{TF=A-s@nZ;4c zYyF)*2S`ACBEAnXl8%WrEYr}fX@+tu2m2L=af%X)N2iT|O0=mJYz3dnPlE}a=2O{n zmIexkMbjg0m=Qh7ZgFcN(B-_&2gX#kZCh!BMyDNn&^Eucbbj>#Hify_Z82_1{TWPD zqyDDO#p){fq}T4rn0;PbV4Ugyh70tbvenNG zc|`vOhYop9+Yor}QQ1Z(>O8BdBPM}ibz~=nxlk#M{UvqB8TvQHs9P}>={TeAUmgj` zt#5lu{{(g09u3J&wLLB8iMrb+#5kI=6R7*mglI<|2LcJFfpJqZf=8IB3cEbopkq~{ zl^+cUk(9dAy*)B2Dmpq+9S{*2okqina4$w!6fBV2krW+8iD}U|NV$sk9B4vJ9%>RT zCI+|nWK>#IRFwO%NYon{8PwbjNJxuP`$tBiQPPPA_ALr?CWv}T$|({@53DFNh+@B0 zlijo6NwL%yYsS4$Il*oEmJ~UgBIe53DQ?_iA5?$BrS)gpjUBU{PJTafRwKfNmg?*c zKDQ&AQyF=i+E9=}a4|-4$iY{MU|{m^@gNE0OV`P3+dzXJv$z zkiQ^Jwx>6A+D|>ie@$1Dl(?rEYj25)3XPr3@?)CIEJaP{e{NTH!{nYAp&u^T)WOCN z2JnzvpvorErNj%RP(qlnG%#qC?)xUkgv12v@))j9Obm;)M7iwNHfQuIoTmLCMKKrA5I&cf2w6eee-uRYmX ziwrf^FYP12ry&al@+?sF-(fF^7(Dwgi#(-^K_6H+s;`k3Tp4%r%hk69!3Cd_T5#Di zFToPVvo>yn2ubNu3sb>J_3SsfE3tUJb8S3D)xxU2K+tqqO=IxbA%fpG!T1(usIf6J zjuL2E;!q(YM~;c5>zQbBvSOs=km?RUs))|^`6f1&^?vio``SmRhb1Pq+r&5WUEZ$= z@^^P`*u{_WH}1F=58(7|?@$k4kAQ}J8Gm`igp}-9=Y;MDSRXcxbs9ObUUqDQ>OTjt zG*-qM@95ZY06Yp_;Kz2rv<|pTt!bp~(2BwAF;^U39hjH+{bn%Q4hKcQ@y0+hBjKEa zsH0lJsV;Ja^K)S?SMWuaHt;`BM16>0K{XoZ)Ryh2+yUDNK$2p zw(`fS-iUq0ArXCIvmsQci`{6mglJ=Kb~^3Vy+Y(8QzQ_1Fty6BX37Iw8fAld7^Wqtnu&*%#_N7~PEl zL{@#Mv-SoJZ=F&3*G3RUdR zY;BojiAhMb`2tIAJ9Y9Qgqt~j;sHpj{OP9`&VNStJp0^25?RkjpJ&(p8NJQn*k=2K zzx0dkyu4x2J286Cn1k%YclpJG(ekqZLt-^Ge7|Lq_K6u$J79bvCd0c6ER_}=VFQ!S zVl^6p2I8nI2O%=@Et8x&{8V&Ai83ZEeBLO#>`#}sEE4k&v{I?8nOcu9$;e5f*waCF= zHP7v8!<`j^qX&(gx|m>88b?{O$B)NK5tH`yNHAzGnC`g&b1u|8eK5BcG}-)f1==}t z&Ka@FfH5O(nMQVHm~QTi4u^{UJN5gLc}F(mR97hz$_HUX3WLFX$kZ-|d8g_KV68V* zlVsdBE#H@?^~fp5}Bm;u|04>)3>cJr65#&J; z{8`~&6(li?Rk@Sq9M4r#l;f$h^gK3(n*PS=tiG1yca6L$AIQm3hlXkOR*Go{+}4_R zv}1=s0?jjlVPp20gIIgs>5n{c;y7$p9y)nyo4HryPd_t%;nTYQ+_Q@i8}7XA7yi;8 zHkx+Pa2v!d#K0skI!F@_p&$kyZ~B3fO?WvO0bc~f8ZQ5Pj)uI8DJ?% znFz3N?pnRAI7xVneae4n3Ej+cl0sxXNIW59@CSjGcR~38xwXaVIY(hOx;) zFlwxjWTY;JQAO|gNn!m3aX8&$pN;g7j5J}p-@Z_$`Pdj33r z6c22_d;{CV=Nw+W`tXMV$dOg6-hbc6PfcA6B(U0&L?B)ILxZ~8$SY0K3|f4&oB$H_#~~(L8c6V$*wBDo zYO!Kr7TeRJLgB}g2$x#~?spVlF$n6#2)_K?#Bc=)fp0^?65r)_+mhMF0@E z6RgdvQ0vyY^DP}a-qN|_;0_(+Grl;g*eRYd++sY-On(_(W~izRr48yPyXrf&w=FHu zS`xKJl?ScGvM|#sEY2`LgJXPFil#mA$^iuGbH0F|>=vVC!QsN96TW;AGgs2i|kFU`)@W?{X?T5VYs+$#0Y zBCS-a(LeIfL4=Olja;4-u#SKhlo5s}&`;t+87f9UOszfoIK80Zx3mZZ!1M6m4!A1a z1jpbVCVX_4?IjQz5SwZ_m*Do|d(0b>Yr*idd2umc>Afl0j8E)qlN33% z2Kka1qr&(HBdh}r_>k9KK4y1t^Ze8mm=oG1yVpsG6*AKF_w$Mt5T8gXOYTMxRE;MH zuEuZbDQ|obmut;j?4O>RhnOL9*6Xv!8bLwE&3+BnH8?!qQRoomo3?E|^(b_Rk_78t zu@=@uVJ)l#y_>rUL!LpnFr1sf3{h+-FuQ0jWFjIM#Sw$U6Rh|6AeU=^aXkwBoEU6z z$&SmZpS{7jC&lG@7ypf`7v6U|--lWPF6rilDQFw>jSa)SXA}uU+;AeSOCh)fIW|Ko z_c}CRGW~Gj*KKn@nsckqiFwMrBXcL2&dbvUmC|&)xl>2^hfP2Cd!(P~tc)k}QkK6C zq)@;^aV*vWo;YY8p%peIN$eAZVJ+>^6E1;a<)u!^ZG&3IU455aF{wNr)Up@{{w-{n zCt*D#YayT1z~Z%{wipEvJDq1iND2s4!khEYZl0GIR$?D_ePNHAp?rea_~!Q&jnnQL z;Hp2Npz}hY8U3oLdCt;Cn}`u^3L7%fFCS736`_LDRYPPKt%ys-gzy}P@c7mSIY?}y z@|)u0P2|3|J}>WI;75Gb;DY+0T2kuh{`@B|YkGGs8`QH|2YzZGbJ9-2^O!>DZnx>@ zNZvI&TmGrRfWiREf;8F?MH=Cv5P*HyLQUH<)-{O6>Eyz5h^e(>*?S$!T8&Cf*?=be6)pJW%KSzJUB z=5jvoqEo+-gtl-jlvA8rfq` zl&XZpr7Df*yg9;?3Vn-n^puS9ycTl@ju@__Lz%dB%$Vy_>d};jd^@G)MRk(;Drl*p z(K^(L7Th_;KBf zuD_)%Tj)@G<#p(gm)E|%`w3UW`i;ZkS<$73L2bMHQ2T*rOLT^uL9$kDnZ_3o1BXls zUhufh^y&Enw*U}xw$32;<-zQ29=ccmf$iNV->7GadxG!fGfmkCf%`t=4L>C3mc|S037$8%SZBtXJ<)x4r)P^gfeHPWk5xpw(1X>=1X?8)7ia=RfmDt3R zX=$>!qF?dgX6+j_8Q6RBqdi*k^96+tM`1yOAQ?@mnNyQnHgW7S&&@aAUYwtDv%PcA zyz%W@4Y}6ypTg@3@!uRrBd%l~EX8ToDh8or%35i{;`SbMVt_>fTw0~UAS9>~5s+CN z%x5!%jjUdhq(sD}Zk&EPJU<%r`fkViiIE}ksT(#TlH`WusO7} zROVC>SWL(MBrU0ydFAu`OH~`cYQ5@8mitH6NE&}S8DZx8 z4tT9aUa#Duba{Vb}BIS@ged3AjU(%oPJ;3rM!mSLmuKjL-z(sa9T2;uQmHs97|oa$IE2e zS>!Ch9r3tq16OS*7!5yDS9cBUJ+Ik=eCF@^o7)Co*EqC!^OlX8PUzD7nsTLBZ?LpO zVW*o|n+>ITZFqfc% ztReilH7`BG!VZpH=^jpdM_J0{?<;)(Z*vi&I^P?RtT7}~V_y|)v3C-l9^-pBr#RCBm* zcn61`2|e9O2TN+%>XnW??|h~-VeZXyS~p3}?VZ`A>Gh#a-*`D;Qo;vkzOJtyCm;o# z15WvEqpj)D2j3D zyU=tW2MfEc=aBoCurK?@hj&WU`+U2+MP+Q9KH0!YA;u763W-CU1POf!+JlS*gI~L9 zi$P<8P;p{_LA1ps7{wY=c16ukA6hz~K7{@iAX}2R*0G1UZUYg244Q4Jp(DRvrkvK%~0@*;BgD?-; z?G6s_k9OsqTXk!1v-W9`&3f?}SVP`;ahh{cUQDx_5>Bz{4kgOvIsfW|BXV1Wt3NQD zD6^3J^KQv4olu{@PV;Oz_UU^O=eHF8F|ghy9XD*<#R^GxoEl0lQgN9K1;i{svw@OH zsVgR-4UC2sHD-xVj4O273W_azJA1UTJb0~!lmf}#}b$OQJC=a?rr)RJ-2LnO$GNz_R`wjOh z!9c(m849csBmaSu%~=P(*}5By=-PT=^hW9v>1GC~rz{O2d$*Bb!Eegm!Wt0FRm5?18vNFvLNUw@vdDi1-38}@ zFE4S5qC#hZRs<4()+QgTiLCz`o|+o2|0>hnz2A$l$p^3RP?6qg`Ovb#j}AL<*n4qr|~mw$HwN_7F!w?4s6<+UAC~{1x+aL1~*tjoP%?b@`quZ#gb*b2=?U9PWBX zpIK*D+tM3bm%5A(Jh!1r+FrTeLQ%N_VC#7s2ny67v3Vgq5J#X^t-HyQQ@%>@<~7bYEP>7lA0$z zU`;}{aQ70hw>9;nJ$oWhQKI$92CUG)srog4+fkoo#E01RZm!;JM{Lr$i164btKGBz zZxFasQ~6KfVX;vm@$yE5By7wd=I_|8QL*7LZ;fGX{TNlH;h2}H+F01s*}%JCcSiah zuV)55d+nVhI-Ae5Womb^b$mQl>r{l6I1PWf?tIUAet_>`JYH~ zHfl^=ave3sKEPQN`D_}tdrrg*hM{jURP|PvLKU-2Sm)Ys8A*M|<5A0J)N565#seR_ zT%SBJ-LNE^zC3EX)44rz`7{`LMMXtUd*G-@MaJpNq8@i}=hEHmeB@OA?(%1rDsy;O zRx(w;o4-3XQkl(R6#W+O8ab8S%HLfI-O|U~L<1|L9(6h&jb1U`ut%G2G&qec#iFC8 zt%!Qe;dm@+g#pVa?AEDK{MuH#m-2U8v3+Q$6m>C~l`P%OOIZoOHj15ndg;p$HQt*> z^cr|yoE`fCbAD!KNHHNYthYg!5CvK@dp0YE{cv`I6nsFTY=(WI%2&snhh_UXHZCIZ z{J;3!Ke2NCW`6g-qFH(Hp#<;62J%Nd@%poJkNDpD6LIjb-zfL}iG$*TV6j2gf=2KX zU2u??A`Y8_;i+|p;~bm*T!hUQp+95GQ}54P<7vo#3WliG1#(McZTd5~sJYx0o86no zV?JM3GZp7%6vw}VROW*SdNKHT+J(G_w=8P|CyuqSgEB=U+Cf1;GNWP$UN3e&@Ktuu zH?o2=AwLGAqFZLghh4*_B7{L0?x0-8|JrhAVXNm)@PZO8E;>AFZDog1sWIVkd*li- zMvTz6J|7zsg*Zx)?E2KyiPN%VEr}1%ci@J|M_J<&&$lXEx)t#ema`dh9Gl)HEPl5B zW98bY@aQ>Nf-~upFpspO+Ea-AQ7pAb zuWz7vMN`PxAP3jATdd?Sm+gc!h`yl5g>d|)g%O>Kg}J{_+R~QNIJq&N$o<+d?9K2! zX&*IA4UcHpo&Rz_KlnI;4cv6ZQC|LN-#CjcH6^8CGkYwqgWPlY<9|Q-)Xq6`cJ9=V z8K27Uh8eKl()d&!cV;vivTS=zVL!R)jj5@aqn0t-dtBdOT1EG$D0bg{+x1gV{l1gx zFh96zS_*p&hS6^(EkM8bYF%jGKyd+XVYAG3(w^!@9F^o@nwPGbjM zB>M2C)>C+sn5z#)j^eeL8%S}qfV1oUq2c;GT1)iGh%mWS{~a4?+rmI!-Ij51A;cQdB*{i-YhQS%{ub_$#Jzf8^%44; zaI0A)PRSdYHsx=IXCVtUA(w`wQ)-w#)G#NfwygwQ8IaNQ?TR(HTHtX!6X!G)&WcpeCjM@@yrpR@5bh)ohRa(lHYP%H; z@+aL!W$rfxLPcy|n!!;GNKb$;8;3#YUw+!dwJ)gm!VZG9jW%5V$GFYGAEWd!k=_ntN58!=(zFprA z+QTI-uw5lt4<2gf3=-3Ztg(aCx6VLgYXHEc+vO$l1g$+rn%0>(c>-^o@QK!5?;`I< zdKi59CtK!f@8B$zYEQ)3I^6}=M(RxQJm5Z#NFn)l4e!Pa@k6l88+f89A~q+kxF$SN zI1wYG_!&uYB#I%x2zK!H6003zOhJBuow&43t?E5?or`}_RmJzvYiw`VI_(yh`!mQ=qQKVmjHtB*IR8tu}igJAE~ zFJxLaFfF&hwSEns*ZltFnVuU^mhG$Z>?A-?HSmQ!2k&Y92x=Y6Hfvg(|Eir;YuU_@*R?2A4EJ(FLx1ClmuMPS|Lg%Y0$woCk^;jIrFCkUtF zy@>e%-NQ1KH(2JL-ivEIZEF@A(9Lugq&qch$bjlsH|7s&mLZ- zpTec?ix+bNnzF((L{^T~o9vNrAx!66b3Y^iMI^$H9{yf|x~-Y#^o> zm>;%f`G^y@({*kazc6$9G8`fA>EgLTmDJ5~Nh|m{K2TpgZXDan`m&WjG@8Wjz5o;i z)Tv<1G)am>gr977YUa#SDq0JXkn56mwRjjf!m!u|YK>vBi3!whmpujihh@`evXEWp zT-0t<>ZC?Lu$5?U>$q|HVm^?cTajexAez0jPEdFZlSy`i=`yS-K^e-%nfwAOL(ME< z*>uksf@qvPmp#nlRwTty^?V9{f>&5K)ZG_G(Tb>=nMPUBn>zZ#Vqhd4#lXU$|Ci7! zDl~l={{a{TI$4M)uYJWU(ApFrFBKSNaqMAv?zkZQgn~zcb2FSM(5=RW1&HA?q@+Y& zIJ5O5sw6L(>1m^CCCb6tIJg?zQ_b*75p~l^K>^HgMdh6n95h&{Ju6XFJZ(hv{xS2G z!*)80)`0~0lK>_9!jcmCeknSyZuMIQj+L-MDOR+SJ_xNO>P z=rd7=#0Ocs!qS3x0$u0iwc4|G?RD{HL^|xs?{C|g74i2ww`D6Sf6eFCuIwSoui@~; zJc7x$Tf1J^*UR!Kq)@i9ZD(8&T-3QO`6-I}mEstuvez@i)nCLI_8Q(gBlfGW>9=8-?i>&VcIIe5y@S_r+K(=hYiglJNPC zI+A{)vVI!VCOO>D+Nd`>)YYhj`ef!qUw#v3-Bk9JLNv}@*z>uK z`7fpRB(+|tr$^%^%Ij&w%1E9-{uIjZpfx~H95BtEY227srA3#PqKxu-lg6GNfSc@8 zd#jVRL4p3LrfGcxtnsEwtR9PzowhI*6PsvLZeXeW^ar>bi=SaBM{rTrxu15{{P@#O zwHyBs_aA;3^ODo~QVh#y53%OaryPz`p0?0D4P-3Fvp~5Ow>>_@d5p3kpzT!H9OfE2 zm7uoGnMyWr_A7wEx8SI*9!}WqyCNuiXdL%k2ACjR1i=%q(JQ(#N*Hcu@qB}=*Rac? z=5B)FZZC39I-Mu41WzHxW(me7z@N*ftG>jaOI^~4H-dEB2;nB68er8HF0r+IA|m<^ z%6`M?d?Oo*q8||L?@LcYM7C1jbDCbF-`;k}pDM@Lu?4jgI1XO-v7qMsBXF5!>8e84 z&fta>oWC3W3v4$K-PCSvw>8nOAJcVr7l#op*GAFd&z;WCgWE+sShTwuconEs0HSSIYTA$QD}yka@SyiJfT#n80A$-5 z1ekx;-F-jSuZV`1s8M;99}(+t-t6$g@C0xl1Kh_D9%|Wnt1+0vAYo%ZYelZ=3D6Hf z2?qQHl=JC2j4^`Kc#JvkK=vaXcc6INU(k9@d%Cn8JpEUG)>ILv;g|tzmv7jSBjH40c zih77YvrQ$E|GULQ@&kzp?n6!NNi2t0xLS|@(m0ppq(!Us^l#*Pp1Aa=T;(ma;TfWA zGr&UaPtS$4d+(~jolRCI1r`~J9fB= zBdvs43Uc&28?4EWweeJhWIh80H_O4dk3S(*_m1%F@ExB&9^v`S#pknyu1!&Fp0cJx zj=sFXhj})3mXzr1tS#?D`D~u;lTU1U`Z>0HM|k)Sz4EaL?sl!mo%NOLT~Q?bAl5I| z(Ms(LJXruS>5*`(hnORBPr0Xih`LRdlrO4tSz{!!&tcc#!kTWZpXS;t6Dhe61j%K6 zN*FCMNZd=*j_g%v#Rvy-W`-F%Ac5jBVxD%4K8!f92M2yY-8^~etj?OL5R7182Jnxf0p>F~g54wo&|s{2I%Eb3?3YDcB~^7Wer zBY#`JQW^xiPJTq72jC%OlYrlAQFRF}v^wx(Xyd3?A)D&Ll>3RgepUNA{(1+pa*Nu% zjSYg$=sRFz*&&-m-~SP8e!1zt23svm1;b|GP0&xsCeV-Yud>P+3jSjP(XoX=LEcY- zK_79LUIs0duoBP`QI+xJr78=r_EDBWT_8=2kEC|Q9gdM+4Jd6&(Tp8e#tF*7tpfB9 z;mRF>`EB0(CUf(ZNyX`cLYFC^48`p2X_O2s3l8Sfw)%u?@E>opR0X@=cm-ACt4x*Z z<37YEVFONHbvZb@7F=4)0~4TpzfoRYPui1?>H}B^aX+3s%W;pxjhpq<1U%>o`1J=o za2S5D1Gqm3ASjCtfZO*>`Sug zyocm|Y|o_348z=w^fCB?`yj1dQxL|sEB~4&;_vIEUZLSB+P&;&mWaQf@6|p@3UAzp zIrvveqr#KItY;zYpT%yiR{h{v7Bv$FWG2leQcFU@uy)n%N4WpL$SImKyjQaUG>)J*)hN^LiJqkKB9LHKtTM#NYu(0&6 zS<7(^I}}{c_qbv=_h}fR*_+;XUsJml(Xh|vSl3gNy2VG{Jv}qW_G@H(H>|*-|9mUp zn`Xc#Kta?;tWMYl8(@;kO&BPfAQ3{y64sEttX%~N{B0iy{A~e(7i?ztg3atcuvzz7 zuO zziQq=zj{zPM`nIbNdd|gz_o6>;%UlK;=A%w)qnC+UE^5_%JJE3i6|%I&JM{EkMofj z;u2!U!f6-*P-r}0Q~({WCB9F!p4Dui+&o?Wv}HW|*wTkL)f)}$(W6q{!VW zCQ>~_L0r_JxOfg&*P~8zS4`>#Ase7xUsOCPgM5r|s$bY3gUt0Zimw<04~pU+`F#Ep zi)Ra&z4uxE=9x3B^z2oHzEf(MoDlFN8#HmUcz zb-g!ip!Q_xFFxKH3f+Dl>{Cd_FoNmecw8tfyh;n<^aD$Eu?PvvG7{$Kaub@fq${G? z5s+>TP12W#3}Clg5JwQMB7GY15s`Lm`|iJC^>(>YTF7IO>b!39w9qi8dqzUDj7Yn! ze*f#6bh>psC5~_JOjp(?hx6~#>fhQ;?-Cy7N|5(Q+4LLiE*t>w>^6RL2l@UGB{xGK z0aK17b#i$2bqfnKDjL^|&$yXALn*xHCemfx!9Uen%Mamh=^b)E&u-jX46)C%TlD=y zjNLsd-GmB_K8{%6Y+}8~^KyI7%korxh5DVog5C{0;k3q@@6DSTs#^0sFDsorbLm~4 zDo=GM(YulNotk)Uw|3m9SICr1+iheJ@0*m)7h5Qu1q|=--N-xBghA7G8;#PtHq+k( z@+#6Az)%So$XgRKXeRXbCe)SRf6t%P%Zv4LFVue66=@O5O)_Dpa-kYZS|{n{@-uoe zy?ai7|GmEx?j+G^1+n!d%V(lJD>U|^J<{8vP0MHBf3I_+QT012;BQZp*7G6O@!EgD za}uSFQl+%ape#^KVo9PkK`ShAmL$?Q)_}!mWQ!p}-hhyd6#$`@5Vzlfy9($y5JmvF z$v~BG$_G0$CmEa38;)~eJY{v7Z#XN&i6Ck>-f-lCaQkS*cyrJ;1K;u!9f{WQx%#qR zn{OPJ-6Lz~#oV1)J+g=0xVe|UEZ0)Of4V=cajfmVCl4Nc@;zH@g|-!1*+4|5J%W5d|A zbamFXUD$}#O-mb>PPzBqDfno*n%~z&e}vz6=5%y)W7~&=2Y+a5936f73>$%nlP_A= z=HuU5E5DZSyxJy%p-FJ%-QR4ptX36*mSUt+HBGGPu&JgyPUt3uOlTS!!6vtb)DAY* z*CBFpA6Tjl!N>vI4#c5MK%q?7T1lB+OD8E4@&_(fVDy#{N9V6NpvW#ka6bA$Bo>R* zVtlhA=DcE_(IN@o==KGqSi>ewoy-{ptlP(q@I3w;{_@xn){{BdYCZ|l%-4JpTa9o1 zBjVz7vRPz{h`82aH^9&K`5sMg=*y00C#9#Wx*`{A^R3lc%(Q;B8)@595XGF#LW#s4il6$z9Rlt@=JhM13i? zL3m0F{#|-}Zb~fQ){*Vj56B&!*r7+2MAR#kajjHNMB|8h?pM-N)1x9|mFza@u?_gD zj{4}1Owlq+A`&kkCA@JYR)(?s1?xT9zc7aq1g0B7%4h{^rE*v+^~a4$qhJL+4VaFh z0RF&mhC~7WVZLNM15G8Md6;p*D!^G_2iwP;9toHkK(&EG`T&lhv}wxnaAiP2R-$I0 zT;N?3g>ZH#3dPZ=(U6GIv);pJ9Y@5#J8-y~BL60*RbDrdFFVIy!WbNtSF)pYz{g7R&w6x5Y%MgR|-w(+NXgx*$ zf#3Ps+RuK1C^3yUV;{?Rsu}GYf80KowT^5Z9v)G~ScYC$E-O9dkrDB2l424(*JWqs zbP8u}ipTVL*M5CrqtZb=S?D#n_C}uM+;(AU!>^ZRc}JP7@HvS#R+1bS&#N=C)r?M< z2cbBpxLez4iNs#303LtsV589$)(U-uMZOwGPEWM(!mKdHk)vb_B?%m(8eyz}=Mt>P zahb6&h!rcLk|`^=@vwnY^S)<0>7bZpmcSS@vl#E-eVK{MA(m`e*{YShajW`CYgsz~ zmcFUS=o`Oao7^n9*^^9#|heRHUM zqhizNE3!OO*5}GFPLX@Rt#4X)ZM}SXz=vRxIBR26?_;mwKSVw#FKhy=@zrt*WT3;@hgK*pP|}y*&(5UaP2ZS5;N185I@P3#zKL1r-$+Gb$^pELByN6&D_= zsL*&-Rkd7Ep>D0Ja#vJTC~d2%Ja1G~uoEy#*@pVGE|vIMf31pFc!pHTgDTuom2#ls z;7$%={fhsPF&m$(Yx(R9{)60w-_Il2uUPj+uwQv3 zzh4yeRU|hT7Z8<~m-o1pZXzo8v|;HdVRGO7BtHdO#a<(@KXem7KyQMgw)l)YS%w00 zVYtVZWXr)l;O%_?uj$qE*7EWeEQap`pe*65uW)VR?DE?1-hfWgO-Vg_-r9p6;C)Px z2^b~D`quQbJfZa!p8PQsmq~;=%9EXtp~+V?A(4FMVl7YbeapIcj<821C&xLjduu?q zM;?4`!oKGD&rjO3O_|5f^1VxY&Q5QU+_2)-gZ+nm&hBHe^GA-J$A6(V__Ju^W5YKu znn_?vv@po9#%X{!mc+F1A}wsJv7@y-5k7Bd(Wo6^eut;aOxVXvu*VALKODupw z2}s8o+@F>+fP*wNX4Ks5_=F;eb6G|4#YNe4Y~3J+AW0;@N}?*5<&tD*xxeed&4V|N zY}sJ8qs7RLgEt@S+Go|wF3q+cx&QtnTbp&6xk?^Cg};BkV!-XcYEY&Bdi#Ki^Q>sf zl754xAKQBV{MKXB2lW#$^aTur3uwXtgRxsd%O(`y;P^tn%7CM!SX^IX;-qkT)6Sbm zU3bgKmX29Yxy7iP%SLUSG5wn7mW*r^k(?YAlXcVb7vu{M^R3gLXjm}#&U1i+S@-Q8 zT+k44t4BXP1P#rXV_a3_-u zQwZ5GDaHx9Efaym$OMGUEsDunB1F=CWht*m3MwBs2Lk9na5e{1`f5Iue~!PQ>;dM& z-vhM?8xs+~`g0MSN&uXZq?;o3xhWsg)ms6)!-UzK(_)VQrZ)ChXEZ7-B6b+ugXTWv zQ*H_biw_m}d5ZsP?XAs$eHTT(%7&u@EZl{7ifskNRffB7jc_FSlC}3HzHd37q<_Gt zu@x-syLVVAuasBwc>clHU-QGP@awM;A>G2}@|WKJntzKJ$}4fN)?J%en~k0{B#CSv zFxX17{(OMtG2GJ>=k-6(?3s45VnUlm6dpOSVJ(@hg1^xP_6BdenYYD&BQkwAh zj~^!+g5$^GLzNGa^CS%P&TZy3jBWl;Q+Au2&6ex^kSH<&K=hfh58(S+0GbebVI>>% z3LOceN6<7P1NKB)0aRs})0TqgGx|mp@L!(sZ0bML&6J}2j2kk~6y6|rIm(Z`owUjs(OFG-P5;$s1NJ2rvM&*OMt{ZdwDy0|EH8TN)g9g^rQKMw zI(76BcZ~V0jrxh`M1~B!8#3^5>@vu=I@8>>0dMAZ4(K!YYOpCXH*uL7seodLF+)oI zq<;US^N!uQ?%8#B9;-aozdrwj<<;+xN8_h?NBh@DK2ULxyO=2`t(pa5q6t!#Bt)oa*sY%AA5~#*MGc5zDK_28vRGv z&Jy)r^3!2(IR_<#$xrLO!dQ_zhZPaNRCz4o!``D!5_{-u(w9NRGy>3pJ>t~F_Z-Ac zyn{rcVD3>zHX3g2TsmJrrj2YgjGkmySz%!rz4W8qjHhnu!Q33rSmmDf_1X=3GQ9~s zc1UhFsJgYt*tM&Xt!r2G?+ky!lB&^tk2K?qKP)Mv`~efsw4|;Z_Q8mqgI9Dc`PcXz zayRY9i#J-Hym+JXwlzI(>d;w#O@d$nT97v&zW6xA7jG&~2}=sW*ATu4`fKv5#~#L5 z3+z_%(k+6+2GuX_hKHV@fkG}E;Dd?koT$myjZAg1u#UH#nz#MbeR)~e+j>s8b*X3R zsmjMrZta!XH17Vp&TL+)ep4}Y^j&$K4tA?t@Y&M4{(SuQVcEs~COKUrJ5HGK(H(1! zE?xfD_R0fIJS_(OvEb!fmQ0_AzD{FtmgUNP;&8;%EX%8Zz>X?T9uFQc7ITEgIYd~z z6kt;k%HVqh5{7}GY`?}FZF#kOfV$n1Q(eZ2!pyR#)Kz^X0X=y02DpPl8S`@m%})weO7oMxQX7G3p|a(W-ijtJO;YHh{^=fIsI)*@ zib{pW{{Q?=fHsXVdB+xuJTIZ-Eh@m`jx9ckX{6}2XE#8&jl={;A>Hqp|G%4_ptMi|L{~|xV$V<|Ap=5J!vdtsYA^#>PGED%o_Mv zdL?ITwoOCOl>(cifZ4GQv5Xj446M+=4Zb6)Ev(%^3!AVpJ~BkkRvb1ui**Dk;Fgj@cxir z)7wvH$EHJm3R$}ry0d>yAEQv)|JLj^Xd|0+o&|Bxr~hy4>mN4g;O2XH)v}i_F8?1G zb9S8PU@lH(cLUj2-TtU)Z4K9Y;fcJJz?X|~XQ2~T``Jv};qIF=YkH;szr%}pN%m2VwUuIT2l312 zW@=hm7$y!{W7tOA;Lxkdcw?tSwm6hSFlLxm{R7?~f+5IqEkPJ2qrMuh{E7OEQ)RP0 zVM=A#fGB^$8gK=iRK*4Hh-dJidA+>c6E*nD!;U1#HqQ?a!Xo_XAWIGY2EdW0;8X4syHk0M?XJF??fy>r!r&W37bDfGz_N5UNOfo<`65=y z(+(a)>v&R{vE82Wa#zoIM(3_ZyGg9({hdNAN zm1(v|ZCdhBVyY;+pWY4F34UM*u&T+RIVy)!Oa?bfR-h&i;?6;z(wnxjdJ2;N@9DMw zzs`R!FC^v(k>tC9dx?8G(_(pI)|4BVYpQ+cVr&hnIo`9YQ_I~|(^=>xa z1K7MTQ9c+4b(J?U@zz^)lo#|N=*rk{ViN@oXxVxdX!4Y)Wdx%)&kl1>8j$C-XP7$7 z$OBrsq@Iem)M0`373hb&+n=Q7e55bVnk6 zSWx+4hX~5R^20!%{`!6CR9<<3<{9RMfe-AzLnQYL>*;5;%;Uue&9}PpoK}Zad{l!`xex zEr$Zj*O_jVC;lP&YV0S7HVq09DDjjLwfJcS?bMYI!;5@`7{PNyeXyUwdPBM|Z;ilY*%_}b$qvFpS+&*ZZP#yrMph3WSnf8D1+@fqTM$uoVH*c-> z1=T8BsAK-Tb+sSRe}jHaJPG<0{LOL^gGzY%n|xbnaDDk`{0K(ECO8;s9F~kp zgHe|67Q`YdHRpyeugFPxF+b37ve~?w0PyFf{`hL8oLdfE0_Wx1XXrXg2w?qn8nD*U zKIJs%#F)pm@FXA=?FaQ=@EtGSQLEr!G~_h!=$W@aVvY2UCGy$5If;ry-Ytjd=!M#@ zo!3_@QK#q?Fcz4%&i0Mo2ef~;Z+;kXQje|G+TdoF915e<+)czIWG}{k^)8t#C zKSWD3-!DjlG6l~t<~zD>@IZl2Xc^3$ZcJS>Z!!%g&Ew#_INmYydJIlR_@wzP=8-RN zo$V7(^3um;;3Uep3OGFm7o@y@3#S`x3L?H5I7Rz`aGLy+&MVF1Eg#48p~`#^sP)nx zX#elZi0NXiNe0dSO&Nn63`_%@t1ctjG1j%eD`TMls{11-)mUEtS($&>4#^P45E4uH z2Y3_hTs_```*U^e_{&^)(6SotI>9uwzLMlDmB}x3SZZ?^ecNK+PgwpnUDm zCuC}WKI|VQHabL7a$=m;d$Io=A7iCY32RSHjgkeK^@ODh((bE4tw_6%Qt;1|82QD zNnj-x@~nCSg%s@X+%KpncxTTELzX1j+Jr@{`NXS*{7n*>kioMIWE*Sw3CP*TT5d`n z1n7E#mqY|Hq0vWSgQ1@A!6IrlW&0EB1pr^55J{S7%blfULC#mQ2%n~`BGwB!HvsHe z*qfkC85=G7VBp1E3k~~$k};@)`fIK~idan`Z3|jJ zDXh{!CDD$NhgNQqoUpI;f+(UMQr z6=(yI7$fAP5#;y7DM}IUps^4Hk|i`3rYs^MC+!6Ze+sZ|?tBgW8FH{u5>25MgT4q( zK#eLuW2S8o=+bDDFmJBVhIR#c2_-&AcU)PktUd0*j8xWoCL#)$gUm z$U9J%%~wC^M2Cs`5%J7lKjky_Zba2$Hz;}m7_oW5P7pu{eJZsj##zuS?XHoGIte2t ztp2*}s7dTXy>($TQfFN>3&gHI8PF5<05AG2V|>iMfp-~mRP+vMGm_N#XpC~~k~D>E)s1~I;T}MGaYJ<}m*gk)nUP<;B+cSWL#$L9mjL((bw;_`{W55g z(yRe}wn`U)Zhx93Ak89G!@3!*lbX59W`bs(}otD0pew2Qeev|$JN=S~yDf8dk=v-=@Pv!ov zz5+c9tP2(_sF4;dV0dx!lb-c}XZr4`^__lm*YO+uUVWM0DedAF(*7>}a`n~)M{Rfm z`{V5=^;?U?I8_b5W zQSiW>#HO$rYz~``YYdj+8miTB_}B=aga;6W@-g-#dzwAR_Oh4QtL#noHhUk=eMi~n z>??K>mmz%1enfnmizCP zzgj%}({}!@-pi%e{yoziU*coNBsL!CUH3nFpFG}&+Mn*)KLmfT4*pvAw~KZET-UD` z>iY3Yzx{&(R|Ur3bm+3^r~`pPXa=LBe_*S`UGXyhgSGpfjR*OXUyR?C%lvMns#i=k z@@Q9)$H-~9>YV>H|JA^7<-S}F50~OC5VwS73I5oo%oXIF=)Xf`j5I;I6*jQ5q{GX(gfrY>@7iwnz_3kK*paUD7ks^U{mbE7I%IThhDI2hzvVr_z_w*U~BJtn|Hf zPC76B0bx{UBw|wp?kl{Yv&pu@)4uK(GmFya|HT(|Jp{BK{IB*e7#FW_fn^;3F>8zm zykk=Np7G!g{)%5PTLUu~&zJsKt6*TYzUDANQ5+Hk2|j`UYD0|4fqw)y$z}9OFOZ+_ znZAQegTB*mY8}7P@7iU4zfxLVb=7V&5GF6IkdDM2PV??P>IoxZ{ATQ*#C{|f`!D(@ z_F&jk`}Q{8J(23$zlc3@Q&nWAy&>&8MIBAaJjPpx*q<7<6y`3E_O7)5q5Y$GPf5D* z5K$NQL{}^ioj(*7vJ~faz;+u@d%hI^-ZP-S3xJql zHp&7w(`vSB&#T|i-c{K6JzxEr)_#E2o^*BoG@z1F6(|)okz=^~PGoZDs59MnqVs0V zJarp%m+3$`e2$C=t`zZxBKW{j5wVlJ5$d(d57zOFbsrpF&#KmaP_ce2<OI{TNm? zW&<0t?t>53v8wflDGRF_yMEm`o-qb0H6;ih=x@9b(Vp7}l`@lVTZymv;gZ9S@)1Yzj{ka|`4ISQqz*r7V#2@$EAit*p6GujJOzID<~w>6>J5J% zEr@*)1z*hs;a7+;v}PwJGk5^mC_Ii0y9_)OI87+uc!NK~Ka*#9F7nTmAKXV2>neRI zE9cL=@dkhz{s!;H8nSZt5!O(#V&rhsx#yxhi+_d;7^^F`tJzE7GK9wPGTvRR$ZE9f z&Uu6FrCN*{F;=1lG>z7bmIDBjUtwu?(wEzVkuskeB;27brvQn^hjzh}dS4eVCD z@vkXONkW?E!#SnO@1-8ORBc|`Rv)%u@nXfbVZ-7qe%P0rmCCb9OTR%9m8PW9H``o4EJW-E&-d~S;-rY}q++UBG7Eq6oW4I@yRy{Sp%J-_9z5LZ^ zElPcycxE?WS^$6b!Glchmz63{hPPjq`UX7kDrA=W{Fu8RYphJ9{uzBU(@_`Y&@vT- z4L5SBny1AfPz^iSPkLHr)FD zJN(u6%kToEvG=AK_26zi%D~EhH1hEMYx!}&@}3lHjZtTtuvlX*?ng6+)zMUkKg|aV zWzdq`-HlB8VfL8kSpiD`enVxgT2Ika)EC|Tf#F*CMJnN+GH40zt#WfC+i-#4ApC~P z@?O55?^gz(W8{e(gkP#B(a6BQ;K$b*xrYBpV_h>;{oKGW{FBws35*Biv+`Mj#g~RY zAr%e-Mg{;N@>KtzR_I5JJ^_bqO#I4n8-jvK8161qk1vgIBO{8hkzx3cMi!1x!D|6a zPbt=NkAYtYe5LQXxZlzxRxXqaQHMVbbs!b67#W7UyNf&?hth-h7qEoYw6CNf+Ll(cFP9>-e}q!<%j#X0WOd0^wyF#6#+72g7-LK^7(xew z={O;wg(L)GOiLgMC8QG|<&s>EKq?6V!jYap3b`ZYLV8HR8vbuqHZ^zOcmLmKS<-5E zcINHOo7d*ed&60Z2`ao26Y2xf7%OUpx+%e-i}}pho;_6n4>LCQWb8?*KYANyK}e&w zuc&c+?4H;?{5?H&!Kxow^Me&JKKu%NUKz20rEo1i1g~01HkSjhr(5xI{1d#EgYiuU zuSJ02S6n8=$=S=L1i*zo0-tcEuoXC^4x%SyLgu^*$U)pJXoaYc3n5xur{HeLtGQ2b zKyV0PBO9_Iu{Q@{{`h^~5P%SNtLn*C76{tP=Lsbnw;?Kn?t+@oU;vUjmgt>gjm^I_Ao>I{o*`q!y9F zE|Zx>iXU>|59`G#AYmi^lM<0ru>r_0;!;Eu`J{%BGeJ?R%&rhwq%u1-+3&Pwy1LJ1 zx~zUDHRC^>Nl9Ba+^Zb{Sbg=&7>OmuUJ*j1to{R zBqd|_Ujj`;QC4#1UzZ*|g+uvp2Hz=C5Eu*q!t*>(AX8t)PX%C&8DyGku+$4FMb2f(1By_UxaaYviSF1q8|v&Mi$i|5HK&BTFc~ za9b(Wf!}1!UhXe|?jMPmUIXB)J(mkT`D%PFAToQuQhvGH;UIt!kQ9?NqG zpjq)2n2&HRsS~8L_*yS;N;xzE^7Eg>AKDvx>Zurc$L%8V;~2RgB=RfnhhX-64gZF# z#n=BK-1Yy&+v3d-ws&RGD+d5C=V9;hFGv7A8(NMxOCBM92>vdY+QQ$#uT@uKNN@GT zaujEsm-_?kN-SSzyh`#=J(aVU#+hC9y8u?tdiXO$45{b^koZ6J4hz%?<3?5R;|5X- zf^j1*HZX9&%v;Ir!eaz=2sm(=)>0Kj)&QO@==H^6srWSKM~{Ho$`2ltC2|SCO3Ff= z;I^ZTBi3b#&`PERTqd-I)J@6~+#$X=apd7k@Yq8j>V=nw0pfS?F!aDoCdQ@7%Y#mU zrYhpS7k>nRtcM0dTjc(DzmeuHK}Y(AZ}l>mq#t^_4?y5?co%QO0t_Xx^koy))z=`> z;~d_$b^gG0_o?mV+W7;*fASX*%!^BPf>D6fNiH$P{CpL}sORZ5J#yI<@pZ1`C)D!? zR;@Zf-mS~Wj9E_JR7L#6fmQL}%VAFSw!`m3?X_t2*gRsdTrw5`z<*K}U9!i;##~kS z%Cdw408)Z5-Baz=rn{@^?I{a6!sBI$fsg3!#1=;S?BCkpz`?QCG8p@Af7{fRKp{rM00 zaTUED)QbmktWu3;U&p4-Q$tnw@gHJ+K{1h|+3Hv&#t-tiby=p-T+^Ss354{5i~hD-3%JEsPRg|iDugY({~T}?H%tbCk-`?j|602b!Foh@ zE1lB~x+ToXp0fP7{q(5r-{^$a*#3ibLad1@jqQiB=!&xO zmiSUoVEAxOek3GOooJG)8Lso+QMFzdC_>~^ z5u#ag%t4FfSNuEbCf|A{{z)bw!B2LBMe!cKD7PQ{Izi=Ka9m)ditot4%vrICxAE_DL;$tdlGL`cX zn*cTRS7awPs)Y`@;+_yKO_F}Rh_%ZUpFbcou?a|f+5oZIFLgRj#$r zn)<|SS-pme$kqpuD}nuZnLPnfkIJng2sZY;$b*#s%Cet}1@xzI49qM0FD6PXqP91b zN(+^{RjD@7`Ua^%EosJm0ESOdf4mPnF&N`O?i9pC0;UNp?e_|vhtUMHMJ5D1bAtH+ zQvdR?MoEBG5@eKEEw288Vi1SRgCGQ#0}`ZynSr-?#0L%rm!JS&6{&~6oj>LA7V^?D z2iI9G`Q%s#>&it*5eLc82_sAH00e+9Jw&++xX4&T)+-*ZAfyzzi`)YtVEG8Jkh1vD z+G#am_rwF)M^Q2542-=YNiTn-EW_W*&3r`{-9hgdkh3Xb zSUW7wWNLGi=7q~V^#wASLsEHb=@dGnGB`IgSCQ>($(?sYa!t-^zdb3CS-`py=|_a- zMK7dIT@pAD7`3DCds3}d5xKDy(fW?mMNJpJV_BB-sS?CuyP8c>D2=5>O(K!BEVU9P zqOdeSRh_YLs6RJ9_)Egz$Md@uH+!9u_92lR;rzh^=8tp_b zkwcOum4p@~RwyzON*HB0FQXtdE*y|ds(>XB=9}bRheTyUMko?#C2-ef1rc6A~$rTmx=$IyBDV0LM5T97{rd&HWa= zZOm4xJtH+(QfdoJAe+Mqv$>K33$_eg?>Qi zC;`P$L~kQ$el-NGNLB<7|D2pRtdBapK*gf^A_U=gU0~IN@bXc8)Q{wpw+Nj7;KNTv zlZDWA5aqmx54Q*v0Kt+&{_toxs^#_2kgYB0|ao`mjgMLPlc^#G~ZGa*FR4(l^j05vYT=Vd@F74@KdZ%fa_+ zIO+}Y{KAU#WUe!$nP?&O2gLCs(7{7OPdiu$UCHy0NPu=gJbx(00YN2#F+^{T8&sjc zJUYl54k)OH*z=B%7d`+&on8a6=K~!7E8vA60X4bab0b_*1IgmMn**K&Pe@1@NqE7Q z{$rapCwt-TS*EJUwA@=ljnh(nCPVXx=!<&EQHKH135T9;a>su!-z&zBb5 zJ=h-GqLk`nimF6iBK{TG1s5Hv1f7t27QZ?uc|uN?c8aNQx+hDNu7i;JY8k6wvy#H% zRI#u!HvzvN8JwlI_)zk=B&EUc5aOJKf=nvOR^hARk`p4TV)VLBqv@NKsLhesWFnJ} zQwnubwZx_}s9YM2LBd&_qQs;`H8sgugST54t4>s9$Y4wBvi^diR^;e+*Y@F2>xc!Z zXB?(PvDc7bjXn{SL44AIiRqP<29eC-Gz-molO`cExy7V0aPr5-_-3b15-asj`7(1Y zcc-chrCHK~0U_^btIMRzGCPx8VzYqb5$EHQloabOO$1n8C;Z7V&E*3T(Z>G+Ks|_ zS)&pLC3B2Oeo0|GnLIsNVF-$ zxd`QE6a*|~3GEGy->h?mavL*`S1g?7k+sh=BxqP4rIohF7D@~Ti8NO%93PUYGNdZj zmZVF|6`KyY4O~)LLsC@bo8$3pE6G>Ol&{+Y4zpF0V91PpR&GhK9Q0JsZBn^frYO=T z2J52=nUWO&e*#_mq80X=EC7Aj3N~vW=&U)QE%FQrvbVWiK~9KR1~7`mXBW6x2G|c0 zBDe$}BC;+*v}YZV9^i^PbadW}n@*gkK1J;aefl{bg{vR$zHrB*^M6`17d?l*JOqKJ z2SKF0Cs`vz<6rn7wE`Jq<6~z(rMkKcYx|F_s%$DP8QiB}%DjzZci#OB5|m`rbmD_I zzR`4h`?t#*QRQ~7aKiQ&`sySe{V|$Sz5`Er7lmVcD<@P`wbXnR9h{Rl5a0*C>$~_i z^9!tX!5&jFQo}#8Cn4q+9DV{vaO4RbrlLA3$;re=8Q67HnRs8x(FQHr>zPgJS=n;^| z3|eq&^uXtVML@n@64jPuprJj6wN>{$sV8J>d{rQm8qi%Z*e|zKzvc1KfUcYPC`qSK7_%ryeeN6*f1jgfga4hx^DR`o@ z^90GAf0w(-P}ebN>+Pu?z+xNlRDQ;q*tloVhcV4 z*VY{=fs5VyyN-8u9w)wQ8Tc!f6aD}=;uK_%R$ySfS2qOX1pPr>YU^^VEJs?y`!6?K z${+sT({gM;F9>U)VZ8q`45cl|2puqM-SKts-~E>!c$6g8qDaT&gGW+6$j1$WF@lML znSyp$>s=glV%>r4-Lq!y%Qx&?Pn)Q035h$+X_#+T@ zLNqVwaBv<n44*=Ez^kT z8&R#toH6al^29FjM)`Azr59wSiO0#~nuw-L*|=v4AdW8QAlkTlPkt4)Hf2LG()9j ztO_RIyUf!pvzyBw_hP**WA^L}8~WP&c)8gwYxYPVDIAbKYE=4w!bhZXMhk38DDmbq zihr8RgJN;8+}yqRFtPwLoIXtXc~F(g5k22)%gPW}R@Ok;hg0|jm1tuM?J|iQ3G(Wq z(YibhDXC(W__lb_F7g{dm9SksfD&+l2*E768n?#5jy{4@8$kOeSVepY-W0qe_y}S! zej_;le~Mqo#>haOh-W{y5sZSvOyqSjS0J7oG;AmZ$tuA)HRJ_CMD&4P;u+LOydLmn z(CPWlXhausXy`!5=>W?>Tx-;WGSX8T!F6-pVJtmD;3X)6~dns z;^!1Ar3TFuz~8$7k9%>rtp|toJPr@CC=(QbrAj5*RFNf=s=07~R>XV(DC`DQ1~evk z0JnS)N8>p1!ta4RGE4Z+|7SEthnn5vmN1salq8d{$-*od=WhO@7qwqV$mp{+4eJf9 ztp@aU+S)!DVuI%c-&YVsg}1%udvhFrlX+~mSnyVRA*0Z9scu>-5>ovD)dAt(?VSiW z$4d{2<2Y0?p2vAINhKh_QJ3OR^LEKzpF-}l-;22e8~&II!OIW){vO-)2ZTzYuPW;W zyzjAsx;$PgPNb3%!B+$+XTTl>v)(Dk5 zQ}ZHZ?#b|v)#wXS=i|TMh>lG*I`yw3>GAJhf8L!B>DThmC{&g{Qj_Uc{SE(sl0&WP zKAOl}d}>MTa{`khZij;X&^3@lu30c%Fdgu$gPjQzSYOz)ZhXJZ*26rPhn)8a8#eZ~HE)z6-b*PO-WR~5SU z=i#fb_Wb<+Z=9op!NCE~c(L=J*L8EpYAkHTC#7tJIe3E->gaZpuV2Q@|?Tyr}I>IwN~`KEA}uWO-B9?AAR&gyJ{Jh@9VM*S}PT3z!5MyxX~?-%ITtvT_Ij6RC?|6Ir=SAP2~s>3av zow%hAdBba*r4oG<-CT(~Q06BK2ccmbg@$ESg(*{>D(%W1c}G{lhJI!K$yLJ1NOsV(zQ=t)04iu%}4sQ)^6x`m}IZpQa8g z_91yrWvQ*~)Aw0SbM7Cm$w*LIRjDqF{8DAI1po6f z60>I}X#2aFLRbO=!6}7k$`YVUG_(8sORZEsl`kEPUD!1kQb<~2r(8(ltZ;EU^DpH%}&dsGaGlGUt0c?Z?kXZu;x17-z*7JZ^TD#&Y&O|H@k89 z^f4Ka6CP?1u-sSR8C?zZQQ(fZTEw$Lpw>~)4?%QiZ7w3p6QLdqA_VWqi(ha74h4(} zOx9k$AfPK4T|rd<3oOx7;E;QSy?N(IS{Nvsu3s~D4)tQchu(ewSKyoHB@c_(bi<}6 z*JvD)VAqgS+p?IYHyX@lM0<`^7;l?m+4P4nU2ePkFSFShjgx*GwW7AK%9fTjGk@It z73kKXcRt-(clvlFt1;r6HdK|i>}2xhk)fs2`Zuxd!hX+`1+2n*hNa4lntaPYI{kfR z&&+y~QEMCP%j_^d6j1(;xl!~#Vf$A+8y>M#d!xi;?Sv^u?D287MW!!#d);I>qVA|0 z9?6qa7|kt;%nE0%nLRC~rpWD-B-~8Rlr#lgc+=ODy3l68sQq2^tacn*r(bzyg~`|U z^Q;cY6Q!WgG)AHrtu-44=2}HUdSaoU7JH1*nk!&(^Dt>RhVOmSvG4|V3djLOzzN!5 zFcM|-j1{?wVceqtGybTr@g`TGNivhVIYHud7uBRpo4qD0{9YF zu<$MQG@7Z8DsNMBZRUgNduv`%#FXK3U6wWgIsC zPbRb$DhWrREtVnoM!ihJ|A^euOA}#C?*lz&%Pd7#J~ER2dDrxI9G=~u;yb0}Po^E3 z2-6PVkb=M4--REIPfs?VA1XBc&WHFI zl*7J>Mf`mDuVyO)ZV8}bz=9ZLlJbB`nv4RVkiyawbToeqUJrVbJTMRin-2d^h7)M2 z)8X_ZJ(MQXhztUUoV_>w?}-4L|1$1umnEG3DfZXFH)p2z^X#8YQM2phof8K;UuvT1 z=I-yD$t#=MjmBVy5xTRqqI`BJ)D*}c)F0+7rR2CF%|jb<(znJMF#54&MVfA>m!cd0 z8{#r1pAk=1h!N__w3YNn!&L^9DGAq8=rI`a+2ukmoS$hPrL``%Aa!OMOq$Se?^>O4 z0(R#oS^A?Z<^!SO5%64@CYVp=11#;q5+O)MYM|zz*71G=&~c>mykL4DtI@QVjsO-z zPA?rD0K&?VRYV}JVX|sR#()TG@D6*Ek%kapJ|k*W4-*H{ri0%|m~=f*Ew4sTh!s>p z!%_iE6SYowhEV*Zc0{kc^*>R3GHWV(aJq&NfnH3%ZXPV{B@6HMOqv^eXAx5ld`Oy8 zh%Nt~4ZTO^3l7I|cr8!nE@Ae6Ac)v=d8(Z3oj={Bz2pyekT&7L%zQQ?Fab4c6RZF$ z(^0T3eFf{{uqhik>;9$qyAe z6J*9BsY+8FqUv{vo!!0r>~Jx=PpI%N&DKAzZFnn;yZe+2Ws1tujVU#WIw4x{cf5Dij^=S{ zM^s|VTJZj=kJj9nX_x0#m#snUTQlaWN6(I!Q`B3Z+qO3+J7+q6|Jwz#4p+$(3VEfQ z_9Y}HCP=OBhrXFNyB!HLf*Qu8=QP6mTb_wdk+O9;O1()DsbkcO9_V`U{r4|?5K7dS zunVOs-Sh;tsa&s13se~LhsE9;V5lxq4P9B)+_7bluz8?Us_tJtNFS-QRr*b>TLa_r zo9-TI43wt~F3=9$Xkq*hKmYv0Gu|plYtZ>r>Y^c=o{gOx=a_&(DSc`x`Y4B>?mcD3 zx5_Hi#mUBsQhge&?r5r+8CsvMFRWEq@+>#a9;{@Hfpn_wmbFuccXsww3-KDn;caCc zS87TZ=F8=}l=P$I6j+!CF!Ds$E(x{^i0mQ!jrj#ua|CWMf7=1~LSPL7tg`D=y!1uP z7rYn@yXrL@@xcfRpDirxer85ZQwyEzALxlque-0%BU1#*QnnlV(mBoRhjhPQu(6{f zJ@WQgy2M|VIuxI1DKhuj*POFaZ_1msx4wISVW=Njj||}X+)-A;`!!oZi_8|}0a$T& zZ2ptJ^4K1N^$Qil`|!pm5@QdkqKJj9RtT5|5Tc{8LwGWt96JP=b2p$3R8A|Va2LEN zgwa%Z;XrI|1M2(2r?K*iNThyT)e;hbBWTvC#(b>nRd-;8?wE&GfTRiYg3C@~Dfzpq<)4vqg8lGZ);`n&Vo zqB?!|%U^s^t~`9Kx;DjTOR23sc34?XeXf!i_qC*^N8c2{p2gnWd{2X~(mR3=1fPKW zlLIrx5b@zyZ0LG{jqNzzPdKqwo_B;LuBI@WLDFhKC~> z4RirKI=D1xBOnHZS@oqOu)y$IBk(O^mEpSz);4--;k;Z#tpQE~3L*a)f^H4C`A_b% zhJpDrDOxTRj-De*L^B$*MGZ2FTj>xo_8a=OiL$e_$lQ?rR`rmU);{&ahhk0~d5DK89dDJMUqS%)||J3}N+iUQJVrF*n``g-%e&2URW$kUX3%*!@ zAFZkJ)zp-X8K*T5YjQ3goUctTDwA0K{uO?IS3$w{f`XDpW6c0n;xHUiOB_B;d7})x zl4Mdw&c4^D4?f$c54b|x@ppDRbHbXYv?DnaK?AgORAkOagGX{2uP2QeSf16VAwN`K zpO>~WKWCxSJw838muXI()X4Oq^zm-z!kqk-X?gYaq5OtES>*$nG>=!qjU0^f&7vr+ z9e^T?Tx?LKS%;XDhsidNbpVNHv#eHI4q7NpGudpWG$~$@W3yVb5`r4X*v+zG$!5Gm zTWmI3-2HL~h0K{!X-J)pe+_47Qf9cdVX?K&Zm+YV2XgzlEk<*(Ha|QpT3j2f_GRbI zsLan47CY^!&4synb*|z8+1V=s8LsloTT%<%p{nd5d9jBaHEwr}vADJ;j+K76s2{+c?IQs&mV|iE^t# zVU-VsUE0ih2DJhH)hafTg@3Y_9e9s$1L&11pw0qV8F7;AFCHrHB0zC=q_EqR8kIhx z5^liCz9=Phk*TTm!gPQ9>vKI(_YefS~Xil3TKEk+Xj z>stK$=+UrK9V!>J;7^3>nRg*3DQSt}+|Zgk%JAvhq17;C8YM5`dYpk;%J3Jf@s2Xc zx0;UL!6#70YUIbq(Fr;w_R;U7-@rGZ?q9~dhF)Iv*}S*jn)ex5S82VN!?ZF#fHy%d zMD+kElp&LvgDFecj0fzfTBR34;-o?38Jil~b2EH$QwT>4p=g{8gz$tf5|$XQ1qx79 zsmVveU+@QwK40D1MT06@eOdRXX{*rNXy#0OYcYNnKU+mYKi!YVK>VjVREMgH(flR2 z5#4_)7U8O@;`@v1gkSwQ+H5v!ihcL=FI_b{l9ki_>=Npb);Z?9V$2Uej2Qzvv~tFb z`Th4XV_?_SA^gFZthbloJz3CYSM-^h?=yaM_~^lx`zmuaPDAgKtm>;t9(DA0I_1KX z!v2@~1qn`q@2ZoT#P>TqVmzZOi62IeAT=mCf+yyj^I~_u8T;(b*xmEyQ4`*zY;RH% z=Ap>dzeyRuo5z5$Ph<{(1(o=2aC$En_1dF)L|o(TU}<2T@gwMdcH;56w~yByM^xQF z{4abC-;UZ4JL*RE#Z&k&9)$LxoKw%UH`2Kqf7=NEzx+a_<5jUA@N%E@M)U+V4L#N& zg=IUTpad`BUS$1%shObf-2&|b4JPYg;ExrK1bMC%2|BWYO#!n(3K}>JjJ<-V{a z(NMtJz#Wwr+JRvK7YTYc~e0gBr-oD-n)vP+dW=N zsQ@=sW}y(dm)#NS|4tjCvxZMB4uhvyY0Zs`DXQ`luSJ@*U}IS{br{m%M}PkCLqn#- z*Kx>HQeryP;ZqfV@Zrxp($$H&Vl+?bs&>1pT}m{sSeK|y-*I7TLBYlaSrB`|;{60^ zhNZHgBcbAv=DYo~SkzeT$Mr zjg3FYzUyw4NkI2T6vP>widZlZ(}MYsM7*383PwV7f+?i;72p}~u@kE=@K2Bsh|NgZ za}2y6HlN3RM&KBF*~Won2mK7&Yj~y`cJiJ_a1Wph?=!{eomvp=!Xe5FN*&K|VKj&_ znR)4!>eTjJ{P)tul0df8ne9-$GrTq&t{wi4%0YeyB#TS&-*ekjt8bb0D6=!Ft9mT*E0Qk#2WsDTds8j`aMkC_CzMPbnfeh* z{LDHeyR9vIi1jo4%SWjrrs z_gQQo-tYiAhUY)bd=J;>;XL#@wGzF4A!k1&Ma$H&iIDetY3vgPvDJyI}rbhCvU$cWGBZ05r!T~y`L&e5)gXNX`APq|9e+Be zuI0JU3@J#m;_>dWRX0?@KXoSleKmmHzk&q4y7Ly>nHTWi9$yixstkoHtAgYW#}_Z6 za=|<73&JlIUa=eeOVbsc*a%G=X7iTkTOs?*0}#vd2t)z@RPZCv2@x`*ECd^p zPy;+2(b#}uLhlnjk7!>6+X2ye^A2(ACzuYC+v9~@A7m|*m)jk^!$nLmq%d6J%`JK; z0PYbmDd1LOiY}zcQM_&<)PvefTI9ueXG9GOA830hL|h)V8sdeC9C3RRsD^qDTb#m1zqfnimt`-`T;1BJl%S6t4-3>SB>Ybu8I`*h~yh_`E>YIv-o5F`HS z&S_LgXX5+fT_O^@hZu6KhVWQ1vtB0k#e2mkm91CY=(pzh-67+ZJ@~&Z9=qR_oE}P~ zjYU;rF*hl8LFa5VD~F?&% zH z8TDmkWL!(%6=2hKflqudeUI+}h7ctDY=#LC0EdR&X{xr-PU5Dd(>tjvi9R(N-HzwP z4&!!o2emp*QL!riy$J8GF4TSZ+H2qG3ahUsv*!n*+o>qrIvf8JUhVYO9tz7-TcEVq zk6(P_=bzs|C0FsJ{|;tY0|=@>0|?5{{~Bf7|8=j%{&h_+#*PzU2v7hIq@TEWh7~ZM10>+h zj$jR(r;lLG0kMQoH;4vKmIr|ZgNjCo9uT;o;F23LE9f@V?3uW?ZBf^vw!M?~))>0s z1RTUqOxyz}Vp~6W|DJo^|KM)w?q!qqOxoLD+ug10zZVXdbzOS`mw$l5@4t@^e*my8 zx_FdX#hizJ0_!a4C%Y}~j{r+$plUdY4GCy##Liy>ml!w+j;Qnt=m^e+t+BrzHV4^+ zpMQlAVvqfJK7kEdKNeg>7PKBu$Dd{UF*vR4iKS&S=W#GL1xN1H88fJC)P&BUkpU{h zq`UWg4q8K%p-$F?7sM{&c}|w^v#a281NDyUJK&BJHyAqrjv&z~Kwc9>Jw4h`lv!o{ z_#*xb4x(eQTUOEo97Hjz=Yfk&#(Pj5z=KcXDX0_Kvi(~C26Tj4kKT;KhIe5j-Vp$` zXeEWvDkqEEVt>QaS?H@eTqRt{_7&I!=`fBO0Y~zB#Wi}R2SP8Yq8>Vq_!NlSR|d@x zF2pdWjQC6kK7)*J;GgbY`WH(>#xBB7O|=7^uL|`o^hK_)Qc!bqYn<9K0lU7T;;cUv=Qq$kKrfW;BaZp(U~DaJjcA z4AY;rZzp=GJD%f~@1HB%7bc^6yabl-KD^1>0}3S1I!*^n!GHe zu+Mhj?HewE0MCB*88i|%P{qZ#@G21M(Ia@rGXzoq1NH>M<8MGCZ!GSf)Y}Jf5Wt2| z0d|p300sjH^1KBh0CU&ITEOfPazS@Me1{vJp4w zC?j;n)>lqN6*Yy!7M#LmUv?Zk*nvjlZJ*M2{snAExzp1nbjR4CE70pR-@~8As+fw7 z4?pa{{?DNcfnEkKvdmwhEivrZ^1*I$0kV5xgAd@g{ZcHGC~1!5O9ESl8*Ch;VC=fe5sdK`F&WVE_c%Wm~uI?BL;v=Z7s0baa4g{*n8+8=X9~E|V z@4%m}c)qLa`ITDgPzSmXw{*mER(H@NI|{o!MR+M+xR#I81buQbhZ_%Y0`GK_$n5bh z0RJf($Y>CVstGa5oifrtZY2 zkFQv999a$(vB`z_)mRL_jGO7xM}F$Q=~oyZBzPRp5p^+ViAF|nfphZaHm8GTDJ5_b z1?8oBT<@J^uZ>NuQU_IP73bf1aLUH%nK_dWJwCdvYii?@$0p_Yr*D}0(oPh8a*o4j zUi1`m_6PjfYp?8_T{jMw{Td77lOxALZ0SA!LZ@2l+8%l46*S~$tjGKDNXT$fi@pMQ zz`qNRxXi)MS%I-1Cjf}LYo_05tQI@;{yAZlBgz1mi`!GZLK`IXa51zkA4;PJMiM3 zV|WFwePq^6TesdcYuuu!R(L@bUEJKfII6n9Xrqh9G5tjs3^JMUD-p~iaQYKTnKyv` zIbf{FJhBn911y!3t@bvuvs=MH%VDA2)?mR|Bq)}(l zQ`irt;A!|>h>uo_j)OhVyzh%ow`} z&N;O0-BZ?12=tWq zi&PT>5s)thzkUP26I(S|x`E+^B_i-V0Ad7c6X<4fn85*e&8>fXVa$y8@%?`v>uouM z4}5WIYfkx8SPuI;%1F@;>ig{Y!IM@Fd%U}C%a$`+w&0OZ-?|U2ed}Lc&;RoceDJM7 zZ;amZ>6fVFOYO1yK0pch^Iw-OEZ(yL&zwDE*1Xa8Q7Ql!0Plf!4ttn64U!b>$plAw z5R8e&3&ZLmQ4Ux_7!~oakQcms0Quq{S|vFoRxeH|U=QOJs+GHovTuK5{{ngO*4p(Y zn+J3)+%hD&cHCX9rr<4W=JzREcyHH$>6M74?!fiL!8h?g9~qPJEB@Z-M;PMiWLX%kKK-*n-A8JrN}rRJ^RNSY?P|I zZQ>Iv{`R*OPfWb6YtiO|NREFzxOq`*PZu=9(~A~v1@jNy(~%gzuI(7bH626LeO*2Z zgX7+oTi;Rts5-cPj=t1&^#ietm_0==75G>{Fpt+dPS;9kg5JU6DuDg_WG*jc9nY#{VW zuL_c_nLtf-L9XvR@7{aj-q!rdAFU|bbZZdiIM;4SDW#vh2{Uijg_cu^ zquUoQybC{q=6~(E7eD=U?Pr6KGIraRkJjSHAeIa9nO($v$n*!^K~`@#8j+V5wiv_f zs$blPv*+P~^Kt!rTvtw|EkwKLquqPqTpgTSaK$AP(GZk*mmn4>aBx#+E&zvHqU@aAp`L{cp+MW(jo5s)*1K){LnpUBWYI)vg|G{ znfVd;dr;6vFbMMIO@KWm%OF?YI@n{k2lBdn2svDSfuJ2GlmfOevbRSc&{^W4Zgj97 z!F%%(nrj1{g*TUnU>97Rf)OnSWP&gk1;;>G6o&8^{PY853kV$CL-W2*9FGiOE7Aqw zG_k!SufBKlE((!_bU+qZ7SWO~VtR`pFuZ}rMlO;Sa4)n8yXpw*gJ?X^4&WPk!!`m~ zI42uOBle&Tv^|#_N)nGzo(>S-D4iCHKrL_)ZY2~LjwpWZ1P;JeBM^c%Q2;!^p_q`| z0)#l?$_KfCEXwEz46u8Ncz(gt*+_^EShj%$qllYq+=H0J4lo50ivlQ_TCmYQG%l;} zy2io>=8jmORA;J4y3p6y*OBaD(>=|HAH8uWVuxAZ8QnMOLB*s=)N>Esnem3vC~moV z;w>AsK9OPVCxtEj?i>s;AQA#)$(2cxlGqEQL~l%+y0sVk}*nxBoKB3Nr1HcNagzvrWxUrB|Q!{2QgFh?dsjg7I7);yP{4du_iZ}L8T(jalB{#tzh{d51Cku9#s^m{34 zaKBF6fBLpLb2rbyU)|z}yrXn1Mw3j<+44b7WOJIP%)si=CG{Hu4$nwin0{};z4tew zWfh{N3W&;fRA<@xU~yhCYW-H z2LB{mWl^^+e?y)E&*|5wD;Qa3(Rg*4d8KYWO`$GJSUy6Xk%rqX1B?-~N1d3c?p|MC zLNCnn8tFQY)@gFV=qv#0REO{47BGJZ+Ie5~JHh+q6wJwP2!;*|g&_Ea3H2hbA3?GO zm8`V@u?4X~4JRO&PDD)%&g6tPl+7ES;q;|*G?;7oSW&!mL|nm$<0A0{(ZZV;aKX_U z_+&H;AG`+%`9YjKmSTG)!6ItqQsW zxNieIaf4f21hZ0L_y#v0;-VG~sX=atGYEd`D{{hKlK8|Vj^S#sKEu=l+qj2JZ$B*6 z(mY*&vp{Z&U>asZQbB%O5t)lHQ(-QKy(|ZPz!zcS)y@({`Z>iaX>H|bds6Zw;|PaM z2Sa0UH7*_OBB78tg+(>ZF}iKUz=9+tEN7-DRpVBS@W|T~t*kRG;8j=|$*68iQ)4*I zkw z{h&FxYT2gkeY83B?pb&;)JAvY8&V@?UoPtBeaa^jCADT};O=pHpH_sHMJG3ouJoib z=%Eo$d$Um_bHbpZIm6TN7gTe$DQxqk`AP@%Tj7v}9UoSV9v=*6JmTP#iTVSlljhZ@ z2h+=q4Z)Tt3`*Oi{9%Ljf6u6bh+)x>9g*zHXn4}-oT}^)emgZum3e1!!SP+ny(fF{C<%Jjb8A z=arrKiM9BN9YRlc+I;FCY|KZ`y(i|lN9e!s^sP+us(a2a0pZ2)_~aAltJP@t>+pvM zuf~SIPu?wDjf(i+2g?RwHF_KmIlE_1an0ttaaU(2z%K^)mx|1+Sx_Yy4Ey)y3T}lR zqPt+f{4?Yk2p@~D?eO#4;ey#?C%l?050TgzUgDodW>S2r6WT%KRrrGSZ}30nr@!`+ z9tDQe5SfND1d$xbHJE!a`MnSni#RYq*e-q01LT0y>LG>{OhAKD@cpX)#AaK@fl z1u3fc?M1BevOaiJ9>HqZRv$fC_7 zYF}Ku_(c@)KkFYhK3pLWf0l_XqTEfyh5=4WB~yK5@euB}*8*V590m!>#;nGHIHLf4S#bEFguE*oKV z<;!h$lr?YPl4-h$?_^J^7&WS5QufYGx@k-H&BJeJC+EA2BgzJ|qaxMeaCM}6+a1sB zYWeHlDZ8Gz!x|394x4J~t*-3d_S9Vvcqq$TQs8zMlz6j3_(OxoW7uS^uQBaPweQZR zy=&L@U9$#@!2JxopX%^jt^s^-`w51i`CxNghPu!ei0SqS+6zH^UV?P&Z=(;;DfA^e z3s?dB_F$_F$4X(Dk8Iy0!_Sjppqs4I3o;YXYhnu{j)}a_BN6sOqzEa@zY4(}9S}v; z!x<1zYd8TkntZ{!C~RZ^-oy)1y+`p=AX*U>q4!EY2#`G&$YLZw0Bex(PojAe|ClIX zDruS{*Id8{;G0N$gnNOI1#}+P9pOt0g*{|*DLe%{0`cCEgG)WZ(l}EDOmz~j1c=)E z46qR$0?@%_m<+`36D63>JN^@{MQR~0*xN$t$W;?Eax!vSn}1)m8n0-I`~Wr+6J)2bUdCOl`9-vI(02aQ5MKuJ<0UT;1kk}&Z& zg`S9)cEf{%RNB)3;(tL;kUPQJLGFc`s$^bg$>$G%srB}oo>EyvNeMX~RYr4PUAj$g zUTsOpapcxJP4jevM=};^Kx=-!@cFSN*%PxyJF2On{vU1klyS~XdV_pkvw3~9nX!k}$`nNdf*EzdA`#1L+6%`_?z&6%6-kf!*BES=}4(!xSI zFP%z>QW+7Hn}Vp2KQX(M7N}Clr{Bt| z*`7?>cl6Ju?wDP4Zu8{!(rlAeR-l)zsl3CzaHKDA!=N0ER3#KCQjEFU#4?$y%xLSQ zO3rQ3_py20WpancGA_#$u(ZCWOT(vLlS|}UP3$dJ#abDK!X^`1X_?$Er>vAzr6)3q zSYb}!tQ;p};7Ss*o7`qbW6@F?nzM+FtS8AMipaB#*{Y)4sZK|kE=Ltq8l@1`EHkSl zkgSkrQC1(5phz=%`njl7lTYD?P(SJ-+6`Nk#cD^9*IuYlFu5)&hvhT{Vq1zKB`L{? zTtO?cO5BN3bAsB>*^&mOR5w^t*c8_d4bc{1B3pPmX=?WPzPDNO(-X4-)1-Xc%}{UpO02ShlI|{rMTxeRX-tZe zk@@;0P4r!%)gwvmj>#o#^(9v$tD0{LNj1tL~pQ>;CHEo%kD(^F4@iA;xznc-|N{zoB9N*fviy zLw`d_rnT#n#HpV?e36xmc?sV(e&%ksSiucJ$~XP3#g+3dLq5OnzEA5dLucpICq%!) z&j(KhrNU;0)eRXizP(|=f`+zTikc zl>~jTi<<&AiKw6$d|n4Y4CXQ58@Wh8;#{nSU0FN9Q*$50xp)_H%%0(`6B4jW8bIWa zpi1a7u-B8PXIh-qZ>Kq+`UK2+jpwcjs;QB=#0d9uThXvSRz#i9=;%=Y-AD9*RPd(uu z0kRp4SU`HM6R>y;b`)X^f%-`pFg~guYuEszKSPGFma z#lz+k=Iq|LW*4L-X=-S(+!QvQ?!pbz@cI4*OT?t&sD9autzJtD(%fn@>|; zTYtd!w&Gu!v(2fZ_3T6F!4F3yX5fCKZWw9s%}kttho?=){W7QRpjy<5NtAHMxbheG zegA4|xdh|7NskDZHPm>G=CIThvZ>T;CWN8BOJB%lQvRs{ z{Er5c!>lz|51qRxyUfZ6{=g5c?i9VO4BB2qMjX;%bZK_pyxek5AiDp}Kf33S= zY;Abb#8u<|KjPj4AgZHl1KzoJ?_OByvam~s1(ucGcR{2#!486oD2jj*3-)L%SYt1- z#%_wnsIezTjmDY;H72H+W=wCUw^w2B_&;-Z!4i`<`M&S}e{pwjojZ5t%$ak}ob#M! zo{d!}jMe3`ZDJ&{L{CS|E$T2G$q)Q!hHWpRP+W~)|a_}~o z;XsLCUJx#sl>!R79M32dAqFkPNhX(N$eM_3#0catY_RNavuW5z3ENGw4OtMqCk9j7 zz+=D6E@2yO7{iEa!Q%}fqTQ4yj{^(*HhOQo~3ZnbYnzO`cNa_~d$;Yj8 z-+uiIfXpFKPl7MDZJ(LK~X7u_3Bk?IHJy=uPmnTJQ*D) zsEv7(9(k&HlF`pO#A>Ois8ITr53f`|cM2A%5vXHh%Z}Ggi2U_ATgB3Dd^fb5D`X-oaCQW_Mhy zCN~!kelNJb+?pJnOy5xYhecXAZE{q~wCtpq*3f~~14*p2x?AZ|G31*tm&k@RuZ$&e zNdj+(9V|s}*zn{H7q|XZD@{J3PA1>D5D6dYPdKGGpuV?t?SY8f9sx9#sfs36XK>X2TTNS= z!qV-s4CzTJBt=9}p)190I~<8w|L;`h{j!Ejd^*xwQ(t^^5|rZ?{h;lZ zLOq^5YR9O_!)aW{{|nVuIt=}_VEJU>dgqWL)@PH&D289biJ(FH@A|8*Lgh)`{i#LB`j>FTL8X5fQxz z0R?W$IBNSA?T;l$w+K}e%OLDg$>Ctj5ImBxQp*-{m=Y>G>@w97l>wfuT!t*8ub#Zcef_wyLP&k%GQXrk6?#v#HB26m2y>O5)-UD3Nq_UM^ ze_4B#ZDrw@TnZvy%rY}i!u%miUF_M+jTv)EqRyt)e$3R`h5vK4mhRQX=abUc)ji5I zWs}wZ-j1P8`Mq6wR|lka7fU*Z>C^IDGm1TU(JjO`HCPo)n>r^O+#`$nxm5P^?MS~X z@y_VGGZm0&yCXYgC_AMkI;3WqIIX78OdfR5bDoZcK#J~|%~xb|1%vs_o?Jzz=uD`L zj`5K~LMb#iiG*djn1gt))O;@Atn{>GIG7VXty6g~2X|+UQsdDn+~R8H`}a(BPRaWs z#xF7}_;RdY+?&B!G%mP9m_vuSU~X?p4#_o>oqiot#Q0=CIxmdtz=i1c<@>@fJ5XDC zhU?5{r*NsIyigd&nWu1NS&o@Rmlfv{)zQs*z_H9tS2 zb8bUzxJzu~7`kvxnW%G3xZRpxUipQ$0E4VC8BA4kh2^y&~IicGV z20rNVl6b43Lt>(FnTu<+lSfz&ZmXZVgTK!2f2*d}onvY$7v$9;klX9;mg-}9$X^r# zasq@Xzo@P%uK-WA-so#kI(cygfvP|i>5%GX^vE@YjtB})N;SlIh9_&?>0%eCupW_6 zYl*v)0m`kH)rP?9Ri>m203xpiUR$7vLtt3AyDP(#i0c_ zezsar#i+0_X5_;YtRp=1{?NEcYxgp@?)i(WVxKE@?fq>0K%$WqMyV2pr~ppmxkFYX z$=gGE2J(SL13J~Z=)G0rq)kCie4w(Alb1Ue$e#)nv;iK!x$6DAT;2I^13F{}y7sib z5U2@oC+ppPJ@fo?IE$yBKK-K#5~o%B1EVt1DLhchb`A0maOIBWbnppIc-GI7t{qrBFl>ba+#Pe(6$rS>Z z)L`&pCOx#1Is*{0asMnN6u|?ziRr?XgPouA?=?k-V#n-TwZTez8QK zTOAx+olEq5pK;e8d$``0db!2NyOHa@^$$OGeOv~uY+Aj#sgg23fZAK12#4@IFXrV2 zcrWiE(}3UF7m@{bdJE%a)aDe>`By3nhZz9)#& z>41RKB((R^hK;?|u@;MugTD91hNZm|#}clpig069is$H$n}^UxCZ0TS;N(QoIAk-? zJoo&pS^l~J8)+?FisT-h5#{*~{+=hD(ZsC1 zRrM$rZ_jjR1~VdC?)6x6GoYREmqF0*cDE#Xp-^7E2R|1wr|&#Zzx^OZ`B=`Nq`6M5 zA3D!T8kF;xGUWsM?fIS4`%Vzb&#zcu z&&i?tr#1GRb;8y4#H`CbVq<&!7pkGUF}t529VbknFFmn)%y$~icXUT)|Nfawenoq> z)6-v2(_fLyUz3Hs+_wJ5Lu|c&XRqJe)woA)M|p7#%m`n1 zHy0N-ci#~)r3;5;Wexl11SD-*|K8>TF;(ZJUQ#e>#fniGn?jwFmARYWTi-46ptJMA z$Zm9Zw;40Kp^e~+OV2rQ!Xd-}hQfmo@n+CkIc6uv>oVgAj5}d4Wh1i<(^omTTLOfG zZ@)y|cSm5Dpc3FRZ$xx0h74OuL5!ykejp6HL$>|vgtB8}9piZO3kxHBI?$m<$Ef4e zkCvuHWWPVoF+ngN>zy2tbxa7M*FK`34Lw5Npg+-_%SLW>9M_|ktp0&?{_HwQt1TVv z@Wk+C`~#mKr5|L6#-8gq?5D;Tf7Yd*$?~BqPtteNLV4rGwBckzGvP{gn>I-=bfHH~ zVUe$-5B>2x;mbVtQt4AV@aIRz`#4VBNE{Xn>1s^Zrxn$|*EhNQ(0z5CJ9(yumkdEO zfXom}&uzpSk~7AmC(t;V&K|7SByk(*tw;M!Y9&BSOI>-qvSR)#al(c6dz9=R83CUU z1^Zx8o|-#v2c>v`dvAO;xWYM!{=DB_7@uMZ?rr!yxs3CClfL${VbQQdBv;*fb;Sw$ z1Kyk*cS}*ZwEa249y|xR67H;<@y;g+!k+euO2+n0zPPQ@N|$r3Q|&LHw0_3;EZ*5( zF5bX+N414JOE&T;g4bV_Zjp?;?1ggk4q2PqAMhF-apchRtp1#04V}ctp#CoG4Pe1! zQY_rPA>ZpnPz>Z{P@YD?$Iu>o{QWIMjx0R-Y)EwfF(om+WEVLM=a@b7P2vRW+)?Ki z)#dd~4$4TgzE7sNmCdoXagyhXP>rBsMH|gtyhhM)dn`2B%R(-CS%CIDi3^{j@)W+4 z-ouaebMC>1qy=&rJ#p$clo7>pU>jk)fuE;= z2UzHC%K%T$0qkQTz3tmO= z{JG0D5~{&y(n!A+)(NjGn61|{6b)t2!287$#0lnvHUzzC3|OyZI)OZdSs1-R1N0LZ zHkq=5AVmyLjR7bvEL;)%OjzgIG$V?hP4DF9xWM0kfumcebb2;wMw9E#o$L(hbmtk; z$##Zo#AQ-(RMQN0*^H(r?(kigrQAM4FSMOu@4#s6aiLYEg9l|Jdkd9Zd%OqKFL~`; zt~=fW@57joS*|(W0o$zpI=S9>18jT369)D(U_3FeQ?{_EW4Xu}=9BCRXMovE14|lK zM{(W^&orU6(3NkAp&vi!GvD8TzR!d7T1*S?S|}eShPI<5SUx&7A>p+Q`mwL6w#Kcd z&g4t4WxSS=|$fiQoI-|>Hv>`Jneh8(s z+wYlURRY)h!Kl(Q($yGCe~lY-G)Cuh{dIlbReFQ$lLBb;tgiG^AJ4(X+6=PotXq() zW6n78J9+g}jb?C7NF{YgOus4GSH;f{|A5XTiv1-`t>S>JcgR$!M=E)jb5N=uS>Yab{mt@>$>F z2xMQ5APY4CDl)3|7jj~yvGWNw77$EEM~gqH9AHV)z)zcXJ9AQIuF6C}#v62!g?Jg^ znX54&Cn!QYq>i5cAa&x6h_uwCC8`G zOZ-uKbm*A$EMY_)2j$y^yhl?ya+9S=$6Bo9C4zr1b3#YymWepmIqbpN8EKlx--S5>#}4|UX(b=8{dO1i5`2VJZi z_m5wMjM)`DDy}@mSy>^tBxS^n44z%5b92WOe-E7)u}1ngy#N3l#OWAPw4jsF6!BlY z!RN)3sP)F2;!}J7d8K>KoLLR$>*Lq1{fSl*|Gt)NeZ=1On7x=|8Sp}|Wbw~Q``uaR zi^Xn556$%&B$Bb#Snc_LUhlcpgMu1k`}gu7Byzw|c}?fuc8+0DAAe2lpdL2ox*LE! z8j1;+Ay$Zt_`T${lYj9Z?@jFgJ~2clsfw4F0{G}VU~Nmc2;c$v!j7Lx2RNV6vT z&>&Z>i%O2oxR<{e{{C&?s>g?F|9Q2!WU}t(#nL~nCAYMyj&>!-p_|>!_x`4h$-k)1 zKjm&%XGx*!#FvE+5Fg@$NX{fhK0L*sA$sygmU#)9oNYSw#9T@+W3m-6-l#Pb(U@rA z?Gr5KSBuVQn^=>Rj9QpYcsLlaJPug^zFVaEl+IQ8a=idhLw>3ZsToYVHI?j#ZDR5V z;jQ9~)E*L@^G+6bm?Kv^<^K?o|FN^``Z=UeX*GJgjqT^;L>@b?N(sB+%Qex#FY2qv zb>;VdbYp;v5JwJW`RkNdprNh9GDsB7>^{LAR{jd5 z3yF^?_C1@d@>S9mNE}HgM%3;<(b>qP2oV?~g$@ej)NqvBAp)Kk-DKYjIk=8}2_6Um zxGf_v8#IIjEo|BMhzR=oiwLmmw~Gi43TdZxm$Zv32iRhTwERL)pT2>mG&jNTc&N!q z!@V#zb&!H~5&%Ceo6qMV^ zCR$kPwHv^e71B%jSMv($ZybmNZhVLmy0S7DYME3-u)SV=yXEwbkP}2SADg00LbSF98-FAuhB7#zV zpP&nLr_!72eB3XAoG1+>M?%KtZTX7ywvHU1SoAsFc`B6~%aJ`PneP}g&O5nYIKVlJ zt&i(mhW1pe$%8wEp4Ys&EV^j7S1CDqZ-deb20MEDq5OpyUwX>dS%@U_Q++*^oumNE zm})ZaE%IyKQo8ga$*5}m$O2@M;e`(%JRzARE1gJmc#dv=oJyyphgFeuQ+U5EyRt*( zuyz&N+tmruZnW(E!dlcIHz~gFYEx#XlQYsl>X(7-f)Fj8C_8$vHFG%NGKYK%$C?Z} z9;1v3IDX>0R{DZA(I)8&&X3F_GdVvRv;KvX8^7OcK6*>B?)a$<6F%r_KB2f(KWpaI z*Yh99nQXl@bmpuNU(f%^-XQjJSh?)>+r{zTH|gn{Uv;LJTS>-^nRT5>tW@#zhc9ky zT#z}IGd}&n$&I53U|^yDAY62l>J#B(*j&RwH#V0hL3ch3_-PfsQ757{J%B-x) z{+aZu@ZQaqVe}={nggxlgbwFhwgn0!T2}Er`%kN^oLa@+Uv-~n8vp*O|Lyst(*AsY z?0>0<@>^R)tQXrWB;L0^P`CfC9d6g?_SS!EnFOWwWr^_2YG)uyh0Puzd*F5s%SjjunyC$qo)kKgomKL)p#A$Z*T26V@L-}xVO z?LU3@d&g5-8`wt|&+LiqSlFTRENQqOPe&w{&A!U)fBzls`tsoX{K4!4w)|fZt!>v0 zw%NMxtP4i?U(GOg)&|%}|D&2&z5jI`?eB!T%68cHcDt*dvI8bF+rdop=a!-u{`#ry zEy31C{-$5#dz7h2{EfS5hW=EvLT zAfK|c@NmKvl9f}!u7Ph{cM@01SbSs$aQfVV(+BEm!|7AJb%Xdc9axIJj0Y>Ly1I!77}@)K(U`15k(XFu2Z%8aSaU^{S7blvY1^>+A93 zfBEHcuJ-Y;)R?06(r)_B^zO?)A*v_2-m6L8nb)Ow@#ML4=Y`fUcz&C3t}tq%MD`qG zFMr4L?)$X+Jm8)Jp_BKddmLVZ9Wfo;wTq$$iuFYLR}(_w!8<}=YhwO~usXprmH~!C zd0`HQdJA*9flby8E<_fSXd-qXJm&06OjsNf9>bt;eF2E?}Lz!hYRv>|ZtU{+!cdjf)aPJHc$azp(-2(KLI z|Gq!U_3-ff8rtP^rHg&*NSE5Y{nJmjQs?*rSEasB>l{3RtZksx&fF{HKp&cizJ!fm z#ccdCIvT)p!Vm|KJWWbHL(gT>4s*$5kh)lLHyL@8LeRFY0b=m+Z`A_*_MM^);G=Ep$FDt7b`_M_NoXE`C@^)3ZR)WYdPyB7WfGhtlVqN zX^HtH*-qG#ap)}w<<`M~$X2ikbDPrfva_}b=tP)znS@Nj#V>~!49JK~b4;6CZ(27S zG0&gPUS}FQri(f)GGjo&@Ey~>dg^_t!_=nG9^?!;7uKz5n$+RFr@o%H<9N48Wt%n< zkU?Ebe%a*xWdzIYV&2n*)zMzzSzN(yzl*j=j6HLQQKOURQNM zUTJ2ZNI^6}5BT~GMQ)Y}!0Vibc3_$4 z-pkd^y*J&jR&DE%6%x`=a4U9eY!7X!mdmEkKJDxuOr~qHvNU9Ru)p)uE%_?-f`W#S zkgOh5=i1xd&DBf)b5-|u|9qwL588atdLtqrAfm7k_UPt00OV)}_8YeNhx0P)R&a3< zoY^liu$$vbw}`-(U+zraps_8kq{&66;S1vYYk`S=r4eo`9gFh< zxrjJ!MP18)`&~#1xJ^=wpsWb!&>^6p^;_;uX-GnXd`ytH(J#EB7cil`fw`jt*MKD) z;}K{($O@@|@h2S7bRHJqfGOB&p#i2eWUbd?McR`s9VhBkBmbZ?KX-qEo*618$Lk3> zc7=qK4&Rd^`sir-antxm%)Ep7k?~C}I}H5;2lB_ByV}xRSddR2d%@deBxUaqBmL02 zTB00>Pf=8qbcEwxbu8AYVY`y~*@wy;;U$chB33imJzOusmc{*mOD*Zy?Wvf!zc|i`^blZb4w0_k zeoMM`pcmhNpI#)%@4ruy>5&Pgr4!g^*gq)ft_N^?P*{7xw@bYEzOBFs(AYcBQ4Z^c zeOTu%Lc3JJ8<^2!yR-^#Q_Sz82COng6H7p(Y~nD1S=f3TSR-gN>{`%TEE0f4zOY@) zB#5t(on0{cO`1$%L~OGL=$dcl#>eNf4+-txBYNhLq@*D;qkHs!{otjt+?;7!Czm9S zi|{Z+C+B+m`FZCiM;kmM#wF&>*g7pIx9rkE=@GLz2(V<`GBUc+huOD~X)7+5s@?OC zt@E&+N=V?dJk}k{ckkK%Dd&U;eL?U$Mw9cij*ibdn~d)S7w94roS*97lT6*599$w< zb80nom8Lcazhs04j#CQQFly-&s!xS)AfZJfKTVn|z@M((KSV3K_cucWV zageR-V{H^@W{A_2AzV_DVaxXbH^cy7qXPg=h?ZbeDJD%Bu!Yky-ztR2v1u0*4j@pl z&sI-^;b*MEF~(!r2*Xk4C})NQBLJmD`R-)Ov} z7Xj;ti_k4>;HpA(UWuwtX>;Z9Db44m46mlI9yv;42Qrep)&zV4BJ^E`}QGD(p2-KGb9eFsk=A3Hgv zj_Xzb)L~cGBioi=8vS75mOcjSwQMRav>a2nmK2YK~kjZaYH!KWMNE_;0P zL}?ER%=MwyffM6Ai9<-BW8gcNb#y+NcMJjAu z+qYssIelhG*Qa}H=^B#YpHtvXU*pIL=b7ufkKg%fMtOM#KEx-IH${?kM;|X|U5Ly> zJJEMl`NB}p%Q5WBy0tBCOk@E#u-&33kWG$>h7g_6vn=bqY#L)3RWW$%!w+)-I-3nf z<}(EL?_puNr$jUC=Qsy~2{i*)5x@Z;3J(S(hK5D>H6(|JCs)RK22?-XH`lx~CT6EOx9`K%0iJP{ z>`a3n;#jx+dSFy#aShRR?o7X}DXttP{W9y+vL_ZjH;Bw1S7+r=EqY?v zsadADqQtpXfr0#MfxZTwSN9n*vV219@#=<#>f^B!%0~|AgVfgs-@w=Sz`&}xiA8ZH z#wP?tHN7l8CR~P>P#`S%Y~=&|Q!ruu+87=TQ7TxE40k+y-^^OZ5}-37Q5W+08ZA)u zSW*LHGE4o4o>8!XdnjnkV-CBRQkV~%Qhbbl7>leayROqqbwU~0c$SQ|_RU&9rDI;F zhjxw`za^)`0y4Je>gwtA2P1Ls6STT(tCn0+4Ig`e^En^(>d*8jSyi2spBU7aOFtOB zU!q5N-|_!3f0dtZ(1`^qT_h*a1@!H&HNPML^l|#2U$x?v^w3%93Vms3rzi6^aB(M$ z(?bg#y$qp+G_5IpMl;b^Q#Q|h&He4Asbuh)l+};D#@d2c?4?hueh@yxmWcTTm^$z~ zfYz;r=Yi@6bITaB(C_AdRF3l2GJbv&*T2acxDXJ!+pwwNi3fdJ>~;HoxG)f8WHIn4 zM|FkWzHA@6{~@`6TKO*AZ{5TSlKmiVS!6#5N65Zz3|lo!9(zm+BL+vr5%EmS!nl*! zGOtp`WM{{)5C7ARVE#wG$a=(jj4uok3P?~$baY4%DG-ij_shnAI#qS~<|D$cmU2=X z$4yeH5bWshW5S})!!dYw=JP$8AE#2oTF2HQ39r{8oQm+{=(R=kgWh9$A|Fcz35wTf%JqQ0jA6P|iHa8QoYM>G+-RQg-XeaA(2 z2yfpxRMWgXAdp-AP{^UN%bTfl#juKD^r_{|?MI0(Zr?RuL>R|u6%*m zwmIk1<;{X#v*2n{!|Z1Af@9S7T71ay=H<7K%l+3=cv{s7v3AV*T*%&4&d7d852DNL z5N7sQwL@j&J;8ff_%iDD@6u$gf%P^FHIN^X%RB^S%z(*WP|P`qQ4~<&FEp zHeV)#pPWYUpH3w++m7+>2dH|+Gj8p@Hh`)ZA8daw>0NN>=4o|)e>^E@y=R{EbQjqd z=w0i6ntmsrVPl%vH_j@3(2p!npZs2TzZ9dxJ3EiP1+#0sWG6eB+HO}GJ;K_5c{5kI ztBts9B-LIuG`V~cd-kobl#d9T;nT#{xNghZc%sGrRJ{lilF6q1$smn3swm%?u(OLy z870^%X9Qs@ojh*4gmwF>n(~^Na@Wtq)=JjrwhGwae}zz`a)+J zh+09^0|Q+qW-TLZ{;panA8BuoL#$FId(+6|ysUutJX*`@xXNfG56Cs9Yj0OqZZG~N&>_QIg4|)lu7!BcSV*WJ{COBhY1747H*ueT zYHKZ4yXKab=Cfx>hqgB2JGat}YW%XHa)qzW*6;zcl#(7skVW4$ot{r60z`u=;^225+e03fqt48XRal2|j+i>^mt=ad&BV z6@aD&t#(kX<`?q+X{!_19OG4xqwXTkh0>uz68qGiUbN^m`*4M}1JWVe{%OWf6pQ5f zK&uFn=LB0#?qHoL7w`J_ykGbOUCa2qjnd^U!qxl@&*utp>5w5dZU`1nkNho<2iAt7 zQrxUe#L8O)tV?a}1+&HNp{nqLXS1vy-`Ng#(u26!MuIiAAKTMw>_2TJVQr^Mxso_b zJ;`_NV;HxR@2Dr}MXq$)UGgua5wxe{3eYISTgPk-PJ##>!)-D(WP)P2s^skb`Sh(>*^vJf40(-bQny=_2JW6+!!_<9~og1uNpt6y6ZU9(8Hs3b@yj(udPjx*$3lASAC0 zPfuF=c)Tuwc#IxRe@M{9KYlXb{PWLdNS!9{zPr3sw3*I1Phz+fHxI8}eZ5UV_PK?B z3H{>CQ0Qfu2ecy#H+M0qvy2VY$n6Q4#omH#0tz*g^R}*FB8jcX(HM&Jv|d>$9Amx+ z48%kES!Z3u)-iu8kuiTO@OJI z%a%?`633IJbSxc<`o4?$ek&}-h*v;v6yXrvUL?d|NWl;)F_ZumZcu(pmk?E7+H(6j zEq&o;yp)WkY-5`3yRu_)sMC^xxJEZ6FyS5V9Q13 zs91|4NO_2919=a%2DovgurDlSPa~fl1<2{6M}I@c?%3b9BJl+F=ytN0jr5;J-yxB#&C2Kl{1bRbd9DCf7X!v*x!+ju1M^cxo;Zd|$;^kc z*&~sEV$~G-`qb4A4p}y>rGkD>v=uE&YbX6QZe0Ht`mwJGOM2zymlB5_Iqu5O={Mi? zrxLaH|6bC&=k{og+Z-QmWM7OP&|gZUN+Gu|l=uPh122>2LOq%&H&>2Y?bkBhZ0+R0DK)#RXMv!7@6t{vN#s(?DA#MfvMS3ZV>nMLs<2q(Z z=eYDN=_NMaQ7#1Q7UeajV?+=}5psdbmexV!JncIHm~=-bAkXCaY0Bi-*3HVA*w%~p z-p6RmULR!(#?Fojw1^f>AUmj8xm8)ydNCGXn`4#9)6ie9&^5|y{0(^Z$ZrBC9{hR9 z*o?>yp;2Cww$nWR2F)c`AD0|R_B5DD9^h|S9lj?Ia8%;R19S~rhcM8g;x&~KT+R)B z9|)^=BqZe&aIGAy$aKf6-QlGLqnDnTl8_ZaFzQVLuQ!_ExFKi--h^;|!Dv$PSUF?| zoCy2YLeYU?8vz9t-UOp#92OR?NylhCt(T5*1!O&0&lSw8c}5_9;29s%>wtW9@85_1 z{9+dpxJ8;ukJESEh@V?JJ@}m#%-~tgmGFszrVGgWW+N$kC6j(ZzsMwUF5`&v;x2Tz z_2j5IE3?itDT&Ir!3^JlJ02q)^F2AYBLz%f(NZq$V1+j7l?$r)eMZ|FB)XCxPzbGIFD zI|fqMw;hu{O*fTA=Vke-D#ai=s?3yLn8$ha4iYO>bb6)Aw|5ZNp)fDH%tU>~px(YJ z_vpOBbkn^}OY1)*Gv=gbWOPbeyEds)Mn>u!I^)9+={?7gf90p%RY4;M(_Pi|6B>sF zRrSsoEO`bsPN;vYzB;H;%FY-(GN_6yn9vwhT~7~<9GuZx_9;^;is=gRFy>Qczp&{X zpm!cbj}!FLhvO$LK$eP`C!m{08f zv>J?-07xvX$8%s8=mv{ojbbd~cjhSO0xM`9P)Q-pAZRiK1}9Cj5ptnk>BS@Cw#Lkm zMm1(F%uuK#GFl4|_$^^XK59D$ni=@2l0k&dLJwrcle&v;BAhsJWoH})Z7);&)DRX^;!#2=gUcf(O2T~tB zeflV}CH&zQwa(l58{$|GA2*U>;jT*_E4ljq9JFkj`8D@z}LeCd@dOG)0cE2fK! z=g(jC>Z^;`H$D3#{?Tg#vjz+d3L2=Kb_3qDHx%T_<=rfnZp%s8{Nm)~;`#KMcLKdA zjjBW-jT5yxllPl)V`Foh7IaQb?2Ne+ViJ{r55}nk{N8l*r8L0VoA9Cwm0W{~Qgo+Q z$JJ>ug!c(<8krOtnl#e(T^1D>5M5Rl9f0rd_^0*Mnmj%EjyG7pLDFdNw@^sLjKk$C zie>z@en7RU2d>R{^xX{f++tv@Jf_%>T#08CXBFoZF9C1mK0T>v?^}EKrI_yMTVxnV z52M@LdpMYNu-y0fYU^rjGURC1(^_^Cxzn*D*bmwEY~60(zJn0p5%CaeptZ@M^=qwcz>|< ze-{5Y20UaOXmJ9gIZ#9jW&xIIq>b9_j0D_Y!zKs~nsafpG|vjVrM4#TRY7;mM$Z1F{AVR0g$ihF%#Y zI-?i$cX1@qg2zX;-j>;fld)O88#}DnEBX5%Kfj>4v9Tn9etEvR87XIo zZ}a){&BRyw&*0;m)?Vy88dphs!XtgnCbrIK?~WIUq1Wbdq|5grfY^lhrPFQjR2nqM}46dK1T^T-4Ph3KaEr7O(jS6vg#p z6s07^bc5=!5D1?^W>3$@s&yC5Iu(OU1G+T^^l~{LE}E zQeI4ye=!(UhoxevSaEA&(h@T2vo-t2DsI(wiQB&R(J6-yPkD6h_P8!DECGV`ZC( zur^876v}o|;;<5s%wRVe>ZnO?Niji=O*W+S(M@W>Y*BeT>6qWx#jXAAD`J92voWkRKkN4Gj^gZ`;!GXqe zI?EIM6WvoEHG41b)6v&=Oh_*B4TSg3aCHrFDw>}=oR29=ni!kro)9`X?ZKfzC86-Sv0ooQy;H+< zl}aUc@K8HC8nh}uca2YOR;7c3OI~CVaV9A)>5X#z|GCa#krQmt38KkRHg2brB0nYILB6SO`JniPrnHp-$t=%&E#rrQIhD2veq#V6(qxdYG=>;O67w5FVz9EbST^o~rb5 zcIn+CTkqYet~`wkOi3Hr^~Xhv>NBf`JS>_tp{@>&f&S<{kA&C>6FodiVq&5T3R1a) zqxVXcN7d=`=~G-*r`XsK&J>l?JDYUjlWRu=gVbTgRnuR^KZN!680}E3C!{DcA=CH7 zTu=l2z47oWVd$Ta+Pz9%fK+%%aYgYl#>X#;R-#1AwT=Xl4kQ5>e0iiR5cmdS)Uf4Z zco3)zZ5!IQjrLRRN7^^qPyKo0pIr0jyZ-+@@=xmAeogyEd!5^lv~L*N+ECn+KHHgx zc=xpJcZTgpqId01v>zQ{`{i!jz5icMbD!HUAA0v~LX~}g%-zTTx7WAdZ!dSm-H-o^ z(`_$t_f7VrZOx;6Ewz7Y%t)tj`wxA~zCohzJ<@)P>uWz{ooe4`Kk`qm`SV@vx3`4d zTVVUC|Es(HT+TnKbNe;z8|@WqKhnNoe+MSl*U$~(X5l075D!=eg27dyWodwU2viAbO58IsI)nPWaY&Jx)sqLo9E*%>C8%STd@1@?=5 zqkTURg#kq+iQGrxkWph;c_>3(@)GSgx8*hphJip{y%!gSMunxN(KTslp*mgYytGCV zZT1Q?Mh06?Hm2ypxb7*9f0!FXTd$eT`ViV`Hm8Nrw^DHCv#?MvONub|PoheTudRT2 z=2XwnIk+KIS&@{O2Px%Za$NZmv3&Q& zP<={tqs1#!*BIiJ`hIX!SYzw{Kg%~LVV?cDk_B4d*&`5S(0M3i#nl+HADUMZaaIXNBl`pDgMLZ zQcwD_iIf#(q)WEDhuePIm=M+8y?@VX)%yQ8q#Q|^JGkiVE4kzTM#Ay34`ou)Ch4T5 zC;g@_eJ1^00VSN!yg_suceKxBEq%^@+r1p2ou~fAd4A3Rorps(c%17)M|{+izjR*- zhf|D3PWC;5GbDRQa33Vg?ib?c@IA6GgRRk?~UzE({?5Ir)l}QI|F4$@rcoBqn7PA01 zT8PtF5OCzg`C;BShk1vEd8;1v4x4oIW8sEID%1G*ux}0b4BNu@ENQ*8o~x%VZCB#1 zCsn~WKjz)Q{}Z>rp=^~BrhzXA#o=W*fvp)B84;Ii&rqy z>eIx3)4EpPKl%WJ%F@nB9K$oq!(^#EQI{M|?rbSMF7_@S|Hq-*az@i zEJp)VXW=r78H&wn=yJH9YIO3dE?c<(m>N^P#AzEQng%Q?PYR+ppDC%NQe*cA{O1G| z3?9-Yz1N2E5v$c$xSLAUbvhjCx=0#K=WOh`oO@{E7X3TT-7ak1YKX1ozR^VX%dZ;M zHR17+@mnG|^0stlKlg)mm!WS#_3$oJrAeggGt!6SdNcYYioSG{xI?(kEck+mWdz`Q zS@0KTG#lXsD(*Pgx)o-Rehxd=(dG;QMY$8d&&WKT^bM^)xKG)SJ||t%5ChleEwVqG zp1IIDjjybuGg;Zr@Y8=-+^({XuTa?Ya^?A@23F+9uF{TIkl06aBc{*1NVhz z5@Fs+vb&Vos8ec@+&vUakr*ljF6qp*Je{xv?ZBhM2x4su3_6v32_Q?|4M`+C%mgP? z!Hm-MELM;G>E$&<;P`J3=;N%mZc8$B2;^V(j?G3tctlyISfu^tDds4RCPb4JPaL+8 z1^!#-v2?2oH(9gkkct3LFaHWjTD)P?LZF6!ey%uj-y&%qH@R~e(VpWRYUt=OjXlYH z(&Uq}G-2sX>ZT<>JIUW?t#z*aMyU>m`JqWdbT0WR!q7blxxQcQIZEA89q2Q#Xdo%a zmro#eNA-HP<7YQFY}m5(;9}k-CH#3q%+@W7a~3~ME7LlEx#-Z=isCQP;7@e@DmJ&v z#otE$r?kBE7zr}aPqgy)qnwvsx(a zZF$l1KzalTKlt;n2Y&gLF324ADgA&LKOF|T0e&gnDQ*-#1xN8lbo^Z_h2RV5e3m5z z0ba1I$Z;EtVVT8^w?Qdv7#G&s-(Qp&)yh@;Hz&!PtE~EyzyJOsJqm`k5-W9gz+p&V zkfN3Hi5GwW{Ura*Dk=5%lUDtzmGb>BDg@$6H>-XTtl(=Sk&$ML;wZCbiQr`68s-iF zcURdh0M27*NDa=&ElRL3iH621Jvae~5-XSB@DQF-u#0Tv_>CoSVMp7eClH3h`Xh;X zw&M?u?{ZPtLSe-04xvOgRl_SjROPOh-GaS5y^<1noRh^P6pj>RM@H>J0yzA-Ylen8ZUQ!6xf2W9amm#A? z=MEiRM9(o}NO~tSdNct{g z6Ev|J|1zc0+QXB4>FFkRE>=5fsZQhM(4}19-tSj9MD%h^$3agTWAe@Rca3*T1bqTK zx}82DAK&Q*z~=Hl)8XlsuJ=-#^fu{Bcd)YN(?#MWl@^jgDkut^j#(7pFwBGlAX);$ z5rF#!#8l{#3~Y>gX_(sy7RCuWnmrC-%$PEJrO?aH0dpUp*%+@QmLj56xz(i6m1~RQ z$t>S-A-d# z=t>(;_M@Z8lIZx8{H-~3;6u_rRoL;qK5Y_TP`N;=@t4QweIytXsxd*H z01jJ{MxWwHye#4if!3Y=(b4|aorqefU|W1epfva3Ud(F_d!*?H_tG2m#vZOPEXcYp zAb=kl6c!f54-E*gt_wm9T}Skwmq}cY5$|)qjOan)=;aY`vCMjPko79*N!}d9hhp3Ik8U}B zTp5o^_`#DWrJqioq=&FTz0dZ6%UJt!Y_SYX;?zSDgI_Iki$ZVUBLgWiFh%);W6VKI zcAHYh55lvyZ*PCvASrY^>A9WmKc$s`l5a%II$yN66xuc&kUH}>?&U3R~@{5Y{vtDxR zt*Y;RwPiQAQwa6;Ybk_oebmo8e`{+;ggYo=(I;=9Pws3hKeUzUuUm_?8Ysu!VnCvt zHfRu6zJ0s2%icfuY3;L}TfbeZ$Jh4zw%PIHd)KpJ!yf&W5nFXRtC_$L4>XDh(RD@ z{6Z2@wcA*;bQ1YB@pnh}G^y8w3BB+cj$=z}j69Ki>_^B?zx=}D=?l@<$J+avjS87I zZ;u65Cyj`vwvP*8g{?=qh;i2V52c;r1nCMpq8w-^f2%?DKK2+01r#2A%nTDytg#6gwOp&^pjqsJ*8xFo$9zbCDu1tKUE-F z`(5Bv=pbFh+I&CZ67H@5s)m@Nuq2_4u-tiP5bvFVlKcS@4jAMPvo@ulGEQgVS5dy^NJRre=)T=`A^>SZ)X zI>WARyVG`y&DV&`rsq`Cgs7D)99=8P23YIIMr14BA$WzFCS%aB}yJ}c< ze*U0A`T5mW@9F^s1%n1F=g@`HZ-|sk|MdwsC5cTZwRR^Yo+PLlguSP^eZsLuR!-A_|O%|kI&l25`xsQwjID? zoS@umiNTK`TeA~KkSz+BW9W80LLV?~pL?IF{rKWeBZ#>dK-E7&;)eKMw58Wuq)*jq zx{ki{^INN{crQ9w8cep(!5k)0ZmTqC(q6br`oZaL+0C2lZxX)|;O6+cKHA`T^_;}es} zN~xTVpyuF9aL}qfZJoD-|}A858kS;;C#_ABPTsE$&-lEf@1#Q%@DG(U!y3czbj`5Yu#0394f{uM$_kDi&=_UOvCyL{_bM90s;^dsnCOF1>f!p ztuX+BJ>{*pXo`?Iu5|~QwR0z#HG%Ft4R@7_Q=|_WcZqh4h#)UrQu+Z|W{0)!V{}1W z9GqCz(Wgnp0n&%=!ZSHVFx@A9EDS@h*f=iZ0{CD)X6)c&dif zEB~CeM8!WVJx^BA5v)Bq;9PwqK9Ag;-XL*sK-`GIk77~?n=V)^2|V!Nhzt;JHt9Xz zNaxac{LLH5H+=QwhOfTlM@X?WdBwKXUrIN)5Hf^rl0M>8N!&0Ju<`uMo9HLfqteS{ zT+eaidZJkrkJBH;fx<4i#_VbA&;Bb8JVd8U2k7+Y$SnSOGK>DG1Qs*RZr!JBC8uZ( z>dPyx-?}7v3EeR^JQx?e4-yvx){+B3l*8Ao8#Zj+n&I5^wQCw0)~vEVy>8Q`wQGg$ zYu;SF`pq@g>1!{qdGxInt6yKYcG$4BC=Bh<;a0IKM99NDnt@V@Q;s7>m2Zrs#0qL=i zu5Q_K^`p(iI;UY@!~SkwR;yRH{n(td>fQsi<3}Xp>Q#E?Bh;<&RJ}wOei;5- zH`bDWuASzN`iYOw(f3wx6P+sjnz5~iT|$G+s%YUwrZM5FauRUMoaO;jXB(<1K!c&ax+g|$P1YJ)6JiIczA0=3qlpQ zwmz3J`@K5|4Qr1)M%P|WKj>3EwDm$Fu z9QswO_cEj;;zBR85n~>w<&M|85~yTyUwdf*ER~W3jD6YiVG!rl<&;ct2~TT|R7pRn z)t!cN4cjNtXn0O_b{MqIQ+50q>C5Mkq|Z9H&XK71jR^2mj$5L7+PCZ2xMN)I7cJ4B z6i(RGUsEW$^3#_#jhyB@P}iNl9Z5(Px1qDMlV(aYL25~tF6#$wsqv>vxPAM`p+n@Q zwL4uB9LIg@%qs_|zmgu*gx1AqBRHPsY}!Ol_;)CAt#m^tvslt);yz$yImotqq*wrJ z)DSKF)*=W(gTqkvP}SxUgn&t-s2BG5rP&nd3Pk zk!(?NF2iPk7Nc$*7vB~_Acc8D`VL0_!0$vfa6IN4tvn^5k&~EU%}nVq>51ao4jmtE zNx58jb#WGf%O>|~{J=@lOhE0^**`4#I)MD3jHIu>2`#rrPdIl%n4msc_>qr9hKKkcH8J*mq2SnC{FL16n~`9=hQKbmMG#^(}rL zztH*>A7)is-{B+Q7dFL5@;zKHEo`2yaiEf zGI!7mXcTx=0Z9SU0HY=5h>C%&zk-6g6qNQ4n9>iIY|0k<(JV*#gPhc_o8rPPB?L=2hDytST5M;X|Qgh z%Re=4@8;;3Q#q`JED1?-@lysI56|vK=eY;D`Umx^5r*O2h$6|!o&LUG3Rt!8C$Q z)?P*|`iRXpMvYD;Q{eq{rbr47c1DR)LT6h98zOG>_ zactH~GT?wlYv8|}*7VHGnfwD|CvF%$k}Q&n#u=RrHRiC~An%xgG?LW6Lbp6%8a<=B zE}MTXsf5P7!4(L<%-A<`Rz<~Z>(#LvCX9W2lvUNwe+(%b{mG>8k{;Y%MD7fXsxigR z**dnC8aYMRTSR(Db z1~T2R?+C@;-N)aXy5HEpBLOk9kYEo) zDHp=L$nl55pV$kqUPz7=p$ISy@pdBqouFTmV|I^a8_ItN2e~g(!?~AVA%AyR`<{j079L{XvWbH%6v#7$`hGxX;DD1!i75)UASf+N zrWbZJwUfzetye>IIQZmDQhFc-UODm$ym%_y&*)66CPnzU7uTS{_pX4uK|UuFosW$# zmI+f|804xKXjB7-dJD759t2k$dO1>OOHr0R;D;&Ojj!ZS9~|?g1cKoV5BlcLW~XU# z*TxPh_pv*K)UH|Mw&LG0I06hTo1#pJJo?|9PeHu`81X?dhC{wB#FMR~9gs#H2EIfF3wQ$_ng|j9- z_{V3n{L@|=b1Khyhn?mh(&ks@;&kp#{)=TZkORF1i5i!VpEAW10ney|^)d!1e*lT3nNBHU^h1s@c|MSTJ-6 zHAgHt^0sBq>0{^c72H0fA)+Z}>gK^?+6LF5qdp>gZ^Sz1%UaW1&&B!8r312Ouq6*uy@}}o=rFrdx zN3_90C4IEcQz*<6Z1*tikNZaUP%{xdd9{X266t#kVnK=I^U3rinwb=Z{Ig@=i>F)- zUE69Fd5qs!ljPR23}!38aq;d(TiQPc>CPQHO&7j(R4n1zmJH2{etpc~sda;2Zi;A_ zF%|v77VAsrR%CT1i`@)mQL*iQk>bMYjV367lxY-RuIJ2;e{?ZKm=uZp#6GZIcZ!D5$leCjs0LyxotZ2opzMAZA6$Zs`RS^eGx$d-VqQcDc`$rh#?yK3fzlF$SbN zh)vE?#xB6YDXKxfI)3T-d9xBGm89$9-H>;9XrVC_dyKE!Ft%~+xUp**##5V&mE7^n zjM~BJ^@Eeg=cTWo_`6$xLR{Lnymv`YVSG`htw8RY``*0W>!uDHYVT$~)VTsr#v{yW zp($v2=jlcCl8iZcpJbGqh?Q!RS4>>k_I8v+tdWT+$XP;-ZmL+pu=JYFC3P>yd$0^` zC-&9F%xVbwUxTa7Enk6T}dq9#wim{XgVUY}< zUkTQ*+aaP64DJMX64n(gx_&;wi*E4@Y%q}L3yd1329#i81Tuk~!N>c+Hp7GN2$TvT z%n{@|f=Paj_%IgZ-+zonC^%qLfI+Ttpjc7GfTBW;MyX(&oV_IO)c2cp!xh!@{qN(7 zvZ!2>r@O)-P;EB?v3{s7Fqo1e_rvIC=F$M=``n#}HeWMLuJ=Hd`EFgFoAXGQ2?N}e zF4-+jIxHYH}?tVj65cx8QE|WR?+gZ&7xzE+64$+d+09 zgpLq(4mMPfR*5Hpgt-v(WDqTQ7Q|-;5aP6|!Uq16(aS~#=aRn!9}X_zk9Zq0Nm?*C zvGZM1D|Ja5J!`2nQgY+f4g2JJ4`+9zx#%q|AL+l!MLN8#)P!2xy)^4*E=BbK_(b8A z@S?7%C8b4^s7SP$)a!WgQ(lBuW*eH!jPZ(C;?;CC6tJfOFTJwiC7nLQTZi;i#u?gu z{}e~df$~98vD@ntlp42yS;d(M!(AWUch5b?Eq(v8767qaiQDA!w_Q>hxM_)={AfIg z4x$ALh=eGor+vZweI-2x3jrVHr0|7RECk`6boWW`2x4K`^HB}|3ktkt_4px)A-TCB zi9@LIqFi4bUuFtHIU5=pHjsa~3dj5AiqK3HVgkqW|A`Y%9W$frQYqG$xs73Sy^jW# z7Y!4M)Ycnqz@v_O&kchr(V}72d}9Rp#`lHU?AMUXZG+5U?trkJFv!$pbV4%MIzToG zCGRABi%c?r>cDc)OOV1~rah6h>u@2FtgINt%;=_Mzm!88!Qj4c)1ef<lnOr0>iSqHRcW0Cr7M9O=7q#b$O!#)8zcX5t<&~}&#%L&itw?ZNmz1QtEf8t_ zsqGS>3;4sw$PqPaO0bv~di|zEt~woZRsQBBq{YEgs8LWhdlzSO%op+pY&hX85@mkJPD0@wlr zd0c@O!05CAeB*u)TCgWjDiB;59jqA=H3IA$itm}#5qj9*U<6^0XNepGn}m}Q4ggLQ zj7nf-^40Sz4q!FaFb!~q(ANa*=O+eMDmk6t_`%))L`qajAW-WX<;5T>P+GfcWPHYw zB)#9Hr0`{9@bMiW(oYU?Z&KuEnsX`iYhaR7XNQN}AJ>l24;U;@m3XOr{<*L|+&h-? zF>S&weo%3GoW8_xs%n9+-xy`EBfX&Peb(hjw)sv~5*mS&%aM2K45;31JL;7wu{pNU z>CKETBYSjY%jl?HNx;8j@yqYb-wm#wh`b1oIEiXV)L6ZpTyQNbIg(X3dk>Br7MeSh zNq6?;ZrF#6DH|NJp*GOVE9c)u>vjOrN2{)%;dxhe+2BI61BASq>MUtG< zL<)&elaFA&1~OLj!BddHMZN-~Cg7rxT^B}~Oi`#eBt6265Q|xODESKZaG7-`NcNP0 zKoFaxAi0wj12sFrhy(za@FjT+yx>X+_|f@Ig@yw)4RZ=u*6?Tn`>7U zG;FV8fSt29l1S}`AdxUt;#BB#cdeHbGav?O>kL`f%1c|8dC*iv%aAVsVz>e}#7 zj{Y_gb8Z@?OPi~=QXdMXI>i?q(5V+*2xRdzUE~X`UQ+icfjp``af@ksSkrNPr*}rD zqK6C7gCRqO4zrdfhsb=p`Stc4lgaPbMv%%9K`NUGGYv8jL3JTO!LX35`1fkig^72X z*s94az+4kf=Vah3heDMil~NG_mC<~WK@GrA*5#)54h=W|I|n5{T^qPfIZXQpWBa9>Hf-IA=()I^k#RvMy=PBcaa zm8AOYUl8Q$y9oCNED%eo=lCPVqF}W4E&Qo8H>3isl-drDndeC<3fN%E*1auNXOPKi z_42@}-f?mDk%g!TP=NV%|)v+T-;p}d?7p(3?&h5m9ACxinNKc z07-bfSMEUCQ0Y8iLr|Pc_)Y(KWXRQ>4l@V?J;LshwI+o8f>uEL#ef z0JuVu3qW`$QfmU}-u!AZt9fyWA9%Hyh2drmLST6i?52a#zd}WLFeOw24lLP&K)M3y z->MGrqYcc`Ol)kR0T7ECFMmOLh;{3AQoy1TL-;9_bTz`mz|IEIazb(&(4OHWK9GTa z@m|f^#HJg z>zhKU0OgD4@mGR+g90hrP(YLC`6az5sJhc(^(;Sz(FQe8p}q!tTBy;dXhgJQs3MJx z4)vx~lqV%n1kX;-N(vMR-WE`*);fc0z;+^8xn3K?BB%-*B(J_{dMLj5#&IxmqK%HUSVL2B~eJ8$T2wf)z2%L`KKF*<& z`h7HKH|U|w($u@OEvLLr7p8Er6+ww3%+8*hBZWdAN`#`2%7_^cr8~BbLY5?S>k>{1 z!DYt8A&9{rzb+D>8g%+1jw+`behvBo|8BxkbRqy#1LzSM(=wxG2aUbsMS5AcdaaS&>Fl*x%>v>yJJo~5*pL}K|T?P|HajGpCcIn}dgk2Jp|jaG-H zm~fxg_TQ-ax>S$NA?1Eom_7LRK8CU#k=cXy8yDx|-;%b)Ed*Jz*InRObAZ8gl^%R78Cyc`=EDR17}BNwSxXd=BNtfHZR^E$8V7!c!HgukHs}= zLCS%B6!OVns}wS{)zssOOg?(8iOxgmAhZR5NCBLZG`}T6(iPzL0G4 zYwZfJL|UIQDZztHMdMNC=fkUS;Y*>(+1aThyielWHG_;pB8SWj|Fs~nsVJ-jQOf$o z5e1>~tw?ZEhctdJgIX4fJj+mXiRZke=}Bj153gNv08y0-N6oTbyE}P$a+iA={yifg zF%LfPU1d9m%pLU2=Av*Dvmb1JBrcSgE(yYz7~qcieuAME41eHnBHmJh*$yuOEdX+a zJadpW2%@Rk$lM>1IUqvp*{+KiRQ6iEbAf(Pv+utqmJTlN&`1ZUG?`bY)#f!W{{G|? zR2;GWme25*j5JfFA>?9iz)1)%E)JpX24tg&u}YuS0qW&ZKIJ`2Q%1N1;%|D<71~oM zYABvGw3)OQfh>E2y$*XT#1sI8gRcShPqJHJ{c)K2IUI-GVH~UvLr+=^U)?deI8F8I~$Xzy~cfn&23KnGyc@K|39?t{||lo zf7h4$`wV^k5o|mV^QDL08Tf*^YQ+B7${pkmv{L!pzE&!S%5LTMx3*Hb@VEbn%5CG` zcF9 zQUkt*iom6dfmUd;se*}zR5ywMxG}(4&;SuV z&=CC&9_N)Mi;}29L-UZ-d5zjlC3kXA2^>U@3i*cc>Ni1jQ;XRw*8xi36kOYZdsVhl zBfHE3I+#9J;G(e^Su{xEUUCBScgOgC{rH$;jc95_$rg1!5OC0W}%Ho<&vwf&wp4m31Ieg~JYQNI(==Ac$yX@P$q(A|PGCiMcG& zC}sAZZnn5c)Ul5VbCfYE+bB^qOC>3!rY&-O+RY%41}I`&JgI#>`(vHLSv~DZA?*O? zUyW#^6kzbnm9|c-G|1MMrm?-l_6zDVtqWx_t84?Due) z9tWWdaFf3Nn_c2BBK*dN{f@upaV%7S%fN-qe#ag7nL9*f{Y>R>J1JcKW&Wye{NO2=rokz2f37^Hg!Kgsq zuX0A}qXckvf4mL+XCLuvqvGKOK?eA+BB078m`vm>MW9o7pB03e&_2Yb1R5i#7?fVl z5}lGyqV-WQ1pA2StYhsR1UJzIJ6vV2qN^MQls&E#pigfK?3^WX!PhuIfV%Bfmdz@A zwAl^^ej||BikL-|2#>Nu7rznMIy+Eu!A%@!hqj26mdy@!BDBd42j3JpDwU3cZ_uZ9 zc(jNTI?z@2U^}UPc%7|)wM=}MGKfwfQI}qP{JGX1bOjnBFSWEn2T+MZ_#cjG1%%wH z$^Ql+TY<|i_2Ke!=g{`POQ`33{{0S&J7!Vst!=qG@y?w9DT{M|Z=(b-zPO_Ufaw=N zNZ)v{)=k1o@Ji%;0coyZ=bA5GgcL?^{3X6Z4Z48St|0xzi-cCl9(7&d0quh<4yaE| zY~KWw1ynq%8QiQOW;x&U9#TW=ez(-bcn;#y>n zs`gixwKiAJ&7L}Son5S(bJ2p*sT9)Csm}RJN}Y94b}g%#%4al=pFRSCz;7$GH+i@X zSy<}o=O>%+UTN;Mrm-{dvT=!z+vf%CD}W=?B#_2nFNgL(DiCb&ysaK=5OL6G*y4$O zjWiClofyPh5r{^~w-)3CV$V^*PrO(|R9JRz^VCBn@=#x+gM(gK?v_$MamTd!V0Dds z@Sv0d*$oAgCm+rW%o!@TuVzqmV#3t!DOGy4t&|!FKrRlV2oIltA@sbaS6UjKeE^1T zq$DygG$QM@Da~&TGbE=6cou2QHEl07Rh!l0MWOcgCBYFTD<@1nl%r9*`-j=u8tBx4 z6mpc9YM^udbKwnrB|gLci4a(O7-4{YtA7HF{T(7>KvX=K3W4{F7cwWLmQp{xbZNs) zRP*JvjhoMAO&m1T_N$GbZHuapWhgXy-1w{A)Tzb|Q4Miy)%9;zZu|USwZa=){;@4~ zLTu%?eH&MOk~tx5*rb+?kK5u0Z5d%5cMuHu7MNL@rxN0%A#M}%BWIeL*7IK(tTO;o z4#+2QP^Wa>#5Ii(wKlU~#Se}N|5k~e>VS(9QLuIw3Yw>kKbah^dSvk8XAj zRv2^gV&y(;MpLc4jbbL>H|vrB)a;7*;N?vIyGri*2wG&JRx0P2*zAb!gyoE~{0YG=V(t*yk)K4<5t zD*@Wya964fMjQ5xhd21=No>g0#n{j~%0_RBuu&N0kdR8GUH}E++d)KJ@&cU&@R5SC z1=kPKN8lF7(Lu8^^vO^gQCRfe=VOag^l{NO%S|7D?YUxf)Bs7KcWm^S)zqN~JRUHF zX*4I(FCLh)4cwqLTImxRvl?Q8|4|*~EA|hyHN;je4nMu`AEVVe#2QnG>>);yb zl8Ntv^%}ke5?F0vO+!E7Ch-V90{oL2G8#V!9bo4vaCFTYxadrnzsS?kR#v}(yNkbQ zUJy3W&f9LJ1z$zl=DEg!_C68j<%>n(^2`(&3kCC~wB#J(Xj zr{FJ<=Yuklx4rMc&dJDwW%2zPFNFEoS$;+W$Bfnu2SNr%hyVgR!|?VgudHB4w8mc}DJvwzO73&sMCk=nqIqVn}_5FY{PxO^JEU@XpA z1|oy59am7Mk3K>_bEi5xxl^d`9NLfeU8a}dPKbX8)LJS4br{euSeg((Idk6z;A7km zs2$Iulss)+7wF+RLfDOXL~W9nfXH6NKZTi!_TU0;3(iA(>36Wh#&uu^Sg;*!M@v_- z+xvfcl^TQgau|Jtjo`EPB;o%TKjV~ zcN~4^aC1q{1$rKy_jvfggYhf)8_)UpqxgWLQZFyc>Hgc4e38SCjY9(PyW!{7a6b`Q z2-?-rKWES6Qal<@vrqxx#s=8s1syo*Fu3Lf-8hFbU%HG|^LzWBOj zB0i7LRQ!w*7A&P(@HXy4l#BOM;i!TN=FUf=3pfb>gu&MWfQ4q zzSG@}9A5nSXWkBdUC_plCCT-Y1IEAe<2mNDQ-q;1m|uOU9uTFGpbf{sEiwIftfO-O zeiEI>4&A-fq{H}Ut^{pEwm64w#k;vt1wVI~Mfz zU^SZ8gZ7}!>**?doVzai3jY>CDN!Y*rgT^wfbL>j$huV`Gd_cUu*&r;k?UaympNWXv9UJ zK}^C$4b;|a*M25IhA2-GS*YexMp-d5$C&*zFB3}0GKBe94K`xi2wu#B$Vs(Ht{Mw z&^qFQ6oCOijZHPOk~}eYf#3m5LJ(l!E};^+QjN#>32o(OT&8BkN>sspt20n?yjcn< z^gRIrTL&f&>l?h0y_ifz@nB!~tA=6OUAwAq?(MI?V;*wq912wheo)YCe!;4AbdJ!CjRomM@V zN)Rh#^#D@`jdZ{*cunyiaOK|$O8w}iR8Am*Z{j*8=j&RL7j!G4MIDiunt|< zGXVkxehu$Y(jw7jEb`Q&UpC8?v@_u370GA^+a82Hby(2jXr+fc0uj5G@H-@=^${@1 zj~kdaTTFo za~Zh`>g~uiBBltPLSlCfo`)v6TiXnX3D9O@QP7jzJ4j?@3Cs@gH49GgggxNAHzfQ) zDm*&s4YuZBPjna*{T?t=fO^-1E*l_NJ;(qv10@-7k^x_MG$#VGHpp6J3H!1K(qZ9L zxH~A`$2{2Qt(M-Jt+$a^f<(e6{HnlLT{>zW8J z1O9m%)s`b=T@6x}TaVyd5#CsaG2b8HH^fE)5$6i6-pnt3z^69SBvB3+03iLV^sJC) z4?<9M6*RbHfJp%JsiuOsyBf*{PcWm-D;a099ZqLlM4eH%1>N(6qPBkAC5rOILbS+; zTd!qYaL5*%&bov<%xF2b(NMPB1?u`oX?>{E3|Cm(L8dTpeUyzmU^6c=eB z=Q6&+t&wOYhshP^AVU%!N#XiPH1Dg7bHsrIehskGwzJ!K*~=Y#0zqJ3PJ&;Es}f!W zC|!blAz1|K9up-e7+A@pa524AD+4$(t3o6PubQ4H%OL9N*~meW%F@?gI6MI_4M;WQ zrUbU2Z^BY4+k22-4wlu9Sz0%S`@@_vcH-d$_#yRb%E;uw15yEnp{*({Ts8~^Fb!D^ zUJh=NqSLJ(=gj%E0Es5XS<*clvZtO*l%kfpWwkZS>wLZHbJ|YZ53!sGj*JUT2Z{f} zoS$2=>pVp6#OXowiR;k6?L5*9u_zMZ8zKmG-W0D%EBkd!C?dmu1#6ec=_ar%5^b9( zZXn5nua>v~d0kqdB*(l97}gw&kxIZv7=lVpUlKI+`ZQ&Rqh1{E$W4a;Z<=x%sCgc z1Dth|ffb>H0BAcvI_PTq(Bh6iLZqSiZbnF1sNC087nD4}Wq?Cai7_k1Wv8pFecq+1 z!%|-SDoq+Zx+guXEL7p^>ito9due$>!cgn}!4h9L$=-oxGoVp;f@6+!fe$7Sg5MNu z18@wT1}ktJ(P_vp{E-~9BlqDxeYa==<=Jmvn@EN1kw8vGI zrVn+XuMdte=zRiWl?sR20{4*QS!ZH30%6g*%9M!p0YS?L4lCMMs*1hPnw%zGrSjf}DL>PlqzIt*cVA=Cy zp#!3ZEG9CU{FIv&;H3vc4|FgHO2iO~0OJo|cM-a-6w+k!tz#t+I>I1=s~D^+YS_X6 ze=q@#Ai@d4pZF+B@`ZtgpWyk z-rBd?f-a64kZfpuV|YX6LIFyQnu9+@1H0<5czKtmMpNU4;!@ItxuGNQMe(T-cy(|E zwlA$btH9?zMob3Ut_#YT^b7v3Dzqe87YyMy`Qamx`j^gUF{u~l8zrue0lRL#8s;@Y zM6Dk-sk^5sq*LRf(#4l-|L!$Uxr0*Ru(R*wS7!#eWObeGTK>^;=vu#AUIu*&f(*Z0 zK)7uIq#xcAM<@n@+@Mx6Z;a^gv30%hVIo#m0jYg7M0xmvTM=9;#xUTdDkpHRLez&+ z&3jrr`S2j16>yhZOW-;IuK_Oy@2>+;AQGGfAtyXyA`lYL5jnwHFPD99^@gcp$%{y~ zwFXQpx<94N^bI_W+3;8w2 zEAw;2jKbd04ei@7#;;5*v-h5oN-ZCk-C(IHn6$HI!0>h9u3}|RP`$HQS`_?ib7t*Q zI%~3uiR%7#1#(!quVyo9Ew2fgx8;k1@H7ERPXB%V&I4ywulV#O2={6{TDLXczmcYGp3u17K=4& zVoQ!^HXRzLkU4j_lh|p{HHqFH3^A1zfDgJD;-+7*dDrGkKouq{*vim(Bb|YeAFNn@ z*%ERC+9Sp|Ft+tu;2>9maDIM5;6nZr#AuN~92jUa;$*7GCh_Q}$ETCUPdEe27i<79 zOOG#sEBK48QS>lLEU9SRztixaVAdXg_lT|XnHk{XA_3ginT08S#C5Gq#!Qp$@L%&& z&wmo=KQhi9Y_3pD-`8SaWUN?VE}r(0Y38u#q4uqZrm}?*RrAcHEoa9hwM6C18_cP} z=F;7wH)r7$W0sXGQlR3i!rheb!rFzoWH?dG*j)F>x0v_cUHrYmG8Ca69|_(u=M5-* z@O5%^$03K^MG5|SAysbq(P&V8!@7ogYINI4(f<4-Lwd+~r;@0K%u#raGRrAQ(3I}R z3WHtJ6`Hsg$8vkjLjv<_(>=mZFlV)HJ}$wzGA9?WQ-aRGn4(_WW9^k0%~2&T&0*B3 z$G|fM`Xt(6hEH1QuUE}z{gByFtg%_&Eg=G3B=I@srZL2Nv4u6L^M$yNe6Tw{+pXvl7vo^{PaU=`Mk6_+!a?>{5oBl zu`qkt?s+k@9-FWBQq^eBwZ)mUKX-OUdEAM@Wr@qtl$ChPO0MPu&G-Pi4 zwc@G8U3i|03xFt8WVYc~d0Fu~+X?H?TDPeb*5YW0+2Z$5SS!3>Wu;yNsqoG3ra-zv zkhJ(^1^RdY>Qbl;{2swy!f&S#N(YM)`Pv9z6#}#gY@sA3hy_?H6i!3ImoU(7*v{<} z-=0)G?$m3JSD7_tB%gW6Tv5SDRy+rR$NY4R5$19hEZWtBMM9tZ(@kx8UV} zUtN+gUb3xX*$GM>%B@KXA5M+Ak@GtxS3U4U)u*^0ov6EW=Wy_k|QMWHeb0twl-PW&!xK+wn(P z{kDXB&?7+ZMnZ!+80lqdc-NUBu2aTJ5P1iPgdq5lyc;~h3`E|ILdbNH>0yZB9j*XP z88Tn;!``!vQ{Y>lx*le7nZs@u@b}6%+f%`3Pa3WvJ-&R+aPn;MDcd+DQeAN4PjUSe zIVs|7-wQkYj^P@?-MeOZ2hGW9=~LbA!G{;cwf^u!YuqA~(Q{kX*OE1i*r2RBud-Og6zs1zXy z{x`C>XdEPr$ksu27fIy^F%%=TcaiG^NO?}1jL$rd^1{AYGrgn046S7M-uj`bE9aLgZSr;;I zKpwV^j*xW1P(m;deho;Po8?X}4iJ7PTeNO7YDUyt{A*H2$K2CMJQx4Ql_SXl`~w(E zJLZ0hlne0fewrzJL^Fh1gtS3L-g&Aq!I70}STh*Ac&afg)S%Y%Q;iCatW*P%s-7)7 zam4d*P(#(#tBG4|Geq0su3oKb3OcMgazc-?`ugx8{fQ%*!$D1OLfke{hV7O_IH4iv zu;-Bz27LJPWt2hbQ^y96dtZT)+bs7>yZZXNO7C0R@G-^v# z6YZ9J!&hFuymI(GOFK%CpQ$HjWX+nD*>5u2Ml7P=}rP21W$vC%1Z|1S3L-uWN#+b zE_fdv)WJXy&P{$(!F>tu8VH^t!h?9V<`9na5FxZ($rV$+sfo6p0*O4z(Z!^sek)jz zA89xLaON%u4;kPkma?+cAQwOavUSIA(=fZ{5NB$4hS3O$pfQ7^(}#}@Ir3u3(L$Q? zlQA-}7nM#aO)d`6dJjQTs;?fGI}Jo9L_$ZJVea5cJ9qR>FqLlb62r-XMT1sEism04 z#65JdgXcS&R7gK4!OjE6I0vJ5G!7`$O@z8tA>3mAap~zs3JJs}SBcrxj`6TfN%iF% z)AtTKJlAgG*1|v;qkuwT_i*w+7qA*L0wVKTZFXe*X|T=`tT+QmU2!%!P~!o{9}JGL zV)@V^7#9NK(7%WYUx#{oV5x(DRKHFwwEk*^^F)KXL!0^v_JL1;az!8Hc7*>c`}l((~RRLq{zBI?781%osE#&$)%>=T5I z2DColL2v--3Pz)~sJfSODKqx&3okZsHj=}Pr9p@Sv3|QMj458Ei|Us()NGC+Y$kpUWW3dhkSuOU?cl*dmnPzAK)p z8NYJO_-yfj4fuqzV&V943q~nW!UnBp>e!L1CM0!lN~&L3U6<|ZwizYKD;L()Ev%H| z^cSoMAgsU=E;Mv2ag418 z4vk2UbWG92I8p{S8y;8ap-xRI5HXSyRLcU9q<@$K6)fBgL1^Fltsiy*rHQa3U9h;G>5GO+SLQ1rnn3LgpmQVk561Y!R zCgUXvG;&bF7@gejiXV)Y^LCvBofC8^zbbhIGAZ!NBEh6Aqbd%KQ{eOQQeEZ!I~BNs-1=N6JQAaxMZ4T%@m%LbL*q+UhWx$n6=9LP4~Htq{>*3F{^pgGJ}@8V{z z{Ns1f3Y3TP@T-vTH4o3^K8F)#6B|aq9hWASX+H>1qrra&?F2))8L{8pZ)4|7+w)wz z*ai6WJ2PKyw#v87=c#+xHcmII(qCeZs!diysKtW(Nf5mqX8h&M#+{Km$ z$9`Zo{bs3QavmIbqM!WvfPG5PV&MtZzcMTCIy^YWZ2tbi_&do=_Jf1aB;K~;&c;Bj zgF7Jq@KQc+?9-CPOCqCu0WCrn0R^GJ)b+&f%Eol6{xJo&v_`$$nj7^tp3^=S&7F4Z z;HNlx&WI7SXO9>$hyLo-7gQTd@)>5=!sNe|g{NwrN1M>Bz|7{^4-!Vqfz#&9u>t(h zhkrgl339Ri_cjm(Lg&q@_{I@UUI1wwq}fjv<^CTUimKjNd+bL@Hpo2ER#I2}{xq-C z`Wd@DM&sygqcJPXXw3d!xgm@^upT)O77D;vb_ATe(?PExp* zg#7RVsg>~?)o=i^C=r<=d|*p^bjVCSba?jJQumi2QD$Y?@Vz~k931=v?EDwz_~oV? z9vOy$K9u{h?991~bh(+#f+P6Bz6)j3P~Et7-*m4rre}5-w!i;}F*9d632GvJA??@> z77Bia=^$mD53VzlCJC4T02&}34|3=$C5_=Nw`|bfmp`|+?|*J#;(_WAeEvh3A4AWb zvrtzsXy(B;W_~h6vt#7yLyY+bJU1<~!>{N4-;G(>t@^`=-FIR5w9jk^Hb*tirS79X zsnG7eUQJuaN zAA8r6Q8bn_-*FkZ7Qb_H=Ymno%BKyUmb&`^3Ufn^bFR+&V){kZEt8(Qdfxn#$=1p% zuhV^O55(vYS0{im&_YOk<9Bcu=_~-D0 zASaRrJjF<5y1ww?3qz+|jrN}NYP3hx-=++oy%g^AO7Apg|LA2~`?eS>*NzyMGhkrJ zm7Ong>cU3292nXTLZ{tIb0+!K6oguWmbgd`RVDM-nYMi4kF zX#@<8oPgGtRR-qziuU1y>M&mU$^JRBU++T$YK=?BwoMAsXsAU~OOD~|7opOoi&lLW zd7P^Y$D4A>m^O$Iw28%ig3s93VI38dm`w!P=irSeW3T7!x{$xZgxy|I!GVd&rl}cIa|h4NdvC4w-rB;54Ze(>TTb$_$!!og6O~)Ot1&eJsXI>0 zc!~SBI43@zb(r55j*m$^=DvPlN@sC!vCzX*vlO{@=9I6h2pgVWG9%d~sl3|q)`6)m zvkOWi25)oncMBd+pJGCXP~gF~7l&kz7K!Yx>_>|^3?U-{ zo<1+03L&l;`U(98A1$w}fX2*2Y=Okdp8!L^ke;f|{J0Qv9(lny5d{v?zr+x>4m+su zThFPu6Q}L?WM|HCs-0|XJKLEPDQQGVgr4p4m8VY_g@DD)kn zRT12y+vj^V})+=n;9)4v6SZZ&4$RgLzM=O)56XRX&DxJE9M z(pnqpEU2}8H*SEgTn$enc@i6u1zsC*K3tQ4yQmiS0eCiTkQPAp5Y+4&x5nze>m?)dgn|LCX0YJD*0jk4HPKEO-aTjCzWcwIfZairpwF+WK{%qe9 z=UMN^*y10#@koh(pjJK6zHxXNr3EZeAv8h=IA~zuqqMPj4r+^q1-4K7HQV#G_R4); zW^jf`jdRv>0cQ(N26Os3JSUduZ?ULt37p7IyrTV@^hb{8(mx3V5d8rB$rs9Mz{^?- z1$H~F5TMZri+~VZcu7IwrS#jHktir~`SQph5o+Fs&Y=0DkzG*K(xp*Bc4+i`gy(jl z)6Uxy21~u9gA=wpqtjhcYzYom^~U8oIpxOns&IG-8};33%wMIMJf{PS_>LwH;lj(XfC!Yls7EP)74 zpmr@$sK{SXS-ed$oj?e+L?EFg0Kz6eCIBo?VTZJ@jg9HOvO8hO)Mr6OET-%@`d{VZ zj0n!Fn3r##d{*c)&(cOfXf*MBfP;&08>0get89+97!U`Idj;g&AmQT-k^C zi*qS6asuo!0@@OLM@Hi>!l-L5g<_fKv+d%9`46%tAkns0R%B1kY<6c|rS7qrpUz)B z93Rdfgyxj^K+UG7#wGfhwwg)$F5!=lfRsS&Bc*;JxxByq@QL_rr8yO>m2_5t>n6t;S=|4$c%ip$+*-33q$-Q`SnROlgA#^Vcjz=2PIU8R9a&61m)5MR){!cfcgl} z&+E*sIS?q=ZFa0h_Y!3TF5=fv-m}f(a>{5iCup3IC84vkS;vrtW$2S<#*Snl{z+4| zP_G6yP^c|TL`f1GKujStOgaPxzy>3OfhGG;|HwKSpKqDv?VF!%ube8YEO@8H-+}SS z`~9%aKP;v)^We$QkodN=$(irXdbXh!&F5&?XAxJWZLtwjk*l7&7o!VlGDA|_AT~ruQwH%c!7df&zURBudRn9vnF;GIZ+! zeCf-sJy4+Sn{nA+cRn+|5C{Im_}T!@sX<2@K{VIW6d6@uB#?0Me5<&f+=aM6uZS#9 zh)-Vn;nvBeTCqaozw6l+ZIR;o&PWLO{nxIJeC^ecEntHACNCk(YXk`naVi&?~lQcpWyTjeotdy>9oj>w;7) zex}7%C>EkSm?r{M9H=yL=f>1n4#3`ui8Ac?xTI@UYa{@2Hj+w?wvR`ZDe8f z+nppf^g6@pVtcIW*(%vV> zSPjv#&yF#v`{c#vse9?kItE4!YNM4?lf{h)K|;l;=Tk;l2_XRiY+BN#N-QIsb+dMq( zF)$YZej&Vj6*Y6gO3SF{+cWU#Ie(@-L<;8l5!62eZG`Og+UE!Fxt3uM%P)I}?5H}q zXt`ts8a8I~?&52d?7ud0`=ZPhFK6^ro=izAz(L7+Kn~!X=V>D3|7h8h;|%E0LXt78iZK2K z3wXYfs?HWXXNhV>*Dv@^(ugAJ9c&w(jQ(qL4;&aXBH?7&2YY1>RPv5*nCHea7`!w8 zX)J94&lZ>zumX@A0l`+KgWZXkjTHPgtAdT|FLtNr+RjaS>-wvokFS`s47m)?kSCQd z-z{nDT+}ygDD}yR=QgZo2b_`~#IJwS)p-?pY}qZ_0ZxQ})lt5kG@up=Fy@=2N`^5gG2LEyt#De~(Q3VVeSZ*Ma zm`&sl;SC@?K>#0Y4}954bp+UBg9%C>hy?#bi?Nx*uQkv4Xy4366f|z;k&Cy+cZJ3_ zMAlTO&DAR=wC|bp-@4MV>E(>#t*;GbOSUb}Pl?G~yuE-eMhWQ|9=gsXZ_iv@9+~B5 z%APi?uK3xt7zh(=eYYQ6+cgG^*^Bn#qy=+gJmQAMABJ|rrt=+Y%F5+}B|Q&f(( zj@dhnn%M>a{kKk0*IvMi8HW#d{P9P};Ri>__T=rIZyANk3Q;ZYF2QS_(lsFG>nT}^ zNbCYoy&+2?2 zCqmLI*~Pp-a_N7%PQ}~XfRX7`PM}ylKSkWxS_L6b({T&-s zThZd_i=J&2H-Ew+nS)|^#p(=m`Uh2W>%C>$CE97Ht3FIG1}Wi5eTh^scz*OjUjm?r zzt)n@ZtLT2P+m}Vs1tQO_vE23Q9HQl?}Cj*_Y(T>>3JYlh9{&W2r==3t^0AWO;RoB z8US_ieE08vxN$UcT{2;qeuCE*UadOqTV`w<@>z=3j zN-FO@-2$TDfI360`f8)eR|nE1(QJ6{lhqFTd|NCrhkp6{?s+q%2iH`kDh7|lpRZXw zx*7G3uKFi6V#JMSn`H60j7A>MTf58a4f(;B@u%OH2+8^%RF z+bnLv2gBInJu3#srx&f*UB(W7^Odrkf|1nm#)6V5scAXflA>Xa6&-nzfw|E3C+U+Q z%04wJ2&e=?ML}s16EH|vFh*E0{mKe)2K+^Hui@-Nzy5vK+*#7s*NsY(r-MCm-I6b< z(ox^kj_P~1t#~&j`X}CYJa64D?Hh_iy$~i567*^H?5D?6&Bq5l-Lj|j6T-uY0tGdM zfsG-lmkd-X+4GIVpT)%w!!f0?v8CuVC+j%O=zR((YW8fVop(DvBkfuKHJ1|1J9%<0 zcW=%~H88v)y^gRv^gDnejam-LVw=FWR&6s?fLS>pk=Q6?TC0h)n(4-aP!m`wkK!)$ zCKUyVTJLhNbNkV|Fy`c%N4PgOfR#feRKf$aPa@tt0e1tJkZY(c_B%QOW(=+|!MP-2 z0042w96q|A)z8ZR4%Ksb9mskfAnCw=a5gIb_x-7G4Qay(c0Y3(V&H6oAOZni?0(Dr z-JHV#YJK;Ku{Y5X%)S3p|Fe;&FoqdN&Ls(T5GN^&v0UE%pqDAxPMyMKsBr=6T!0#% zxi5+3f)~3VcXx9&2dF!{nbTa#Puv*}9l6P$i;9H7j0xf`Y#_W6Fe^-uEe-MA+&b={ z<7Li;x_Q}=%BD`u|4x8PUCZ21i7jtGueM1RCa@XAf5fMPB_NP2K>Igpc^d$vcvhBf z8K2%^Sv)Z;qkbygKCx(gcLBQ5Q$22b?l?o_p8AITbKgWkfa)Q&{79;abzd`Z4=DHBKR!ek5-1{j2;+=|@$|4v9??Q?;&MJPT45FXM| zBB9@Eo9V*Uj2zA<^=g6hL!1X6CkX(M3K}9Q0gFa$kH}x)YVO5!Zb?Q4H7T9@SH@fE z>2H0QHZeVY;;D?d^z=Bmb@*M~AHRFw#o-U^ppFkCx{v=5zsN1(j_H97{w#}Hoy{2hze!u_8;p8@OR z<0~xNaPps5fMmqC2NDzmtUi1@S{QII3j7|`)G028Iz_$5uan)vbmj`5M-Eg5UP>9% z$|m@IP|TN^#*Kb=XuMZpas2Dl->7q3C@LyXUNi~)sO>cwb_4JgnF8p;llKrp?RZiu z2z-D2_n3PyuB1>KS9YA*#NXq*Z+Nd3{nWfTv0~@rd*D8L5qp=60*ONaIz{6ET0}r; zxvR{1WUw?_CRm@*eol)a;q}+|CaoUj-F2M$ z{=`@KqK861Ev>h~$d6x{U>+L`{0!oh^za~fLG~$7EurtL02reB8uxOD!LZ1A|x~K^8L z@734Im!Y!OPN|n<__!xq>Wozs9;-snmcGQvO5fc|PnJ$fE%a|18cM+Rfpx#K+kgvN zlVz8(R783~<=W%|y$hQwr>tZ{1JhCM;`oh$ANUh;)qJ)R-KFL~%kMbFZ<404zW4Ku zn`6gHhJPTH+|(*d$6)D`rFZ3Z{DqZ)pLw;lC~$aw;8`|WPQOv+ukxEt@@3Dm`J373 z&3t1}-o_&KJV-B;=p>%{s3R7-K1<{IuI=os?9jJv@51BRpOPDG9iNb1I;v08-?$ZB zb+^6C{$vLXx`)RBex=!6kWn2T$G)BQ-!6>}pm3-;4gzIfdLsK){Y`zUJWb!Wo*iU= z&>EvPu+e%%`4hB)6tHaMcMwphfglr5%A(>IgGzZc{G92`Gc2C$Li``=n#T`j+0jQ{qkSxS}|e>m&S zoGahbKhqD(R(_iQc@s+FTrbv#u^*-YT5(E5SyKR-N{5Fc9EsH*_(gp2fhSMcr6bZp z{Z_qQ#=++gv9X{1h2{JOpHMdP;lHF+(#pRc8C0?JeWC$kj9Gu%6s0fLtQSGJpWc)ItB4<@nxgFfzuT<@Ea z=>9YvuNH6G#`6Kr9!B$BvgH}&NO*7oGrz2QAnGEPsTr=V~ z(u{3+l!`7N&(?p+mQsHj*@InCa?aA3S*%svtK~HC-`R6;TbX-yFJNJxR+`H1;=QxbNR3~Yjbbksv%N22UfO3qv;L;OK$UD%8~{s@ zbw~ax5p195M#~FQ;;m5X32v8ExAnJbzVyI*FYViX{g4-X=%*fjb4b4n#z~&x725PY zGJD8Z;CnCi;q`+{*{k^S(FVHFZqsn2nm#x#3_HZ6>7Wxoxeo(u_fY!yGkU zOLJwA4*$BdJlUfv%u}jLC&u)e=+FlzY+A$vn)H(AmOhiqZu)Dr{a4lZFO$Qh*H4YRpx=-;AC^2lUL116%lmd5I=~iGFO&OL9efahRu7H7VC>Yj zH}i_Snf1!7``N3dgV%3LJ>)CkwU}1m_`UTeWwVIZ6w$>9vMxomIi>^@INTvY2#lrU z0cAj-CMaT~?1gJCn%<9P6)C(2@BB@tDK{P0zF=>%FBJan(3?l~p4Pr=^#iv*R1n9y z3?13K_f?r!#w*^dyUdz$wD>9n#%0Z1Hhlg=_h_lD?_Atc!0@~Eeb_lZKm@a|6gSB< z4eic3bRmT!KGB<8YRKZSAV$Nc935TWuk+mFA9TKG_WY)$>8g&o$(N=VWnVaa zKzey`u6<sBE?}Pv}`=gT6A28!onr<83vnSs^Xi7hOrsJO6#O^~o^(mOkJFHLX?{f7|S-+b|$)n{veP}6_8YwnC?(p!g+!QN-rew4NR&s~>qef0Y` zIiK{(F9&WFaemQ#pPA)h=!Es^%~Z<+HN@%cfU=bog%GS{lU=B;@9VEFQzcE4uT4m5 z=L{@W3i@hVjx$X;-M6oQv|N*z?@I8aLpywS`pcJ>_VpJ#=p>0?iBE9Rr zV|%0h*^k@D$@jWaQ(f}Caq|K%1zu8F`@ktwzFh83MpV!8xOx0_{(4SMj?1O)PEW6` zbY-i3YhV47-jL>IX6n_hY^HM=d-Po3bWpv}ZAE+!>0N~LsnyCV;Mj`RiI^XaQ7n)~ zQL~eJqvN>*uYPL;%6TA}lo760`}7yi@)c~}S!t-xr|i%mHPXR?%l)x+Ozlj z>ec&KSEJMQh|{Op2uagVpuGfEZRGc$k(T2|drP z0|Q@iR)4|gllp(k2J)Ss>bvlK=vg)|pzqns&+gsx{p#ui)rbN*&7T7#tx$cl6(D(T z=pKH0?_TEIqaOkUfWyLA3%*(UM*UGlGa^?)a+ivVn<4=Zzj%!$7BxqjTcR*PQbTY( z%6V=NxjjieVH#=W=wr|HyryHDyD?Gl8GHFD{vtn~otc)HIpgR1pJXkbLIy!A^Y!{C zX-!L(x#vDojw^4Qaoe=0Nyi)71hsbHh9>_WX*>iHD#s=LcW3kFPW^XDYvyD>upgYw zG+xrHLx*1Uqde?X{o^w;l`X1M%k)3549nyX8h`2qS+by~Xbbgcw@-bAt+80#R@5e- zc-d`u{~+GaLw#7}Mp!)RYQVltgGxo#p30Uf=7?} zd~6(ec8OQ2)B-Pfz4A~jv7ugX-~|kYIX>cx<^5I%dbCdvV{f!PuXI;SgJX-UQy_}P z<$+&WXji4X7C70nhw6%NmXD(Ma=tuJQ(f9|J@9iz#}+=Djm1mNPCIN~8b4YW$d;++ z)~X*Wew>*_MKo2^vjx;xCNj=EMJQv0VzKZFeCVzH*5^~3d#n6C+DnPf(s;==7N@hk z{&=^g*XvJE4*0t%k7Z{1$0?osA7TxL#}<{(BFDzLMMba-_AHzQ)en8O-+H}jbKkMR zAoefm^7i`g@ug1vw+;jGZcCr9o&UpoG5R=g>@h#?=rDFG^gPc*UvW1gbz6q?JS4)@ zI&re;SA>Vr>T)`C&6(}g+d7=mQHR^@kQV7v^r_PNn!66KU3>U0>2hZ_eZ(n!=4eeH zap>{VdVQ)sMS5WBU3X2zkC4HCLI&S4WDwYh5_p0arlO0MK}a4?=jo6uic3$rOBA%CCyWShtp(HWpJwLu(l_1sx)uD8KTTYHRsR z5Gwndn)W8MYnn7m=d0Nqon7tq^7ZfFEVv93HlK}thfVR~NN(UFuar)~-i2?*;7m|l zBe9TIdi6rDS9%1pyCk@L>|RW<+2`Yb1p&tTl;+}mUTutrtSoaCkRZtsE0e~%RMWiD z``*`s!>N-s{ZeSS_q{wVIH2J1+;f-Ps?~O&f!I|-6gQWa@gPcVLC2tTR1QnBRhOlu zqebn~^bG!h*UR$xC-{A3Rtnq`^HVa*s`TnIefi|>>D1sjUDMP&O-s>llWs~Wt^E?w z=qscf{K+I=b?3%DDSFKbvQvF8S|fyLcA?jt+shxwNY|HQ+vmT?r<9 z!t%ZRQhj-uUOi7UChx9}E;XjswAy1Wm6Q4%(ma2lS06riqt?W=ta0&)XH;(DKk|I{0O zzFHXRQQr$ogvm90PhYNS`W;x|y?yFGwA$ODM{d+K$R=ui**=0SrPH(UH%(P)(ws8? zLR!`&41L1(kyo!EIHWyZJi~AQTFg@c821>z@h6MMhhw_l;0*LHe@o}k%iFPpy5k30 z8R7>xP&?7~E8xJHydF5B01z|(>eaC_F#P9U|6I)J#hjnx$j{qc;}r5 z*I*mD@zK|rbKjQv+T=BBCrw(59gFs)a|_|eiWeS`h}8%qFT2pX%vZaC097aZ@cl4w z#4~)a(D)v$w-AL1L2Dr-V*@amtZ8E-(EuJ6zD@cFdtj=_s|rbpNI!smgZPd@D%^rI zD8j%b@CZ`EGUspE$DFS}dLzs7a=!unWd2V;rc6kDg<1B#cFyv$+rL?P)<70(V-def*oWPt+`9tYf-Cd=_Nd*1H|FrqkC(OGR+|#1iJDn6@9HY{^FqaT7jPmbr$uT776{NWd+0f`wIiRr~J@`qhp+TcBQdH6kcIo^ASryM?vGMzsk zJ}eDQPs}Xc&9^Gs+O+9*EgQSrHXt!wyvN2G@A0kTy<_Yv-ul=v-kNztN4=hu&}Tw7>q321{%me+v`=<&~WSzB`n|Ive(Uci8jcm7QH^^qi)fG^u-EDmK}-?~ECJIlqCwtJ(UGs2OK{ ztY#c!d=|djE%aTIlI|=Cr7IE5O5g3q=Zi1)Wy?m~z&C4}^|28(4)I-P8Hew7#CPEp zC&g#1I>a-eWQ^1?KRtynX1AoI=i7NTn``H9=M~7;$=4O+B_#*82DV~HC7pCN#^`B` zkxUk>QN~lO-Fx%x)Kb8Xk=QMKaSGpzugYWPvB^n!1%Z`;l?AX}0fRhN{n4H0z`53K zbKJ^sV~h7Ot~_15zgWD#nBE7zTQJ{Sm@ipaQB?m6i#bWGU|KXuX~s)>Cf(ODX~=!A zPoMt!eM6Eut{yXHQHCcqWqR8@RCsSY@7^8qfgShGYnwCUOaFIYUemdQ(ygTJ?4E(C zh$M`iCmE$cQLcc(afPBtf)-(TnU;=cB|F66t3#8qIe9ZNQ;P|FGmWk^`*MbuFVGG1 zu}|gud(7?J!GEB*+j!6q__Jfcr?trg_zy+an218AV-~rP_$I+8QSYL%7R*bM%Xr^TWt77hF1@yCA{h9@mNap|MRtmn7$$M|jQ$Bcqkz~B}8 zDL9wWFjrW*pdMxb;f$jfTwJKl_fzZ~!MUZ%s5#h;Y#h6Z=7=+45ObCDH>`^K57fXA zvIQQAohSSV4vBYyk8~do`KhDftcuS%7@L3fb(%J`s0ds8bvUY547U2RI*wtPf6wfa z^LS%9-7~*jUSe=vZZQf?FJYkyGD;2H@dbzo=u)vzyzZy1TYvg!eeN(V z&E<&8Uz(D#G(XPaO4F)x_n=kW3DC8LWs>rC5I&OWSRgtwkqJUs4npin9>}HA+LBJ> zRNjsSnzMn?6~(TEl-LsNVWI=xBk4FUkZoIaej%L zx58d?+|3@5dZVhcG;IBaT~p=uiK?sZw2y12OBcKOwqL7$`lC=Xc9cSaRvrpIsvT#zrOT zPfDXO-fva8fxcD-JKK0JqGzp@4UI(b}8YND%#=&izY%!>Sf7e<(;NN^YQ<5bjD$|yTO_A6qJmN?b zLk&%09UZeMACH*mJu|h#=5$*Jr*+`y=l=Mc+uiqR)^UclIOUO!_WQlwGp-v}ufD9qk#PsVFFq~zb8~V{D?XA-z5o9(%EQnR&9PDzv^V8p2+lo_{bv%1dyX9q0d&|)eT)WQg zZdJxoRW#w9B)XIy?3mKfVush^}+bopR1l zHd2iNuh=h*C2AuUOQd^xvfN~NW3?HAOu?5zw9zb`K%HpGkEBeD*dq#s zGF79c|5_rCeO0v7pB`)fj=+kRe*TF`q$5%Ce<$BBAY-Vx`?GV9ycw0L1XQN{L)^0= z`@+#K9A9WoDm>4ks;+Q=nZCDH%wVRu9Gru))(_5%&&ZdHZ_#JE-5dFq1dk_yZwWqb za=SFgUV4v>XX7Iuw@Zr`7R&h=j;uis!f0?Nj#}5Pna^flGu^eCABc~q_A~T*wM$Eh z+ZG?s53p{*-y5gjWk+qk@^z!BrxNxH+e++JBLz;>iyQUnNy(LZN-10t>pb|fK8JlC zl{UaeChXhvqUe{j;8(i2J~Q3nvAVQWTaRylyzP<+=$d4_(64|`>2mDW592iW;EC?G z)DCeec6;8QJ5EHtaJO_zl`iYVpF3;)ljRHr-4{3am^tficcJ-$UxzVPVw5xSVtmmy4r&ffC%=`Gy=C? z4MP5M?4xn(LF-D?kV2^lx_6J$}o>AH)>V=_NNG^fnGr;kG+D~m@ zhrg(yrK7xu{j~P8|7kzPTGM{xMy(Eik)Y;#(JP`RQ}xwd5l!x=ZTK7V7w~6v z!M#a|*YL~G4LF797^fvN#*jNmrek{8wJ4nPq<19k4wjbYN^7_D%^W38$+aqRId3ja zYv*E8sDhsN^9aH~c4$YXE|_jvA?m7X4oHKF6-Wohj_p7i#&AMR*PuqG5a)1?+I zN3N6M5|N6bn-1Z61^Ywfp~j5Kul}Dj6hU+c%jF1U0$k;RdqVZ=I)UyKmLBCA;7S zS`5n|tK(Rf`tmTt1GJMhGdw_Y!QcG2WmZlueYplZmNjqpQhy3w@BCYVEIdDVFlm8s z{H*l&V*Ebfuc4udwE|A_roeFgiA5fC`~=-S;(ToQd%oLg`lCu-=09~Dn+2d3!*R81 ziKgAUThr#<3ZM;N&&qR#^NC4!!1`M3D=HISg$fGftP(zIBW<^tSw&uZF;)Dsb* zW6_lQuV}_Ugr(NWs~_-&p85F12C2t32B~)*6b!>j^rMO&v3pFD6l|E5d?Enf7(>gz zMj!tW3Z|1!KM;I&o>V1#z;lARqwOi!-~CYS_S$-2je`$tZaTmhL=w_7 zg&Kpve<3u0S<5HVXfL!q)rgT^;`5b6;vH+02JZ2_;q|`Zw=X1)@yx5URk zZu}7vlNcXHj5)SKSumI3L*VCn;p9~JKXIQU_9ttl+o~Xz5BEFhS4R6OUVjBz(AmzA zt>N{^Rq!wuK^AgK3J*?%a0COhq9qP$Cst;(w{@`BC6}>Cg~0 zBKdz=J@kmtE7?sDr0HXBV>%>ox-r7Y&PbBP>X$kSHA-tVCMZ!VB9sg zb+@Q7f-VvtVMqS2G(BI+*0X3Eps(=FTj%#eKM$L;TV)8_r z_~wLc@%oULY(-6w;zV#ye)qP(XrE7hG)$H5C}$aR;nyWm$YlQ&UY#(t;KdKW2$Rm( ze~4~$Ljt-HU&7wgoF>Q^Bi7kO)xhXTcj<}7NF1d$`dkQsH>z(%(t-4 z&3MQo7JZ!r-LZhbVOt8H4%RT%fT#{vBzkPX%oZ&@DH%-UJkZ4fYVwtq_3Kd0ocmcDF)iulU)m+YCC*&%*F#f_(aSW<$oL{Kk= ze((Uq$SmDx6PpbOn^BE1Mo`sBF@g%r^P@>B7n>v6kXNPDMBYXICn4Zz=Mw~OTj*akt zidz)%Ee$Vt9n62>uFV(UYt0i5+IQM`;$qSE>x9q=fGtZAHsQS=RO1?M62K>`G2yD>Z)llKVl z4cTrC*T&>Mh`%A*a%c}vKrVhOp|eSV&23PHJ&}&qYI)e+v1OwPo^7e4rjjJex*NaG zo~89=?G~tY*z82s+HSJdp>A~1hwvI7Y7gNP@77Gfk`y0>e1+$=hvyYt@5qi3#(}UQ zQ~?Q^abjL$7*~6Y8ydYPH#jIwYEFdr1a$PVZXp08=FCG!wffdFsd}0=dW9xM>nW5k zido^pL_oa)02#A4)ch={kP?#Du$J1?O}Z>B@of;OBAiWuxSndV5H&=@;e5rNZv=QJjg*bg(6HKU`)c15`$Ua#T71#t9Ag4iALhCFD34Rj{}5jy1*t;?u25@85|1lGTww@$(R1Kkt8 zs$7EmhflzN_(P-?*5TGlahrJ__vc`|MtT$ZqBtNb1Dm)ze`6{?%17Xe)37;z@FJ!-d@x4`u|CAS*9r)Oq!wOBiW52Zrq5gHDV7$;5eE02tNj;jCeHE3eREH z=RK9w;tu{}W1$m3LGmGLVgx@r^$n9|5wPXS!3cdL3Ifc7=fOC0;CzpN$OF#HWWxJE zb&40F)84%KMFkSu%zwPYr6ne)bGTKn z;VqwF?zGPNSy|}vVx9KbuwmX0M&+Qg-3g=z3|^6#*v=_rDhLC`6^p9O6wQ@~UgBi2 zka?UZxjjZ;Gzdj-(9u%v-n_XOck9q0dACfeNOr$>^0&7W5;a%B82%$#`xIQ%ci6DU z1aw(h`JL0;>!xV`QZhE7}KeMTBD`dUKA+umLR;E-#)_8kSsY;3qcP} z^e?bN8bgesqdmc45T#U5LKrdt2edPme4*`)D9-aWAopDUlHmLnRtsKyZAgfo=+ki< zE|vS_PwEw@w?hKQbKq!K-U(?>-jG@slV<$ zqiLsozSD^0_BPGe?V-)BNB*ZSDQ5j5IG}QnC4tB(YGNjm zUku)RtoQNG`n+$Y4i}X+PqJS5=vFoFgGuR!q)PV4oU)Mx4lOb1&KISB@z?m!iGvO*lqV0bZ$)w>E&w z5Vv&eeHV3*zSZaP&M)4Xl&B@NA6YgBnM0L_(kFe8r*3`pN>T}<^4^=2ew@9)dcVom z-QjNMa&@|N?$N_26Ta|mEPxA|C)uVvf&gmb<-l`u)l<;lX%tgrr!sY-k&%})qL>sb z--B#(Zz?WqhSkdNV?;NK`Vg30$++LIE}^X1Z;&Y+d>Iv%*WM9xol zH1E0OM}COSXLi-Y$Libh;U`%>45Pa{j#-i7qcHG0r`A5r=1cKxo{debrfBc71sCP= z`%m(-d|5P{sUr4CfC-@B>>>t<289;6*y5v2#<0^$O1mhO;osV#p5mhflw;U~%zIO* z0IKqS)SVkq#Si_sq^ALP$;~{#*P%3^or)`>Iw_&`q%@puwN1TKM4+!2(-95OYEH7L zxfd-+$s@?Cr!gB}q5sL3vH60YbI%o`w#EIpi5LoPc0Rif5J<+(Nf9sMy;G3iWC86{ zB392jw}~yO7L^H3f7LG|u2Z6-CUp4tc7zRfPJ3@b$L0td?BL3W~XJ)hkl0wjYbLY;~$K=>)a zF*Bk#9iDbr3_^)DX&R`X16P<2-4K0P@${fEX{pT-et7%G9Xv{6r??C$Z}lwwR^Ym} zKDz;E1Vb)?>l3%L3^FbDUDYvFR%~7sL67^F^mZ{+I9d5lG_HB|^Hs>5DSKfY>aZ0Y z4Vpx_G{8TTuZ{DJ@X#M>?t4A$H%?0bSVBMt%$B?9{y>qf;53KZS>u_I+j$n&p*H;!c{) z%-9JfquS;~-kb!*0YupW5eC*>7Uw`!B> z+^C&0zT6$7&~VHHw3F$p2%r}uMBTK7V;u)ssw`s!ZbJUUmw)sO*>+L)l*Q(131_xZ z8ZdGfh2Ez~I5OtFsDFvHJ-HAzJZjC~>~ej1L%Uov)0S^ce0AZ%R}=XL^G-A8(5SBUlmfN+hgnc_1fmS za&xsMOL$asXO{eDwYybHb6a!%%fr~8>AY&p*#c_g(D7!APhyk}L?*%8FXY z=lyI0?TRgD|I+db^{=mb*$OkAHt)XMliMLW;9>p?Mo)3KTK%7rOt#i`HFkcRTLm8XR!!ig?#!y<|MlvEz zHgLmzE|q(QAt=g>KsI7|CrysTsP2&dNQ~4-I%7)-$6-X)bBbAKbOtw^G>DO@SsgXr zC%&3y6m?OTXZju^8&&MTrw}8)5%o`T8)L+ufJ>=z@O&CA8&A=A<11=bBLeJ`2(dtf z38et*C-CQ3fsoG4z`AOo)*5q!Prh=*8Z!#Ik!&a}%KYz&;Vuj=u%O7PhcUeVtFf^1 zeLm|P17FYzb8N;O$IRMSQ7ek@AxR^v0ir?G@FHbS06Zx;DO18CF$YD|@`0s}2wbwE zgK;q-e$LOcme0y`D6P9U@eL5{o@Bh*86#m6iN z23g%CWYrv7@R9(H){Q7wYAglzTU{vmJ2d5EkvP@BX+mSuS__Ce=L9$89>pYJztN6O zy24xn7@NDIAae&nR{yEhoQXiD!U|KretOqg0AYI983CF2?DrV?VZW6l#kLN;qh&pk z_R%W52L2^MhFI0jU1eoTm-2E>rLxX_1A5;L-4I3ZSUE?EopN`%|K0kbH0T}4;tG`W z5@WxCvBUJPvnK@UeK&xK+#*zBK0HaJEO{jv7ZKa10hKf>zOKP;4n)Td8##NV}W#rdI+GF;G_JHurcJ;l$Juv z)|`Tteb$h&+TD2Wi8QGyqF_XEb^&8eJut#wRmTz#I+HK!o7ysRS1^0az!c~0$AqXZ)bi9=i1fQ-p*G+!=onRFGR7t$IKuR)iquiWjT+=KS^wb!RU(%IlrLr^ zJwrYLgCD{s3GWgO;TIgSKCCceeTZO=dhjq$6hYMtuY?B{&Z7# z)WIu`FpNMP2d7_RIShFBgEctcmzv~Ma!?bE@C`A zVp)13y*Pnqyn1`wKYt8wqVd>Nr7ZRZq)yarHP@-(oAQdf8+E-?^+Jjp4D?4NGXZy3 zX{bae%FM+2rRsrp`}MD$8E{h@XL9qI`_J_6GTLd6OKR05#M`gfaOi=e3ufMbsIsUt zsbX6D=9xdo$g*uZTN-}f`k^M>++b`x6j8T&VQwmifbWY1It;Vne?8A!0*e2xm)bE^ zZ47G1l}MIojqJ8*$%;61mly-Rhr}m8Gn;+O-V-UZqcl*MIsJ zqlVJp^;uaD4zeeSQcMe#crUv|lclx^85s#uTN&l)b*^(KU#?AGgL|vA@^zyUozBG3 z>x|2`yKn(X=bXQ6r<8lCmIa;AeJtAZTDPW{3B6fC2T_!#2*ewBPJ`beh&*a7@Z247d-9$46lbSifO<8WH(sh*&U0*9b+5tZpS7dEu); zbpOcm&mvHiKK{KKfLmFc6|QCFKaIK&@!|SZ^3se1{ZoQM!hb09FYBKs1SUrmt|D5)t5`~ws&)i{jkP{R2dHk%tAO1|WKSjCs|KrJ z{Pr8e)%51=*?_eaVA z(U`jbggdUF*KBTZ`?Z|MxAjtX|!PBY<457OWye#$3{pL22@}8$27jK zwkc%^rAId1Eb?S{XuFwX7vIJURsPbatq>v7OWnl zE#_NZeU*)0tlaKcvRXu2ArNf!5=Z+^Y|^g-2K>q45q{TF~vIbM|hiD4^P^b1$lN-vf3x8b{&`~2Qw>JU`aLeJ_)Nyi0n#=1W z?+&o?S&4XfZUZd|Bk_V-F2l4?;~ECv8m6j=c9`N887-J9m0J)8K{Z2Kh*fO*K*_>1 zCJ8@NZh>8-@i`H{r+d9Nlx{hTnlq7)f=6vF>*N*k8Pv9idBpk{=g083uoH$y2sIK&3O$or&Kf*;=FGu^X9XXt$}cJp z{V#n#WCs2?bB11QK9LIZ%ggieqd#RnA)PxJwYRArc^ci$Ad4rbHDcquv{U7FNdnJt zUz5ZDiw(sWliYAq%NaQupU-Qvvze7G({i%-S0krR9r^zI{3B~V`qy>+y19~^tTg|c zb!8XlTjiRT>V5pD*-KisTr!*g!~@-|Z+FAI8!+$O;JjotVD#)Za5W^M`C1WxNKw9=F8rHpQe^7X*zz8Z^LxfuVrgK-^LFD434&Z zO1GK|x}oW8s(^s#E{R&`=P z{`kcER`VbE$z0z&gu#4)e4nEGF;4f zx)e)>#~)(vW*)cf<|E9}AEnvYbNo(>@*|o<@f`jfjn97k^;h=eLd?pa^WV)fr0-ZN zKdvL?Gl)w$=5e8q4(&;}fy>H*wInHE0i}if^ZmJ-@n{7d? zqQcS)_6?oEW(3?x$H#fP0jW$5^&p zjLpaMqn2}Q#=|w=u#7OARDa%q4l@RvqVEH>eTl3;Uxi^p#pi4OsZP*G7~c=po)_Oo z^?Bj*#PxU_OS(5dSalxdC6A)=yft9foR_yq&(&@gIL+pjQg^KTcu2bFmjj<2l(ktL zOPpv5L)G{ByR1uJFTWM{r-7h{lb14JUxtl%nRly3nK{8`kmpi8({ zfP9H%mh>Fxe?_PVK_+%4AdGB23=Z!fgaIw1FcqCYWBU=T?^96Fr{a=6b^8*?TMGL0 zxul{G#@@!)!=C>gnad@nwd_UbLlF(<%ask=-a|fdSoc=^GoOlHoCyCfE=^#0!lKtt zR^Bh-botR~`iZP8DQg?n{Ef>_5Cy1aAJpR#?uF zjgJ+y;twN~cIRQgu$F(g_WJ9u;n4w2iiSB?w7K$u0pHl0@V4jj{ zl!_*AX|jsqLbeW!%x3+>G=4M)p?;Del!j$x>CclDEhU@iFm0NIH-AfF_wi{-Qe{TM zIX*8MM3znpD^AYlXDX(O=kLvbg)rPba^!Bp@0I!Q8K_UK zU~#iqvhiX|KdD=meoH1bZ^`7d2eIVVt@+78gf;);oBe`U$Jz9oSKKU~KEagH#G}!l zeEjhzqY3@dOnJg!A3npTA2*)w|AzmOkTGZW*I&<`^UmH|Z@U%$?ch-N$x zNi!)SM38p`fuNVdJwQy)Ac_czh*esG_4NIyr{9OrZxQ3v*Wn|!uSb3DJTQ*UvYJ1_ z;?;cgKn$&G^yB{ zLsq31>nr4h2r5iNZ3-V9>31P0$Ptx_QIk1XojF*onQAs~i%Zd5t3%bA-=%uc4cCF* z>(E^8O~HE6cm(apH(#n&DYt}bkcvXSWU=^&cxW)(1%c5m zGQRU3)^9Rv8Sm2K`H>;RyX$4n1;w4E)uZ|61QVi#L@(83*x<&A8G6PzYv9y|eHdGF zQn;I{beosG(pP^@eLWiD?A)5!jCEqqNNiMJv?08e|K2Q9+AFbNv5V0MdDmb!SMHN| z6+hf8vk1L=7fO1cOzO`zwGv(lTouGFy?xDoG-cU z(5%dog^T1QX_}*R0>8YOuV;Lkrj$>25_ROrFr8`YS$FVWbFIt^b2}ahEtEVpCYNKuGdE6Ia?AUypA2?Fm zD^jP73}vxbv1)-Xo_vQ*e%FYXCp~ur*`>%0@WQT#u}B(@a?fZT<&hx_VZxgf07iQ? zF5Thez+)Qa8l}i(AjNOnkYC%V&;v=jtt zI+7-D?wisk!I2b~7?(2XnogZ+&u1%0QPfRK?20qV(;;v2V-sw$H7CjDP#m7NcAt$O zkKG~!p2gtjN2rA=DulPA%~G-@7lW5VYvDSOTz&@A+Tel~I0|NBXyUZUK{xx`5R221 z3RUdOW+fhQlQyytX3l;oai~h*A;kK&RMbeU^amV1`Ki>lin#^;ZVzmfE~tJ?K8{Up zFMoA1|5;HV24?XdPuhxwJubD$Hei;TlagZh*;%W>!@EmwIz3w7f%Z7fGx(}q#fAEu z(F{&EgO>)5LS}_UE*RpI4dEo*kP!r@pWq{PSvSO$bb4xXo&;JLn|N4{Lnozp(pk0@ zs!4w!QcmL%oi3ZLSKrN(Jr1j4PtmgC!PW>dHDz3Bn<_u$3nV{QEnN`UXqS(BoO)UJ z;e+{cVAR$VFQq2s0Lx3aOzzsuBDE0s#lVk?1mz0u6*!LN@9W&{YDMp09wgG;ZRglhY8_mxpkFLWRW}-xEhF2cB|FEh~%`$ zYgK?LnIC1yYZH5(QP~@YCIa$+t}4(sgqkd3Yl>Q!TgsBs)ZeWV)L|q-hB`D6GAR+# zq9!Hel%#;uRF@xk95%_`046CQ1Ed^Fq%Ik(z58zNy>*q4eq)^m`5IiOR-1to7@6x+ z3x#?S+yjdNkGZkB`bi;IqZJ*L%yfEKMfMp|J5k1;65nBuug^WcT zNhN6^WKg<8-hdKTg8WIc7?DM(^k-XlP0#WrXI=HazMqf!`&Gts>5ol(Iahaddl>17 zXLqWZe6;@N2Ule!`?9Xuh1|dL_sr-1Wjk37yJ1te9q@=Q+XNqdFmEyrXFUy;BH4+i zn@>)o#8O&9w1D#PBAuvA!jlIO(~*{l@(Su|uYVeBpZmO{{?13~``;H+P2a_~NEu@<>c=8b<0F#3?1f(t8&NmWV`TC`|@3`$Y>G}qM)pv{@-Mu@0 z*b^~eSKPjH>5_5dmIc0Q0CZL{YTlSJ^G5NJb#MTk`6Ixg45zTpxLw8VCH5epo{Eh; z!ECb~C&KH_hw4h8-F4-y-K`esSsgk^Cl~qd4WM*Y9Zcw6ryg7o2SD0as2;;Opu^w!;?hCSTGT43RnKeNwY#<_o-C41bU1HZ zOdLEWPWtZu0vGtC&ds&`fpwUM2w2<@F<7%kV?<-O7mX2%3UhJVwPiCjRK(@6?T@m1 z!)*`mD=WJ%*!1w;GX5^V6ViUCTjBa*on7PhOKvuoLZ0h1HT1Jf_?CcvF}uX?=Z{9} z1iNwDVP-MA?ULK#OQKilNu&Wnxyp}A!`OJf#m`^hkFoK7vFx7`$-Wn}$7}bnxy;Yz zxcwI87XYR5)k!MpSaZz-XY%o6ncByajU`Pp;lYw!3TD>1ER3GI7`f5Q^;3K~Wkm18 zlGgZ#^g9L$%7;#3H;9iedk|${Kk#}3osGw6oD&f@8O+>9H%CB%dV68L7sgtC3d+v5 zLteJg|HvbxCk%xb!d&mb;@Axv1M_!C_tP3)_GpB@C7cmX6-irxaY*e2eIqfHjzU+8 z_XY}ad4jee>@{y=7_*B&5_uSKem<7=3FzMpAAb-M3sN2}M!!u{&Y~e;7e=H)U+PaTS63p-e6P zduTKI{Qc>)+f3gT+LC<6o&(j>dUPWGHM-yC%VmW&?@VX0mrY^Z>d_rPN{l&fo1-<)p>eQS4M8D}(G$%wQfRN-X z3cij6Q~G+##Dx0``u6VBsZVeH1b!9Z1#p2)z$--!gLYz%5R#$7nk{3wRJfpvdCG?U z8Z>qcive0Ul}a0gbi_oXYibpA&b4eMYazm?(#vAQrwj$eUnJ#Gt31Om(O>7|6W5iM ztxH1nlb-C6q@(o)YJFO}SE!b`iLt5$x~1*8G4N#;i97!s!=8WvK|3{wt%^DZN#eI0 z@jNowQ<<=D`SN}A!?y52{B8Uj#CEU?@NdUtejEQC|88S9!4>FYH}UbeU3S@R^dnUo zU)r}k@(VP8_*}&IjL+YOJ2(?ocb8FEcecAOjejflh}M`7dyL2(wf=%Q~VjKeHpeH8-xo* z2uw##@Y1j`xFjzekP`t?rrbO5ax#Ey3@T}hy^E7C14Irsl3iqPrb*^rV%rtkOF%8d zG6TDVWV3*~6hMTtB)uiHt*!GiVNL0CBDXX3Mp#dUM zNW+i5J93A?{Gt|!Z4Y3g`wL;uS}i$Z+CmH3#lpzWrV~VVVHlh}Uf!cOUwB&7%6Oc$ z|BKz)i|t2O!=d&#_M$g1H4-59toA)W0<#*sEI;zSrj=fBL8*Q!1`P0P>bbS*hl(F- z!39YYxAJ0F1q^BuOHN|yhu+$6ks#LGTl=H3vaA2P{&>;S>+RsbPFd;ihM((*?~RND zqeR93ANp#)MOX0VzAEv}9`w!dSlyMCLVm*IB$5TH3QHgR9pFJ@(Ig?(UaEbSSDI{I zt#&Z|rz#b@NVCc2l`z_7hheYs_mIEnk?7*Jt-7cCq*lDvmDs&G^YPD`cTaRNYpWia zxl$`;btU#_!9QcZ7A9o=1m%Fg8+*Lm@fv@&OPh2y^fgC$Zo%!W4|6iPFs**Z@OkvbQSmXVi4hdqtFU2Dafvo<7o;G>T zD}*k*gdMb&L-vMnybpbzfDHzbKL*7~^N~;87bk^Ii|SA9YIn7>N?TkVT+(CK8Tv+j zquSY9i{vAC0SD*g#K)_Hnm4cA5uZbB=V-i1zGN}4IewkdS$%`n8H(2YxgXB0wGP8L ziLk1I<8)^N%%Z{^SOCMkHQ)JsL!}1@zV*YshY3JrY-?&UpgKe_5zn`sW7gZ$n53jA^1ja?Jah@*K4<{i*xb2_LkgS6;0jpUiNoVOZ}bX zEzO<0Le7_O$d`FPr+<3B%=S2&H+QmE)ygYq;W zWu`HX%wu@C!jmU4n;RHtUwN$#V@ijbSLN@tro3F9QC1dM6*)~{pD_W>JQ)89jPEkW z58kzy7?K(=Y=6Wa*{%R)4y!j$bpW%P`)D?GyT6lE8HEttGqJI+SAA z^azk542)VIVqn;h;u{zG60tLkP4vlYya{|X zdm_ObI3n%m8_#oWfL{OD`q6p^=cR0--UIphVYnNBy8dD7ffuZd7!PZwekxE&=Ct|; zb?}SXHpi`6EGe`k{DqH(Q4oeVdi=U+f4|I|#a#>;V0@Ig&J!;6fH( zv0SX&rxXc3M%;=S_62RG1iqXdCoA{)0<*nfAs?OKmDl*dR<<>9mEMC*WE1&DP(6af zL9WYSHP`6xz{L`ti)ck&DB~7i1Rm2o_0Lh?z(o7V7y*?$o^+(|$;A2*@RyqP2t^DO zjc;Is7y%<1poxyo+dT zTDEanIZc{HoaKz`LKb)_?FvUz)H`dN+(F_Px3179sDa6V8k=f4vDm)>&AXiYoJ+BN|Has$+X1Fz@*K>PMf zQFBf(WYB{_&vpTvq90-NAw7W*uDm5Ba^C1F@ZzHApGyQnov4wbX8J?;%z=C5e9$d5L;GMOr@e5DoRr~nq*B`y{#z$Xg&V5_v z&)>p#Pg=WX^5ivZC(#d{V^YXz&{m71cvuyy*#|mhr;`-}E6JZf!>4>Qy~@A1zi)=} zsdu`6q_W7r2=G5?sa991eX;kYk$1$@1JD3u{E$WnZ5^wEerL@;uYHEH!ky5%Dp0x; z8x*@z%g#uYjyN>^LTQ4&nRLMlKru}AnY)o;SyB9p!9C+a9p?2fqr8s);0Ja+s?bTF zBb%X0LO_mwwFFZ};I{4DO2EjFh1XNae>UBN0<`4N6MEU5B@@6!*}fa<@kA&-sQIkAK{yOgO&3)Kwkkn;(G~pkOuhdL zR#WTCX#1~mRVKzHw3)brZv)T+e1sue!P|}O;FD`1peH+hi@+8~rYSgV-y*&)=v5hiUCCwDeVXEB$fTU|NspDNk2R!uUe( zc)INr=Lr>UeErkNrc+?qRr#k)_xb+wADm8hdA&dW2$^5Z`fv)~WR`m@U6p5*k>o9g z#t(L?7xHbE%`omz$s`bA=gPBQ-W!lrke}4}4GdlbqP_7O>^v=spOUzq@lr8V0zT$E zAS_eE;)MplnHfhEeH;vUeY~}u+P|INS(>Q28}))-M*hP=xPpjs{sRr*5r*@;ptPJ1bmt2X$yZyxP5u;lUp^ypG&(~f zc;YrCIw;Cwt;nBx`8Vu=iWPLszsJY#q~*k}p%Xs4 zhMw~~gC~8$KRmzK+vsF(Y-~s*Fm@&JD4a6JLP~9V<_4xEeA9vN55U*xDJLX2a!Mhx zQRv3W@|O+=9~gn^K!=0vj6n4gmI3`tY=Yd3IYvDh(%#Hl3OPTCOx)}cB^AmYs`vb@D+0Ty& znGeH57JJjsG!8_Qb7RhMol43B#GMFvWeqpHC-lsFew7bAM%*q^NGN>Qx+l62r_tgs zvOI&lFc`r*+kA3uY}HLoi>j(g>%xM(m#)a43T984S``u7UGrNe@LW57vwztsdCK}h z3tL`6P3IOQ-xlO6b%i|>NAb<)Uu$zGJYdU-O|>q)Pj=O(nwx3hoYw+KY| zx2;7@=Yl+23+o3I{9w5Ud3)ah4(yyXTC#}A@X5xo!BAOLN&C*rU-*)M`i{fN$A%cs z*%e;g^#%lh@?hNjbtX^)FM$C9$4coTz$$Qzg6|=_zR%Sn-!ApSZ)@wgth4hA^5U{= z%LGh>W9WOP2S_-hq=)ibxb%H?{FZvz`PF#^wq;pyc?Dc#7Sc?yu|L$MJasH_T-E@AGU za|XNJ?d+(Zt+As_!PSeFyn$6RUxx{<#6;IhG++8#$&_TxnZU2)Y4~>~vC=Xe^W77i zFOgY72Vt5-SO=|`hatL5zQ?(Q|MHVD3zWuDuJM4KVECE20fSVDN%&`cw=oHOfc=Pn z4lwsRk=)yghWK^&Q@c~p%)-Ng_BS3)J}Z5>gOzN9pb3e)?_8S2bh zsXBdWOQu$rD~E@EKPTaa4mZTl`Onb93W^DSIP5=j;_*hpobQKysFX{UX~t8vyj=Zo z7=1X6-Z4LYc<6udj=}S7>?yTcI!^cYI0x9MQ%7)am}{Z=^e=-GN!j5Ug5%O?bQi~G z+CH_mbo*2;!<5fX?=W3_UX~}8 z=*>HIlD@?!j~5l`tzzJTtjEFwbpbu=3*9&iKNB>N;qoL06Ke=I`Bk@;oaEL|>t~WY zDZV7hq5qZSOYtO0agx)Wl&rb+KO2LVjS?S{;=^By69eggN%7{;#5c*ZjL)=YLtZoB z;TC}w7Ro^;FGdPHHx?Wd=tb}%4~fX5^u2sU>!cp+%9C7$S)_3b;Zq7TauVJ*v9 zwz3aX8l>P>1G0;g5vHc|5yii!TC->Pd(FsB zR*MVy)5XPBe~nsPY%5J}+1Zf$sP97PDWS&jCD3;ZYY!!7&rtTw;7@jLnQSX9F0N6n z{$iww(7bcc{nL6xd52^fUJ;yaWO6&=iPP{;;#k@Vj&)scVVmwrma?Zx-+@n7)> zm~b7;{~vqb9Uw)K{Xf;+GqbaCHqI`~vWeMYSmH(&kPIRs0)l{I!UaWY9OgO4XNs%Qfg{p zLn<`^{kn&qqXv+wy|+IVZMd9&<+|MYDAsB95o_BJsSe+%)^b@XcE+u*79GB}w;D`j z_;AV*+9r#%5M&Zyg$&%RSh-a%yX2$PO{~|@;TwPXW#fd={CVj?*73GqMpfO=d`za3 z-TKs3{CZcm^O+l~#~!-<+;`U3Rqt^n?H@3B{X6QAd;anBeCG^4CI6R=8-FR~=T#l| z0Uw3nY1Vwxus>bpinRz3(%)Yg{ z_d-7KXeUB7ZgnN`quKohbrm&y#0fVZJKPhvVDyT7k4qXPtxT$4I_2sKH{fE$1tTuw z|M;Ys|IRn7Un!OSujBXgb*>Xtfu{O3+sZa!NfmHZ$i_=P9yoS(9P60xxCMA(OC1vz zpdrTM7TmMyv$IOu@et7ezkSTJ?6{@33?l+{%E&4>);DxA(emhCqo(x;R29|rn*?* z`#f$AP{XNSR)XUvohmhPAb?NI^?1U7S4vOk-{2U?EH&Xig>PFm-S59?B^+b?ZG(4T zv0lrug6-Z#e*e1v#KMjh{ZX(JL9wy{%D`z$Tr3xWGC<;I3&2EO51T0YbNTuVZ`UaD zR;2OATz(%rFQ?Xo6ZHLI?b(YeIwW0r{bhWsmBd}vTuPUBB9jS%s>C==$UuL`&?rb< zwAN5`fE59ujs(oKL^4Jm>a%+=FOu$MNeJxlWo1W%VpPHGA+CInXY|m#;OGe+SAO#7 z3yZC=mwB_!zwYI=#SNd_eeoF`%M9t*&Ce}8A<3QZ8Rg@z@OM0YT?HP`(3IazEGBPY z&hl-{{ZZO)Y=heC+1(G8va?tc>D`w9=rTPBD{ZWlcgeJ)K|J_b*;sOkZUzj|9f#T~ z4c`DZkafWF6hhy?>BM6T7GD3#+9)i#)O1~Vw>+;nulTHz438(H$2Ys_7hyA{{7 zv|YKCyy?>pk@mWWUm7FqC*G-+OLvz3g0}ghw2VK`Uz3)pi`f*0NeF;Q^jA)S9G!q4 zZd!mzN`+S8#z;^dHhMr>s~l}72B>>&&n8U=mBtDb_9hXD$ZF*4stZQHIc?C*>(Zk- zffFmT_{zTXy1NU`Kc;i%V=l@$wQ-XkF@iCS4SxD?h9XwN73m&+ZIU-=wwN=!cj=tM@AqU>Bx6Ik z>B$x8$!u;`4=ZZfY3vkFdWDBKvfDj3V3X<`hIdd5ylz z`B$A=SkNoZw0)d^l=0dX>|%^v{G?tZT@=a&KNj%&T;rTS zX;IR^DkjF!HLg58z4;=a&$%)^y?lK0KK^buk9=WzZf?4Kp{Lv7sjid4AJRDSA>@Q9 z75N5fogi7n)($2QQ!g+TFn0$wMr?-cNC=Ew>cKMq+Otzrf=b4XUAy+8Y=mb?kqm@5 zF_RG9)$kersh_LTm63Ykt@)IgkZp@kM+jUWM!wqbl$$Us0}qf9d1<;j5DFNXxzJ+l zDCpGvU14Z0Wpq*ogK9nzNzo2v*sY|qU;W3RLEXFK8auIkR4$zye`5J4c6MCFTN}=t)@fo+ z!9cn5N@A65BAQ}y#zJa57Jl3yCDAfc4~&OI z_0V>}(fG&L$FGRPJicbH1#yU!sQ()sPpsNaSie}IubJeqPB1bBAIPYo0XQ5~ZX0m= zrSCj<_<$*a!AloCwz46w*K1FWOi%A#5)adYbYI4YbI%+!dE8M)4H`S^ys5(m7j)a4 zdcq5UPn%02KIqiJV3dZVWqOz&_SDrflf_IgfE%wTr}iI?HMGGX*3b^`@A9fUBJvI( zJo)p6(E400$s(=K9WpO9SF{GO2vuXwW0O?mT#J1-Dv&A@F`kYLDWE(6nr(9AI@d~b zFsGTV(M*tzDx&k}ghg%3wNiD#7hQ~;}Lrm&5y5^0nV z@@r^k+CUte)b2s7sF}!+cM1-x-?3dT=>cucqG+Qu(;~PaDk6#`k|tx#6Q*U8ux{rX zeh`eA7u$Y}wN9Ae6f0Dru)4=IBoLpaJNh`gDihk{n|5~X>P_MGygtR-HHGcub;*^m z1K(h8Bxh76^E$ROWtzBNpMvMu&dBvQ=s8}8_YgNf&ap`O!FdCCk2oHa;~oi8iB1ce zQ0uxhI~QX>tsBN&`50ZvBHZdSwoI%xW?%+50&EfIJK} zMi_1iGreVTWb`6BT1hq$Ph#J5em|Dfbu@pmy4U|vQGBS{!iHJ+PvVw@XK-;V?gMiX%TD~~P zPCdMqmWB!URC+?6vL}%1%v$HWegCLD>M=_Y#X%O}g6Bk+m zEP#u{CSI$AHkr84(qFu1gAHKU*X6_ha>5e!i5wAR`#_0_rLtzko|vj>8;OW%#JX8m zSw_e5wG%Dfl;R&+*I>rP_qDVS(daeX9k3c7Ggomq(t_slGBZq(#1AO<6xod6k{oE} z0Vd|*ZU!^hrmf#M$wq|jjY9|b-a{+0VBRR z{Hb$`?e?>@&@GsQtzjx*4*)G8i~0f#gPt%D=tD+AYY0h~L#MJ06tZ>7P<5ncNI)zx zF0jVZcG05wNy}=p)7lz9JL|x1@g6ih-;FN*TXfFI1H($8&tms}K;lD%S)d`L*3ZRKYP zIe7C8bh}W7Z@i%?jW^yDQu1cpa>kFv^|#)@!x?GmJMkK6zBk?yrMyKp>ld&arz*qs zSUF8hgj>ZqH5hsixp>^LGlvC0zb7z|w|QRk!5~a#Y9K^OI}|q=WC8XCqO*?&xnUpb zV`;2YdJY$uqp>C3^)KgQczhksDkA<-NMjG*w6;3}e4$lhffe>lz*>qP$mc_siYOZw z%{Rm0gG_ku7Z)Gi+^N%@zKl*Qi%TW!ZOvGxyK?2p{>D-GS&AQNo{Ua6P3@6c)Tzih zs>GExwKAuuQ-|iI&K1R8NiHlaszlzuqO8i3(ScU#lZQe;RAO%4 zAXIx^u41;GJ=oE2HNSqTTqUZHRoK_p3O%j(#nLlU zUjlkcPf~SO-t}mecc?28A0yWPz$K!@aq&M0jyZ6E0#R6@SXx^sC8$4q81XSd^^<~N zic?x#P@pbzLdIj@X@%Bq%|#Q?V^l?yOgxwWBk{ci2j5F!I|8yq^v_Rms>=!rq{S4u zqkbX<3p9B6B4rN}e|6CEw?T|ii8 ztub&Y23Dyx2BK3mTnXD8Z55QDdFbrBarK5^P-`Cay#Wbz?pwvqqedcEqfY;(=_gK_ z@eu!<>et{5y@%thMQ;drzt}W=(up%RvChzQv{#o&FR?N!VfC$0%qrNi4L6o{T}2uo z`5pg}5>dKDYj8F&{}pNmBE~}7bdA7#qy+v=*AXIyElGvW#Yj+VC7lBz{h*y5B*h<5 zib*OcdN==Q$PoU~-BBvhP>rI6T(fxbH8xt&sv$+61YK;vVW+9$+JoW~$sY4^lT?$F zmagC)RykxSt0c%`HAif(aLwY&RslqSf%ed+myGSs~mLHP5w3EIt_Q_?x32kiMWKVG{Ub)zp6Q+ImXwaTPOV(wqGI_KwfSpk{nQ1 zEHnV>2%Q}WKHo_~#oqXGs>e`u{(O_zSr+O~@5UEpvT1|XjR2O8n)<7nMV5C^SQ zSg$Cb_(Old#*ne%atBt5;Z#C55&%}0`Te0smGS7)jzu^3G>#X@*U*%LO+DzZ^{7vx z6YZ@Yb4B?C#2AHwm303OIB5_O9*`FMsh+W+$MxE-Ks_tNSdv4vp&mJkCwf-fR=9!& zR2FD|>XSq~Jm*NVpd@Da!|lw7LUx+4M<{QH^K?W_yX8~ZMC9!t9X%0t(GIZ=m|7{h zB#aJA4B55tUW)Bd_E20WdMfn~>Z#aIB8pQzG(;@lQ0_``hNdEpa|3lwp(m8%3!3N9 zh9X!ELiOnOmzd9>R;YQX#PEP3N%P$Hoi|0aa@s{hlG3Se#IM?P;3A}z;#X6g$_5d- zN};WBUAKVa107#;UL^`&`%c>qbDNIah6n&DzR%X;d(+U4Dm9BHz!G|g$OWVg9Y7^l z8Ys_wGueD%0skBSn=oYN&$QBL&K#Xmf-Jv=Ul4)5swxwG2o*Bpd_QodK@I?q zE(O{U+Mo@y_f5IdbjoOT8j>-SuN5M40y}}=<7;PX5x=^Ogix&^C%?)=g*78fDuEY% z;a5lwnkL2)cei}$>aJ{|oJcxMn$4U^Byn|5ZQh17&KQ*(LT+~D`rPEuf@I3A?hox$ z#wX+b*)3l>L)!a(p)YiQn{cW*Ls-+AL|NUP{ZNcVDc?hnQp$H_O)_Ld$cn7&ab69Y zVB{@i7L&b@Ts`zU;yz@wa@!|jpW!tkUtJ2zMh^=Hy}puIv68U2cqKK!-xJ^F&BzHf!1vaSE=dx-}gj>IP;MrbY|x1#hV*?#GPXH$=!c zD+M>De{b;ncO0e)55FD=-1~3hB(^5{2tafQ^0oYeZPfZzcrDa-V51|;vs5A^`z2{m zfjW^Ro{?-%(u45b(XM-tGJ$!-AuKQ!yQOO80QjgocQk2=)r9^K=1!F|NW6B8SA(uR zG!Xs+nPjBvw~8^a*zvFRnp>|gz8-ScU?fU*>WD}k3Gkyx+5ap2Fb$-mr{h;3-D}&I ziNTjS*&tsNKkCBz+l^=jC;6p|<8*d-xPc$Zj>*56b|HF9lWXRgecx&D%{bb0A0jcR z#z0Me1bwysIzbO+)@q*p<@%ek;NPGy@ppF1g)Xl%7d|B~%{prO#z=8UnVPUggcmuy zEKBWIE9ZysIn_-1Rf*t^26g**b-TdnZj?F1EK{tXM_Uxi-iH+j1&p~WL`tw!N)P7K z%9GA97x=r>(^23;b-UC+bCxZ~I@ikeG*`*CJN(`NU}Y_RFmsBdV+ZO~Fz>krF$^9t zcPd(<=}0xHW}cZ=5N0lQw`uHAeL=H?Cm zJ@Wz%qGjmIj`ahrwb9ct-~e5PD1gX;!7io`;Nlo0i!2WiV|Eg^d_yNwx{s+Cx^IYl z^X^) z7wwm(Q8S|s(I{!ZG%bt~3Mpe82&-}(J30cx2t2_E%=U2K;OF~Aq6xPITsROw!$$ucCpOGPo0ud;eyhUQRy>!F;MekiY@7@!N zJkI=%FW$J|vUeBFnYgwzBQ?KBU7<;h^mEhilQ&GhzUHLrf#R%jZ0AMnk%;V&4ez)R z_2g`^lWnjIZL_(^3WcVnHo5?Uwhg+L;v1^9T<8WwX3J~~3o9QCXpCcPkQ;nqe>WPk z;;{qQ;1KbLO$5C8UKi%&MPKMRTfk5J82;b$gNa$bzs?K(oDl=Xez(KqX}gOZwAd)& z>tDcC=Qigmti8n?H&?xGl0#{l!1ZB%H{w8k5xf#(2s=*MM=#lE)R-71CsNmF8a4cE zTWouh`V8b@}O4V$D*29yqm3v!s|zEWNi>DziEi<1!}0yR|<$?QOF zLkrzAui5p3(poL41K*<^*=NzeUGEtVPU9F!?x3f3;6{!I{WmL)0IWD}U=!W5OnTW}bI-75mOp#t{W=8p!M`V8vHY18SN$4YzZmCGmU&zJ8MY}$C_MK0a+eQ~ zhy+O9otu-5Y2UIMJ4%EW*U!G;yup(@$+>dw$ph+7>2!RbK7H&c;_P|d=L!D5>r>f7-HNTRcB=MWDyn3t*iT5ofqc-eN>mP3<*7#1pt&sazbZAYO(-D zYEU}c(>skO7dxa#lH~Gq2s*?50+0H!94t(dDzU7N{KWU-LGzKO+Ezvqm@ia^XldYNv-xUuO`QQvWJ=tDL z!DT&qjbewWU(w_h&d_?Xmzf^-u1yIL{bvU%`-D!Ad#fC_KTXh&Tm5EQ*Nn91IzrwX?tE^*=K0QkI3=FM;BPDC|3~=8^Y1U=Z`&$D zYyT4d$Quv-uhGY}0kX^O?8`_eA);8cIR(s0#)b={`!MVu;}}pCIWfi&%iW9I z2v82VOE7)2nL3(w!yXT(9X|1}$3q&AjS0JSzy{32SK1(?>(^VLUvptc2V*@6Xf~~Q zLBy0VMeta7;oN47##-|r^g$j^jTz1)Fyk|DfxL4;>2sSA+zJ4`Ik~7PnQfMWojiOY zU+B^Lg}(^5Y$q@6gBy%UazkVSq0b6}Nlu7NVz{N+qGUcs?q2A@4nnIuoggh^lB4>w zuExIb!tAk7F}6R}Ruxy-0=_0*6#Bf(f8>)do&HR}S6M!LVA1pm(;E83%aFX>MkID$ z_XI1Nb6Oy<{&D_YP5;yU;ZJR(DY{?Q@ral1*nT;JN4yE*ToVtVEgtdcD(~7rsD2oW zNN9}>x^`_Bp8L327`t}*U+5juK|=2U8wk;KL+vQP+Q7)i5`LtGgxV?UE^BJ1{jkS# z#txtM=pE=ut>Kd96k0R_yQ|)Y4WXwIOsMNoQk+7Mk_}?&Od1bV!|QKYrdD+l0aFA* z$nm=~nYN3Vaa|L1yR|_>rqnqr^pldAA5@ZQ(BN@n(2zs+z1t1@J~Q-FR%apymhRVA6thy^idmV6Te_Hw)AkWah{6#trFsu zAyY(m8w8wdvO;HL%!Kh9#!obsJ39wse;Qn2>_0NgSzDN-evCLxjNs(Mhl5Ux+(GetC30puU-4GJR-m<($onUs5OrOQceU$8OB(OH{6bz3o!q9xnCet( z%B|DWdRLj#hAg?qSstLiD-O0c=o%Te2|d(?oGFi3#ZVgAy41aGxvkG7Jb<}`S1^}A za|pM9(#Yz^pGa`8RJ#YgV~ihYPDu2~cKz59^~i?lY#eR-V@>y^ac%~?fJk1@jb1;9_~_* z%99Cd_8xmL8ES+lrwScK{z&p`AznxKu0&Khwt2Hvj!;MH_QD)#P?9T{#l7rjQczmY zMOTEoi}i(GPKTOeUIh-OpMOZpAN|FZU6sp@v zL$jZ`H!FxMaSks<{RnEBi!jF@eugepP(QV&Til2BoD2zkqL9WoKQTz7TUvHwa%q;0 z@8ggf2w)REJ70%2cFS-e^Q&Q60mKNOZqj1bM1wY>iv&sP4Z;{pUcowyFYzs7PbLAM z`ntM}T*xfMlL`yjA?_rXq|{gHM^}*@_fTOWPhz3`t9d^6v7Z1WOXL5M0nG3FC=hJl z@91Y_{vVbWbxlh9{`>DW-(kyvV5preABlc+WM1}{Ub*nWa`roSjyG<^nm0QQF{p1 z!$!5t)meB8eCfB{o|=!2b$wxI(vl?#(gX;XSUyXYPGO!r3Uy<#9n_SS!s_(3$KfQB1H&|_9GV-fA=3+KvTASkf2{7Zg}r0a2th}N-`Yw26H_N1??p>lO!kNiux zGeWq&2CoTK>|<7YF!e1nl@TH-7nWItx%1b$y;vIvDJbHfh&sl_!K8w5kFZPlakq^Mmb=Q?+3ZWE_&HWW1m%+8z^}dybWaT~JMGOO$2DI#v(o?L z7lS}d!`Iq`77g#a&^tX?ptFFY#83Ie$k$7eGEVIHuW+b zwZ6%e0Q0OB?Bb1ywlIQ3Xl_Jhv@HszTmY_8tk9a7S3 zNt(B7+6ev#1nK@yRjmJz-q9{G?5M=2d@3#Rv*Qy9O|9A#yc|C6Gz9ZuJxS!$kQ?At zB=UM5soW&QsV$oO)%IW{&$nerXqt(F6&vcu=D{!hD*V!=$cNP~PQ`lfTAfX6lT&qZ zlWB1m*!v0D^h7(Rs4O@ZIjY*`TI?92HT>G*T05|l|FmV9TF@qHl7)9O+tbGW4`-O# z!PmbseGK|-o>O*kz=}`Q7fA8|BgOw%f(-yP69~@E%{57(d^?t-6z6!D5ads zk-nQkTC1yU`ff4CAuXQp3HOOG9SV21QoVK1QuJk|qM)la} zp1fx9d0Xo865bKEz6BSuyPXJ6!3>XS{^$l!C+1VIdZo=L+$RQp<$stK2+QTa5C$6j zEdAGjI;X8C(8pWtkv6c<@k94X_#g&$jj|efUP=USO3Se2f`gVo(x}pri=8-1%~)gS znt;0b5OQZ-a7Y@17{%v4<XuqI5`r-!9U;0 zU&f;IfdqkewiB!3c{ChK&g=Y;1_R(b6uQ_Bj`wtW7<0l_KI`<5v9_$u^j-;QQ_Wvv z{X}XnzKw6A)Lv<pY~`fitA4=3mQhjZcoGZ z!ER5__P`!P_y7yA_Js|^# zYf!#Nd+wH4Pl;e93TPpHY(!us)>)4u`_d)v-CtO^nMv%*_wTQ{B1U`hZ?1lkWiFc9 z&~Wt&{9l(%ttVOj=n~0=o2w#KGFgl4#YP z^;jPo>nMi3SzZ=@Ig$Q5cjg3s_~sKDs`}2Hz}z=asE@nA)3B ze0A2S?);4C-$E{9;J24SP}2_31efKoy?n-j8+Spji;~&!j%a}65HRJzNjX#p3)`>M zt`D^t-6tHSCF*3`H#)ArpvMkdxZK?ee#jOo=Cvk2fI8!M(UeyN(4K6 zcMb>a%GKKX?Z}!nv97PQ%6+2$@S8H$u7;ls1YD>4l{16keC(yI450}I>$|W>HBLk} zL%k*hQKVr1XXPvma(qIG&my7I#v`|V-?r?fh}$2Z8bg=Rsy1LrL>K$(iFBep zk7DT3yf2DOL>IKZee&&^yhODD;)~7;OWznJFYbNz6bPr=LxW~xF|*mCXkgGNwf0Q# zXx`z{vd)2Wd><0g{RvGp? zh2B(@Ms1H=j9;l#tdR9(Ikof=owEl>7=kN&B|nN^)wN?vYFgG(RtrkjF3s}hbnGgP z|CX<3bHC|QR@b)&f5IpKg6<;M$ByqYdIV&AY|9;@{O+_ug=87w&oD!@tcw+rQC+rH zTXtO@wq@7qWSMdv)%(r5^N&x>N=f&*$DOvB0BE@XKrr}j_R-n=X9EcJvM0t1K>A;u zo0OKFoVscRtDg;!4lKgfbKhaG_b~Rl43_XtJVOIb-Nnx2Z_|V_}F64dRmwxka6{d<{EdOBac}M0gL+e}mlKc#p;(n$+pd#raJ@y&7pIR{H(U!2viI zj6$eB^F7h(NrW`~;WGaw(EK8V<|5Q{A*Pf-=mTgJ$z(IrTHEc;38-&?-e+3hWSu08 z`U5U4nq(lTgi6Kfk8zt@$h899CPD zo#EeqRatJJ86*WEfNz<=Bjw|j^LLv#~;3wikGj1 ztO6^+|#U2ND`r)&g1i}gz=FAho zr58<0TVuhq0W!Jq_BKzR717 z*E9*wC3V0CYxEQJ3YHuhJ`EuF-?bBTC0fP|S_fZU6%6)yyFM7Ks*YsKplf~KhFMTm zt>?_3Tp8Xl_8*eFl|Eb&`U$-4@6|JBc#$vHAO5K1;SwbeY}uAcc{B)4nR#2%mBq+i zK(T|c?KFCkwgi8~sMLC_aELBebi_GKeD?c_+4$MBdn@IL)z$* z^VT{-wgVPR5dx^k$}{c%3Us$WZi zX6#xDFylA#n^T~8W$8(}C_PCR)dlK;6#jBhmPKwd`BSVQag^WNo%AvbWJ^uuJL(vjm=~;MQq(XL@<$WQHwpMwFO!{645;p zm5IrM2rEQHZ}cw&P#D3O6h9uf_ShPZ#vU<3G7~IBj#-r)51Sd986jwd#9DB@5#K7} zqGQ4~W7jBKqtxX6t*=++qoP99(9dIEMCS{X3p4d5^0B0>mrKYe!@S6?wHVi3DafR! zJ*RZ1=Tg>d&oSyWB+?_23wk7tT9(+8lQP=EX`7cTXV$<3&djN?MalS??cvBS^OVVj609M5B==UD=$Cvb2<9RX?&jh zKIdkvfF1(41jR`p%8+p#Z66uOYkDHxdKnq-1T6Yt_yK&_Q&zOrfwa6ZK+&Ms-3kc< ztLoi1r+WA|$)%~GJCpK~UUg>$q}nsP`J^eYe}B{uRi1M9tL`K@p#zl$OscB}vZ`FS%U>2C`vTA8 zV4PWnwPqM^($YPbJEvBnih)Py&eYOm{*5P9nU(}d$~{#-9QFO{lYHIIt@>&P**!S)Ds>i`=wqXHqKAO-c&gk($hkJOas-6uh1lsGHU;Z}N_*Ijd8= z-n7u|o*cZKq%@|ctX?tZldWSdxCp+mDjFq$)D^Icz!JU13X0Uxj;h6bpcmhjjv*fRM?i&jl|+cYqgL+#cmjgGGFvg$IP9hZQBK;yEju zq+-Dhr7;OF=XgT58(gyCjgT{fSeq~_2e@UmBy3`AXz;<8T}SK^{Oc)VjtLbSs@J=3 z^^k-`^CH47Wg6JES>p((uW{rv!6;=F7y-zm81Y?%S3oYAKdbR0bi2V1jZXrP1&&P5 z<;tawL5@?Y*9Mstu|KLX1~4EIzMcyB6A(11ITh+Uqiq0iYT>0-X!QLcX1+WT(ul5* zb~`|bBdx*q(eN1t7i}Vlmjj;5v&L@Vzbs91r6(($3&YKYot5mAq^10q4TZH?xW{sr zCZ%NKmh39*obJIbmP@zPnZfY<;Hc``wr{_!dQ?ze8#$Loc-{H+-+h^e<&QZXI`Cif zS=yK1)w?s@-pCF9YljXjCvxMdK;ZT1wRevldw1>h*DdEDhZyH%y4Qdn{^in7u9MpT`!kD*4%O0I*}%A&Yc;W)~I7RXaJ<^w5= zw(Lumoggj-O!DVCTpAU1;-_R=>qK4`mg_=$!-kJ!FGD`1K*doatXOcDyl;Zj%Eoxo zg64j9gI|#MD#5TQUOF>~&+_LOg82(I`kMN={o1)bI=F3J8(qJM5N@AFZI|9`kA5V& zTkvnU7HpTUYnM)or$IY4S3C4mJ2a8jzI1)_-)oz{tWW-e*3jC_2xTMeltFE^nMCbY z#4EMhni6UX(Zo^`H8HG5(Nt+nOGoR&0v3XOLCeYRRq&+>pEtC;Ha13Ur!g^9b!1*K zQ)n9ZD&K$`CugLjWK6oTZwD;mUw1BMIfKsYgXdm{b@8|4Cl?-jTVdg?qYF~=yUI0- zr3~12>h>iyGSwv&xmP)R(=IbKs)Xi;)vXQqGeyN>3rkXH&^`}pNAUG zId>f@@EvvIB&vP#jX8l1@_$gp5_LPOkTMq6$X!wU=vxa5Z#y`mtAu805)nvV~w@d?O@3g$N z$2rC!>#Kv6*Ou2-yYb1!$Bz%L*nD#Jt9JLaYsR}&R&KTP>BgF-eN9dK8XI|eQxp5L zu~DsUYLeb;Yz&WRYLcICYz$4VX>3v+Y^rGtb#82w@o+e+u~BMiYEl`FnK=I5*vQII zNK<2tGNz^xWnI#AO{2Q1iCx?nzN1Mxt1$tfufCjqKtk zbyedvP5hF^#-C%3Nk+9N8V~QL zhYl}tl^ouUn~uS3x+Kd1qZ~=*1K2BUI(r4>nD>lwYRhxACmNgS8GdhbGs>9O^1Q3j zIR`6B9UfMS^?i+eS9lcPB{O+&_+t4g3C;j9hKfAr(VkSYOU-AcRY;h;@UYz3cu9SP zeagG2z!0!3Y$EiVzQ%#qcy5;!TSPs51-ofZD4R<<-ks}aw2;j`VJ zx;hb5+IEMTV$(zSr|K(w2A`q6A`M`-vRkDA(g^D>^%cCE=eR&HZxS{2t3U)$lo1Pij1*f zDQ!7}O@2zT%a47jjR(HOlCM9%JaFJkmdaAUJP=zA55IQB!i877CcXi8V~dPkB(B!r zc1xutaz&=MKC84OJ5SlL^mZP$LW#nnkpN>sf`9W z1e9GBd^cfYVn%+u1&*HXRm!Q38svY1r-u5`bVk#srFq$+@2n6rtK{8)M?f3?2*(Tp zAt<$Up0BiumElJZCc}4L+KIu6;J71=S(+j$MaBhAl zXGS+Uw_(DqlB_+&as%qo^B&HSCS*K34@dQpjEB(~uiv(9{T+N?nN*nSo-n5RnG>>H zB`N7Af8Kk3HdFHZUi`!ydV(o8&Y5$gx{*1Jhitv>xxT@O8_|@^yRrqKn>+JzMd94_BHi zZJ<=t>4Y1d*axiHzk2-m)zN2H@t^Y2^D39WS}rHMGBaI@r|#*e>g>+TUtOM8nV#o5 zyWtK@V^3VSexmUW4YiBR8{GH}ipJY>9yXXhgiTB4AA~o;esY-5+Rsv9_KKC~KJg7xG3D4` zy7z9rAuTH_jc+iHcY3|*Y9P{oT32bXVz{SN?3A?s~}U?ZG;XlhblM-E-aj_U^U*kZ!}=&s_mx z-a^a0QLN<4*^m9Jf8><0L9X<4Pu3-@%G(?J87js6z{aQ_Yz<-@FtKmN@g(9M z?LJ11ENr@yJ;E$5Du)6a7dJ_a^isoiY1!o`#bT zh!8IDo%OTICuvwQ-XzA0o0MnmF9Dl5M3>wdwYDbN?3bL(lR-FnUi#SHOwLG|+^ zZVtg9(VTLmJ9N)P6``+rC8@9pP?K8XLPer{09ndV7PcTM}XcW`93 zoDY5Q2j=iM@&m;}$7%8c9Y^x7!)?TtMcRU`dNUN7MaxBG$|4F#BoWXyT_QW_hh$nWnjdlBR zPfP(#&ue^!L|bU^UnsjaND$s{Am469FQ>Fdj=!cC?F2&a_cVH(6-AFYVfbr(K&G|h zw`&sE(3#6eOdy7Y8(UhVQH-!0Sq~zNg4XDjv;h6eLOXi>pOH{`Zt@tvTwp;Dh~WN_KGkF_Zh2J^`)p;ZH#8J>18Za6=g)m-4}{Jzpvnh z=9ssHiqZ~oq9be-!74Y_R(C`2<42KWW8m<<)=+X~1r(&E3GxrMuhu~)UQo=h<|pt) zGU&n^Ar@cLbSPFsR3TiTy%3M-n4MB~=`jblTv(jxNlKYqJM!RbvyW;UYI$;>>RaBr zefm*ly{kvO)x?(u+W?(%+3ynm4Ilg)CullE#5~ZlaXZKpj;XLAvS=^ySi8sBq0<-W z7>Xj!_5cU^+PyR*3O_bqScqbvWovwd?~8g~w3(Iz?tRF8)j%@kMhpRFUn)i1Nmf0a z^kj^q-Qc^rRG)KVr4`x^lL3T5;y<$_BOvteVV_88wUT`a zBQT;KVI@i^w=(&4zwr_bTX((9hGd4%4+P}ZnSATpyaLyD|Hfu#N;Pfa@dJMY zC^%ma2481Rw4677u)*W}mNVUpoFb<;Y#q45^tmU=Z}=ZNXKP-j9K*9@9?6lWd7YrB z7WqS0m38Qvm!1{4rp3{9d_h6i@yu~eW|#E5t{uu0EawSL9Y5RI2-nic$tRyY+4&sK zZl66~+29`;96H(+DC{wX6+Bx|o0*lBSy1~dE9fz$FyI=EO$pX43Bx zBXQO^dwd8x|0x$6*fGLR8X=(MKiEPUG%(^n5Ju7Z$WN=d5bh%;8PSmm0f(sTkWx1R zuZWo6B>U5@?Yrj}Wc1j2POw5s?U|c2_^ZSF0s&XntrHq@!;)O zjtHT&(ZcRk(Jes3Cq}}nLz;{F3s zk+zW68+~=F{fGU#?s0bLwAp{yy~KJ(A-JoJ{zIJ=^|;p0lP}^_#3$&vKiU|IC+-zj z{gn<7R$^qpW!vSc2km4_gPGcuO|N%kt?IvMJxAVB&@>R+JD%@XmO5|tx)_|JZT%MW zTW2Zj(8tr-0S9wt`<>aWw2=AA1MYI4yWSU2*75tUBoFqL{66;Bl~-Q&djI~f-_!q& zJNiq!g`cgetO>hCH}SI@|Ni%d&n;N+9O+c%NOtU!8IcFR{8;Xy#G0ZS%bdJoKgsPiz@^r*-Uj+Hpn49$OS$TH~ZieJ0h_(Y)fq zmf^0h&ZEV=vXseOUDXf7bn=LB3#*Wy!E}XWd4}ecrA&|H%yb%0vduJqEUAb@(BBBR zNUIKqzc?&lZp0di+p$I>MXaO}^S0XTt!z1W->&ZEOZXCXuT;n`XO~NbJNQZb1N@!D zHnJZ0+lYBK%WZm`u9{C#e)`&$N8E2Z=Yv~*`1Yv3@*?-7tGvYDITI66{<`WCry_g( z6{TWrO0L%_W+qu49xDk{c4SW3S>-iPmeDfqPdSdt2Pq1(2yuR%=e#xCXcHYIV zkgnywyz{XGknx~>7xTL@lkx#OR?g|PS74yyXg-c&`Su{X>Ycv zU)s_?|GR%=`uczL`X9ZHq<{aPy!=mI{wFW(w}=1NUjEl!{?}gq|7kB6yUmpkNjJGV zQT!|-kjpbmrJMMuxl)DmQ9eq-LMQSwn9snWr#&SbNiGppsK3#vdvS4h`e?86VcIVw z7{E&?V*_i}>rv!DRyJ$qhjZqn|K#e#`EoZqnNfa*=;z#$zdDOG&&lD3um4Hjzdi(TO$0C=dC39jq2nD8+M z0I)9)(S6v9w%+HGhE1y~?vw97rLb#qUFiwErqvdwCTH}n&mJN#nT9Z>ZbOhFr&Iq= z*VcCIlsX$*wg~#XCv63+V%-PmEMn@Vt?FiJ%v^q*{GK$1m$BLWIt_+B(tWNRJnLX? z3>EJ?o_9Q6>2*B&?s#1mBlkVnTu{0Xx7l~jZQ_7Y>0GP_cVKN(x+4oQ;2jXl+|AJo z(YZq%BOS+~%zBz6AU@RRVh~MB9eky=rSw5OJ^b4^A%sh1oVe+OCuBFdz_21b$6brH zuyUEZy24#mU!EsDS$EXby5UbQSpVL8%Xl~T(M4*1>9y~9&)jL#a(PeoJ{{Tn-_zBL z=>D?z-aA!)rAPP7MVZ~{%Xx2F|6#|~U)-T{=FwgF&wcjxIoyYTG;3C$S+n>@IN#fc z|7>|eex#=6?wT403p@DZilYT_s=y1NDvm>rBwT}V)4dVmp3ougKt0`kd*$$r?vwcA z=S;brXc_ekXy6Wn9qyAh4qu5PE}wD^9wC|FjqGOZdONcb+zX?DdmJ`DS}E=1qL2%WU7M$@IRA_ZKQvu6%GNL(3gzwgTdxwNzh=tezTAxg^ zi(3;;89609Zmj(HxqD~yU%GZDg5KX+b9sM|VSae*SoyINhMal=|Hv$>O4&hW`AOb| z-vvi3+QzbNY2lP}`d__pCx3OqsY6bX9~&DUJAdxTQ%+_zJ6132KV$E?^5bK} z?iB~YBYe5APhtvuE&ga&qi*r-L+R%hlxjRjk3(O3}cB zL$mk|{Ysn}r~fg)xsxBNnA@{p^vdJAly)A}e`=s(o-egyH@T=jE7&O|P@R?H%*gK^ zs7}fBr*+TCEJ@2RR=P2#*EwuZ(ut$xba%zPPQCK{y@zI1rS;0MK0UXGB=wLQl$z44 zK}wZWUEi-uPr0V7&*-iJxxX}eqH}Orb|9%C-F^a?n!#gm!yZ4?`J7tY~zUQQ*4)53W$zQj>(`Ti%smhGMb$PO5r-liqOK9;V$I^w; zbIQk%4PR{gwf4)Tf28O7bm`K!Z>ucOZ*;9wSRyDYyu&_&je0X#DOzA$y z?Ou1<{SHSn@|s0m+o)Zm_9S5Z8}LUaENd&afl}IHAjqzm43RpG82%FORcShxMlC^mCkX|d*1AX3-FZD+MXxK*8ur7P^$L7vufR2@ABgG_zXjJ(oYm#?AdvK5edi8kHqI#@<9(SRu*EVW%QM;>};?_F?7D zkHfprY>-b4 z?}~kfR8e)NdoHT_ah_ZezPEwOaNMnIRkl)oVt=Wgt2Wn2j;d@`_Z;BcS;GOTSlzSZ z;K3bI@!hQO&p%n=++EwY?TUV1WKyjyrKH^z<-okkp={;b52$;jVtSR12Uvsj*q?l_ zczZ723lJecC-Zydcbq?CFFdShL%!b>$}xlMvvB=uaXnRBPZhamApgL(Ovx5)i+tP` z7Du%$>-92Zk?K#MaK3TI{xr_yN40y#@BY|%N<7>j0Jd6RqPpcCMpQhp&fo>hI4ioI7Rc_t%~~ zH>k;e7l$f6FJJ3*B`py$--Uh36zM6i%W(-FApPcWjg+s&DrAy$OvP!zh-8T4hZtm# zm4R6ueQwKDbwB^}`merTzy7N)ujhv!&U<>%Z|}UlZ_(2{_0YkaPd~j$I#?3CY5%$p zKU}x}reMhhWfLZpsRzEi=%O!ATfJI?>4@fq(N6z=e|``0OFc+Atz6Rt&ycH6>MO=N zU|SA@VAR$yk(u{pb}_%o(=o^v@HN4XuI}MZN#TwKL67{7{EjC`ItgXTUr|0RDhuT@WGB?FjI`W{pSKWKiJH-=I2H{A{9y2kwOsmMMOQkt{W~6``b~C?MD?log3aNmU zT%skx(G_sey64QCEMG2`V&}Rfmb1TllEYyQ-pf z9l)}&%XfWdAdgL5A7GF2@p^fw%K22BPU*t0lsiJJQJk`wibMO-+l$wgtm#9&ZQ%D( zt(~zmo!jJ~*X6uG{4SEdl86dXpi69b;|G74Mw=8==CKFf8_t&iT+ z{NYJ~E4FWRwD6u&uP>{(x~}%z%ig}GI4^0?$vyn+@9(j^XO=aq=>ebD|JmDp$DKCR zUzyu*hjQ*Fp1tM1sbfm>{e70d!8)^N78gjTPjav2U+?3K%F{dcy!@=o*xvAk702wm zwC|9KFQ2uJuY9Gp!&waS=y0)N{9)G?#FEgMmHY(RBBq3FPMeQwOY=(SMRp(OF}LuX zsQ->s+p-I>>b@L%t5%Ab3rig|ib?b_U~z3x!;)fr!mH^_KA*l@KR4cpKq;l&5}JKW z%(sSsBe_+$9Rwr6Lw|mJjNjHHT{mGRdRgH!;nmZ8YrF$A&RHs1|4K@uH`ZnPa*A4(2fDi!(pb><)W9u`uUZVOevSL(+puPlnk^YO| zX2^tbjK-1bGd@;%u=2oyFHppPi_$RAZa*vr?gl(`q)$8z;^Cqz(UgclL&R?v?WryU z2BL*oFX2fw82D=Rh_nNP?$5U^Q`Yhgnb&ZPFW=NcRIjY-LPH4=T1T!As4l9P{tSN8 z(S#wMwy`?E+UuEgkI-A!1mZwIwp(Wz@K|9p;H6_Uj7FO?=w|&**G!o;VHBDmwu>Ve z+tpsI@DVJ=Z#tSin-va2Zj5X6TRYceM~5d`e%gd3R)!2X=sNM%gvF$TCQAk!F*LJE zmJX7Tu6FhN24@VdZAdj84am&?)(Vk%PG`{&5~U*TD`G1FDuY(-hRvWB!5IsqCQ$~L zjH3xxtfbQ&KxM!HaIB!|G;25ita5HpDq5DPK2v6_&_q#-_-Ac(0=~9o+MtY4cPu>i zauf@b1-^(JS%GO^`!`^T<&wcML&~CIvgeeQPV@wQ4DD%U8KATp1MSvRt-)wWeOnSA z3!{~v@p2!5RO9Rs+n)x9HR&Rb8M1C14b5P3Q-i_~b|9a9Ck6&*{v{6$2ux1mRrcNEg8RyY(wFZ+ZA39tBB4SMHz=3T9SDX5bYPXYK1JdZ0MD>{ziPvq>{Vl)}($ij8 z2#(g^(Z==$m*|)n9)nw`JJNgvFzxUk8MqsCF*##WUc;S!8y|~CLyg-1_WLjl+_hF> zlxZ9doHg1oC}Fk!H1TOqe_~L?fQpWE&D0Va?KKFDnoYbC!0UN<%@PS~8 zg^%u;{AnM2^pv5?BRxx`@ql0LYCi^K_7D*T3!M)ne9g~OncdCh>tBu=C~wMiFiz5kE4?+$FbXdlmg zR+5g4W;97x(lkx?UW~TTL3c}AT4-5atTI|g%N|np6a)lOKt)hN1(7K#;+_n}iMR!M z-HHNjuD|E*le7hj@B91XD?*abxO?{V+;h*}xunJ=MYl>!cYocH>aF~_O;RWj|GQ1; z4H8kWNzZp;-3^7vF_(07Q{jK_yEiU~eY^U-T`GD~gM4@Kpj&MLj{i{>dc&MRB+|bp z_TBWp9eZ-;P71if<^NqzU6i=}vs*uUV%`&;p4Xiep{#J)4f>tZg7xhbaY1uu z!ig0U`JijPx$ZZwoHtmC0Y1= z;ROEz?5j*x0zvhYR83Akw}@qwYKx9k&8fYi@(jvipsZhKN!CM+5-BKC3n$963mhlX zZAw4Kg=|a2LyS4VV|jF6ZzeADxo;gO?sZ(?{Qcb=^HYM#9F=_xO6FuyN-UdKh9($f zb~A^InjL2tspAIu3-w#1zPXsg$)tSD&)G(7ca}~7n3GS89XhmOpCc>9gF~6(wbSp+oiu6g zJB~DR4gBmaa6si0U8_b8y`<+OB*H2$ot+#P2Ro&}$$z(A=05Jxr4uAHz9&fB3`d&S zA#=JL2uGF(7*xo+0E7A^IDeL3%b$jNpFV^$u=t?q!)b+9R{$s@~3U`Y@;66$|} z(WkwMK*wdYzi0q>xeY%51|vJo;OU?T-7@eW-TChm&-UrP!x-7=!`~-xK*#vr>Bz=u z>DF#g0|qr=WMxbOEaRf*@Im!g8tRRL3axwOJJUB!d}6}-F?o>{o*Mdd>NAb^jLnZM zM{9ebAwC)5GkMbryduTAAYA;`ClJctL^{sk_fQxqukWOzxDpJ&BlW+8proP_B!Ska zK_xOJx1L{nCmoH4A4vH!Wk+R}O|3V?zWhk?C&>>MXW6~<#u)awUdZV96Uysi z?s3;e4xjSqD?X#k>f_s_x~OUbD>?5L^q#XT$1(L4JlxuU$i>u%+eK7cSth(d$t*r5;y`<^yc)zr!fnGZ$2_STPZH zQ4%l4NpxCCI1*v(c;5-*U$Et7*kHU2KDLTbRegf;@sUp)#{l}`>!=m4x<0>z)!hOk zY`y7(3k6)bfC2#8XRckt&kz&WHCSDK33igd%_E5iXwr*Lchr&J?TYN2!q)AG zIRExC!@CY(lNlZA%d_>T+adLUdNL?t?!79 zh$p-qDr5U33g;%k;!cdXhkAhs7Xa`JDVX;#?ODBGMPNpfp8#+zw+PM>B-Qq=Q!v3p zuv!pj5bcAZpF||P#n;OgK)ZUC>LY5x8HzRYXfct zzbo859u)Ux`0p{oo$=u3w}b_^1Ppj*FQJSuv}ah*)H7fpxREs#t%4grT8z0!gdm0n zE-i(v;QwpPb!Q~gcx#a5d20yvdM~jITi6|Fbq8NGZXM6B<+i|jD_{oQxmR@a&KN~> zfHZm)C5y(gx5a@SIu?voM-clT;?vv5YePLaZmU}5-nQUUNn-(dRK(U{-*fv zTyIUu_&WoKMH5NjP>ZI5$)7eDeFc#NJD4fD%{Sj3LIl$g;%_<>0S|pw97rtM4>`AL zc7FVqP@)@$j*TJ?XYKZ124gte2aPDf74Y$v2y@7tVMW1U<~y6MqjNA@dOHT7%1)?n z3oyhu2-d@_z%6K&9Y!bg4e#4Fopd%7o4eQocLR8=lPtqZWJ=kJ~jR$BfAhoC^W<=M3ne%Qq zE;}yYm;fudq`74`Mj#V66KU`|asARl_XN~lhQB~+{5xs4bEXtR2eDl^j~1*RSzu-{ z(@mOnENNCP&Aon%E_1rU7#SmNxeWi%z7qeu618_V3*m$n|B96O%g#;&9+pA;Hdq6+ zMe+lzULiRCpRQSyAji|}Urd1zO6|T`Jct;A5if~_DR6AS8@(sHD+7ghV6ZWie+9p; zZSgS4Ww19cS=#0}4DXgX-xaAVu_T%$u+*+BQ0X34jW;+pqG8O8cLYvh@`$NIeaGT! zoy2$`{0_Gt`b{Tm1`L!EfqA=k}WbuaN$@ z{U}j<2UgIVZT3WO4mQO`iPrP@Rs2`xM5I{Lkt3w4H9Rw8L{`Ul(HR*dGczc@NQECm zb^K+zr!ftYi3>+{;I>2YyLP+qw+%)O5(FVNJjc@Kh_?}4z4#nF#)yxR=Q_`!I_`PW z9)H_&G6>^$(B=Tw)3}BiFBo90>i{a}l1@G7lvM>8y4!y1#ou@}+^>WCpv&;S1n+>~ zE$|z5Gortr1zk^p-$v*AZ^Hdz_-!Ka!}FuyeyDS8C?p?X(UQ{iDbY4^Iu&>rhe6P$1khBmgU?26g&J3}SFXFY}A zb$yQW`W#6;fgAP^&P9pDsuFsNhr7_>0?;ei!>?ms$38!gU^_dXoo|0LOo>k7EM=HM zi_YO_?XB;FhjxW8bdVva;lXb*B+VLRm(5xRx z2b0DiU696~zL_SrIJvB~%t>$BCOj|F8o;>mM5# zk|~w4um2;;E|pEtg`Y(k5#S9b{`Aa+j)0foc&ch{EwS& z{p7zPI_>BJMYHwDnmg93C8jS}&2cI_hSfNr)hwdJP zA1E5dh#%49k?o`G{OC~C3j8*lBnq3YlYdvJLPN=+p>PJY>)#!O#&ME(=~ebU(7UCu zzIHFzeE4*17wL`nadFrI*V-hK>wnyKZAsU)IEW{%l2!BM-5c-I=cX{fvXl8Y!DlZA zlESl~sYYBYy(~n+w?sI5wG>V(Y>>>9tdVSy?25+|B?lw zBUsrC`;ox*OR(BG-lB^qr>l#9^^nC)w1Py#p5XM9oy2(9ISI}Kg;E#Nh`8Qcr>DEL zI4=eUt4Pd+0!ehDvqEB6r-f!<8zm&(A{XgKv-RF?~Hk}rCr&wcW(<5R$f(BT~_8b%o6MG z6E4hdd9vlZvcA&9mZ&vwj`pNA4fq!%KU>{~_MF=AGUL_Z^Vo(Bdmh`kaX0g3b+y@_ z^)V(S8hs$oe|5tnyVp;gAg_6H#PEY7q%%->-G~ukYxax()(#&Yz6OpJFF^<49A`KD zH!`DfgC>nGAF_1*2uFKaVPVe%d!$%KeMywnf;%Ram#|rdEBf7Nl@h6b=@yBoKpI3$&($WkeO62u83fvdJ zs(jY);nT}jB+Lyq7e8n2`ez(7qH$K^9?qR9&cIWc%5vtwyl3W~A3C4tpd4a~LDFN8 zi{^>kNWx$zyJSg!IGwo?Ms;y;+E`+5?63o$fJ=fDj2`@fGmN@<7B98IP76AlJ%JoZ zmPqHHbVL%g5<#bd*Q6EoW8!>zkZ!AN|KP(<;6f~*o9H?CbMws?=TLGMWoDw^`VDXd zGJTI3`YxGzGV@N6|3IHn7J6Jb38$mk759Q3MyRCnAfP8Cj&Hvw`4H}bJ@16s!Q1cA_u$@L z--9;q_8#fi^&Tv8Kgl0c*-1Z+B`T@xtzPayTX(xh+Pd34(k3$x+I*)QmahI>ZN7JB ze_d_%c5frZL&HRPUG!n*iS%)`t=L4Lk;-krmB(+pxB2e(y5NPgFI=>9wMlqH@dR9M zr(GAkz1-_+^WA@G^US}r+1ovl22#2G4*Y@@8^FrjUC@fX6WMX$p>W}U=eu?V8O1&h zG6!_Suu0-A@44>5dw07>-oM*DdGNp73%UC}g3sOBR8TtH2B*k-s#|xJ50M7{`V65U zm0i$>yUGH{$z5fkmwR1p{+m94cfD(yz1?%k0?_w1Sq~=s=phRfqg#0Dl7&0pr4mH( z|2JI#nZ7Hmz1-`<|KD`s?7y_x+dUWlAVYWHf2%Is9sfJuwG+9!t1h_i-9;COeG+Y~ zXxs0wPpG1FU-mV*zBDd+!?Yhz1Ghp-YrW*urdJk;(?Rw+1 zlN3gHMj&?P7I}2N+lzj5wF~y}zqSi}xusp84dG=k_QI(nuGU4ndCR*!=t1xz7PU8- zr#SbbE3TGhB<7B|4KBbJd`dSxKpt-C+eMFF^rfrav;RZ8AWJ>kb@~Wb3j`y_l7G1m z5^&3XyVHlb;Jzh(>FHbQHdea+Mo1i~;_!8GWsz0~T ziQ-A+hU(2-?!o)6Hqj5lNoJ2TW@{9mM_v#k&JlfTr}LU54dTCIG1hWj>uiKLED&UL z3%uui4sU^Le}e@FJ?Z#Gd>(m${2|yogWjWg4Tw2mb26xnySaiHaf%s%x117o-Kc@* zn6BqoSA)TgOv4cAf!28@S z?~8k2kv@C=bwb;{n#2hQ`r(vgEBT*GIfWi4WTm)vHbPxtARYBvVcRzD)Tu2nZ6eaQ zvyt5obPHDeMn|{5xqLupBR_;*|6RP!4t6~+bij4H;&*Zda#(Pm$bM&|Y&X6BNB8yH z=}ao`Amww?vHO%`Hx$Dr-KY_Eof2Vm(#)OE3!Wo?=(Bj%sVk@OEZ5WG8{PaP^cA0W z{!7|_4qmx(>baip^mtF!!2b=|l-u4TJtkUY4dT1-w$v=bN8WV(C9pDNZ%Jr+DD3_W z`9_;GF%Bkjph8oa|=pPKpQ;;Fj2X~WCr&%A+NIKMqy-@)~m~Vh>lp!C5 zl1L#1sczJWUo4QE;%@$VsN?eSe#6A^!3|wX6I>D&Ux9%cvMT zn)39i2Cj8X>BzmU4;j_ZqO`oz=|iy;ZyZ-N*>QGMKEQw^{W`C5-||DCz7qPESk0uK zA`bR(h6Ep^@S@=`H!@ud8|*=9f|N;d-{Q~S#;@bWXaVZGfBAe_%0R2T%J9P_(AT*wkoW(=5eBG!g#7#Fr&Rv*(o64i)1P;|fL9aT+Mk=mWXwO= zzDmRe==mzN2^JF)E2J@v74pEeEizOl*AmF4uz{c+gSGG$3s&?8mdVT*nFmFH1F66u%6tqiDs(Z#GMSI?8D zWCXf1obr_=e*m|dZe-P8WAs8jt~KQwX5Gp$t#!p`z_M579IMWJuO2`V@#PN!zA!IA zVG)%9ihZ14tcg4U5mY;oYeYFmkK*I__)(mE44)v#qg*uT7<%g{-$xkJzKW;>6Xdu^ zJ^_6}7=yjgFJqkjFqfbo&s+PkCZe^d^z><{ih25#SGrq)x1I2HUS(g0_e{?Bpfnba z4}>a2y7fO4#?q7;a}eoPuW!Mh*3PJ2JZyO1&GvxbNn;)Tx0Yt6WX;YPRy|-$h^eH1 zHTwc-nDUw54edekoaaU9=G8)&B*b z^gn)Fq{*f+uQO>Ih>$3UV@$8`EBGwQ|ea-*W@|2IU`JG$XQN z7HLMUNmnn4E=UmFsF6GU>(Md~S;tw@0RZr_Le9)AoJ48VKGf{aHFhAeZQ8p>$7UAE z1qSc~I|BM)0{w8KvjS8v;Gg6qq%x~jW@bMML4)v7{5kx2Zs(Isy<-J4iys1%e;m() zGa#!@z3-UBq&bc_AnbA4CGIr9?IrQ;)@m@vusI{KBRYBzCABD`Ml&Z*&tJ2C!HYi} z+hY!l+Pr)BR#BcujmK-pR%8DL=0AyOU_!RzHPSxVe7uym1H1vScVP<25mOlzRXRDz zVwRACZYfC!(^)5i1{Csn2SbL>8?GRd(S@7AygeqZQ_|O8Usfcd28aTxrNa-TRy0_U zr_5-@?>eUH0&7u2(Y(^ZK1zJtmRgrPz~;85;hwhaXS_u0@ict??5;zDr$ivTftkmQ zc5FB@X6KNiG51w%8;)aMAf?pi3~Rez$=m0RLn)tHGL5vbgM@({aIUIc)we zNm9|fd{uJnq*7c~Ui{2ad z%Z-WV5zc^sb5Q&dyYnr)e91_8O0iDx%thfHmfobfuksG=r4 zX83`nJJ5Yc{;aQ-o6sYM@u8R6o>=4;6MAO(GneYB!LyAtr5YDKGW|qSsLmb)pgDa) z2ha(;8qfqxA$U)zRnz5(EIK&Mp%F=I+6E@-8^XBBVGW9)evgcTc@ts>^ZQ>zUt#l$ zIjvwJow)K_pgoXAVtYW37;_NOV`^#vBQve>PvrLecFci`@av+P4ey6?4jiKz)bZyT z?D+Fb)}Pqej&JstHoy54%PWcc5O_O(^a*L z$3FtZ%h`dTwokiMRL*=*{5NR353&^sM4F^+{w_TOZIYOR*h^B6Ax><%nnoIXk3OWv zBU=PK(LEccgRbBoJ+gz{@t7^h3*|kEyk8%@3BC<_7;3Rq#!b#{0|VLgj+X-iot?kN zl>9`Yc#VyqP>44BK7hgIghB2M-9+0B@f;|T+=-|Uwc4e>UU0`((SuLnukfL@P_q1| zX%)Wwi@V#4PcnXtP zwnRF=L?*4i54<;h;;_AK4XtM$I8$Dg(kG%|dNHbcbn3EIc+u=v()$md+P{BBKhDHon$Hm2>tP;F)0BXM@wP^m7)rQxWAC${CVUP95<;?QQ=Ih95>_US-LD%a0KAN4ixg0-T_P}~3e3FZwYXC0;*?XQ~2IcfBFEd%$ zV9_}dg5pmapQ^PwcFo$kQ$NLj-b7p9vp6pN_-KDm4==y|?}sE#Jo4?>l0nFT_8~2P zKa9f*n|=Mv$Zg)pdH7kDBXS-IjxCixKxrt(!SO_B#ELLNMBtSl=pT)PV{ylZ88hyk z`9$f0!lt4q`KY?LUN|BMjm#U3mmaFfZXBFkTr|_Zy!O*ZM;{pC6Q3E0hq6BbE|Cy% z=Kwaz)XO-7yJW&7YVApf^zea%WbmNCKeHX2C3pf7gZm-kHj^|77BW#v&caGUb@zWh zdCODt@ZS0R)|X_~evKjIy$9 zs(XS>DSCZVc5M8h4fEo&uauW<-u%SCf}){GiTxBZUB#R&`{Dy^^U(f`nur1KX1tRg z>6kccR&7kMJ(l1@>BY5yd_$ER^_wu;O2j(eY$QfX3ZWfHI!qJ8s395uy?zysW>0tx z`ES5~-B^^>a^HHO7PpiLbk$M(k>i_2LcNq1PtC#^gkYe{@J}ee8)6~@bSIL85Qinq zaVinCeWETatF|^Pt8OLkSigi}(6lzLGpoLCWo_-vSD?w2eH+ysrzsDZ&Lmueo`*JN zBnlR5k$~v57|9u8YsIJqrn{+{qN+O5(to~M*H}EdXlhA}#V^-l*v7DEIlsGZd3{}W zcFm2yR~?8*tV<~_nroL1OCQFTLYLh%N(LG^V{RoPF}EEMh)ZTk&`rLoMZys`#ZKM4 zM*ANW=Q$sookz0Uxj}2&J0*m4vye?$#BLTEHJ{_Y8bT{IN>0cBkZ+WV9g~ok3N?y+ zVG^NFk6ZWxlmeNhTG0t$R`+>@Ri1+3!~lOD-zCa7TJ!nd#db>_jw#!>6>3U$u+2{vFp%v``vwGqOa7{MiLra=MO@g&bZgvrn{@*WYRFiz25Xol0A{vZx{F} zQv9dqRL{rvc~0}hzs&vmQsM3yv7-+D(|Y&-5P;Y%(iysf4P9M^qx{vRZ^z&0hLUm0 z188I{^bNT$5^F-=EJzixl6E+JO=lM)UJY=CAn2V;Y-YjBGT9E#w~=o1S8({zBfB)k zmrluK4|;x&@y0KZqKid5&8vBM`GY)=u^;%QLvPT!I0!D50;{Dt2fUW zZ)Ela3)o!0w||INV{m_WcjnsiZD>Y{huq;gJna}B0;quh%mkU6#Ltz45l@;-4vz#u zCh1=dj4;WnWxJJJglcdIi=z=FgT*DUh(*6{_O@*p!aS?(!_O4_)lJsp>+Agt!~6L# zJa*q4G&zW=$$%3TIgN$auH_b4!rPOQ6*8@j`@%-N zZlyE>x$SP}B?b6D6RZ8*H~!IFJ5p~$C_oXySppP(0@B-XP4WK8hD5BJjN2L)I6n4O zdw)x4i6j>~KN6z(2|!DbOMnk*av7jjJS-@q2@Z%%C1j;1O*@0Z(n?t{W&CVu!4Ul2 zvUAtZ9A1lrBH2K>Qm4wt``);Mzh(5O;FF0DxOv%!c<4-Q@x+~Dre#jRfj5qQzk7k_ z{W@#dDSQJ(Tt&r9^obLOhw(uWN*7=M20EH3G$iFrhzDm7-by?#$UuwKLqN2C$jtwZ z?f5On#>7Z#jn>_rP)j;3idl62x6jg#?)xO!>WP1sW`2csvt{^I$5nlR!1yS`yNPoJ ztDZ%bZx|BWUj@R5bRj%F1hA9>T@nCifQ0go6bMRL7*f%iW04wg3n&+koIG?Aj&*TA zshj=a1PJ?~mrf(q&wp=)ED|MNYAUbyR%@Sk z)A)B7>`_71L26!x++;D?3DN9_;e4ojD1IVB&kQVH79D7e!^WJsR!@Ec-W94r8I_6% z$2VqA?@>A5CED;{gPY#WBPPt#kAu~8e!O=O@SfmEau*P@Q!RqCsJdwFgj7c`PZlRR zM8xUBc32-t#Go5-Eu8X56z}yh{^r2+M77Kf0FBL#k7196MhIbo)GP8l{xZtfW8q7a zV$GRu8s7>xm0l~;&wgWpOmKfab}DF?QNj6ohPVLK_l=CD& z2)IY_DH#;yq43|{P@3uctxWKI zUYYy~p-zB1uSo2uU-|shy8H5?GPxCFhcvNm0ReKI9z;{bTi6ACm$~pJYzB`Hu1eGx z!fFzIu{<#!l+VzME=n7lnkJfd=cUr}1Wk2b=tj!CN*Z@c9o+LACAp z!y?UITl3FN{!!LCjob}*Jh8uR%CAlSD)wP7x!a>GTaXv?3_-z9Fy4bNd$}tXJAO)1 z@p=!!<=`|ElYJGR&DV=;r`E$?X(w#9>EH>i!Htpmc!oG;GDG`@n!Hp5T@hc7+*7Q*Y8kJ@zr<9pG=GzG> zR9qwZ7TYw!{9umr^9*ml0EVuy@}2kqT;!?YMOZyUogztvzy+K1Ie@JY#$e8cR9XJAw7D?6jQA4?~OR=!5G8@ zDbQn=WFcO))@mY5WTTJj>kr>E9eb!WW`6Sfo+m)=DS@6k zrjmfMpvH;BUXW-7#{fP|^l4qh0mI=|4 zk@fMX{~5CYM}D{bQi$1HwBWPD==frX;<<*@%5XPIc<21-<|C1%f*ipV`A`HQB1(jIh*dE{pcxM*}zDj1b4l6 z!Qu&PQx}f@xeeIS%=+O^*8w~3xrEZ{0zeAQQe+X$7!8awOYxUs?I)B5(8%1 zqaPYSCgI(<5hEPGx%^wwyTG9KpTTN?ex-shIRX4hgmsfrEt%a(2oACbt0ZJB?+T9- zlVQkDrn5LAN)SKO;lCDaO?=#^$`_ICQY}8xrwN4|daJO-L+w-IuGY!%_scHUN1@n+ z(fFemE;lrLYUK@bjRx(XyJ5q3_trM%+j3DkQg7L!pNd}#R!>DSZ{JKZ=ERR!@d7@# zWs8>(gf>D=8Pxm0_*TdU8Sm?|b7?FM7+}N!VFHPO5;P=!rG^dyJTbB*tML#3ExIMt zG2h>dYihB0z=k+U8;+EPmv|_(i#UbUz@^1;DN?&GD+d3l^jG135_3i+1Ew!~*lr=P+GO<)$WGL5aSuqtU*Mx>y!IJlxS7FIu1)ek zs+P%L*3F&%1agl!K#djk-BOnEEGTh2n=tONKhHkeCzm-;BT%UTt+lxMdD=SK%d=;! zN7AR6;{m!jjm$$uhR>)CVE!6l?uumy;eg33q;P2LKz%jIW9z`5fPjE~75dz#3tC;} z=nT9^0A@0o<=VesKZx>= z2$YdQ675^o4t)=RAFhZ%?A!%{=t;$J0n+*!u>0aA`Z&Gfgh^JlMsF=EigwJ_X^m{2 zD<`_a2*BP}~qj4W(iq1-o7;~-BH#mKmx3W_9r#f0yA2{~gvHqLTRrEnh zWzf?^bOHqJXrtcomOdPRKi(6DcOujo5vanhXVyl+z7mu_fwEx7GR8PC-P;|s56Dl) zfVluSiH%_g2~xfWmI2`H4$_e2cC*3f>e}B#72h`xEAvun*K%H6i))xJk0Na>UL2#xt_;Rn5WWHt9+E5kP2I4Qac3$D?=o}x^ zE+D5HunXp3l~<6NSXDw!*foGS3h-`$ME}VMoRr*gg?iJVh56$=R^y-6Pl1*3KB>y0 z6kmO8lp(XKzypuE)NETl^pJjrDi-BM4EcI^{$uYV0eStoer&RGQvGXthYlKp+#;BK z+-FPKxviDxeO>qxfayEPrT+%&vVCbTBFPLn9R;G*O4RBQ)07lMA=5y*6POL7NebO( zixImaI;|6bpPSlmr)j&6m2`R;r9ZAJ-ficHZ~SbUjZIwj9&T@a=#MF*)(pPNw2o5* zxoM0F#-QhY9h$RCi{yA+#U=C#EPOzOHtboT4cK%_8M0t80h|r^6>7+n;)BUpmK8|O z1~Ojk^SbcoaQpV-X!ut(+xy4o7bQk)9zJ4qwrxz^g$?nchzpB;<=uzAMXPJ76H0R8 zlWGSwc1l*BT)j4#OiNK-+zWVzio1S+VH5EJ*9J(E;x=FlkrA^u2^U>-xQ!|I3iw?` z=EximwZ5-8VY|qknDmyF$dtBJ`jC!A$jgZ3-Mrz?$qnuOlT!&VB9BKGQZ~t2A8cB@ zo>BYCY%(n&kYoQXTynz8z7F&;5ekVj#2_|MA4y|4iy+RWl9^OWCuzKyeLd8cgd5U<-00c2#NZ$w&j zeslCjtA}^;%l4SpWs&2ie>tcrJvwh-RA|=VIInm2-rcUba|jvJUOn3^{zqAwr1I`(09yDR+BRXU=IMHmR6@ZHKpvVZKa(%%$eD;<{szF~Q9KOE|(4W5gy-8-da1u~?|%2M#- z7bn|R7oFCOl__G`(Nf=z#N@sw=0#_1Hh4FW99Z?#iZ?;K+$YalKbFPCn}(d*S%@AE zP}^4!SzZTvz8ho?<*6A@}{2QlBkg|kcV2p?q60zgfdYeY= zEUfik+OqPEpjM^3E~<|drScEzgnts`dzL@n)V4CHZ)LxLP$kNAYXe&p}^R}K_ zhwZ6qTOYkI_ls6#lj;mgPOoQ!9QFHWUc$@k<8w#H&WQjL0uATF+|53I3ycv64ZFfp zP<()t7G=I`ml067qVPcjazh75n9eD14*8b= zkDQLGU3w3@JV{+y3;+gT(Njo>S^}6Pzd@)AU@~83hURC5=9S9dwtlxJXZnDs{85qd z^#!TEXO!7hx#1%{z5N#*E}zU7hmsy0W9&g4msY))HXtf9dx+M1bPlNUa7*`*5HYT}FivGnkp7ZXX+v28`?@ z-=<@6r2JC(m~EPeqU>>5Zdy z71sDKneoyhACDz!xp!0_?-tXHN0tu^>!+|9V^d5i=|Ne;2Prhhw1C8iC-5uZ_`ze{ zxu(S{g8B~aOBEzELsXE-3%8z+usZ(ER7WHUBhhCQlD8hLd>sELcWP9UaqJhLE`AYr zChAPbqY5XNpZef~nP1`+4RKD5p?Go~fG3H4ZpYIZ%oADc6|J5qao-tCfKsjhvKfyq zi_!;_$xJRRs&kZH#`J&$ibYe~3R~aG{uaB!sp7$9M8yxLrp?DsMVCb-nZ{oHZ0QLC zvd^)|A^>^jw|LE%*xb>Htr1QiX90NK#rg{vpE-RhOV`qaF9&C8<}7&6*Y_VqBfs2o z^h9Xg$ioZ6b8AN;j;Z(#&pf;B8?@#eerN4V>%J<)e;tQ8OQ!QrJd`7~N)co%Pljzz^7S-HbzwZ8O#S<|3NZ?E>Ja-4r76hPZH5FCh?JK0CRl7- z#*_ikdEHY~1j&pBiU&@|5D7#8)dN3*WtLnqy<^71X zJ4MI$M0jCM;eKZf_B6mi{Fcl5l8G{!{}Yo%FvAZr1S(2GRTv7=y`90KlB?8JuusQC zq@~-<_^JNdLjSA5IYE=~H!VXZ^i3=Xv4l%uzUSd$Q;B)*1;62c)@^6`$U*&rqo*zk z_sg;=L5oKZ%=;yj(T5x}S*w9d=U+k{r^w&m#&q9)!5GV3{i5SN_r=mcT zNZ$YwiAMksXAq)+)g$0LASmL~-+WA(wRM)Dl*tVNOAk~`@?QHJajdG1gD(+~i2pqx0>ch~4f+U3%AEJGOo#S2t`ar$`W?@O3NHQMgV8}91 zS41y#c}yB86UP9WL4jilC1Ewm8qeT90STp>g6Ckz^2Wa4Jk234=V@zQKD*Z43pSYY z8PHE(7H!I?LVgi(hoXx%ZCd^h^4T7pTaz$X^r4Y;_>HzhOO$4&FVlBQifkA@`9yvG z7ywnY$(#*fCG(v?7mHc_FHn+cTFO<<7Pt|=k1vlWQ2B)usA?Z7s0*LG-EWDm){){q}I6@T6KGCDeC-s7x|q&SFA5G2t50Mb9>qLg#8 z+Ud4$B^6MLMva7JPFLlGN{}=TY<}uYpP~5o-4P}BzGcbgfhwc1W>dphm8rPb!T>@<(cn|zBk+>EvR#0H{qEvQWHpW}mtKg#m!GO$oSKlA z5$5J@S&ZNW&C%CHVHL%KM0&Q?r9hY^f4$UfO?kNyuv_I(bTL3TAtpTki(xf;-Nq|>OkOqpOU6LdjfCe4_ z4o)Kz2hXr?y^iy$O;yjv9H>-ydIz*VpT1@M;B2|!J@ib4D)UgxtTd&Y!C18}b<>1p zj5qsqz;AfQ82O;X{;_F4KbkdK4MdzjhRGgl)ahcM-n|=q1mtV@ReUq}2&i6xd@jf* z{6R2X3?&!TDBJizvfT-5VF6Nb5>RQ;vBM`YDk??8JfJlX4&ZmpwrLdLi!K@c3ey8| z&W4C&djLA0gU<`XXr5)HLEJG|iRbGP8!iZCUQmyw#O>=PV#+;I*qm?ZM-!_G@W8ecfAYEAb3;p%@yi0XZb!O~!_QtvUTe~eyjd1|dNCYzlHC(;mz z4oNYQQ8KBDv9fx&0zn6nDRKk2Co&WST%4K%y_H%6xhvA_b> zV@RVmR>OxkYo}u+erppH-wk^m7g355%Q)A9vJ#w1k{XL7GdakPEZO#rwR8E=;Ujoh3;0J8R z1fWV;G4a*K0-zZsXx9ZQ((ybzPM)@iA|B6gLUBf|TTApWv*NW1STpyNN$)l+e;Srf zpB<-B;tRkIxRCezJxZS#hTkF0Js6HQ3}`_{fGPzWrij2LmhcH{GtHd1~2m<3N`867DWHNQsD#eypKOIdb^D% z`aOP}DW*zE^92*3LA#|GFd5O-s6YUn0{8pCfibx@7hRhEMw?x{o&;M+U zkBNSNAf7p`w6-)Ws$Xh+{G+MSx;Ia{n+UQY{dm-og3reGotWF2J+?tYmHpQT(rhh{?zc0*TkzG{iX8Y z{sPFF!10V~C7#Z4L4;>LNG1qF<-Fi{jHz_DcjE(ddSvaK$R}Ez366}qIl!T(JrZfi zY(WJ^vs|7v>o@J}XT~NDlNx+XK3iq#j*4zM0#Y_0p?xE>Ec-JJ0N4j78mRD4i`m_` z^i$|toU0=>i^&?7&2v^GP)VkKRj|Tbh-iCA(W*O;+-Xk&UiJwbp3VIfGQng)t%1Tp zW`f>=#v1)wB7d_^0keT`I;hD1>PXV%3vXUEk8z{MWE44Pd%An063 zm!Naa?Rl_>Y)AWHPYw}cigGQy4KRx}9<-E)+6z1CGH_5|AmSp@i&hszA!;xAUtTc= zM9ttjcx|~t=6LBV|M7AF<%|;pVi3`a2pKy6v|o|c6b4irEif`o`*6tEEo#5)0hFXX z6(JwWaMmNX~a&;;(?6^AKwZh%Pwi%MmGtC$5=R6Yy6){}J#03AU;` zg+~8`-0`#hlLp*_-&xitE`1S-Vr%gO_$K}ldHjUNGC}wk$MsK9!jO85KEZDdrG8(G zjUEMBn8|*@M61)GK1)NU0ZAA_xI^46>(m4UD&d+INW=8_ z)p$3)Id+~FL>_&6^030K`S{vd{YZdBVh<)%9hp6N`-D-jYT3f^R&_X6x)M2Fo7w@f z(Ro<6N^tgr^`A)~$E0omB$!0zQ1wQ*01gVMpz(suIC(J{&ZxY}kkvcM3rbOS+PLHd z{tEv2kH`Uq!OAG#_;;_EJxhlGc|N&}YJP?-{r;SL&z`pG1!J3sG-oV*5J$w8++W0w z!oT9E=EgAfxVRbk%HpIal*sdEG!FJ&@WVgNTYl()Mr^{5)>kZeb|Ry6T+NQ@7qEfE zB*3GefNm*dL_z3AqPL!81Eb~469N)6Dj+FMlFBBfvre<$MNbGw;b@L4KIV!-peF<@ zbDo`c-y8QXHha{NlnJy)Ka zQoJut_`{ZfAOmECD@~AsrzOb(U+P0>T=QM`RN6Du~#An&HBUt|kZ+1^MGTi?|K)TP7DevN! zr%vV!0y?DhLx_`k`vtaTBp;ly+?*1+_w8Eb-<;G}szNwl&5(G8>|HGQ0{!XQ7_cd# z*?};|xj!gC-XpLPqcq}vi9}nOH}F=Ic|zN-+VZw#;c~rP74I`o>cy4Fy_h)8#76ii z^TQ6Qe;dBQ6d(vAWGtcX?4^O32CEirF!;OS@g!>D=7qOfytwvF0&ndPFinQ|)}ao$?_;|n5SXHJx8^p>|q z?DhWg;FaJVX-;~pmGgpMnd($0MREaQ;L85{U- zbPvFD1K_bzcmQv*2mut>&WcveTZ}SbhF$byx%Zo5X8Sq{bpfSj;neT|Q^a2=(BwP8 zyphq_2hrX`Qls041_f~+a$vSV@HEnn5$uCX;)!T~Fnun@JH(IE{%DE-=EB8K+Hq2R zSI>5u*rC4(U0k5ZwyiM5O*A@|s%%1yQ0gXS783VTU<)vufk6{ByXbgi!yN}P{pbaQ0B8!r{R2z?L z9Q9y5gCHy@^%8h=3g>pYkkNbu%vSxw4C29c5cJBtI00`$4Fn_L2OK=D0DQ<;)5Q3yfFv-}$EN^XB)I{h6qtB2 z9tTrH>zm2Q2@Itx<>HkT&s)6J9Wzcn^+u{^fIP!zzL&bA&fAM!`yBp!yoZlG(^#+c z;?oD{+uN2u993=F>ZVKk;s5Y#+Ou#_>jCSngR}fClYr+&UQVuUprq(f}C%rgH#OEdLt# zUQ#ze>a2q8Ns#4CNDc(q15c4`gBX;+1+>viAq(FHp%)j6&t2Yn5Gk1>Nbr>n(W+27 z!&t1P)#JAB`KNwLb$`pGNm+sU%&1@Rtkd_0HOSeKoD9WiVvs7xYZu-y;8n}|`S_#V znLF+;M%9!rgho=Jky#=M(nE-AAvTK?h7nIj<_y73h$Ko!><<=x9)9S+=cw}fxPs~- z>BFm{vo2Lxp8RBP_8(z>vgcoU`X-tbm0UAm;>VUiJbOdMORX6$J^;?4)XU$_2b$pR zLR*~Kx}6mp zJv}@$_iaO9H*c1x)go^QEm)w1iL7tFg&IUqz?zYI1&~=fFVC9UFN35@@ScMgP*KPD zhtJNw=2Kq&X>$>~AT$149=i8hw9)PPGY1{0dUE}XS$5R=@YKl#$Pu4~pN0AO<2Z-? zkiX#EZ-Nk=%*R8f0Vd-ivjm-yJOiDsrJag-aB;N*2nPFMetmqtIn9*utFProVU(uN zoWXmR<&R0oH~A!+W%?!W_-R!i*`lis4_m>9q>bwzIx5C30#{GQa{T_F&l?AgxOZH? z(Ar4%#s2rPQ^Pbd|4e)h1cH(H;2elaiOzsWlYm6fGyw@=L|90|1LVRfBuVkoZk=Jz z#jtPtZ(gtqA1fFW7Z-P6p^t5N-S&Mb;PUiAp;b>>-_Nq_;Jo~$MLz0-=i(V*7;;bly7V`do{?*NA-mSLr4W^Pa231gH)4dA+Pe< z+1}nW<9JVxDwM!T7rr{N!mr|k&6f|yR^qUT%mJ}-p8G7CYLa(8W)`Fj{1q?Btvu~x zCyLETWsLPl#KW6YCr zg|%@-rTjrZyrFPGQA1o`HCvDxt=aEkFHN=Q$oqLS;jhiBe}I2Ay}l-`uFer|^6ogj z@<7GXhW?@Dk?ioCDmJ2zH7_@Em!DL)=hRe@r`!j?Q<7hkx|k$t7jToz%DdPK3PA#; zF3Z4@nrEOZ2`T`1n#vcXV5r!a)FJgDoSSG zmaQU?k;wuQn7qg99}un}xw+g*47!=$K1lWUR>sY+!gdzBY0iT5+6dX|hxWfywbQ}n)`zB${T+Mpgdxfm(z%eNrIY=dEX zoS^V%AiA`qa>B%lfCz-Pe3|UO#O&p`9+A;6!c)#jDiY@`nznWY{wr!gzX+Lv84beH zyaDL~M*UV+R5JMB!Rsw}W&V)o{lh`YD9${Yt0u8pw`O%21Wo8Ch+f zx#-8L=yb?MS(<_}N&JWN#lrcRd;?-?G4SlBDvA&Y2nxsq7ZqRyZ2b;}Q3t+}IO#?6 zWAjQ^5){@NY4m};ErMP0iPnuaaFXb?`TgH!-a7;LPA*l#?@IX1!x@Q&g+ zy(&8en_-hWCiIOGZ^%S3h`RrVl6R&-Tnv~7VVVbPUSndAoo~Hig%0bqt*7;2Vc75iO`atDUqTA!D{IP)*QG`j8Kz9=$K2*SWlkTi>U`6s5 zFj`NX-@l1Z_(TMvx^k<|AY@heDUu^yx3?usxhE^b_oigFL0@mhZ%UmJ^Z_1H@)tm(r52*?BdGHU!wWTDmxRl*L(C3%fE`@0#EacLW;FvLE(P zLW&*i=$*wdB!gVWg~2oi!p-qN_?WeyvOo9ba!$`)iJ|`KaE+{tP&#an*ii3epO$Q9 z5?7#`2&jwGdy%*+DgsaiN^lJGwdEM&vkrV$!LuP^y zSS@3)Op-_O{#eW{n!$&L6x(rYU>W{tw=B-csKcGsRo8Ygx^!~3X~=}nvgpYg8QDRs zUTxbHOP01)Qkro~%kW6$jEB+br-hCJN#&2VnWEGyvuYO&>jDp*cB_Y08C}mFrMidwEY&U4&fa^EmeK z{lw=%>;q&-E;0XmjQ_(fz^Jgl=6@MBelm`p$R%Y;YWkztH==<8|N&K35;v)`qN0yBvf8I@b6I%Wi* zvreHw_Bt9kCMS3u3Yl61=V#)S8`xYT$T{}C&5_W}IG*u*2)TKI))P!3V}J>x^{NU0 zWJ?%71}JJg$1`q}x4UBk?cKedEgS5my6J+_$U$Q+UptAi+dFV9T-xrFHxwHG-nuogV>=yai|?IWz-U#Q-%@2B`pMBIe5^;Z@#6 zr7Fzn|F5p71jOFr-(?3+mQ|*d#|GF1B)f)pW(8TqR?Xc*blSU6pQWK=&L~f?T}^rB z5Tnx(8u(k~&E2o;J@bPBK$kcf&#qYD_rWYs?wGWmV4kI&N|{oxj?^rgO7(+oGqUgl zyT@>DPsZ*!G#6M8CsZXW2~M$8WdMnFAzc>Ni=3G_XlTNPB0UzY$A3R-elX<3*VXY6 zQ6+Cfwl??`2m)Ez_qnLN?1jC(x?X@tBkFMQwxSCCMAnB~(c?ewX=u}aHjq=};=?1Z z6UDmpimy2+R$ZH8i71JN_}<6}teF@)JN80dhh77@y#T1uK(@e$#BuW7J7HKr#tZX)OOvMYX=eg#e?Z%(JkKV z+PzSqQy_la#GBogSRdpZEV3|g^sy8n#j=@&J%h+)_JipDyfsSAA55O`lm?D0^W9Ds70MyHuWDXnTK!1s^&MwaT_Fl*1nupRoaNe*kZx!|L!Sk>Pi71eiZd`? z$JKaw`flXB6tU;!{+|OKqXLpQ8=D#IYEN&%cW!KblQ;ir=4#|0nMeCYub+MlvFD*p z-!#uJiuRYi#Bue$$l-D$`_;a!gZ={JwQ)1sj?QUL`JiC$l{9(V`kJ&=_}lL`kL)r% zfY=qswaqmeR-QQFb_aD#bSc-jby3C`@UjqV6v%@e*Lq{WaqiQLpmr3^>?r`32Eh*s zLqHRWw+aCt$We775JQ4Wy9W~@nP_bT+brSl7?Cx`Tu&JjxrxD9^C5Sm%2spkrEkSE zo93OkliYfC#TSuLlTZCoc6tc+UaL8GX|R*Fpa({8%{z$n|3U6Z`$%%7PPJcVywlu3 z*Fvwo+h=9BAhl(0(_Vj75|P-(^7!~B&hz&-v5u`wOPCKyh2dKTNqF6%p;%c zWbZZ1cmK?7qSwOb8b=+$YH3hgAUkFWZ2dP0&seI0tRGXs7KRBRY9OAh zDkI`&*aXTVloGQ53?)#NOyEbb7=yiUK8~)5FYk|&m&q%W5}K0bQ4wyHNAX|XLB?zU z*goqTXI;hOU6U;(ifcb2Zc_cm^Is-qIzmlE)@7I|f%bey$sX1Y5}0^hylol={y zwZgyI#EkD4WGjhv>+VResGdgOS$$+iowL|>(*Bc^hS(FEf7){?CvkMo%}l95Nr{+YOn3*`__a#qckL~=fH~r)XB~BFU>A=Ba9VP)kKbw>e2{Z*I*gr zcHyPq+YqTT{|M1|KN#s%L@*ajgio$EYDDr(x7fRg^j{Sc@aYevMu}%lUu=lYpDXZA zi81m`@Q}D)NByWGEIqN=rfF9L{v2Oym3jA@_TVR`$abZJf2Xbj?VV#fD}G)Hp89;W zu)Q?ZJ<6xXrz|#kv?6WF4s_8E|EzC^cszW#HZ~UdMHrhKTf6ejBV{#cmxUQu<~DN0 zWo}FstSSFfZX2+NWq{Wjpjw4}^afoNyVhXkE9~?Vzw(Y4Olt~h5}6B}f-OzUQjrnr zA-0k^_6z4z##TtP85-L+_Dmy#UdY^iN$)1bRU`fpQqLOyz!(mM zkN-pz_-`Np{@Zd2!JO+QP*dMjA6l@|18nw73ZXZ7h0kxSrBw3H6Wa+r=^ z)+imS%%>OS^6>7_lvk+tFsgZ>bot#OIik4qchqqRb-*6?V>Quua(hZ&h)b}wv7TF? zg>i4rNkM;0w!HaeAUk=gD6}Oi;;ZHh0{kC;WN4k5Q zw|Yxba$w}VA8#Vbp?gkxhPGxrSK)rgg3~hsp%$-bQnsD%rXtbi*VEVi6|MYf#*-;c z>0RM<=CqE6Z-AxgaVUtML6TKcflk8IFO;k7kz@PXRC7(knXyxzh21nzKWH3~yhy3*g^gE(<&%SKpGWw(FQd}j}^Tea@7XHaKZ4gNX>PRw-m zaR@qR^5_3Y$-D#{;<5NPwo*2s2fPsIDhX@E&cSz+i9uqxB%(p81_)N?5!3| zq{ZUUgd$>lBsxLlVg%wPV5Uac;L-p;5?`hOidB9KW+a6O0yYU=^pn@e@!LPrns%7J z`n&d%;|t@wB1)3-2A{oHF|hpro_o7^=dQ&X5;y$&k=nsWs1MaYe&aY}>jz7}WJ@38 z7oTiS`I(1zmKBSv7P-pezCjU4chAQU@#(>&vVF+8-OQh}05;)1X{{MWNk3kD%PlX; zXaX|8uS7!*Z3(=c%wdxyU6fiN$W%hF1q4d6lVC42i1gp9`F}lW5P|`E6*y*4*L%70 zL9z_=B4raUL0*zO`|(&r@sD`*aCv7{l6!)8wRdKC_)uwl1k}yDJ$}3MG%1%|?tc=0 z86a8HCv@y7TfC!VUu9a+_sh(^P~iqg_K!>N9%}u#6F&%y9!PGBY%w+GJNa6PvciUb zWZlfpy}54GP{ezDI4h}VHVYZ7dD)g+ua$#^#TVD1jxrz(Xv+q?QARI=%0>jxW@-Ii z6W26O+{np4>6r#ST3a=} z3TdFn-6-;yr*Zn5?^oj6B~4`sZYiL>h4GP#n_@CU=I;7jFVam=6ETNckm^L&YKS4&8y%E)^%4zw*k+2rj^{urN1f1nFy8?&IpM2K+9?YazmEr zc^OW=kN1DmZKCUho}e?0SyyoSlaw}ea;Y?k^Fi10zdTI(>JJ@Sz4Kgb8uVi&DE~pv zDW_tghH|(C?|zM1zeK?cOxEDkWk(48MPtv^rGNp6V2Qv;d4rk1g2nxiR3eU*Z~_{2yY0@@{h8;@-zNAx#NjQ+0z~g zlpP$nwXQ0`Jt?>_S=}r({P60`V<_VG&TUIREr{{3%YUS8=7C?IC?EJ5C8O?^iGrcx zS#(xRbEtc2AZ>)3u{QpGD)QmuV~1Ak!K=Gnn#vQZ{R@2(6EB&ztHwuW z#5EhbqOMhTzMOT9r|^$c%12Q8q6@i{1KFf-rW+RDR|tZ8G{xO%_k^_qB+#}^QwBQljQN>j1&p2n;ZSh zE;NSsHAa`j@h8O{{NZeTXH9xxc%_DzE^l13<{7ja>zuWt|FWC^X4&G!Mp4}^IhFYJ zHsgSpnaTCRZDI?9WGlCUh)>Y0c|omBF_j}0r`p|%Psd-&?ruuC*%WB7Y0j!;^N`)* z`I9q}HE_cO2}-zfY?2`P`c8ZRpIK1`Z#J>vEmudtve7VcnWqLh0LTtAivz$oiQIrP za(puXA@{TaqGj(mK+@(=J9i0|2KTb+(){dSQmk2g5?fpuVU(&@_1%IkV*lb($;uA)a1l!i9wOTodVfVP%7OosBDn^No(sprYI6gPc!zN|P zaqonhWGBD)s#x6nVYW994R&Q(DR)E*x-FOSmZU!UI@9d|Y;>E@2m`VtuEKd(ztgpl zxAGm2K#X5vN`ES)C4N?gjF>+WK&WAXZ$<(I#ezMJM0y5BUWjMcx+9_^Bp~Jj-@wPy z$Xnzm^$j&MJG&shu-ka6t7qvaqVRLb{NYb0zlD_{e@G4da@-fYig)_w&svyTeBc+_ z*&v!1Z|bIXsvy4go+Hw84eQ64m-h=QM2!M?e_)#Oa};7Aoj=uaKiC>Mw-$Ag^yAQs zD`ofx8pk*pm36&mB~XAQ)$=6QVt6sZIHk`!$=BQ5y%zrxGSZjSVLFi1uRFaeAlwzW z6&LU5>uw!jtiu&!agTFJ;3D3pK$6;0@rsUTpMri*yK!EDZ8G(T{}m!qsL5c#A#jE{ z0ky>-w#l+pv?!=%C|S63XKKB@mB+lGf`E~NT3-u${~n^{1HQkf@vCo@f;-HdckzoQ;(2KEaOC}2UZ9K_ua$&pPN zEcg>-*}OzYOU$>7DBOhl!UyrMK|!-7=hTTNCr|w{pnr3F`3JgFnjBqpcxLoy!r*8` z*z{SM?j_-KdFz5Jpb;vSUR z6&Hq-ue?<^C)|`S^sCQ@-rECP@qTk;$R7zQ7yNMTDsr*Q3ReF(CXSz#gRCB-iV(}0 z`JdrqOGXZD3nAEe>@zs09(570G2~p}j(H92uA43;T_M0R(jmY^C=Q}E2-1K%i$H-? zd5CvTS;au=xA3G$+Yb$jUzO~p7&U3W$)j|Nf{VH%KIR+uS}*1$E?{zJM3*Vd z9tO-{&hV58pkz>obc-;Iv|$uU0NTc(E_$bw`)0mOn42)AzG<6y_e#XYbBrs$&=qxt zv4{OCQvFIY-)!{H3Ca8Vc;zGBj|+5^dy-(*MZjMIAQN(!I1ctz(C~fgU_HPO@Yp0` zLuyHdNfhJXNii~0NtP`m!I{J_7M)%anBiUd=8htFf9nzywqZmx`WaIDWvHPxsM54P zuCuoY|Ng+iWXigRig|2H@3f%e)Ym6GJ@V_Le5jW0v%DMgB)AhlG$`?%&YvAprT6iJ zOcN=p@Qken{kjKovIc*o&13^81l^3|;$ab#=m{kj0wze>g8_%+_38~XifI;ii8@2w6X;re z{mnIfRxrp-o{nxvJW$g=OMCoI+v`#yzKsSYnv)-zrf?2WAoWizJ*qwSX&UsJFXt^u zVFqYae(4`Lzl3;qFvB237)U(4mq0~H5V05zvUfL#@0=-~ZPHyB7~l3aE)^GifHXpC zI-bC^`No)Sr7oizdHYN!r_6nU8ZqKc*@yy?x1Qu-w~6?>9-`AkZ#e6~4}gX<6CmJo z2#{jY1VaIWrWs`Q9!LXIhz&By2kyA4Gp+*8NEk+2jd*MAGW4mx_!a&m=PADpN8{g7 zt!5m4CY~-I&G8L&(2E&L3TrR(52`@XD}$rv=EHV~MW&tMt_iy9%bSFMI#i#;b99H% zz8ImhQ=f9I)yDIAyL?wC&n}SmA1I6J%?oNgi#{$7n{sDFPdND_h)87Am7(P&`vTD7 z_MVpiApz`_2}zLNBH0u0a@4qwV?^z@B+PQ9;X3SxpP?4rIQ)xfFmoiR%UuwA}0=UKz<+$^@vmo4Z9pC2=Rwm-ZKT*$dscGtY zq}Op;`J(cR<^=!9Fsqg3DJ{0mrW@)!c&qE%y{}4jw%|t@%G2y8SdHKC9K~OHThe;3 zx-4*FSKu8ZgGqLa`A@>6WHwX{{K((H7gN>N7Mk=0=#v52f6)w_3-n*ebR06w0R@DO z4>AVZQhTO!%$z=DUx_tv#t7-p(+&6&&m6oUKC#SP+tIcV-?j?b9X=z--u!?#Z~3H6 z$oy5qYZtYz~vzG^z_Q7V?V?lp23**Ns2dy72g@r!>H z>s5D_gw~=`16`jR{?mD}!^cg;Voz)1P#;@)rf&g$DnoLf0mK>%{`@MdlK57r0)j3u zmsp}V1pmS}%gGst0|PxaG~mN2RN_*WFE6n1t#LGn%Z}r6ZVZXr)W!sfrdepMl~bc= zQe=;A^=0=AKTU!0_IVq{{+_U0@%}#Ea%9|Qldp#+;K!A5Np|yj8~ve1qp~U18JbOI z;S}T6GVY5MDqlq0D9gjhN)1aRTO}Q$WjdWjA?azaz-7jrLSm07?;nnyMqgo}i_v81 zQr>CZ$@$BdqJzq}yz(DWUQ$CmAAfH3_S11*!@R-e_oy}qI?ssPgZwoU!JrL}EX;!Z zg}??nxyFwJ&T1fGZn96w$=OX=ehJ^z?Gk%;xYZ#};hsz*IkI_(bk`RY7(_Q)w1VwA z`K63ZI*A{B(2(Xo1$7la<;9J9RqC(6=XN+icD6znKiT-1Wv}%ja4YZZ_EXSL4>E;r z!zB0KM}FcJ#|L#(X*?2C7=erzz=_*t){FtTrT#HDJ25-2%-3R2KLfmBiFL+EQ0EsO zEeE68BK+b*Y>EtcKAt8DQ(p@oYpc*+`HoFmr|R}L2c8#j!M_YRR<)V=)NxKYXMZJ|Y{=dv8Nd z4hdzVVegL(H>yCy-XOI&I4`lhdTaIa=`nZfc8R>(J*#1|dBE0qF4~6lmLAhUv; zLh5=n@hHD9{#3Pm5N6Af-J8cD>nAlG1iCE8R&(^|5t#CWsYkMB4w5P|$Y+n&4n5!v zNHc&10yP1=tpya>8mivpbw?Hy56~+|Pu{k`*ny9mCUf!Q?vPez6Pjjg<-6zpfh<1J zYIkL$V!;HBFx$6JP@m-Fm}{hoMN~-VB?@Pk1e;GnEPad`%w-GihN~x1^B?=176IOaTL*Lo63#-cniPMe&;<`zmGGS}U^1MzX%!e`PD{yqdkX(CYz9jF?IyGnU3S$rAJ*k0 z+(uqi`QL6g+B*H)6~i$B;z&Jl${OUl31}!C`;=Wq*D?M?fd2fFkkwe~|&vVGD4Q7jKwODyoBjjw*RLHX*>yZr9&onA(9dAt%iGM1#GvJFQN`@+fP zf7<)}Qip_JJ_|Kuf7gzAUz~ZQ?cxk$J;CfY!wKerTKnxal$GV(u989_XtYGC!}e9+EXZjo}(tSO@hgv;rbq zPsriKu+}BiW;?M3^&XVj_s2~2+9rsU&w{i0j=E)@)a=SoSL^K_T%Jy?D>5~VftQFT zCCbE+YEeBKcGFOm>e!$0uGF6a&1wczd#%QHz8g=^s+NV!98caJ z5+tJb3>`#M?2tQc&}#W}M0(1A zkQrrqj9G9nm9Gc38G*f#4PQY}`nP~aKNYjR)QIvLwMqv^%)8+o;V(x{i!0ob&Q_#W zk!h<~_!R&8vQnl~ra=B^$sM$nPkTzjaZ45s{{kOfI~?pApd}3MS=v@I=K&Rd@pP#) zKpU|x!(1DQtA60yKLq`>WpWV;a=#;14`2Wk6KrYR>{%2fu2p+!IhHmC0M7`+NbW}E z_~DP>dE>B3IJd@eKxCq4a!Ai42(o0h({2DpmPGeD#=k2E^~nz_PD2Ke}ZiA z*c04dS&$=$?+P~dy@`$|rW^LlkydEX2c4er@>*+Y6&kIQ@Qt)4%VFl1)pNS3S(q{7 zZRN+*r0T(d7!7f2DZCGczq-Ccqe&JdW%^#AOLDb(Da1;csI(zI6#S*W0Fq54uCu7| z1+EG(aB@ay>LB=>_$%`NncEUa6M+Xd@^V)%J?@yGuTiXgabT7fkF#T5c<1fuu2Wo0 z6OsZ_Md{6fEKT(+sew9&Cur$iwvnp#(bP3dlWJ($d&nbgawF~Xks}qLTy|xOruy$J zLwp{eQC?KUwo_rdeSbhMXp&fNCb#veC{&)qZ{{7NK96+hg%z+1&rNVgQbt#G##VDL z)4vmB0>Kf8;Ti!6G6HA;qyRDFu-41NlJvs^J)pzppb9^*|%BT3V`+uO&f4rQ0E7pGWExdV}>Sq>_ zhR^qC81W0eP~wU`sC!}(>tIhi>n_+FQ0aPRB|U z7js`7nz}Z3{ZJcoHoLLa^g6J4$R?9m%an;g85t0ziuLb~1Tl-T`f)5kI%d{s`7805 zpiO!TIXGx;?%!VFzDkzDEB0g|ecz{1=3q>K2hvc<#y^hD+|O3Gc6f@($`Z{*tL=1E(s(Ef*wZT+sK$EeOMKr*wCj1tg!+!B2fyU2vfI& zs|#GhKx3H}a59@q-t6KV>O)V73Odmih2A2?!U*v+y?kD#`_XH29hAU3-3WN zI?H~Q=I*BJnKOLff%|+_M91r|e^53`mpgm9S&D1!qZnU}me57Y>mQ-CQh)ZY3Reja z`RPYk2kaJ`E~$%B6i)hV(X>4teyegt+Cq!qCdZ9Wt;Nl`p5bjMd3r|}KvhJxbaSNi zG*$crt*~GkyHuddLdA0EGVy{i#nlB3kuj(c;uMJ)9I02v8vMXo)>9^8i%VL!asPn}Rd5%1~OX3(|)u8;L|5k&RC|wKS?O(`Q^Iqr% zepno>X&g8E1c!{M!?_&CuFy*XrvPq+2~HA-0I)I_JE911AO;KqV1YJs2xh8_AQQ$| z?~3o>2o$thseE^f!vq)kL0OJWD{R+3<)_63U6WG0J(@h67A-4I?(UCE?)z>zQdbx% zXxdL7OR?|v4tq_BwpDI)??#trf3AHnqkJkXbuzuYFkHvLqG4jvY5Xg`JtJfC+ns3H zaNH<4Z`9ZUcv@5SrUNM?K}fO%W!nszn-q9UIG4;oG8)>wWy706^ado>YGICW?q=0<7Ao~&u+#`m6=D(sFjoeqRE7B zcybpcL-|xPIpD5u;idI2&}$3Y#3x*$yrabDZy=|sivqg3fmcu&qF=ySA=giA0||s4 za3X+fB-}9g4TMc(3CAb0h7}K1DpCk`5*k4Wg@4F3h9QN1!Ld+YuoBiypP<7wxO!S< ztYz`5_YZm;KS8^+m}^ZfmKxQhcuwFO$`0<58EKmx3^}UJ4&Zf|7qdT;3VZN2Jo{M@ zH@iODvjbJmv7YB8G|to#N7PAR)!208_e+44xn*ENjz$ur8*7KZ~Jf%q?a z>NwAt;vqRCX%;6fkR>2b#qQ6uiRB6C}!LDJ(^&w!L~Y_c}p92 z>c@C!+7AUIswzZ%+sZ5XG5WT~1=Z|)xdMx@OLgwRXS7wG;r5+#*0I`6>~++2yyEft zukp67p3UDP>FOBBwM->C$pJoZ02_)N=QF7&gF?vEXjn!`&d1z_jo?B8k$|xv2nxVb z@{AwH(i-lC46q`dJ@EHQ3X9&LeHDMZF-&4O1i7;(4olFXMy|Fk-$JL~16{yx8gXo+ zOQXG%I{m3}xaqg&c1f!6tqnmII(>3V-z*xL4J06^cy_!8kM`u~{eypC1&Ceb2tRzG zF4qvd6-eVWakE09r7NcTcqR@PKUP=RrCG#k%Dk)Qcu_upV^4s;>Sk3y9vI5UHkLf7 zR;vNeReKT$<2j^H2lNA8u!A`SCO5BOz1>8Y;O{QF+9JzSZG#4L)eS3>s`qtQ`Om=% z$JADTx3xTelP?l@R$j$FDyr~L=T>~D@=a%fubb!; z2HV3u^<5(+WGSpH6@ZW+r>PP@bFkXn;TvE5;%`m>c%G6c)UG2yL39rI6dJF?xfaM;U{NTd>6o+=_JtV1vDFx z-4GVzRD&4UR_~IrKrqR70~7#9fu4*mM<%x?PR1X7dGhT2ZG&Nhcd#(4J10i)LCf%w z1z)1jf}EM3)Az2dxMThL@R!t);-SWw+z0?paPz{qSW2KD-s+*DHv}XMEPz%Y@{2tf zKLozifNM*>4008OI~FKKAc(UMG8xiuO*c?TC(8_7QfKb)t}YdoOiM6vNA`=eEM2W} zytt^{$|Tyik6Q0tFVedZwlHG^9!u}|I(AIWAVH`Pw6fH8;z$~^w!sbvM`k|-qw5MA z0U2}~7dK>SI4oxR3ceiN>3ab{_EXBEIp}m{M8;pJ-ZT_H@6W72Aty_lH2o(91|pwx zK}Yc<4X(*YQ;~YTSa@nn16ky0R2=I!S&gvHIRw$H1J+CQhRp==^c5Uhst2cNL(ciZ)(3ZtstELGW ztVU9p1VRFrScH3|h6X-EHR-|l3}D|esX)u?oSQUfic5A?q-m~|Pi%7c`N5{(q0u|6 zsoBmo&gJp-Zzs3rn4|PW2Z?YgUT0nSXyp;vvkiX&3!v`Lf%g_3GT&+YKi|nUfYvt> zBcO5v_QLoG1x$mIGoa(sV{44o|tAvM#EC8&+{ z;@^6#MbW;KS$j=WBq55>w;$FwEveL85r=P-B5sAv`Q`WF92bG_VmOD%xP|`5IT9mP zb=jb^B^Aa?CB}Qu#2+*F8W-do{W73y;L@TBpKfZ5-stJ`wzAK;|1!$4f3zM13G^ZB zu`zW|uzi4u#2fL!%KxKZ1PZ?Y2(Kgop(IZYPLceJAsib0;ro%18vX0)7|V2A!}8aT zHg>bJNyR60?5&bLY;&x``9j3Mop0w<*0Fy^TXHD0ng-(oH?mP?kaDgQM?*i-pz62n z6P0_t_4Nf=>gd#dM~f7*{dcK|L6=)kKHKom%uIY>KV@yLgruA5J+--TX7C~JY=VKa zj7Y|HaQv7?LIE`B3yjp*tpo5DA}6%y@l;KFi$qtOA}c>VL!|druavFBowoUOFg|2( z!~!Xf;JQc70-hkt4(&=xaBTI;jT6Kp$l-1bM(INOn~f zwe*P?&CgwiN^_%q?e~ zX)B+4l(MnZ*ZTtRx`g5ZaheBP=DNr-w%$*`m)EJFY_Ve8_%w;JM{1qN{rL8hMvPV(pZzMbJW6=|(nQhdEP zJHB~7@cDCm-u0J~W*d`ex9M!TPE3NW9Dh0a)Va#FT{tTDIq?H0;JdRx1}4N0{Ku1% zL%c^1a4EMPhYVhcp7L~bUgiC$j1CJv452N%kMSq6%1|4(Y?55;mgCK0y1Px}iU%tc|&{;l8LS@g&W zXxu(F$_{1?0gVtBnXD90X2Wc5QGmR;fSWfW5whB z0qgOfrr)ITf0($hXLD3=^YYntT?zBEZ3D9s@x$RyWM41#!T(HbcIplzmo!9rq}j>r zO{6CQs#M^~y~x)9b!6;>#7MGuQRQt&N>-tZSetQL%|O%=sUfba@^P_^otoe&^N(qt zV6NyC@ce?&!WwTu1Srx zAj1msB_%R0$dn>phYy83A?wZ5UHN7)#k^&$Azm3fY>=&KD|IdGWBjtzd;%xL^CNVr z&k{%A%cvbmVf`ne>*UzqbRGOoCU49FUIM~}T+O@RD=-3nLemA~*cfm-P9t5nVCu46 zoWfH}4Dxd$UA8-;>X_UhS(tN4?r=*i^X5hr*E8Grui?JHh>ooZvLNIf#dSYLPcqlYuNT((mq zzP}IMvw6wTJ@yC}vyDNX#tbh>e?5s-P#>`ce!2_!M!-+DaTkUR-m0(pPX6CrGh0*V zU7bECMwD=nr5*o+^7r2+XH9Srp$R9@;ttmmT+xG;B2OOq{S<<_GTp#R09*nY4@hh? z=m|o;EvPAwNA5zTwVS{?YXty0lB0#UP>m=Wyb-VfD0lZ_&HCeT-t?Wlqru@V-Bg5Q z^ZAr3rs=NwatGAuFABv^T&+8EkmZe_?Rb}In|W8&!XI~tj^W2CnUymN!z2(bN=<`j z{$gaxF>o7ppMX3jkX7ZrfTy>L|kV`aEBj=HE8e)cq922JW4Y3`}pBx|lEeF~t6ML`f$SDC$0hLiY zg#jHwpHJVmFWuo{_L9XjhKyq~-5)9L)L8ilMzVFYJhe5FQrarCeE+%-sa{XBco5%)}Jb7)g zQC!Mr*8GBz7D5wCt$pk_dKcXdvxT8*$&9Rtzi@_&ClCcJC%vo+xxOj_fzKk80tG5k zLHU`>4I6r}ESZ*kAZdKES`Stk1L^dx3x~e#?{v89nHD4-*k@y&=Zo%#&iLl6dXrBn z$LI4!pQJyl+LL}2>3`FGaH@p0ta@SW%Qeo{yzJBWW>*ayLBD;qY)+W*)^`34_1sGf z^dfmE1js~G#6eTD9XzTFD=0i`ws^4vj}z|EDEuAnqLJ~5!8910jDuLXn=D^n?@ zhg6N_3C))fjRC(90^u2g9gEkFRadRc3eHKA^q=u`3!4$g@ArPtwU%dOw{PA@P#t<9 z$D78~hGqw~9&aw%TU|(X<2N5&P*f_KdEW?fCjD}_$atEzb6~r~RL3QGb74GA!c*U( zRI8SJ|HoUhW_N_no&pC{t5ThxRE%h-mxCuF5+WFq;CT{5NC5+W#9V(!gn=pyak@U{-S6i+WMez@WMEm)*vo@bxP(P(4Ib_ZbQP2hyb#ii0 zG4{Z>4?XwvZ=v=B=p^T!i*L}HbR&7En+!G@609S&CScLl3h=*>;C*;`S7kwDvl-YG zLln6acu8UCj<{G4CXx{%RdjQ0+1>3G(7eAI|F|L9NnJa4`QpQBV+Wvld7jPch7)s( zW(2b%*R(!{U1v3Y))rQ4T0AGj-V{#gjyx@Em?SKjFBWnq)T=F32Tc7Xn@1%F`1 z)bId5N!7+>0)ZD)LnRgP&_E+NE#fbTkq~!5!~&n+NrhgE*Zu<)j(N5HXNLXDf@f5v z2AM1!DCjPm5x8UK##4N&iqK3=yER?fGY(I)>3I|c1GxVb#ZsbI_!fes{pVL-&MHpo zPBc0&G4{-tYyapR4(_auC=KX7=_!gogBm^?nWnsnx32hWX&2am4?fPuj2%QUc3}j1 zHI428yND%rF^2I4c01h(ea0a~V&K@`354;|UgJF_WcWtFphgfG_zNqh3I&7{>Y!zY zXd#G8jg?tlwK0ErMZDlN`I-Wk5 zTG+GTZSU~_eeXDjP-MXt1+)gVE~__}SWhpUyfvsRASIYxHT&)QkMU=D)V>$+7rl219H%-ya(BDHcu;85Zp|^l5Qy6)9LgzA*m0`@+kQN$2 zzSA9CG~=2nSXvF+!~vyI%gtvO4LuzS*Zp{?0(OcUT)$r9?d{+pbi%W;{8OEL&D?u~ z+g*&D{8@g=1p`!aw=Z?Up$GrfvSV0o_2FE_K6J92t51TjS2Gy<8)kj$)r#PQ!VsE%nG_y; zJyQo!*n&cU>KcK=q*W~C$yrQ<;Qjj}6GVRUpYZrTXsBEislS4^5^}Y9{W&ELa>Ivh z5<{23+l!s7__-%J>EYln%Lf%ucx(qmDm&79g-Qtn;6oh6?%D5 z-5!zK^_S-AlN%0t=;>>+ZctX@ftmQpT{n|Mby-1Zdv15Qq;gj#F8>;TJ=}O?C|I&< zC=!`-D5#(>%)+tw@7amxhWx}^1|p$>dN11AvM8`RV*5NxQ|AP^qEI`&V)4fVm5*LD z3{;q{uT#m&eC!Xp8FUM*g@*MqUf^H>zd)EE^mA1#kwfe!`v0B-|KbCPsVdq%+&w_+ zR8N|MTkdHMX}dH#!LAx+1OHN#4kw#DoRw|tz9e-@a9>z{9A{$a)bP*e)b4fE?=L;= z&9XHpW7Eq#r9)0~qxI@7ThZ|G5>XZsrbiaQq~^1aEYs%(iTBL)IfdpvY51mTj!$#k zp*a>-?tQ*32_EM8*mj&D&81sf^ zGL=3;z=86Kz)K(QYNWhQ0*^``At4O~i_Q2^Z<}N^*RL{IBwJb(a`%x<*TXf9TU8*5%2$3`GicXm4^-KP#{uc zTo#lGK#p|dR~PZEmEl>2G8ZqpE-^9DWZDU#(KoRR!lp%*Cvc0y8g;@h&8t3OZ+EkK zt)6ibn}sh&29>y4?`=w|zp<>cv5a-5&-43&<@m1q;VVe{czmw#D2s|hr`iXDCM9m0 zDz%X$xGVDY;!Eb=np*ax|6_CKDDRQ`==kHnI*Po89Z@ zW!K2qS^InNn_uL&>EI~;5sA@1Lt}w>g)^sr1+lNn8wfO6m`1kRO=MY&@HQ#}( z?p;&f-c{!3Gy}0$qtB7OOfD)=32puogJ*WLoP-0;x&(h&fNo{dtq^BmGbi|&EAaUY z(C7*u7>@_0Kpt?jwPcgX5Al=aN z!JZXvhUNiwVMw=b#m!S&pWx5%Y~=q}ISPqw3zrPAlZUs>yQKUcIb^gAcN9iA7@Mbi zEV#Ym{`6L~1$n?j(<9UBwSHmFMQp$iYyfU1w8|5cIv3zUIFkyTz!Appw*XJbc}OW1 zPD{Kp^N}@Fi-$8NC7Ju4yV)B(ZO?%B()&)<`&F;VXGu8i=|jiQFXH2ug2aydi3>J$AJWG+3Ga&F zjBbG2AcfG#hPiEkX)-=V<+7QWCWng@ywyRj8*&*K1_>-?FqOcH>pw7nL<7cg z^B)8*@{(4#_-k)XsA1WDxH-}3WpcN(6?@3uThKhKC6cvrZ|{=g52Maei#~-?z!V$7 z;f5op?PcOCDYXJP=R}Al{*1jcEMihT z|Jte-TJnaZyt7_BnC_jCV6kC` z(5T1Wr#GZOq%(M}WJ7UC6p^o19y0KYvFP%JBZMUkP zV?`A_!qSH$#ApRiTy=v+hS$`LzUW;Z+B82j3XV zU2Ug7TzD!(dobsKyA{8LrlUr0zFA!Gy}$M28_)ex<)Ue$rlKxttxkM}zgNnGfr7{L zO6S{41%c!k^L4gCf@?YK z=pPsW9rhW&&yc+~atrupTshfruY`*VjM~XK5@ca$K`u7LtU!@TxOo?30}(v){u1du z$;vS}m4eh|riJb^r&$ROPFn_TW_LpprYD!^)U~?bN%A(TavfdhV|Zz0K{EPvQ?4~S z5^G*x)$pvQz^!<`x%r|+l_zfImd~l1l4+Jv7Bn|(b#;|%;|eFqw$({17@uH+PqM!S zd`9jtM*18s9Fe)q6RYBlCj*%K*SmB8@zzW}fVq(|OK{-$aGO+#mGl^sC`H}m%)V0{aox7^$C*#8`(j{FBb`=wy`(_oVYTY5_C zVC$~dM@!gQ8}XkPmacP_iemb=n;BNL!Hc$EP0DI+jQ5fk(@}dC>YJHIdMZjd(FOA_ z-@Nt5T;=s;_m?Yn=+(yx_Ekm%G@yVH6h`sLTZ(?=!nRbKPsV#7s^h9xO!EG^6 z3KA*qgyj+dAqpXZn_K~j4y@!r>rWl;E%PyyWND}NeB#PJyDZ83>B^I#P1I*r-4y%N z0&z=d;LdsD zTE{q1eMm?#I>@2eZYADuiwvpNUsC^}+|fUAO|qYzg?=RUce*G3dsEUvxtVWWR#O4W z9tj(+6$v2ILXo>WtAdV&H~WB>WG51>BFzgT3W;=3EhP=;pxgwGuuyp(esTLi`ugsN zi+Tj!=!L1VtXFr>C()&>f?jN$ab%H}0WX&_HFv8^I~#3cWs~@Y@|V5wJ;59w<)u#e zzNKTYsDD_u)Oa90H37H{FNFXG13*>~9-I-}F$|1smL}&*PoBo{8l&~medi{gnTn)& zUL0gcQLEQ@@RIS`b8SZ=9VW(CU#HS63ojPVQ1MBQFHk;U3l{L3q4ArzCT0;KU=;9M zjIkP8>9edTo|W9|q<%_StBaAk1v@6ty2aR`Hh<2(NVD*@!)&WveiMV-#d@Y8wP8L( zu_1|g``b@gX~;94L%s)ihR?AISa%>_?+!fUG2sC&Dze|(z@DFUg5OIF1}z2vbs^^Jt=lrX2du1!4ETb7of*7>tLA9Ao}8lPqNZM zrlfI8pSH4AL4FV*xGthJ|D(Ewpt_*Bd{#Pcg`}FfduLReZ9s{3c}~&HSOZbAZdBVf z&r_S{PAftiu-40q=)0|*rz4fuot?w10&|)S`8pNU_jU4EM{`*^TW0m`Z{Afkm=xhC zwScj|(JML|X0AaZe2@p^rflURW?~oo6D+-8AOW#i_&>JW0#jq`BWn0M!It(@(&bU^ zWgN{QX+le3HEr!_mmHYa5&GsU^t4E1m6R16rpMPFxP7I^!7eB{@BeZ39&k-w-@`cf zc@jd{At51zksbC5B<#JzmJP~MKoCR(K^%w+apP9pTKC>sZR@I|TH9*1t=-kuPHn4Q zkn4Ny6SRK6@9+11KL3AhDM*s%oO91!mplufKyR?i|La+NkQGN_xInvsIS1i{=MqgZ z{H#N%YPXmJ3X49iDtt~>MfPa6CWJhxCE2*ZnBJ?BS(Z`?PvlN5=}{?0jOcLY*}=2o zL1vBseYH$}g}DU6@qeMMBTq-%L?{@Egphw7)=o44#M7xDJnLeu_Zp{)uC}f%uIOXP zo!oXa_|2cx+Kp_#^POc$f@quUhVBkwzr8z(v>l5gq-n*O4}1a=6fwm>eCs;ut45u{ zdzkq6*}m0UbLpI@Am_6KO1WQJ80}NX!+-H_1vHy@BM;<{1+YW@oImWC0aHL0nE2{o zzzBET?y*g;KORV}3knagDA&qHcIG1qb?K(o-LZmF+2LD8zN*w)6RlFVQhY1Z=lX*` z^%eaNlP6$WDtHPWq4)6rz_lYY7(x*w&4K*?Dr(jq%Tk+P7v(9xTokKH;xCD>=Ra+k zOd)#4$oes4__J-s2hAVQru>V}!`VVC?vE(c_jPTVGdi3y0h=i=xbY zwO?yNf#hiC=S%lw&#u@x!pWNQ|ETWsOpjIg?os5Xaw&2{w|gX-(6IFC+>vwfQdF0N zEhV)f^$>Lc96k6H-43*cOevwRJuJ3`9u2b07Bn3r(JB(Vg7J-kW<}c70&;-c}m2kv=y zZ)DCB;xpUm zwLGn(f+qxG5)BEmdGE+TxRQ>$eLF{`h)J5&+LiZ&G9+&weIBP28mA>Wd3*cUw+n3@ zfmCLJAO{cWTg)DGn&=+rvH@agU-CXPmHpBpm{>`OCUP_4-lI@aJ@ErvSI)NM1pWNS7A z^p?1GjYj|6sd;A}SL|v)2mCcUnIbxFL_uIj(S*WZn~-}J)~5vVe4uv$VxCgaN!5Tq zxl0N2%j8#3h{8oi9O4%P4(#u7OV^lvQM1d z9}u>zW!k6=YI{dkdrnMFyy8ggg7(6W=E{_&16dY`r*aBt$e28?Wb(LbQgkv)1|O#n z^bP3(5!zF*e`Nn%b9Epo8zOvGtZ5l!Bvc)KeTFguvLi6_@+W38I_8QCD30jR^T3)tVoJ(SOjy?U%vRZ08t_r?3<)& z3D1Z>Sk)BWG#M$Z9ZN;Iluf)r=@@otN_-Wc&EkkPh7qhoj*f$q>y+-!u5m2w(R{q@ z@}6hU{@jXB;J>YHO5L1^ESM8KSl>bqGPx&<)VAZu<~~voW=7ut7n73+*G!WJbT>o? zs~{Lq!UQF8pB#CBE=h-wejtt#GL+sX8G)~W6ueol5VF2KzxI9O2E}}>r(?N7LDiry z?(}S0jg5I@k@JvOaJ43ZTC)_Tj*MT>Faq)Mv!D~__h4G^BU4hG)f%Yft`CY^_~SE@2N_@ymASqm16$flWWc_*MS8@8X;`u z(31%vk(%wz$-;-%;kWTjG#!OkJPB1hyC@VQ8`$svTjSZ0i3uY={9}7O&&Fq#(8n%7 zHnd^qzPH{#bqOIGtIkzuKDZANXkJ;F3fQKFpus*Nwn9y_pkp1%`w^upxAiGKq1zsrQ31AG9 z48p;@i;zRw{AmT8NeJW;L3?XKD+8~=Yk}`rdj|JD@Yf#Y?7MrkiF&>y7p ztqe9od|qMWkjAU7XuuJD_d|gx9?Ed~(^!9KoCo~}va}0iDFh~L zlFhP+&VUnPT1oz&G6fm)peSY^9AGAc4ems+Xiy$HJ;cc}p&27!_Ima%t*DrvjW0}o zA!SvMq8KT2vaxmz`m5pfk%_40%i37EoGMb_=Rz+VU+FyaM!gn4jWWv5AK%))gAz%s z&4bFmv9}FR`EQ|1sNDMV{x6NaMPJ4gs#Mf`F7omjdiJH0z(sL0Co!6Oif`ab{C>(| zT6CGz0*JoQm^p$VqUJ+_|Kp?tL_G?G{~>q>gA~SfiaGx7 zj?igI)xviH_@3ZHzTmDPBSWLqq|&$2`8F8_P3llcmXsAW6qxMkkwU+d?5Sb&R}*~; zo~Zy0K#Vawm3an9?GGpKz|Jx4v5YzZV7S|;&zCtlgmIf_S)bPf(>9uB`G}f zRr=nZ!5Al=#MX(@vjXBu=NohEuJU;|98KbzqBIy}SwkV?=QpPWI@#i0mkY^(|q|=~k$D9*PhktKEsD^)7-VuepU&qtdjm!kthE}D#{a2?TE zg|jFotZaw+lKLkP;|Sc|k3KXQ5;@2!QbT_-I7=jAO&dxs(HS&yineqrW;r_;ghNy5 z*+P{wm$r)1421+o0A9(SgKsB#`@KUS8r;dqE9j@ujJ$$w8rD~PKwoho!{|ujaSH^s zVq!yOCVL50Nqeci9wsM=jfbTh-M9x|hCeglLWKx)`oxKC{Y#UK$tla0Zasd2U4uJ~ zeYgYlQ5|UBU@Xi@4q9cxR>?n_F1P=0#Wrd=K(x3!8CCXMPJQRWX#UYBp3#{nDx0AdWKgQ%k_5hsT;6uV}DbqSh z^gL-019|>ebupS5%(#>(cM*j~K!x3~CO5^Nt!DSQI*ZHkKiCa_ugnOPQ`vG?PLoO# zz8*EtQz}uT?0Ax+tu5@%ea9ZzH?W;uxNLLP`^LZj#1DV_p1KVpu5vS{0;7$(Lq$F4 z9K}Lr27`-2IrKGkJ;_U*Wc0;1)0q683GPz>w+g&`Qoka$gF~z@1m1qoGYRm)-#7|j zqXg*)W{N>tk$`MTR0!DwW)ZA%Wv^5yij>%n8)Rwx-9Nx8R6!-kLL2%N&hLn<0@a`XL!F05eiFm@gEv=GNO%_7asr-(?I$f>wkUCyO|iY&X>j2SJg$ z#KX?r$t8a9>Mq)CSYA1A0=!Y+UF4XyX}^G&I}G+Pu^F%>&`j|P9>C}lz=T9%400my z3>-?Tyc?Qh$TLWXOsWciYy%6d==;$xjcQ$z(46SKSwV) zB~d7xGHO;=h+{*A{>sntC2rQn#rA)Cy6R9`3chb-b3d^Wqp8`8yv73Bd4u^92|Z?L zl~BU!jki-94Bj31E-s-GE*A3GwqljRUC@ZX#qG$v;O?Sv0=BiY%HUN%)7%27v&2a| z0&WUl*yC^ICO*1$xB@D-g6SJcxQ z(gF4F5%Zxf#`Gf@8Ug!iCW8BP2y+gfGtm%QKiCfs<5ysZ*qw6YF}Zxsb&rp{{gUOl zQSK}hMZWPg@?lPdYov#q3X{w0?krU|D$#YhM{M_+J?KQZI21o>;!%OdgY3VQD$1vo z{TE&M1Yf9}>O=>5Xfy`51SAdnGq5-u?xnCaXFJ?Oj+H2*vw-ht3uJKf$2Z;#nxb%0 zsoX3roUeUpEKykqSjVLST4Zl43mZCrBGTTL?u3<8_ty^Y*7yd=fixzY2E9%(P=V1i zw1 z!SfLGu8ASbt0A2?V7JLa2M#$b67>#iT&Sl&hnGfZ&z739Q4kywB(-{aE3(C(-ajLa;4A_BaRAjR~3@7%Z!mwzGtUz=<4Hw}nHDf#rkb2D5p*frkJM*r4skQ;w38~Ugg zJ*t_2gLl!qF5~05tnY#nhHMi8t4zEGu+eY98MuK~h4>aCAf^onXbwRR1ga#2gQ75u zltCYmln!FXW)Sf(?CH0%C*~^SlmA5Oia1S@trzWmY1RX{uOQ?hnmjKmF$_;`$oh=> zGdwRZJY4NM^iH^PmK)b%@+^?bw_wTfpVQq#G;zkmJ?QhUM&q9Zo>yrlgZv;AsTq$h z1WsQ`8j(c*5(}7skVgyi%mh@P+5{DAkwSs@HE+6)KSj28_I8IW6evh;7!VDJuuxNFCX^F{Asgt#bV86jIJWqlT-J~rkw1p zoYX#YE=42HMr={viarHB0Z`C8*~frRLBlyq7fCFKAc4z+hqF@_`^UD;9Wiquujwi_F;q3}V`xh5boFR)9}gn-LgGe}lmHV7 zA4*OKZPTu!bMFm* z&51u;+&w?`Bwz4Ff6d8psPuAgu0=KSExL))b#LFtPv461uF7m`%B(UT3vsE4Uq|_8 zzP~on$0u>^G;P^}hP?c~O+`uZnHl9_Vc|SWr~HYV3zLFfq|r6h9uF&L2afR2Ya!|Q zr?hyNkVhd&>Ew&ZfCQ=W3vyfWYPv(dMa*XTTq=zWY(zBNmKPQ~TI=bl4UF97@8KTU zVB!nb8PGRAOfK|AOf;-%Oy$8B#`a%v0#OGy?_bTTRjU~JVjR-dAX5_*iipOpGZFA@ z%S$DsJ640n8Fs5ghlR!zP(g=*+m;#3t+= z9~6+tsw0{xJ}8ipFUUnu>>jv_S_=FO^%Z7g7;pmN0zTsm{HLxIzz83(I(Q2FmvEv} z)d>lel?e&en*V^ZNvBgPgG0tL0J1(ysD_tSRSkL@4CAPPv7jcC+gPEx6kSMK$WSEJ z?;mb_FERkY0vlz9>#1i9TuSii^`_l?ppAwhqromga|EgXlP*N24$lPs!_WaUz5q|h z27n0*QqKs41XBK&7a&*xv2zfe2D*Y$Zwd)kDs?)5H2q!U(?k%tm*D>M>G|6iK7Qh`55 zs^)hLu+@6WtcMD(jp43rJPMBBh{#|_F}Dy#Jr-SVdBGw>D{uJM3SE>2xW{P8e46d( z;$pO)jw0lWw?=q|wy+vayaL7(dX^YonE+ijvSIr$Y)6M(eh8_Ei|_(g$eNf~*2z-g zL@cLaozTRnE%ZML&Q>;-V&$;@_evQuj|qf+Lh=kwD?I@IX{PBOl;O<6|0+fQvs}4C z#>#Y={eR0A84)u1Ft17)2ZA<6(i*zXfaUt%h0agg`#x$Mmb_GJNlLz&k-_y&FJ$oD zi!Wpl{rfE?0loogyn6K&d2GW$L>^IzuW#)rUh?pdR6nrPLq;3!6P2Y&O@-4y?93JO8Ly>~6VQK|^tx>c`m*YDVYN5qC-rQZZ54gKpcu+El4 zXX??{6UJbXI3LZ*?e5OSQ%5WgZ$b|mTCgkOBRqw55a=cbz2-rDKNJMh-{AZ~m4>OR zy>R~=VSzaKey~b52v!wALj^s|z|^7pu#DpOJNu?9@Vmo`x1b5lzxGZJe&bL4%kqNi z{UBBJz#uMoZdQgfWQKNn(<A?f=9HOM+B$2aBE_us)! zk@Eh5$<@R~b+U}WcRzz)oObn`FO&EIIMcMZT*J9@yfP2`-nGN(K-YMkzOjdz-1SC)Ye=9KP_X2yt5fDEW z(kUkQSxwJ2=yVxw-N`y|onNtD*$0Xio@z44@gl}DP>*#P8LcXMcwqsf6j*V~K?S zkGvKu?|lDT`1ypARKtOJ%PL}WuHZ#it}I16D-*q43>&6&{BQ;3%C7WUT3aVy!Hci( zw_ZULuej|SS|#8iza9B8v9T`5OQD#W8Y=fLstPGdS~y_Pd3d-yRw&9teP(6_j+lwut}l#-Jh45Xz-I{Se^2t2MoqH&wu2pSe^nM zvs94*rFE3!^~N^(r`K!ZjiYwik-7xq*Rswqx<*H);Y^x03fd>hLx+PU6JMI@N~ZA1 z^fxpF1jL_(RQqt23SeS%&AW1NR`3cEJS~0c%Ah3*MffeoC>h^zIx5<&GBElP?%F&t z$zYg-eO`Z~3l))XjSt(XCB_MX36vx;DA4#Fx&!}9!s&aIi3Dbd@qP!GWf0Ah&PgIT z=BDHnDa10lso@|UB3ejfKspC9Y0&ooc|RshXT2|%$8U1Se>m*q<4gAGLI8A;B8P+A z%%0y7PE=e9<+2=cfSpokZihdxqt>fkfS{|Ajk`TOsa=XXLn@0ah&6tVJ`L1Fh+LHh zzDQ)WV4K@`P&4I$0Z?uo)`^@@fHN4X$0^{2zX~bbF$lS|{{k1f|F~r!-Rk8@BOqBx)uH^&)m+&gd07yy_$Y-!pEKBe+Q#C}nFD&<-h*L6n}=1<25cF^9+T7yPvZs8aMGen=g!qsW$ z^c%7u{|KWHUyBa$@)F0G@B`&>8SrxlTdy%?GdSRV0Y0FkI5eql>H$+YF|crYzAT8X z;OJBeq=ohWTKY2Aczy%Yxv>$)MMa5*4yvrE$T|2OH#TJ<(a<6~Ty3;gQx4S5rN*=U zRIG!eiXLriZA9N{Xn_(RkFd6*{`pqT5-5?upy1mN4ayws04`)EeE!f}!!Bev4C;S` zwxnrSMcM#NQ*)*^8+HhE9YMW-i7iO03M?uSLI0zMbXpQ5n08+<$3loT;%va`4Xq6Ayc4{Bsgr9g&EC_evq`3)_+$6_M&IvGuP8JauP#8YqsNh}XeJI#W1INZ}H4W04r}&8I zi7Vay#vlFscF%0*gAH*L&6Pjw@_rIhmONgNe0OR{VAS5|T`Lc_-ttf(_G|ri90%io zog-!bdX&JKm)nUx!AG`6)CI2`H|yTy*E;B4TEKVZ)n5Ak(4rjsxjC!1>}S^^9@-Z@ z$}gRtSkVPHMI*7BzofHy^se#M4b?Yx>=F4!Ji9r%c@Ev8*wZ}3TW|K9Dv5B5q{{b} zjUnD2dm6a2{6^Z#PM~zAz5!}rQOvlgH ze~0g{Irr%mEJf>4E=)Fe?byGc?A0M>n+Rtcz-&z?BdTOvS`GuM%#jUOTbRK|l7V3u zQ~{kYdYw!P6+BqM!=zup>mjK!n4Z*`C*tY&i+&suH_hI`LGkPMggdd3b^9FacJQ4q zt@vz7p|Yc0jUPU}0lNf7{ef(w@K=BTDN-Q{rgiK(ZsEODCoCdZ^hqyw)0tp*=}506 z>!^_<-(&eEtjMbnO2o+fw}q3=-ol;_wl5BFax0goG-g)wyBlF-49+GP@acfsWG?&w zM+00288Jwgy^?hz>Kdkr1XLU$kG5(=;8F`52eacO`1d zT!Uj;J%Us_%V!q#6pY|W6BVxN5Ad%C)U!)d@skqSs_@0etXgET4~67dvNQ3Ti+C4y zf_?8cn_4{Bz_`)Ni_!@>8ee$m2uCb<1b1dAOkRlk8A5 z^5Y_D?HFSwe$ab(Ngvm0U;|o>@{k>xJVv={Lpmw^Av0Il|MCdVuo`~QkeLypXh@EY zS&L>mAlMxCA{9p%lC+bO;VIL;2w+y|_0#E9!wEMyWwLJpKE|}Fmrw{O8N!?~t8H9V zA9w1GDf#iMqb&IW;mGXcH*w^tyJ4aQi`t~NHcel3?)mEYUl;MYEM*5?z4yI@+?xE+ z$2;V`@2xz#dpT-5hS2K7x*YdLJiV6A;--#Xp2aS!DxRA)Ey2&KP+N+(bUj!)y=nT} zrPUrMq~V=u6nALt$M}Q7`sUu*)ZE%J{w*sKJOfXL2J{J*tyy+e!fJx z;$Jq;-F*?2AwF7NBMSF$QYp*1DFI&bzQ3gu#8|XPv}VRCEx7`X&f34bMZk58!Ed1y zxF})Irj$bbXIyy67P?_fcSmwV=%XIv^)=sp0BmC76Z4HglXCch2rHZEDQ1$V(7Yys zL^muYAWR|B@q)oWB*Y+WW6FvVhGP16Ug!j}Ob9rIT=E95AURwhExes&zHxfhoA{b6 zv1qzJXI#m(Z&DlJuK;f zA318a+v!_4xg&eVllCmC_D*U6;%}RR4g`-HYl$}OPx|!GvN!PKsS%OhkwrGa)P||2 z(=2?0V<$wEeY|V>&he5A*6y)=-{cr}c`4QY`lbz+j|WEjTG}OIeW(UcEIe3~J2`CE zIGW2Ua4r?brqT6lvdI!_>^U7=K-eU@s!~sz~`l zvZVz45O)e6l67a~ge9+`@Ca?+Ln*?T3`~+`F!L z=il3YietTg1i946@v(N>44yg9R?ug#;^6r=T)7tVfDMy!nmk?EsEwK}K&SB!=b}^F zW6FyXC6%Gxx#1&Q-V&`i`unWajxnObfF`ulHYp-A5dO6H-VM2AGHML~#wh38-`l?_rRX`1_c0HLX?Bx8mf6Eu? zc3tVSWpSA?rM_McJHzYB&Nh`5HJqv}l&)3z_u2v~X6X5o=MODr04|f@2R;EFfx`~L z7DS!F8Yu6pNkYYe`Gp1?Yb1iW1h^UQKOlLSVckSVPKKRpU~IFN&ZUn{2z0J<6=t=s?!m5vE`;d@Q07bNe;Z8Tq?3`u(DZHI#W<=X@O_$ zakgfg5?)iW{!jQ5g|;M`uYza50%_}jk40lXYmt~n=d&f3Bi)`fjJ z8`Gmpj%qTH)s4QfGkk@Jx|Hl?DTA%bw6kQAFW8tO-y$pAvoAo{hP)?8bJRkfl`y)3 zRd(a=l{W(MC!bhVIH1(qCtNN<9O0K`nJ}ThI?UBUtaU9?BsX6B$yY!A_PAL5 zGoSBFQ&I0M=|~`vD&u5~84(4Ze~503Lt3ZLz0~Pr*#wb2_PGySJCCuVY7RsKL6bbgQ)$ zn@x|%8GV>DdQ4fdmE~_zUAkI=S|cbee9l{b8cj@tZC2*ggM0}Utdqf7Hg>8mTbgZ_5?Sxn76o%Kc(+)-Ik^SRT zoo{1ixv}>{hSwi*<^jD7aJFnR+6*WGLBM*$A!@X+;DI?r#w-A_Oz}1-j}R^FY9_w2 zPS0GP26TWh9<&K)QeX*I8@`A?iZZwKZ2SJRKQ=omsrG@Jh5Wrpy2<95?+3g_nl%7s8aZ^w z0PvvPNRR>?40%za%*Y?cRU>Xa6QOH^$T|h^K0@txZ1|a$E&kj zj*hGPJ~Fgjyr|$|sEsY(!eM>JFDI;B@cW@4gT&`IcLO?+-p65|4kB)52@atR@qJ*@ z$F70SWb#HwFx&jAA0hOjlm0};3w&Ar`$PcSx}13t|G@JAtQt0K;f$sH9zN(D~xMc_f=Ga|v@ z$r17XujmYdGgxc}IFfyeCKUlY%?OLwBG$=T{PvzSd@V50Kr8Rru&*`2*=AgC}g;(1$wDSD(zpMaEklT+Pf^W{;=ZhK3E ztgLsvJHl1&o9LXl!{DA1khm?kP9c-_kH0)_RJrfRQHi5%lts%X#_HzT2;BmbBuP25 z7wRYMw<-m3rrZe0dl?x0 z%OP|HMe?r_CgL`1Kh&@f7!C+V97)&+XTYdlctHrvQ@`*>8HtNVQXyhPp2ULn}g-z1>O&Jp4ya!>5J?7 zDeCQ%W`Dw)$igmB8ofOEJVmvzR86r~=4^qx z8_z=%?vgm}!N!@R=slx0aH&zR^Vl|-37?^ZB1ur3CM#m>qS81?rP4p0AD_Fsq3oNP zRhx%CdaF8nN@7Pw{;FKf)Oty9bfOfWm{lKGXvz^r!W!yM@w4~POoV)!xeMMd?-kuSZru=cLk9YbFU7cY?)^F3p z=4Ur6vXSP}SF-~o!BK4`3w}hZENd0tHOgMIeDq=NXk_mmRj=}LDUO*N*G9*E&d+Q{ zygX%=G31Af4ZCuZac*AiqOzqI=y|d%?`YSQ=C`*j3la8Ab_@9?U(1>HyL}!iM;8s_ zg6k5CrhVj^5TwwANRyi1_-s?Ai*D1V_eQjfIV=Zbu|BeqlT)*;k!>fh-H|&k+Q%@L zU7U4hGIIY>i$lzw7cKlCHMMU6o-tM&S*+d8_|ZRrOf3f5lZeRFSVg1=3aLO9hy*y~ z>Oi6uKpk*Mi5gf=0T-jdmNsH2z)yf*kl|cN3Xzdn*lP_Y0)jx0OO^;SA42xxvCG>^ zIqo$PeovJKtUMhF z-t4@t(!Bo9#Jr(PtEV19N5|r2=H|XfP``vK$wM*nh}A)F2OT=l%!7sS(|vUUe6?s+ z{rHOF*{JwT>4t>n;Cx=jv$LKKypn89sLU|q>Kk#KJIeV#XeWyLo&z15!9^{3#j=5qsgEtUIMpp$!U zVK>B@zNY~H($_XQ0g1k%={-qR*H^x=p#U9kKDlGY=%dc58U{LzsW3NWujaEEo#d@56X2uqTNw zG>?~Qc>4=?+H~#-ZWaWz9NW6~mK8Mt`{?CGEwSii?`8>qLUCnt>Ri#t!Vx>4=4zsw zSNm|R9b#}qbQt) zrX;DMp8@cVh0pJ0Jq0S0&R|HOkQD=fDBufnq+#@|4wNv#n8}?(+bc}Fz$|3FdqCmV zO5Y=2veNaDOOU<#@w!GI7oN1cplW%}+Pl+(s)N;y^YJn_KUMOOUj{M``oneufMq1Wk`1^z!L%Y^3kyJXDn3lk6V)XEkA@kkQ6rjn zyg0tu359%tGhO>fddzY#=dNAG_qm4>-kdNREt?-?H4R^SZdTe7$EGPOjzvY2z%>hf zi~KPu+8{GGoJMs5&SWkhZrFo=LBoYGnlA+M1n|wvH~_FFd13N9s)%50sxjgS3>4h0iLh2|kH-=MZ&>nNR9H&Gy1x2=(Sy>BR@L)|qTs_wk zLU0C8oC5vWd!c6!<|Nplbs5L~r3Pk_7@(Ko0#HJJQeRik6k=tQOtz{~;Sd8)t@%Fn8JAHt6?4IAEQs7K2NxvX$KVfJJz6EXaDnU|T?AsNJ zps0!p^Cx?`MM%qaYg{}PJj7enLf6H}y`g3OYyVc()5MCIMgHXpgF7it8;O$tUY{pN z;EXN&T`jpE*{p!v>RvpL3WDcx$%cu4pGPYQ9}#5%l+nObiJ-z)5GiuY7(BMkA09h$ z_i86`T%)(Z6CNFRwxLAL<>>=hT<4$Q(W9po`IjaBy~2f+7)5WBy71pinxvK+J$<$b zES%!X?OZb&O?>3|{1!_K=R&5m!OLR0J(*>GP|g7e$U*32FAB;ql?Iz1?1+0!*jc9q zD)@srBwmsug{XoMu?x4k(m(vdXmTdmD7lr-&zNwaU)&=@herCi$gRDteJt^PaiN`q zP1*A1{3vuc;ECFXmz=1LYj+GBKAEq@RGk6uZ?9?%R9H0UjE-HWV}HfTPwGuyHGj4i z61Rvst44quy7gfD92CD9#Y%3Oia^7fbvOhiOr?vm^>)bi5+_JlUO#1sM_F4&)n@p_ zA#UwQUWPf;5gR`BwRV-ib9u}TA6qe18#S~iQE6utu|XeR#RWo)c$ z5M@C91@n^KhbDDLPK*~!eg@ei4E*8{!FPazBpgJs)68RSlkxXKElO(-Ls(Fs?W76R z2(7p@JZPT1&$1MYWUfoPw<90fL{3GBzm<;?OBPePu2crzkiq}TVO|iWu$ISQZUmYf zG{EE82BPP3Jw~uxx>Fl7#=_3dTrdWeH7K1wvRxQ?H+#;V_9zR-Xu!c7&e{ub@BX^gfO?fU^;M~y=HwZJHuRJWnT^e+E*sPF z<0{GY1h)S^aKZqk@B?5t0j#c|h-TW3$8tcATs#06ZBjWv!r`TqpIe_wWPrC|*mm>) zOg!c`iHADeAnE)}LhS zruD^jVeuwe90~AV0a`Hq%48agW)@2k^$q!UI0~YGOrx-5t0P_LlPzvho~=CIy{9g1 zR`~Of+Xm5JyCPP5 zHAVcP(2eBdMkz;o(mS6Z*gx10p)kcrRFb=h_ zue_@~%jRtE=;Y`sy>Dw{SNHk_6Z%|fhl!o@>&st(fLHL`9o*89%Pc(Ow-@NTr)^4Tdj%6mI%FV zQ;?IkS*a>@R0i}ps0Lt-u8p&Qyut$io-mQZua_)dz>7jRLiu0uXK9U}@FaR<1Q0+ZGFQ69_)kURENU6X`=H5gqvh&t#GhL|B+q7xV=T zdp7Qf0Bn*N5xv)vpIdo0OqqVK08v#vHQ6%+ZstP8-1oTl96RJ+8HYdhk4Qd*Dv}k6 zYGtN#Q0iQsI2j#C88a!&j}lp#>m|8Xj;f?H30r1P5c&9E-E2Z9%FGLNa62mnq#2U$ zWKZX?qdCl|WQ@tAc}c>DXS!R|{3Vc%L;;InzL&_gh~2_Ax6ZsfE%f>lH?Kr_MmiO_ z%-yL!QsZSm`AC!074A`z&A4E#KvD5!C@duzf9DgHd4&2tsy@x(uKT@PY{emF5lGB3g1{PP?#pWFk)QogOac+KI{HK#HpwQ%kv4;8p zO)ibU4k+++5x}SNXLF6couyZCP-%)Ah;g!a#l_B=&(Dk1zb~LR zJ8Pq{!q-LH@3-6oZXrT{q`W~ZDt9Rae$m+@K0A4p|oY({SZVa8R+(vSj>lGG!Nw?+@vjI{?lmiU{)n}mT}1T$@SQadj9@z|K(NiovR0{{ z>0+V2!5{89?pOXt=kj~svp)R&Jv_8v+Pet7O-Ij|>9qRrbGG8*m$_ zU)X%jBQ+5vZMx!J1hgUf9++~aEnzFx8p;y?c5nSm{7+2~YC}ms{9|5I)PLmhb2DT$ zF&33BF}^+3yBM)%9Y%?$wc~n*M?8KP+u$37{^ab}neYHw$Y8637QSj(>$V$5Y~N1p z-%hPH*0E!ZKT?iBOW4f_0@3mU?+`7lN0h;0L@m`~G#)%i(T5IAVWmx(GI)}_R{Z>D zY8Jef2R|@@3>2jZ>x2-Ls9Cp}0B86}f;AUu+40-(^eWu5<`HT{6+g1}4PB@8gCpPp6opOi zW37hw!5PY!H_71BS*zbScC0~MDt8U*?jWpp8C<~{N8qR693QYf*=2w~*_dgn%)U57 z(5j{@f0zn1VL?xP6hBzl`dyJXFroXB*6#|v_l|CR_^`cZbUV7%Hk#UmkK?8OqY!)M zPKYxn`d48*Yv+>{d-pEK?#tmT^GtG{gx77sgJbL_UDW zM`JoioXYkze*ON|+Pp2N=zT{f&Bx~K7=dqp1|Gcw*(KL??HD}m*<>ZaOGG&^ zKugpWi-RAbKkncd{P%V=VRG)FY>$2T>L+JUY^FcN-;FmOrCf{;V8~xSFRAlKj~e?v z-nn(*#lP=R$MB=6rQ@%)J%o$ar|$i};lrbW(KE`*#C*>*q&(G7T7GS9U}Wnqe|{kJ z^MhUf6>!Q2oS;%;LMBAU%E!`eSjwtl9T?1G9q1>oGh6oj0jm#QN8}2oxXr|fOtU~U z6iAkq)dvG#V*Jmx_z|dgMEo|&8Q+21iENN3ts45^QuUN6)o;>T=5v7m8GB)FW<~@H zM1XYyyFS3K2hkq1mmTxZdEn+`)*13lP}b%L;hFFrcJj3;f+_ym=Rr zBA4Be=yE6TWpxk2;+DZ~R?lD?Ya#gzu%4`?@EKO{85H>pkU4nfQmjMQ&cb@UIfv0L z9QitGMw3A1>OnV#7~i2bQJak)P<}uk*k;X2f%jXOe!EcsR){7 zTu0R!O}*?j@cMD^dXQI7NX~-NafAz_#tr^S#|(Wz-y1qbmv3a*_pcrN5y$~NRrvf{ z*dKftd~1m4WeS*zV7ieYduQrLf=#86RU6LK5?`3EUFVTs@nrA*E|i@b_Qz`$>y}@> zVO)BlchU6Th*j0DLB2b?FJ^}DoW^)cV>WuN+=I7o8ix?vX#^=d%4{t>?=ssQWK{^{ zf$g54*PCPPx4I?3a5>S6eJ!zC1m4{_@H- zeiqvupQ5*sRmT2_W6SW(^I59B*(REREu!Z#FhayZXhL#)%*XPy5I30`kzm2_-1Upr zpQ*@xym$KK^?2UWl&GJ&=ZvqKvTg?4o?;V&mSSl`*=l@fEaec$(7G7l+&~{Ub6{d_ z8Pnrt(jH2C2MD^L*v64j^af+`$^NX1Ar_}re2bs|gjQa{6DO^+qId|M+rBe4U{B^> z=p1tV@*+|!Y)6nHAvAzK7^;tL3wx)`5OE`*YD5e)C_=KT6?7rhXOSJ*I08B0p9aQ` zMbY_%tns3XCihuGk7%b^a8EQy7SZ2$D?JxrbRsuvsz?C^v;jz26tk_%LlSQ0Ju3I{?wK8y%W&`FIX}*uHgPNt^Vk%T8a1h)Wzl4`0kPse zTFs{2}t}-8RQ9mT~So%idkUN;Zy$?+LCuO@1@L&K?e50d%0#1EQ9|jg`%v3)PaKiW%R!LxayNn z(5Cxaj6b8Bcks_}5%q_#RP`s&To;X|dcaz|4`zLi58GsuoWDScbU;Ch2iBEz8GhL_ zYtq2LvW;grkGki#jzfIfWh&6_uUI^t^|)#Z%sFI?H9jM}LU?l@!<)7w6Mz(C4t7{B z2}iyvmy6e(uFQG7yQh=EJvTC?zwjM@ zHVAyM7temtq2gXTbt#?B^q`%%q`tejM0OE=W%Iz@Qn=!~(4j-Z&8m%$$NaUDJtO=eN8-6q;XM1to@Mjw!?T><8dYa75%--$L$i;&NiVwOB$0?> z51mK4(PiWUROxEcnMSc^K`U&HkPLWI$&{|RSN?t77CLhyu_KN+j%`N9isf>au!YUl z4s(U!`(NozF-*1=n#g~{)P5xR3>4Ol>nG>3y$~2zDB45Ma=+7?!0&V+E(U_4Jw4c2 z{?M78BxtgueefW$qR-%Y?iBo(RVixKLO*}Pb0)}>aeGTg?RKiYGb>FsANM@jHPMI% zngxf4Nh?oIolPInkMb$c{-^qSO^`Se8 z_^4Dmw{5m(D^Z|_sh!VAua*L#lL;gcU`>OswNH`HHBKID^Lu z4Mg|ve=v!uoG^=CrgKPd61MPcsdDo0*yi+oq3gIlm-o=Cc77_-LzqW~MTF1`Lwzml z@~hqs>!!vLU{x^h&VXyBfBB#+NTBwv6%~u8Z9(_dFmjs&Zy;{+rz2N8f8Vp`1!37{ zdO4Rlp?mA=%7y5@0rl`g3CCY+KIYdxXzTh+ajQICNRbZ+0~PVl=$mJBn&$fn`2H6k z6rQM*AkPtFHBz?Pcl=09mdjsw11(0Qn{r7D?HR}_-UkJXZhM(=( z=ee*t;-W`f;D6p`Ya{=F=ZIiOt7y-zFjof&)8x5wGa+C&UnisO6wIymK^dM?>T>{5 zIZWcs>b+3N_&sC+U}rukzJuWvGW~%*|A{`Qx6!dP0)K{yH{~*6PCZ;pIb1lac{Ul( za{lBG;y*<)JtuFYzmbW8K%B(e^9+FUsq0^_$aRJrfzuxAA8Dwj zXB};5Z9o7&ld~;jTIt8ZOKHPndQ$LxQoVu(Ozz)&SDOlP>FHt1DabId4^<7R^RuTd z*m!AlEMFt<70O~X?CLVLH>q-mWOi}J!qqEQEVy<}D*2(E$*?8o&gs+hbRSzc{`8{z zPOBF$ta?c|v?|YaziD^qTXRw_3?oD66!{kU@!2El@t1o2iV;}9F}FW8OJ@}}*kLYg zxY!{#>1iSC)!=0lYH;jf44u8ZP5025(<^t94^&qX->T^Noc$^CVe*0K#XRz{rsaI^ zGvPyi3m;Miy5qXgj5(34wi%H$?n83^VGc4f3QmNTr+j;M9hF|2Js=hXx<@bX^CP`* zdNsL!%k=oC9<2)t2GtP5t|?^2Z$rA45dYmikrBN;EyH^d<<*M9T>49`gQ`P(qK#AJ zkZeZx(23GQz{V^=>0J^xidc*RdLR5lKN6kyVwd{8^A^lnBDQ8@Fxel0F}VJN*w-V92P=pNK=0BpM`iHjZ4*+ZAph4Op42+FJVPf%q^ zAK;pQIwo$ZhfiE@C;ra<@iAbzevum(Mg5mRZp_1}wJUT3xk@7;qMZ@c&4)O>O8tek zxWuU?*)I>m8o-kZ6RZJ#B;!5yJQ14$J(i?9X^J;_)PZ~uTgrC@kNUIfbteI*Q}GPv zxzE1j)VjUGHhG{V$(h2{zr^0p{;mh(GkR{>@L0SLo6m;j@gb?yzND!~7}{=QrWw_VQsPTibCR4d2gNRo-J^iAR~ zeqn8o&@B;>Nk?&O1Lm66@Ip$L8lXpQfMS-DV2&i)dDzUFTWC=Dt(D$)@X0BCjp*;h zYtj58^)Iei~!^R|mG{A!6xfNhoC+=eMANO3MW{1_!sAG?6 zmq+bRmetXlYi2yzu*5sYCoR8nWL=NeUV+{VY~PTlWBa$3gROiPkD`D3*!a~W`@nFM z+VEI1YFsbF4YytS@MbOqmtG@~WacRu(c5$99xTqT8uH!XF~p1JK0TG!E~;qw!f|Bn z^s#YdvV4!epfsGE0@!R^tXHxX_d&`rf7*owZkPl??HKC^Xa;xH#Z$7C3yg`!?rF~7 zpP+Q^2IBOBoTTpG8#CB z2UaZu@?szTL~mDBkZTapO|<8ae8k`eI9@5}Sxr zYh;GSAv~-0BOy6NJW3AHGbBQnJtaB*R!3kP;=2u3=o-O}e;4$^!Yfd+8pEH3qTotG zJ)R=bhv~UI>zJ6%E>_#gEe!DK@5MW;u3IGgl?tQIYSvqbakx$gTGbq>Lw2zVaY!Z` zart7LHkR8<4YEWQ(hB(vnavC<4lCKk*T7&!zaGBGhQ{A%4*eU0n&ErQe$wkD@<}W$S`Wpj)MMtVH7p)CA}!p2n2s~HT`bo^sAOLE*hVc^DU#> zfAQ^%MTd&Bz_&w2YbX|sOSh7(1J%6C$+eMl`5ubi;xg`CyRo2$W}Viex1Go39(*&V zdpQbYjofAUX_KZh(;a)C2KlrNFhasAt#CGm6#?^v9QQTZfjU+$%a0JKLVIr{Wj>}O zt3Iq9ONP&}okuq}RaQ^@eJv8`&pt(Kb)oe2f4)C zpKpS7kB6Lc0}pYUQTv-r@3K^nsTrPa z)VFp-YDR16cXT<4ym4LQZ%z=4}>rS1+miDEKN&fK@B#SO27W6N2 z5#b(Oxk@83zb$CcAJ1~XQ?2GDf4PAkoefhn?A|r_o#v!KoGWh@xZTnMw*3Zt|0^9U zZm3^M9@A!G3QUS8-wTS{2jzOUHlbk$*2eB=`6}OOK!{YZuBp7^-e%F}L0B&BMMl$c zupmwfhvj5EC$igIkaLXJQbIBy5X%mf=?ExBQD;dkp^o`gF1|!$*(#B_o^FtX?Dghf z!spSh)SiTpk>mY(CKi$8q=7AhV-EaS^tLu@Xq0D%xFht>5kzZP+i!)xg0A-ONna@9 z75ZK=gNNqj2NI7q?q0M@U<-Lm+r7b_@=GHp;HjeFi6Rd6B5+MSacsu|;h^wf1W~j? zVff+*wnDj`>eF2(4ic@ui1%CASNF+o((k8BD#>j-?M2UgfAhep5kz=TMv(e}#~80h zLuWJpgZrBdHkcdiFor~s^AuUm)11_TXhKO4X}CUF;<2SNA$|2x*X0XAz4i1cI3 zF#2{}H7$%Iy(h~*_;w(==+#k4o((y%O9PjpSPd78k?_>H=%U2E0~b~=k~0^tCLyaU zg{^QIJ{=QkWn6V2KNi4@>{$Y$idH{MbbwqPm+)YvTeui)x08O?M6R>@mTqgJh#y?H zdGKHzYS@g)tbXNgV!zDg&4b?5x_rR_Yg z4zY_xuMze3+mG;hQGvqlTwuJ3d=R)1S;U6+VSh`>~^dJIK3jDdaUQ7feB;39OR=g-n< z^dTNb6Q3-Cj3p9AH|l&b^E{~!=yxD|lQKm|%x#BZOm%R!L(L6Z>|R5V0+=L73zb-k zvWs`=npgA_*+>dr5gqw?b?NmCuU$K3wA~N*U~3dOZI0%6WE|)QG@`4I4wwbQYlMK{cy2H#lytg(o$Owa=9WSuz`%o^7+HD_v4%hFT}b?K~(jPW6HACH?U9-mI;!pf~>dM-qxQ6c{^n?+01kuVEt?2bin%E7dXEGoJQQ#cEy9g1$V5)9Yb))V%Dy`RGzDLhRe>m2yB}pRLpzh} z?4_V3xX=>218Wc35R2nwIn55Q-QSWPu_q-3Lqt{m^}eZZD!ZK$L+bA#0{D@QcM9V$ zVWp1!ir@@IzxpQ+w{M;!9AyLzVs0tzXSgRsfZxmNCe*wHMq*#bU!DH)m=m7z(*q&v z+yuLgZh|^@I;yT3Pmhtt)D4!{+8fSeE~e|$ypHFQ{KR|(@;nl{^8;1v6e{S&o$tt7 zFkgw>S@4x_2&;sp%!Ot1Ye8Zt4DdXBUPOOc5ExGz$P*^5t)_RjKNCR4vKdM$B1LU^ zfzX>h(;(v+2Ry@NHi4)QXV`UcsryMxcdq;3Dmm0Yaz>3y-My(xBwH*KwC{{q`Z?qQ z+&S&D?)d5&DGzSb!tn(kz%tWem}m6@I@%uWr&0n_M=V#SZ~JBH(RHM!VQk=w&AN{3 zXOmpR5;4pxUe`WH?z{e*H8J#Ei0wqn z50w=}G6;&qa!x>YVg|Ngn<@~ap&Hi7;Ar#M5MYvp&8eg+8zVvONI z=wiv3>05f_Kc2B&&*i%*+ke=+s+8zYbP>LtP$)e@l9h(A0o7>#^1p#G;#H zt?GQE20hG`XUBYbM|noEBIF@qnY8r#E-xu8n%G!F@`z4%{b^Z|84YbYbW&XTd~QnA-fCrhX%; z25nHf*lyeTfee_x;^3UYzQ7eG6XP^FSy$9dGQ+_QN-{XyoLM+-oK>p14eLP4BhaccLk3CXyYykw&H6tQUQ^?|- zH=ep=xaG3)ZXmL94YhA+hpC!8ku;>R?UI7DEAs-tZ|xcrKRt&tMIuE99eE zDyg@Cyz$uXVe!&<#*!+_87Zl{_NCITl`HG4uLQ>mW%8ZQ0Ye=pB02+G7$*&dvVV`I z#tDXjaC3vjBnV|5-+5AtE*Z|cDRKRSTwS&vb0A%QYRg9ac;05ZQ_H|v!t+t}>2x39 z41t~J4mj2FrqQ;L+~wD#*CBdmV)LcMXX#PFL0m%HQd=^=jNU@B_Y}E;XE|JW7GV#? ze?gS@()eNRbqzG;00g1x@7ezgs-uS}0XN;KkE`^!sw7R*}0SmU3zfeFxUy|Cv_ zNq_Q^O6!G1JC@hpsI}QQ{;=1jm2ZX15eW?QMPcKH2m7+ja8Lhn*aMc^oj?D}eqz4= z+D|^oSNn-^|9d;xP;4(#A!isL8Ge>CTm)!%hZCW>c!1t`x_0l%MI}Sl?p<|l$&u?z z4++_{p3Xaj##j;Uf)DQalRiE37g5Kv8tx-+cN=5=OLj3j1MtpY$*$|Od*?49Znf6i zrxOeL{o3P@UBgQuyI#=ANpvL39oHX0IufGm9qW~wf^lE*aluN^gj}?Q2gB^uR(=*P z$Ra-C0!2BC{=B5;*6vKE3|KR~%p7(V6DA%=8Xl??6P8S(1NsU2T;8hrBN{%OG4_wK zg=Vi9gHNyCG;is(rA{ZNghadP#fdt@G#TW@JU&LWjFCgmh3;T`kMIY-CxQ9z2r9uq zMk(m$Q|DZ?`i))LF+Qy-a=@{-bn-km-O%{1#UH98`yc*;46Sq#&i8inUFT%b#DDRm zV;SrG9Q-%6aWrfax^Ud_R?D#Upwm+D-$Ue(fo`sZm`TRz6=Dfo$V8MjF`5a!bLgG( z(s*ER``&R&;z*)BJyLA-n6Vznm%JR!GRmWAZYMTocgS!SAA`^GWlWW3TyAeL(apqo zc9<$b*FM{2jme<}vhfs1jpc(jEvwxqa-ltH%AaAeEZ3YLSTk7oPWD8gosEwwKgkN? zf3Z0vD|z?gWy=Q|g9$Nu5@h958&i&K1Ub09?FO@!@7=(;25Oi8zYPx2rH{1InodFN~73|&Er_*#AF z7Rdt7!#0EM4{usYB#ZiEn~Bl-<<(?APdiT$yUQ8EcJ}>-KOkFY;QL?M8{&*6a=PH{ zAY0iX)cy(rr=Q$@6#_SDkz8gA)^xk(Y_c&=wDi!fzscVO)xAS#!ujuuL`|O%Ls%*X;dO){A%;8e9p{Q%H9(th#rK?CVG0|)=Ox?j|do-K%5_$YXCA*3T+qA+YjlJ+S+$-(5S@a=hha-rD4G(e^iXvn32g7)I)ks zobZl}|MX7IN;pK? zvo5X1HwF+VCf@+l44ZJU|%?VF$&{ zfYX+)ZK;el8<0P1rhhfP7%cR=8b)th+CbLUoDstB)mQ%Y;LCnAXx1zsQO(y(6b*78 zQbX6#E6clK(V-+}4y($R=O8-~Hl60;X+c=dTsJCQnOkGyX6-#kOi~KYi*O zQN%nSr%!)L=e?(Iq(z&y(BD^PWs?$OHa|C?;Z)5>Z8^NmM#Gs3qL~lD0UjF&6G~?G z%J z!L*t-?JW^d&i>EzDSwF~eQ~>VOOS(qN&+(DEt0D|r7N2@(LYuI=wf0rKR53)%=v)X zgvk!VdvIYnsU>&(a>!j_4r#&|vxh1T>A zF|-*LpLIBEJaTjLy5ABlP6;{0sL8;-*Ps2mO>jFAXTDLYTCd&8e=D%hVrS~O0o&GaMM)U#+(1tdE!qXK$Y-DPd`r|9&_IU4+$8L>u@Gjh_+DwC!MpAB$o>Q>c~O8j`)$`sU8&@h`VU`O=Lm{ z|0#*?74qwk_RNwgY4xjbEv*KSOyt)b=I9UY{9x;V+9l6_Z zdU7DWNjhvNkbm_TWJDmuHu80$DR%fKo(aG+U+Hs2Kv;d5@I0(;U#K`w&I?h*Kdqnn z$M51GXn*jBDRLwEuua*W%kUml#+uVsP+023`RDins1ODlYnu^|Ru4>B_q^m_HhWad ze)Gw9;}>b)9{io1@9vXijX|M~XIzx6-vD{)q}-BbQ+)8yT8;?@MN4NOOx_L~>ljI&; z=I1_dz_Ns7r>WI+4{`W=X-5mI?bg0Q81{CjG~ zVtW8N@K9P zUAvzQBTZWc?3OqEMv5NM)!5S?k#{Y|+Ws9k0Ilipn5RZ&!6`X?uckB)vfG__TYX2Y zXUj`xFJvMs3+u zuFj+%ji-{PeQe?;4OmFL*En%4XEb*DACWPvYM`{-J65QX<8*8x$}#pZ@MjIi{$h7X zHS!O1`!o`mOiI449heClh1HC!?R;)`aGkHcmpahXvGfe&0r9iLQAM2yRzZ&V!GBZ_ zkcQ2ekB#xQ-68FzUg*o5`=Vp2W`~dXNZ#G=$hA=yZderjH58i{T>x^tKpd z@EC%Nk{L_V;`+Pv;9m=gUwcx>YY4iFljYSyXMDc_ww0uV?|)@;NIE|9M)G@L{Ze0{ z3k?Vmm+X-LyuL@UWPt#IpG%8_Z|TOYQ4d@l#ezU#!73N@ctH56@jc3=P!!JWVZ^_r zxZIc7KIRF*v^FTg+&lYaUNf^4qHh>5w3!jnZ*J~Kr_Y*|l#~=?r2X)rwoy=0Qizcx zRfRb?hSybV8^M34D|+Je zb>mMd_}69fqx>+mm9Yvh$|rv>c<@cn5v!NyGf9;GidYP2h{+JYIC=n@; zq$C}k*K>ut!#<)MeW@R9Ax|0e(|n36=CnE>f9DE&oUcK0=6BqOhoKEG3@?7mJ!>}$ zTa5W4jF}K?XF6DNMS^52ZHV^sizZqmb)=n+t$UI~zO6yZ&7qyPci2BXd#;0(zP(2~ z(tq89=UXQ(TsU#d^WIVV9tHGrKvRci#Jcki`pd+>4|Zx>tWxVFo{x8R+4JAO| zym?*y0y4GsNFA(M!0Zp)x4=B1s2|dx+S-a;d=|^fX5n212jLwnPK2Y0PgsK%_Q~fh zIv?FNQ;cqDs91z6wwy>>n>LZg+VnS}je~z1*Rc9|nGpv0(mtVOl8>3w#tsF8XtJwb zhYt5Tc$$Rk>QUwV0H5|3Lp_or3mgnVx1T)VD=aQcLx` zN!a@!>^9*WAX^d#jq696k{LZ5B!KfL4QiEN*M4~d;~h-ci{$R4P^3TBJ?@_`$VvI1)? zg2&48@*yA0yjS_gae64nWOUVTG+G)|VQSr|eDTP9x0 zlE-FueEz&+mM|uZ{Y*;wMha|^^bIJIXpLxiB7Vg4h;FdDalR93TN zA0rHc%q;KI2R*8~c}1Eh{ycJ5emO+IXMj2O>{bEJ;@3*ZEbC= z+d2C&dqpl6WL?hkHBY49kpYnw?f_13M{VLghNWQ6g6bFYKB3h&Of=F0d9V&k6|lSG zCAhv!?`deCq3l0cE}Fb(QIbI_vI<5DO8bCR`{?@bGx9PRfdhkJrw-@+nkHc=!f+^M zV?4b1BGCaI63^^Zub^@>`%1W*aV`g}h(e&@3A29Vkm%5$fkB>~w>#HU87-JJ9is2z znB#xQN{mse@^yWINl;0biJ7-ZXMV9=;r7?g&-;BU$ zp6CI;K^~ZtiRj6JnO$_PPdLlU#=E}ZZcUi{>Fkqjg7{Cysp$AsK1u0B$8j@4~ ze{UMp6OP1ivd7w`7!b6xd0~(_?JG1f)9uvZeFuDEYo^<|Lv2W)IhiZ4*BSq0NOg>e zS2Z`*bqti+)IHabHP;wU0d>113kXlHD+fbX7(iCosx<}kySY$c-PW0;fEUHWIA~Xg zqB$1W)*Q$SlMIaQ2NhksSTxAq7_SO1T`C;tV7yQjbLC2mO8vhOzNO32R!ZY0qfeRm{< z#0UNN#hP_NYY}+EwwBq$?8;I|Lq=rSQ?_jABYwP;EuCpDX5+(W;wNhyiMYJ?+l`OD zv58Dh^R?AB%`I8lch$S>^`n=6Ae}0$qmtTr*qfRs-|W7+q|MGz-VrSkco={=m~E!9Q@Dy_nwlL(ZnTL$f5&cUfLKcjhg zZ%hm|N=!a2mziju#B3!ddNO^K3G|+E(7-@r`b(nHr{nzsZ)N-qdqdGYc~gSY8}B6< z8lY}ch@)eeG=!VTcwfJ%Uv__@FRWl60CscC&FTlC!MJTAGBWT~iJmGqZGrKhN@Oaw zQBu3Q;WC`yFeR7__-5UqcpL-YQ!lGq8-=vgpnZakWY^rtOwbu**d!+1V42XNU|U|W zQLvH8Kr=zFNHn$?XG5%mUGxRPwJRg+yln+iU2*C^MyurW1yDA<5$l}6c(#AxHYjvS~?=j5nD9rl}uDsI`f1AyiEZvWe!v zvV*}ZG$%}sC$+#uS_v(<0;ZPo0ixbhNKJ{I+4W+0^(D+Y(MU~@EeyOb%lOx(w$JmU z2SYlg(9|v1F;-w_Fkc((POy7dc5?0`6GZQ`elc23<(v0n8 z7tCpeIYHJQjYc#&Gk|Bg@=#lDI7fn8dnGHk(E2x-R>F1pOuJNDbARFYOe?vm(0O4& zs7D(QXUS_&LFR^7QzN{tyS=nyCX;b#4R54KaT{_guprE`jMa%)3eUys{ZJGywq6fvO} z4&qIr56bj&a;2p49>I0rT_-v>W_DfLcMtHotl^FLgu|_YS_=@HyRcT@oLM~CJ)*p< zD+~<|VTL|&?EdN$ec?WgWFxfW6N{{iX&d@iW|NcCGQg%vmo`tG0@o4iQymM4PpwZx zfW5uNjpP>7FGRF-G5H!c2S!1-ix%|E-6YH?sM~`yf@mh9c@97{h5ai2nUl9P+Q?|o z;@vOm57zYUn#JIpJEw5mrrIZqtE;UnA|+`UaV0~EeIaSjApM@$Eh?OOjefedpW(Cy zuzm!rHtbZ7dXEu{VqF@c`W;bc8YiH6in@8oN0;)y&*BO@12X<+&j5Lx%^9tR1U(-s z=eD$K#U?8u!s@9@;2L5{rV_h`)BY}1Yg*~Ig-}>Akg%{Gt1T6uDZF@3Gz(^Vxw)c~ z293$rnpj92pt_YK8oVW|;}%lql4oV?qoCtZ>@ct%9HuP;eX zko#0u3-c0^`;T7)WQtlz=yl#)+ySZ$*TNAw=3qkAvCByL3zljEu`~v=JWa#dT|Rt5 z=9aMow}_5|ez?g6RP(|a_-0b`0FNZI=8+LsW|ig`75TOZd@*3&_9|NQ&F*DEzRiD} zF|c#@QL%+oci8aFLxA{>0e~2X?+fb5k); z#TN*Z@ZZQ|d;ri`lM`Da33)kme{OD;jdR}6IbCwH=;rL)!mio5wXF=K0qconb#*m) z+{r6qYb70DT`gISZ)R#oD+b`+b`4!_2SRTt><}-4C&Bs|vnv7E4cFMLV4T>~xYd?s zLQz~?etbL`mX{${X5^n##mq zS5My3J1dQDO3&%pGbepkh$|^b?v_sSGD_mST-gtgb5Rb z_iPO{z~@J-0oeh~J_3szmylj&;_96Ca!7hEjyyfh&LH_A&e$OA3gcTQC)8(=`->ZJ zx1E;K8Z~>oY|mCr&0GiK{sP|O6=cCl{Qv%tITyidKW$i4mXLiTu>JTW@#fySD+@Xc zB)uTeGhXSFzcQylAZhFkeseg_#|#LFH}?^j3W;g``q2mSM}<*9Vp5`DG{3Y%Pdetm z-z5eZDTI0WJh_pMv3~E*@c$ol%oU~;j@SLal5v#7e^W6N1wK*#qT%U~ai1XL_<4PT zDrFdXrsn99%#Z7P3e69Fs-u(Z>JC+{T}8x|tHo_l57o#$I*?JsW!y#j;kWxl{{rw2 z9R%5ui1j^+h_Hkw130v4Rm5cHQ6)G^e)!j0@fM=sIV*O@*kkaa?nI?j$@rEsMzi_kNlgsG7 zeiqS*Z9FZ^nhvTUX1nQkyJz$z&PBQriK!7rN>jfnU0U_t4Mq5_6+NFCosp4uInUC& zPv-n$@03{LloZsoY2KXNpf+YfR?aQjx<~PKjfTCUC#_QZBCKZovuTJCAwAEnqd zyda(Ev=7(yvao+|6c|)s`#!Q$8qrM;)%Q2G_*1lj%u5b2ATl~^r3$x%3CY3mfzmj9 zp_q%EcZ9vJiNRqGm^KI)F@FO_fY|8cFe6?WYz|L@xuZDo#cet%!_BOjw)Pl3k3LQ& zX$nCvP2X;qm)^JtbJv1*1qD6Jg?JB#?yjZ@HezY7f`a$?VgW2lIWWN01C_OYaGFe; zIR^=d0Qn^X_2Y;t#?R4r^HO1SHN$^9&~_Bo7u+b1c&@+zR-J~gaJWOQemFX;!})5t zX^nCvBL0@2Nk68!D#MQKx9pfsKX%B?C3hoJVaiH&*PTN=nR2L zrq;cUyQKEa8b6idBlH4IE$K<0wf$T7>f#k*P!?wxM$hP~^b0eHZd#zepNYk37F_dM zqU)jG3HzHN=7s1B^<66W^k~&NB*{{Hh}8mn(FpZWA#h+De6o`VlQV?fJyHssp>CAP zgU0wVabcHbe|F8WDCT#-2a+5D>o2AU2utL@NV`^E{=)tC{&KO9n3~$YeQTAUP^ssx zpPSw%%AvJaGkIc09=lfpaa&=tc!c}MLEOV&E(f}ZFjI`-gJqLg7DoqpJT?0XbFJ+P zm$xl!GAJ_&H?jK|nc3PEEo;-wYH&_ePPCJ^32E(_@~*h8suhYqClv*aQhB#{TaxM? zPcJ>3SQuEzgn2_b?2#JG3tnXTZVk>^90b8)K945x&3?mN0xUwP(L3k%Xj;pG34W6VO`j+pBNM!Ufe!#x1~`m z5&L7y8yd7a(09@p#R5}pGVp)ChwY*mrpPtbHvY(e&up1bXtk+r{E5>Hd(UEU=u2Pu-LfJkQU!N@a>X)GF!% zdYBc&#lwII#zupU$d$TF!hwI@D}p^dK3#k#9F-H)Yi4tv?jsbi*@66Gaxz=bPgG9xbA7eWV4+PE1iX?~F?_c=KCJmr!UB9Q;nfWr=t3 zXV>ygC={L~3~N(DAC#03#}Y*rnig!JBT2Q8fAo^vSBR7M$g{}GxI@C%=t zd|t~M{$9jdxGjkDTe<9XLAVa&I>Zl?E<$7 zM`M+4eh@NWK!;{QBM{W3Aw>A-+SItm-XQaVX->0UU?w}a{3P05_OUF6PpqsDu*o4<|eA#1#v*;oab7$p$ zZY^4oTrm`e8pw0?gcAL)cQ!|UA(+ck57wpY068XHB?VEGD&OJsK|pocYs+mrb(#KY3f5^56G5?mL)YoVBwB^N{8Liu%N z?6M6H7!TI02b-{jls?%%cEyUSgHPyuI_JrOsujz}?Rz4ua_}lI_i~WuI;hIayc`sf z+TAakW^_mSM7sH9w$Yc((@RLZ?ir?+yURtxquN`_SFO^bh7XTQvl9F*+efKsKrx5o z3YA70+UkI{GNFofn&B2d9#7;)b%ihM6$ zJ~aRLE4NjC&SwX$_?@k+{$M*4NDzNB9Yd?-*J*?8Rkp&b=-F_6j)NHBjNI7K3^B30 zW)0?$HSm|2`)D2t3BzuAMdJZhyu#Y^GfmHGouOd_9R$BYG-A1PrTl%RGhLh7-MZ;! z*MrWnhgXxQs}IGx9CB^f#m}m^rD~QCK8t)qhtHDF&Qg&X3p}%kTT<2Fr&VQTRZj<1 zwV?MpxGkmwAXB?F?9h%=^h2#9q%t%L&ukFP3-bZ>;M#GLoUZirRLbd+v!d2{QQdi= zi6Tc|_tQL;O3_DG-*#o)Q6`(4Azu9>;u-ebYf=X>m>N_EhR|e>D?uO=$r;w%) zMo!x>*e=zOAo1y^lk<`SUip)Sd+QetETX^pB}4>u>esPrOq6$UuVvrtCqMi^ zpLC|*t-dlrawX69()B|U*3d2)=YEPYk7*aI%&AMsrB~}ej^F$N^ zMXKEFzy^nd{9zxsv75SBxEjqRIuDuPzTItfWo$ELazWt$_{~%8URXM!K9q$FaYCq2kAu)FEn3`x9yTjYzS3tAG z2z-#R5I@)i+*TKLx6==_{OPr|`|^{=Z5@$a(QZJR%D3{{?Zlv&dvY(2s{ygUilGZx zQ<%r3$0z@q++nR^2YCkdjcnI$h?`zkVy7NUAZ&BliW=bc;1I#8>u=ocYR5ZH<2CUuK!kBz! zCL?wTmG3KB3|shqk5D$^db`esy{|2v=>ImrLpX5x^$MhYRF&UU$R$RLH(8))0xaq6`Vy+Gt+Q$XA!c+QsDvvW@qoxZ{!aXN=qjSdfv1( z*~|V(XD`V|FQYC?x=5Uf^A+?|NXGe=Ee2)s3chx~hPT2V_}8#SSRCJ(Uohns>e0y8 zu!i;w?n3WO76nq?DcMx)1-7jh6j8m*7{fZ`TeCtRepXNl71yi#GZEHl7KmWuaCTtf zYgfi1#41<{#f=3w;(lQx4zckY=|6y&#&pc^=ukwmj7E_|skBCT9o5H_cC(Az=2u?o z9U8TYYFltRd?V#5t}#5bYiwES2uIQW#e2ZC=7N)8DR+HwW~>`{{xR9;VHT9y-?ZJj z;;dM=!%YnWQ~Q~wkqo+OM8QasE|-b7r+8N|E*#Nugj}}RwqgN5;{2W|p$!kSml$q% z%2FeF)N&7A`M(69bbWA_Yth};cZl<#&E74alV$iyE%bn~sZ(v~+3M31#d^8+d36Ho zhTaj_OK|bl@Yj9t7cj{sHN0RB6dKEgqopi_8zXP={$TppVUX!hHck$$MR8$X;gi{_ z(A1)qVq(=9>Kqg#Y-(d;oh(GjK17kyX>rFG=Ffy^_ys1+|K=BV#F_=6{|C$95>igM z5Opku&F&=qZw~t5{^gdrpINB&@^Qo3M^D}3ombR$O^@C_F}?Hulb?P({h~JPXvu#u zRL9vq&Ar^CJRD70N2HyLgVWw93!ecuI?SSzSb6~e_|+v`;vv)&0qWKwd(nGBHVZJWo4##o(Jc7X>?#r~PhZi= z*p(QP5goeCRIeL4i(=iz%-c|+#Wa@PsJGO?eO^xiUD@?H*-i+pyRo3H->=PtEkP-> zibI-i?0AOUx`XCR4{196r#D@`^z=mXar4McIjwrrQ~8tB^jRVf!W_sY|6hB{qjH}W z1`|z83hpUe{KL|ufVh;F#895RFLO%QO|8o1QwQppWzeJCpPU>Cs0@dEu3jHMvG zhZNHDOVnE;%oFP5zc&tXN^jykqFXH$EZI(Q-6ic7_j8@CzU}9WWQMxpea^x{O>r-w zxwKopap*@Tn!6GAYm3t2pBb(_N*>>#Kb<{D;=jFP7GKq4)hBw4o}N8u1MzB;VopC` z-J(`Any*kvOF^Nwd>(EYI>YV00XgL&sBI%vG*>}Ib0U{lmC>3xcn)YSexVgh-AO6duEco4}JcU9CWh`>%i=h?peuAtbTn- zE1i=b7`N+4S63Dd-7VLPu}dSSGhtZSbx1d|N_L+??=A$Ge9nBS4!A`8oX683JJ#`>e;7Hk%Uk?L~FZ%n>P`a6xj1W4$+;oS*NxmV`-`+7z z;OPChw#677v7)}l_|2&Hi9@4Aij9E*-%j|j{mQkq{zbTG4vb--WFMjJAvr1rN z2eJH=KasQ)Ej#zzekvp5)b?JT(GOHlxhdMcGQPh=0a+Gx0*1V=st-7V! zcNcs}8ofNea#xy@>eZft6fq*NyWFk)C~}$jUYnLrHjUG5-lbJa=lBP7wS1#$=k!SW zveWA|V;XTIP62LM?1-6OW)_VRVnm5PTWYLx5sT478o)*q#u!chl{kfm(RMXh$~jL(c~qcw*`(JrzM!CNcnNX$2&ukH z^;eGkIH8w8sl2IuF{r~iR5;^lMBkozPsR`Zc7dM0UDhIcE_!CGZbCuJai~;Y`Ti(< zD)g)D@Xx>#Q=ecV+-CgS=*XTD!KB{0V@#BsIuWjbV zxA>{7D@ha_n;t8AZ9AiR%ALOKEsjR+C!2P^>yfm6kq05W{q%=t4L|by!0Y0c>lV1s zkGs6NuaYl~#JuV*=*ahIApvN{Q4ca@{K1oCEbIgfnX%wcm~ipf3;O481AeA;MEbRv z*_M1Qsujr;X}NwC>(zs`M89 z(Am&7KZJDnCaQzKrFX|bwQ4;>ry4odBl@(u=do~{qu^~9ctH(E-%h2 zpQo1d2+@qpl5b~?is@}1+p}k^eeal2f?RcL>xikNM^7EG^+pxszWj_>bVJ!ZJzJhU zvh4i%vXRNXYDGgtOcPyJ;Tso44?648)6A zG=9UP2Z*xZBrVgZ;3(DMPL9s5@u6nA`b1whutjj7SkHlThXaat@JY!Ml^GC@TI>72y~NIRr+k{Iej}+uBE7X_^Yb@jaEH*kK@-t<+GDByac@gKk7P@olin8k9>9tk z25~)KGYm!bd+incJu(-Xy_A4Eh$+68d>@0Dd%$kPb5pso4d(WR*tmrcrdZldX(!CJ zj1&tbYuz&UuHEl6@x~J5pB)GINs`i4vi?RI%di`4Ea{ke;3GFtKS{?(d|uxfmr zv0LL>bawHzL^i(H;5Ulnw*%<#D(K7-(X`fBEM&Het2(aF3OQX^Y{69rcN}tB19IJ5 z+2?BHBEo>*r1@Ce(h5(-5yfzm9nNq<9ljQ%OLLtjYdCxwdI4V{%B;q{HtWHMcO3UvrG|}o z$dV_p_}TbI%;R(pfMKE#UCBOwc(9Xw)0|LKFqENou1T_=wA#ydp@qI4eJic^EQ0>C z_p7$n(I<}b7W#{{-lHq_Lq!CIouRkX%*Mdg($m7uP;fEvth;Jz<{~QDetEhZ_(+55 zhH5^*ay9%gpYK-;-=8n^Z>jb*|BL=Xv}WL{QW)4TGeMd z{0}0Z^J_Wnv2D=A8~cgTXiN>XFGL8D##YU0eZ+h1FpY3l3P{}3_P zN$)>rd&jQLETxV~^zyQ-ARXi5LDg)x99xlgBxXGE+Td(z75fLBV445JsI?<5nKn&m zEAOJGAK2)cN|tJQDQf)&+_4U&(Wo%xe8o71g~?$ds^is)Mrq9nj@=N9vrlR>-5oc7 za+%JoR%;UCA-XHW&=N%{p=(F!7zYbI59={@2JWkeP9J%co>kop97-QnIa^9AZ9FY) z*AAIp)r%O8@l+TVI(a*IRiPp4oBbrJmwWwEV!V$YEOAgoOBRkgqRMQRVMZbSdBpd2 zi*>!&;w5DheNoUeP3~ioUPM$QdiKzt;i6-%YvLivHy_!{_O8UZ)70PXg-34mQIZ-6AZF_aLs^9}B;b#r(8g&mCi}hsAI>Z?btF7o6Iq0b z!0t?7;ecRkX~k$q3+b4(k-@LTwK55A%}&!|9_c7w?eaHpbrc zxL-@#rb1u$fRN+&brc3CJ*ybRc6x%s!PK{YathhKE!q#w6Riw%EjoBsQio=99jz4{ zeh-ldHYO{ZlE|=Y;a!wEhDy=esU+rE%%A?^2qz~!GXI@($Y zp7T0Lumu+`3}#k^2_0q0V(y$*P_GZxvG#3aulLD$Su6zuZW3u~X=B1Xq2FBI?1Uz1G7_IHw& zc+dttWjE4!Z_XNGu_-i@o;i_8_h)XlH8NHF9Oqz>lxL@B)Ss*xKomRI7nd`6L%bSx zVmHc7brcC&rx{qV+ZMu?z6HC@ooigC0R&d(38M(r0BW;|8?fAhcfc*tVI-V09Y00t zDIK-eYcesNG>^#AwKk6JK09Fl`NeBV?5|7H5+)|<($(VTodY`V*n3aw< zhef0f2xoUD*@H#I{aIBbcXrSXi!qtTd1qe&=24PswPs?E8T1$0K6Q%yU~Q5VHE!9D z?K}sm+`K%ziFIzu?S&!b9s>s+?cJey>jx`3#JBINpbP)H6w{M-p`(bde5Zeek&Qxl zviyWxVPd6Ej{QG;eFt2W$JRIVlwF#@vcS?|>AfxN(yMeS0#c<2h>9R6h$uD`#fDmFK=e@X47_L#@=*wVLsXDDPU3At-_)-sMc}?+q=+eo0R##H~X!?A#8Hca0m6zlE=JkBPPq5xB?Cns~!z_3CGM)OSlB zqgL+Y_#dS%9g=M*V~74veemx`C_V!`1$`AyLVXEXVj7bYxc~u|Q=HyW2ebi+M^tu& zG8rt8dg0`^V4d9u%f9yxSm`l#@ce`fgjUu@N0tvxtT7rv;dgDo*Jo~g>}NN2>Zd@ z>yH|SL1nE+b6qarCzmb^bPt_1Aa1f`_~?X{OY;0yqSUu$b_QF$U8E)s_KEIZ{GC3Y z?#6x*4kNKPc8rO(byl2Mlje@n`}+?Jl3CeTJcr8*jt#Pif}6T}Vr^I_z=2UEVmU4Dk9M?Cse zrk@%`xsOz)JNI#8<>wVK_C98BKc*%?kIJ z*0lSZSw{6WjTx!va

M=*ot&Wb75q=hon5Sl*8RT2q4x(DintjoXpV+a>UC4JC&^ z-QA1i_!*D`=y4M2Wo`pKNKFMGA(YdBAkV99h#&lq6MW3t0V}%#sSA2H;360v~)JWGj?E-u&9R-`lR`<~s8(Cyb z&aU`ot(?wS)maTenr>dnPe+q|%etO( z$^0{lzX6+q4*_um5h36QH3h-%RVEaQSu7Ek?B3VcJhTZ{diOUq2ytb?wCCn%nVK2- zI^LF}-3E3-eaHBD*6^f#_zeE7IA9zdBnTZH;5IxYQz*$LXy}r|O(iR%oP0R~-(81FKSD$K}H+t}5U0b8Afi9NjUS0w2 zUZt`1!4BTh!Tg;J7jsR&2zQ?=FT>3gp?d1JYj;md?C-DXvu9SiJA*8J*FclIXK)DA=x6=%U z$X9F&mbaS&^&yEtVno7?B%tK}D*N3fP|wdQFaK|s=|W>mw_wq^)Ja*fZn;_}idhSo zdwtoVv4?Q$A{T*`C(_u98aHD#X{cX-t^+y&y2H9gUq9s%*g6T&-yP1|P*s^qavERX zN_;QSbC8gBAli@E7HgPjvEj+wkaD5e!ZTR?n#ZL1I~N~1>NFt#<@iut`AEbw{lJPX z!~N_7eB}ab*7xw7wcp`OGfvOOQ4a$hXr5znmp*$9-bv6_5>yb-ir6tQt~9Cu8Gu3@ zA0u#Dg(k!~B|Zt;I-_PHNG9IF933%18!b7zsh5a{8u45~rOJ?53)2=N10gc2*3rC#UbhfDZHdNO` zKMy$9Op2Ak8=z1G_C&!Y(JFHp>9sskZ$Ahl6RpIEwHBxa*7&Ll^_Rv&wOP~S`x<9qzLs(o|zadU?aqPR>S`L17A&t zGX}R48NgLPed3q^H-Yb~O7v2KATTg0%FwjBk(j_DurznK@WOCCQD7gTu_)k9NPJ2f zjuYw_qFcwSe6xhc2B8mQ<#C!RXp6p{gxw-gPCal8zj4y6b2Kk-m;Z%0<#tU2O{R`H zGSWcDswl+ch9&M~VvJ#3#FtFxU($Q4kap*Lq)H5tlRg-E`k4qBtqFygL(+}ZARoB7 zMcgTw51+p8Jbvuss;^}tjl}Dg2WBX&!u3py2dqvgaUApv4c5{(5#lA6QN^He`z+QS z-@^D6^KhSmSfdfCn;^+RRJ$tGju*502WX6#ldd=H!tO|7#9kch$ zUpC$<$st{kBo*AlpRxwk=`1ekpf3}!+kjot$QL;Kec z9`=A8FO}C6v{~3To?2XpOpW68pTgZd^Hdp$6^Kl}27k?!cs1m0ju4qcdXt3VD%O_M zsuq>!B!(di`cNmPCj{yM>qE{&pL;Dfi;tMJ>kNJo(j3W}3~Vb8UNv@7P6A%{4dR2G z+$s*&RxCjQ;mnT`vGNZ7>G!10sFGoZVKLPiwtr{sgnqv$YLCo-Lj~o&nqA{qCAqXDmBVP3%(DNk0L!Dn0H`xGw<5Y$xZA z;kjSzq!tcR4}Yfw{PVm(sl;Rt(r|8dsch>|+^fw9^9~XFE<*<6m`O@p!tXuhC$}5> zI25@&MBHF8Cw=(~?v%|!yOS^DMZb?L-1#L@thKI_uFW3S26h?z9>^Ua8sa&^d%@!X z*|LS)0B|;`OM->j0jH~MA_VooPu83ig1m9NOgtw2F-~CP-exP&o*d9`dQdVFwzVDl z#<@6O74N|nI$|8##%}Gq!N<*Lu!&U!atYZn6TK*(ee4FlJnQ6~pOWw&5bV(yl>fr} z0$0HWH|iO%a900c@dv*UMp#l0!CFi%T9U)&jbt8(|57UBrmp_!|5OOqsxySIp5X(H zgT|pFF*z~H*~N)Nkmb(nCfC3Yb>h#sovI0KWJcA*{qMWgMC$32oyR}1ff>uIq1DnL z)X&_h?{II+6^DB;*cp5^_&EcS7h^lo*ASb&EB9-uohB`|n57O2~d z0oX{;K2|jzKzNXriY_{9Hy2G9{cnUk!cOz%g@1L>NfXw%9;o0O%F_ zTjywdJ!YM_g=R7--Wx0rZ^W0U2Ka_pirVZ>lUR@$Li{xWWd3-?KKyDVn zu>^6&e|H=_i@(Ae=$h&p@>g zm?uy6HRS8Q*3!>Izn-NX&{CC~0pkh(AUU}^Dh4w^5X$ZoW+8Tx!EXp`-_AC(ad!66 zW5$WCl5Mz&`cX3L4*bweUppzHKb9NkAbOMoSeDbU<_<%Jyg9=-1q%dywc*YSloKr0 zROjr-S*q42g#M?nzRI4@f=l!>;B!EClAk#Wyk-uS&$%E?3O|71Rhp$6V+5u%BEFNY z4c|?9>iQZQKqy8_A*J1lN-Sp~LLu21vP)Wt496pd8)o1vgJ)o>W0S3HF16OzGEf&O zOfv*x&O%ck#%G!Om~|e|v^UdY6uO*tm{}qpFErFqUeM#U!_5-8qawyFkEy71GSD_Q zRG4K8#2weo0yxM)u|Ey##S4ucpH+4OUd4p~Rfv6`OaKk{Qp>vH~6en@h~ngwg2%4NzG z|05^&4T+qzPl92BR8m?sh5sWHc*UrXL?oNsGg z$-qQ%-av;-1V*uesU03>?9}LO!A{CAaE;)Oo$o@Y6cZ$f!Ue{*`kIU@Gf~UJ-9n2h zHhQiI>X!xPlupC}LMRSCSMsr6&lS280#s_-eaC=0w-5!;WgF2e24MZ63js{q={{@b zGd^TylUq}3xPPj(p0YI1at)50o5f6wP08*TwE5~ zkfqUAgJTJ;wEo3#Q0}49&kR$29ma6UFsPOtJfre2DE}`-g7!Yya}G}!agkvJ zHX>Jnpuf7{VoJ`8eG^77mpMm~yYkvx3*}|^@v|%$Prxv{^?3%Rb3LVVBG4If)@qQo z>DdPWSz@9VsJjj%1)cq$8-jh1$P7a2?k*l+qa|XxH5uoFB226_GIU^cgb? z4Y9wI-^_rQ>8^%Nwq{~oybqr+vq>NAy6Ti^Z}W2nb`$q`jq;MhhDsPg=aFbs^f?x0 z=NWDMd8|(k?2HgyAjs83{6(Wf%UsqL+Z#E~mtBzU@?;Y@$57zw$*>0mHi>!}s{BiL zZ!M-fD@lAY+TIyfst?LsYNHTCbZ&ttAmG3NKiLsoZzMojzWAL_-(l8~dNQ-dUOKqN zj4^+wm(=yLuF%i}H<=@0vN7Tv_i1m5%tC$6CEuF7l)XQ1UN%0HVY(jF)lmyuMzaaM zaX7x{%e75k;_wggzdE8QYi}z6-K)1dw( z#7oxHzobzo#3{6ljD$x5K=eQqf#|A|DLHfy^WjOfr^>fDGQ2gC?~_YXj9h2TZn8W- zVb@jU|90o#0{3Dq5rC-$nc;pb2Jh0+v}BuE9^dWM#UFDmL(=l&H=fz~0oBc)d>{eI zYz)Iz)c&0GcH92_v`HqbHW+7c&-gn~k8Rl)uZ_;%iwQ)$1l9md>Y3(rl=bkSlYdi_{(j{)j zwfBs4Az&ghb%YN)WQ*MGl3t|Qu1;aT)bu+0&vjSfNTqK|mG0-%1 zKDe}X4T>;vYHziHa`yHBZ5+r zM>%Tddrz33wxRap&A+mXk3K>vK98pU>g3lEKNndYkHMG66<$~I*iwl1NZq10MG%0m z935x_m!2F95odCC)N_O7ky1ji39xE8T^`B6z|vw}B5eoY2f33>DpBn1`TYhp6&776 zRrfM+_pHYcmJgaV)y=ILW%nC84Ue&0n&@8_&wASi>A6|Dx%GVrI{-k~R0fVdI8pYnnmnKchAc$8sG1W6wHC=m2;DAsX0nx+bVwgO!kzC0)6C zk}n`ChH{yYuzQ`{!+3{9S5Ev8mEKYm(Wk^7F^yiv_6r6zy39xNM|`BrEYNLNqke*; zo_!*BVQly)Tzuk1L?6lcoyUx=yxc<-CMmvlem1q}JtJtfb=?tYT5M`qs-tg0_^cjc zt|gR~5aEzJvb3V_>%CZDsQ>t_?)n*srzKE?$Su)4uaVg=f<3Dr*;s2VvXBI5_st7o zCulo{S=#oJ$d~MxD{5MWjF|R7&(19O$N)z@9d=E>$jSruc5^3T>=7R1rmn*j2H3_| z&oi_t_>h*gikva4b{x)lILNFnNG;qAMAXlKW7HFqd1!Rt8p*(rTnOY}hA%#bpKQwP zz2rEu+SD)VP3~^EgrLB-dHYA>y@8xISfgXOYDvRED1Ct5OH0P+T~oFp!_LQ7nW6Y0 zp~D-9(fhEc=(|X=UquGe(H0n7l>h*VgS->lhjBf9Zz)`0PtOZN6SN#-YAl6f-6Z78 z3C5kPDm1cS2D$Z)^w8jyYkghgM<$xNklNxKu%GSld;pbb-sQjFK*}Z{rX@-eSQR9h zNER?MK}yJF_;b=TZk&TieWs z$=X%6^lVY1IbP@%8SbgUGjCMO!kxB1+9!kz91!ZNW#sb6l&>#0t29f#Ah8!)GeUeE zQZcaJR#@-v{B?rP^6*}`6{1=hqG=ddBk@Tk04f@BkIoy()Z1~aYnIHDF}P{1Z5C-A z{%5427#-9OL^?JGj70gPUxZVb8~TfpW$HQV3N4(Yjbt6=*5d#mL23g)*Es+W%Hac* z3?dz0`R>2ZK%bb6e@=xS3h%HaXHVep=IZEJjm(S)_HRm@VuPmOW;0G6rdC(HshBBc2*BqzJdUtyC7@en;NO|$_C%+=HF zQ78kWXSO2IMk9L<-Q=urw*S~Y7-DA~O>K^4wK)ys6~Tz?5!d;61d4IZUFi`S1oAKz z$FgrgmxO?)1Aedy$l#{sXOI?}13}8Im)^*P%w3G#Sq$Xd6>arM17DH+J@qo2S`xIfUe zK&(lWj`BX$Jj9nHd6*iCrBA0kcLnB%3|vqvwO`+q zqL>A@T@2;HLWhf!MuK3W6N zSwu3-DoO*Ddnzj6stH_0RcRhR4amCJ5-)hO`$yF03zLBp_bgtsWMxSz5HdA2z27Um z_uP)pC=OrUiDzy)@!b|8&)>nhzJlkQsh$p*7ozP{nU{Z^8F$h-*aPqBE6m7?6mDPA ztk4i^8~O?7?_nm>V^Xe_CHaRNGs$r}#+ug96WkPdhU9bXO~L3v21cLPgUE&9m;QVP{~4p>qwm1?zA(1+ zhZ9J%KmC+*Y2y69{@!`zLFb?EcedYQ_>N^$wD33K=H?O5HwyD-A49;RooG0W1;LSP%4D z0rZ3W=xX#z9QaGB>YlF@1Zkr#F)jOpu!$&N3JBA*47s9DoKxO-ZrX%sy8wLVRvaZ_ z^s3q^4$%@xwVyywUE5RAexk)V$o?2Irhkfm`D2?OQ{GTrF=5Ayhxj;;_fYaivMG6O znd7d;WgIr~7F!H@IW*HOes_KDekc0pS}eV*~NS>TCT_^tTJ5uZ;|E0cV&2e*A%t;CF+DpqRDl z-U|4_;H0QZqk42Q@jc<{3OQ-jnxM2e!smqY_1Vg~Xf)D$;2(@{>@4pe=i?J+GY*;k z4kL0le1EXWwg0Vy!`+hE?Tx$P@=E!(&uGZ42V+q{lW~DhTwGSz3&0Rhb+&}zZ5g}Q zhyP8^6#Qd$DexWGZh~6dumB|4N~tpuMzC}u9v2Uy2+U5X(byEh1V9Ms`OA z68*y@B!&{pNn)@2YCd$~qbV0T?`Lb^5;$?wO}t*$Rol_sRM*NF9L8fyg)T@&aP;D;@HuvCE8+CvFN@z!w%97I?qY%*% zKZ39cPoq1MI3|=uLKqXyFTn9|XVt*TaFnwm#qr?X0lCt2i}XA+WK{mDTTKfF)#q(* z40D6xq?Om1%ud|K;8(5Q!FNa7Uz(MQ?1ng6XjtXrKLU?AqU3pB4xLUb-JG#-PFgvv z%Ngt)*kh=dBpOSoGP(+C>1e!6avA?>wFq3Kij}*Kg+4R(NxNTNqMJWbJlOX=j6Dz* zn;4|p?_4m#Ge)DAn;_)k;%TX}=q1xqd}8nzZHa8>bmYA25i&oww-YblSK8Ml+gexO zEXf=aC|uC~8Cm#bzXQ{=P&BL!dkJ{Vm*Q0Rr+~3A3cJc&|aEc4B%J*6O-WzA}JT6oQKb{Te*H6+u-*J z-$>vY(EcAwb#xLUYXiq&un5hOARA{RgF$~_KZS`2GpOo{2ZWBwCQ}7Zr z2!;HfkH5co7I~j(!!@Xd&%@J|qj57D%`~G?c;~R^*yimAbQ>>JlKmIKOQ1(Gy#LPE z_p3gCPxr5*qK|548gOGl%BSMPcrE;M8o|X*j_n}hCcl0cKESi?fBhUqKR=**sf4{k zP6&1-g!?u?Pd^wq;|G&+UG7!0;t<7O*C6FT*#uJ|FccSXaYil!X8?X;z`cAbw>Q8_B7&jx>;KLWA?{x0wdxs^<0Mgr3r zV83uv&{_@B>4sANh;qsJ(#`nW%>&0Pm!NI96%A(kf<(2V?WjC+Gm_uGk1uV`#BIMA zuSVlOqbPj*GoHK}68HZl`$Rr?`2RSpft#@=dq=q!!JytR-|}IvIxoYT7`3>rGrTc- z0Wzxu=7D^S5WrV!D4$UyBWq|?Ik_Fk8~<=OXHoW4EXKbv!mO$;>kg@HJrY5~09 zi7(&?5itR-!Fm~rz!Tuk;j6c1kAwNA)@aoDc_Zp);qMM77kDttu-Le)kYmNIzoOPF zzeHj;zWmISw4#m8LtJl;yJ3AUAh0T=_&cR7lzYHg1_NI3J<(2Dw8|6c!fdrVr zO9EedQS6D(?kN|@r^EAY;0;E494WNXvj?Avm=Z%#vEYO0qn7>apGB^&8aJ@?49m~NX|GGFZz7-Kr2SL&OnAMnPh@fhPP>|;zwZ8c zvY$kl%e8^dbX2n^&Z{0IM`?S^udfP1hQx8CwoS%vIFBdPtp0Z0`Z^SM$hx`dn|{Vs zgJur2Nq(?ls2JTI5StPukGDz+*l{AyLi7gTQ+*qyqe8qEW#P?OnaZ41J>wdhhl?4&89)SaF04Z!&z``C8f7XU^m1NPw0IdfuVC?tH4kBZfcbJTVG(ymRuV5MQW zr0~$-LXfkRtwZkA9CWsj+658&Lv%2Ty>xh*}^8 zYGPt%Xajwb6!}1=S!8H53+ckNINh!%)nG;$@s9QzCFtsF#6Vv)U;H@&+cFi5AO86n zIT|>dIH2K9m=6dwd;dX0J6d*6l6ETM5#>jywi7giomZCEe*8Il<_zTUcH=^a(esAa zj|1e+FSUnOd0G;W56fO5CibtYDI-pY8F|_VsMb$t^cmK#ORcgL3^InnAv!?{SV?a{L!wG-m7>s%Dy_NM(YZ=?!-Te!*K#n&JlKQs;Z;l z1wl}~V;J+6! zo*pg6#b~wppvE75XdG-lb}an#_>rITiQoPEevFkLc`w|tfEce0_C;`g!h}TeLz@#R z#r28$fXt2=(MU#|pO(ZoF}f-(G^hY8@h!CSphdX4funEY$T=3rKO=WsfrP!Dve&iZ z6~j;BG$?_L_ASv8Ue{8{@FBEPS&Zc%&PVHFm?_VHzFNJ+g&o#8&t*yV)t^;+N$h&gpMbLl zekHmDwqgt2a^N1K)DXHtkh~gERAA4b7Y*nY{zO>Or$ZH*6?ocr-=mOMt*&V>*Uzo> z6$<$tEpMsY-_-Q!EYkfTZpTl44R%KH_>fD`ugKz}7(ynMPxX{bjS z6}Z4p1@#ai2Fn9Cyr`w-5%oCOxF@v_& zIJIs5jBjn2{bqNY)5Nvk*`qZ$Te5ZNFTH<9FD6$6stO#NFZE>Z3H2PTe?T9X6ikBH9=_N;hX4qqPOE^cMIh0ik}T= zM235=)MZ;8RMw=F9p9tLC|+zjgUpSEg6mp0MlCIwg%V3q5z;?9_bnQ=I%6^#1^f^J z_k6ZMZ#Qyo)TM!)SrcrZcLZ*r?xK*8lH7f;mk8KxGi>6E)9?*#MUn@8yS4WoE+SnV zKPm`$2%{1Mk^ahL#(2?I;VmheZs&ijF6nloz5Vk1UXM-jXjkcv12V1?e;91qQOfrY z@K)MQNF{Fc0EG^qAE4+}LYt}3qG_18z?-kyIR68F@M8Y9-_CpZ_-g5;I9Yw%H~AN) zVu0)4Z1^}VZ>rP9nP`V-*hI7zS!i8kGQxB4M`v_t@>VP#xVjKKgP^H&buveEHM#To zFI{a2?H1|DT8r%eS7{?|!d$zx$CX|GtGj#QzXEPKf*bQyfir5hUC#wgAP*u+S?C@0 zRVMTl(2o|1c2poB5ja}iAZR)f8#ds#ZkdQbB^ZG7Qdgl*to7;V9P&|I8p@41#BL%y%2`LXF2Q{(a(Aia}i7f`eQ=CqNh+UfR-y~ z5sYz!`SI{)K%1^T@I5m3<}0oNy*PNIFUwdrG*nlV)p3SNa1YF|@p9gWW3DxBU)F6DXCW5J+;2l^)pg_(*t_5%kyBRS^ zfxDh9ZigbxYv>M>69EM<_xmH0w#sv}0&z_sMCHFJyKwa2Xt1pesz!e*AGT%=xDJpI z-dk}B`4FQ7>jJCKS<-a@vffRbF8Z158FlSe(N2YT5a&(GeZr@QEBD}|tQ{K62|55B zQhiTwk$x|t=Q#o$`Z<#BkAeM@*^fO~2TZ&MTGL;Ad_c#q{%l1+XS_dK9N6(|03Y`G zv+_^)b@uaTcy=k!=4U<+&MS(niJlh$Spe^#2n;zfB}Bw$5K=w`pMf6Rmv6b84yd^5 z-V@Xh!}kdu&-OeIC~QumLY{<8zJB^@QW6w0LWTty6H4K?fbNK>8^VqfBW4But!)89 zSJ6nM)3y-Zf4h4BlrRV8U~~*Vb9{1~jWUc$NHlMm`H5vwCHmab@+)5WC;r4OS)V-2 zh~sAE!CqI}}Jyb_|jA{4nxG87) z;U)zi_8gB5#);40zyg-PA!oG%zF$iB1yy`N7xH;;H$I|gub|L~np{C@ZV1=N(KCEe zKJMg7tu*BNVVwNelk-9|aC@4RnThV|zGeU(Sq|_>1^-%zpWla>)NQDE9-&tmU?eL6 zBO&&L+&vTUuueKzmZq&Bi!3EQ77Q7}sE*L?jNFE#c9Xwx2`{z97i@9!V5wg@GH=;u zjRK@!rZgdZI9xVj?S&J{rxyzfy?rL3m`#R@7Tdf?$Yt2pn%701TC-Xt!zzyBM@VB- zwA@%3XZ$ldVLYOCe@S#SSQ_Bn?XX|ymjUP6hwlHnnwroB=n3&QWV=U$+?3#}*tJ4p%qHRLOJ0#M3p zJlBQzNj3i`8P9#{$FQ`0Y%ls&L!*qPMy>$%1 zS|%VKOLhkMP1IAJe7>kh# z;i3>rcde0}!YmRUFCFnVHE(sgu9{CEAt1B-+K@{Zkd}hkYTDbGEBH| z*)gxJS?ISn%jZ%I=G3#0glT)5W0X&!*RA!rz@SQzzHi)D9OgET5sUzvN^lr~4b*>u z?fw@MgQRKzDKVK9&ycQ2!zHl7p@^?aMq`a%!r)L>&~$&hjKR-W9YyIW&JnYxo%o8z zD8Jw}{v?G8d+mf6p#kE2D_VI$aTmHr0YRL|Fh%M2Bx>&Lbx&~(PjWoR> zgWUF>Kf7V6we0RyJY0#!9G#8ww#lsPnHNK0`ogi=^voY)(T)Ux{iyZnp%6X7UXhw1 zPUAKLHbZMnx`(q<6RsdWtS`CIq|pBtMk7>X1#k<>sJT_$bywRBTTfZK*R{#mU9%th zQafdsUE%VAN4*`qm0{UJ6jN;3%YL4@?XdwFfYpqN|I5xDvW_cFQXf@?_}s#-cmYH@ zu!cFnThC#yB<_KfIcPUpclz}Q6+*I5<(lsgU*Sxgyq zGc)(%uXDF_-t>04i2vAjf!*{4Z}h>*f3L4vK7j6XB49Zrz5|WN1BR#|`=rqiyqyRv ziH%V82VpHT6Qs==DIAHyvIJSZ)|*(OKcTw}e?_Zrnz0pTc*X!?bFwd_1_&F^!!sfF z6!$z#m&8_}D}j{yU(9&&C@-`d@SVt?@#c+#qw&4<%oXyuv@~POe=r_=i@89a+0_Q| zY!JvgS?B+O^N4{n6kJfs#-VyJBNyLh4mzb3OypNj+>jP&HJugf+AvxXdH(`>%F=ds z13fS|8e+i@;4gwlYEL(;!g`2_fh+~p^Z@pVrCgujTtPN|6+C%%S&V%=kN4Ue{(_vA z2fof&hMaC00s#Q=SuHCaZIHb?uLtr`(PS_9IY+v61i^a*JRm;cY*RiG10LsK$qy;tC4>)``uU-?34Vhm!7E$(AyH{aHT*S zKOhu^azHKt(;*h}|BxQ4E>xA@bZ|T93)ZOrwAi4uJ>K|p`MxYy#5?DxyX;@xZtLlr zEWet2wRr1~E185`p)-=9!mTpvQC#!TO|JHL77R)?))tt^Yb|UK3@sEq(HWaz?T^9` zZ>J%uO)|IIe@P|MU?b$9zmmZ3*Xx!j0jVOQ+Je9w6eU;HKSKdglD;24^zP75VjSY% z9)60iEON6cs916)LZ8WxNO=ipV9ws~loyEKa&DEDC9YY4Op<{P`G76`4(AAZSapuH ztOS@2<|qKP1VSYh+Hym}via<$55iIS_f7cTrp$~&3(s1>mpoq569mrw3NH~T1$6Hl z&;_UH+5rh95jL%W0+m3ZAi8#z6w<=VPwC5G_HcE@FnsSjSo=FLaQI5wjYz-j=AGdp zCO~G`5-4ONa#M=)IU9&`iOnae6V-)35}w*X4_R8sM#^J} ziY0FrvS$kMleMFM7^UI5YteUh9z^ZcMyEQT5-Cvs4;!WgFm+W|@OxL8eYKV2(PEe z@8he)=!GYK?SSvJwMUAUo{bPOmQKzuaOc)Nkx5{>EiM*0!Zs6p;E=la3FpMs!Z{iK z=Q({nBPlbb=ZrS0PKSBtfe-w1JOEBz1bQ8Vb(2_@(2HCsQB`gMdfKhPXmJjli|P)r z(1A}j;ynWJD&@I%k)X|H*6G+9AN)PVQ?hZWBB_*T9!lE(#y_4q8H)rK-Kr?CwW9Y$ zK&;AYwXPtdvkL&j$)^~OW%s;Cj#!5tyh?7bpuQ^a3-wiWP6fH(F37)u&t5IWcZ;r0 z-mdNQ^blgqk&F4&N!#&--^VQ~uJ5e=W89*Wdd79Fa-IP}uOumh_PO~zY8(Ril_Yu4 zqb=^rCngDbMw{FjE7L@Zd!nxS5X*bR{{Md%mYAqrBeq@Jh)ap8itv$o<0YU}Lx$?Q z3QcUdM9It#0eFKB_BXAEV=K0VpvCE|A%1zP#P$PS{EsG#6iSh zv!n$Kc&b1RyQAj*$XQ`|`Vw-wv|>OXZ!Qu!`z=)NF2eVqm=K*RoAKs(OaCV_0%X}w zDA}crte-2#L=%v!+lF`orq#|KgsC7Dr66r^Z9xtQTj~QA!jPmLsAR&FMD>He!$(Zb znS&o4O46Khc;O~d6mmRJIe(B_p++C1)`y957#iXk#~wU@XRX5>O-;+^hbADqKO4&+ zulaX~69Kt2g!W!@s*o=Ae_cRd^#_bg)%gZ)=L5zCNkb4jl_Nm3iH{M5hJeEyxc+O8 z;p01=A-&7%>a^a~9?~;8a^~e@rLtyx>xn*n*lfJ56F)k#*bsUsOl056dsiA317Nz zUwyw7>-HF#9JUIz3$hK^dI6>5sF2vlFE*cMe>rwGtN&2gV%N`bzCysh zAU>vk4N-EiO=1{T;1_5ELSk@3h#X1a57;@Cw((v=(m&|Mrsv=ri$`8_8*Z2&8yECW zzfVRba+*2*syhlS0sQOl$P_1E0Ko1{Y%DAR{Oi}Kel9kTi!!cHSP%MKZ79f17u6f? z7|4W9cYIT6u!`>wjask~{_K7y_>(cc-z5CB%{GjA${oG#e$nU(TXNi_>X@vYx zx#hhn$LeO{OG{jhDv?^K29vFbc-AzUB4avzi+6YjTtJq9jZG}C+HQ?5HEvJJy>o~_ zV@M3HE~6HWlc}AdvvPavjEWB+6G=R55pmF9f&XK4&i-6op?fQ*-on$)d)slGZBPu# z8FVzh+;%g0p&ptSk7 z-~muUXr+qc{v~@PDhJ+y(}Hv(!2^UK7{vRKIPmTNmPz>m6u>z-?j=$g3pp^ARGQ!3 z_-0zc^?74Q7Y_8+wu9LZir|quHZze2zDnw=J=xh(VYyW3@r5#M7{zd7lUaBwOz+H;>VfF}Hav;2Q&qyb-~b-iX!L0?QQl8L04ElrNgtyxt9 z8D@e2u|Wy4qhsR+DL)L3jUU434AgPC@2agUeQT}F4OydHzw-IZRZQO6*PT<){!<>! z%?{VGY)9DKH3T1odk$dSCc!&&yXhsc^|OXc#4rxikTJkZpViDkwkM25i=tZTjfh(YUmM%Ds#!XGCcvA40Ln4gZ}9u`OFtCND45W< zy2x5@L77>K^_ z=X2lElZjRyRoQ|eut!2us6JGKstaoMfQ*!+ zF@HH3jY=69FSOT^*gV-i zE?U>3&z8GB?%8A6%#XPG?alciY3aeiS=D2sm!ke5X%a1FwHY7jWU8=9+^F6K0Xg%P z=5$UI+~?3Eng|jwQo1B4F^8)aL|+Q!VioYAntZ@W&)#`{87DU`KzgI*C67pok~t-; z4YEanKWQ2lwaqHA)M6|C!WDlrN07zw`wK_;C-)haDDc=j^je4%#k)8WI^m90;`p)FD<(f^DZyVFQR}xazS(!PvGU^9 zD~TCPwho<(HWrUdTJE(fM|q@nQRSuZEd$}*|4m=WR#0E#Uu+HeD9EruCWyA1Cz_Qo zJNwPZnfULC8&ifS4Rz0&?`w{NhMu|e{u*_*WY^ z9T|AJ;BU0x6OMz(`)J#EyUcmvZm`Hcatvx9YbdLfsgQSJtGG9%E6J8cL?Q< zBH%s~Rm(qnU_Uqsxa2Nz;3@}}H7Zv$mJOW93@Qrrk6a!cwQAGmZQJ_0S>xi6Ws&{? zy;nwYGqx&6Y`pQ^My7S^y^cLI(QmUi$xBZw8@3LS{lrW`k@&E(4WAm8GMOoFAE?;W zf^}xDm4T)KIw2!iXn*MKAR#g2Khwg2IK)9B>IL)_w8V!DGG`hoSBCpW>?p04yDkW? zNUpX?bPevEn3%}bSUOm9IwH$>>6cFKfy}I{A&d4-x2m6@Xrlok`W;@3yEs$ zLG@JE7JCeyP|qF`OyHuxPzu`7M^0gO0XJe&CLZsCs%jj}^%6rnPiUgdTNWM-{qiC* z3nC*6eqVfNVrwG)oY-3Yi}HF(tbwD$Y%2==jTVx-%~X78e)S>aQ~bAu3brIS(h|#@6I!|iy)QA!yT=M&?Bh?YP|iS zmu;e22Gx}`3js_8dJx!0L^LJbq#;-($Zn6Oq$NX8Z_NR>JHozTWCEnc>As+CF@dC@ z-6~udCoqG8n}a*?lxgdWXBHMjl{7A0SzuqC>1;7&P*!Mm=7gN-BT?__X1pIwX_{3H z5X4_#Ld~Dtn~HmBR7pib?vtk`>%-^P&}=W%K|7*o;W^h*!^@a zXIxfR*z$gHk*N#5lxL%3*;Ts9_*!+@8Y@qRb?D=!T(mE*aO*E+;w=__iGK1NH;%~i zSvbp`uzv|eMu1iR!zo|YvJYGb5D7&N5H*Te5#lN$70T_3$a$D!>Mf%NmPbaGCknjO zhb7`{U>PLt$4+tW(>X5@zeC(5PHRQS160WLSAsW5c?ak{72fBg76^U*A;?8AFZy44 zyNBXHXWBPK1ay}eK@B^(xek9w6gMfPG6cP%8s=goGO#C?O$-gtq-l`r(Z#pF+x-so zbb3K_pM}T9_6@a5)eW>_`R|aBV%F;(+WK|=Q~UCt(k3>Ok^bEtZma`ktDiiEnB3Q*)d*v4r!mW9D<*{ zDrH-uN$N`NDD3Sp?2X{gK5#n*GC{-waHQ!LH38JJf_myP0)`+7j?_!^5rb&J9|ISu z^cKWyFq?ul_=joUB0c8OPo4PXb9}!ce{vfVFB>r@IUpc4$}em7M1@@pY8U(I+K%zV zfB3625l9oiUASbg?uRYRfYXnI5?TUMQidg|hg@ztkpGi| zR9&d&6rx;+e1kLB+ePD#6^Y0TRpQt4@b(oc?7IMb0K3iJ=2LMKEk$XBXTF1duIHP; zzSzbTX@i&J8@WfuMV#Q9qC=pyqb}}JehExV3&cpg8;Nu**D@yf zS5b&e))5{NffAnKdxWn9YBOO?FM;;@fM`K)9<@+4NPLjEfY82sayZB+$f_e;`jI=T z#FB?wNT9AsnWloYMW85>UAM_Hl)$Nh2hY7cumWc+JA>R`uAYf%r)~Qk`Oj$y4w$ig z;ng*{$ZcHQ;*asTrBN$?YwEP$poV4Zr-P&LspY-0(@&$B*XxJ$EkjdVr=rTC`MtC7 zv4*wiL_=iXYkhNbDyQbH^?6}MY>Akj0x)Z)*(7r#* zkjaqYjqCr#UzU)=fvY%lha_RI${&4ISD>b-4YZS4!@ad`Yoy1jdc%{>3P?}E>A~$; zDl`%>23&5zKd~0N<3~!UOSkCVw7E-suwxEHyC^XdGT3w(EcD=Ie8QaC@{vUojIUwpWky;BQYj$@^a;5TVWm0k_ zV`eK?L~hCo946873q#r5$o0zQ>z_Yc#|&KmqGQ8ECbnUoee8qEN%+aQMc@y=1?Jt) zN0ECKQ2!3W4a{`|iv=?Y_AC7n+`wBHm90J=={K+|E0Mj|pbme+TTqKc6c?XI@O1bd zX?X=&9hT&$@|ATUt1so$Iwu{?`_-qct^UaVEof@Zr0H)4USl5bUz74n^o%bf>-ME( z4LCUe!K>_j^qJFOzwh9gt|~5tBlM$Hw6IxMMr(O;za!R+F^G8 z<%Jt^5|$+RPwHEg)_c^E1KTbjuOjQERo;r@Xy%L|`_uQBL5LgOzm zpF2-8jmimx9!p{Ef5LZx9*E3Y5w(*|5vg$r?pKxhFNQu1_~ zs-tZifDt$YC@`yQSOs_Uqw_=JE6%?$$evrcrFuE`pEI{I8oz1bsx#0YD9RYU9GvEj z;x&$6ewKTt3{&3Rg%ru&$zCoP4^1We84I-FU_X$(6+@93%#RiuArex)bpmQO%M2B^4)M57!N9F56I? zmD+z}?oOGW{|d%(=m?*HL6iC@q*a(JEb|bi4!Y2|b{bh9qn6e6g36F-&y90xE&afQ zkwbTYZqN#ti3KJD$een{p@{8r>igT64TZspLodA)7tPDuJbXD~QOlT>n}?<2&iTWl zo7$!!hWWUs6+as04|M$VMWAa+<;!*?s9%O}Abv>79(*auJ6Qq%Bw0sh*E4Q5$Z}8q zf+27W45}qf7{vcHT_@7a&9)3`FKfd;bt;k7qO$fN3%tq9)O-GXZ&Pz0BxP1_Z^mD; z+)y@i4&}J#;4hP~TM23@+JB%Bk0?1n-iOG%2`=(~Xjw(jK}E%bYf;d_gqMgwXLL9U@SvZ{;>h80^w7*0AEO1VXy2#Uq7O&q!DpvJf8 zN3||xO2$fN?By%VuPz-}H5N%yzdQNY;BX*|#pMAUsG95)7kr~K`Z z{%MpsYtzQs?Gko{az^Hne#jr4zK=VSkzwtG_8~6J%a^!|H-tJXSXVhbcOl5QDMd1S zDucU)n-t7ilZ!qOtdUl2)Z2!Ve>SA3SubzGzKbS>i!xUXS&5&%$Kz^Twj7W$nTj2X zh}9mAe736UOyqqD{D;0@CB!XQf&Qpq2X7DX4jN$ zEnXC68o0WA|A3UptiAbj{mlY)qw0*gnF&*S8#*}dEB~R+!FR2_e<-12O4kcGpIp$t zfFuDvO*Jl9GL?+OB|JJ4Tuj@YQ9T4Ee|u2IJ(Cw-UCjK;z}Iu>fDoaPuiKC zygAJ5>}-}+yV_NbNLrMUKoTGU5&{86AR(I^jKKsGjKMZC!5B<17<>+Q4se`}4LIC6 z0>=J)=I|Mx4cck`uX?5@_Uz8AR)BxsO4D6cU0q%E>eWjX-c2;qZjsk>A~=ut540P; z54>059aw0?Dkfl&Y>ktJ3rvV)-k+^fR?!5-lXgqLly1KAOQ|)zo(2DV@Vh@aeCmYT zm>Rlr{>BZ9H$S+*+OxXn=5tWb1y_IVtZUGvkH5BH;=b0to|Bx1Zu{FU^BW8TLkqo2 z&RrL89Ca?~A85IHG_hpeO)s7we+J`KFTkfC@XDWAo79Z#umv8V1o~(a%q##aIH3eU z0>+I*919BlCqH=Q#42gms)?)8ulD(E=x??_0{r?$9z0n(EIH8=!*5-F`CAQ}{FK#i zL=B0__b4Kr>5JU}3m(QIC{Bb0>wmIUT!BW$a}4w{URxW$l>qsIGQKOl`kl{RdP8b$ z$~*qeD_^|(!Y}Qv4~~J;_~q-?rQbgPQ`9zYRp@%UMR_2j~2 zmyAOA-?Qt|M`|8Detk=M12h7s10IxH+unk*hfW8oTB{MV^MpD3rSx*Q~ro@^r92xJ9 zOLuMKZMvbQ|NBb%SwOcXOHxMi6>tISZI>QT|9$gw6FX6YJn1!t229(qaXr{Is2r~0 zb!IIYe1jd*na$!dT7%)jhpDDvsk@7}rL+joC|L-=cG z-JBQCPtDn}Wc&x}#e#@{=aU>996SS*1hzxM zYJ8gg+}-=6_t%`Ut+B_JTL19=Q;pY1*BnEZZ~pE44Ns80?#2Ij@{4ajM}GNx(q}i$ z>*znQt9Q8=`TTWH;}v=rAoS)}!?w_6fz3}z>8GyVgK>``;?f0d6Kj+0cYBCSi5nmh z<2hg(Ae$X#3LpXoJcxiFC;3n%tj)H;WMdcSz#H7;4I(j^#t>~>G?|LwV=kZxnEY`; zSa$#dJmz3Y*bkpd#vpsBBMC+z2tWql`Ct+Su-hGTP#lu%js*C@!;h07DdPFY6x($5 zG4It^)30A0+;z;mYZv|cuC)1w#vS}H<8BLTbohlWG5lHa|v zr~A)W%wdN88qUsbZtg~PXz(ise97mVM*AG3;mZ2Pr`K=S&O5!1HN%8M4|7~Z`gu0d+Jh2s5n#22$p06Wa-WX*aqW*sM zuwd;MD7MaA*Qfh-_*-ULa}olzxWZCb03%Q%k&A;wVjzuh zvQz~37Hs8&ZEfuc_G@7U50(qb%ZK3vH<3%=Eybz02;^Trq8j=`md{~39B_94em9Wd zK@{Z}FyKPhf~68V(~$^v0yl_7;rPGkpsb7lu_*7O$p?m-8}=^YjEuQkJ46k%?l275 zztL*0huw7-I?jpGI@c)-dtNvcZZRPpNo$;++{$@(e#&~i`CvErHh)~p@D#<@Aw9*M z3N4s>BsniQe4enFH%iynby@=Y2-U`te~%;HpsjChap{G!?z)NgTTS)jb!(FC+*e$d zP&C}SjzI%t!bh%meo4BE{G8yP$L`odt>oa?j4r3%ehI*33Cvf!Xlta)=!==wZ=qPP z$EfixH`q82br#>ske$*7p~E=(?W;!JVJ{Wv*vv{VYKOG-4Njv_GNx7%Cu5zt(wL&a zj0e2{=lfv6I243kOqos)@z!79#`s`6P+7W@9U++0hOAIOMi_)2tmUH_A*Z5^{$kr#F z8g#(NfB(DBpfzjf@A3s>qybqRSEWB*XIlBpz?-RFL+ILtTEyEWdMgn1OQ*NY8Nvfdoh*z3Cw zldtbe4_rAdbVe53a!u4krqgUYFa23&NN0vd7txI+#0Fy96p+Bg7BC4DVgLis0DL?b2V*(~n`>qA4cG@Q z7vpnCEQSHVGG6YDfUfpL5DrrT1Qcze8bEq1v>9o{{kB!+BzyKPP7@_KU|nQ=!zUda z$BPzzSbJ)6{vka|F7t%{t`+=(<}0i&$@SeMJ@j`o$CSb4t6TO^_48~e*@rvmCM^=A z?<~Hlv(FHLjfQ(v6aJ9Z2UO49M!~Bjdf=@4u z&5MbDsSF`12t*L(F#sQciDf|G$3qazUH~>Avf$$$bRCRDnMHTlxnwLe5asMv4u~o2 zc)+vB*m4D^1?&-zXFw@j4jh`3!qOH19uItn9mctQToedj@Dy-!5J7>kP%IILIYf}h zfZhX%ryL3VY20~m^g}uIy^_3XiLv>CJ@Z>E##Z+nWb}4euMf9JPUZ&#V*feUOTXB` z&x7OGjp9IR`xaW;1wG(D6K(lc`+xzjIhn>A=gxc10pJ@n6zLSlM zth%VXGq7w23OBSxw^;j4{XN~gFTeF4%>yZuE!5G*YSx+CpVqGXy1-xPYnjlvy3f=a zOFNT#E}{!P^|2)ZU2|xKR%div+}3VAy~!^|1H+H{o5D-|UXC?TJg*TgE0={FI_n<$ za{rb+i5BTzuT4A1HrtrE#1vIyru@-xfa2K_1#R z#@eXe&8vf*&MxomFqzb}!r9hx8)FdXbx1!DVjX+fR@Okm0*PXtE6-(Cq9L&g5|T_2bPciwr_@6HRZp7gC=P5o|lDJ=eS@E~*k!GrHz&78ks!+Te6zLL6CT-T3mY`p-0n0KY z>CwAS9}N7iEx|-cv-vVRNj3-S*}#IjB%?L&8h4G-(rX%8)KQckrd?t$knE_*)?>b4 z#}T71Y4n-m&O`%mkPxyDo9gF?iw1;*IeNt=eKe|djXAX~+>Z=?s%0&rIzOgIgy`0| zdgl7V{6+fSrJT*#RoBXJ8giH{?Ke1T(bd`DbQ;FPc60hgmh<$Ix4*s^=zf!Yq zv(wX~v+^z~+0#i6&|U*)p_m4%j^2niv2L@Wb#;fci)+zq?q)O{6a^>y*^+QfP7%%o zVWrDf;&I|T1Q@a^Vhwg=gpb`6ZB|e>V-Z;a0z`mw_WtScC;jFl+jphVeu`>yuJ-H@ zr9X?FLqD3!&JpYCE=Fx1X&z{E4F>7?&=6@sexXAro&TX@6l~xs!l`;Vzq+5; zMLbKqK>T6~tTK>*RUqZdSD6{wJK#VBpfB}6n*iZpi}ybnagvN;{J-`zqf2c~(!;>E zW20`HAu#kP>4{K{i=}57RiFGD+SZfYzX)$o<9vbU`2e*-1C8jr*Y#`^=B~l$=5#+6sDhVWsn|} z3@|2G|8j=Is1?`7bzDTCjHj*W=QaMOb9>Et%Caj>ROZ;F^mQTN`lpEB6aR}4oUvA! zYsjDB0z(gE$Dt7EOW@2g(MBYVgm2 z{dRnqaw1F`f&C8#ZUQE|YQ=hq-@7bi5T!?dr0XDWW?4SB{Xbka?=MgM5w>bHLyndH^#p7H>Mf`nj#s)4>CqKtUf$jmRw;ryOQh* zXP9E8Bf;Q#lFX_YAoue8BsO;fsl|sZ%ewZ5jp8+{Lg|JD0r#nz1*p@%e(qzU^T2gq z(lmz2FX(inw&CXAO3O{-*5IQ7@jTu9Uw;VrTfL6N-a9aMs_)zWPQ)QsT~zvoKEm|8 zbjl{W!Ef~3aF%|lH17k!#i{frt_c6eiT$8w{}iZjMa%<#zgWz$cY$>kG+`j3SV_*R z&(RPgTMx0d43hDL&OaUcN$1SBe&xKSEZ^dvzrT)Z4sgaZR*7Ak{m2Q&{lA^`{qC}8 zvu2*gKr>AHM;iZ_w7Z^xGv!V)^o%-cSgq)OP`+XeP)ut8#+WI`Yaz)THH$N^&h^XXb| zwTCwMI$bvm4n=vUE#B6#yYtKq+~il>Qk^w$t}nbD{pcf&b@cfrkE7|`9jiSs`E}B% zxAk0TCzHRrgJs5acQtvJOF#e6ajlrcc#EJSu(@k?D4W5O!8pTFc`DK zED4?{fPZ2LOpBn|WQ>4dXT-CGcv__nedsb~?F^W{Efz$mVH88ZVhY&1omu!1wPJ4R-$y+W2rd z2n$dfsiyOG9%{0pIltLM^^zfz;GoRxnSEW3fIVV9WC)SzMISc828(#~c49Yh>5l={ zUPatU+)sRy_yO?~;@8BR#9PEW2=>;(4CpAVxL$>}!||QJM(>ausV8luhYXV~B?mKP&nQU3sDiK zl3rsXJ+dyztQ&K50PyJf4M?S75}WDOi|cXYuv`E0~B`_zq`>MFtSe z)FSGD!r>!wEEN>-i%@g8f_L0_ie*yRc?j?#pcXK52y;|m<>&&xv?6XFo_~-7Sbl<~ z3y>e`0q~1}BZ(jmzyj1%jEP0?hDAKlI0wb>GzLt=C89B~CC1?Mum%Nx0+R9M8v_}D z)WF9<9mdmQ&_-Cl1Z80uv+b~81vA9%IJ^P}5P-@FMM5~jL2rT@0Zj!E0p#!%7T#n6 z4!pkxN>Z7xc<<48#~Lf(a_7V zY{VkegU~o{#2~WPxS{V`^`H6L=sC@UhP~a4mbY5XS{-;dwrec6o1Hq7OBXX6>zf>> zdd)Q5x{B6W1(T^|8H==nGsIg(i%!rmO}teAfX4wX8I8k8x@^uB7J>V8C+LFndDD8) zqhSRWS#+(8*l41hTIwR&qvQ0(J7c=Ws|+@e`;x`Y4GzJ@@J+0Hu1^$|WD%?&>{&;w3|pT-oXg-93@zhzOv+5P3wTbgk#t1_I!tP;I)AbV3)UN#oJR^K zeW#H0p436MZ_w^ZXq;C)Bt!*Rn&frqSly3JdT;m2o~y#TUW1m4cGIjF88Zs&)4xn= ztnLK$zL^sIA?a2jV$~&j{6>mn=l1xFltFsY(i{qj(b8!jdL7l4YHT-=hTdK8%`vPy z6kaF&nd3C)Gu`vX8?<$ow2%5MK~u9S*rS0hOa@-h_Sd&kn$|j}aMGH)dfaTi5B&*d zsr|Z52D{c^Z}<6(hWR>2lgoe{oUzf7blNn|_Bu-t@Wt8yo@N&(}t}368gGcz9o77Z$`n4K?_PH1M+23kSI?Y(L zF4Q)`x2*51-(zZXAx%BQ>kRD%x&f$E2NxN)#L!lYn>6T{8@bI<7Tl9=@q=H~&$D;+ z^$RguRCMWFiS`AjH!vr+8|%BnhzHABEO^oA*SR&k(R}_@8e5cY^I9D~t>aU$7-fFT zRtgYTt0A?#*ON%XA$TlfV2m^^n7_z3HiqnOTk}wlr-O%?dkA>jdEGoqLkA^tdpyRL>#i#^qrwRc@N`~xW2nbL@jH;!nP?&Ty zk)Y{BVh6tDgWP_~=O3i@!(TQ~952OK_8$6y2OoTZrXNIW9-t?m$;KW)YagJ=_Wc(l zbn&+v8lw9yLFh>Oj^a4XMH`BEFNVo5v5;6wtRXfLr+|*KmpG3&SS@Ve%#Z>|!7kZ? z7*c_hT3SRU-!#xe-^qh7ZOw<#RSF2RuteVdl;4*HE)GoYE=i~by0t+1x21r$sK9+W zu@3NXJ8>p)E^z=Ppd-XJ#7)Gl#AmC8e+k5k;9v4g1z&apLvizX+L%IetgAUr=%*mpOx=Z*2g_95nd!dC zF}WAXk2f?-KGV=Z)n^7(Oum)%Fr3m*Qy)J}JOOiI-}>nHb@3>#lG=S(*nrmNv8|M} zel#$Jx+8~^Cp}0@f82jDNoGklNgl!Lh1_L$RLHkZ2U_t7pc8ihow%QPgm{YhI;?v8 z9`Qr4bN(msTDABzGrm@g3net>!=*nnwT9_$|7NpKRxaun83AO1cG(RkEpCD7z48}mmeZofe@#`yRh&cELyoT z^CgIdV@UaqWpbhWqfY5Rm2spZQ9Swt+U^iVhjiE19|Te?JqTBm z9^EeO)SI$O+j~y>(I=$4a4xi6&V`jX$R+JWx8qz7NDn~#B}IooTp0W^(-d{~zPuxP>MSPAp z3RwR*$RpnYdE`F;=YIh>|3|?2cZf+uz^t(moH=_?5Jgd2<#7NfB4^RMc3NMF2Nb4P z;0FqIo(YwKy>YSn$Rzm*0n8Y6^<0xlHCyLz^vWp_t zli@IGOzF57(X6nYa&9(rW(9hLR(0H-3!20I#8+XIR^&vK?0QT-=$7ERU?VXBXBZ^n zM64(s*bmryfKheFY_K#3Z|RO<&IJ3{;QV^LYXKIXN8w;bm?y|izrda&t_yD{h1m-u zOmoXe>ES6AIIA3HMPT*-@81HZlZZo^nKI;e3cn@KJ;YUp!Bq0WD*YI>z4|I@8-Oj&&q;qn+UK4_+J<)?dgvYea}Fn#_l%tq5}KMc!ENJx%j5IP zQyP}syhz_ZE-qT+9BtPwx_L=y{10RC_!#~*vu&fR51vh8!Dp)Ih@12Jqey8x~d+nZkUMu{ye*gOGzhC(CJ$3l-Q-wdvy8fnQ zIP78T{k(f&cT4}e(u8PdX^L8w-rlo&gm9O+CuQ;W3#qdqp3;Pq=2VZx)6e(d_*Bo? zWF(R-{P_m5e?H}}bX+i}XB&U)huHx6(`@V0-fVylXPbZQt!#k&zij&_)7bz`tzIyY z2=F~A!Qaul7@-Fi^yj1T$+c5HrW()QYK;2pwr=(J7))EwLTHOQl8KrPTPH7`>M8a0 zY?~+7Wdqa}X!YdR;6i;9+C8}$E_HJK&3i>j&y$eT8AvQWz@?SALSdIl3sq#caArL}zJWBa5P?anw?pQW~E= zN4g6W9MqD(rf6>lvhg$O2GNSZ;2Hy9jlcfQAFazvcC2MJb@nj%`sU)(ystuq zZ&OHb`lu2jCzMb@+NeT=(?^vMIiZ9K()tu~oIa|A$O$D>kT$9i=JZh|L{2E7g0v-t zWVkS#K3W(n43iUuvBK~a?~Ilb<GmiB^b2mk&n2yU;%k4_btB&ibDj|8EsKWnL6_Y%7RN;iG%1WM3s_;Zr z1t!liXTTjRt1^|JoLIg&z4|kKj@meDks_7hwFUgONU1ss#Jqtl;If4ZR)+7E@>)hw zvvRz)Ox;qR6WWs%9ETLmgBx<>X`B*rL%<>J`PRlVYJies`GD0A?fDu`pUI*9u_uM*;ztQKMxo>vWJh7S5+&y0Aw74$@y zE-QBf2~O;{bwt88XdS) zIw+GWj#I}jEx$VHLsjQK9zFbcbo1lU*FQ`h{-0RyKcTjRYU~JA*c7I+FI1L!6j3K< zb5;^6%RY+8lM{xNgvv6IBKqWP)Jj5SSx6Cqa<*$F;rL{tywH;msR~c|$NA8Sk&}vr zpW@h*0#;#jc^l@q4Q<*1xMRW3{Agepaz8a^(0Y6NU08^Hd46?zc8i2jE(lL>MS zd6;~d{5i!?ozy1kD(Xh+cItD~m#9anr>SpIKcHTseopRlSq0&S*UbbxN8 z!Cy=@c9ckgv{D!@v}Y8qCa9QRL3*lWbuV0rP-u54O0Q72k6b;m$GYMP(~>#W$SmYQ z)0SbKHpi@#af0Nj6D8A`Yp8E6mZO@=&B}CNKWWZd! z$P6Ge*LBRC$*G^C_+h7?&+gSNV$`5pTBzb`S>Tbl!qunNmK6W zqe@7*lYiW`XwfeGlUm9{6rrRk_w-REq}<83w~UNz!9S^`JOqxmvQL$J`lu38?&R~W zt$s(F%j21;QcM0y5jc$h(nm9Qlc~&DCT51mr2{4R$;-0|>Bq7G^qJBW>iW#cIRB3&_jDqg zAZ^J8$nnw?x<4~0b}cEnPu`MENPjyUKo69rP!tqSx8y>(fJ)NjZ*os_0ZEq&<^t%QTrd|<%SSz17Z-SsF&;PhcrIR76#HsX ztomn@=_y{68mD+jnx}X;<(uHOsl9z?_BZ(`M&Dn;1^t^6qMimkeIomtd>;Z*Gh9fk z5~4Xk(aW>H$sa)=JqZ`|x)K6&ANaqW$sC?y?^EQ{bHVO+4b161gMLLKIPYZv%<5fF zK1%*4NU81A2I>-#Wm%5X7VL#S({W!Q57$3 zc;$TY8prG!=F;VmDmhVRwR1H&RX<)~h2@DUwT2qZL}I4E7hAAPky~?j)l@}_CAxw( z3;giC^e3m=f?XE)5%5DcSf~`whca=qoT?%Xzjbh8;^K=ZCJrk1^h-*NY_BdYm%o1h zs#WKnyK2>b<(_^?iNT2>*=JLyB3M$(4y^a(SKjZIaBs zl!@lEN#1<8xL~ra{4<%)r@v64HjB&4Qa)c-*9$_mQK*B1nS8Xjr>?HY%hZ_!Zyk=q z!>ON3nrU7jKR$H;owkH3hQYO8g5tI(@$**{6XlkzqFdAN~R<8b=Nate<72L}fw z!yvgke;phoH-X5Ke%ntjgWF5W4bn0f0B9NL#1eUnxt<=kvw(vp3Il$7)@ zvndQOkF#^nm9ESVIMSO_9`8Wm6_Ya$v^} zbR_#|GMG=nBXh@&^q;dSj59m7qzmN0=FOxon=<)uHbCmLk0u`~PT90cI*?6aKGzi1 zw{&(i>7wf(0P?slD)G6r)?5hPoeSnNPM(nqW-~VGqXilBZ%+4-cEscL&Q|abDdJMx046qJsX8*TrPrM=h(gQO3qI7d{H??U&y?e%PPN^D;2$o%gIIIVZPp-(#oQb$PaT_nTr9}rR0VU z=q?CM4#EXJzhOfrfRiK+E{qMvLUM2ry)Za9c}DhrCfuKg^zOky=6Vq6lYT#X!SA2k zU^E)@foCBmMd1RcILxN}ejn^&`8v$s|B=*^t+2v-FU;US0qgPJr6SZy>L6H|UjdtP zE6D4gps%ApP2WX-fqs~Nf_{$vH~K~T75bO-8}y&)ztL%iVf2ihsbeBcE0bgfnfc68 zW(~8cI*Gp0ta_oeTWh$e%mOL6l0CXm@~t&oRAzxhUsQ*J^jh0en7^pZ53*h5a(Rg? z9GEtTifms}#y?MvDq35EWPGA*-?iAY|Jm}^1hcH28|({3`x0{c#5C!-_qx>gFDUl+ z>FzoE{Vdf-MMF`s*Q1veTm0mN63VCLLuya+R)6X?#U7ux9;{^m+R}dRa-EoKQmfw0ubIX}%QdHpPCQxBH`)m9)tTC6rIght!_tOQH5vu*p}P z4?usd@W$kU3J)s2QSm|TMOCaW^?IqTy)-`k3;}w%^qtc9FqKVoF;DGEwYn;yV92^(;06m(-}(26pxg*>1cKuLz(N7w8{j>$CL>UC1r|7 z%G>m>a}yI&1k&Fxe@OO}r>W&rORM(X@-NV%Q%p@1&y5tv(r--hBDrRYhf}^e<-?g5 zTU__z7=0Zcj_{Yh9WJDxgi4|~2R)3(ApE7@gbTS&36(@~4*CW>@Zc}~HMo!sN~k1? zbCjO*+X&u6cM?|+56dU;;nSFCWJ2D`S`$7^9Uq+zoAtrx4Y-T2b8rda1L)y2_E5Z2 zb~*;WW3fkLIED<4c}XSVsCGE#1rCUJ48Z{|BABJ^vP)$<90GuS&d-6<^s%Qh`Rw;p zQZ5{P=-~t1Wz7Q)sFznj;|rA6hVW8oQC<&?Pg=%~CgF^DTml^Zox~wfpzw+LaGZ?1 zqZiJJ$H&OyLuue5$|2buxSWK2*Mf_*csDqk;-aZ!0((>e|JaT~wTCNEbyS3&$(Y+R zr_V=di@~j;jlAq`g6-Uiy64 zAOtACwVrVyX3^S9eCFj^Z(_64#fI#B4@KG=XzGtgHim-DM>cLeGO};uku~$@uQ{@D z-w2L32SXc=q{mH`l@^XqoI;aiVyoUtt=fBiLNKh@yJE#&!DO@UyngTA6$q`^yZ8E? zR+~w{=_?FE{D!^hu$A{CIMAIJqv$4FBL4Ys2K+0f*z8_v&Y8U(n$T{tjW<1N2(8f> ztQrSH+Lkt0oNa7e2cBt6bDcWg%yUh3q7iYPNS&LZbs}T6&6j@3L>+aHJKC>}-M-Xl z(8u=oxv%C(q}N#NlRX=cX#2l#Y5jpG_z#|pK z9VQq!;ISeU#ID8RI3;jw1%A^2_u+`96yQ8OhKF#4<8;7_IX)2sk28qLA4zrN^D}TJ z6Rx5B1CQpRxB<=|go*;1V($tt>|ivugC_<&7{QeVG!K{Q;D(S0VHlVW1l5L5fujg; zfSJVA!!Z`l+X0u>7*OyoJ~;}!MPNTi;4DyfcZB^w;Ch3P45%(ZB8Y2-{bNMCte{T; zZGpj_1dkit$q+cIZwC)H;LQW-0BR1kJfPbUb3Uf^U#Vdb57J=xPqswTGBGFUeZBY8X<>hFFVn30r67KW(uYVkwuY z-5xRn-stQC;u3ScJ}A4UV|O(3px0 zG(2i-5Wk{4i zFmH0xyw4>(V6bj82>LOO>$962Nh_B!I>t%uIwNninnf?q(M^bU=^p3X>rtD*;tr33 z2l3~6i~-Ws_ew|l({D=Y-^8yxwS%$fwShGujfIW-&!kP4wc96B^P|!EsR?`gWhVMe zf1I^wLTdtA&dGF~dS(1Kh^tAe4Ey4uw94ZI+EhNPIN~za3Q@OJap=e z$gAhIAE#h965o03-+%VzPx|Vg3?gCcwvmBTP8k^4wpBpEC+quu^5)MLUbQfO(n)c+ zE!Nw%S)ARLUX8m`I7!oM>2_MS+4MrE^qo5P0P9PlNVwgDys?-UdD_Dfl=MMzT|FE! z)?Uwq%-|5C%Vy9J`U1LUCcH!l&f;AN=ZpUb8UXJ(r=cV0hGK5dP$6&=k8K-faQ6gk z7==V|%n}8b8jAuIX-BeuC}8)Qf3YMCJviSj8lr&7b1^vA%?G=)fE7B#c+w0H<0%;W z@E&;A0YCJZw1E>BE{Yw^a1?fFO39-fMs&y_;z?@}^X@>h=|?o02M(Xl>kxW?3i}ipg5>#9ZJ<4!p;4n%^asc=Qp9`h+vS zu@_OM`O)-6yB;``NAVSRUi9g3T^s*&K-(S-G#Pqb_J-h*z9;!p5F4OV~`7;G5O&@Rr;NWZv!)c`uFq48H@@^)Ltygv_;Z;*PgusPSu6HBy7mP5z;ep`` z0LAQX-qS*vZ8i?w+$0Dl)Vx>U-msyez9-~rYGG^^p>54jjGWW9P;lCtcaFKJn^xT>vVX6)&E=8w*K@wShh;l=Hq;Lar@A#7 z2f4ks`^YDK=bJ-cYVN+|A{!kfdAFr?ognQVxh2{W`S%HvA@V5G#u$t=XYsvH)ERW< zaq2H2oyA4_^otK^gvL91(Q@M%J)0LaJxETTBwe`nn|`Sse)^A9a>$#cU*|MY8CL;9SpC1ZpWu zd@1lcg%hlK;uqX?%)4tB{rawB8&9`5J2r>SO**7Au4O3J!FgQTv5*5X*L!^|M|QSq z>zCLy2CIj>p*tk~3&Z`&nGSdI3!6g*C#$3FFX%=M?KVb?IUPwx2%}ee3@RO(4AqkdMqp3+LpH)4Qt(jiBkl#!Q?=1 zkmEc*POe;uezJhoN{2z@yHv|An0(F96YSNm(lTVMrQ0Dr4MiUun7l01J?i`w#~hpo zf2c1TOMeHlpmBjXl{$N92PtD_mk)+U8Gie4vlEZuJn9Yhwiaa zf!y07eG^%&;o#)oEFCRwWVjLLh}%$Si(C5NXDsOfc+!IAqA@vlL;AulCX}b`;1=HcCAOeU<*NEND?L1}#Q| zw-wN$!x*+0k=mihq(>D<|Cf?MB9-niB>>Zg-$7^y6WkeCq?f#PNf95CP9r^D_fHNoS5F8X+ zX=N-ZuOKvW*ejoy0#OS@E6~7#Sg^usqXW)Z1X5cE6c7A(2W6ornvBVE7IxbWvY1R3 zK}G~s4NE}L5H`mEDZ+vgkZak>#DdCLhp=Zt$OTd!d`WXuyMDO#-P43b12`&j{Qxa#&pj@@ofkRZ!%x zLW(tFESo_Q4g|admpz0c;J(qG0R0o*u|t)hu5Cz-fc<=8*pP7c1`+uumxcegZ{5cC z?653b-R5bwH8a-h7Be(ir}rCZx}`_YJ6T)PW@xPS#d^lL&8O|&Yato4*c|B531eYC zHpXjdqcH-0+xF_6J!djjGIg2|T(O^z(JPlUx*J#cUG5f+v%31j`ab{AhOs72(1^&{ z=GWH^o40kW5e%*0&@Gc5SlO^7q@8CrkC?)&U~4jKeZf_yH=2TtB5E3mO8e=yy=b(P z>QC}@OGs@x*3q_UrQTvgl%>r{CiPnXldT_b^URUHW%41H{nIu^w~J-9^V`eD{~2DZ zkv4(DLxkGE5aWH&Li1M5=!SS`p^f)8y8@=cP4<@gdchVF?62Cw<5zE|z{8!L^}As~ zx0!F{Xr470yuAi5nk#sDoxYw7aE4=Vd~D?xeza*v%pO|UvUtwG=w5Gsd&}10)gwKN zn)D+r{@rI@Y4bb1^FCfbTsIt=_uf**{oGa8YMu)0kT$p5>n~aH)NYDu*Rb?|^?iUssspQVaJCqu)<#K-Pt3qm5cf>fZig;^ebBzdx_l-6~k?yT>FSqZ@mF zJn8?ul|G~KylZr;9Tuvu_w`43-TpTT!dN8poGN=hxsW&nw$_`7&&Vg@e^>TqI>orc zY5^b>j3sPP!8RIf`vhN^WDG({7&#!2h#=YEAPlYu2m`X*B3n`#G0M2SkM=~YCR<2%x|6j#5&6_& z9!8}8ao8IB{U`(OM51GtfuIuOrE}o27{Zqw-mu{?{z+Ys0a4MnA@5D_&Si^vlU@5o zhTRw!*s*?|Kg1jBTUNQ~wo?q2Ya%9-^)yBwqUWIBY#STfhJU4q&3wXNch;g1sja`* zMfM5qh1}3$ZyVZoNMNZ?>ynhcRYO`tU3bV&fkzFBG-!O`&pPZTlCg)8#2=O`%4DjI zYbE_P(;9R(RPXR2{2X$MOo4s+chI0YDldoX5TE(2!Q=n#tG$p?tWuzy%^qKn(ujUD;gVj>9Y-~u}( zfWv%wvGX;S|hmB*w*}YzPlBJix#sFDt?iV2f1{_`yH<3MLR-A#4aqiQQn$#C-xb)RaSIjHUfM z1>-`}=66eg8rVE7x@BJxyou z;6WA)b$-gpciR!7*6Jex!R_&~TEBju*7`*|A_w)P6^Sv9G;wBuH#$xAEZ~9=e^_Ys z@n)-$F(DA~8QR3t&LkN^midUmb{x^@(%cXdC_!srkilRXAW1iG3e#E|on+A4Ja$^! zgP1{wom>>@Z=pk0p+Rr4QZb5-H~Hp)lhq!2xMLO9YYK3BAH|JmdmOBX5j^Gq*W9I{ zJkkq#CQNf&vj$d0Yn(2DM-0^xVT6#z3_e#~T?lcEfS72Q)iM^Z9Yn-k6cemB@+KWL z+em4&Jn!W-Zra?e(TL3n4-al?wYxNSLs)AQNTCjFd27~@gEn)Wt)A8(jU&vNbb@IB zOn%5^vT~hvbWdWe;o)ZfJ3ANgrR0KLJA}5Hjdtlmuj#Umk?X+gv^jd{*eOmstC#*h zbhpi*Lk!&qz^S)5{l361(%BadYu&xPag5?wi_WAI-OZ%cqu05-7WZw|W!iTB)-6s~ zr*Yen?W8n9+ex>%-i)jf-fRxmwQXZR+i5$Su^FrlixAj6D5}A1^$E>ZtIslKH*Yj* zEQmJxv^ytUBxScE@VSfhh&1%HnRz2;=16Oc!0R=f0sQ#Vz+{`u^K|+;m(ghB*=}EO zh|+Qq1U4QLI$WbcG{rHUJf|V821;w6Yo{G)k_u6*#i{XX>*u%!HEnJi9~Kd6)jG_) zCOph(1k!0?y*j6(#j{kW6PxTF7S_`471}91<7lMyTB9~dnkh5A%wPvQ6|FO2MIFp= z2A(rnjP$lKPcX)ttPNTVXR!p04i;{l)=iBY(7uHsTa(BOBcWA1mUFoxIygv-5i5Zk z-!&BtgmEhKUQDSl(TKzBC-}S1m?44CVdEl9Wq@M}AcDZEv4;vw9uXH4+ey0!w@``$ z(r6^{EtbM=k>q>KPbMK6OK>TXv(F*%4YG40+!2eZ8`v$n)rR&tnr)%XnpYn@w5E9h{cTq33c_q^sML?|Qjo50hLiHY zLi`V+&=jY50t*7t39iU-cVeQP(E?z~4t#43fl1j2Tn$T8V1)tU3G@%#qZANd1BoZP zu-z6YIaXYffEB<#m+}O-yye%(=O%Gstyddz1)r*C6mN4s@y* zh=X8QfhyTk@DW)ogAaCtK?ggo2N^A)<`+eBYy1?Y?++Neg{RGQm`2FUY53)4ZYc04 zXD3g7bGVzeOS_uSptV0lu%oS2?5p>h_nNvj+{$)dYZUYXOv2W6P+`)bO;K?0+9h_n zg%229>|4>xM=#krJgRr1ue4dc%qb82>&c<|lNRiE1oex*z-!GWhn8y7K4)2;{?mlf zJ32y9l+YRjDn;6j#t`!Lajl|t6BR&uS673;Vb$+ zo^rW;CjLTKWD_FGG!N!d+L-vUWxQugy)hOvwlYiaHm%h1)Q!4&rk=Bk;|V>hX}X%P zcZlh$4Q{hmScHJodizXq4X1+%P0a{RCiEtf)H@TRH(+npu+k0U_;pvE}@mhmBILD(W zm*}MbLra3=ly0kKHHr2o>QCNHzSybp*6s1KG)#N(`@K5Pn#p$apvia+LFfwTmzl5= zF7O-?AR**DZFmIqr$}TH81f>_0I=MbRxxT0{Tp&?aM}K)8aY;o>OY(Jwk zsd*lT7Zf*v>rt|#k18SR8l?#eRDW1aQwYAKE$!g7Jw=RwANvy6=UY<<=UVzit!2{7 zN&`y!sk%m@I;GiF^&A0uY<~QUFq4h_%FdD7yP24^KZ@^Hr>3j22cEbd6G6&5X^8wXJ1j);1caYQz*{FyEYVI-`uc zimjRHsGHG9o2r4ej4wQ{)M(5&u^4FT3}{R(eOg`1E7RQCfKXMxYszpq!!;t#tjlAFSEzHotz~ptO~NUqlP6Ff zQ>$YRwCSq2dMTa!pye^OCR9P|RRLd4CqE+cSaprekAbRsPMubsFnO$ys#HfSOC;~= zfKbJ-SM7UsTAAS+CA6}zC6#DmVV+v#^y(l}nTyO6NHyaQ*5DOgUXkU;;dFrvZvpE- zAp}k&cPadi8uaqiw+2q52F4s=JT9K2hJ3TEf0O4aoQJu%Sb3eYS+hv*i~Dwb}<@BQ(20jb?st9un zEa}IK7iy5HOl@Zhq#ChjR(Mt+#Abu4s^L{$(#_L{6NYIs!@U~$RUy(J53VVe5Q?FemkK^8X`x!^=PBo`<9ZInvo1jpALKl( z8YJ@=TB^@iM@w^{sZJ}NpL2aECU_(pNQ^?6Epobrc)BGtm<1oGbFl}hr^$xCPX zQ8pv_B!@1!KyI-}HG&Gv!Oc4FEyS(j@ND6h8uaq8Jx+Wp2V_2_8d3NJ@ZUlxR^r98 zhnv-D=(CNj<$SnG{GB!aTL|UCa3zQr<~d%eJdeHAK|h~=*0H_3BWlBc!xZw+0pep| zFS!Oz`ze}nD2AlEL{!YB@_7p1t<+N|c5LJ+_=%U36lR$3lH;_v%us%)1nKGQF@?QI zeNNGwrh?ndEHvdvTt-cDD{d5+0xz7Q>`)0Bg}6B#g{U1ec`i6J8c+_SJXV!4x^igE zSZ=5eTKN$^-RP|ya%wh^8S%4n5SFJ@gLuawGt>&r6N{5-kUd^rRSwefl$tOX@4;7} z58nbiho{xqYlV2F{IieOd7W!2ih9B@y}Vnh!TsZu7b-!w7|-+6q`Lf5Ybv!j$!nO9~2Q#itpwu@-7b&tzzRzlq|H^qd ztZSFn(2LnreveP7oPziF;D7XD*v6CFDDg#kj}PqTk*>(?`?=&Fmr*~X_W$GexjjBb zWrM_DJgN{BTU;vaB2mhlTu*%w_7FATtGxccs4Q52uU1+irj(UT<~F*heFOa@yE6c< z!7uq1?Dd)MYg2xi`czKPJzoi_)q#9p*`07msSL=Zu-+(FA7xJf?DvUGF(-r}TUevQ zFnPUF1@v5DkK!FXD)n5St%<~B`nj-Q)awg#xCQl9_6z_l-KU7mVVKT&F* z&ViC5t7r$hycD*;oA8FU!Uo-+%|mt+z#ryui`sLX`+jO|9h$GSxT^jtZzrOs=t7ki z!`h>g_A2`iU`>7{x?DNEe9RYOW8r&heM?@gw7$mv{&8tnDwH#=j4hS^&k+G7GYmhx z_a_Grybp5rX%F+Df^LPhM;Yrijr1u-cb@)DHKy}*DW*HhIId{7Q5(gDJ+0QeWg|CV z$8tPY>92fcp`S|WjxtUw*0`{C)6sXe+D|bur)tNPv%rld|Rcn1!{XIP#s_lQUMXA6;S+iY46{>+k zr93kkw`$N)OPgYRD>O)z?B+m~Rx*&)mMC$cHbt zsn@rZeonhLXgbU(9D`~UrVKmOF06n51LA*R%_i9)S|j}PDv+JTKs{^ zZPWE_Rn$NY4%5?56*)i!8nP{4g?{Gt2vw$sd2OSxmBrzyrP{*0YPg{Wof`3FdN|dJ zKVZ*SftSK>V2@BC<*Ed|!j@OcbG&pz4SH&6RneE(;X`T&Sb_c*LTEb4q%iLklD*nE zqT^Yf^j>SZo~u^fGWl7R{ukTssviaU+AI28RoZN>6_Z4^IcjzY)#l)JU?uom6aB9R zOY^PEkK!8j)m%%{Ev3Rll>~1}`d^4i)rDu$w`#4=r`6Wu<#4E#pn(jgE<@*dKsAt< z4JtM@e$1G5<#6V`m$NvNGh8WRbxtC!4vD7a0mlQe;&*2Yzto^NQ=F>;jg~6QFH}WXQlzF)Bc)unOZopnnYJs+nLR! zr2W{*<;T~&pAE;LvWSh81u)F5ZplM<7I{DppjBx0)k)&=+Tq#Z$AyqC z3|E4BVV+s!AXWB2L7!E#Zfpv?uc9w<{Z{2bfHlMw`=rJ_M}<(XrY9=pIk9wHZH%a; z%}{pA!9T|tXJ3e#kxWqu+S84P!uQlVoR+x3Z!xzQq9PdTezU)p0TaEuw{j~ zTO6L6BNmoXEp%$62UWl+CtIiu`f`BHSe__sZ84N8>HV`0y%ULV<;D{g)>aPB1iGr4DNNt(I05f2x9ZTHd>9M4wdn3>JusSLzg{S|%G@`JaixO4&A#M;2}ky*>1Swo*$m!4V6o$+;$S!0!% z56EXoV6@zmSXO(k9>BvwJsMS>1#5H;Xb$pI4$6K%l@o zmh2br0hWHx#=QJq3p4b|%%3y{_s_sj4#*euuSHQgjeM&-t>S}{0&=B85uXI!QSAG* z8T{p}C(a@+BQ7VduH2U>luX1zTml?tCsOdUhr|Q|@7OVL-3spLzz23b1s<^D$bpv* z$3iAX45Y&55at_Q;C&c;&qZwT0DQNCztt2QOhPI+Ma&i%%NB`?M(`a3#jAAbvEJoQ z(;|~|xvSfGhO^s6f7;g9ZwuFRyg>*E;Qw({+PQ4a@CAe5ZIn(wPa}>TykL0EvO715 z;>Pr4g&FaS^pCRTWJ^6pcxf;F)_|8T?KpOktF6uDxhS4uzQJsuu4T)FY4HMgC5=9#CynadE7UpUr>-*(}0m^;?2d5>KKeZd!vzYby% zv6rTmQwE>z;*ASTm2Z44Q_HK?H5Q0y`L@L3l_LEv? z*bJoIhCQ1@|HAWR7dXTXaiLV$A@{WG3EB>h5WyEObT&j)x+r~lAmns53ObX~<1yMz zjZSAMur+xl=6f1OEBLKlET?PMITTnK|5yb84lYp)V44&20$!x&wOcNd1D2V@pb~fDA;N!~Puh_`}W7v(SoC%$QSB%$L;B zqR2m^NOTYji3wsicqP4oI7)mAaN~P3!H!Cu&4uhTeNKjAsf1mfJgebD5{NGT+2MVW zBP$K|`brN_l0$Yi4lMm#wU3`sOZ`^BI$|HyuMq?Ev!%GALK@}hUV8gc;xyp)1CeNLxOy!4V|mJ)<1BOC8saY;5aIzT~#TJYT2_WT|$V4&5gpwf+Xw57T7))8f6*9)DL`o(wAR~m@ zKsdk>LpdL*h*~NPrWU07_Sjt7%|sfbE|Z|;_PB-^n`4N6t`xtjrbRo7OOi|fp&F{G zBj5~C&oDaLvd$?m|Btx$0FbP#(uVuZH;1aa_g1d%s;;U|(>>GORW&&<8JHQEAtS*7 z$w`8MC>W8Ti+~CuN-$?!U0pGOVO`T2)?L%Ce6G4dRLrgnU4GA7J)vi&8`1st|7p6X z>V`L-^WJlw_c`ZY&@QYDp8S_X*VAeHHb*05RoaUScYISF~4H8yKKyJuc8oo{*DC+Auar}1Xx#zIoKVBM(& z@8~H{OnQ&f#xoYy!%Udoqi^12vAc9te`E79niu6^5{b;AqC3yh`1bvm7xc}K&nur- z&bJ1iKHsI?57%pPr1;l*|2z{Bo;hirN9b1$Us9)DK0STGnTlaC!D(}%CAPxLN) z`Sj=J5mUPD@cL#p&T}FE*v|aYC-21{m~6ut3=HLT22k$lDiUu(5zALmj{wWbz)p8xsc{y!7&U(Y9U^B(+Ta!gT7Y|7rS z6z=jN4&FQh|CSq;?!DnZ=M&(WXD;i1sdT^kaN+*i;fLDU?D6Xh?Rfo@KmU{Rep9^u zl-}iJWFA3&#uBgPJT6J+ZDXNk}Be3904&*6E- z0uSdX+J9%?LW}i+C;ogz=$o!)V*Kv=_x~%!c=T0+r5BZI&&Wc4Pw&!K&3s}$ogf#^ zcl6KDlHrO=++g$Z|?8=Xx~@*{=M(_Bp}1&2(p#HxIY+QpWcs? zE+~J0ft7Tqv9qwyF9_bvV|>jEBP{ehBZpdQ3mRMtHf~{qYu3^tvv$}2OzmdoHMst6 z^HQ16y9^BssmTaKRG`EAli@$Vt-s`#)3Tc`e9!4?b|+b?mM4>C2w~-c>9vEr{e$t)9o&{L0b- zE`I8$dDZyS*IoC?`6}ps?wKE*U!$K|w~n8+Zrxw1%f}wB%JUpb&OiVBr_?;k#YVID zv!}Sh9UkzQ5Ab2Wh%e>q`DVV2@8-{YnpLHycU_ttU~;Rpde3M7 zGVH0sj+h73FOgaB7Z69H8l+W|Q3l(tnWTrmbyky>R=_Q&qGL4Um~Knd~$a8q;W2mA9-A^PYf zI*qNzj!dQ+opv&>V+)lfAx8DaksqJ;Bn zNW&)(QQ*S0$&Ny+aBmx()uW;XsevnIHx`?54Qv^3FB&up>e2JOHoaCvDexbB%n+{e^Qt}XdK2d!O1CHgf`$n9oyV8 zVrcJVl-^sW<|*hl)Fv@%7+Ie{uT*Odq)WF3D$|6VVxCoJs#gm^Z7kHn2nn8=l)B6$ z)RMupZt59~@W@6#^?X3YbxZZOI@@d9AJ~}3-6OZ`Dc*7m|IsbgeGG{`QE~IQmA8`m z@Y(#Mhd%ti@zinbJx^5*+mL$!uAaTG`%OdAvkXDXiMo4|QCUa^G$lMsq~T#m5YBPYE}Yw({-J6vXcLE)z~5 zR3`68dtxGAifT^Q9oz1V4LZKFBM1sYrk8aX3HX#!d}XTp3)7%NP+}PwXQ;}KrPK;A zT7JH2B%a7gFUqD|PHh&JcsSP2t&Ekrj&F%ehR-d*jmRU^k*32!!b9dUpNBYM2uZkS z))VsXDSPH?4oeBn$*Fu)4sObf7}Ihk85**tpM@!W_DX6D%bByuP_#r!WfZgId!-=E z*{SrXB2<>~A)wr$qSz3o7@Rq+h=|v7*S29O(#ZO<0^xu)*%PRY+_nElig} zi?ZE!m<>6)(OFknPGZYXGGg-7w9C5puA;)}CpQ^sDXnmc;x3+a>6t(5+H8_vxjYnv z+03;<&V?uHLNKbR5vH4D8}GOxGZ<#^dDmnnB5vhyAvD0-1$NNE~d%CViYOv4dM z@;n8l1NQx2SL6EoJ9!RGYdfmrU%uf~bY-Mg|kjWawc4!X-!wftCgK}4H=OkTK zbjS_O;#gRtdBY2Q5~M}WG^8&r=E|^hV#TF`M7g1=Nf=KT0%g^=e`q<+*=Raf(hADY zm7%-HF}PKi(x5|BE_02wS)<_=s1`*LmYs~K+JWu5Q78?U^A8b@!Xm|FVsJCRqPjgK zkGyQflqG`xO%+rdt-9tkjXOk{R4aNE=n#R^_EV0uB43eDFE`- zeonz>3Z~d%*JT3o7k`Fj%#1^G%nOz@u1=jO#kTFa7s(V2Ut@kXe2d9aS?b6%uGNY4(J=7vYf z53ehQwCd;GXv8izX|d|ngykyOQdHFCB4IjHJWW^2l`JY8%LioE8E>4qEuE~hiBt5^ zFY74THiDsqZDT^DSeY~Nwb0|li6&_?s+?R(t&~L;9I>8Fj)?JK)o`8{qVk#s)TTeb zlijv@+$<2Yv~K8~8P07h;L2faG?4wmPDma@R}%ho*w0PdbcAmhj$x%5GY_8`+2p&n z3|K1Fy&e|e87y0us{7X4%BMAwiD%zUrummk^vv$`Eo98f38PX!`oyPpFR7MYCuMbl za*&i=L5z-NdLpREygz1UO|os0=i;zpn{>iX`Bsaj88bQxD?`;cEPs*JZ$I@K^7Wgk z9UI&*0#_up;v_kp-a}~jErkI>$f-ea>ZyKVQ9Qk^eR=mAOt#+A{TFV9DN+s5TFM(N zCVzeHW$Ero%qp-PL?shoL8_ZBSANm(ZOdQk*(v3Hae8x-%NI+7lF{HLa&X0>SN0!U z9xfg292*tHSZOQGWlC12l3v72x8CZv3pJ%!nK(9wQs>y_N+wv2$>lkACpXd&amdNb z9BYkGg0C|m+m>ypjN=$k`{8(CBnhYNCHeGenc+f2U91dFK!q2JTax;5hD)eB-pY>@ z495&oY(rEV?v`#~^jTb)DM{=kTAN->k2RgNwYo%|H2=6T8A>i&5(^8rW9l%AA1P(z zkTi3YF(_<`70Y5K_lbW@VCTDEj|a%T%ciY}6k10d(JGM0nqD?|Yc6-|o^SX589e0V z#>C@_EXoiPbZ<1NB^>GqlbZb|mU|`z&qJ|~a+zmjX@%5{fZ2ptv0;Y%vzB7r3bC^J z?jOtaO^mQ~_sJw8em5n=ltJBuor^Z%di)8bRVrECs<6ssQ-;p$VQeJz^?m&y|3vfd z*7u!=cX_-J%)3|i-QM$39s(oeJAIG!{iN?V1P?%R3OSctNG>B+k?Y89GT5nTzVC~j=qBa6}^+bfxeA?mVSl) z6a5bTIsF~&GQ|RxVOiGChS?(4Vk_7hwh4N95_=^)n%A)V*xT59*<)DYm-BUe3*W_0 z;HUDx;;-lT^SASN^AGTc`6v13`B(Wr@^A6~!~cu_lK%mZmXyegnpiKkixb4DVz;miJR`E{pA@K?EsQ8k2O#DzhfptG4b8?An$z^hf+$B$v&yvrT&y&~5 z7s;2&+vQ{O$MScoPdO^32GugPUTsk)sngV1>LPW$x>4PsUZ);V?^PdAf1^IG9#NlF zkEtK3|4@&sC)BUi@6{glM1sPU<%@zHuV7W|q>??P+er1R(bX+4V;eiN8n+H-*2R%5jomP3ia zMAzm&%z37wDR^p)7VLc)wI>Mvs7_PCx`ZRtf|aQn3GBWKfoBxK!iHy&8HHP+{TvvA zJ?9Cgse*q1|1X|`?J${W7p2imw52!!2uNv@wkcJD!*EDojw^hEv8_*`GB_3RGEj3G z?h`(!W(!Sjx0={qY@)1MwM2ApR1{CbPk{|wg|E}I&tcSKU|{7Y`mloCs>@AalA|r1 zOwvHJv}XX*9EL2u))KU=7VGXLaWg@~(1}{rCvqC4z?JG<2UEVCpkbsFl?i%*tF^n+ zj^I_o8V7x)cNUFpcc#(A4tzV<<#2vb8U|6do8T$+{75(zXapRZ$<8#K%@#~(^cjwA zBLR~Y&IG>WUR2gsMMKcKMiqy&uNY&fTAIZ=HCaNXx_P>{5?8^2#97?f=rr5Y6I4~S zOWEi&(w#~8U+@i3C+>rT*{Gq5iNYxLe9Lyag~>u;nFKC-V^a5D504g*IGNB6C`#;2 z4}5V{C3VyFagaQ9o$YwCjoHWij}pv=#Br32slg~EC`F4Zh_zFgRq#8T3e%}CRuZ+u zs0)R_)9=CSxB=bkIrhn{h_^6$HMlC6s~++m!Lvfc^d)*?Nbhp(yX*E(5Z!H@g!iQj zPvBHxJ|RIqslpw`z>sLx=hMU5>cI66d;Te!p?lDqu1=!|9>BeC>B67`Q3B7Wg%UA1 zT6EERs6n$=zLuD{M1W^#mC-*?i3rqH)CDQPHLKuWwl%OZo#38&0`bOZ;ug5+aCI?< zC<%?hC^s9pxFsX4jrh?XdIzNEaXqTChF)kfL}@E2V?VHdvW~rvNY~QpUkd3_)is3=e;-n|yQG!WG&@OZi zjc+6n9DS=6qW!XgWdT=dIaLW#W2}T9@MZ2>ayUEkIx()5Y5`*SrNYK<|vZ=MD z(Zt#k15d%x4(irDz*0tfYC4%r##88Kvx8gPL{-r?Ekn~<$@IW#$V2xWW75+KRM3fM zl?B>W0TR+CRbXg(M5JEdw4&pGpfZz~W-M&DJBHN46UTRqYgJ`B7=MTcBm-DRCyoGU zG_cr0jL}*>alL`pb!sWseMLb~_C!XQK$KV^V7n0oUV~&v>K(OCN`X$cYkc*@^d# zA@0Eg4M^Z9bXK)gPiOTwhtSH^qz}Lh7R&|$3UuMKD=Nf6KS7|7`gzstM9>)EKM)Ze zJwR|8YqY*mf9!pQPA!Do=)ypgO>k$T@6^A0KkMVVhY@DEfz=5Q5>z^S(Hf$lC7pIh z;QUAD7 ztECvTgO;q(&ksyKlml|AKWkwEI*GAijiyiL1$)w?rE|`yHe~+UMn!O{q_PG*X?qr94yEQ6%g3@UedW>0m|Ny$Gv%*LT_&76P%ZuJXGilRZj=wF_7 zp9kiS`i5y+ZYFKgm`RPsz}>7V5#;<5<4uyT2-)?7 zNNib;@ZY<+$vw|ylsb+HK}g_fGm}h=i^{NLJ`zWUZI4=M%%EvoG4Lk)6HGEg{v@3? zZF_mzF%3KFe%c}DnxSQ+taqc455qD0k(D-rrYS8UN3N7*NwdXN zb_o_J8S%g*7yu%z@&$IvG^*6}2^XpEPcu~7l?$xUGOLsrK=4Egw~}mW->m}jO7BT1 zQ_A)t3V6$e7tNTRP!6qdBW7hSVlm#`1BB5srOI+zF-^lq$920_sMSFzXhwG?Z=|XN zx-Yei?#sX;s(4u{=GQaXA>HXD)omN*h@t?GA}OF4ai-w>cmZ$inTZIYv$ z?zbTQmYK?AFatjTuq4@=BfzqFDwvju35k*jGe8D0Puv`zxZto!lmIGk)N@>ti6uNw z{w$rghyjP%pgpmWCCEkA({ho5SbS!`_%u^SipmezDdDVfga>#1g=?5AY)DE(L=3JNyQZ^TPjuhT>iTve%jBXZ(8hQy(gy(7C8JxTibp%)= zw#)9dzFj#2%U>=HAkFZh^K_bR-%g(|eJbyDO}<2Sf7n}rcv_GL`EWoCxx}!rE~KQy zVwJY+h)I5w;CittHoawbdpR)Z+Ote*3%$80&CR*#_2O-}6>s)d(b73qf7&O3SsegcD-s zY$jF63@q9$srgq`ltl-QvjJDwN7|s|9EOQ~( z;0%4m6^DSnE4ttCxZgd3NJ6$sOs?ZzmkG&vQg(msj!@kV5q>d;zF9)|?cM0A;SKZy z#HPCISv?j(P=29{WjFm|Dl*JH49Pt?eg65W!Th#u`90&$1j^m8|9bIIamebQaM@^% z=B$+k>m;%^L_D42izuC^{n>^W@KJLbN@Q5WRuY@itXL^Bk)c6k`pn7I@!;`@bPZ)# zctjB^O$yDlft3TRybAKz7kGY}Gv_QU)CP;i(V=@)9ILR9!Dc{MP8AbgQnm$b&~!K% z=E6y*uoJW>7c9YgM_T!T*jGa<;{Jg|EI!J{PKjp*K85Mlv>e-}sD`I43y(w3JF7*i zn=FAH3L|a09_4@sljX!PUx8@OnHM|bXZWWcUG!D@CC52omWn2z$iyLEa-1!WmP!$l zZi|fp)q|$@pTle=suq=13h=rEc(1$6&ilf3qOxhpQ~p+plwCD~@a?I>6#s#{w*JAa zn^-nlX!Ddf!cfAKSe{tQGWa=G8qajB0PIvy2D&4QfXMg2J{4Z*<~N6N3?-rO7!j7a zreBbHw`NCY2F|4>bL4|~f}PKNcA}FqBW8C0oi!MVO?D{<0C{Q*Y*%2JyCk)G!nmmW z-HZ?yhg6vcIA;wDn;f+&Q{6iXfRUR;8CQS{ppE3&hpnK4O6i0;FNjfca7y@q|ppyn40?Bf~vhU44ZHfz4BPsa*R zH~QL~Iaqgdxwu}=Gl2Pnd7I5FX2MN?eNUX)bjky3tVESZm?^V<=+B&N(V_4pC$ogH zis7wP-m0q4=_uJEDDxd-sF3kPE-J1V62anUZ&|X#A&LhwoA5}O@+a>wvk<>RrYf8^ zM8Nz2fY$v7c~=q?J)mYP1BRva?^n7%G7e%SmBYKvYmFPJ;RnK1c8<@!QGI!f|=9%ZwEgyyq^n}6g z{vP6@toh{S&RKcddIU@X2-v3rSzM)Mu6vJ`!axflfenPVT`jCk_s3dT3zzJb-8d$f z%n|C}&kFjPkoi|b_CIn!6}ly@9BT?Af_~UHwAS3G^@l8C<(@Wm-vsSCCfcWK2Wuhr z{P-LVJ;jYi>%ZnpQ-$02snx6+DGFSV!XrT5r_m*ew62}#dguFc>SCr4&i^jwOV%|jM^9yr-XhK6_~@ZQ4# zX2t&JMYp4$ApCKts+n#_SanQz7M2>excyBY*f9KE$32od3LCEUKfLZM4Q6h~V&AFEjrIPwgT_+j5E;WB_~3X*p^$K=0)05f+FV5z5F*f6y__ZOo)U z#pUG1E016=zD6E(=mpmiGi%swnH7Qq?4>O^P0jOhSJ$3*gJ;MV7P%7ELiaky5auqE z8{LUHIa{N(!#~rj!v#4)f-^RX^@y7M55r_Fk z?9zO$?^}J}gLkowoJO8Yt|ix#|0F-719XHgr<>@J^jP{FdOp2`K9Al?Z=-i%_vHcl zR{BBuF>JvHY#Ce4Hn5%SO!i{-diG`ZHTF~XOZI!VhY#}A*lF2;ot9JhIs5{C3BR7d zoZrk}%OBz&;veDP;NRun=l{Wfg1wffM4ynthR9UJqNmxd0G>G6flUUe3wQw##WrxT zKZ{qUJ9Nhq(1Uirg zU}GSRv;)+?he0-5!0&34&1f2}12WQT0(wMSfhIPZxD9+alw0#i72r}wU=V<>0iXkG z2~;v&a4*#XpmPio@J3Xx@jYCjkxJcYgi@hOjj@49)QLf?n@0QE8sh>wi)QUb5>cvb z#^|(0@IgAFNOhsG0Rh}B2Dt=9>JDma-6Aa{T{TYB6;a>Aqm zY(yIXuO-tAAt#f-vvo7{sTx{}i#7g(kpPDd!wNX8hZ!fah6;5Xf#a!Z)Pp%{prrut zbk|V}`hyx8Xj88t!2J?}5yS-=UDh~zgvr-UM*Z;wIBR-;BLV@erQtkHQN#Si8lA)B z^%?|_8^k1ye52wfK5Hxx5G+1HIA%w+hhu?4*1L!R37-`zAoPes#;9iW07BwW0=C5< zL9*6Rz~if$Y6Ub^_XO?2$kZl*yiQ3yr?YK{69KANm2@ybJ%l~UUUH-XGz7V28z z;v@v!3(l9OuIcHAoS;6T!C3r{-5PuacB=2+$+5 zIA__Gb;R=V@fG}@X9|w~gTDOW0=jQaLQvo?@Ci+P8ks=B1oCnLuy7WK3bY?1^1XB! zP#PEfiH|a77HpCZ`+;H-I|B9gJ`Dnu3fB*?{?X8|&))Y z@U&mFiy2AYxw`?g3?w%x17%Y$ERyO-VTqG9T{a$8&Tbty`Tay#OnPQT3Nm4PjIO)& zR3_9F+YBF#Y=Cg7!`a9GA3SRRRyN_zpGlQD5`e(ta_Vij&6JG+?%YKAotceSTMtp6j2wIRjyDg} z;dRSicfD!nmwxE_W2@IQ3L@4eC!Z*CgJjeK%cbDS?o4HUCts)Z(o>SKxr`j&blqEr z5%-mc$2aU~Kq)PCtrBXnM03?%qDiDNI{woM&Xc%8hrLH<>ZQg3+(8o=*SROaMn(g`miXfm3JLpyM>g zm^p3$pfL$;IFzdkhJlAj$Ph_)-|t8x0IEi^OAf<`-hUE2?S4WM0OBHd<3|EdHbT9u!OI1^xPrM{UEIUz@mON3h4eSlLgm+jFMHVfC&S)f7y>x9|$lB+$^Y|GUHNeL%|vJk_fm|mVe&LMTBi=o;&lion{hX>namqX%164 z2M@B)D*+P2TF8Kk0XP@j;}P~XutZ$G?VhLZ$W**A9SytT#58~4JtZq}Gta(q`DGg_ zm-$=lpnU^kH3nV3*eC$fZIVsyn9Ms^Ycuug;?t#-Tg0iiq5{%1;oPm*^js`nGhc{< zrGziL39L+D!pg;;~m355;q-UC$ z<$xUnSRG(k#9nS$8{NyyAU~yCJ6hurlVxHBGNy$xRI~ z4cqehUkI!ZUN*97{OpZRoZEHPQA1V@nA}71j!(Sp6tZcfI13;Vsrr^_iq6g=7uIn1 zo92eq(PB%HFQ@w5xM&4SfcOHhr8yw4p`Rxk=wf%-vqnJF%z+{7OZVFT{?)?2Yn2ry zXe=I4r7YM@se~G-+OlPGGx5%vup{mc8)jOBH(^)i+07Bi1Sg+ocXhw%#Km!Yof>T@ z+gZ&sV{Zi7KL}E#Y44Q8JipKwKkn$#fD`w#zhT+JcxvKPKtR%j8-n=gHE5XBjR9?{irl_S1 zLp$3Kb~{2@TL3pmN~s?~52X^8g@-tJ%SQJqZzx)XEmk|Ql*7A03HFQSg9Djz8^}yI zH(y4*ZwdV3t$nBUoe$6WI`9`i*Y~}?UqCZbB!N*oMBYH&Mjj#`0#otd$bXUFlbIe* zu|=2BW9S+1k6%yUML$Y^On(DLrDSPVhF`pmos8J3%h>ho7WQ%WY4&%Bo7x8U;j{RK z{KfnZ{*In6{3!nl|0n(({sVyieNg3!ST0tJBgB#7SaG~K8N9=Dz&pHFyimMU+%E0{ z^YC5b{o=#o&XBd0eH;dV1Z!<&k(H>(4x(oLb#x6?@IPA3S>lO4qFrIQ7TWc~*Xdq73w#Nf+i(+gm{O0`sJSr- z?rlUJxNg7*;3mK&Y19@+@NGbqQE*q`N5KujP{5akMW3ERe>+tWXcU994yO!1J?0-^ zhFa7He@8nunqJc5(#U3nq3A&XJ)djVm6xF5XlIn@B0M_lxX(tK5>S?KrLIf&3*J$W z@TR?VeFSVp%`O6esrMb;v?fL(a7gp!GPn`f^n7YeO%)A+^UQjVe6OL}H`G2EI;4As zKEgYnCAQ#93*m81Fx}85l#K(zz*O+%{q$k*tJ`) zD+fgkp-m`3$L?uYa(bLLL8Fna1mmKKQE>BcDL!bQ5G}z|x5u_azf{7S;6vdO-Cuo0 zoM`L>AOIrxk~9j`*obOK-~dy4c=P}^G&r&vo@vjwBm1~zq^bwEH}F_*B?@avIOn>| z=|)F^Z6QB<5as4|n1i1_OUI@&vA^23aug7)R~% z>$!#~pvMvBRTrj@G=SFV;ln^TWV6*lBRdj*G!`P@^MK$~z#!vva@rO~!XAJEzy1NNBKtAHMaMy;u- zP?;V|rB@`4y=W=RKpkSG5j@ORtvaeR!=Y?U4&(p?FWvL$HtVetH7sPB!#AJ%-q;zh zJtBKdyn1bXRxUXvm)j}qXX?E_va@%`S-rb;Io}ee(n`#Wb(T(NvEAAKz=|ly6RZ1C zfiM8Ki7j#F!7k$9uGCURY)k>7afD2j;A3!w=ea>H$F`aYXH%qoJmNhiyONPx6v8Ve z%yfD>ifOr?BZGtF4y$I^0UnrE1#tC-lnYvdkvLKC;;3ZId~?7CDMDT-jnUmP zq9>>+6Yzr4hOGMF4`l-{?+{n|D4EF$lPPWpk|||8grkf!vUr%o=b*}PJ>gY6OW__c zuxKX4R*8;4vlGyyGM1o>=H4%ugRn{QkMOs3=^4=Z%$6myfs|o%2avT zK$`lXWF=#{6#V_LjH=ztyVBUUgEMe_Y0T?SnVG^sMHLpWga3YJ=Io6xU+FJupIVQz zLNQ%&mUzc*I$;jjig$ z78uSj?1*_y0doUE=Vpo(jpZuk3haa^$EucwD*-J8-HnBk-dF0ghvGsI83cmPak265ah~GKM5j#j4Bp~ww5b9izt}^ki`sPq-{b|eh$Pnk_uD7ums)Ba>(() zaKCbVW2ZTDe^d37KPYY#;b(T=mbJ~$fF~3Fs+|v0ldOWBSa(U9^6q7!wb)nx9&i9JHCHr?1OGaYjQVqM9Evw_T6St#WzBl5I&i)okGER z1N4=#9c^1;Gaj6qb1gtlE@1R@dyY9ee44uYQsh?<-A~5;2)G4(pL3 zun=&m>|YX+frg|NKTzp@KE)7jo3a2%4pXBe=-QDygEW{*Z3vgHr(!%7V2cR%C|Zo6 zi*U819V0}UN~bV9dTqY@Nq`Ikz#bI&RpTqeB0Y3{*zG7)a}bROM~M+Qlb7kZOkvx3 z0pBqewm)>`M5dlOVf_4p>OSQl@RQPJep|V<&9g}7>}cjkaU7GooD14ZHWgmxtN;Va z@|MZ?=yRI6$*D~%uSMXTJ3{JWW3YL=byTu;X!kjtZRb_}$N4pPt=sVNiQGvioS#@K z6*=d#QF>DMs9j8@%jDEu>ZyxfxT9tjfqIzPB`4nbG26GioKqAWtXC0aeBqS>Gc@x~ zG+fzw+`!N(#AI7+?8q0tXY{09t6y_hG{8oWeq-^ww{msImtJtPKYsg3pxp^k!aUh# zKz&vRe(j};nThlz!{^CSQ5!To>=`@G{bTQ12V#t}imBoW_t8C1kcW5rPT8uxvT~sg zh;_|pU%7tcMTlM&n=ZU))h3VPNk(mFRre!oc-_lAtc4awpm^RJ8M$Ogsbv%EhMR~V zUuxdDn7%zJ*hRa0RdLBf#SJ&7heC2HT{Pt>pf12Sz&^9ajguVbmxL{M25uZ-6YaCw z{bVrv;A%E`_V{x0-uC;Km`Crt`uNMwUJP**-9M%qoqT7^Pf6F$;{?zyn@~3%}CS;55Qn3;hG6 zF!O|>HV|$}?xROfo+~aHCVy8dRw~oo7rDUF96T%po)etb*`3{gUA#HYw3e`Qfut=z zY3Ad$4?VCM$Vad(@W@{b2negi2S9ng9S;cu6&Y}Jt$ED>y&R?G0>I~h+ijS z*%AzXzYn@9xTg?nrGc*Q$qxC^yg0)GVU^^4R#kPM???`+qh-Svk032n#I{2$H{okJ zI8}N4@+GhKP5u(aY2X0;GSK_9k*-d$IDMTY5C^-k|p`gGv^(* zYu9o7OMl5*3Dj`CKAhZgGrfP&?ptr&y=Y4_mur%j;Yb!|p8WpdFCRGg-2+YV9FFQc z9z2H|o@S)>CykpOi>GdCZ)#n(q|>{d)(MU$k!=e}DKZ0c3BexAcnAalQw? zU!&Q#p>I2|v-A31-uK!+V`O_M%7U)|I54`JE1?sP944GSH+_LD|N2!Nf5wQ<#Pj6f z7fTip-_z&0xa&Q`SvV{|zw`8R{lh~N@p}hPhI0^R+3f4|ZR$G)?>jla@7lhb5p{jr zpD`nc%KmVqbFnD>3Se^P87J_Gk2G+^_HMo;`0O{JGjNE6%g4$iCF~Pk!Stbr{{3 z>i+NMjQi|evn7bL_NBHzB)7eu3q2DT^j+EaD)6e_`#+coj4M!(`7+rbn3IL|M2914 zdI6?s3Y-!wLI5WKPX3A6nrD^jE;LW~&6|h*(+eojv**b&|Bm@*@@ZGJxpR1M4*7fk zgi;-pEPk#^&7E4k)*YN5UeD=fyy0Ru-f{85y|enEzK=cgnGFxou>;8a?DAGWG_~lw zTDMOe^knLl@z9w(wAApBnckaS^l7rX&za{1H1n*3^S0;aXy=0m=V$-y+?hR~+jF$_ zw5LtLK38jJZkh8yBmX|<%Yj_$_Z_ChckWHCfie{M4J~oDsuwlBge?Lw$Ds zPwYFV?=rmo=H|ZF_q`K&a2K|_4w>ykXTN^P`9r^pp7jM_SsQLTKl%Y}-@gJMoD2QW zm4rW`;|J!x`|yF8JLvQ71F6jaI7bHV+n=)h(LXi)PpjewP56iRPT5c{H}s!#rtd)B z@%J4z_hb9=jNdkAiWi=It@8)x6W=%I&w=H5E#3@qSKr(FK7uSJU+Vj6-#>yW`@c8) zJ@dS0ii71k@8sk7fxO@v`krg^9RB^_N5rA4LLc^u{#4HIdDn%5|R&}pFke%f9?BG-{XI|BptfmYwNdXFYJ3j94ZRwIV;J* zLNUkrJ7jS>EbH~*Yt6y(cc^^recU`vYU_EW>mYmZ4f|6_&nB-7xi!ogCax88al#QY9MZJ&2>sEq6NaC%Z5Qre+@-=W_RlgU4k zrFmY7TyVX61o@Z0d_bu7d~`PJa&gXc@$YA|E8j9lC~MbUch`ZNx)0Bhzd4`h9DVZw zsgf6z$Cu2Jrt{~BrcQ^v=b|}s#9rS^gKQkODvtHi9$!7DoIN_}^`d-ubP~YDoL)b9cM7ASO*u~^|$PIQsI5+Pm zA0!_m-yn~XACt$)FUWtBE}-cYZPIg)73>=NI{Fc8C75i4EoVov?Q9o2i(Ss1kIY|p zu?N{h>|ypr_AT}p`!V}3_Oqvv_u8S^iuajcs+Xg9zX^skQ9VPg=U1tQ&UTeXVpOm! z5b*%ML#v?^Xr%R)a0o_>PEUf&v3Pc4-#rt9n+|HcrX}c|VKB@=1ORKjqtm&7$N_Ds z>c{|Wp@VRsx7mA1q#D>)-j}du8e7MD!@1X79U=j?gC<`f2!-ktCcPvix|U|OiLGmF zPWPx8nupL%$`qM3K+Mq9!AEQ$tfdJ)i>4)@5D-zSpyey@H=1w{zCToB& zfMOd>kb^L6psm!veb5nHtY>}~QpjR+zz~NpH4Hyh@w753e2Tp&in}NAQfJTpq z($tKH7!$8R^wDe;kP|Rzt!c~-Do49fX$dhih#Sxx0R0CfmLAIlLkr#nSRMF)PzhD- zOg3sUQvZM-gLb3JDG*T5hz{D(>5=*ybxn>zlXWWHNdE=j0ZDT~OwiK?R*=vW49W-E zQlVfP;3q-7`XzL;X^iyB)}tuxb@zk|~X3=vF) zYJk3hafSRfSvZ9g=%x-uO6yprNu519tuv%S2#^6q&oR;%fzE+efTE*w5TPxyDIpOE zS%UcB=2k=L3DOy(+UQLal$zO~5Oi(|XX5lezsAslU}r3q05Z zTd&@q3iy*tvMF_^m2WH+Bh4Xc0#HdK7`xvYVka$5IjI19Y5l`d1KVzXS&rSg+{=fb zSQ#LK$xQje$qx=8&|uX#2sVYPdt|hT+_HO`sp_>i*ZM0+B587L1(%So(lv72s>eAB zu7s)Eowizllzk)RkP&hRQDqYP3E@`)I0 zY+Jm20P=_M05-D+DV)yChnewmP{5n3)7YSPxOkARUfLgzSLv8_B0bMv{;lJZLb`Fz z^5rEOZ|^=F47_sSMK_NgN?(u@_RKjZHit;*?-579yMF+g8?5`^keg5R`#4#?IyQQJmN>kr09T6j=r|KK6Z>uVbqH^6y4K|45h@)HYP%()Gkf>elBk2 zks;EH&2rRv&hw3<*dz;9F5AqGP>Uy`J0?#`MnI`v!)z-@3&_l2nAoNf-po&pu)sJ% z{goIqK^b<_m^`;Qy0dVSpCX-NI!6~3C;eJ>AQa|E=_nyHEDy%1kJqk_XOQSb+S#HL zq(hodIhN}bNL(s3E0&kfP^W08JLT>K2c7P#?QvD_OBuvw}F7JLd!2Yt2O)IvN zrPPF1MK=`kU6&06&~k6Wc06w4l>;(8#@?7|74o@XB8-99hq?9#68s*&*T(p?`1ZT@ z?LGYDKtA7F-CTDWd5aqvtFtGBU`-gM)Z5OrTyjyW)IC}e@|k+x`pIY+nJK=Lu7Huj z?X}x-V@Q|WG)^vGSGX(x(;&MjTR_YOl05issXOF9YXIc^=l<rHig~ zbF^|PUan1f`c?gon;ODS+!DcFxvRGE0%ir1&ohQLAx?t$_pIZF8~&BR2Dzo`LBL{O z>t9|uZM9z!1}|H`8%r{dS9yb{5XG@LDS9E8$CSsy8Xz=dR0a{Kp(Af*j=%SziStuC zx4z@eXMEspci0P`cpnYTGv9i_jjHg-^37z!%xAY5t=i&}7CT zuT{Nh=0uelV9+oxq%+qeysAX+$Cf7JargBm6N&6TQMhP$%dYblBVjnDYd?GUE=O4L zmQ`=QclUjtj>_VFk6->&p8?~HPOoUE*W=lj9!@u`Vwz_+Tio-r9XpvYSCbvI5|sP| z88}!NAv@4X!murGI>(B|(dzXcBGKu@K;5AV$%F!sah8Ew^;6}O0b7|F-w3ORv#pP!#0!QZ33lSfaXWm$2P3%cbX({V3x?D{l+A3+CO)58) zkhpg^T_EhnP5)$HVZQ386G6^#|Fu|mdF6o;F;Ww$%8E*ne7>8$ssGN>Z?d^`g{)++ z_&&C$Kcq6C{oiu$ZoG zyfx~-XVpN>N;cHHyVdZpLSB$=ZU|Yr9M!#b#RhuBs^SBM@@tQAECgs(knV`;#-G|BN$(PALQiCS6 zNC)X+I!#y6o%BR{Ha!na_ABX&=*to9{d)RFM0&rU{tf*U{d@XV`p@(+`V;yK`Xu5K zBuiL{RoO%@+wNL0-FLF{VRt`|y@cJ2oV)k4Z?f;f>i!S*YxV~a9x8l@FXAn}672Ug z`9=IC{B`^u{wDq& zzFoXq{581mpAw%DpBG;iUlZRH-xmKOelC6`eutdL2I4t_UKZYx9FRkDOiqEPcBVW> zULY@(SIDd7%RpSZP2MT*miNm0dzX~?V6gaQiJcQ{Dsw`{@n3Axa6wGE#E!9@6{t0WaE~5lij1H`Zv8B)J*v}@c zXmC*z9EHUNo-@9~IE2ZoFT@2=2V0wXx5O+N8#Y(35EzOG71eJ_Nwnd(*Qkv3I~Wij z3;(478%|q>2)%78Z5)ChzY19=(fnBTG5$q(G|ED&bQV@!GosY>bfJB4d^$RBrnZlz zMo*F47FKryA;5b4I|HHSgLhW54#?YS-2zam(Kj?3V|?qO2FD%$r+Y1e2q*2N zS3(E$_fEUPa0xi{d)upn)X_^V<=U%|IzdBQ$HMC$kHL%5&aQTx5X_9^obgnm@#lRd zqK)ldCSF_wL4%uD(-Klc>w1C!PZAT*MzFT#$+w|G4T)U1=pkN5(i_<+%_)Z*fkm&q z>_lIysqF2k$p$LY9t7sPLG&nSiAAvl$8=s*3@B3NWi*ptHy^!dz>!5sC>#`ie1Jyu zuI<2~*20JZ?GgVq?;Rr2^D~uB{RvIhf8je#b#%#ShR)uqeQ51DM$=35D{y)q4iphy zBO>23I&K1KGIeHU{IA0epz4q?sJ+%+{EyV5nr*IQEHJppD}gWiqS=@Yy<%vm6o;mD z-~>8~g#xRM%0S~ZK2X!Fe3T7EZz(8w4IUDPHiJMIC_hd#5Qc$Vy4s(^@Z$ia4;S}J zX(Dt1PA0sqj-D7D3<8PKjw{LpQ6B&3A0#>jh=2xTcF_m@+Y0Kue+(ti3@06x3T%oJWuk&7c2ucEN|sxO&^75*6@`641< zttsgwqNJA_DRDCK)R9V^0^j076S>q7=2VhYi<&8L5Oc2Gq=bR2*v)TP&J%u;H(5>0s^>`U+!SvjOcUXuJZWeP*cn;3Y49NZDH`1Ku z+-h)ZY4g%hhB;RzL#I;$?zgdVu-vLU$b>iZ9i^sdv7byLi)amRLa3A9B6S|}zl!b$ z5y{9cUzqh_OWZO%{8@$^qS^X?uW>VUVAS%)0M=w}*UBLRjH-G_c_lGC!JMLz%?xGK z5u|Jtkoa>`BKlp0fMBqsgYF3hSQFtG9~ey6!bOgm@6!fL~&gjm|Mc zjqZnshmTKGD%f1AWj95{Oqp-7BfR0oYUO~|aciPmfbE&`|J`6#13{I=Cv1d(iUx5m z8%o8bl1he;)<<~L{x`F!FMu=j15g_A!ki}Jl;I{$oGFn}Dv}Q%^Ft#MDYYGS*`{BO zuOAxfez0-6bIcFn&N$$aBJ%(>_hhe&25#LlH1vnz;qG$~t%xkFNYF)gpmPrSoy`;E zO-rG}F&{6eG1seNK)5fvJBPnhfES=gN*KnfbUN7%A~)Xg)2(4dLj)Ci21wUSj-X|$ zIHJti`LTmh9%Fv8dBpM~he3_7N{m;baHn7e1#?DIocW3D65bjcOwcAy-y zlioeYM&>BG1tL*s7;=i0Dik8pU0sLZ44n>Ya6(l)abv()nD^xCngx5rZsesg&B@0+ zGwH6#;GH0;44f%sko4iICP@CanV7rl$YEhK(SAw(RX5DM+&ED;7GM3xG|r|!dDCvH^fL0aQ{#7)~0yj*7-D-BXV zY@`5}Z5yEw7GA@{@UoRl55_vkWropxP$_!C^iX7-b&-ZS-YMnL$itZ+Nr`2xPIdy}bsTi1N?Lg(3n%})UVqEGJLT3-yXQIQInN1|_o8pc(Qvic_UTRx ztw1CTwaCzTyz2D|d!B{Ms>G1{u%hQv+@=J3I!x8E6r!$CEgB!N2J~9mazoi_UJErz zVj&O0==`TcQdP)Cc(k-dv^On|^d0B?lg-n;dPCo|w>sOWcMj?=ieDLv4X*rtwCuX+ z(y2!KaZ9_vmeOirJ&E@v%yf9IQ|rq)&CYeY+JL7lzjdRVdRM4rr}Z;;_Gt}$TdXv- z=|UEEO*_wxB`HUg(4#RPd8BLUiMbz`2|K1PPEx+B)|2{OSF-P2rk8R4HXKb_DWg{N zy)>kEgpl#^IME7K)^csFLS{V6+}yu8@ha4IjWxtk@5&6EW4m}^zg+k9C>ofSTl?6G z73w`<#}4Vy+XrX7@l;18i$k$Y6u3tHt||&|alP};c`L`|Ss|uvK|R>l`4>bFi@7)X z126h&A&lZkRE6!*OSNa-aE5vnUv<_sTBEzpKjXWjk#jr$wfD=e`}RnPfqaRbL#Kya zHT76hLm2yUN2}-TaO|fk+bhxFSIfRX;Me|z4<0M#YzJY9&OzB8Pv64++eLjd^fp|B zyBfv5lWrLQ%}C^&{_eFeIji$_c31y>#;w{jAI-zMr|)d5q+U4iqH69<|4)wpXtqy1 z@5meKe3^Tkdr1Axv(v-Ttm~&&8cx3I4bCJckUKejzIoJZR;;+IkdI?y7~_p?#S01Io#)% z2k0yyhCQf_Gp7A&L4^jHG9zwUcVlTYqRKLv$YBg;tZ1xhS>}$R@kF=RMEoI?b)u;C zAV#X6W!u-Zcr4qeIL=h87^*bF$wD(im9$(5X0Q z&?(w_asxs)(HOc3hzRmzh$gbDBcT?W6s3rh(VYA65&l#u*YFsd1ZchFZTVEnaBPQ? ze>|Wt336d9n8;Log=gAPGo?kJ6Ef{{ST7Na+3SpupfunbkrkwKtRpvZ7cM=X{F*cC zef~&~+7pjkU$W-PhrMXGd9&oTphe_ZTTGQinicg4-EAu;R&&-N^GKS>sRTW~zU2H= ztBdAR>EHq*BK&Nac`jOghRaX7q`5vC*4>9}%@1yp#0{q>n~EB9@t8s`h(s~X(oku6 zrt3bj#&s_wF&3#Kl7Ad@bYsFJyJ(58ZV2w^4A~m{yUy>rsq0~QgP()-^OLTB@A_5O z6DY2Xsy)=|y@WXTE$TKZVZB|wNByPxxcXaE!=u_PRRXqZr&Iar1==mz%e9BJhqaI5 zg?mK%F134qu05{T^p?Itp9u69H|kph&)W;oV0;OFw{PnItpA7yPlS3`S!0)Rs&R(# zOye@+D&r4~KQdlm++o~nyanxvzX+;cecJd+pgr-Z@l%u-|J#^DN`}SN^p4{Z19LB@ z!*~pz*z%f-BFX@=mEyPJ{1OOjgKL3S%{Cqx{2S!P3+AOvFW8819$U2iEGiG6Sn%h> zCi9-u;n+4R9^AD&3E~=)$UpaOw3s?hPBhkpQ+SAAy5W@Ba zeg~CX0xyg}P+y!p6Vt7E{7POw+h@`e!o;P7ONF=Nq`m{N>*7V3r~}EBk0S$wR`=VS z3a0^AEWQ-nE(kwz0pcyPGNTh*lt?bv7OpS97pDMmQc<+vykOhlTDafEs{oS=CqNp# zDJZc?rPsQ6>iA$9{}ql9oE+3rW(UbRnQo;Tb_>UZ_?tk{G&0|CJ08((u)3Y$qS{j& zU)%x2b_K5TPdtsO)->Q9ub=D_(=vFjCfmKF>e=*o)|O4v;#mpA6L7^eXavFc9Dll{ z)37x0WXo&!ws4dv@x}FWh??jkO3h#kg$de@%zmmyad2*O{!}Q9$$M!rFHK_*#K(<8 z@g1&Gv>8dP=LWc9DeT0Uu|;2DQdAaO+?#l5IJtCQgYM*y0A-3siw8*jBghL%M+UAN znx0|O!uca-lfCABKXip?U(&X?GUR^zthl}KMA4btF@7cfi3kGsAizJ{qB|ifa4|?G za2$q<{Ne2U^0@?C%IJtUNygaxAm?`rApq$X@uJ8-*cHqKoB-1;a9_SrH7=I zW>gAKN)O}J5{Jx_-8iU#FxT)Mi;GOS0XXxT!kA#{&|(zs5;6qS6(=K29yA7X#b?Um zDh*t^;%z~=l9pmz(b7oJEK4X@PHpimNBdkpw~VTy-5}X9d}$%HOG8#z(+ilG~zs_v9_?L;MtpW7ghPrDLDh@(uYWJB+}kA95;U&8Q{dC z(plX}L?~*Srh2c|>%^^DGkse094i-^sB58tFmezp4Yi#TtIoDKGI8mqrB67cq+VKW zYR#(=-5J@mPEl9Y$J3ci_3|L<{2k(mhE}|HHR+qKuY3!0(Xi5~)VQ4tXWP$TKR%of zO`i9hmDXERlcl77VECc~8{*j;K7C8%S17U7_jcYl`!3bJGONC5pLOc)xjEz$E4p1a z$Eu0K5Q))_KbG8kp|16;dd6%md-=VFie}HjZ4!I-TB}SAoruw{WGc~^-Z}LuDx@*4DD|>78 zl7$;hYZjBDWrnnw3%dz%ugLl<3Y&}{iEx&#PRS)3m_(gl0t2hgY$od5qvT@)Xy)ZKvig2HZm^8xs1a=zBs^Cp0oV^u4SU6S zs@7{8BbJ^>6%r`M85A9Q5t0x}eaBR#aE_7zy{XOtBoM5OL**L?bq7z{ru8FaCPf3H zVUlg#tJMoM#LBXHgda6Pg84YxO;gNBi(udxv*GUHT=asLkKJL1arnT$z?*@~%#GMo zAHu_u1a@h$n5UeKff74%B9;a&L@`gl=G_uBkBGGyMa?jTTtxU}Lt90~hTc?Vcr4#* z#cPr7+u}o|?l7s%XeW-F)V2P)M!21d3kodF(a;RVDkE8#S|vE6C>x!?RfK_`Cfzy^ zyEGEf&fg7MVS9yYm?*ZH@Ntwr`d7Z*NF+5?9ney$T8~@$#zeDer_&D~5;`r>t({&SS?x4m70rP<(hk5o8i!2l zM(bO8*M~z0%z;sKTfH|zX^|T#UR0oykv)aIq_W19J(Ey(n(>z1I79ETa$}?Wrn4wV z3{z%XJxm4iOuSR2@(v^9J9;eX=x0J`u?>p(8iP&PJrQa~MB{@9Z&tj4{d)P0C!=9k zcWQWn^K<{DBZ^VSCz&gbDA6;lQ=`Y$yGJ!+sE`~avj2JAJ`K zPv`2de(N#quTQ>bu4}IzZ@hZI9ve+Z@|~uhG2&_URsGM&MSmduIi)t*@w;}HJHK{A z{^*FNQIOc{{QMo3TP>cJenVj@zuC`kF+R4xknlgOl1At8#|rPGq>W|9e(q~kD!6DX zltz7cW1x~rqKu-4U1#JZYH4@Ib^piT|LWW+C*MQ0`H*_-s(vTbn_qLGy2eNE?eanS5^bK;>B2Z zpy8A3wFX||XJd(ySJOsKqg)8ZsSJek z6FC)hSse#$UsNZXW~iY@vKROR>$I4a%tMSpr`5ZE?zO-5a2JJauaRKEdP}4~maVID zQV++{-I_OP7rNhB(JK3*CgpszI+b;_@B6r-jIUITqLC;yy?z#;bvP(oIDV)pWO>ed zD5M~oY7=MyCevck&!LZEcK*~oS!D~A%*^0tEC=vuMK-XQZbara9Ofyncbo4y5*g2x ztoWA5nwr~rB&j8Sx%$GIr@l0|{xDMhL!*bi!Z3+W8>bdcCN&ZI7f18mYyo#KMWR0n zTL>8gBUDXPJ(o-G%~-B}g>C;7Q4;I7zrnDORn*o5-#%*zz7@U18Ti{f$gvkaf-AeO zfsyjMu0QE|I~fKagpcycu1|OUpzG1D$AVP>xCQg%Z`7yNH`PC@pQ>MJU0Pi0)mFeh zSqa{iTF?8mo3!_8f2(~)`vPo}f7HIC{fqW%J%neqrca_^95Z^bkcLrE+-vMZ0OxY! zTH|)=3EV>!=XV(Q8y^JEe$x1q@kMGl|G;?6_?hwR0L`Y%n%Qd(nbYVhZZx-=Cz)rN z=LW12I3>qHxnhNi2*NT7ipM~@Y`mDkaFkjirFt7}3G70An2^x54c=+g=k?X5B>Frt z9WXt>eiO)#0~;{-ZBP;T!){~=A7cK)z!2jUE87ybhLAFXkgWh6AfFU2Uf`d|ww4dw zoV`+dODx=0CeTw9D2b(xsSDRZe(Xt3g{8|?WNnEzVkNhFxehR|K%usj4kdt{ZgWrp z)c_zu<}IIJHt1V^CYqBIP(H*w2UU~o-vWxrNrUZ0?{Ok4z!row35J=Tm=}9w&j3y} z(ZiEZ1OthLqyW(X%eH|qU=uzFK9ldkYjq$|K&t?Eq~S>e7zo3|kQNNdwM{_0Z@27T zfp)+|2}T13kI*;qPIW{yc3Wt2z@7k0t6{_F5sb#YfN*G0K`X(f$R&w$ z0-gb%5rgMexNJI*v(X09L}^kOxQuy%M!@L~vKMr~FGPKINt;51NO3Y6&7UU6feU6R z(y!7?d@lFjqNnFaGA+lo%V^*$;8La;^p{Xj@K;D5P^ncmWp}W!O*4!CfC?Inc^S!g zD7Y-VJ<{{@Z{{o3${XREPfQ8NNcvx-3k7G2il;SMk%9vPUTIjyn~V*?s8T06K)iSz zxKnWf(GyZegJa3O;*Z>cEj}GC8$W_X^?O?gg|^|B2zupzwy1Ge^rtS2ieNn1%sIjH z^PI3YfL}&E<9bASGB-2K51)Q!at6NzxYH{19f+Ca5xTtz*o#(TD#eHMnr8A~*AK)fo@!B;&E0HJatm*DIArcj##gSs!%a@;R=phA zV`)2dr-`YSMkdq%uIX#IgyO)bc?RYvK>5GNJJqATO zT_RXoPt3`q8BOuBh#e(--l%vQbq3ue9MP~-82~~Vvp~i)F;y*;7`a-Xgw~n2ra(Np zY9mNIsKw*RL+c^Ro>__Ph~q)a3?)6iLC6Wy@Zwr(>$KWEl*pgTqp@=*cDvy=&?6EG zM;h6=%W`3_bZO?iQ0MEF9u2u{&zdY?x!$@j1)0|it3tuncTZCRHm1b}XD**`)G0}8 zUoo++lfgKnW}Ya1cRrX@GjPT`zjen;F7bXXQh2!&S~0pBGP9{ppsJI7^YO-HDq*mt|g(}u2l3FWLu8PHysZ=r+(@y6`aoATHnE^ew!mR>6 zuWB1^sTt1Ir>-{5+M2?^8{AF@`%BFvJ0A_MMm3$zYa+FitXO2fdY+X?Hpi~cmqWFk zVClDCb8Cd6Z?Fp@LvPO78HcK;oyVhlR^|>65g&3>XA+5Z&R6;u_s1_XBhKj+^%FF( z^+GusM%FQI^&{H`cOaSx6J4sg1ufb~>Vwpjj487j?l!D&B<4fT2KQ$3JzRgd*GV_3 z7}j>I74qrCq*c&XDPPaz(M_c00^LWYi0Ht>hLNg3udNUTH%4tht3mgMP%^{8LKFgb zLMUk=fDHjpRQNe5=CU4-YMuQLjSPK$+$(CWMln2-cb(2F(efPEiZ40vMi99Xsq}`E z;l>)TTC!u_Rv0gNC$|3Mx#%6+LTYC!?xFr=ugQi^qn_aeU9v45E0u?DG?UJO5Mh4c zh;D>a8Fzci*nr43VI}GXXOySMi|9kH$5D{aX#M);abx=Qa@4LktMu;fq&H;6My<9D zFCt3$3nP+q^eozf<^{xi8Fm~i=8!fC>fi7-CsMnD{b*Jg-F?~KGVWh#)S%r60` zj0n|st;nvZwxZrgm-S`_jFRfU!p(-rH?!Ru*WG`lZc&XRz{=$Hn!i6 ze>YUkZ7^4OVJ&F@rZW0E0_$n3>Y&)(tyDp0^0&%v45o?~t7?sqMJh`;TneF{uV?I9 zHW|TDMY4i><~1ub+Vmd}q^(GZp7N((HJV)UW>4L*+qV7Y8(LZfCD51d1SL`1Fwx%R zQ4AGvQOYLhR*Mj;Sz>O$`5{cJg*rcNjGq2%IxT(CJ=D%PEA~j}zd?b@9$ekXwaSyt zw`tFy%t&W{-^&M2-{f?jeUh5Ur^;p6^lH{WGummLlQ+|$aAADM?{szMHq%NNRS9g? z?_Qnm(T%xB^$DY?UI#1bKh3jrW4PN@-Ms1CzHgrzHO*@>o5)j&Rd%aA)CC(VXwpHX;2t|!@pUfuRH=RTu8 zvw1KTisdqW8;rCzaEAKRa02YytQFs}a%81auRZO~yFL+JIj$8liGMoZ&>wNs{tpft zcJYGFxx4Z>3#L#Mq=C9Mv`8a%JQ|9ntUjZVQX_s8KOccrtx`%Fu>5q}ilB8mP~Lua zGG%DF;Y`rPWIy5_ua_++(XZ?|K@7NeFlxlx|J z`kMX$3fe&o(zI?f3PC4A1NLsUqne#qOZjCQ6@Jdz)l>NW5>z~hRK_B)d{6&c1Zr0_ z+B2$_SXEW;f8cd?=cXuRn^eNWi)&Lc+*PDmnJpE#GJNU%(1GE=vG$I|3GUdy~|8BIO2Z^;-j-oMN? zb59(rnVuxHw{7WYIa*lnnxK`I>gg4`y1RzE#=EA2N+2hr=XSgq!~IbOtPK*Mmji&# zExLKqF7hLOphaJhj}L8rYjsRbyr0U5`A>d*>97dihYyXHI~FDIUb?th=T}q4*Qb^p zGThn&iz0Uiqld=IA#pp^FI(`Ram#|5U1W)GPugK|w48ea<3(CQ0OPWnb&KsGe}n22 z;;ms3nGnxKkX8i-UTB?VW>V)+yL@?B(Ye1|I%qz)jMm&o7MtvtjkQ!w?jMgDIZM>z zWZcMqM{C7Nn>D&7gLXT)>r}j=&*(aUU-Y=^jzqC#usm4@ZsCg{vMtRjjfL|fD=j5^ z1bYU~m+WzL-K6d0zhGQ-{%fg*TjJ2*`qfeew{I-&A-i^daXhuQV1=5i$(sCf8s)Gm z+qVymx4l%pe;$@S`_-Xl`;SASXJ2Expp9jxWk*@iMtdK4;K5gN z^M?h@9y`=bhlI->U(!yj<4g6)7TZTMLDwui)#ds2%%@ZZUKlltEoFN;sjo42|Ky960*V(oZA z*Bgl2-PiRX8cdQ&{&#RypHN*eDDdr3Mt7~+q0UmDP+wNxP~TPGSC6WntH;&vw1}3` zirTekFnvJ#i1u-E#J{NhgZ53Lc0ba)^p?IsKZl&~YxL*oFVtVEzmjsNuh-wAzg>S& z|8xDr`X}|zQZM}P^>2|Q{!{&N{ny8tVfezCSA?0y*GR9*q=M~O6Z=aYrN^Wuh&yE_ zrU(;Ecuge3aENCtj1Hcb!uebaKU9uJ8l;4H__jeDCEIRg(HDZxIRAsk9w{cmWb;x? zfhy2Q5a$VkJhF!n#3b^9C)+&qQuwOllAuYVE>RD8auX8ZSWx)LBF%_@oNxpo4GAy> z-hYe0f&>TJh_ex!K`Uv>_S2?t7Uc@2eb0i?spIqa z0*2xg@in~m4bOsP>NPwGu!(XKAIVBDmm(n?t^?vFthO5Glsr{oUXtj^Gl9Q+E80~- zP>je)P|!SRN8g+9Pcr23l zEy{F}6i!r*cofr(or2(wOgkaF25(x8woi$AT527i!{KIQ3X!*HCQH^-;VDm#n=%jW zrccCHqQ$Z&mAfR4#%&WVO40ml)iUes!Axn}aJUfmkz_JH$eQ}%K&PoF;Q0%OWSTl( zsM;~gzB)~-U(KY|>g4H#R8&vEu%jG_y(Jq%h9ugTtt9+tHIeD;KG~c`m8V)R7fM

1xexVvFyT_vTxGz7yQ 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 z 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 z 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®G9nNo&jvqHu*IL!H2Fpo$TA)vy)Et zUFGtAbKjeb?|tjO=XDH>C;yIFbnmvs_n!@gPy0C}%Df@{D3<_th>1wd>%tNgQXOPQ z7uheX%!m`7d6iQixux64EH0Hx9n+=qnyf+X+O;#{h|qfVfT~BXn%K2d*IsW-uj*!R zpHPS&m^O_G$R>cB5pNp7Es{%ktr2d9yyD`bB1h)2P6WBtFl0jzAJ>AJW)BI>0$hsY zflCg)hL2N{J==jxgl`iaik0VUlCz;RtR%FxutkE>%%au-Yw$?mR}tAuQ9WX2B4HW? zcMlCBBg}RH`2dcPzdacc;9qulCIUZ_0Sl|bPPDX5Ae~-Hw8_#;5xi1{MLohPE;C!i zYU9Z|Ok07~sf{Od53{d^q^D`=^>sn%n*;gl_wdh!r0e;)y@7O7$Ds0GF_ng-`^x{; zRI2rhsjrp7w9q}p2z^a+m~t4psEjnrISh?|YBx$WQr>o-K#yX?U3Wd(@eqnfFP?w4 zeMAEK)IgPAU%MSOf3T`!$2HsW>4&P?<5pn_{(gNZ{*gMJ(gge?6+8y~xeEr`uC|DQ z0B!!bX0KWsTMK(|6vfbRiH7`^)LmPw35E92xDB+FonIr@qtIuPk-5MhD)(86QWAP7 z%6;ZSI5Uwr8F92>oFaJ`4JSi0;e93&DK<#XV~n*Fq^u9U(@j?Vq6LI2>0V~~ym#%B z0NvYKi{z`#v=!-Qd{K4y!o4Ta|0Vj3>cC~tZ&)ilD=&+FUeigvPb)|B} zmw0oA%QH2emos>?=Te4Z68Y6G_Bio_NRI(+ZpER2=Im@U8ptX+BK``0C3-Wn&3G%< zDpN!EPn}a&PZQk z!y5!)7C{iQ=c^3GEPx=Q)9RU8D|i_Zq0g$<

=CpCLyy`XlLs_SBlJ}^g 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 H;t>BI>ZUNq literal 0 HcmV?d00001 diff --git a/css/lib/mathquill/mathquill.css b/css/lib/mathquill/mathquill.css new file mode 100644 index 0000000000..fb56595879 --- /dev/null +++ b/css/lib/mathquill/mathquill.css @@ -0,0 +1,410 @@ +/* + * MathQuill: http://mathquill.com + * by Jay and Han (laughinghan@gmail.com) + * + * This Source Code Form is subject to the terms of the + * Mozilla Public License, v. 2.0. If a copy of the MPL + * was not distributed with this file, You can obtain + * one at http://mozilla.org/MPL/2.0/. + */ +@font-face { + font-family: Symbola; + src: url(font/Symbola.eot); + src: local("Symbola Regular"), local("Symbola"), url(font/Symbola.ttf) format("truetype"), url(font/Symbola.otf) format("opentype"), url(font/Symbola.svg#Symbola) format("svg"); +} +.mq-editable-field { + display: -moz-inline-box; + display: inline-block; +} +.mq-editable-field .mq-root-block { + display: -moz-inline-box; + display: inline-block; + width: 100%; + white-space: pre; + overflow: hidden; + vertical-align: middle; +} +.mq-editable-field .mq-root-block:after { + content: ''; +} +.mq-editable-field .mq-cursor { + border-left: 1px solid black; + margin-left: -1px; + position: relative; + z-index: 1; + padding: 0; + display: -moz-inline-box; + display: inline-block; +} +.mq-editable-field .mq-cursor.mq-blink { + visibility: hidden; +} +.mq-editable-field .mq-root-block { + display: -moz-inline-box; + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.mq-editable-field .mq-root-block, +.mq-math-mode .mq-editable-field .mq-root-block { + border: 1px solid gray; + padding: 2px; +} +.mq-editable-field .mq-root-block.mq-focused, +.mq-math-mode .mq-editable-field .mq-root-block.mq-focused { + -webkit-box-shadow: #8bd 0 0 1px 2px, inset #6ae 0 0 2px 0; + -moz-box-shadow: #8bd 0 0 1px 2px, inset #6ae 0 0 2px 0; + box-shadow: #8bd 0 0 1px 2px, inset #6ae 0 0 2px 0; + border-color: #709AC0; + border-radius: 1px; +} +.mq-math-mode .mq-editable-field { + margin: 1px; +} +.mq-editable-field .mq-latex-command-input { + color: inherit; + font-family: "Courier New", monospace; + border: 1px solid gray; + padding-right: 1px; + margin-right: 1px; + margin-left: 2px; +} +.mq-editable-field .mq-latex-command-input.mq-empty { + background: transparent; +} +.mq-editable-field .mq-latex-command-input.mq-hasCursor { + border-color: ActiveBorder; +} +.mq-editable-field.mq-empty:after, +.mq-editable-field.mq-text-mode:after, +.mq-math-mode .mq-empty:after { + visibility: hidden; + content: 'c'; +} +.mq-editable-field .mq-cursor:only-child:after, +.mq-editable-field .mq-textarea + .mq-cursor:last-child:after { + visibility: hidden; + content: 'c'; +} +.mq-editable-field .mq-text-mode .mq-cursor:only-child:after { + content: ''; +} +.mq-editable-field.mq-text-mode { + overflow-x: auto; + overflow-y: hidden; +} +.mq-math-mode { + font-variant: normal; + font-weight: normal; + font-style: normal; + font-size: 115%; + line-height: 1; + display: -moz-inline-box; + display: inline-block; +} +.mq-math-mode .mq-non-leaf, +.mq-math-mode .mq-scaled { + display: -moz-inline-box; + display: inline-block; +} +.mq-math-mode var, +.mq-math-mode .mq-text-mode, +.mq-math-mode .mq-nonSymbola { + font-family: "Times New Roman", Symbola, serif; + line-height: .9; +} +.mq-math-mode * { + font-size: inherit; + line-height: inherit; + margin: 0; + padding: 0; + border-color: black; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.mq-math-mode .mq-empty { + background: #ccc; +} +.mq-math-mode .mq-empty.mq-root-block { + background: transparent; +} +.mq-math-mode.mq-empty { + background: transparent; +} +.mq-math-mode .mq-text-mode { + font-size: 87%; +} +.mq-math-mode .mq-font { + font: 1em "Times New Roman", Symbola, serif; +} +.mq-math-mode .mq-font * { + font-family: inherit; + font-style: inherit; +} +.mq-math-mode b, +.mq-math-mode b.mq-font { + font-weight: bolder; +} +.mq-math-mode var, +.mq-math-mode i, +.mq-math-mode i.mq-font { + font-style: italic; +} +.mq-math-mode var.mq-florin { + display: -moz-inline-box; + display: inline-block; + width: .3em; + position: relative; + left: -0.1em; +} +.mq-math-mode big { + font-size: 125%; +} +.mq-math-mode .mq-roman { + font-style: normal; +} +.mq-math-mode .mq-sans-serif { + font-family: sans-serif, Symbola, serif; +} +.mq-math-mode .mq-monospace { + font-family: monospace, Symbola, serif; +} +.mq-math-mode .mq-overline { + border-top: 1px solid black; + margin-top: 1px; +} +.mq-math-mode .mq-underline { + border-bottom: 1px solid black; + margin-bottom: 1px; +} +.mq-math-mode .mq-binary-operator { + padding: 0 0.2em; + display: -moz-inline-box; + display: inline-block; +} +.mq-math-mode .mq-supsub { + font-size: 90%; + vertical-align: -0.5em; +} +.mq-math-mode .mq-supsub.mq-limit { + font-size: 80%; + vertical-align: -0.4em; +} +.mq-math-mode .mq-supsub.mq-sup-only { + vertical-align: .5em; +} +.mq-math-mode .mq-supsub.mq-sup-only .mq-sup { + display: inline-block; + vertical-align: bottom; +} +.mq-math-mode .mq-supsub .mq-sup { + display: block; +} +.mq-math-mode .mq-supsub .mq-sub { + display: block; + float: left; +} +.mq-math-mode .mq-supsub.mq-limit .mq-sub { + margin-left: -0.25em; +} +.mq-math-mode .mq-supsub .mq-binary-operator { + padding: 0 .1em; +} +.mq-math-mode .mq-supsub .mq-fraction { + font-size: 70%; + vertical-align: -0.4em; +} +.mq-math-mode .mq-supsub .mq-numerator { + padding-bottom: 0; +} +.mq-math-mode .mq-supsub .mq-denominator { + padding-top: 0; +} +.mq-math-mode sup.mq-nthroot { + font-size: 80%; + vertical-align: 0.8em; + margin-right: -0.6em; + margin-left: .2em; + min-width: .5em; +} +.mq-math-mode .mq-paren { + padding: 0 .1em; + vertical-align: bottom; + -webkit-transform-origin: bottom center; + -moz-transform-origin: bottom center; + -ms-transform-origin: bottom center; + -o-transform-origin: bottom center; + transform-origin: bottom center; +} +.mq-math-mode .mq-paren.mq-ghost { + color: silver; +} +.mq-math-mode .mq-paren + span { + margin-top: .1em; + margin-bottom: .1em; +} +.mq-math-mode .mq-array { + vertical-align: middle; + text-align: center; +} +.mq-math-mode .mq-array > span { + display: block; +} +.mq-math-mode .mq-un-italicized { + font-family: Symbola, "Times New Roman", serif; + line-height: .9; + font-style: normal; +} +.mq-math-mode var.mq-un-italicized.mq-first { + padding-left: .2em; +} +.mq-math-mode var.mq-un-italicized.mq-last { + padding-right: .2em; +} +.mq-math-mode .mq-fraction { + font-size: 90%; + text-align: center; + vertical-align: -0.5em; + padding: 0 .2em; +} +.mq-math-mode .mq-fraction, +.mq-math-mode .mq-large-operator, +.mq-math-mode x:-moz-any-link { + display: -moz-groupbox; +} +.mq-math-mode .mq-fraction, +.mq-math-mode .mq-large-operator, +.mq-math-mode x:-moz-any-link, +.mq-math-mode x:default { + display: inline-block; +} +.mq-math-mode .mq-numerator, +.mq-math-mode .mq-denominator { + display: block; +} +.mq-math-mode .mq-numerator { + padding: 0 0.1em; + margin-bottom: -0.1em; +} +.mq-math-mode .mq-denominator { + border-top: 1px solid; + float: right; + width: 100%; + padding: .1em .1em 0 .1em; + margin-right: -0.1em; + margin-left: -0.1em; +} +.mq-math-mode .mq-sqrt-prefix { + padding-top: 0; + position: relative; + top: .1em; + vertical-align: top; + -webkit-transform-origin: top; + -moz-transform-origin: top; + -ms-transform-origin: top; + -o-transform-origin: top; + transform-origin: top; +} +.mq-math-mode .mq-sqrt-stem { + border-top: 1px solid; + margin-top: 1px; + padding-left: .15em; + padding-right: .2em; + margin-right: .1em; +} +.mq-math-mode .mq-vector-prefix { + display: block; + text-align: center; + line-height: .25em; + margin-bottom: -0.1em; + font-size: 0.75em; +} +.mq-math-mode .mq-vector-stem { + display: block; +} +.mq-math-mode .mq-large-operator { + text-align: center; +} +.mq-math-mode .mq-large-operator .mq-from, +.mq-math-mode .mq-large-operator big, +.mq-math-mode .mq-large-operator .mq-to { + display: block; +} +.mq-math-mode .mq-large-operator .mq-from, +.mq-math-mode .mq-large-operator .mq-to { + font-size: 80%; +} +.mq-math-mode .mq-large-operator .mq-from { + float: right; + /* take out of normal flow to manipulate baseline */ + width: 100%; +} +.mq-math-mode, +.mq-math-mode .mq-editable-field { + cursor: text; + font-family: Symbola, "Times New Roman", serif; +} +.mq-math-mode .mq-selection, +.mq-editable-field .mq-selection, +.mq-math-mode .mq-selection .mq-non-leaf, +.mq-editable-field .mq-selection .mq-non-leaf, +.mq-math-mode .mq-selection .mq-scaled, +.mq-editable-field .mq-selection .mq-scaled { + background: #B4D5FE !important; + background: Highlight !important; + color: HighlightText; + border-color: HighlightText; +} +.mq-math-mode .mq-selection .mq-matrixed, +.mq-editable-field .mq-selection .mq-matrixed { + background: #39F !important; +} +.mq-math-mode .mq-selection .mq-matrixed-container, +.mq-editable-field .mq-selection .mq-matrixed-container { + filter: progid:DXImageTransform.Microsoft.Chroma(color='#3399FF') !important; +} +.mq-math-mode .mq-selection.mq-blur, +.mq-editable-field .mq-selection.mq-blur, +.mq-math-mode .mq-selection.mq-blur .mq-non-leaf, +.mq-editable-field .mq-selection.mq-blur .mq-non-leaf, +.mq-math-mode .mq-selection.mq-blur .mq-scaled, +.mq-editable-field .mq-selection.mq-blur .mq-scaled, +.mq-math-mode .mq-selection.mq-blur .mq-matrixed, +.mq-editable-field .mq-selection.mq-blur .mq-matrixed { + background: #D4D4D4 !important; + color: black; + border-color: black; +} +.mq-math-mode .mq-selection.mq-blur .mq-matrixed-container, +.mq-editable-field .mq-selection.mq-blur .mq-matrixed-container { + filter: progid:DXImageTransform.Microsoft.Chroma(color='#D4D4D4') !important; +} +.mq-editable-field .mq-textarea, +.mq-math-mode .mq-textarea { + position: relative; + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; +} +.mq-editable-field .mq-textarea *, +.mq-math-mode .mq-textarea *, +.mq-editable-field .mq-selectable, +.mq-math-mode .mq-selectable { + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; + position: absolute; + clip: rect(1em 1em 1em 1em); + resize: none; +} +.mq-math-mode .mq-matrixed { + background: white; + display: -moz-inline-box; + display: inline-block; +} +.mq-math-mode .mq-matrixed-container { + filter: progid:DXImageTransform.Microsoft.Chroma(color='white'); + margin-top: -0.1em; +} diff --git a/css/perseus.less b/css/perseus.less new file mode 100644 index 0000000000..15b64f6148 --- /dev/null +++ b/css/perseus.less @@ -0,0 +1,477 @@ +// +// Edit this file in the *perseus* repo! +// (All changes outside the perseus repo will be overwritten) +// + +@import "variables.less"; + +#perseus { + position: relative; +} + + +// .no-select is used to prevent selection of certain widgets. +// often, allowing selection makes for an awkward mobile experience +// where you constantly highlight elements unintentionally. +.no-select { + -moz-user-select: -moz-none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + user-select: none; +} +// .blank-background is used to prevent drawing under transparent widgets. +// drawing under transparent widgets is particularly annoying because if +// you lift up your pen and put it down again, you can't continue drawing, +// because you're now clicking on the widget. This is very +// counterintuitive, so we simply don't let you see anything you draw under +// a widget. +.blank-background { + background-color: #FDFDFD; // Keep in sync with KhanUtil._BACKGROUND +} +// There is no scratchpad in the answer_area, and it has a different color +// background, so just make it transparent +#answer_area .blank-background { + background-color: transparent; +} + +.above-scratchpad { + position: relative; + z-index: @zIndexAboveScratchpad; +} + +// All graphie components placed above the scratchpad should have their +// background wiped out. +.graphie.above-scratchpad, +.graphie-container.above-scratchpad { + .blank-background; +} + +// Selectable graphie components make for awkward touch experiences +.graphie { + .no-select; +} + +.interactive-component, +.interactive-component.above-scratchpad { + position: relative; + z-index: @zIndexInteractiveComponent; +} + +&, // and moar specificity... +#answercontent input[type=text], +#answercontent input[type=number], +.framework-perseus input[type=text], +.framework-perseus input[type=number] { + &.perseus-input-size-normal, + { + width: 80px; + } + + &.perseus-input-size-small { + width: 40px; + } +} + +#examples > div > ul { + // React and Perseus.Renderer add an extra layer each to what qtip expects + list-style-type: disc; +} + +.framework-perseus { + #problemarea { + input, button { + .interactive-component + } + } + + div.paragraph { + font-size: 14px; + margin: 22px 0px; + } + + div.instructions { + display: block; + font-style: italic; + font-weight: bold; + } + + .paragraph > ul:not(.perseus-widget-radio) { + font-size: 14px; + margin: -11px 0px 22px 0px; + padding-left: 35px; + } + + .paragraph > ul:not(.perseus-widget-radio) > li { + list-style-type: disc; + } + + table { + font-size: 14px; // to match

+ + th, td { + padding: 5px 10px; + text-align: left; + + &[align=center] { + text-align: center; + } + + &[align=right] { + text-align: right; + } + } + + th { + border-bottom: 2px solid #ccc; + font-weight: bold; + padding-bottom: 2px; + } + + tr:nth-child(odd) { + // Doesn't work in IE8 :( + td { + background-color: #ededed; + } + } + } + + // place on a div above the inputs + .range-input { + border: 1px solid #ccc; + border-radius: 5px; + display: inline-block; + padding: 0px 5px; + + & > input { + border: 0; + display: inline; + text-align: center; + width: 30px; + } + + & > span { + color: #999; + font-size: 14px; + } + } + + .number-input { + border: 1px solid #ccc; + border-radius: 5px; + margin: 0; // override + padding: 5px 0; // override + text-align: center; + width: 40px; + + &.invalid-input { + background-color: #ffbaba; + outline-color: red; + } + + &.number-input-label { + margin-left: 5px; + } + + &.mini { + width: 40px; + } + &.small { + width: 60px; + } + &.normal { + width: 80px; + } + } + + .graph-settings { + .graph-settings-axis-label { + border: 1px solid #ccc; + border-radius: 5px; + display: inline-block; + padding: 5px 5px; + width: 70px; + float: right; + margin: 0 5px; + } + .graph-settings-background-url { + width: 250px; + } + } + + .graph-settings, .image-settings, .misc-settings { + padding-bottom: 5px; + } + + .image-settings, .misc-settings, .type-settings { + border-top: 1px solid black; + padding-top: 5px; + } +} + +.framework-perseus table.non-markdown { + tr:nth-child(odd) { + td { + background-color: transparent; + } + } + + th, td { + border-width: 0; + } +} + + +/* Widget CSS */ + +@import "widgets/expression.less"; +@import "widgets/radio.less"; +@import "widgets/interactive-graph.less"; +@import "widgets/categorization.less"; +@import "widgets/categorizer.less"; +@import "widgets/plotter.less"; +@import "widgets/table.less"; +@import "widgets/dropdown.less"; +@import "widgets/orderer.less"; +@import "widgets/measurer.less"; +@import "widgets/transformer.less"; +@import "widgets/matcher.less"; +@import "widgets/sortable.less"; +@import "widgets/image.less"; + +.perseus-diff { + @borderColor: #E4E4E4; + margin: 0 10px; + + .diff-header { + font-size: 18px; + padding: 10px 0; + width: 50%; + display: inline-block; + &.collapsed { + font-size: 14px; + padding: 0px; + } + } + + .diff-body { + border-top: 1px solid @borderColor; + border-bottom: 1px solid @borderColor; + } + + .diff-row { + width: 50%; + white-space: pre-wrap; + box-sizing: border-box; + -moz-box-sizing: border-box; + font-size: 14px; + padding-right: 20px; + padding-left: 10px; + overflow: hidden; + &.collapsed { + color: #888; + cursor: pointer; + &:hover { + color: #666; + } + + &:active { + color: #444; + } + } + + .diff-line { + margin-bottom: 20px; + } + } + + .before { + float: left; + border-left: 1px solid @borderColor; + } + + .after { + float: right; + border-right: 1px solid @borderColor; + border-left: 1px solid @borderColor; + } + + .inner-value { + height: 100%; + padding: 3px; + } + + .not-present { + display: none; + } + + .blank-space { + visibility: hidden; + } + + + .added { + background-color: #EEFFEE; + &.dark { + background-color: #AAFFAA; + } + } + + .removed { + background-color: #FFEEEE; + &.dark { + background-color: #FFAAAA; + } + } + + .image { + margin-left: 20px; + margin-bottom: 10px; + } + + .image-unchanged { + border: 1px solid #AAAAAA; + } + + .image-added { + border: 2px solid #AAFFAA; + } + + .image-removed { + border: 2px solid #FFAAAA; + } +} + +.perseus-widget-container { + &.widget-nohighlight { + transition: all 0.15s; + } + + &.widget-highlight { + @highlight: 0px 0px 9px 2px rgba(255, 165, 0, 1); + -webkit-box-shadow: @highlight; + -moz-box-shadow: @highlight; + box-shadow: @highlight; + transition: all 0.15s; + } +} + +// TODO(joel) - remove? +.perseus-tooltip { + background: #fff; + padding: 5px 10px; + width: 240px; +} + +// CSS is evil; let's overwrite some styles. T_T +.perseus-formats-tooltip { + .perseus-tooltip; + color: #777; +} +.framework-perseus .perseus-formats-tooltip .paragraph > ul { + padding: 0; + margin: -20px 0 -16px 0; + > li { + list-style-type: none; + } +} + +.box-shadow(@shadow: 0 1px 3px rgba(0,0,0,.25)) { + box-shadow: @shadow; + -o-box-shadow: @shadow; + -ms-box-shadow: @shadow; + -moz-box-shadow: @shadow; + -webkit-box-shadow: @shadow; +} + +.perseus-math-input.mq-editable-field.mq-math-mode { + // Mimic native text input + background: #fff; + + // If the font-size is too small, super/subscripts become hard to input + font-size: 18px; + + // Make the click target easier to hit + min-width: 100px; + + & > .mq-root-block { + // Mimic native text input w/o using -moz/-webkit-apperance: textfield + // border-color: rgb(78, 187, 212); + border-color: #a4a4a4; + + border-radius: 5px; + + // A bit of extra whitespace here greatly improves legibility + padding: 4px; + } + + // Fixes for strange default MathQuill styles: + + // Cursor shouldn't actually be touching left border + .mq-cursor { + padding-left: 0; + } + + // Don't gray out implicitly created closing parens + .mq-paren.mq-ghost { + color: inherit; + } + + // Don't put vertical margins on an expression wrapped in parens + // because it messes up baseline alignment, e.g. h(x) + .mq-paren + span { + margin: 0; + } +} + +// This style looks a little off in the expression editor. Luckily users don't +// use the expression editor. +.math-input-buttons { + background-color: rgba(255, 255, 255, 0.7); + border-radius: 5px; + border: 1px solid #ddd; + box-sizing: border-box; + margin-top: 5px; + padding: 2px; + // each button is 35 + 4 px, plus 4 padding, plus 2 border + width: 39px*5 + 4px + 2px; // (201) + + &.absolute { + left: -2px; + position: absolute; + top: -3px; + z-index: @zIndexCalculator; + } +}; + +// Math domain color +@borderColor: #1c758a; + +.tex-button { + display: block; + float: left; + width: 35px; + height: 35px; + margin: 2px; + border: 1px solid @borderColor; + background-color: white; + border-radius: 5px; + + &:hover { + cursor: pointer; + background-color: #f0f0f0; + } + + &:focus { + border: 2px solid @borderColor; + outline: none; + } +} + +.tex-button-row { + margin: 5px 0; + + &:first-child, &:last-child { + margin: 0; + } +} diff --git a/css/perseus.less.css b/css/perseus.less.css new file mode 100644 index 0000000000..2fdc1944bd --- /dev/null +++ b/css/perseus.less.css @@ -0,0 +1,1194 @@ +#perseus { + position: relative; +} +.no-select { + -moz-user-select: -moz-none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + user-select: none; +} +.blank-background { + background-color: #FDFDFD; +} +#answer_area .blank-background { + background-color: transparent; +} +.above-scratchpad { + position: relative; + z-index: 2; +} +.graphie.above-scratchpad, +.graphie-container.above-scratchpad { + background-color: #FDFDFD; +} +.graphie { + -moz-user-select: -moz-none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + user-select: none; +} +.interactive-component, +.interactive-component.above-scratchpad { + position: relative; + z-index: 3; +} +#answercontent input[type=text].perseus-input-size-normal, +#answercontent input[type=number].perseus-input-size-normal, +.framework-perseus input[type=text].perseus-input-size-normal, +.framework-perseus input[type=number].perseus-input-size-normal { + width: 80px; +} +#answercontent input[type=text].perseus-input-size-small, +#answercontent input[type=number].perseus-input-size-small, +.framework-perseus input[type=text].perseus-input-size-small, +.framework-perseus input[type=number].perseus-input-size-small { + width: 40px; +} +#examples > div > ul { + list-style-type: disc; +} +.framework-perseus #problemarea input, +.framework-perseus #problemarea button { + position: relative; + z-index: 3; +} +.framework-perseus div.paragraph { + font-size: 20px; + margin: 22px 0px; +} + +.framework-perseus div#solutionarea div.paragraph { + font-size: inherit; + margin: inherit; +} + +.framework-perseus div.instructions { + display: block; + font-style: italic; + font-weight: bold; +} +.framework-perseus .paragraph > ul:not(.perseus-widget-radio) { + font-size: 14px; + margin: -11px 0px 22px 0px; + padding-left: 35px; +} +.framework-perseus .paragraph > ul:not(.perseus-widget-radio) > li { + list-style-type: disc; +} +.framework-perseus table { + font-size: 14px; +} +.framework-perseus table th, +.framework-perseus table td { + padding: 5px 10px; + text-align: left; +} +.framework-perseus table th[align=center], +.framework-perseus table td[align=center] { + text-align: center; +} +.framework-perseus table th[align=right], +.framework-perseus table td[align=right] { + text-align: right; +} +.framework-perseus table th { + border-bottom: 2px solid #ccc; + font-weight: bold; + padding-bottom: 2px; +} +.framework-perseus table tr:nth-child(odd) td { + background-color: #ededed; +} + +.framework-perseus .checkbox { + margin: 0px; +} + +.framework-perseus .range-input { + border: 1px solid #ccc; + border-radius: 5px; + display: inline-block; + padding: 0px 5px; +} +.framework-perseus .range-input > input { + border: 0; + display: inline; + text-align: center; + width: 30px; +} +.framework-perseus .range-input > span { + color: #999; + font-size: 14px; +} +.framework-perseus .number-input { + border: 1px solid #ccc; + border-radius: 5px; + margin: 0; + padding: 5px 0; + text-align: center; + width: 40px; +} +.framework-perseus .number-input.invalid-input { + background-color: #ffbaba; + outline-color: red; +} +.framework-perseus .number-input.number-input-label { + margin-left: 5px; +} +.framework-perseus .number-input.mini { + width: 40px; +} +.framework-perseus .number-input.small { + width: 60px; +} +.framework-perseus .number-input.normal { + width: 80px; +} +.framework-perseus .graph-settings .graph-settings-axis-label { + border: 1px solid #ccc; + border-radius: 5px; + display: inline-block; + padding: 5px 5px; + width: 70px; + float: right; + margin: 0 5px; +} +.framework-perseus .graph-settings .graph-settings-background-url { + width: 250px; +} +.framework-perseus .graph-settings, +.framework-perseus .image-settings, +.framework-perseus .misc-settings { + padding-bottom: 5px; +} +.framework-perseus .image-settings, +.framework-perseus .misc-settings, +.framework-perseus .type-settings { + border-top: 1px solid black; + padding-top: 5px; +} +.framework-perseus table.non-markdown tr:nth-child(odd) td { + background-color: transparent; +} +.framework-perseus table.non-markdown th, +.framework-perseus table.non-markdown td { + border-width: 0; +} +/* Widget CSS */ +.perseus-widget-expression { + position: relative; +} +.perseus-widget-expression > span, +.perseus-widget-expression .error-tooltip { + display: inline-block; + vertical-align: middle; +} +.perseus-widget-expression .error-tooltip { + position: absolute; + right: 6px; + top: -2px; +} +.perseus-widget-expression .error-icon { + color: #fcc335; + cursor: pointer; + font-size: 20px; +} +.perseus-widget-expression .error-text { + background-color: #fff; + padding: 5px; + width: 210px; +} +.perseus-widget-expression.show-error-tooltip .perseus-math-input.mq-editable-field.mq-math-mode > .mq-root-block { + padding-right: 25px; +} +.perseus-widget-expression .perseus-formats-tooltip { + width: 190px; +} +#answer_area .perseus-widget-expression .perseus-math-input.mq-editable-field.mq-math-mode { + min-width: 130px; +} +#answer_area .perseus-widget-expression .error-tooltip .error-text-container { + left: -125px !important; + top: -17px !important; +} +#answer_area .perseus-widget-expression .error-tooltip .error-text { + font-size: 12px; + width: 90px; +} +#answer_area .perseus-widget-expression .error-tooltip .tooltipContainer > div:first-child { + visibility: hidden !important; +} +.perseus-widget-expression-old, +.perseus-widget-expression-old > .output, +.perseus-widget-expression-old > .output > .tex, +.perseus-widget-expression-old > .output > .placeholder { + display: block; +} +.perseus-widget-expression-old > input, +#answer_area .perseus-widget-expression-old > input { + font-size: 14px; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + direction: ltr; + margin-bottom: 5px; + max-width: 240px; + width: 100%; +} +.perseus-widget-expression-old > .output > .tex { + overflow-x: auto; +} +.perseus-widget-expression-old > .output > .placeholder { + position: relative; + height: 40px; + overflow-y: hidden; +} +.perseus-widget-expression-old > .output > .placeholder > .error { + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + background: #f7f7f7; + border: 1px solid #ddd; + box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5); + color: #000; + display: none; + font-weight: normal; + min-height: 22px; + width: 168px; + position: absolute; + top: 0px; + left: 40px; + margin: auto; +} +.perseus-widget-expression-old > .output > .placeholder > .error > .buddy { + background-image: url(/images/perseus/error-buddy.png); + background-size: 100%; + height: 36px; + width: 40px; + position: absolute; + top: -3px; + left: -42px; +} +.perseus-widget-expression-old > .output > .placeholder > .error > .message { + font: 12px "Helvetica Neue", Helvetica, Arial, sans-serif; + line-height: 1.4em; + margin: 0px 4px; +} +.perseus-widget-radio li span.checkbox input[type=radio], +#answer_area .perseus-widget-radio li span.checkbox input[type=radio] { + float: none; + margin: 3px; +} +.perseus-widget-radio div, +.perseus-widget-radio div > p { + /* TODO(alpert): Find a better way of doing inline renderers */ + display: inline; +} +.perseus-widget-radio li { + padding: 7px 0; + margin-left: 20px; + cursor: pointer; +} +.perseus-widget-radio li.inline { + display: inline-block; + padding-left: 20px; +} +.perseus-widget-radio li span.checkbox { + position: relative; + z-index: 3; + display: inline-block; + width: 20px; + margin-left: -20px; + margin-right: 0; +} +.perseus-widget-radio li div.instructions { + margin-bottom: 5px; +} +.perseus-widget-radio li .value { + display: block; + margin-left: 18px; + min-height: 22px; +} +.perseus-widget-radio li img { + vertical-align: middle; +} +.perseus-widget-radio .perseus-radio-clue { + color: #007aff; + display: block; +} +.perseus-widget-radio .perseus-textarea-pair, +.perseus-widget-radio .perseus-textarea-underlay { + display: block; +} +body.mobile .framework-perseus #problemarea input[type=radio], +body.mobile .framework-perseus #problemarea input[type=checkbox] { + float: left; + margin-right: 7px; +} +body.mobile .perseus-widget-radio { + color: #aaaaaa; + margin-left: 0; +} +body.mobile .perseus-widget-radio .perseus-radio-option { + margin-left: 0; + padding: 0; +} +body.mobile .perseus-widget-radio span.checkbox { + position: relative; + z-index: 3; + margin-right: 26px; + display: block; + margin: 0; + width: auto; +} +body.mobile .perseus-widget-radio .perseus-radio-option { + border: 2px solid #aaaaaa; + border-radius: 28px; + box-sizing: border-box; + cursor: pointer; + display: block; + font: 700 14pt/30px "Avenir", "Helvetica", "Arial", sans-serif; + margin-bottom: 10px; + overflow: hidden; + padding: 8px 10px; +} +body.mobile .perseus-widget-radio .perseus-radio-option.perseus-radio-selected { + border-color: #1c758a; + color: #1c758a; + font-weight: bold; +} +body.mobile .perseus-widget-radio input[type=radio], +body.mobile .perseus-widget-radio input[type=checkbox] { + -webkit-appearance: none; + appearance: none; + border: 2px solid #aaaaaa; + border-radius: 25px; + float: left; +} +body.mobile .perseus-widget-radio input[type=radio] { + height: 25px; + margin-right: 10px; + outline: none; + width: 25px; +} +body.mobile .perseus-widget-radio input[type=radio]:checked { + background: #1c758a; + border: 2px solid #1c758a; +} +body.mobile .perseus-widget-radio input[type=checkbox] { + position: absolute; + outline: none; +} +body.mobile .perseus-widget-radio input[type=checkbox]:before { + color: #aaaaaa; + content: "\f00c"; + font: 15pt "FontAwesome"; + left: 0; + position: relative; + top: 1px; +} +body.mobile .perseus-widget-radio input[type=checkbox]:checked { + border-color: #1c758a; +} +body.mobile .perseus-widget-radio input[type=checkbox]:checked:before { + color: #1c758a; +} +.perseus-widget-interactive-graph { + padding: 25px 25px 0 0; +} +.graphie-container { + position: relative; +} +.graphie-container img { + position: absolute; +} +.categorization-container { + position: relative; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + user-select: none; +} +.categorization-container .categories, +.categorization-container .bank { + float: left; +} +.categorization-container .categories { + width: 231px; +} +.categorization-container .cards-list { + padding: 13px; +} +.categorization-container .category { + float: left; + padding: 8px; + width: 215px; + text-align: center; +} +.categorization-container .category .card-container { + float: left; + width: 100%; + display: block; +} +.categorization-container .category.target .cards-list.cards-area { + border-color: #999999; + box-shadow: 0 0 4px #7d7d7d; + -moz-box-shadow: 0 0 4px #7d7d7d; + -ms-box-shadow: 0 0 4px #7d7d7d; + -o-box-shadow: 0 0 4px #7d7d7d; + -webkit-box-shadow: 0 0 4px #7d7d7d; +} +.categorization-container .header { + font-weight: bold; + margin-bottom: 5px; +} +.categorization-container .target .header { + color: black; +} +.categorization-container .card { + min-height: 26px; + text-align: center; + line-height: 24px; + width: 167px; + padding: 6px 8px; + margin: 0 auto; + transition-property: border-color, box-shadow; + transition-duration: 150ms; + -moz-transition-property: border-color, -moz-box-shadow; + -moz-transition-duration: 150ms; + -webkit-transition-property: border-color, -webkit-box-shadow; + -webkit-transition-duration: 150ms; +} +.categorization-container .card:hover { + transition-property: border-color, box-shadow; + transition-duration: 150ms; + -moz-transition-property: border-color, -moz-box-shadow; + -moz-transition-duration: 150ms; + -webkit-transition-property: border-color, -webkit-box-shadow; + -webkit-transition-duration: 150ms; +} +.categorization-container .card-container { + float: left; + padding: 4px 0; +} +.categorization-container .card-hidden { + visibility: hidden; + z-index: 0; +} +.categorization-container .card.dragging { + position: absolute; + display: none; + z-index: 4; + border-color: #ffa500; + box-shadow: 0 0 4px #c78100; + -moz-box-shadow: 0 0 4px #c78100; + -ms-box-shadow: 0 0 4px #c78100; + -o-box-shadow: 0 0 4px #c78100; + -webkit-box-shadow: 0 0 4px #c78100; +} +.categorization-container .card.placeholder > * { + visibility: hidden; +} +.categorization-container.currently-dragging .card { + opacity: 0.4; +} +.categorization-container.currently-dragging .card.dragging { + display: block; + background-color: white; + opacity: 1; + filter: opacity(1); +} +.categorization-container div.paragraph { + margin: 0; +} +.categorizer-container { + margin-top: 20px; +} +.categorizer-container div.paragraph { + margin: 10px 0px; +} +.categorizer-container .category { + text-align: center; +} +.categorizer-container th.category { + vertical-align: bottom; +} +.categorizer-container label { + position: relative; + z-index: 2; +} +.categorizer-container td.category { + padding: 0; + color: #ccc; + vertical-align: bottom; +} +.categorizer-container td.category input[type="radio"] { + display: none; +} +.categorizer-container td.category input[type="radio"] + span:before { + display: inline-block; + position: relative; + font-family: 'FontAwesome'; + font-size: 30px; + width: 30px; + padding-right: 3px; + bottom: 9px; + content: "\f1db"; +} +.categorizer-container td.category label span:hover { + color: #999; +} +.categorizer-container td.category input[type="radio"]:checked + span:before { + content: "\f111"; + color: #333; +} +.perseus-widget-plotter svg, +.perseus-widget-plotter vml { + position: absolute; +} +.perseus-widget-plotter span.rotate { + -moz-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; +} +.perseus-widget-plotter body.ie span.rotate { + left: 60px !important; + top: 140px !important; +} +.set-from-scale-box { + border: 2px solid #EEEEEE; + border-radius: 3px; + padding: 3px; +} +.categories-title { + font-size: 14px; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown { + text-align: left; + margin: 20px auto 0; + border-collapse: collapse; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown tr { + height: 23px; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown th, +.framework-perseus table.perseus-widget-table-of-values.non-markdown td { + border: 2px solid black; + border-width: 0 2px; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown th:first-child, +.framework-perseus table.perseus-widget-table-of-values.non-markdown td:first-child { + border-left: 0; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown th:last-child, +.framework-perseus table.perseus-widget-table-of-values.non-markdown td:last-child { + border-right: 0; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown th { + font-weight: normal; + padding: 5px; + width: 80px; + text-align: left; + border-bottom: 2px solid black; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown th .paragraph { + margin: 0; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown td { + padding: 0px 5px; + text-align: right; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown tbody tr:first-child td { + padding-top: 5px; +} +.framework-perseus table.perseus-widget-table-of-values input, +#answer_area table.perseus-widget-table-of-values input { + width: 80px; +} +.perseus-widget-dropdown { + position: relative; +} +.perseus-widget-dropdown .fancy-select { + border: 3px solid #358fa4; + border-radius: 40px; + color: #358fa4; + font: 700 23pt avenir, sans-serif; + z-index: 3; + padding: 0 60px 0 35px; + min-width: 40px; + min-height: 40px; + cursor: pointer; + white-space: nowrap; + user-select: none; + -webkit-user-select: none; +} +.perseus-widget-dropdown .fancy-select:before { + font-size: 0; + visibility: hidden; + content: "_"; +} +.perseus-widget-dropdown .fancy-select > .placeholder { + opacity: 0.5; +} +.perseus-widget-dropdown .fancy-select.active { + opacity: 0.5; +} +.perseus-widget-dropdown .fancy-select:after { + color: #358fa4; + content: "\f0dd"; + font: 24pt "FontAwesome"; + position: absolute; + top: 0px; + right: 17px; +} +.perseus-widget-dropdown .fancy-select-options { + color: #358fa4; + position: absolute; + z-index: 4; + min-width: 100%; + overflow-y: hidden; +} +.perseus-widget-dropdown .fancy-option { + cursor: pointer; + padding: 3px 20px 3px 38px; + font-size: 17pt; + line-height: 22pt; + background: rgba(255, 255, 255, 0.95); + border: 3px solid #358fa4; + display: block; + border-radius: 20px; + min-width: 40px; + min-height: 30px; + margin-top: -70px; +} +.perseus-widget-dropdown .fancy-option:before { + content: ""; + width: 16px; + height: 16px; + position: absolute; + border: 3px solid #358fa4; + margin-top: 4px; + margin-left: -30px; + border-radius: 25px; +} +.perseus-widget-dropdown .fancy-option.selected:before { + background: #358fa4; +} +.perseus-widget-dropdown .fancy-option.active { + margin-top: 6px; + -webkit-animation-name: perseus-fancy-dropdown-slideout; + -webkit-animation-duration: 0.35s; + -webkit-animation-timing-function: ease-out; +} +.perseus-widget-dropdown .fancy-option.closed { + margin-top: -70px; + -webkit-animation-name: perseus-fancy-dropdown-slidein; + -webkit-animation-duration: 0.2s; + -webkit-animation-timing-function: ease-in; +} +@-webkit-keyframes perseus-fancy-dropdown-slideout { + 0% { + margin-top: -70px; + } + 100% { + margin-top: 6px; + } +} +@-webkit-keyframes perseus-fancy-dropdown-slidein { + 0% { + margin-top: 6px; + } + 100% { + margin-top: -70px; + } +} +.orderer { + position: relative; + min-width: 480px; +} +.orderer .draggable-box { + padding: 13px; + min-height: 69px; + margin-top: 30px; +} +.orderer .card { + padding: 0 10px; + cursor: pointer; + position: relative; + user-select: none; + width: auto; +} +.orderer .card img { + vertical-align: middle; +} +.orderer.height-normal.layout-horizontal .card { + line-height: 65px; + height: 65px; +} +.orderer.height-normal.layout-vertical .card { + padding: 5px; +} +.orderer.height-large .card { + line-height: 160px; + height: 160px; +} +.orderer.height-auto .card { + padding: 0; +} +.orderer.height-auto.layout-horizontal .drag-hint { + min-height: 65px; + min-width: 22px; +} +.orderer .card-wrap { + position: relative; + z-index: 3; + margin-right: 4px; + width: auto; + float: left; +} +.orderer .bank { + margin: 0px 13px; +} +.orderer .bank .card-wrap { + margin-right: 10px; + margin-bottom: 8px; +} +.orderer div.paragraph { + margin: 0; +} +.orderer.layout-vertical .card-wrap { + float: none; + text-align: center; +} +.orderer.layout-vertical .bank, +.orderer.layout-vertical .draggable-box { + box-sizing: border-box; + -moz-box-sizing: border-box; + float: left; + max-width: 50%; +} +.orderer.layout-vertical .bank { + padding: 10px 0 0 0; + margin: 0; +} +.orderer.layout-vertical .bank .card-wrap { + margin-right: 20px; +} +.orderer.layout-vertical .draggable-box { + margin-top: 0; + min-height: 170px; + padding: 10px; +} +.orderer.layout-vertical .draggable-box .card-wrap:first-child { + margin: 0; +} +.orderer.layout-vertical .draggable-box .card-wrap { + margin: 8px 0 0 0; +} +.orderer.layout-vertical .draggable-box .drag-hint { + box-sizing: border-box; + min-width: 140px; + min-height: 34px; +} +.orderer.layout-vertical .draggable-box .placeholder { + box-sizing: border-box; +} +.perseus-widget-measurer { + position: relative; +} +.perseus-widget-measurer img { + position: absolute; +} +.perseus-widget-measurer-url { + width: 70%; +} +.perseus-widget-transformer .highlighted-tool-button { + text-shadow: 1px 1px rgba(0, 0, 0, 0.25); +} +.perseus-widget-transformer .graphie-container { + margin-bottom: 10px; +} +.perseus-widget-transformer .transformer-undo-button { + float: right; +} +.perseus-widget-transformer .perseus-transformation-list { + margin-top: 10px; + margin-bottom: 10px; +} +.perseus-widget-transformer .perseus-transformation-list input { + width: 40px; +} +.perseus-widget-matcher .column { + float: left; + max-width: 50%; +} +.perseus-widget-matcher .column:first-child .column-label, +.perseus-widget-matcher .column:first-child .perseus-sortable { + padding-right: 5px; +} +.perseus-widget-matcher .column + .column .column-label, +.perseus-widget-matcher .column + .column .perseus-sortable { + border-left: 1px solid #444444; + padding-left: 5px; +} +.perseus-widget-matcher .column-label { + border-bottom: 1px solid #444444; + padding-bottom: 5px; + text-align: center; +} +.perseus-widget-matcher .column-label div.paragraph { + margin: 0; +} +.perseus-widget-matcher .perseus-sortable { + padding-top: 5px; +} +.draggy-boxy-thing .draggable-box, +.draggy-boxy-thing .cards-area { + background: #eee; + border: 1px solid #ccc; + border-bottom: 1px solid #aaa; + box-shadow: 0 1px 2px #ccc; + -moz-box-shadow: 0 1px 2px #ccc; + -webkit-box-shadow: 0 1px 2px #ccc; +} +.draggy-boxy-thing .cards-area { + position: relative; + z-index: 2; +} +.draggy-boxy-thing .card { + position: relative; + z-index: 3; + background-color: #fff; + border: 1px solid #b9b9b9; + border-bottom-color: #939393; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + cursor: pointer; +} +.draggy-boxy-thing .card.placeholder { + background: #ddd; + border: 1px solid #ccc; +} +.draggy-boxy-thing .card.drag-hint { + background: none; + border: 1px dashed #aaa; + cursor: auto; +} +.draggy-boxy-thing .card.drag-hint:hover { + border-color: #aaa; + box-shadow: none; +} +.draggy-boxy-thing .card.dragging { + background-color: #ffedcd; + opacity: 0.8; + filter: opacity(0.8); +} +.draggy-boxy-thing .card.stack { + z-index: auto; +} +.draggy-boxy-thing .card.stack:after { + content: " "; + background-color: #fff; + border: 1px solid #b9b9b9; + border-bottom-color: #939393; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + height: 100%; + width: 100%; + z-index: -1; + top: 1px; + left: 1px; + position: absolute; +} +.draggy-boxy-thing .card:hover { + border-color: #ffa500; + box-shadow: 0 0 4px #c78100; + -moz-box-shadow: 0 0 4px #c78100; + -ms-box-shadow: 0 0 4px #c78100; + -o-box-shadow: 0 0 4px #c78100; + -webkit-box-shadow: 0 0 4px #c78100; +} +.perseus-sortable { + position: relative; + z-index: 3; + box-sizing: border-box; + -moz-box-sizing: border-box; + float: left; +} +.perseus-sortable .perseus-sortable-card { + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + box-sizing: border-box; + -moz-box-sizing: border-box; + cursor: pointer; + min-width: 25px; + min-height: 44px; + padding: 10px; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; +} +.perseus-sortable .perseus-sortable-placeholder { + background: #ddd; + border: 1px solid #ccc; +} +.perseus-sortable .perseus-sortable-draggable { + font-size: 0; + text-align: center; +} +.perseus-sortable .perseus-sortable-draggable:before { + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; +} +.perseus-sortable .perseus-sortable-draggable > div { + display: inline-block; + font-size: 14px; + max-width: 100%; + vertical-align: middle; +} +.perseus-sortable .perseus-sortable-draggable div.paragraph { + margin: 0; +} +.perseus-sortable .perseus-sortable-draggable.perseus-sortable-static { + cursor: pointer; +} +.perseus-sortable .perseus-sortable-draggable.perseus-sortable-static:hover { + border-color: #ffa500; + box-shadow: 0 0 4px #c78100; + -moz-box-shadow: 0 0 4px #c78100; + -ms-box-shadow: 0 0 4px #c78100; + -o-box-shadow: 0 0 4px #c78100; + -webkit-box-shadow: 0 0 4px #c78100; +} +.perseus-sortable .perseus-sortable-draggable.perseus-sortable-dragging { + background-color: #ffedcd; + filter: opacity(0.8); + opacity: 0.8; +} +.perseus-sortable .perseus-sortable-draggable.perseus-sortable-disabled { + background-color: inherit; + border: 1px solid transparent; + cursor: default; +} +.perseus-sortable.layout-horizontal .perseus-sortable-card { + float: left; +} +.perseus-sortable.layout-horizontal .perseus-sortable-dragging { + cursor: ew-resize; +} +.perseus-sortable.layout-vertical, +.perseus-sortable.layout-vertical .perseus-sortable-card { + max-width: 100%; +} +.perseus-sortable.layout-vertical .perseus-sortable-dragging { + cursor: ns-resize; +} +.perseus-sortable.unpadded .perseus-sortable-card { + padding: 0; +} +.perseus-sortable.unpadded .perseus-sortable-card img { + vertical-align: bottom; +} +.perseus-widget-image .label-settings td { + padding: 5px 4px; + text-align: center; +} +.perseus-widget-image .label-settings tr:nth-child(odd) td { + background-color: transparent; +} +.perseus-widget-image .label-settings th, +.perseus-widget-image .label-settings td { + border-width: 0; +} +.perseus-diff { + margin: 0 10px; +} +.perseus-diff .diff-header { + font-size: 18px; + padding: 10px 0; + width: 50%; + display: inline-block; +} +.perseus-diff .diff-header.collapsed { + font-size: 14px; + padding: 0px; +} +.perseus-diff .diff-body { + border-top: 1px solid #e4e4e4; + border-bottom: 1px solid #e4e4e4; +} +.perseus-diff .diff-row { + width: 50%; + white-space: pre-wrap; + box-sizing: border-box; + -moz-box-sizing: border-box; + font-size: 14px; + padding-right: 20px; + padding-left: 10px; + overflow: hidden; +} +.perseus-diff .diff-row.collapsed { + color: #888; + cursor: pointer; +} +.perseus-diff .diff-row.collapsed:hover { + color: #666; +} +.perseus-diff .diff-row.collapsed:active { + color: #444; +} +.perseus-diff .diff-row .diff-line { + margin-bottom: 20px; +} +.perseus-diff .before { + float: left; + border-left: 1px solid #e4e4e4; +} +.perseus-diff .after { + float: right; + border-right: 1px solid #e4e4e4; + border-left: 1px solid #e4e4e4; +} +.perseus-diff .inner-value { + height: 100%; + padding: 3px; +} +.perseus-diff .not-present { + display: none; +} +.perseus-diff .blank-space { + visibility: hidden; +} +.perseus-diff .added { + background-color: #EEFFEE; +} +.perseus-diff .added.dark { + background-color: #AAFFAA; +} +.perseus-diff .removed { + background-color: #FFEEEE; +} +.perseus-diff .removed.dark { + background-color: #FFAAAA; +} +.perseus-diff .image { + margin-left: 20px; + margin-bottom: 10px; +} +.perseus-diff .image-unchanged { + border: 1px solid #AAAAAA; +} +.perseus-diff .image-added { + border: 2px solid #AAFFAA; +} +.perseus-diff .image-removed { + border: 2px solid #FFAAAA; +} + +.perseus-widget-container { + font-size: 14px; +} + +.perseus-widget-container.widget-nohighlight { + transition: all 0.15s; +} +.perseus-widget-container.widget-highlight { + -webkit-box-shadow: 0px 0px 9px 2px #ffa500; + -moz-box-shadow: 0px 0px 9px 2px #ffa500; + box-shadow: 0px 0px 9px 2px #ffa500; + transition: all 0.15s; +} +.perseus-tooltip { + background: #fff; + padding: 5px 10px; + width: 240px; +} +.perseus-formats-tooltip { + background: #fff; + padding: 5px 10px; + width: 240px; + color: #777; +} +.framework-perseus .perseus-formats-tooltip .paragraph > ul { + padding: 0; + margin: -20px 0 -16px 0; +} +.framework-perseus .perseus-formats-tooltip .paragraph > ul > li { + list-style-type: none; +} +.perseus-math-input.mq-editable-field.mq-math-mode { + background: #fff; + font-size: 18px; + min-width: 100px; +} +.perseus-math-input.mq-editable-field.mq-math-mode > .mq-root-block { + border-color: #a4a4a4; + border-radius: 5px; + padding: 4px; +} +.perseus-math-input.mq-editable-field.mq-math-mode .mq-cursor { + padding-left: 0; +} +.perseus-math-input.mq-editable-field.mq-math-mode .mq-paren.mq-ghost { + color: inherit; +} +.perseus-math-input.mq-editable-field.mq-math-mode .mq-paren + span { + margin: 0; +} +.math-input-buttons { + background-color: rgba(255, 255, 255, 0.7); + border-radius: 5px; + border: 1px solid #ddd; + box-sizing: border-box; + margin-top: 5px; + padding: 2px; + width: 240px; +} +.math-input-buttons.absolute { + left: -2px; + position: absolute; + top: -3px; + z-index: 5; +} +.tex-button { + display: block; + float: left; + width: 41px; + height: 41px; + margin: 2px; + border: 1px solid #1c758a; + background-color: white; + border-radius: 5px; +} +.tex-button:hover { + cursor: pointer; + background-color: #f0f0f0; +} +.tex-button:focus { + border: 2px solid #1c758a; + outline: none; +} +.tex-button-row { + margin: 5px 0; +} +.tex-button-row:first-child, +.tex-button-row:last-child { + margin: 0; +} diff --git a/css/variables.less b/css/variables.less new file mode 100644 index 0000000000..8185e35305 --- /dev/null +++ b/css/variables.less @@ -0,0 +1,13 @@ +// Steal from webapp/stylesheets/shared-package/variables.less +@baseFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif; +@clueColor: #007AFF; +@blue: #1c758a; +@gray: #aaa; +@questionWidth: 480px; + +// Layer variables +@zIndexScratchPad: 1; +@zIndexAboveScratchpad: @zIndexScratchPad + 1; +@zIndexInteractiveComponent: @zIndexAboveScratchpad + 1; +@zIndexCurrentlyDragging: @zIndexInteractiveComponent + 1; +@zIndexCalculator: @zIndexCurrentlyDragging + 1; diff --git a/css/widgets/categorization.less b/css/widgets/categorization.less new file mode 100644 index 0000000000..27cfd38787 --- /dev/null +++ b/css/widgets/categorization.less @@ -0,0 +1,106 @@ +.categorization-container { + @categoryWidth: 215px; + + position: relative; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + user-select: none; + + .categories, + .bank { + float: left; + } + + .categories { + width: (@categoryWidth + 16px); + } + + .cards-list { + padding: 13px; + } + + .category { + float: left; + padding: 8px; + width: @categoryWidth; + text-align: center; + + .card-container { + float: left; + width: 100%; + display: block; + } + &.target .cards-list.cards-area { + .draggy-boxy-thing-hover(#999); + } + } + .header { + font-weight: bold; + margin-bottom: 5px; + } + .target .header { + color: black; + } + .card { + min-height: 26px; + text-align: center; + line-height: 24px; + width: (@categoryWidth - 48px); + padding: 6px 8px; + margin: 0 auto; + + &:hover { + transition-property: border-color, box-shadow; + transition-duration: 150ms; + -moz-transition-property: border-color, -moz-box-shadow; + -moz-transition-duration: 150ms; + -webkit-transition-property: border-color, -webkit-box-shadow; + -webkit-transition-duration: 150ms; + } + transition-property: border-color, box-shadow; + transition-duration: 150ms; + -moz-transition-property: border-color, -moz-box-shadow; + -moz-transition-duration: 150ms; + -webkit-transition-property: border-color, -webkit-box-shadow; + -webkit-transition-duration: 150ms; + } + + .card-container { + float: left; + padding: 4px 0; + } + + .card-hidden { + visibility: hidden; + z-index: 0; + } + + .card.dragging { + position: absolute; + display: none; + z-index: @zIndexCurrentlyDragging; + .draggy-boxy-thing-hover(); + } + + .card.placeholder > * { + visibility: hidden; + } + + &.currently-dragging { + .card { + opacity: 0.4; + } + .card.dragging { + display: block; + background-color: white; + opacity: 1; + filter: opacity(1); + } + } + + div.paragraph { + margin: 0; + } +} diff --git a/css/widgets/categorizer.less b/css/widgets/categorizer.less new file mode 100644 index 0000000000..4d18ea1af8 --- /dev/null +++ b/css/widgets/categorizer.less @@ -0,0 +1,50 @@ +.categorizer-container { + margin-top: 20px; + + div.paragraph { + margin: 10px 0px; + } + + .category { + text-align: center; + } + + th.category { + vertical-align: bottom; + } + + label { + .above-scratchpad; + } + + td.category { + padding: 0; + color: #ccc; + vertical-align: bottom; + + input[type="radio"] { + display: none; + } + + input[type="radio"] + span:before { + display: inline-block; + position: relative; + font-family: 'FontAwesome'; + font-size: 30px; + width: 30px; + padding-right: 3px; + bottom: 9px; + content: "\f1db"; // fa-circle-thin + } + + label span:hover { + color: #999; + } + + input[type="radio"]:checked + span:before { + content: "\f111"; // fa-circle + color: #333; + } + } + +} diff --git a/css/widgets/dropdown.less b/css/widgets/dropdown.less new file mode 100644 index 0000000000..4fba3b0ed1 --- /dev/null +++ b/css/widgets/dropdown.less @@ -0,0 +1,120 @@ +@fancyDropdownColor: rgb(53, 143, 164); +@fancyDropdownOptionHiddenMargin: -70px; +@fancyDropdownOptionVisibleMargin: 6px; + +.perseus-widget-dropdown { + position: relative; + + .fancy-select { + // Put some placeholder content hidden but always in the dropdown + // so that its text-baseline vertical positioning doesn't change + // when content is added + &:before { + font-size: 0; // to prevent it from moving the actual content + visibility: hidden; + content: "_"; + } + + border: 3px solid @fancyDropdownColor; + border-radius: 40px; + color: @fancyDropdownColor; + font: 700 23pt avenir, sans-serif; + z-index: @zIndexInteractiveComponent; + padding: 0 60px 0 35px; + min-width: 40px; + min-height: 40px; + cursor: pointer; + white-space: nowrap; + user-select: none; + -webkit-user-select: none; + + > .placeholder { + opacity: 0.5; + } + + &.active { + opacity: 0.5; + } + + &:after { + color: @fancyDropdownColor; + content: "\f0dd"; + font: 24pt "FontAwesome"; + position: absolute; + top: 0px; + right: 17px; + } + } + + .fancy-select-options { + color: @fancyDropdownColor; + position: absolute; + z-index: @zIndexCurrentlyDragging; + min-width: 100%; + // For animating them downwards + overflow-y: hidden; + } + + .fancy-option { + &:before { + content: ""; + width: 16px; + height: 16px; + position: absolute; + border: 3px solid @fancyDropdownColor; + margin-top: 4px; + margin-left: -30px; + border-radius: 25px; + } + + cursor: pointer; + padding: 3px 20px 3px 38px; + font-size: 17pt; + line-height: 22pt; + background: rgba(255, 255, 255, 0.95); + border: 3px solid @fancyDropdownColor; + display: block; + border-radius: 20px; + min-width: 40px; + min-height: 30px; + margin-top: @fancyDropdownOptionHiddenMargin; + + &.selected { + &:before { + background: @fancyDropdownColor; + } + } + + &.active { + margin-top: @fancyDropdownOptionVisibleMargin; + -webkit-animation-name: perseus-fancy-dropdown-slideout; + -webkit-animation-duration: 0.35s; + -webkit-animation-timing-function: ease-out; + } + + &.closed { + margin-top: @fancyDropdownOptionHiddenMargin; + -webkit-animation-name: perseus-fancy-dropdown-slidein; + -webkit-animation-duration: 0.2s; + -webkit-animation-timing-function: ease-in; + } + } +} + +@-webkit-keyframes perseus-fancy-dropdown-slideout { + 0% { + margin-top: @fancyDropdownOptionHiddenMargin; + } + 100% { + margin-top: @fancyDropdownOptionVisibleMargin; + } +} + +@-webkit-keyframes perseus-fancy-dropdown-slidein { + 0% { + margin-top: @fancyDropdownOptionVisibleMargin; + } + 100% { + margin-top: @fancyDropdownOptionHiddenMargin; + } +} diff --git a/css/widgets/expression.less b/css/widgets/expression.less new file mode 100644 index 0000000000..4b23a8c19a --- /dev/null +++ b/css/widgets/expression.less @@ -0,0 +1,133 @@ +.perseus-widget-expression { + & > span, .error-tooltip { + display: inline-block; + vertical-align: middle; + } + + position: relative; + + .error-tooltip { + position: absolute; + right: 6px; + top: -2px; + } + + .error-icon { + color: #fcc335; + cursor: pointer; + font-size: 20px; + } + + .error-text { + background-color: #fff; + padding: 5px; + width: 210px; + } + + &.show-error-tooltip .perseus-math-input.mq-editable-field.mq-math-mode > .mq-root-block { + padding-right: 25px; + } + + .perseus-formats-tooltip { + width: 190px; + } +} + +#answer_area .perseus-widget-expression { + // Super hacky overrides to make the error tooltip fit into the answer area + // by putting it on top of the MathQuill input. + + // TODO(alex): Implement arrows coming from the middle of the tooltip side, + // then use some of those here; e.g. align to left middle + + .perseus-math-input.mq-editable-field.mq-math-mode { + // Make the input wider so that error message never scrolls left + min-width: 130px; + } + + .error-tooltip { + .error-text-container { + // Move the tooltip to the left of the error icon + left: -125px !important; + top: -17px !important; + } + + .error-text { + // Make the error message much smaller + font-size: 12px; + width: 90px; + } + + .tooltipContainer > div:first-child { + // Hide the little triangle "arrow" created by the tooltip + // (If it weren't in a corner, we wouldn't have to hide it) + visibility: hidden !important; + } + } +} + +// Old expression widget +.perseus-widget-expression-old { + &, + > .output, + > .output > .tex, + > .output > .placeholder { + display: block; + } +} + +.perseus-widget-expression-old > input, +#answer_area .perseus-widget-expression-old > input { + font-size: 14px; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + direction: ltr; + margin-bottom: 5px; + max-width: 240px; + width: 100%; +} + +.perseus-widget-expression-old > .output > .tex { + overflow-x: auto; +} + +.perseus-widget-expression-old > .output > .placeholder { + position: relative; + height: 40px; + overflow-y: hidden; +} + +.perseus-widget-expression-old > .output > .placeholder > .error { + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + background: #f7f7f7; + border: 1px solid #ddd; + box-shadow: 2px 2px 5px rgba(0,0,0,0.5); + color: #000; + display: none; + font-weight: normal; + min-height: 22px; + width: 168px; + position: absolute; + top: 0px; + left: 40px; + margin: auto; +} + +.perseus-widget-expression-old > .output > .placeholder > .error > .buddy { + background-image: url(/images/perseus/error-buddy.png); + background-size: 100%; + height: 36px; + width: 40px; + position: absolute; + top: -3px; + left: -42px; +} + +.perseus-widget-expression-old > .output > .placeholder > .error > .message { + font: 12px @baseFontFamily; + line-height: 1.4em; + margin: 0px 4px; +} diff --git a/css/widgets/image.less b/css/widgets/image.less new file mode 100644 index 0000000000..c9eeceab6b --- /dev/null +++ b/css/widgets/image.less @@ -0,0 +1,18 @@ +.perseus-widget-image { + .label-settings { + td { + padding: 5px 4px; + text-align: center + } + + tr:nth-child(odd) { + td { + background-color: transparent; + } + } + + th, td { + border-width: 0; + } + } +} \ No newline at end of file diff --git a/css/widgets/interactive-graph.less b/css/widgets/interactive-graph.less new file mode 100644 index 0000000000..73034ab523 --- /dev/null +++ b/css/widgets/interactive-graph.less @@ -0,0 +1,11 @@ +.perseus-widget-interactive-graph { + padding: 25px 25px 0 0; +} + +.graphie-container { + position: relative; + + img { + position: absolute; + } +} diff --git a/css/widgets/matcher.less b/css/widgets/matcher.less new file mode 100644 index 0000000000..df10294ca0 --- /dev/null +++ b/css/widgets/matcher.less @@ -0,0 +1,36 @@ +.perseus-widget-matcher { + @matcher-border: 1px solid #444; + @matcher-padding: 5px; + + .column { + float: left; + max-width: 50%; + + &:first-child { + .column-label, .perseus-sortable { + padding-right: @matcher-padding; + } + } + + & + .column { + .column-label, .perseus-sortable { + border-left: @matcher-border; + padding-left: @matcher-padding; + } + } + } + + .column-label { + border-bottom: @matcher-border; + padding-bottom: @matcher-padding; + text-align: center; + + div.paragraph { + margin: 0; + } + } + + .perseus-sortable { + padding-top: @matcher-padding; + } +} diff --git a/css/widgets/measurer.less b/css/widgets/measurer.less new file mode 100644 index 0000000000..277bc59c4e --- /dev/null +++ b/css/widgets/measurer.less @@ -0,0 +1,10 @@ +.perseus-widget-measurer { + position: relative; + img { + position: absolute; + } +} + +.perseus-widget-measurer-url { + width: 70%; +} diff --git a/css/widgets/orderer.less b/css/widgets/orderer.less new file mode 100644 index 0000000000..c89d094bb2 --- /dev/null +++ b/css/widgets/orderer.less @@ -0,0 +1,115 @@ +.orderer { + position: relative; + // HACK (jack): The highlight inline-div around a horizontal + // orderer will squash this together unless we set a min-width. + // Ideally we'd like to let the width expand based on the size + // of it's container (maybe?) + min-width: @questionWidth; + + .draggable-box { + padding: 13px; + min-height: 69px; + margin-top: 30px; + } + + .card { + padding: 0 10px; + cursor: pointer; + position: relative; + user-select: none; + width: auto; + + img { + vertical-align: middle; + } + } + + &.height-normal.layout-horizontal .card { + line-height: 65px; + height: 65px; + } + + &.height-normal.layout-vertical .card { + padding: 5px; + } + + &.height-large .card { + // TODO(alex): remove after checking that no items use this option + line-height: 160px; + height: 160px; + } + + &.height-auto .card { + padding: 0; + } + + &.height-auto.layout-horizontal .drag-hint { + min-height: 65px; + min-width: 22px; + } + + .card-wrap { + .interactive-component; + margin-right: 4px; + width: auto; + float: left; + } + + .bank { + margin: 0px 13px; + + .card-wrap { + margin-right: 10px; + margin-bottom: 8px; + } + } + + div.paragraph { + margin: 0; + } + + &.layout-vertical .card-wrap { + float: none; + text-align: center; + } + + &.layout-vertical .bank, &.layout-vertical .draggable-box { + box-sizing: border-box; + -moz-box-sizing: border-box; + float: left; + max-width: 50%; + } + + &.layout-vertical .bank { + padding: 10px 0 0 0; + margin: 0; + + .card-wrap { + margin-right: 20px; + } + } + + &.layout-vertical .draggable-box { + margin-top: 0; + min-height: 170px; + padding: 10px; + + .card-wrap:first-child { + margin: 0; + } + + .card-wrap { + margin: 8px 0 0 0; + } + + .drag-hint { + box-sizing: border-box; + min-width: 140px; + min-height: 34px; + } + + .placeholder { + box-sizing: border-box; + } + } +} diff --git a/css/widgets/plotter.less b/css/widgets/plotter.less new file mode 100644 index 0000000000..ee1d4e7d31 --- /dev/null +++ b/css/widgets/plotter.less @@ -0,0 +1,26 @@ +.perseus-widget-plotter { + svg, vml { + position: absolute; + } + span.rotate { + -moz-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + } + body.ie span.rotate { + left: 60px !important; + top: 140px !important; + } +} + +.set-from-scale-box { + border: 2px solid #EEEEEE; + border-radius: 3px; + padding: 3px; +} + +.categories-title { + font-size: 14px; +} diff --git a/css/widgets/radio.less b/css/widgets/radio.less new file mode 100644 index 0000000000..1ccb188d67 --- /dev/null +++ b/css/widgets/radio.less @@ -0,0 +1,146 @@ +// Override the float: left on input[type=radio]s in the +// #answer_area from khan-exercise.css, because it breaks our +// margin-left: -20px positioning +.perseus-widget-radio, +#answer_area .perseus-widget-radio { + li span.checkbox input[type=radio] { + float: none; + margin: 3px; + } +} + +.perseus-widget-radio { + div, + div > p { + /* TODO(alpert): Find a better way of doing inline renderers */ + display: inline; + } + + li { + padding: 7px 0; + margin-left: 20px; + cursor: pointer; + + &.inline { + display: inline-block; + padding-left: 20px; + } + + span.checkbox { + .interactive-component; + display: inline-block; + width: 20px; + margin-left: -20px; + margin-right: 0; + } + + div.instructions { + margin-bottom: 5px; + } + + .value { + display: block; + margin-left: 18px; + min-height: 22px; + } + + img { + vertical-align: middle; + } + } + + .perseus-radio-clue { + color: @clueColor; + display: block; + } + + .perseus-textarea-pair, + .perseus-textarea-underlay { + display: block; + } +} + + +// Styles specifically for mobile +body.mobile { + .framework-perseus #problemarea input[type=radio], + .framework-perseus #problemarea input[type=checkbox] { + float: left; + margin-right: 7px; + } + .perseus-widget-radio { + color: @gray; + margin-left: 0; + .perseus-radio-option { + margin-left: 0; + padding: 0; + } + + span.checkbox { + .interactive-component; + margin-right: 26px; + display: block; + margin: 0; + width: auto; + } + + // General styles for the li + .perseus-radio-option { + border: 2px solid @gray; + border-radius: 28px; + box-sizing: border-box; + cursor: pointer; + display: block; + font: 700 14pt/30px "Avenir", "Helvetica", "Arial", sans-serif; + margin-bottom: 10px; + overflow: hidden; + padding: 8px 10px; + + &.perseus-radio-selected { + border-color: @blue; + color: @blue; + font-weight: bold; + } + } + + input[type=radio], + input[type=checkbox] { + -webkit-appearance: none; + appearance: none; + border: 2px solid @gray; + border-radius: 25px; + float: left; + } + + input[type=radio] { + height: 25px; + margin-right: 10px; + outline: none; + width: 25px; + &:checked { + background: @blue; + border: 2px solid @blue; + } + } + + input[type=checkbox] { + position: absolute; + outline: none; + + &:before { + color: @gray; + content: "\f00c"; + font: 15pt "FontAwesome"; + left: 0; + position: relative; + top: 1px; + } + &:checked { + border-color: @blue; + &:before { + color: @blue; + } + } + } + } +} diff --git a/css/widgets/sortable.less b/css/widgets/sortable.less new file mode 100644 index 0000000000..3a2b2b2145 --- /dev/null +++ b/css/widgets/sortable.less @@ -0,0 +1,202 @@ +.draggy-boxy-thing-hover (@color: #ffa500) { + border-color: @color; + @darker: darken(@color, 11%); + box-shadow: 0 0 4px @darker; + -moz-box-shadow: 0 0 4px @darker; + -ms-box-shadow: 0 0 4px @darker; + -o-box-shadow: 0 0 4px @darker; + -webkit-box-shadow: 0 0 4px @darker; +} + +.draggy-boxy-thing { + .draggable-box, + .cards-area { + background: #eee; + border: 1px solid #ccc; + border-bottom: 1px solid #aaa; + + box-shadow: 0 1px 2px #ccc; + -moz-box-shadow: 0 1px 2px #ccc; + -webkit-box-shadow: 0 1px 2px #ccc; + } + + // TODO(jack): Make this work for the orderer too. + // Right now don't do this for the orderer because it uses + // more complicated positioning that this would break + .cards-area { + .above-scratchpad; + } + + .card { + .interactive-component; + + background-color: #fff; + border: 1px solid #b9b9b9; + border-bottom-color: #939393; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + cursor: pointer; + + &.placeholder { + background:#ddd; + border: 1px solid #ccc; + } + + &.drag-hint { + background: none; + border: 1px dashed #aaa; + cursor: auto; + + &:hover { + border-color: #aaa; + box-shadow: none; + } + } + + &.dragging { + background-color: #ffedcd; + opacity: 0.8; + filter: opacity(0.8); + } + + &.stack { + z-index: auto; + &:after { + content: " "; + background-color: #fff; + border: 1px solid #b9b9b9; + border-bottom-color: #939393; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + height: 100%; + width: 100%; + z-index: -1; + top: 1px; + left: 1px; + position: absolute; + } + } + + &:hover { + .draggy-boxy-thing-hover(); + } + } +} + +.perseus-sortable { + // This should really be applied to individual items, but applying + // it here makes positioning simple + .interactive-component; + + box-sizing: border-box; + -moz-box-sizing: border-box; + float: left; + + .perseus-sortable-card { + background-color: #fff; + border: 1px solid #ddd; + + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + + box-sizing: border-box; + -moz-box-sizing: border-box; + + cursor: pointer; + + min-width: 25px; + min-height: 44px; + padding: 10px; + + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + } + + .perseus-sortable-placeholder { + background: #ddd; + border: 1px solid #ccc; + } + + .perseus-sortable-draggable { + font-size: 0; + text-align: center; + + &:before { + // Vertical-align, part 1 + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; + } + + & > div { + // Vertical-align, part 2 + display: inline-block; + font-size: 14px; + max-width: 100%; + vertical-align: middle; + } + + div.paragraph { + margin: 0; + } + + &.perseus-sortable-static { + cursor: pointer; + } + + &.perseus-sortable-static:hover { + .draggy-boxy-thing-hover(); + } + + &.perseus-sortable-dragging { + background-color: #ffedcd; + filter: opacity(0.8); + opacity: 0.8; + } + + &.perseus-sortable-disabled { + background-color: inherit; + border: 1px solid transparent; + cursor: default; + } + } + + &.layout-horizontal { + .perseus-sortable-card { + float: left; + } + + .perseus-sortable-dragging { + cursor: ew-resize; + } + } + + &.layout-vertical { + &, .perseus-sortable-card { + max-width: 100%; + } + + .perseus-sortable-dragging { + cursor: ns-resize; + } + } + + &.unpadded { + .perseus-sortable-card { + padding: 0; + img { + vertical-align: bottom; + } + } + } +} diff --git a/css/widgets/table.less b/css/widgets/table.less new file mode 100644 index 0000000000..6103310a1c --- /dev/null +++ b/css/widgets/table.less @@ -0,0 +1,47 @@ +// Extra specifity is needed to counteract generic tables +.framework-perseus table.perseus-widget-table-of-values.non-markdown { + text-align: left; + margin: 20px auto 0; + border-collapse: collapse; + + tr { + height: 23px; + } + + th, td { + border: 2px solid black; + border-width: 0 2px; + + &:first-child { + border-left: 0; + } + + &:last-child { + border-right: 0; + } + } + + th { + font-weight: normal; + padding: 5px; + width: 80px; + text-align: left; + border-bottom: 2px solid black; + .paragraph { + margin: 0; + } + } + + td { + padding: 0px 5px; + text-align: right; + } + + tbody tr:first-child td { + padding-top: 5px; + } +} +.framework-perseus table.perseus-widget-table-of-values input, +#answer_area table.perseus-widget-table-of-values input { + width: 80px; +} diff --git a/css/widgets/transformer.less b/css/widgets/transformer.less new file mode 100644 index 0000000000..9af0bba0de --- /dev/null +++ b/css/widgets/transformer.less @@ -0,0 +1,18 @@ +.perseus-widget-transformer { + .highlighted-tool-button { + text-shadow: 1px 1px rgba(0, 0, 0, 0.25); + } + .graphie-container { + margin-bottom: 10px; + } + .transformer-undo-button { + float: right; + } + .perseus-transformation-list { + input { + width: 40px; + } + margin-top: 10px; + margin-bottom: 10px; + } +} From 15c6503c83faa4929827f3dcc0254a00df16695c Mon Sep 17 00:00:00 2001 From: benny Date: Mon, 14 Dec 2015 14:23:15 +0800 Subject: [PATCH 042/156] word type error and use perseus-1.css --- build/perseus-1.css | 1178 +++++++++++++++++++++++++++++++++++++++++++ build/perseus-1.js | 2 +- 2 files changed, 1179 insertions(+), 1 deletion(-) create mode 100644 build/perseus-1.css diff --git a/build/perseus-1.css b/build/perseus-1.css new file mode 100644 index 0000000000..3365a1fc1e --- /dev/null +++ b/build/perseus-1.css @@ -0,0 +1,1178 @@ +#perseus { + position: relative; +} +.no-select { + -moz-user-select: -moz-none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + user-select: none; +} +.blank-background { + background-color: #FDFDFD; +} +#answer_area .blank-background { + background-color: transparent; +} +.above-scratchpad { + position: relative; + z-index: 2; +} +.graphie.above-scratchpad, +.graphie-container.above-scratchpad { + background-color: #FDFDFD; +} +.graphie { + -moz-user-select: -moz-none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + user-select: none; +} +.interactive-component, +.interactive-component.above-scratchpad { + position: relative; + z-index: 3; +} +#answercontent input[type=text].perseus-input-size-normal, +#answercontent input[type=number].perseus-input-size-normal, +.framework-perseus input[type=text].perseus-input-size-normal, +.framework-perseus input[type=number].perseus-input-size-normal { + width: 80px; +} +#answercontent input[type=text].perseus-input-size-small, +#answercontent input[type=number].perseus-input-size-small, +.framework-perseus input[type=text].perseus-input-size-small, +.framework-perseus input[type=number].perseus-input-size-small { + width: 40px; +} +#examples > div > ul { + list-style-type: disc; +} +.framework-perseus #problemarea input, +.framework-perseus #problemarea button { + position: relative; + z-index: 3; +} +.framework-perseus div.paragraph { + font-size: 14px; + margin: 22px 0px; +} +.framework-perseus div.instructions { + display: block; + font-style: italic; + font-weight: bold; +} +.framework-perseus .paragraph > ul:not(.perseus-widget-radio) { + font-size: 14px; + margin: -11px 0px 22px 0px; + padding-left: 35px; +} +.framework-perseus .paragraph > ul:not(.perseus-widget-radio) > li { + list-style-type: disc; +} +.framework-perseus table { + font-size: 14px; +} +.framework-perseus table th, +.framework-perseus table td { + padding: 5px 10px; + text-align: left; +} +.framework-perseus table th[align=center], +.framework-perseus table td[align=center] { + text-align: center; +} +.framework-perseus table th[align=right], +.framework-perseus table td[align=right] { + text-align: right; +} +.framework-perseus table th { + border-bottom: 2px solid #ccc; + font-weight: bold; + padding-bottom: 2px; +} +.framework-perseus table tr:nth-child(odd) td { + background-color: #ededed; +} +.framework-perseus .range-input { + border: 1px solid #ccc; + border-radius: 5px; + display: inline-block; + padding: 0px 5px; +} +.framework-perseus .range-input > input { + border: 0; + display: inline; + text-align: center; + width: 30px; +} +.framework-perseus .range-input > span { + color: #999; + font-size: 14px; +} +.framework-perseus .number-input { + border: 1px solid #ccc; + border-radius: 5px; + margin: 0; + padding: 5px 0; + text-align: center; + width: 40px; +} +.framework-perseus .number-input.invalid-input { + background-color: #ffbaba; + outline-color: red; +} +.framework-perseus .number-input.number-input-label { + margin-left: 5px; +} +.framework-perseus .number-input.mini { + width: 40px; +} +.framework-perseus .number-input.small { + width: 60px; +} +.framework-perseus .number-input.normal { + width: 80px; +} +.framework-perseus .graph-settings .graph-settings-axis-label { + border: 1px solid #ccc; + border-radius: 5px; + display: inline-block; + padding: 5px 5px; + width: 70px; + float: right; + margin: 0 5px; +} +.framework-perseus .graph-settings .graph-settings-background-url { + width: 250px; +} +.framework-perseus .graph-settings, +.framework-perseus .image-settings, +.framework-perseus .misc-settings { + padding-bottom: 5px; +} +.framework-perseus .image-settings, +.framework-perseus .misc-settings, +.framework-perseus .type-settings { + border-top: 1px solid black; + padding-top: 5px; +} +.framework-perseus table.non-markdown tr:nth-child(odd) td { + background-color: transparent; +} +.framework-perseus table.non-markdown th, +.framework-perseus table.non-markdown td { + border-width: 0; +} +/* Widget CSS */ +.perseus-widget-expression { + position: relative; +} +.perseus-widget-expression > span, +.perseus-widget-expression .error-tooltip { + display: inline-block; + vertical-align: middle; +} +.perseus-widget-expression .error-tooltip { + position: absolute; + right: 6px; + top: -2px; +} +.perseus-widget-expression .error-icon { + color: #fcc335; + cursor: pointer; + font-size: 20px; +} +.perseus-widget-expression .error-text { + background-color: #fff; + padding: 5px; + width: 210px; +} +.perseus-widget-expression.show-error-tooltip .perseus-math-input.mq-editable-field.mq-math-mode > .mq-root-block { + padding-right: 25px; +} +.perseus-widget-expression .perseus-formats-tooltip { + width: 190px; +} +#answer_area .perseus-widget-expression .perseus-math-input.mq-editable-field.mq-math-mode { + min-width: 130px; +} +#answer_area .perseus-widget-expression .error-tooltip .error-text-container { + left: -125px !important; + top: -17px !important; +} +#answer_area .perseus-widget-expression .error-tooltip .error-text { + font-size: 12px; + width: 90px; +} +#answer_area .perseus-widget-expression .error-tooltip .tooltipContainer > div:first-child { + visibility: hidden !important; +} +.perseus-widget-expression-old, +.perseus-widget-expression-old > .output, +.perseus-widget-expression-old > .output > .tex, +.perseus-widget-expression-old > .output > .placeholder { + display: block; +} +.perseus-widget-expression-old > input, +#answer_area .perseus-widget-expression-old > input { + font-size: 14px; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + direction: ltr; + margin-bottom: 5px; + max-width: 240px; + width: 100%; +} +.perseus-widget-expression-old > .output > .tex { + overflow-x: auto; +} +.perseus-widget-expression-old > .output > .placeholder { + position: relative; + height: 40px; + overflow-y: hidden; +} +.perseus-widget-expression-old > .output > .placeholder > .error { + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + background: #f7f7f7; + border: 1px solid #ddd; + box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5); + color: #000; + display: none; + font-weight: normal; + min-height: 22px; + width: 168px; + position: absolute; + top: 0px; + left: 40px; + margin: auto; +} +.perseus-widget-expression-old > .output > .placeholder > .error > .buddy { + background-image: url(/images/perseus/error-buddy.png); + background-size: 100%; + height: 36px; + width: 40px; + position: absolute; + top: -3px; + left: -42px; +} +.perseus-widget-expression-old > .output > .placeholder > .error > .message { + font: 12px "Helvetica Neue", Helvetica, Arial, sans-serif; + line-height: 1.4em; + margin: 0px 4px; +} +.perseus-widget-radio li span.checkbox input[type=radio], +#answer_area .perseus-widget-radio li span.checkbox input[type=radio] { + float: none; + margin: 3px; +} +.perseus-widget-radio div, +.perseus-widget-radio div > p { + /* TODO(alpert): Find a better way of doing inline renderers */ + display: inline; +} +.perseus-widget-radio li { + padding: 7px 0; + margin-left: 20px; + cursor: pointer; +} +.perseus-widget-radio li.inline { + display: inline-block; + padding-left: 20px; +} +.perseus-widget-radio li span.checkbox { + position: relative; + z-index: 3; + display: inline-block; + width: 20px; + margin-left: -20px; + margin-right: 0; +} +.perseus-widget-radio li div.instructions { + margin-bottom: 5px; +} +.perseus-widget-radio li .value { + display: block; + margin-left: 18px; + min-height: 22px; +} +.perseus-widget-radio li img { + vertical-align: middle; +} +.perseus-widget-radio .perseus-radio-clue { + color: #007aff; + display: block; +} +.perseus-widget-radio .perseus-textarea-pair, +.perseus-widget-radio .perseus-textarea-underlay { + display: block; +} +body.mobile .framework-perseus #problemarea input[type=radio], +body.mobile .framework-perseus #problemarea input[type=checkbox] { + float: left; + margin-right: 7px; +} +body.mobile .perseus-widget-radio { + color: #aaaaaa; + margin-left: 0; +} +body.mobile .perseus-widget-radio .perseus-radio-option { + margin-left: 0; + padding: 0; +} +body.mobile .perseus-widget-radio span.checkbox { + position: relative; + z-index: 3; + margin-right: 26px; + display: block; + margin: 0; + width: auto; +} +body.mobile .perseus-widget-radio .perseus-radio-option { + border: 2px solid #aaaaaa; + border-radius: 28px; + box-sizing: border-box; + cursor: pointer; + display: block; + font: 700 14pt/30px "Avenir", "Helvetica", "Arial", sans-serif; + margin-bottom: 10px; + overflow: hidden; + padding: 8px 10px; +} +body.mobile .perseus-widget-radio .perseus-radio-option.perseus-radio-selected { + border-color: #1c758a; + color: #1c758a; + font-weight: bold; +} +body.mobile .perseus-widget-radio input[type=radio], +body.mobile .perseus-widget-radio input[type=checkbox] { + -webkit-appearance: none; + appearance: none; + border: 2px solid #aaaaaa; + border-radius: 25px; + float: left; +} +body.mobile .perseus-widget-radio input[type=radio] { + height: 25px; + margin-right: 10px; + outline: none; + width: 25px; +} +body.mobile .perseus-widget-radio input[type=radio]:checked { + background: #1c758a; + border: 2px solid #1c758a; +} +body.mobile .perseus-widget-radio input[type=checkbox] { + position: absolute; + outline: none; +} +body.mobile .perseus-widget-radio input[type=checkbox]:before { + color: #aaaaaa; + content: "\f00c"; + font: 15pt "FontAwesome"; + left: 0; + position: relative; + top: 1px; +} +body.mobile .perseus-widget-radio input[type=checkbox]:checked { + border-color: #1c758a; +} +body.mobile .perseus-widget-radio input[type=checkbox]:checked:before { + color: #1c758a; +} +.perseus-widget-interactive-graph { + padding: 25px 25px 0 0; +} +.graphie-container { + position: relative; +} +.graphie-container img { + position: absolute; +} +.categorization-container { + position: relative; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + user-select: none; +} +.categorization-container .categories, +.categorization-container .bank { + float: left; +} +.categorization-container .categories { + width: 231px; +} +.categorization-container .cards-list { + padding: 13px; +} +.categorization-container .category { + float: left; + padding: 8px; + width: 215px; + text-align: center; +} +.categorization-container .category .card-container { + float: left; + width: 100%; + display: block; +} +.categorization-container .category.target .cards-list.cards-area { + border-color: #999999; + box-shadow: 0 0 4px #7d7d7d; + -moz-box-shadow: 0 0 4px #7d7d7d; + -ms-box-shadow: 0 0 4px #7d7d7d; + -o-box-shadow: 0 0 4px #7d7d7d; + -webkit-box-shadow: 0 0 4px #7d7d7d; +} +.categorization-container .header { + font-weight: bold; + margin-bottom: 5px; +} +.categorization-container .target .header { + color: black; +} +.categorization-container .card { + min-height: 26px; + text-align: center; + line-height: 24px; + width: 167px; + padding: 6px 8px; + margin: 0 auto; + transition-property: border-color, box-shadow; + transition-duration: 150ms; + -moz-transition-property: border-color, -moz-box-shadow; + -moz-transition-duration: 150ms; + -webkit-transition-property: border-color, -webkit-box-shadow; + -webkit-transition-duration: 150ms; +} +.categorization-container .card:hover { + transition-property: border-color, box-shadow; + transition-duration: 150ms; + -moz-transition-property: border-color, -moz-box-shadow; + -moz-transition-duration: 150ms; + -webkit-transition-property: border-color, -webkit-box-shadow; + -webkit-transition-duration: 150ms; +} +.categorization-container .card-container { + float: left; + padding: 4px 0; +} +.categorization-container .card-hidden { + visibility: hidden; + z-index: 0; +} +.categorization-container .card.dragging { + position: absolute; + display: none; + z-index: 4; + border-color: #ffa500; + box-shadow: 0 0 4px #c78100; + -moz-box-shadow: 0 0 4px #c78100; + -ms-box-shadow: 0 0 4px #c78100; + -o-box-shadow: 0 0 4px #c78100; + -webkit-box-shadow: 0 0 4px #c78100; +} +.categorization-container .card.placeholder > * { + visibility: hidden; +} +.categorization-container.currently-dragging .card { + opacity: 0.4; +} +.categorization-container.currently-dragging .card.dragging { + display: block; + background-color: white; + opacity: 1; + filter: opacity(1); +} +.categorization-container div.paragraph { + margin: 0; +} +.categorizer-container { + margin-top: 20px; +} +.categorizer-container div.paragraph { + margin: 10px 0px; +} +.categorizer-container .category { + text-align: center; +} +.categorizer-container th.category { + vertical-align: bottom; +} +.categorizer-container label { + position: relative; + z-index: 2; +} +.categorizer-container td.category { + padding: 0; + color: #ccc; + vertical-align: bottom; +} +.categorizer-container td.category input[type="radio"] { + display: none; +} +.categorizer-container td.category input[type="radio"] + span:before { + display: inline-block; + position: relative; + font-family: 'FontAwesome'; + font-size: 30px; + width: 30px; + padding-right: 3px; + bottom: 9px; + content: "\f1db"; +} +.categorizer-container td.category label span:hover { + color: #999; +} +.categorizer-container td.category input[type="radio"]:checked + span:before { + content: "\f111"; + color: #333; +} +.perseus-widget-plotter svg, +.perseus-widget-plotter vml { + position: absolute; +} +.perseus-widget-plotter span.rotate { + -moz-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; +} +.perseus-widget-plotter body.ie span.rotate { + left: 60px !important; + top: 140px !important; +} +.set-from-scale-box { + border: 2px solid #EEEEEE; + border-radius: 3px; + padding: 3px; +} +.categories-title { + font-size: 14px; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown { + text-align: left; + margin: 20px auto 0; + border-collapse: collapse; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown tr { + height: 23px; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown th, +.framework-perseus table.perseus-widget-table-of-values.non-markdown td { + border: 2px solid black; + border-width: 0 2px; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown th:first-child, +.framework-perseus table.perseus-widget-table-of-values.non-markdown td:first-child { + border-left: 0; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown th:last-child, +.framework-perseus table.perseus-widget-table-of-values.non-markdown td:last-child { + border-right: 0; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown th { + font-weight: normal; + padding: 5px; + width: 80px; + text-align: left; + border-bottom: 2px solid black; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown th .paragraph { + margin: 0; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown td { + padding: 0px 5px; + text-align: right; +} +.framework-perseus table.perseus-widget-table-of-values.non-markdown tbody tr:first-child td { + padding-top: 5px; +} +.framework-perseus table.perseus-widget-table-of-values input, +#answer_area table.perseus-widget-table-of-values input { + width: 80px; +} +.perseus-widget-dropdown { + position: relative; +} +.perseus-widget-dropdown .fancy-select { + border: 3px solid #358fa4; + border-radius: 40px; + color: #358fa4; + font: 700 23pt avenir, sans-serif; + z-index: 3; + padding: 0 60px 0 35px; + min-width: 40px; + min-height: 40px; + cursor: pointer; + white-space: nowrap; + user-select: none; + -webkit-user-select: none; +} +.perseus-widget-dropdown .fancy-select:before { + font-size: 0; + visibility: hidden; + content: "_"; +} +.perseus-widget-dropdown .fancy-select > .placeholder { + opacity: 0.5; +} +.perseus-widget-dropdown .fancy-select.active { + opacity: 0.5; +} +.perseus-widget-dropdown .fancy-select:after { + color: #358fa4; + content: "\f0dd"; + font: 24pt "FontAwesome"; + position: absolute; + top: 0px; + right: 17px; +} +.perseus-widget-dropdown .fancy-select-options { + color: #358fa4; + position: absolute; + z-index: 4; + min-width: 100%; + overflow-y: hidden; +} +.perseus-widget-dropdown .fancy-option { + cursor: pointer; + padding: 3px 20px 3px 38px; + font-size: 17pt; + line-height: 22pt; + background: rgba(255, 255, 255, 0.95); + border: 3px solid #358fa4; + display: block; + border-radius: 20px; + min-width: 40px; + min-height: 30px; + margin-top: -70px; +} +.perseus-widget-dropdown .fancy-option:before { + content: ""; + width: 16px; + height: 16px; + position: absolute; + border: 3px solid #358fa4; + margin-top: 4px; + margin-left: -30px; + border-radius: 25px; +} +.perseus-widget-dropdown .fancy-option.selected:before { + background: #358fa4; +} +.perseus-widget-dropdown .fancy-option.active { + margin-top: 6px; + -webkit-animation-name: perseus-fancy-dropdown-slideout; + -webkit-animation-duration: 0.35s; + -webkit-animation-timing-function: ease-out; +} +.perseus-widget-dropdown .fancy-option.closed { + margin-top: -70px; + -webkit-animation-name: perseus-fancy-dropdown-slidein; + -webkit-animation-duration: 0.2s; + -webkit-animation-timing-function: ease-in; +} +@-webkit-keyframes perseus-fancy-dropdown-slideout { + 0% { + margin-top: -70px; + } + 100% { + margin-top: 6px; + } +} +@-webkit-keyframes perseus-fancy-dropdown-slidein { + 0% { + margin-top: 6px; + } + 100% { + margin-top: -70px; + } +} +.orderer { + position: relative; + min-width: 480px; +} +.orderer .draggable-box { + padding: 13px; + min-height: 69px; + margin-top: 30px; +} +.orderer .card { + padding: 0 10px; + cursor: pointer; + position: relative; + user-select: none; + width: auto; +} +.orderer .card img { + vertical-align: middle; +} +.orderer.height-normal.layout-horizontal .card { + line-height: 65px; + height: 65px; +} +.orderer.height-normal.layout-vertical .card { + padding: 5px; +} +.orderer.height-large .card { + line-height: 160px; + height: 160px; +} +.orderer.height-auto .card { + padding: 0; +} +.orderer.height-auto.layout-horizontal .drag-hint { + min-height: 65px; + min-width: 22px; +} +.orderer .card-wrap { + position: relative; + z-index: 3; + margin-right: 4px; + width: auto; + float: left; +} +.orderer .bank { + margin: 0px 13px; +} +.orderer .bank .card-wrap { + margin-right: 10px; + margin-bottom: 8px; +} +.orderer div.paragraph { + margin: 0; +} +.orderer.layout-vertical .card-wrap { + float: none; + text-align: center; +} +.orderer.layout-vertical .bank, +.orderer.layout-vertical .draggable-box { + box-sizing: border-box; + -moz-box-sizing: border-box; + float: left; + max-width: 50%; +} +.orderer.layout-vertical .bank { + padding: 10px 0 0 0; + margin: 0; +} +.orderer.layout-vertical .bank .card-wrap { + margin-right: 20px; +} +.orderer.layout-vertical .draggable-box { + margin-top: 0; + min-height: 170px; + padding: 10px; +} +.orderer.layout-vertical .draggable-box .card-wrap:first-child { + margin: 0; +} +.orderer.layout-vertical .draggable-box .card-wrap { + margin: 8px 0 0 0; +} +.orderer.layout-vertical .draggable-box .drag-hint { + box-sizing: border-box; + min-width: 140px; + min-height: 34px; +} +.orderer.layout-vertical .draggable-box .placeholder { + box-sizing: border-box; +} +.perseus-widget-measurer { + position: relative; +} +.perseus-widget-measurer img { + position: absolute; +} +.perseus-widget-measurer-url { + width: 70%; +} +.perseus-widget-transformer .highlighted-tool-button { + text-shadow: 1px 1px rgba(0, 0, 0, 0.25); +} +.perseus-widget-transformer .graphie-container { + margin-bottom: 10px; +} +.perseus-widget-transformer .transformer-undo-button { + float: right; +} +.perseus-widget-transformer .perseus-transformation-list { + margin-top: 10px; + margin-bottom: 10px; +} +.perseus-widget-transformer .perseus-transformation-list input { + width: 40px; +} +.perseus-widget-matcher .column { + float: left; + max-width: 50%; +} +.perseus-widget-matcher .column:first-child .column-label, +.perseus-widget-matcher .column:first-child .perseus-sortable { + padding-right: 5px; +} +.perseus-widget-matcher .column + .column .column-label, +.perseus-widget-matcher .column + .column .perseus-sortable { + border-left: 1px solid #444444; + padding-left: 5px; +} +.perseus-widget-matcher .column-label { + border-bottom: 1px solid #444444; + padding-bottom: 5px; + text-align: center; +} +.perseus-widget-matcher .column-label div.paragraph { + margin: 0; +} +.perseus-widget-matcher .perseus-sortable { + padding-top: 5px; +} +.draggy-boxy-thing .draggable-box, +.draggy-boxy-thing .cards-area { + background: #eee; + border: 1px solid #ccc; + border-bottom: 1px solid #aaa; + box-shadow: 0 1px 2px #ccc; + -moz-box-shadow: 0 1px 2px #ccc; + -webkit-box-shadow: 0 1px 2px #ccc; +} +.draggy-boxy-thing .cards-area { + position: relative; + z-index: 2; +} +.draggy-boxy-thing .card { + position: relative; + z-index: 3; + background-color: #fff; + border: 1px solid #b9b9b9; + border-bottom-color: #939393; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + cursor: pointer; +} +.draggy-boxy-thing .card.placeholder { + background: #ddd; + border: 1px solid #ccc; +} +.draggy-boxy-thing .card.drag-hint { + background: none; + border: 1px dashed #aaa; + cursor: auto; +} +.draggy-boxy-thing .card.drag-hint:hover { + border-color: #aaa; + box-shadow: none; +} +.draggy-boxy-thing .card.dragging { + background-color: #ffedcd; + opacity: 0.8; + filter: opacity(0.8); +} +.draggy-boxy-thing .card.stack { + z-index: auto; +} +.draggy-boxy-thing .card.stack:after { + content: " "; + background-color: #fff; + border: 1px solid #b9b9b9; + border-bottom-color: #939393; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + height: 100%; + width: 100%; + z-index: -1; + top: 1px; + left: 1px; + position: absolute; +} +.draggy-boxy-thing .card:hover { + border-color: #ffa500; + box-shadow: 0 0 4px #c78100; + -moz-box-shadow: 0 0 4px #c78100; + -ms-box-shadow: 0 0 4px #c78100; + -o-box-shadow: 0 0 4px #c78100; + -webkit-box-shadow: 0 0 4px #c78100; +} +.perseus-sortable { + position: relative; + z-index: 3; + box-sizing: border-box; + -moz-box-sizing: border-box; + float: left; +} +.perseus-sortable .perseus-sortable-card { + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + box-sizing: border-box; + -moz-box-sizing: border-box; + cursor: pointer; + min-width: 25px; + min-height: 44px; + padding: 10px; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; +} +.perseus-sortable .perseus-sortable-placeholder { + background: #ddd; + border: 1px solid #ccc; +} +.perseus-sortable .perseus-sortable-draggable { + font-size: 0; + text-align: center; +} +.perseus-sortable .perseus-sortable-draggable:before { + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; +} +.perseus-sortable .perseus-sortable-draggable > div { + display: inline-block; + font-size: 14px; + max-width: 100%; + vertical-align: middle; +} +.perseus-sortable .perseus-sortable-draggable div.paragraph { + margin: 0; +} +.perseus-sortable .perseus-sortable-draggable.perseus-sortable-static { + cursor: pointer; +} +.perseus-sortable .perseus-sortable-draggable.perseus-sortable-static:hover { + border-color: #ffa500; + box-shadow: 0 0 4px #c78100; + -moz-box-shadow: 0 0 4px #c78100; + -ms-box-shadow: 0 0 4px #c78100; + -o-box-shadow: 0 0 4px #c78100; + -webkit-box-shadow: 0 0 4px #c78100; +} +.perseus-sortable .perseus-sortable-draggable.perseus-sortable-dragging { + background-color: #ffedcd; + filter: opacity(0.8); + opacity: 0.8; +} +.perseus-sortable .perseus-sortable-draggable.perseus-sortable-disabled { + background-color: inherit; + border: 1px solid transparent; + cursor: default; +} +.perseus-sortable.layout-horizontal .perseus-sortable-card { + float: left; +} +.perseus-sortable.layout-horizontal .perseus-sortable-dragging { + cursor: ew-resize; +} +.perseus-sortable.layout-vertical, +.perseus-sortable.layout-vertical .perseus-sortable-card { + max-width: 100%; +} +.perseus-sortable.layout-vertical .perseus-sortable-dragging { + cursor: ns-resize; +} +.perseus-sortable.unpadded .perseus-sortable-card { + padding: 0; +} +.perseus-sortable.unpadded .perseus-sortable-card img { + vertical-align: bottom; +} +.perseus-widget-image .label-settings td { + padding: 5px 4px; + text-align: center; +} +.perseus-widget-image .label-settings tr:nth-child(odd) td { + background-color: transparent; +} +.perseus-widget-image .label-settings th, +.perseus-widget-image .label-settings td { + border-width: 0; +} +.perseus-diff { + margin: 0 10px; +} +.perseus-diff .diff-header { + font-size: 18px; + padding: 10px 0; + width: 50%; + display: inline-block; +} +.perseus-diff .diff-header.collapsed { + font-size: 14px; + padding: 0px; +} +.perseus-diff .diff-body { + border-top: 1px solid #e4e4e4; + border-bottom: 1px solid #e4e4e4; +} +.perseus-diff .diff-row { + width: 50%; + white-space: pre-wrap; + box-sizing: border-box; + -moz-box-sizing: border-box; + font-size: 14px; + padding-right: 20px; + padding-left: 10px; + overflow: hidden; +} +.perseus-diff .diff-row.collapsed { + color: #888; + cursor: pointer; +} +.perseus-diff .diff-row.collapsed:hover { + color: #666; +} +.perseus-diff .diff-row.collapsed:active { + color: #444; +} +.perseus-diff .diff-row .diff-line { + margin-bottom: 20px; +} +.perseus-diff .before { + float: left; + border-left: 1px solid #e4e4e4; +} +.perseus-diff .after { + float: right; + border-right: 1px solid #e4e4e4; + border-left: 1px solid #e4e4e4; +} +.perseus-diff .inner-value { + height: 100%; + padding: 3px; +} +.perseus-diff .not-present { + display: none; +} +.perseus-diff .blank-space { + visibility: hidden; +} +.perseus-diff .added { + background-color: #EEFFEE; +} +.perseus-diff .added.dark { + background-color: #AAFFAA; +} +.perseus-diff .removed { + background-color: #FFEEEE; +} +.perseus-diff .removed.dark { + background-color: #FFAAAA; +} +.perseus-diff .image { + margin-left: 20px; + margin-bottom: 10px; +} +.perseus-diff .image-unchanged { + border: 1px solid #AAAAAA; +} +.perseus-diff .image-added { + border: 2px solid #AAFFAA; +} +.perseus-diff .image-removed { + border: 2px solid #FFAAAA; +} +.perseus-widget-container.widget-nohighlight { + transition: all 0.15s; +} +.perseus-widget-container.widget-highlight { + -webkit-box-shadow: 0px 0px 9px 2px #ffa500; + -moz-box-shadow: 0px 0px 9px 2px #ffa500; + box-shadow: 0px 0px 9px 2px #ffa500; + transition: all 0.15s; +} +.perseus-tooltip { + background: #fff; + padding: 5px 10px; + width: 240px; +} +.perseus-formats-tooltip { + background: #fff; + padding: 5px 10px; + width: 240px; + color: #777; +} +.framework-perseus .perseus-formats-tooltip .paragraph > ul { + padding: 0; + margin: -20px 0 -16px 0; +} +.framework-perseus .perseus-formats-tooltip .paragraph > ul > li { + list-style-type: none; +} +.perseus-math-input.mq-editable-field.mq-math-mode { + background: #fff; + font-size: 18px; + min-width: 100px; +} +.perseus-math-input.mq-editable-field.mq-math-mode > .mq-root-block { + border-color: #a4a4a4; + border-radius: 5px; + padding: 4px; +} +.perseus-math-input.mq-editable-field.mq-math-mode .mq-cursor { + padding-left: 0; +} +.perseus-math-input.mq-editable-field.mq-math-mode .mq-paren.mq-ghost { + color: inherit; +} +.perseus-math-input.mq-editable-field.mq-math-mode .mq-paren + span { + margin: 0; +} +.math-input-buttons { + background-color: rgba(255, 255, 255, 0.7); + border-radius: 5px; + border: 1px solid #ddd; + box-sizing: border-box; + margin-top: 5px; + padding: 2px; + width: 201px; +} +.math-input-buttons.absolute { + left: -2px; + position: absolute; + top: -3px; + z-index: 5; +} +.tex-button { + display: block; + float: left; + width: 35px; + height: 35px; + margin: 2px; + border: 1px solid #1c758a; + background-color: white; + border-radius: 5px; +} +.tex-button:hover { + cursor: pointer; + background-color: #f0f0f0; +} +.tex-button:focus { + border: 2px solid #1c758a; + outline: none; +} +.tex-button-row { + margin: 5px 0; +} +.tex-button-row:first-child, +.tex-button-row:last-child { + margin: 0; +} diff --git a/build/perseus-1.js b/build/perseus-1.js index f21da0c856..b141bd0bf7 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -19986,7 +19986,7 @@ module.exports = { widget: NumberLine, editor: NumberLineEditor, transform: NumberLineTransform, - hidden: flase + hidden: false }; },{"../components/graphie.jsx":125,"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../components/range-input.jsx":131,"../interactive2.js":148,"../interactive2/interactive-util.js":149,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../util.js":168,"react":115,"react-components/button-group":3,"react-components/info-tip":5}],186:[function(require,module,exports){ From 3a8578a88a1f82aeef59d511cd367c8f2ad13357 Mon Sep 17 00:00:00 2001 From: benny Date: Mon, 14 Dec 2015 14:33:40 +0800 Subject: [PATCH 043/156] Modify perseus.less --- css/perseus.less | 21 ++++++++++++++++----- src/widgets/number-line.jsx | 2 +- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/css/perseus.less b/css/perseus.less index 15b64f6148..d9f4fde635 100644 --- a/css/perseus.less +++ b/css/perseus.less @@ -86,7 +86,7 @@ } div.paragraph { - font-size: 14px; + font-size: 20px; margin: 22px 0px; } @@ -207,6 +207,15 @@ border-top: 1px solid black; padding-top: 5px; } + + div #solutionarea div.paragraph { + font-size: inherit; + margin: inherit; + } + + .checkbox { + margin: 0px; + } } .framework-perseus table.non-markdown { @@ -343,6 +352,8 @@ } .perseus-widget-container { + font-size: 14px; + &.widget-nohighlight { transition: all 0.15s; } @@ -433,8 +444,8 @@ box-sizing: border-box; margin-top: 5px; padding: 2px; - // each button is 35 + 4 px, plus 4 padding, plus 2 border - width: 39px*5 + 4px + 2px; // (201) + // each button is 41 + 4 px, plus 4 padding, plus 2 border + width: 45px*5 + 4px + 2px; // (201) &.absolute { left: -2px; @@ -450,8 +461,8 @@ .tex-button { display: block; float: left; - width: 35px; - height: 35px; + width: 41px; + height: 41px; margin: 2px; border: 1px solid @borderColor; background-color: white; diff --git a/src/widgets/number-line.jsx b/src/widgets/number-line.jsx index 99fe1ea156..a0d8cddf66 100644 --- a/src/widgets/number-line.jsx +++ b/src/widgets/number-line.jsx @@ -845,5 +845,5 @@ module.exports = { widget: NumberLine, editor: NumberLineEditor, transform: NumberLineTransform, - hidden: flase + hidden: false }; From f83eb3ff6cb0c4387bb879413074ab9da1124103 Mon Sep 17 00:00:00 2001 From: benny Date: Mon, 14 Dec 2015 15:01:58 +0800 Subject: [PATCH 044/156] Modify css and jsx --- build/perseus-1.css | 18 +- build/perseus-1.js | 2 +- src/editor.jsx | 2 +- src/renderer.jsx | 4 +- .../exercise-content-package/perseus.less | 20 +- .../perseus-admin-package/editor.less.css | 660 ++++++++++++++++++ 6 files changed, 693 insertions(+), 13 deletions(-) create mode 100644 stylesheets/perseus-admin-package/editor.less.css diff --git a/build/perseus-1.css b/build/perseus-1.css index 3365a1fc1e..5692016e9a 100644 --- a/build/perseus-1.css +++ b/build/perseus-1.css @@ -55,7 +55,7 @@ z-index: 3; } .framework-perseus div.paragraph { - font-size: 14px; + font-size: 20px; margin: 22px 0px; } .framework-perseus div.instructions { @@ -158,6 +158,13 @@ border-top: 1px solid black; padding-top: 5px; } +.framework-perseus div #solutionarea div.paragraph { + font-size: inherit; + margin: inherit; +} +.framework-perseus .checkbox { + margin: 0px; +} .framework-perseus table.non-markdown tr:nth-child(odd) td { background-color: transparent; } @@ -1090,6 +1097,9 @@ body.mobile .perseus-widget-radio input[type=checkbox]:checked:before { .perseus-diff .image-removed { border: 2px solid #FFAAAA; } +.perseus-widget-container { + font-size: 14px; +} .perseus-widget-container.widget-nohighlight { transition: all 0.15s; } @@ -1143,7 +1153,7 @@ body.mobile .perseus-widget-radio input[type=checkbox]:checked:before { box-sizing: border-box; margin-top: 5px; padding: 2px; - width: 201px; + width: 240px; } .math-input-buttons.absolute { left: -2px; @@ -1154,8 +1164,8 @@ body.mobile .perseus-widget-radio input[type=checkbox]:checked:before { .tex-button { display: block; float: left; - width: 35px; - height: 35px; + width: 41px; + height: 41px; margin: 2px; border: 1px solid #1c758a; background-color: white; diff --git a/build/perseus-1.js b/build/perseus-1.js index b141bd0bf7..6e9a0e31ce 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,5 +1,5 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 84640cd93c226b4e5f2858e94ed45d7ccef985de +// commit 3a8578a88a1f82aeef59d511cd367c8f2ad13357 // branch perseus_into_junyi !function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.Perseus=e():"undefined"!=typeof global?global.Perseus=e():"undefined"!=typeof self&&(self.Perseus=e())}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o -1 || id.indexOf('transformer') > -1) { - return id + ' is too big to record attempt content.' + if (id.indexOf('lights-puzzle') > -1 || id.indexOf('transformer') > -1 || id.indexOf('image') > -1) { + return 'no save ' + id +' widget' } return this.refs[id].toJSON(); }, this); diff --git a/stylesheets/exercise-content-package/perseus.less b/stylesheets/exercise-content-package/perseus.less index 15b64f6148..a941c0542d 100644 --- a/stylesheets/exercise-content-package/perseus.less +++ b/stylesheets/exercise-content-package/perseus.less @@ -86,7 +86,7 @@ } div.paragraph { - font-size: 14px; + font-size: 20px; margin: 22px 0px; } @@ -207,6 +207,15 @@ border-top: 1px solid black; padding-top: 5px; } + + div #solutionarea div.paragraph { + font-size: inherit; + margin: inherit; + } + + .checkbox { + margin: 0px; + } } .framework-perseus table.non-markdown { @@ -343,6 +352,8 @@ } .perseus-widget-container { + font-size: 14px; + &.widget-nohighlight { transition: all 0.15s; } @@ -433,8 +444,7 @@ box-sizing: border-box; margin-top: 5px; padding: 2px; - // each button is 35 + 4 px, plus 4 padding, plus 2 border - width: 39px*5 + 4px + 2px; // (201) + width: 240px; &.absolute { left: -2px; @@ -450,8 +460,8 @@ .tex-button { display: block; float: left; - width: 35px; - height: 35px; + width: 41px; + height: 41px; margin: 2px; border: 1px solid @borderColor; background-color: white; diff --git a/stylesheets/perseus-admin-package/editor.less.css b/stylesheets/perseus-admin-package/editor.less.css new file mode 100644 index 0000000000..d541f8b161 --- /dev/null +++ b/stylesheets/perseus-admin-package/editor.less.css @@ -0,0 +1,660 @@ +.pod-title { + background-color: #eeeeee; + border: 1px solid #dddddd; + border-bottom: 0; + font-size: 1.25em; + padding: 4px 10px; + border-radius: 3px 3px 0 0; +} +.pod-title.closed { + border-radius: 3px; +} +.smiley { + position: absolute; + left: 0px; + top: 4px; +} +.perseus-single-editor { + box-sizing: border-box; + width: 360px; +} +.perseus-json-editor { + width: 100%; + font-family: monospace; + height: 500px; +} +.perseus-json-editor.invalid { + background-color: #ffe6e6; +} +.perseus-textarea-pair { + border: 1px solid #dddddd; + font-size: 12px; + line-height: 1.6; + position: relative; +} +.perseus-textarea-pair > .perseus-textarea-underlay { + color: transparent; + margin-bottom: 12px; + padding: 10px; + white-space: pre-wrap; + word-wrap: break-word; +} +.perseus-textarea-pair > .perseus-textarea-underlay b { + font-weight: normal; + background-color: #dfd; +} +.perseus-textarea-pair > .perseus-textarea-underlay b.selected { + background-color: #ddf; +} +.perseus-textarea-pair > .perseus-textarea-underlay b.error { + background-color: #fcc; +} +.perseus-textarea-pair > textarea { + background: transparent; + border: 0; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + font: inherit; + height: 100%; + left: 0; + padding: 10px; + position: absolute; + resize: none; + top: 0; + width: 100%; + /* for Firefox, this helps. it seems that the underlay is still 1px off and + I'm not really sure why. not too noticeable if we're just setting the + background color though. */ + margin: 0; +} +.perseus-widget-row { + margin: 7px 0; + width: 100%; +} +.perseus-widget-row .perseus-widget-left-col, +.perseus-widget-row .perseus-widget-right-col { + display: inline-block; + width: 50%; +} +.perseus-widget-row .perseus-widget-left-col .range-input, +.perseus-widget-row .perseus-widget-right-col .range-input { + float: right; + margin-right: 5px; +} +.perseus-answer-editor .perseus-textarea-pair { + min-height: 50px; +} +.perseus-answer-options { + border: 1px solid #dddddd; + padding: 10px; +} +.perseus-answer-widget { + border: 1px solid #dddddd; + border-radius: 0 0 3px 3px; + padding: 10px; +} +.perseus-widget-editor { + border: 1px solid #dddddd; + border-radius: 3px; + margin-top: 10px; +} +.perseus-widget-editor .perseus-widget-editor-title { + background-color: #eeeeee; + border: 1px solid #dddddd; + border-bottom: 0; + font-size: 1.25em; + padding: 4px 10px; + border-radius: 3px 3px 0 0; + border: 0; + color: inherit; + display: block; + text-decoration: none; +} +.perseus-widget-editor .perseus-widget-editor-title.closed { + border-radius: 3px; +} +.perseus-widget-editor .perseus-widget-editor-title > i { + float: left; + font-size: 14px; + margin-right: 10px; +} +.perseus-widget-editor .perseus-widget-editor-content { + border-radius: 0 0 3px 3px; + border-top: 1px solid #dddddd; + padding: 10px; + transition: all 0s; +} +.perseus-widget-editor .perseus-widget-editor-content.leave { + display: none; +} +.perseus-widget-editor .categorizer-container { + overflow-x: scroll; +} +.perseus-editor-widgets-selectors { + background-color: #eeeeee; + border: 1px solid #dddddd; + border-top: 0; + border-radius: 0 0 3px 3px; + padding: 5px 10px; +} +.perseus-editor-widgets > div.selected > strong { + background-color: #ddf; +} +.perseus-editor-widgets .warning { + background-color: #ffcccc; + padding: 4px; + margin: 4px; +} +.MathJax .math { + color: inherit; +} +#perseus { + margin: 20px; +} +#perseus #problemarea { + /* Override the min-height property used for displaying the problem. + While editing, the size of the editor itself is a better constraint on + the size of the problemarea, and having a smaller problemarea is nicer + if it means it aligns better with the editor. */ + min-height: 0; + width: 480px; +} +#perseus #problemarea #workarea { + margin: 0; + outline: 1px solid #ccc; +} +#perseus #answer_area { + position: relative; +} +#perseus #answer_area #examples-show { + float: none; + left: 109px; + position: absolute; + top: -30px; +} +#perseus #answer_area #solutionarea, +#perseus #answer_area .answer-buttons { + border: 0; + box-sizing: border-box; + margin: 0; + width: 225px; +} +#perseus #answer_area #solutionarea { + margin-left: 0; + margin-top: 20px; + outline: 1px solid #ccc; + overflow-x: visible; +} +#perseus .perseus-question-container > div, +#perseus .perseus-answer-container > div { + padding-bottom: 25px; +} +#perseus .add-choice-container, +#perseus .add-hint-container { + margin-bottom: 20px; + text-align: left; +} +.perseus-editor-table { + display: table; + table-layout: fixed; +} +.perseus-editor-row { + display: table-row; +} +.perseus-editor-left-cell { + display: table-cell; + padding-right: 30px; + vertical-align: top; + width: 360px; +} +.perseus-editor-right-cell { + background-color: #f7f7f7; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: table-cell; + padding: 30px; + vertical-align: top; + width: 540px; +} +.perseus-hint-editor { + padding-bottom: 20px; +} +.perseus-hint-editor .perseus-single-editor { + margin-bottom: 5px; +} +.perseus-hint-editor .reorder-hints a { + font-size: 16px; +} +.perseus-hint-editor .reorder-hints a:hover, +.perseus-hint-editor .reorder-hints a:active { + color: #000; + text-decoration: none; +} +.perseus-hint-editor .reorder-hints a.hidden { + visibility: hidden; +} +.perseus-hint-editor .remove-hint { + padding: 0 10px; + float: right; +} +.perseus-hint-editor + div .perseus-hint-renderer { + outline: 1px solid #ccc; + width: 480px; +} +.perseus-hint-editor + div .perseus-hint-renderer div.paragraph { + margin: 0px 0px 22px 0px; +} +.perseus-button-group { + display: inline-block; +} +.perseus-button-group > button { + background-color: white; + border: 1px solid #ccc; + border-bottom: 1px solid #ccc; + border-left: 0; + cursor: pointer; + margin: 0; + padding: 5px 10px; + position: relative; +} +.perseus-button-group > button.selected { + background-color: #ddd; +} +.perseus-button-group > button:first-child { + border-left: 1px solid #ccc; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.perseus-button-group > button:last-child { + border-right: 1px solid #ccc; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.perseus-button-group > button:hover, +.perseus-button-group > button:focus { + outline: 2px solid #999; + outline-offset: -1px; + z-index: 2; +} +.more-options-container { + display: block; + padding-bottom: 24px; + position: relative; +} +.more-options-container .more-options-title { + border-radius: 0 0 3px 3px; + color: #999999; + height: 20px; + font-size: 14px; + padding: 5px 0; + width: 358px; + position: absolute; + left: -10px; + right: 0; + bottom: -10px; + text-align: center; +} +.more-options-container .more-options-title:hover { + background-color: #dddddd; + cursor: pointer; +} +.perseus-widget-dropdown .remove-choice { + margin-bottom: 10px; +} +.perseus-input-number-editor { + font-size: 14px; +} +.perseus-input-number-editor .ui-title, +.perseus-input-number-editor .msg-title { + display: inline-block; + text-align: center; +} +.perseus-input-number-editor .ui-title { + width: 100px; +} +.perseus-input-number-editor .msg-title { + margin-left: 5px; + width: 230px; +} +.perseus-input-number-editor .options-container { + padding-left: 30px; +} +.perseus-input-number-editor .input-answer-editor-value, +.perseus-input-number-editor .input-answer-editor-message { + display: inline-block; +} +.perseus-input-number-editor .input-answer-editor-value-container { + border: 1px solid #cccccc; + border-radius: 3px; + float: left; + height: 53px; + width: 100px; + overflow: hidden; + position: relative; +} +.perseus-input-number-editor .input-answer-editor-value-container .numeric-input-value { + border: 0; + font-size: 13px; + outline-offset: -3px; + width: 100%; +} +.perseus-input-number-editor .input-answer-editor-value-container.with-max-error .numeric-input-value { + width: 60%; +} +.perseus-input-number-editor .input-answer-editor-value-container .max-error-container { + display: inline-block; + width: 40%; +} +.perseus-input-number-editor .input-answer-editor-value-container .max-error-container .max-error-plusmn { + cursor: default; + display: inline-block; + width: 20%; +} +.perseus-input-number-editor .input-answer-editor-value-container .max-error-container .number-input { + border: 0; + font-size: 13px; + width: 80%; +} +.perseus-input-number-editor .options-toggle, +.perseus-input-number-editor .answer-status { + height: 26px; + line-height: 26px; + outline-offset: -3px; + vertical-align: middle; +} +.perseus-input-number-editor .value-divider { + border-top: 1px solid #cccccc; +} +.perseus-input-number-editor .options-toggle { + background-color: #eee; + border-left: 1px solid #cccccc; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #444; + cursor: pointer; + display: inline-block; + text-align: center; + text-decoration: none; + width: 25%; +} +.perseus-input-number-editor .options-toggle:hover { + background-color: #ccc; +} +.perseus-input-number-editor .is-strict-indicator { + background-color: #d9edf7; + border-bottom: 1px solid #cccccc; + border-right: 1px solid #cccccc; + cursor: default; + font-size: 16px; + line-height: 12px; + height: 12px; + width: 12px; + text-align: center; + position: absolute; + top: 0; + right: auto; + bottom: auto; + left: 0; + -webkit-user-select: none; + -khtml-user-drag: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.perseus-input-number-editor .simplify-indicator { + border-top: 1px solid #cccccc; + border-right: 1px solid #cccccc; + cursor: default; + font-size: 10px; + line-height: 13px; + height: 13px; + width: 12px; + text-align: center; + position: absolute; + top: 12px; + right: auto; + bottom: auto; + left: 0; + -webkit-user-select: none; + -khtml-user-drag: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.perseus-input-number-editor .simplify-indicator.optional { + background-color: #dff0d8; +} +.perseus-input-number-editor .simplify-indicator.enforced { + background-color: #f2dede; +} +.perseus-input-number-editor .answer-status { + color: inherit; + display: inline-block; + text-align: center; + text-decoration: none; + width: 75%; + -webkit-user-select: none; + -khtml-user-drag: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.perseus-input-number-editor .answer-status.wrong { + background-color: #f2dede; +} +.perseus-input-number-editor .answer-status.correct { + background-color: #dff0d8; +} +.perseus-input-number-editor .answer-status.ungraded { + background-color: #d9edf7; +} +.perseus-input-number-editor .input-answer-editor-message { + margin-left: 5px; +} +.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor { + font-family: 'Lucida Grande'; + width: 230px; +} +.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor .perseus-textarea-pair > textarea, +.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor .perseus-textarea-underlay { + padding: 5px; +} +.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor .perseus-textarea-pair { + border-color: #cccccc; + border-radius: 3px; + min-height: 53px; +} +.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor .perseus-textarea-underlay { + margin-bottom: 0; +} +.perseus-widget-radio .choice-editor .perseus-single-editor { + margin-bottom: 0; +} +.perseus-widget-radio .choice-editor.correct textarea { + background: #aaffaa; +} +.perseus-widget-radio .choice-editor.incorrect textarea { + background: #ffcccc; +} +.perseus-widget-radio textarea::-webkit-input-placeholder { + color: #777; +} +.perseus-widget-radio textarea:-moz-placeholder { + color: #777; + opacity: 1; +} +.perseus-widget-radio textarea::-moz-placeholder { + color: #777; + opacity: 1; +} +.perseus-widget-radio textarea:-ms-input-placeholder { + color: #777; +} +.perseus-widget-radio .clue-editor .perseus-textarea-pair { + border-top: 0; +} +.perseus-widget-radio .choice-clue-editors, +.perseus-widget-radio .choice-editor, +.perseus-widget-radio .clue-editor { + display: inline-block; +} +.perseus-widget-radio .delete-choice { + margin-left: 5px; + padding: 5px; +} +.perseus-widget-radio .perseus-single-editor { + border: 0; + display: inline-block; + margin: 0 0 5px; + vertical-align: top; + width: 280px; +} +.perseus-widget-radio .perseus-single-editor p { + margin: 0; +} +.perseus-widget-radio .perseus-textarea-pair > textarea, +.perseus-widget-radio .perseus-textarea-pair > .perseus-textarea-underlay { + padding: 5px; +} +.perseus-widget-editor-content .perseus-widget-radio .checkbox, +.perseus-widget-editor-content .perseus-widget-radio .delete-choice { + position: relative; + top: -10px; +} +#solutionarea .perseus-widget-radio li { + padding: 7px 0; +} +.framework-perseus table.perseus-widget-table-of-values th .perseus-single-editor { + width: 80px; + margin-bottom: 6px; +} +.framework-perseus table.perseus-widget-table-of-values th .perseus-textarea-pair, +.framework-perseus table.perseus-widget-table-of-values th .perseus-single-editor { + height: 50px; +} +.categorization-container.categorization-container-editor { + width: 350px; + margin-bottom: 160px; +} +.categorization-container.categorization-container-editor .card input { + margin: 7px 3px 7px 13px; + font-size: 12px; + display: block; + width: 81%; +} +.categorization-container.categorization-container-editor .category { + float: left; + padding: 5px; + width: 160px; +} +.categorization-container.categorization-container-editor .categories { + width: 176px; +} +.categorization-container.categorization-container-editor .perseus-textarea-underlay { + margin-bottom: 0; +} +.categorization-container.categorization-container-editor .drag-bar { + float: left; + font-size: 10px; + padding: 2px 0; + height: 70%; + margin-top: 3px; +} +.categorization-container.categorization-container-editor .header { + margin-bottom: 8px; +} +.categorization-container.categorization-container-editor .header input { + display: block; + margin-right: 24px; + width: 76%; +} +.categorization-container.categorization-container-editor .header .remove { + position: relative; + top: -14px; + left: 12px; + float: right; + width: 20px; + height: 20px; + padding: 2px; + color: #666; + cursor: pointer; +} +.categorization-container.categorization-container-editor .header .remove:hover { + color: #333333; +} +.categorization-container.categorization-container-editor .delete-item-area { + position: absolute; + width: 150px; + height: 60px; + padding-top: 40px; + bottom: -150px; + left: 10px; + border: dashed 2px #888; + color: #888; + text-align: center; + font-size: 20px; +} +.categorization-container.categorization-container-editor .delete-item-area.target { + border-color: black; + color: #333333; +} +.categorization-container.categorization-container-editor .card { + width: 130px; + padding: 0; +} +.categorization-container.categorization-container-editor .card.dragging .drag-bar { + margin-left: 2px; +} +.categorization-editor-area { + height: 30px; +} +.categorization-editor-area .add-item { + float: left; + margin-left: 17px; +} +.categorization-editor-area .add-category { + margin-left: 173px; +} +.perseus-widget-interactive-graph { + display: block; +} +.perseus-widget-plotter-editor .plotter-categories, +.perseus-widget-plotter-editor .pic-url { + width: 70%; +} +.perseus-text-list-editor input[type=text] { + padding: 3px; + margin-right: 5px; + min-width: 20px; + max-width: 340px; +} +.perseus-text-list-editor.layout-horizontal input[type=text] { + float: left; +} +.perseus-matcher-editor .perseus-text-list-editor { + float: left; + max-width: 50%; +} +.perseus-matcher-editor .perseus-text-list-editor input[type=text] { + max-width: 90%; +} +.perseus-matcher-editor input[type=text] { + width: 46%; +} +.perseus-matcher-editor input[type=text] + input[type=text] { + margin-left: 2%; +} +.info-tip-content-container p { + font-size: 12px; + line-height: 1.4; + margin: 0; +} +.info-tip-content-container p + p { + margin-top: 22px; +} From a597132cb1395ce8f3b498f49a4252776a58732e Mon Sep 17 00:00:00 2001 From: benny Date: Mon, 14 Dec 2015 15:02:25 +0800 Subject: [PATCH 045/156] Remove css dir in perseus --- css/editor.less | 895 -------------------- css/editor.less.css | 660 --------------- css/lib/mathquill/font/Symbola.eot | Bin 890190 -> 0 bytes css/lib/mathquill/font/Symbola.ttf | Bin 890008 -> 0 bytes css/lib/mathquill/font/Symbola.woff | Bin 474392 -> 0 bytes css/lib/mathquill/mathquill.css | 410 --------- css/perseus.less | 488 ----------- css/perseus.less.css | 1194 --------------------------- css/variables.less | 13 - css/widgets/categorization.less | 106 --- css/widgets/categorizer.less | 50 -- css/widgets/dropdown.less | 120 --- css/widgets/expression.less | 133 --- css/widgets/image.less | 18 - css/widgets/interactive-graph.less | 11 - css/widgets/matcher.less | 36 - css/widgets/measurer.less | 10 - css/widgets/orderer.less | 115 --- css/widgets/plotter.less | 26 - css/widgets/radio.less | 146 ---- css/widgets/sortable.less | 202 ----- css/widgets/table.less | 47 -- css/widgets/transformer.less | 18 - 23 files changed, 4698 deletions(-) delete mode 100644 css/editor.less delete mode 100644 css/editor.less.css delete mode 100755 css/lib/mathquill/font/Symbola.eot delete mode 100755 css/lib/mathquill/font/Symbola.ttf delete mode 100755 css/lib/mathquill/font/Symbola.woff delete mode 100644 css/lib/mathquill/mathquill.css delete mode 100644 css/perseus.less delete mode 100644 css/perseus.less.css delete mode 100644 css/variables.less delete mode 100644 css/widgets/categorization.less delete mode 100644 css/widgets/categorizer.less delete mode 100644 css/widgets/dropdown.less delete mode 100644 css/widgets/expression.less delete mode 100644 css/widgets/image.less delete mode 100644 css/widgets/interactive-graph.less delete mode 100644 css/widgets/matcher.less delete mode 100644 css/widgets/measurer.less delete mode 100644 css/widgets/orderer.less delete mode 100644 css/widgets/plotter.less delete mode 100644 css/widgets/radio.less delete mode 100644 css/widgets/sortable.less delete mode 100644 css/widgets/table.less delete mode 100644 css/widgets/transformer.less diff --git a/css/editor.less b/css/editor.less deleted file mode 100644 index 38fea1a7c8..0000000000 --- a/css/editor.less +++ /dev/null @@ -1,895 +0,0 @@ -// Use this file only for editor styles -// (changes to the renderer will not work in production) -// - -// Variables -// Should be consistent with webapp's variables.less - -// Colors -@grayDarker: #333; -@gray: #999; -@grayExtraLight: #eee; -@grayLighter: #ddd; -@white: #fff; - -// Editor Style -@editorBorderWidth: 1px; -@editorBorder: @editorBorderWidth solid @grayLighter; -@editorBorderRadius: 3px; -@editorPadding: 10px; - -@widgetBorderWidth: 1px; -@widgetBorderColor: #ccc; -@widgetBorder: @widgetBorderWidth solid @widgetBorderColor; -@widgetBorderRadius: 3px; - -// Dimensions -@questionWidth: 480px; -@leftCellWidth: 360px; -@cellPadding: 30px; -@rightCellWidth: @questionWidth + 2 * @cellPadding; - -// Colors -@wrongRed: #f2dede; -@correctGreen: #dff0d8; -@ungradedBlue: #d9edf7; - -.border-box-sizing() { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -} - -.size(@width: auto, @height: auto) { - height: @height; - width: @width; -} - -.position(@position: static, @top: auto, @right: auto, @bottom: auto, @left: auto) { - position: @position; - top: @top; - right: @right; - bottom: @bottom; - left: @left; -} - -.user-select (@select) { - -webkit-user-select: @select; - -khtml-user-drag: @select; - -khtml-user-select: @select; - -moz-user-select: @select; - -ms-user-select: @select; - user-select: @select; -} - -.pod-title { - background-color: @grayExtraLight; - border: 1px solid @grayLighter; - border-bottom: 0; - font-size: 1.25em; - padding: 4px 10px; - border-radius: @editorBorderRadius @editorBorderRadius 0 0; - &.closed { - border-radius: @editorBorderRadius; - } -} - -.smiley { - position: absolute; - left: 0px; - top: 4px; -} - -// -// General editor styles -// - -.perseus-single-editor { - box-sizing: border-box; - width: @leftCellWidth; -} - -.perseus-json-editor { - width: 100%; - font-family: monospace; - height: 500px; -} - -.perseus-json-editor.invalid { - background-color: #ffe6e6; -} - -.perseus-textarea-pair { - border: 1px solid @grayLighter; - font-size: 12px; - line-height: 1.6; - position: relative; -} - -.perseus-textarea-pair > .perseus-textarea-underlay { - color: transparent; - margin-bottom: 12px; - padding: @editorPadding; - white-space: pre-wrap; - word-wrap: break-word; -} - -.perseus-textarea-pair > .perseus-textarea-underlay b { - font-weight: normal; - background-color: #dfd; -} - -.perseus-textarea-pair > .perseus-textarea-underlay b.selected { - background-color: #ddf; -} - -.perseus-textarea-pair > .perseus-textarea-underlay b.error { - background-color: #fcc; -} - -.perseus-textarea-pair > textarea { - background: transparent; - border: 0; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - font: inherit; - height: 100%; - left: 0; - padding: @editorPadding; - position: absolute; - resize: none; - top: 0; - width: 100%; - - /* for Firefox, this helps. it seems that the underlay is still 1px off and - I'm not really sure why. not too noticeable if we're just setting the - background color though. */ - margin: 0; -} - -.perseus-widget-row { - margin: 7px 0; - width: 100%; - - .perseus-widget-left-col, - .perseus-widget-right-col { - display: inline-block; - width: 50%; - - .range-input { - float: right; - margin-right: 5px; - } - } -} - -.perseus-answer-editor { - .perseus-textarea-pair { - min-height: 50px; - } -} - -.perseus-answer-options { - border: @editorBorder; - padding: @editorPadding; -} - -.perseus-answer-widget { - border: @editorBorder; - border-radius: 0 0 @editorBorderRadius @editorBorderRadius; - padding: @editorPadding; -} - -.perseus-widget-editor { - border: @editorBorder; - border-radius: @editorBorderRadius; - margin-top: 10px; - - .perseus-widget-editor-title { - .pod-title; - border: 0; - color: inherit; - display: block; - text-decoration: none; - - > i { - float: left; - font-size: 14px; - margin-right: 10px; - } - } - - .perseus-widget-editor-content { - border-radius: 0 0 @editorBorderRadius @editorBorderRadius; - border-top: @editorBorder; - padding: @editorPadding; - transition: all 0s; - - &.enter {} - &.leave { - display: none; - } - } - - // Are any widgets capable of overflowing in the editor interface? - .categorizer-container { - overflow-x: scroll; - } - -} - -.perseus-editor-widgets-selectors { - background-color: @grayExtraLight; - border: 1px solid @grayLighter; - border-top: 0; - border-radius: 0 0 @editorBorderRadius @editorBorderRadius; - padding: 5px @editorPadding; -} - -.perseus-editor-widgets > div.selected > strong { - background-color: #ddf; -} - -.perseus-editor-widgets .warning { - background-color: #ffcccc; - padding: 4px; - margin: 4px; -} -// -// Misc styles -// - -.MathJax .math { - // override athena silliness - color: inherit; -} - -// -// DOM-based styles that overwrite rules set in khan-exercise.css -// - -#perseus { - margin: 20px; - - // Question area styles - #problemarea { - /* Override the min-height property used for displaying the problem. - While editing, the size of the editor itself is a better constraint on - the size of the problemarea, and having a smaller problemarea is nicer - if it means it aligns better with the editor. */ - min-height: 0; - - // Force the question width to make too-wide items visually overflow, - // to indicate that there is a problem to content creators - width: @questionWidth; - - #workarea { - margin: 0; // override ke - outline: 1px solid #ccc; - } - } - - // Answer area styles - #answer_area { - position: relative; - - #examples-show { - float: none; - left: 109px; - position: absolute; - top: -30px; - } - - #solutionarea, .answer-buttons { - border: 0; // override ke - box-sizing: border-box; - margin: 0; // override ke - width: 225px; - } - - #solutionarea { - margin-left: 0; // override ke - margin-top: 20px; - outline: 1px solid #ccc; - // Make too-wide items visually overflow, to indicate - // that there is a problem to content creators - overflow-x: visible; - } - } - - // Space out the question, answer, and hint areas - .perseus-question-container > div, .perseus-answer-container > div { - padding-bottom: 25px; - } - - // Add radio choice/hint button styles - .add-choice-container, - .add-hint-container { - margin-bottom: 20px; - text-align: left; - } -} - -// -// Table styles for Editor/Renderer pairs -// - -.perseus-editor-table { - display: table; - table-layout: fixed; -} - -.perseus-editor-row { - display: table-row; -} - -.perseus-editor-left-cell { - display: table-cell; - padding-right: 30px; - vertical-align: top; - width: @leftCellWidth; -} - -.perseus-editor-right-cell { - background-color: #f7f7f7; - .border-box-sizing(); - display: table-cell; - padding: @cellPadding; - vertical-align: top; - width: @rightCellWidth; -} - -// -// Hint Editor -// - - -.perseus-hint-editor { - padding-bottom: 20px; - - .perseus-single-editor { - margin-bottom: 5px; - } - - .reorder-hints a { - font-size: 16px; - - &:hover, &:active { - color: #000; - text-decoration: none; - } - - &.hidden { - visibility: hidden; - } - } - - .remove-hint { - padding: 0 10px; - float: right; - } -} - -// Only apply borders to hints if they immediately follow a hint-editor -.perseus-hint-editor + div .perseus-hint-renderer { - div.paragraph { - margin: 0px 0px 22px 0px; - } - outline: 1px solid #ccc; - - // Force the hint width to make too-wide items visually overflow, - // to indicate that there is a problem to content creators - width: @questionWidth; -} - -// -// Button Group -// - -.perseus-button-group { - display: inline-block; - - & > button { - background-color: white; - border: 1px solid #ccc; - border-bottom: 1px solid #ccc; - border-left: 0; - cursor: pointer; - margin: 0; - padding: 5px 10px; - position: relative; // for hover - - &.selected { - background-color: #ddd; - } - - &:first-child { - border-left: 1px solid #ccc; - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - } - - &:last-child { - border-right: 1px solid #ccc; - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - } - - &:hover, &:focus { - outline: 2px solid #999; - outline-offset: -1px; - z-index: 2; - } - } -} - -// -// More Options -// -.more-options-container { - display: block; - padding-bottom: 24px; - position: relative; - - .more-options-title { - border-radius: 0 0 @editorBorderRadius @editorBorderRadius; - color: @gray; - height: 20px; - font-size: 14px; - padding: 5px 0; - width: @leftCellWidth - 2 * @editorBorderWidth; - - position: absolute; - left: -1 * @editorPadding; - right: 0; - bottom: -1 * @editorPadding; - - text-align: center; - - &:hover { - background-color: @grayLighter; - cursor: pointer; - } - } -} - - -// -// Dropdown editor -// -.perseus-widget-dropdown .remove-choice { - margin-bottom:10px; -} -// -// Input Number / Text Input -// -.perseus-input-number-editor { - font-size: 14px; - - .ui-title, .msg-title { - display: inline-block; - text-align: center; - } - - .ui-title { - width: 100px; - } - - .msg-title { - margin-left: 5px; - width: 230px; - } - - .options-container { - padding-left: 30px; - } - - .input-answer-editor-value, - .input-answer-editor-message { - display: inline-block; - } - - .input-answer-editor-value-container { - border: @widgetBorder; - border-radius: @widgetBorderRadius; - float: left; - .size(100px, 53px); - overflow: hidden; - position: relative; - - .numeric-input-value { - border: 0; - font-size: 13px; - outline-offset: -3px; - width: 100%; - } - - &.with-max-error { - .numeric-input-value { - width: 60%; - } - } - - .max-error-container { - display: inline-block; - width: 40%; - .max-error-plusmn { - cursor: default; - display: inline-block; - width: 20%; - } - .number-input { - border: 0; - font-size: 13px; - width: 80%; - } - } - } - - .options-toggle, - .answer-status { - height: 26px; - line-height: 26px; - outline-offset: -3px; - vertical-align: middle; - } - - .value-divider { - border-top: @widgetBorder; - } - - .options-toggle { - background-color: #eee; - border-left: @widgetBorder; - .border-box-sizing(); - color: #444; - cursor: pointer; - display: inline-block; - text-align: center; - text-decoration: none; - width: 25%; - &:hover { - background-color: #ccc; - } - } - - .is-strict-indicator { - background-color: @ungradedBlue; - border-bottom: @widgetBorder; - border-right: @widgetBorder; - cursor: default; - font-size: 16px; - line-height: 12px; - .size(12px, 12px); - text-align: center; - .position(absolute, 0, auto, auto, 0); - .user-select(none); - } - - .simplify-indicator { - border-top: @widgetBorder; - border-right: @widgetBorder; - cursor: default; - font-size: 10px; - line-height: 13px; - .size(12px, 13px); - text-align: center; - .position(absolute, 12px, auto, auto, 0); - .user-select(none); - - &.optional { - background-color: @correctGreen; - } - &.enforced { - background-color: @wrongRed; - } - } - - .answer-status { - color: inherit; - display: inline-block; - text-align: center; - text-decoration: none; - width: 75%; - .user-select(none); - - &.wrong { - background-color: @wrongRed; - } - - &.correct { - background-color: @correctGreen; - } - - &.ungraded { - background-color: @ungradedBlue; - } - } - - .input-answer-editor-message { - margin-left: 5px; - - .perseus-single-editor{ - font-family: 'Lucida Grande'; - width: 230px; - - .perseus-textarea-pair > textarea, - .perseus-textarea-underlay { - padding: 5px; - } - - .perseus-textarea-pair { - border-color: @widgetBorderColor; - border-radius: @editorBorderRadius; - min-height: 53px; - } - - .perseus-textarea-underlay { - margin-bottom: 0; //override - } - } - } -} - -// -// Radio editor / renderer -// - -.perseus-widget-radio { - - .choice-editor { - .perseus-single-editor { - margin-bottom: 0; - } - &.correct textarea { - background: #aaffaa; - } - &.incorrect textarea { - background: #ffcccc; - } - } - - textarea { - // http://stackoverflow.com/questions/2610497/change-an-inputs-html5-placeholder-color-with-css - &::-webkit-input-placeholder { - color: #777; - } - &:-moz-placeholder { - color: #777; - opacity: 1; - } - &::-moz-placeholder { - color: #777; - opacity: 1; - } - &:-ms-input-placeholder { - color: #777; - } - } - - .clue-editor { - .perseus-textarea-pair { - border-top: 0; - } - } - - .choice-clue-editors, - .choice-editor, - .clue-editor { - display: inline-block; - } - - .delete-choice { - margin-left: 5px; - padding: 5px; - } - - .perseus-single-editor { - border: 0; - display: inline-block; - margin: 0 0 5px; - vertical-align: top; - width: 280px; - - p {margin: 0;} - } -} - -.perseus-widget-radio .perseus-textarea-pair { - & > textarea, > .perseus-textarea-underlay { - padding: 5px; - } -} - -.perseus-widget-editor-content { - .perseus-widget-radio { - .checkbox, .delete-choice { - position: relative; - top: -10px; - } - } -} - -#solutionarea .perseus-widget-radio li { - padding: 7px 0; -} - -// -// Table of values editor -// - -.framework-perseus table.perseus-widget-table-of-values { - th { - .perseus-single-editor { - width: 80px; - margin-bottom: 6px; - } - .perseus-textarea-pair, - .perseus-single-editor { - height: 50px; - } - } -} - -// -// Categorization Editor -// - -.categorization-container.categorization-container-editor { - @categoryWidth: 160px; - width: 350px; - margin-bottom: 160px; - - .card input { - margin: 7px 3px 7px 13px; - font-size: 12px; - display: block; - width: 81%; - } - - - .category { - float: left; - padding: 5px; - width: @categoryWidth; - } - .categories { - width: (@categoryWidth + 16px); - } - - .perseus-textarea-underlay { - margin-bottom: 0; - } - - .drag-bar { - float: left; - font-size: 10px; - padding: 2px 0; - height: 70%; - margin-top: 3px; - } - .header { - margin-bottom: 8px; - input { - display: block; - margin-right: 24px; - width: 76%; - } - .remove { - position: relative; - top: -14px; - left: 12px; - float: right; - width: 20px; - height: 20px; - padding: 2px; - color: #666; - &:hover { - color: @grayDarker; - } - cursor: pointer; - } - } - .delete-item-area { - position: absolute; - width: 150px; - height: 60px; - padding-top: 40px; - bottom: -150px; - left: 10px; - border: dashed 2px #888; - color: #888; - &.target { - border-color: black; - color: @grayDarker; - } - text-align: center; - font-size: 20px; - } - .card { - width: (@categoryWidth - 30px); - padding: 0; - &.dragging .drag-bar { - margin-left: 2px; - } - } -} - -.categorization-editor-area { - height: 30px; - - .add-item { - float: left; - margin-left: 17px; - } - - .add-category { - margin-left: 173px; - } -} - -// -// Graph Editor -// - -.perseus-widget-interactive-graph { - display: block; -} - -// -// Plot Editor -// - -.perseus-widget-plotter-editor { - .plotter-categories, .pic-url { - width: 70%; - } -} - -// -// Text List Editors (Orderer, Matcher, Sorter) -// -.perseus-text-list-editor { - input[type=text] { - padding: 3px; - margin-right: 5px; - min-width: 20px; - max-width: 340px; - } - - &.layout-horizontal input[type=text] { - float: left; - } -} - -.perseus-matcher-editor { - .perseus-text-list-editor { - float: left; - max-width: 50%; - - input[type=text] { - max-width: 90%; - } - } - - input[type=text] { - width: 46%; - } - - input[type=text] + input[type=text] { - margin-left: 2%; - } -} - -// Info-tip lives in react-components but these styles are perseus-specific. -.info-tip-content-container p { - font-size: 12px; - line-height: 1.4; - margin: 0; -} - -.info-tip-content-container p + p { - margin-top: 22px; -} diff --git a/css/editor.less.css b/css/editor.less.css deleted file mode 100644 index d541f8b161..0000000000 --- a/css/editor.less.css +++ /dev/null @@ -1,660 +0,0 @@ -.pod-title { - background-color: #eeeeee; - border: 1px solid #dddddd; - border-bottom: 0; - font-size: 1.25em; - padding: 4px 10px; - border-radius: 3px 3px 0 0; -} -.pod-title.closed { - border-radius: 3px; -} -.smiley { - position: absolute; - left: 0px; - top: 4px; -} -.perseus-single-editor { - box-sizing: border-box; - width: 360px; -} -.perseus-json-editor { - width: 100%; - font-family: monospace; - height: 500px; -} -.perseus-json-editor.invalid { - background-color: #ffe6e6; -} -.perseus-textarea-pair { - border: 1px solid #dddddd; - font-size: 12px; - line-height: 1.6; - position: relative; -} -.perseus-textarea-pair > .perseus-textarea-underlay { - color: transparent; - margin-bottom: 12px; - padding: 10px; - white-space: pre-wrap; - word-wrap: break-word; -} -.perseus-textarea-pair > .perseus-textarea-underlay b { - font-weight: normal; - background-color: #dfd; -} -.perseus-textarea-pair > .perseus-textarea-underlay b.selected { - background-color: #ddf; -} -.perseus-textarea-pair > .perseus-textarea-underlay b.error { - background-color: #fcc; -} -.perseus-textarea-pair > textarea { - background: transparent; - border: 0; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - font: inherit; - height: 100%; - left: 0; - padding: 10px; - position: absolute; - resize: none; - top: 0; - width: 100%; - /* for Firefox, this helps. it seems that the underlay is still 1px off and - I'm not really sure why. not too noticeable if we're just setting the - background color though. */ - margin: 0; -} -.perseus-widget-row { - margin: 7px 0; - width: 100%; -} -.perseus-widget-row .perseus-widget-left-col, -.perseus-widget-row .perseus-widget-right-col { - display: inline-block; - width: 50%; -} -.perseus-widget-row .perseus-widget-left-col .range-input, -.perseus-widget-row .perseus-widget-right-col .range-input { - float: right; - margin-right: 5px; -} -.perseus-answer-editor .perseus-textarea-pair { - min-height: 50px; -} -.perseus-answer-options { - border: 1px solid #dddddd; - padding: 10px; -} -.perseus-answer-widget { - border: 1px solid #dddddd; - border-radius: 0 0 3px 3px; - padding: 10px; -} -.perseus-widget-editor { - border: 1px solid #dddddd; - border-radius: 3px; - margin-top: 10px; -} -.perseus-widget-editor .perseus-widget-editor-title { - background-color: #eeeeee; - border: 1px solid #dddddd; - border-bottom: 0; - font-size: 1.25em; - padding: 4px 10px; - border-radius: 3px 3px 0 0; - border: 0; - color: inherit; - display: block; - text-decoration: none; -} -.perseus-widget-editor .perseus-widget-editor-title.closed { - border-radius: 3px; -} -.perseus-widget-editor .perseus-widget-editor-title > i { - float: left; - font-size: 14px; - margin-right: 10px; -} -.perseus-widget-editor .perseus-widget-editor-content { - border-radius: 0 0 3px 3px; - border-top: 1px solid #dddddd; - padding: 10px; - transition: all 0s; -} -.perseus-widget-editor .perseus-widget-editor-content.leave { - display: none; -} -.perseus-widget-editor .categorizer-container { - overflow-x: scroll; -} -.perseus-editor-widgets-selectors { - background-color: #eeeeee; - border: 1px solid #dddddd; - border-top: 0; - border-radius: 0 0 3px 3px; - padding: 5px 10px; -} -.perseus-editor-widgets > div.selected > strong { - background-color: #ddf; -} -.perseus-editor-widgets .warning { - background-color: #ffcccc; - padding: 4px; - margin: 4px; -} -.MathJax .math { - color: inherit; -} -#perseus { - margin: 20px; -} -#perseus #problemarea { - /* Override the min-height property used for displaying the problem. - While editing, the size of the editor itself is a better constraint on - the size of the problemarea, and having a smaller problemarea is nicer - if it means it aligns better with the editor. */ - min-height: 0; - width: 480px; -} -#perseus #problemarea #workarea { - margin: 0; - outline: 1px solid #ccc; -} -#perseus #answer_area { - position: relative; -} -#perseus #answer_area #examples-show { - float: none; - left: 109px; - position: absolute; - top: -30px; -} -#perseus #answer_area #solutionarea, -#perseus #answer_area .answer-buttons { - border: 0; - box-sizing: border-box; - margin: 0; - width: 225px; -} -#perseus #answer_area #solutionarea { - margin-left: 0; - margin-top: 20px; - outline: 1px solid #ccc; - overflow-x: visible; -} -#perseus .perseus-question-container > div, -#perseus .perseus-answer-container > div { - padding-bottom: 25px; -} -#perseus .add-choice-container, -#perseus .add-hint-container { - margin-bottom: 20px; - text-align: left; -} -.perseus-editor-table { - display: table; - table-layout: fixed; -} -.perseus-editor-row { - display: table-row; -} -.perseus-editor-left-cell { - display: table-cell; - padding-right: 30px; - vertical-align: top; - width: 360px; -} -.perseus-editor-right-cell { - background-color: #f7f7f7; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - display: table-cell; - padding: 30px; - vertical-align: top; - width: 540px; -} -.perseus-hint-editor { - padding-bottom: 20px; -} -.perseus-hint-editor .perseus-single-editor { - margin-bottom: 5px; -} -.perseus-hint-editor .reorder-hints a { - font-size: 16px; -} -.perseus-hint-editor .reorder-hints a:hover, -.perseus-hint-editor .reorder-hints a:active { - color: #000; - text-decoration: none; -} -.perseus-hint-editor .reorder-hints a.hidden { - visibility: hidden; -} -.perseus-hint-editor .remove-hint { - padding: 0 10px; - float: right; -} -.perseus-hint-editor + div .perseus-hint-renderer { - outline: 1px solid #ccc; - width: 480px; -} -.perseus-hint-editor + div .perseus-hint-renderer div.paragraph { - margin: 0px 0px 22px 0px; -} -.perseus-button-group { - display: inline-block; -} -.perseus-button-group > button { - background-color: white; - border: 1px solid #ccc; - border-bottom: 1px solid #ccc; - border-left: 0; - cursor: pointer; - margin: 0; - padding: 5px 10px; - position: relative; -} -.perseus-button-group > button.selected { - background-color: #ddd; -} -.perseus-button-group > button:first-child { - border-left: 1px solid #ccc; - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.perseus-button-group > button:last-child { - border-right: 1px solid #ccc; - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.perseus-button-group > button:hover, -.perseus-button-group > button:focus { - outline: 2px solid #999; - outline-offset: -1px; - z-index: 2; -} -.more-options-container { - display: block; - padding-bottom: 24px; - position: relative; -} -.more-options-container .more-options-title { - border-radius: 0 0 3px 3px; - color: #999999; - height: 20px; - font-size: 14px; - padding: 5px 0; - width: 358px; - position: absolute; - left: -10px; - right: 0; - bottom: -10px; - text-align: center; -} -.more-options-container .more-options-title:hover { - background-color: #dddddd; - cursor: pointer; -} -.perseus-widget-dropdown .remove-choice { - margin-bottom: 10px; -} -.perseus-input-number-editor { - font-size: 14px; -} -.perseus-input-number-editor .ui-title, -.perseus-input-number-editor .msg-title { - display: inline-block; - text-align: center; -} -.perseus-input-number-editor .ui-title { - width: 100px; -} -.perseus-input-number-editor .msg-title { - margin-left: 5px; - width: 230px; -} -.perseus-input-number-editor .options-container { - padding-left: 30px; -} -.perseus-input-number-editor .input-answer-editor-value, -.perseus-input-number-editor .input-answer-editor-message { - display: inline-block; -} -.perseus-input-number-editor .input-answer-editor-value-container { - border: 1px solid #cccccc; - border-radius: 3px; - float: left; - height: 53px; - width: 100px; - overflow: hidden; - position: relative; -} -.perseus-input-number-editor .input-answer-editor-value-container .numeric-input-value { - border: 0; - font-size: 13px; - outline-offset: -3px; - width: 100%; -} -.perseus-input-number-editor .input-answer-editor-value-container.with-max-error .numeric-input-value { - width: 60%; -} -.perseus-input-number-editor .input-answer-editor-value-container .max-error-container { - display: inline-block; - width: 40%; -} -.perseus-input-number-editor .input-answer-editor-value-container .max-error-container .max-error-plusmn { - cursor: default; - display: inline-block; - width: 20%; -} -.perseus-input-number-editor .input-answer-editor-value-container .max-error-container .number-input { - border: 0; - font-size: 13px; - width: 80%; -} -.perseus-input-number-editor .options-toggle, -.perseus-input-number-editor .answer-status { - height: 26px; - line-height: 26px; - outline-offset: -3px; - vertical-align: middle; -} -.perseus-input-number-editor .value-divider { - border-top: 1px solid #cccccc; -} -.perseus-input-number-editor .options-toggle { - background-color: #eee; - border-left: 1px solid #cccccc; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - color: #444; - cursor: pointer; - display: inline-block; - text-align: center; - text-decoration: none; - width: 25%; -} -.perseus-input-number-editor .options-toggle:hover { - background-color: #ccc; -} -.perseus-input-number-editor .is-strict-indicator { - background-color: #d9edf7; - border-bottom: 1px solid #cccccc; - border-right: 1px solid #cccccc; - cursor: default; - font-size: 16px; - line-height: 12px; - height: 12px; - width: 12px; - text-align: center; - position: absolute; - top: 0; - right: auto; - bottom: auto; - left: 0; - -webkit-user-select: none; - -khtml-user-drag: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.perseus-input-number-editor .simplify-indicator { - border-top: 1px solid #cccccc; - border-right: 1px solid #cccccc; - cursor: default; - font-size: 10px; - line-height: 13px; - height: 13px; - width: 12px; - text-align: center; - position: absolute; - top: 12px; - right: auto; - bottom: auto; - left: 0; - -webkit-user-select: none; - -khtml-user-drag: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.perseus-input-number-editor .simplify-indicator.optional { - background-color: #dff0d8; -} -.perseus-input-number-editor .simplify-indicator.enforced { - background-color: #f2dede; -} -.perseus-input-number-editor .answer-status { - color: inherit; - display: inline-block; - text-align: center; - text-decoration: none; - width: 75%; - -webkit-user-select: none; - -khtml-user-drag: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.perseus-input-number-editor .answer-status.wrong { - background-color: #f2dede; -} -.perseus-input-number-editor .answer-status.correct { - background-color: #dff0d8; -} -.perseus-input-number-editor .answer-status.ungraded { - background-color: #d9edf7; -} -.perseus-input-number-editor .input-answer-editor-message { - margin-left: 5px; -} -.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor { - font-family: 'Lucida Grande'; - width: 230px; -} -.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor .perseus-textarea-pair > textarea, -.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor .perseus-textarea-underlay { - padding: 5px; -} -.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor .perseus-textarea-pair { - border-color: #cccccc; - border-radius: 3px; - min-height: 53px; -} -.perseus-input-number-editor .input-answer-editor-message .perseus-single-editor .perseus-textarea-underlay { - margin-bottom: 0; -} -.perseus-widget-radio .choice-editor .perseus-single-editor { - margin-bottom: 0; -} -.perseus-widget-radio .choice-editor.correct textarea { - background: #aaffaa; -} -.perseus-widget-radio .choice-editor.incorrect textarea { - background: #ffcccc; -} -.perseus-widget-radio textarea::-webkit-input-placeholder { - color: #777; -} -.perseus-widget-radio textarea:-moz-placeholder { - color: #777; - opacity: 1; -} -.perseus-widget-radio textarea::-moz-placeholder { - color: #777; - opacity: 1; -} -.perseus-widget-radio textarea:-ms-input-placeholder { - color: #777; -} -.perseus-widget-radio .clue-editor .perseus-textarea-pair { - border-top: 0; -} -.perseus-widget-radio .choice-clue-editors, -.perseus-widget-radio .choice-editor, -.perseus-widget-radio .clue-editor { - display: inline-block; -} -.perseus-widget-radio .delete-choice { - margin-left: 5px; - padding: 5px; -} -.perseus-widget-radio .perseus-single-editor { - border: 0; - display: inline-block; - margin: 0 0 5px; - vertical-align: top; - width: 280px; -} -.perseus-widget-radio .perseus-single-editor p { - margin: 0; -} -.perseus-widget-radio .perseus-textarea-pair > textarea, -.perseus-widget-radio .perseus-textarea-pair > .perseus-textarea-underlay { - padding: 5px; -} -.perseus-widget-editor-content .perseus-widget-radio .checkbox, -.perseus-widget-editor-content .perseus-widget-radio .delete-choice { - position: relative; - top: -10px; -} -#solutionarea .perseus-widget-radio li { - padding: 7px 0; -} -.framework-perseus table.perseus-widget-table-of-values th .perseus-single-editor { - width: 80px; - margin-bottom: 6px; -} -.framework-perseus table.perseus-widget-table-of-values th .perseus-textarea-pair, -.framework-perseus table.perseus-widget-table-of-values th .perseus-single-editor { - height: 50px; -} -.categorization-container.categorization-container-editor { - width: 350px; - margin-bottom: 160px; -} -.categorization-container.categorization-container-editor .card input { - margin: 7px 3px 7px 13px; - font-size: 12px; - display: block; - width: 81%; -} -.categorization-container.categorization-container-editor .category { - float: left; - padding: 5px; - width: 160px; -} -.categorization-container.categorization-container-editor .categories { - width: 176px; -} -.categorization-container.categorization-container-editor .perseus-textarea-underlay { - margin-bottom: 0; -} -.categorization-container.categorization-container-editor .drag-bar { - float: left; - font-size: 10px; - padding: 2px 0; - height: 70%; - margin-top: 3px; -} -.categorization-container.categorization-container-editor .header { - margin-bottom: 8px; -} -.categorization-container.categorization-container-editor .header input { - display: block; - margin-right: 24px; - width: 76%; -} -.categorization-container.categorization-container-editor .header .remove { - position: relative; - top: -14px; - left: 12px; - float: right; - width: 20px; - height: 20px; - padding: 2px; - color: #666; - cursor: pointer; -} -.categorization-container.categorization-container-editor .header .remove:hover { - color: #333333; -} -.categorization-container.categorization-container-editor .delete-item-area { - position: absolute; - width: 150px; - height: 60px; - padding-top: 40px; - bottom: -150px; - left: 10px; - border: dashed 2px #888; - color: #888; - text-align: center; - font-size: 20px; -} -.categorization-container.categorization-container-editor .delete-item-area.target { - border-color: black; - color: #333333; -} -.categorization-container.categorization-container-editor .card { - width: 130px; - padding: 0; -} -.categorization-container.categorization-container-editor .card.dragging .drag-bar { - margin-left: 2px; -} -.categorization-editor-area { - height: 30px; -} -.categorization-editor-area .add-item { - float: left; - margin-left: 17px; -} -.categorization-editor-area .add-category { - margin-left: 173px; -} -.perseus-widget-interactive-graph { - display: block; -} -.perseus-widget-plotter-editor .plotter-categories, -.perseus-widget-plotter-editor .pic-url { - width: 70%; -} -.perseus-text-list-editor input[type=text] { - padding: 3px; - margin-right: 5px; - min-width: 20px; - max-width: 340px; -} -.perseus-text-list-editor.layout-horizontal input[type=text] { - float: left; -} -.perseus-matcher-editor .perseus-text-list-editor { - float: left; - max-width: 50%; -} -.perseus-matcher-editor .perseus-text-list-editor input[type=text] { - max-width: 90%; -} -.perseus-matcher-editor input[type=text] { - width: 46%; -} -.perseus-matcher-editor input[type=text] + input[type=text] { - margin-left: 2%; -} -.info-tip-content-container p { - font-size: 12px; - line-height: 1.4; - margin: 0; -} -.info-tip-content-container p + p { - margin-top: 22px; -} diff --git a/css/lib/mathquill/font/Symbola.eot b/css/lib/mathquill/font/Symbola.eot deleted file mode 100755 index 0d10a95b88a50ef24c7ea66b1ba6bf2af17a3cf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 890190 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ǃMV?li31U9)mV***n(s)}YrAuPD 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 z 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

)TOJ!yEwBL8Uco035(&Ce|X5o|f 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

yqN7pL*mp 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 zDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_ zpMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj) z|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7> z_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#N zg8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FR zDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_ zpMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj) z|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7> z_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FR8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7 zf&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ z8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur! zpMn1w_@80^pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w z_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7 zf&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ z8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur! zpMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p z{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w z_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7 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 diff --git a/css/lib/mathquill/font/Symbola.ttf b/css/lib/mathquill/font/Symbola.ttf deleted file mode 100755 index 52337df9be976d87f59c69f68ed4721affbee278..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 890008 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ΠV8)Ly&( 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

Xzn0VTkeaba(3(B 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

1xexVvFyT_vTxGz7yQ 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 z zICKci9;yt$g`rQmy^1u^@6IKriT*pcvrW$V$09m+!T`UFuw$nzew3mGIud9EJHcBp zD>MUUg14#Sop3$;6)c0(u7wW3^^bwGaQc(<-_iYPFbljxE(P!0&NxCwfkn#DsL&5! zVdxVX?SQjFzZ?O_$qlz&Amd=`8Z`dz!k{HAMAAJFAWCBua7$-eg~jc+^UR(Go$)KU zi0S(iNZ-H~_{Da3bx397;cL+eK)mGXj-jRZm7;(0OaAz006Ts`9Q4Yz1?DebhOa!m z#8X=0^_G-+@E4umxdV!b_nDUkpUa#gJ3-t@ma%w!5IlkRRsEBDasT9=bMgPCzW6^shi0E@_%OSN{t02iWKQ#ZKhaJ+MjR$i6X%Jm#E*zh z2!R2lfo`A|sKI(T#J_8>MB%`49=9N=x~tw%b=s0)y_3JrMx77CVdJ&~0TpZWIjrIB1z6kd!6l=&`SX5bUI(Pbgv*KHq*VO7VGC5ep3w;o zHY~8RY8xhj9yPZBh{SZC$L|f>6<}SjnxWkM0veX00$QvUv){9&*%|hw!mKm}Wr}o= z;L4hp7%6F|MZTfYri^HNUy<<1E0o5j*V{DIl_zxrTp1>puT0i1iAH;tb%gI~n~^qcdt{Q4`@-{vCxPd*A2` zQ?zfWh+Zd&isxG;K1#AqHpgYkaM``Odz<7x%^rF*E;iX4N$G;6A`#mZx~;L*8sq~& z<2euyFQ5jyfQ0Ux&bPB9ySTUW+-;pAih`zlUJD$S)JJHFpu3>1t^j>ch8xH?k^pa0uDi(s~&elgoh5k+z-CG5i`6mblOVh{12e2(IwUPHySh4}EfKx&zVGDSGT**^ZsNj#Y;E}RC&G&D= z{k#}$L`KsU1zw3u?of?_)81F@E^Bo z=)1oF6gr22!9a2A;mn;c8G`;4L6VLo1WbkyeN-bt=;WxI4bdySam6QPaMr{XNwk z9qOL@(dnZ0zb3$<3&8i$NATnY1lz1TXXs`0E!0j4d^=gpygfoJaHAHpb?yPRaQCdN z1|_l@5A`xQ4b$PX@RySY4-;|o7tkN>`SDf+<1u|q+yO?g4vvS{(p?Z#!hNBnRQeY5 zgvLPs7L6{2Ob2z~OEAbyrsy?WZe@T~WFcr{;^2(X9XQR#aBcP{xa@elDktxldGWvn ztmw*vWeUWv5dlY78VbC1dHAU~$}}aO@)o z;qxj24vI&760zI&I?WKwglJ6Z;FqoNOQ1Urf7-I}1!Ha)-;IYBZfX7gsi(fjU-HIj zcwP&CZN)x~T7gIlQqDX~+$o#{L>R^4Z<7k|Jp9y+8#p_`!8DSd%w!NM1QpkRe+CLQ z%DrU~1qxCPk6*b0PXPawD%nUB~F z1cvrr0GLCqaQpf$5YW5dI0y#88Ztj0=KTqTYOovbIEb?$Fn|Jm=B)>V=Hz!Yb+!Qy z0+Kn3?_|)QAQ++%q30UjjmEB-F#?;<8;6>MMNL6}(t3M17_;`HH{i2xwE_uv9z^a3 zw_A^axvf8e;QP<*2-xBc7#1G-sP$^y9 zdhuc_bbZRxOZOdyehJkjB1}X);l-K|r#yfQwsiS23E=8*v?R4nZpZP_P{YdEdmSaw zFTquLd7v4d0q)SrrnZqI+eY==Az{Zi$^{$HcdEa@jeH9FNZ%mjvV!*L}nEMO&-cQ3R!gl%wmdG$Ju(q(ZJ;ji6G>gbcCmA-qw_!tn zvr?h-D3l7;we#qhhsLL7j6U{sLv#Ds+Go!;Ww^$#AN%@F5O{WqRcDy>9DU;lxaaLR zcTTPx1`B@)`QYV2!+?t1_Z_&>SlPV$;G3ZDO{j%O;2`h_r~qH__FZrg`#O@b!}FO{ ziqM%A$T^k(5y4d80$2x#SaB^kvj%}88(`XC+DPBW2T635dm(;iqEU$wtkoy8Ml6efR}MAfj%$l zUTlXb1td4%k!(hU_p;He?tkUwArn4=kG?n5+4v=V?XxSJGm6FnH+T=EB&hpzKQyAM zX=(qbJDN9b`f}4IIOzHN4}jIDzH5K+i{tR-dXlDMt z^>E_kzLTakY$X*4U<7y=-YLvU`Z~hA47`R55MzubULRKJ$h}Sm6Gj<-@H#z6tPKMG zM=i&{SnI{g3FahRqFA~&n7-opkr~qb%@ykkHuh?txv6h##jrKQ^_~T*rsovS+|u4_ zdqI!lK%Qj0#B_#`~tv5@*0D90Rte{>8Hc&;9t^z7lWG4tMk zbYslpC*T*mhot-hzd7*u{nta!12$|I+0J~9#*H51BAS|bFB{x~99|UYY+;VLGM|T5 zY&*JS$L)*(LPfI7>&)(Bm%+Bl}Cka4U4#z^7%IP4}Ow?NzX=puJ#gX?yF|YE$v3Rl{Qf zv)iUo5sATd1HbtO{y2HW`_$}DhrS9w?N~s44x+|93xDls6qteV(Rn-ePBBjTc=LMW z_RAgj%`^;5DQrJ~ii7FS$IMasd(IOeONjt00!|SKh=4snGe_GhLL)#{6MP$bMk2=Y z?NK0$+!Xp=OI{@RYDr~iIF|%{Bf&{78~I2@+sH6JToCFIZS>=v9{f&GOz%1J6V`b+ zDbmT1+-yubdBUXCC>7|{F@4f1xUHFpnrb|3_xC^8a(>J3?9rE&1UGDP3o88@R%?%Q z&p)_!use5wVZtLhC0W&PzEP4MBi8Fzbu_M7ao?rc+jf$FI|EOAx)a_mojYsFl!)&d zhQ;j#F+e+d1Efz>dKZ(C4J|Wgu7SJ3^sgOT;PcN{T& zb4Lu6m|lbW3a>m^R3vL7Fh-KVLnti@^h+VuKn83Mk~##>JhN;YD28u= zY!y7S5k$uWcRYyR2+ycMHcBntcK<%|)KNHYGpGd{CxBs~H+&z?1WQ0N+z&TTfcL>C z9sv*Gdew-R+{MPyKce~FL*x*Bh+)J?Vmz^kSV62Mwh;S>SBQ(m_r%XYibg{MNCS9p zkJha*@~&<)GK%T45j6AuIvh?fw(I987;jvp^sxaiUa3-P{XF-=Z=gfZP@EDh?B@n0 zdr&ggy#uGVbMr3n;@OVdqyp68Y^WT@>O>M7zKK`Bah*1+3Qv8&igoN^i&4((8{iFo zev8M9>WZ_YoV;J9@ZLF%nzxxkH_@Y*0;4mMTRXvP<3Q#1qI|&Z<+2IF{*(N1*?=?m z3UB~o^`AQrptmz)7adw0nj+x0yE*WH)r)mezf3ZQf&32d;~$)ECFx z?yl=@jdd`|j{1{N&DjZ<{-*aEy2m^&Yic47KmK6Kah*=oIDgcFht%=H=+&R(HTHP0 zN)^pUxC>)TV#EcZmj?@vkDI)H_GEIDSF6^Og%K);B+{%E%akuYt%ptSbty^m#biX# zo9BDhHBE1eZc!C>EH58joSsV4&f#UrLJ@0k1asjA__Koj5qQdg;WM)mamFsI-X0+X z8BR**6RJpgtS@=TEAXKQwl%q;NsH~7<~;BG`xxUUV7dH;f+l-M&(GX`b`1O|OP3~$ zb^~F3b9d;Bj*Jk62AJa)>0`SMv6D$}!M7&0G!_&CZE?Ynj>);+JhCxmuo#FXj0}ho zY59@Nb{$RDEx`N0e@VNqB|bR7X!D)=AjN9ikd!eZDmAm$5m5ViUQ2gzv6_Y7Z|XHg zA_29vp-Za{C#k*JledmO053<2ZHd3+Kl5Y8 zwVK>Pg+`TAlbY4duBAxOZuCh9DpQhRi?Nr^Z*V9hBb6QNstc%@X-*wg$x<3sW(^*r zQD}^=VQ0{P5G|ao`h&y;;tCp*9RT|ewIasPhpCr}+wkXgQh2R}-=eI<9D@&yKhF6z zN>F>#-QkU_U1^kx;rxQ}>oaa{^^xT)LDZV?mK{zz5%A&rUe0WcU&ztKg-58JKOk|$ zYvWIVR>f^3!+Za%PL?-*q!|3glOx5jct0+$yy96f6RBcYEnxJ0)B$vw!Q+J z+NOLS`lno4U0g=!`lT|Eyd9VHAhW?Xc(pfL~j_DAB$+DqOs`1`X6lh>c@_I zxMC*>{QyxwuD?BOB1Ke1NrNROwn;b8YSy5xiH@sXSQUp|A+a)}Vw|<1d0_9{7`Z&I zEJ3aqwq&3~+AJH+*pl2%nTZw;?l9KX`jV^(Jt9);2ITZlj1*+#y32enc*0kZm0sqD z<)dQLvq}QgEfFPr+7;t*#>Sa*TuMuFFR?B<&mb36mn2jDVmv;5O2dA+x5P8oHp-5w zH<43-Q)p|J#rJSz#Eq;=Nlbwe%nZeV5lgJeZ++Z%7`6PlihX2;Iv32Jn2|rRx!E2S zQ~J&opM2x9W@`aBRR31-kn-O&K)8PB=%=dtOo63~Hf+yPXHa`5!O^HRsx>=0(Qk;) z1U;P3#Y==S!_!k>$1rWYS_l>eM%Ol!I1*{_#K7mB>A;^lvQNK^0ZH&PvOZn!Gdq&v zyY=a@#47PwFBUh9@c2@8TUmLe_O`I2ut=eRV@5R#i8~S!{xLl&MgK&KFu~;w z*zJ8Yf6tykCjl1zp-QTaP6eVkoy*iS`Sv?cK1oKqsWl2iT)kK5-JhX`e_uFCERP>* z^V(((cPQ;MXH5iyh@a%Xa@wNhJ+C?~ zENxM<7N-(rWvc#w55M>>u%88rv%qog@FQ>TgwL#o&+HI5I+CW7e`7-N)YL~p)<*=c z+t1%m*DrhI);z?#L_aFR3wITRL2>yja17jdci7H|!F_pNVXd`wJ2Z)3C9q>HXwQj{S);KhJEMc#6ZtOe5 zDd#MegW#^28gFEPov)jKn|Fdh{K>rp8io>};&;Y#9`PJb8*h0Whf+Kayc1QeWz~K( z9JM|t8p(Lja)Z;s`fMDzu$fuR0bu(^zmkhA#OYf+SlJ*nz~9KA8ve1hdYDNl5C~1f zs<*;F)Ik#d*0bqk%Dzdt2^GW5k2R=f{4rv1aq-|0ukTYeJeIaKA$QWgl#@+8JMuCR zA_X$yz>VG*ilx45slX`APu%3}*k3b!Lsr(9IXmZ! z$;#T$`-y=g22H+yUZ3F~6#GW>NBQAz&P|E=LSRh2=97M~s(AJ4;#HN6jg4?&f;B$1 zMkAAHYEt8^3At5;19frPQnLl5O*=4eoMzPf=}pCh2NyS`@7$mnH}AkS_-=Y^cARct zVHGpjU*_|b`8&2faBx@SOZ&&{I{1Le=L?b)zbnzQH=S~>Ufq4wDk#j&Eg%#K2d1($jEd+%^aazwT(AhVgH2#3*bVlB z!{Bvr0=x?@fGgm0a07F7c-;jqwo#6SMzYH)p!pe-dxJ?P7^gMMoNbLH*`8>w1q7=JKsTz3en;P zST|?6;p7}Ga)$qS*21OWk3V3?^#<@>3g^8q>fm1+SLsABa&P3ZYP<6KID=09{rq<9 z3ex7r+b{eyH~Bj8S}9kno#Eay0K%EMcg4ogI13236yP!;;Ms6)J6>?rbUp*PE57Zp zlQ{e=DydZBv=w~%7`y>j%zaK_6vjkkI20-M-8IQ(tzo4xBEyA8}^Op!>RQqJ~Dm9bH3ktHHf9#x*D$}5wXb&s~! z^_SL{`L#(&g#uN4+?w)WTrE%rqNEv>pfHUQThAsGm?HL3YdU0Dn=?W2_(uRLMyY6Vr9&rb%WEMua;CDOs#*QsF$>_ zjEXdhsnAhMY>cEP&173jvb8a)zy|`8L!8(Vk{AuK z5^^(0H|ydjdxP5iK!=L8QAR3`#r9~Ga5?=sgZ;wi5dAofm6s>23PcmQi?G26nvjja zf+tv|0L{gmH%RAQ?G`3bz^CH2*mH(`UY|{+M&dd)6Q@7FHFoMKyGxY5-NeFg)>M@~ zI%(3QW%)bdH$vNofOLxB!x4_-!=~5NOds0psHdrKNb$H9ZHy@K>XUaE@sQWy@(~mF z+C?(9FOZ*b4bLx`ZtVN%)~#2ojr}HPR7V89hc9}rc%lULG^6R;YeY-Uj2Sh}qtc=? z3vN#_(VA(kW?IM=gK5A;QWObagk!}LL)o{O_ln_k5@YBei2#vLbSHWd)x;2D95IXY zbFrFOPwXW2AWr60;sfGS;!93DAqFxKjaYs^DB<<>_${?O)#gPRZrisr4$oOW&XV1Q zoq*zBPEmo_HBNd_t1x$hMSgqdl~RR;1>j_{qfKocL- zH-4J`)#CZXjW>hwzCL*EM8I!x^U4rZKG~^BQE{77Y}_sdZk93A*w>Laz_~x-dOOzH90paMpaIUqV8yHf3wjrPyJkx0ntx<4VVI+7W}FaQ zpD>}L1wCy@ARnEU5rmi1a>tQ5nSQU=?1}{>dAo8-f+3A$$9b~G_jLDo%bPlN<8|_D z(+_aVaQJh5x*<`xj(Gw+esN%A3hXiXzCqFP6C+2$0ZHRwkJNEH$VR2Ci4^P@R`lwD zzrU53ERGUNcLCwVy&J_zw{K^Sb*2Y1lKp~3HRVp7!55|XniWbW70{tI+B_zebd7bx zzt!li2DPEA-_%*@g(jN#13tF0yGN^!PN<5A(TfwuJK_xP@m`BqKfo|3#%8QYNsP9W z;$>F7vuqpa^?MztfX~-G)ZLr4#y@spu_qh$^tX`DGqgN zYe%4_rbeLeH>NJ);8Al)(CZnTnLfa4ndgeqB^3xIqkN_&D_bN_$Tl8-A!5*|e!V6b zFZDS5nRxojt!buFEqgA_Ym?Y&yZ5il>7V$}TaSahYV+*M{HzBez#k7ZUNn#F*Wpd} z!uJG*xWoXd^d|XQ^F1lIZG#&IgVe}~o>dRB*01BD5}PvBxhq{BnzE!ehLRt7WasZu z(t-7BojRM?sdtsfC_{rA8VJsp>0Q~|NLZ2dokDp2jpS`nYb^oV;tSAdI%Mrgw6w5j zI>f*KMCQJ|w2Jzms-r)7fel&63rOZBKRz6D`#Xc+3&pLSihnI|M+P#E=Ll#RolQ|U zEwN@Zyqv63B@=}3PqOx4qLCO&OeAI#bN_#lw3R+CQo0%m#XcOp)!HdgJJ9?T%gNZ` zYr9kZeIuenrkli+s-&6y#>u^R3o=`vB)Cf=IeYuB{?!i9y6LVho}_v$?o}JBeqAgTxWy z9d7UTCE_#UC*lu)gLLYE1$aRgC;%m(7w88DfstT5n1STtrC=pk3pRttz&`Ne|FI;D z{Q+wITFx^F_Z#3(!``!5{(xNo+SJ%10)faS%gLQ6qkzS$g@|PXeD+xWhy`V~^Tg@k z)kpxYagwVRORi`ra6}!=AJ%Z>gH9LcZVfNiUc+MT^8a_S7Cxg%D*{#TM)dA0?>i&H z5G}Hai>jll8;lvf*z&A6ZDye)w@g8?Qma10%$VWaQm;jpSTZ20Zh$@uepeoyTe~|W zAOU+4b8-banQmc5&`B!g#eOhNs3ldR;!FUt@~N79vU?+yS4r07B?_i{(HyF*dV?&b@_l4R6-5`j zNdGLdZ%~v6G(lHXQkJyifT-ysHh7ub5tUQI7G{MOYVhRfIY zWi^uYj|>s+k7>Ck$+o~nze+1Aj}Mh4|>GB0X6l1K&K^qxB`RP6Thv<^$W+ihPJ zC20^V;(C*h#ze#$G%^2MF?GaSSWG2j)$u0s8G|%K7no^aS!02bPKrtD!KjU@2(4Xj z5s1}fcN1e`KzxSOuIOg5jg2*XGAt=7hgT_s4@4mmR*{IrS|Af!kZ`M3Mk(j1#BwA7 z4vkQ17!#{a)}jktyb;NUv10OSi77@G49WDgiP5V`)B+^6FoI@Mm}t^sryS`WV-;Eh zlDNR_UVWv#iXNy>Jy<2Fem-q5kaGfKsE&~$@l&pPf)gXb2g52&l&NG;&hRL0G&4E0 zIaW-W1pUQo8EK-9nrNj_@v}r5qn601Z;bKzCP`(-%O<%|1|F8_RfUEEGN6jlW?!iR zE@gy4F1I9#9i~veB-UV*kS`U)>&)rT#{}}V!H)TC9AfNjEcu5yEy?~mD={i0N)t$k zP-!A#)YzwWmkj!!%b)*&Nco?MjMxV@LC{u)z}AhtV{)fWEu+yaA1B9pVs1B49PiFT zAUHl?>!n?(0&qdpVHJT3g4A7?whl-I+HMVIb3-?vrTS0)cH5GXdZ?DBrAfiJ`jJbv zeLFc9*3DhFZf+gqZOA^QpJVW9cp7KVz%m5yNrS-4*k%o;Ui=C*@BG8b&Bchi6NoVR z1-~At4ZzD4v(nOLRlv)E+9N>xy3zPLuvI_Uw5d8GH4xAVwbh%N9;|jx0%UzXASW@z zLHPGA!{C~!uN^q>+Eg%M*cKo^cxb_bL!lSit}b~@xw@Aj^RXpY+xoADFCIM#idXY+ zelEDe;MEBndxM}zKqwW;@KJCD9{%-Lco>xY`s<}T#Jlg_L0R5?m;4Dn2#14BU=sRl zg2Um1AQ6=SG&7~)whzWqt$BF~V5Z35rN@S796=hRN2`<-ZOJJFAxA`pFmlJ?B;{<=A6 zk?WI_^>Rya^RM1Hdrkn&2SLGt!E25lT{C!rAc*(9cHw}Vvy%Fs@BquWgp(mS37d<2 zL}8xme?*V039WE{K>^&~I-zpG5sBo;f^)r7Q+xjpSOYc9dv<`VDO2FvJN7hxCzpQ* zpU4|HFfSY{rVF3`1vdRFl=;_a5iYm0|GRqs-d_J}S95+@@AmBwV#NPL|MGS^OxSfz zr+P`l`?cW~dl9RH8BRZM55cwie}NS356|zHyv`yjVe2q$G5eO&)sZ`^a{Fdx%hC;#AhQT zpH1uu_w<}MuP1Md3*Qow^mBxqun}IwQDUi;WI3^vbCQJEj5q~O;pA1)tH4e;sIDyB zwM>JzX48z#Y>$&;o>9v=-k~)XH;#bAFAQktzAsG@xhVh3%M*0*@V*zDBhs>8tnww~ zUz#jRr~NNgdlP~$(N=i%3cP;bVfY^W0q$Nk?orX?-owGV8=&<1w;*$P)kNWrF{`N2 zpT7t{&bOt$l{M;z39tUB$#^5EgKJ-dA7D(^V9IeoR%teG4!v9f4?E)$k7eKY z_Y;8Xt9k~8K7)gQ+|Z&E&E5or%ZBx^XKOP{MqaG-_PTH1h|(NYwxfJl*!~wzCpRHp zI}(jYm4M$ZX4c9*v^JXhGClw`X^rcU&iU{{i80jd&l#J%!y{vYqnL z>VH*wAY^|kTqwEpxsKyq6`X}*4?lN^x8q+Ar&B4Yo+v(YALnmS?veAm@tk3cCpkf- zz}|ZehQP4H%U^unnmn+%JVg(l0x!Tv;NJV4?39kh8N3tdEqj?c+yGegV5`wXU&Kch16 z>Njc!DUhRb(3fR$anz=+BPtht1AZgkO^%Lg7T58!YES^~2@F!H2H|f2REN)>fO~eU zm>9Sb)DDF$pf!e3%}3Ydx$p@X37;GaR=`E!>yQhb7|3%&LoUAG?eHslBmFK>!g)DH z4P}w5V!3UJHg1g2V*QOAQA-dJjZ(xwUf+cJvnL+{;E*n_%&JieSxKj_z*^~)C5-Po0 z5P7JpAn)B&cnYO12|woLOM<7m3J;ZLpTqT$hxATt$Dl&8{&(~pLQA9&-H95afw+&D z$yq02D$P=M&Y_J{1h8vJ4~=FtKj7S1B>`^pIi>Wwjld%!QELEfj>Ju5b|v0pf#gdI zP+;plM4qu%Pi%k)yiSV77WBZ%Qnb?P064}MOJQTGTohht#wf5H=TDT>lx~P$H#CfAoiEfz0D2^ zeh6lVdS`$Oq>zbt>w=byyjGNOqbTQ(IU!;~wA>W0h7Vb3 zqgrD;1qT2YtR1PN`|nB(1+yCmgnl2`FU1aqf?-ZW3D^asx3d?3Z<5AZwxmQElK=xZ z7%b6(xPxRJ7#`z(qfnqR1mXWj-Fv`Aadm&=b7ppCV5!SCI_xgXN{5Br1(7Zt6hTlC zMG&xyz4zWV*4T}S#uj@tw!~;mY%wvhq?z7LGwo5>x&H5+SrAL|B)|9fe?OmB+$ncv z?%aFNnRCy*_nhx3QU$xAqJ&iFdmHr~D9i7MwtNBWHw|x&NC^ej741UDgFQ!gf-@1c z)t5_n%{M;`71o8p0!07^Lz{nvmsc3`UY2}eJkc=z7tV=t!acAr@f{S6l!>V_uv%xp zM6!X}2qsXNz(`;|43<=|#Vg|3Ul4A{pV8fV7y@G^(v7(`wdS{V+YsMc<}88?;}fldb}|1M3Ws}2mJ31nr$zf9tHHPZU6#0A>6)N z1~J7D6oHZ+D`Vt;D`N;*X5mHuYph27n}U9f`ce05JLWOPRTsWO|GcnWPSuvjH3n~< zw&MwH+TriY>r6za$rA6FcsE!?RI4_{S8M)7`9J$?Xc1T3X+nENS&`COU(ksw?Q^+) zy(pi+4PYf3RU)12s z{Bg*BcUJzZ`~G>MOQuh+hGcZ=lTRLNd-H#3d#<(ZaqmT@w+$rB-oGgCdowQP^ToLn zW~=+~Fv1?Ky!g+{J-fP3P-Aq@E?xlPz4|ed-}J-fk0M?le_sOyg#Pr2cQd&=Zx`7m3b*UrZ(t}P*wUbDpT3e1PM-k6ssc-_i&#ZeZtmVbl& zP>dX{qvENKR1p~=su&|ds>35WsXJBSz7%keNmjrZqtXhz(QIQJ9W3r&Z5pH0u_nYD zm3W}baB7ysaYzFlw@~ppn$7vrUEU3}!Y`Hj+8QXHT5#Y#1>-*qZRV#Xb{5dA8)@`W z8g6yy_)}QNPhGj&=NLDqW}~;qh#oF3@XRUB5^~p3YiyM^6!Ia5wo2+J-7b?Y8jiZbK;P8m!t3i{*-{W-Mfo6Yv*u8FTg z#h1Be*g^BG^TD%nSC@+^#v3WtCYfAb($7uvh4&{VtZX}ML^-AEJ#-GL5O&e!cxZq# z7j``ZX}(eWI>=PMiD;Zx0LKY8tB2bl{Tf;YJap>4BA_%jiQ7clUug zu*w92hKo6%$p}SbdW1sXaLyUh?UnGptG=#mILu4*RmnOC0k+}QF!CDwR=)%-xeO^)%^%yqga+jdba#gY zNRYWeWN3!wKn$mmp`%?)ZzNK^*yr4T2wkkR9WF51qO9O&+@1 z3@LY~*XKdBP_gr)S2i@xPaQ!UcYb(!!%%21j(@-#ZR9>z~PlTE&fy5 zv@D}zKrj0Dlev{(EB>ZrwEv*O!a;R;I;d8mXFTYr<6GLJ)0c$<10ne*v~SH+?d0#F z<5%*&Md&|lc;TQyD+bEYXM3g~dD7OAbSSg--fZad(>h>_FOEU`zJGrs`p=B@xZU&6 zE&e5TA3kyxk)Zr2N~tjF6waVyb%4jRyh5jF^~#RVqZMp5>I0hQBs81#g)wM#Hi(kgqVqFe0y_nP{n*SXaPn@6(kE;eloWCu5`WJ-EYuB@C?C9QEk{!ZiHzxBVp zA1WR1XGZ*&g2=v?3Sz(9S|I+3<%#*HCHm)W^V~lzWJ_zoxZ5+1FGb89_Fd{Q#kq;u3GOR}4Jw2bgCX#pQUTKeWue@`BG@6qbXn1_pv z-2W}PDEZ&iv-tm{rVr>C+XtTev;gxE7PjGUP_Wygas79= z>#H>#JJyije@C>I?yHgJy4#i|=AV^@{U4Uh?)|UJ*s-;&^h0HRsGMyfFdi=ty7bp? zZOxtfd%CoJgYh4}?eA*)SncrZpd&qrJIQpwB_ZpqI__lCJa!yC=``sdA6(<5tE_m3 zV5enR-N##e-)VfOh;auyxRWwZPZPntYr(&xu03)s#DS?N-t+jizk99)H;-Jyba@9g z@X=f-{+h`Ot!UGvAh@dz&m9HFgoXt39IvqI%rY(a>2t!W=k9+yYSgd4Zl&wCh9pMi zt`qj48&f(h`wY0}=&q|E>+IV?EPwjkxr=P`R}8a_J(m+PMu5F1#HFqW?|b6gp74T4 zGQ@meg7!MS&fcezvD7J~I*SobLTMB4EUql#Q5Ug4w2>f*A~ZhMHbs;^8!@^O%?$Cl z%*30(0fa}^y};y!#{s~D20sQ)uUDzY7MG!7*c#N(#~%$wLjr611i%*5>03W9FYj~y zejn;l4C7-1FVFXzxBiU8vH&Ct?cdpfj`dI%ggUuJi0tmy2!U4 z3hS~COgY_*Tw}A{W!i4dv+x^W%>Y#GN}q>=-B6Y^$Ip>Dei3O543-eULmFNq(-QRD zmZg3IscQ|fnT(8yVwG(^2j*HG`T^a@T@S~$RDgLZT6@d7q^@p>^%hz?70eY|;Mn?H zbOZg+&?7Ca2l=6KD_vmvOt|)2WZin1thz4i*pem3vg(?jk*%+b{0&9UL{nWjjdXJl z={xnkU&((hyGymFvPq9Y!1FmN2nQZtiBuzNmBc1Vy5I=Lp|t@q!4ji0+CX$TXQX9( zN}S#$M1)ZO>p|JQQo@s*lV&%V*3Lv6JZb$K-FG|3GLrX{w?cRU>+sQjl6^|?1xB)O5)Hii38-Jh-U<2@3J9DZd`S@|=gOl1_8BAbN z2KTQIOB!6>(9tQfI%j9r#HA;1(wCWDKKZB<9Mq@xVuXa7Czqm+3%7QihrY>&?p?R; z2A_E?wvcCK``Nuz0v?rSQ3X_qI5Jh~TfkLYb|#w?oLKZl5~GSJMT=Rj6j{UrG`zzY z)<}%TZJ|nH!WD03^(`k>+5R~tL)SHBRZZ-7(2_JIsoz?eT(M<9rDw*z_H&o)pLe3V zuTN~YYvbfNUuB>N+TJy@w_cty$R}_(O174jbn^2nY+x=YRlc;nX1Ckr@tue9Z|hD5 zhC1_%*Q@=t-4h2WfW0uFqF4Cgs6rpr(Ln}Zg{EKos7|}(!kw_9!Q-LMR9~teHJlnvji)B#b})%X!UR~~LTqyhI~XLlG2URZ zDdUw8%-D!UnZufx1d5`G^%`-J=1qDdPt1E&S_d|!@(Fhn4A_?5Al?iL&=_$Fi}(B) z_fA!Jv}$(`&#vfzoZHqpO|Ku2eLs3jbZ2Fvl1@i2?sWAJhAE1)GzClv_IKUc)RB|V z&mN%Hr*%de_pY8E?rQCws!s1cey8kDbm5TwZdgD-SWXTI=)x?a4yT|$@DVd7E46+( z9TP@d{mg;I&MQ2^0^fKe58gr1P3|z&O`~9PV#D+D!ei~n6&g1*UG`R>*{?LrV})~m zRv;Y~Locsy>h+`>A)DSPM6t4pfOhQyvYWrB-xd1C#ffRGcr1R8UG69H-s}ZRgQbRu z%0|$35^NkLMY1q>*(jZvBCCZu#-Oz6v`PbGR1pQjtl@_IiKc()`7Aoyk57oz0-U%B zq0sI}$VE>NL!V9^^^}!yvOYCxYSRu~&%oZyi6gg~F63l)M9-Y`HW{Jp1{l#t_EiF+ zY5dELh!Bp^^qbE48hMdp&GI8z2KzexUc}Ww(L7wsGa~G&$$<)?(TW(Yp^`m@XzxfI zFVa9Xwl$KAB8G&y#Y<3@kv~5_%zs^3x6Uh`@n@ZqX1S`8E(XfHBZ}vl%QiyLo^Wk# zPJME6c#7J~1r0K%=e;?i(8plbhD0+O?=U8J(4-IN&)few2OVEX4ez(&EYmmes@y3d zWr(F$`)csI^4;=&rIDk2IusPw4^MM88!}JVjo9{SsBgF~(j%DYZT-=oyc4^cvSBIE znd(WbV@y1W??mFzN%85dBrunSM06suj|4U&A-AMh4IBw-rzRoK+9I==ROHx_K#tkA zV*RCE-Ok=(Q6iM3w#SL5QCG_SQMI(nA$ zeBL!KOq(5i!)S7S(b@S$SCjEZaJD8q&h`18B`|4ILU4g#&!|(Nm5RCyyobRGV)lc_ z#C7Od?sN7#tf7TdW<1u)BwoN+dJd$?#gPWUM$?z!r5B{O5KxX`Upo4L=?g~~w_FPxh= zs2aU_>^MaCYMgQA!o=b4cd9#aq8NRdmS^;uTfR(idv4_HrR%2+KkOV)`}C?V)10y< zrcaPT{Zl>WdKn8-A;|vT)Um$4H51`e7nj75T^gQ0>h6AQ+p;Ue#^!A9rn7%CGQWCx z?PQOzA~z?OVO=`Io0n^Sf*KF)Y@EGx>-aIkUIRc80Y=&`s;76zwQH*&@7*D>+nri-=TwFahdqsfb!?)S?Jw>jyZl1 zCG5|BNoy;LLLV7>b+C==*e?-fOx#o1fAb_)=18KpVn=DBu)pe~T2p>Zc-n%oyC+S{ zxAx7;2}tu8&a5<<2h7+xp!>>&ZbDAun(h_7%Fzpbi*|NZqSX-RpONj2-lE}U*Xipz zjoS5QN_lw-{((<8V+x04XCJkzMlZ_H4(L6uBij%2%ZZlpx#Ty-6QeLLLIN6*rtI{@ z;hIFf7l+>@qALD)9E5X3A`?gE!353B%SK{P@m8t@@5f;EvLwV1k8PC~0TpvNIhY+r zrdr8uM+#10NwA1P&9Inr2h2m5C&Y+?mIRYZa^og*@0NrJ5W#ziBN02}%$`xbdlyD@ z2?y~rIQT_Os5_a3$945)@^&U<*A z*9-y0{LTHh4d~&L%uh?ItxcN7C%g0*u&w{*`90%eBhyV?YTOG014|l0)T*LOiIHpv zI<{lSSh@onnRuy4r4DH*2@EWBujyh+kBp6DMjZTYTfdMnzX1uMp$U~Ss(|V_-7~Gb zqM~+LGrP~J4p7BZk}CuJ!b19O`|aS+%KTc;Hb?LJUkMx0gL$bRs zUfex<2pZSt$iiorzBkD|c^?Y@n!)U#!<;WZd$ z@1C}9V*9KP6Lt+BwK=2Rd>B!(s(K3g$q1g^f>sqZE8z+^Xv9I<=VHj4chGTISsmZe z9MqjoJ`{OCK*t#0QU9@i(=l16;j=kSIL)H@==!&cUm*gvqOpF})O}&XYr;+R`mPSo zWv!=UUN%lK=wbMI z2Is@w6d&48o}VCQP$xcxpSN!$8HwwZ_if^OpflEeJ;*v`$b%U%owH1DVk8}363YxH zi%L(AB0uJryTQ!QOs@Ty{RESvXR{$l9~r3+f^7CgdXIGcA5G$}-g}DO-Bb>BG4wc& zGx_-Y`Mk95HA5ZHefy&9WfyYCty?!P z_rkK_m6gNEPdp*Xgcc?Dt2sAz1Z5EGR48H(6G#)TMPbt7;jq#q0hzTNi}1rD{G=FR z%nBBF2*Bb99Ez1_S!;_1_BcYvR(u=LF7y~exH`Scd+dYpN&C8wjBFR$dUCk-!m@xs zdesE|;StL&AlHii75&lk%PzF0f-io2_dFiwa13bUy1J*)(E7FI^ZAy;S)VVvz-krq zZ^aLoc>zv3M{KXdKR89I*^(~OuY}#nb)fX(tZa@n!p36#VUjr@%p6s9KxN~4l5o0G zbZpYWC*YpmQw)ZNt66bpzwynv4zk_Z-|qIB2bDv=?7gt8@j%F?t5EaYWWfK?B$(ck z#&{k?@@X%4v{J1Xk}o>cS})-}ETJz+5Oopv5fVw{OLMU#+61R3=~U@);!W)%E42vI^4C=~cD6QQpJtLoMXC zVc8|k0E;c-4#9*@!Fc#Yu!k&e&~^rxtzShd^;p)z{npB>9ei_4l3uuAO%J`Z9pxrl zC!6Y+*KRWg`&e*6)N>d?=xy@q}U1+Jlj&S_1@_uzzD~{RbAfR9ut0uwXBI9zLwBisLD8n+)QWh8gEoJ$BCttf!P?gEmK4*mYhej{y9a_px(TV^ht}KiqwoV# zNkO0f( zm&csVxy$pN>yt)i({IHm4?>A(eqfPPFO+k*ng?Sy*#g(AYi#iYH9kEk+NJza#8nISvPpq>z zTChbyK~}gZk%FisEo}?bMbsdxWKXojq-q;s0Ou)zm*OE9qlZLv=VEJcfwbK}|GazY z#^Mt%vnSAbREFNsqDCpA04@J{_wJu3^j+z|@NHoIaQ^O;7e$3ZYv#^86Wp2`lG8TY zhFB~n#-VXA&k>pcchz*da9R*(29}@^Xap|rd$_#cvy1Q-Phq{0hc@NKYB1hmr4oNi zpaq@md$bt1?x^X(dz!ifhnBzy@nEuaaU>InntA{yBsP98LfqWLMhq?Jtw0Z5Kh{x3=L$S#dQ?>3RVP^5o5m*=Lcf3 zXHtl$lp@X_Il87kA0(SPD*^ zGdyKqqVIm_i3DWt`Jr$OFl3|yQ!V#Lgg;2!9Yes>Tutpef>f)h*&bfVumdh_PdcWCmi%KPKF zZnAGFg+xo|76LjG>T%tKp^!fq9Yse5L%uMSUXG6911P{r^m6!Bcs-47FK#B&?bC#F zbaI;Ty5zS}i52T6*(YR-5eBUp%9@({z(v%3G#rCtqfvLbI9Zku-MmRw8{K^Q(dXKf zN7jVDogJf5F3KGZJCIejMONEHJrbqF2m$A7{ZMPC{c%{qh%7x5sI zsSK)s>h$o+u_@G~1yej=F=*79SVn8K0v3!)mNChAEo(G!j15dA!3D@xi90)!5mZ57 zV@y1U<(Y>6L^y#OP=j!S&W3fcj?SK2`vMDoSY~{LZi5~?dv-&2UMYmY&B7#f3ccq6 zejdr_&<{#13|>^+3?0KN3Nc&XYlO1%spu>8RVu`|jRe<4g=mlc^w3!=(#}qm0p~lw zO6RnFjc~&E^z8Ns%e2s5X!{>s&+acr8*VzkLl1TPjJ0yD4X$XkFh^^-Z;!O;hLux_1^CBBzmi zl;ZaBMvXhQEz_Elkn%114t@7+NWK&sWR+=wY$p@jKWv1ku zEZVDU5MRlmDV3aW*C4uGPF7@@3HkCtU41#v$gG@X)1ys`8a{$)vl3HMI>fJ86W<{v zC2_jxE(xMg%rF)^i324f10h5iy5cV@JH`1 z=Z6lzH%fLJ9sm5()9CoTG0#6gW*+KUIyKu?UT({tigRwfi@2xmHDc-gLlz1=Kc9)u z0@dcqPMs>znY?u-ozAo_kCel!)s9giBDh3}6wjb?sbZ>(s-;Fy6R26#Y-$cQmzpO< zw8hF{h((cLBqfun84EETAowQ=t1`hz3MnI=lz99c0*VLMOhgV600{+&&}ovkDlOiN zv5OootHIh9XF5(oBehwLj@WZ7F_9E|YAjZC+zaT-3+K;YKwpCH(yOmt0-eb_z%tu6 zIAlHg^(6j>eg*mQGiQ#29R2ALr0NtD?w471^Qp~8>rtRC#xg=}Qmsf0@s%yUxn%3s zB{y#_fvlxBO_vwVo44@IHy4sEdhI#<4}H=*tyk}$px&~{cPS_8E(OmmE4JB+mqFRQ z{Dg%3dFX{3fog;zDuH!%L3UU8U}|P`bmr9gd1iAS?mMxXganxf&>V~R_ndtZ3UKuX zhId1Pdoaj&Ph@vql@tYxPw>QHOcdkl!D#SZr1LhXU!>P3) z-v2|^p@%)pIzrB}VyhLOmr8r}4L>asS~=;h>-ZE!(6<~6m1{QVVuoT|5Mn%lamDO} zH3J#GS8&w>?Sk$zbOGisA;1;w0@@WJ8CI8R!f5ijgzx-aU>nHXaNcfDCq@D76Krn= zz}JyH0BD>pIIqO%;1dkr{&!BKhukG=S1o)<#ua{4FqUM|R07prT>q~Y*Z)UQBQYe`7?_O!Wd&`1aBtw@Jh)n5%{N0=(lJ)vnqP9qDA=8P0NLO@< zg+|;Sm5^58*o!XD(!9nT}b@(Bw*p%Y2 z;!)ZV(ukKO`ruQeT$A0NB7THC;UjR z&yJ3UIP~?!3l}b;ufg}i#fulfSNKoOsf}wccOQoD6846M`&!|1%mFw>cq%YZBtA4+ zeSNKq9cTZR73g6ORtO-h;OvG%@OeZ^7g#EN=@L(5xe}Im*_CjFuovGMf$!Yq3K6b< zO01(=R%EjkE&Id8A0qwa!W4Xoan5pbfk@s(=!#h=!cRV4?$(xb1OanY1n+|G;q(YM zc{N1f^y_Ji;vaAn-GgwH4D!)>?kF2bDaHBpjud6|)CDU%jUrKW(u#(RNsw%}EUj`{ zoJ$u8i8Vi~h$cuD6IX+ZCD=e&&`J1yW@tGE~)$8N2u0>G-{yqXR_kTzI0c3o^6T>qp%C1p@ zewIL~tu_;}NwQgDAQdwv3C&J|C}?dKlW2%y5iy}{BC96Yh(SUckkx}UT8yMivLc=w ztsztRhj$!lD80z?dWSI>X;aCWvn9%j6i?FeoR~yV7o`I-QNfFM5p+fo>RJRIP>GK6 zBp>q85dZNI(P{!hTLP@4f>LjCK%tTx$n#!edc2wEnDfhq<|l;qKOJ`k(&@0k1gG$5 zxm;cE93CV08tN98&M#!9FJPC0r#jY`o}=iYulBIX>%5)Re7wIW$GAg+n};HZb&`AO zBY3S=S3p}h|K18~QoHh5y_dR##&#X$tMuxA?oRf>#&a6mv&^%d5}&quFYDIc*LS!+ zv%MuNv}=mHyWS;tUgjVsDmQ*ibdqPBp(bf;zo3G|#W6ZRb94$9;>zrj`A<9 zw7K`Q**DzOYESEwI$*Su!zWfY@2eE{HumV|r*#=Hh2uEBotNC%S*PUuJQY5fX_Zb+ zZdu{E;0hME`Q$Vc0l7Wi3P{<_I4Gt##fr*l%-}pb-bq-%e0~Lw2!&I!(m*BpjmKub6b1uT(S0zzsAI1nnRW+Cvr;K{@oMq~&4)*{*9jP_`VvV=0ecg1^2Q{@*$H zSM~ZQ?bF(r{NCi5t_)W1c1rtc(oR4RosMy&_LBDW-G|Tr%VqjY$9cbp)7dJ=`SAbU z`&-W)_YM9>m&g2FYD@FT-b(D57&XKt)UiX?90w5jXiDn=-Q96upY&+TKe^}el-7f$ zkiWe2zxCArtjvGY2#;TK?1)}pi`Mg-*pIOc@uIX?uQy>S67R6cFT?ueFlrngUCyJP zqFQ2HlcAXi?MRG)%qo2XITewAA;C-zfh3YEM2QnqED5YxddBED4-}WP65`uALZc-yeTGb)O@L>DtMvEqd?qq5F)7ofg z{={n4>QS@RniPVrS@4xFLJVq~g&pyjs?y{uWiZ#8s4~pL4;W+>@#ZY7rCd%hcZ`c; zcWTI^4J4D0Esc#$Ng-jOAutcWMfjw#@e+A0)2Y#*wL~`B)CNtXUY+Z~y{{4HC_cH&l4Z7J#^bH1(h!6vqVuzrm_Aul5miq07HKk`nnC?Q{RSSy=Cnoj zv{iN_vq`bn|4S8x;~5hefS8*9wY2)1&fvj4|M&D96K`T{xcB~R6^HY7NR`>kh7?$g z4pqlsuI=Zi_1IOC9QK%^lK-dEl@j!Z3CeO)k_GAMK@STdq%O#O@N%@feHxZ5 zIaC48AAgD_65&ZLuJKwVgOmgU;-vKo0AlY3@p$mWS`2DpG|W4&j!7gf*70*@@I~4E zd>5Z2m3fI!vBa!WE!^_`_gfaK=s%hV(S=QK4e@cwm*qc)Uix}sTJW2{{q|;X+QcN` z44o>RVG^2ea1CfCnkm#gCtH~u6P}J18;0P2hODVop!fGjA6HFnu4DGo{^{W{-_+K^ zyNclhoSg>@SD*o*p&dd)Q~dnw99<`DklAW$F%QkWU(HWuyW^UsIcz9QB78hYkhpYW zP*@V9LG(y)_$X;eVg{Cw*TADw@g^`+$$Og0r5W6U1nFPc-Ni>(T z8Z|Pd!IEGgvEDUm&`E2o$v^_Mrw{}I9ckMD@tY#y;8Spa9}l4+1O=3}lIR`8SC9N@ z#Wh4;%Wn_p<|?;ui`TUaWZv+OPRDfcim*+z2?wkbtq}@^UXd0HPMcxA|CYHV-0Fgj z_H@*@B0#0~uMmVq>o+cdjqv5U{P6t?g}LsnT|Y^ zaK}a5zGkm?XEq4+IGO1e&qij#FJZb)@#tmrO36@pdwHNw@7&%{jyFDm_;hHO7u$bv zZ~gksTMjK^+$^Cl>7ur5UX-zDC#p=!`+DKwEfx7+;|71W=$q)w!ppx8`A=zi=?MtZ zq0f}!_GwzJ6>igsIGL=IThK@RCH7U(-i1WUHgG&GF1dx83>F8aV|^f!~`e zyyGG2)-8yN_oiKk^+&hSDLnR5_aD|JEP0^qmCXR?{^nO~1Czrb^w6E(4*vQZnxESL zbMzq?KkqN$m!e(#2KI9-QM?I4!b3i~dL9#BbnpQ({~`Kq5P@aoH#~}QVXyn+6;U*; zSjl{M8s1%L*Pj04k5|xfEU;G4Ic;whzJlBp;)PfK_~SJ5-AWA=G?oGj*KIX7N~xg(`?S00~hk?&C?6N`!|_3F3B2=n=1$VsNTeW-%)<#-#?Vo>(bSN&1e(zVxWO-^GzHCHoYMU&22x@pTJIej~%h=x!X(EDCSMQ(;#^wbq{GIcdm0+@u zo#E`H%ywo$-o=%ZpP5hZP(t7R}CKy$sJ(WFi1(Vf1?gcr<0Ol_^{+~ImfuU zsB=f4xh^F|N*E8>X4Z8brzxa+rh&S+*vqpBeSwy0H_@`7QQd@P1qDUMWY#ahJyzA- zdwR07Va8nTde&uj-&HV7v&q%>^*(9qN`hiN0|V35J#-T+x|ACMz^|2gcS4_{!!}m7 zn)gg$D$FoG!zh&QQ(-wvf6ybRFRyk_ z#)&EvW%5n;caQZji*_^*_|xN&b!;q59_Pa|O+}A#n{XYvqa7r#d1xU&j#J{kG7)oB z0s(N01_Hm0l>-aTP6XW7>4{m9P7D$unw?l}TEG+~uQL%N6t;^6U3CqZy>)tHtOjhk zpyWJilhBGaxv?C8gPizC5&-lyBb?ixtAu**DlX zumw*p9kG;q0d3~X*dIjP619Xd3u53<1xS%iu-sKE+x+-4`>j6qTTlY;_F)Y8So()H zpE@Or#hvij)2D@BPM=1HPo6~kr60jaX?c(2i{K%)N04OWiY26IAteGSw*GJ$G0+mt zrev{w@VmBeZ+%-I!LS`lwxj(tPGKWY-#x?^o!VwR^EvI|PTT`tw@f+%9)J#f0 zYgO0h`ou0ATv9Ta{7}99tC=-5Gh#xM0J_pnKL@TW&N>lLgcYq}+Zt4~)FPErEhmEwyekAPTM+-N} zxvaN?ly)8W0s87ax}j+fp()m*SKoK%4{%|`Dprfx19Ojpm_M$jlaaoLE@HfeAq7n4 zue_h|3Mvs2;5O3GvkL6*5;|3&>9Y6O`;-Q27txaKC$WO3YzmIIP_}s7MxiD}TPNPO zj*`ql2t|8;{u%9s&<~G%1S4`1a$v+qM_@ks{nRP+JGh=Y1+M5?RYpb?`O)8?qsW5q zE`>{w?+vdkt?mh0eCKyPtCyk-;VikkGQd1s9y_U)`}|pFSNsR@=R+du3<$sgcb>3xwa%JV^fSSq~Y+EbE4H zK!d(RQ_wfyBikb0jT^r2yk6Dw`!plejPD%-%~0=0#|iJSiA`&SDWHPc;Df%w0`VIW z*QyTP#B%6G$G4=y^!6n(*BS8OUI{usV0Bs-8caG~%QBekTBV7>-S)W;$Os;9=rbRD z0A0|Hq>rnrAhru?>T(UbRjop6(TzLTR#h=-R3p^DW>iDtPL$pv^clAgOyGyULQC)6 zTXzrq2E(m==$*mnE6Lxkr99F&TPwOwP1T%f#d1k|=zXS_W{tTsM6t z^uzU=TK;AO#M8;b^@h*h!~|-ve@O2&q3;>B{ljYw6|^sIm?7hy9j5|bn4ixax~GQ~ z1<%ss(Bc9*e;gijAEg%+pt~@Kx__T4MSsYqv1>dz7%9rCVdx0Emt7*RHHjGV6dy`i zBvUp_K`X_ynnEjd>|SKKb`4qB)RE0QV8*UpFk>{@bq4K%idUf z<6mk-vr#Pmn>&OV@XgojzxkROEJUM(<=a+$E!?H`&=+kKKBl>Nx<3SLxcJ6K^qKIq z@CJ-589B0qjMulKpZVVGZU@4dcc6yEA2biZoIN)4clq; zyQ@~cyV^cw&DGUUUt7NF?X_$A_g~}iDY>7|>DesYkH$%(O+2dS#Bq{{SAqwf@m4an zcMO$m1Y0NG;aKLWiRbio?}GjP4-B8Ua^mm<0}d2;+i?OukP`au#|gqSAK%)%`PRpq zz&>lh{s9My)ponO_y9hfweryf)c#{gxpfPj{TP?6@qRx46fRqY==q_0ylkW;A1|Gv zP5Jnz(6C1fxDu8wnD)wXnO|1|>!tm%*2IR1Vx|0XM7y)zw)8=V*w&6-A&tdEk_8ciRy%-}K9Ek5&Bw14V^dXs0gVnp*%H$$+M zi}Vg~5|6v|^iKxhbLetuCFXCc3OhrS9i-(4(8Z za~EBEd1B@M_?xo15nbAKb6t_WNHI8fRrEna&Qq!5C+tf+n-Z>GSd|p3m*#OZ(J%bV z>}jeUl|ZFYc@jRClBhe;pyyK=Ga0~(2r@Epl}TEMV04Tvfi^kTMTpB2EzW9MA(((F zc-cbvm+#J^uN?G_9GRK=>ZPoJ*}vSo)7i^gX~;HE_qQBLnfd1LvDp zEZY)Rl`cF*Cs^MCbNRuugNCu+UVXI?-Cf4b9Z74^T5iHhaLRI$u!qK@ZCJnl1nbv+ zxUTV3Cb7iFdJ&mRAko@2N{t#E@rDh=vlR^DLX1U(BUNhEI*S?KsJ0r_;$@NWT6X|x zPJ>e`oW>QyM-oQ2hrqLHPOz z><9bodS{UD9~_{PjayH-G`}f1)!|?i=U2bvCBfocLWWD6y2xAq7`Y2@>&7h2p z8{uXDb_MR09(j_#&r*Irr^5XbnY&krqEP`#70ZQzo=on9Sj1?7Hrz0nrOl~eAs!)G znJg_MHklc47`^o~x`%#J7I^%48KKh~_F3yd2Fie`Rei>~2VA-iPE5AY(JR2jZn!DiSjquu&X!@L-A{}g|n)nm=Z8*AUe;y8%r zbu@$f8>QG4;6{!oiZz)^H&_fjf8DA5oF>cFoLh_1APQ*u&Dh@Kgz3O)(afI~e;WWl z$->dw@8VHz=MvaPlquA+7Ro-5{t>-l815^VaYQRsVm*~$Ghro^yj5=sF%gF!omywq z0r9*c-JR8@BYrW<4C`OUW8-vm>l!ncSz!N$39-xVH<<8uX|r$zy@Cv|j{f;Nx1!ICCfCgTfbh$*=y)4f|(vK%(dVB>hQ+nnbNmdik{~8vcI>%Gc+hL z3rds3Mjhr&EXc*l;g)$}3)aWQMHj4-YT|YL-W}N?SVuaYyR11GO$f=}u`Cx(%g!y! zMd>gHpW@W?+-3MCn8Wmfr6C=5%*@es2tmW)O3uuCLvm*B=nw)+g#j~j;0hWZ(m|5h z#dyGUh;zppXes$>S}fNXn^F{P`0HVDqo{a|-e|K*c8J7g(H+#RQKJPJnI*)GWVYIj z;)i32mLgZMQXJ9H2r!yS>?X``oy_*x5OwvVQ?A)+f37$pTJ=rWd2Rox1>C>5kBgU*BHUt(5xg(9Px>{>UW{`JO zZxjv<=h5bYreV{n>(iOH;tNpJJ9IYt>$LsTXH--zPEgZp=)U$%(R5a@a3+ikvA;t*F`@J`O*bT6>~*xBZ_kl0HjI2W!4#7Uo}nf$ ze552E`&!V;cnyhirI7`P*oadZCIih~$D_dO$X2!F@JkD7;WQly7pvwUdvUS-^)u+@ zy20DFHdaDsm;#x#BiG)Md%YirE`t?l^BbVP7zHfEqYLQ1=^b?YLbPnlp>1*KyC!to zvgPQ(ZD}Bz3EW;@0i~EOUg$Fa6Z@_h+fFO>s6@MO*|V+MzI`i{oQ6(xIzA|R6}mJ} zwQqwi$DxG2@jP82>~8M#Jl#`xeka*(lj>f8PVqs% z8xWfit;QnF)@v1_@vy~{iKfNSUE-g}g$HE@%c_yqF#qxfD86?Kti0Fke7M>nwOqk> zoR;lt;Z0IYJPvtEOuN#r>8rV zRfRYo0j+Prz-Q2J+Y2oxU=?^J50C6RD1eSW=j2NSIjZQ@_#gNMHZwfu zK>fMS-rJl5Zg>vgIS1tmzn3hpoC2=QW{?kEGHA>gixt0fu>JO&J@bXDGrkIv=X6ix zqR{-z&~`_Uw$ra_KXI0gKD7k=%5kaM;(|u~Ei$NDL25`*s%2})BJ9W>Dlfc$4=SzzVY%~=oXqhWr(#gdF-a* z`iaE@;CP7KMeoz4cGixnu*vP)SDNHOnbQk;&*^3?XZ_8=^NcWK$XAN*we*7amAM1^ z*j;lcmS&8q7VEH`pDX)<>fnglpf?%ap~Yfa-(u=+7K4{dsC>LAT_3BFGjNon8ZFh~ zPFE}xHaOiYkJU{)G-a-BjF*?2>$J=~SKor1LK!>ViSOQi2)+{3Y1Dao;OgS~N_!K- z=TJIjvHU2ZET+Rk_orAg!tE*g+L&h4;l3PIB6Uv&77u+y zHv%KE@}VE9m|7K2`0RUhn-JZu>`87#)>v>%cxbQ&~1kViRU`oi64NmQP$EI%aWMI>yR+i*edEMr!#7`()` zeH%KO?2|jiBi058cx+-i&-F!$QR7?1df zTvvCCx2McG!c~(r#A|ixlB;uPrj4w~HKh81J|V6&J`M#A8nC|q(5DCXUo&J7y)nLz z@JfDOzvA4%#hHUT=dK&^r(cB9z5Dyib}imsn%XtriSzR9^xE7#YsdEJ=Hh2NGJORa zg?ia?;<8}b^fwkVi}Plq{T?-ba@I2-bH#`S6Hg_1xCbcQX`p>zsGqt6*CV%K`r-l4 zrv|bz#@Rj8kW!MD78#ieU-#cIXxOTO_LD~mD4gcU^af^oYW9CAb?N~#QZFePP1g0PPpn@AonWdiz7bb-ia*b@(bD&z=*zTVS+*aKO45OWLA|f2Q^5-gRUP z`gZeAovp$76JeCBKG?cAxbb)#?nMR)=lcwK)?m!j8^B2CU10nVj&ZXeuFCdw_d7I9 z72p>!vpl~A&RooQ?>)E8?|&-6dE0NLYz&#S+f$J!jg#Bri0ee8ovgo!+@a@1D<@?r z{)%~{7#!2oc69{UXaYD!n&}^4t=m@*Doc;;)G0Q-j2U$(&)o}MVcCTuXz(I1bj>e@pt*Gd_!M>WUwbIcGXm-mqTje*KX zO?)ByC6$d&Y$C|8)+|%2WCotl+F;@}aiYnA1D2T*Ck~7rpfuT-Adsq#AJmE;1bJN6 zw=pv;>&OP^g7$Abk`H@G0F%sX7x2|O(F5;XJ7l&aFwswrn+a*5o6?v#dm z!@`2#TxAbg03EKAb9W3G8HPKYTo+D1=fV4!*e>;6K-Y|kacB78-&EjhFo3V>w_u)e zj~PSPfET>TntXT<$DBC$v6ZqRn9IosK_jjXiC)yiB+0A=9i#$@T#pY-Hc+sY&2rhF zCR9Pwd&ft>;pPfBsHl2B`uk{9D%&c^Xc|?3A5$t&^nP?&<8yX6f!vAB_;$nybPNXj zXdqoEAv{!fzdHwP1r*uwqYb3hSaFpZFdq@C5fXP6>v~$NQ3^$k zr3_2-7*T;ChH@gTrV+QeQF5O$J0j9*`A`ckzepI-I7GCdrE%XtP$ck>5*|3n;(X{x z&wi__Q}Y&Q7{f+pBrL5*uWZ9A{is;~MrBF9trHEuMrLTHPYv`6NB!!J?TWoRdIW1j zK3Xt1LEnK6v1~*>VGs@jjTNSIwev&6>Qymr%>2sptk1DR+wZj*&4`zG!3i1?!edj9mhJun8Wovnc>9_q5B{zhjn?z4i-L{>Xo zU!2$@u2VNzu6L;Ll}l`WWpV8Kev!eJP#Lp|PO%pB+fzMRGj|Qos+HSb>)~~)%nIH` z(db8XY{S^ybOU3|slB))f7P^$Eo&m5vj^ByRC}tJs-o6Y+eK+k)1>M3CNcOo39^|W zfuV_dh-eI~(Talv(Rj+5CPGjK0zr-?y{>3%qYaJID{PGD+J=+jND}VD6%r+gX|ahw z5L-NBq`6Qv9)SdcRzqx&A1FK?jtJx?2A^mdEisrQ5wJP-K!7dl>1pApsmq#PkTp9Y z(#6BMd!*dU%fmlj9vzrhtjl&!n5blBJm*1&d&!l7b5nimwf3J?pwmSG?e0qh^w_6t z=j^Qq4^Njekn>a@`wRG&!8_C_j8%$>=TnZG&-CGftm>XYl(VXtv5$-R5 z=CW?Q>&zvYv5L?w;`jEQEdT$b>`MTmth)Z^Jj)CWFwDxZ4KNJDh%mAY!?5qNi-3rT zh#P{q;JzR)5$>j_xbGSn8Je1zk*R5BW@=`}XXI=`JH=8GsIySCbV#6UrekwXczQBqWt4^~W0OtM#**}a{fmu(flE+(@M4K; z<^0~DSP}~B52Mee`C%2XTIw()ZlN!wC}cw^2k-iHok1q6*2_a?`X?lek1ksK?H?#~ zx=%pw#KWVgNBw{6OnbW_{=(vr-ii5@3T$)~hUYD&P9DASufQ=mjf);DB_?=rTnTCb zWT`^0$S5ahsIzu?O)g%O<>Bp-6sTrEtB^(25BD7Dq{x^e3wDi6^vmx<8-~00+GI@d zh`iZ55e)gdQxOJHh)={H0{(2aLQp4cXC;DQL8M@eU^0(Nyw(;;>B=WVj!eR~H$R(* z184*f|3qdDi@TdOh_J|uk{WcrSOHN)hEgK6(zXT>ms?k`nL~VUV_|6_du-SOAUkUI z;Qt8Q((9)1CpWu-FNjRIGOTk0zD$b2${4%q zY}Y1)`z~zH%XbG;kYg0O;QiiV3AIWa{wAw5It0&uFpY98^P=e9^-h)>NnY{!YGHpz zy@XP@c@-#9+X8eGBO>;>arwb|KWKH&h?ze%Sm|muNJ6#!bVkSu@kIkXvpi@zZH>Zj zfIQ3vH_KBRIxAM`*_$a-RLkw6`;D<{nB@C6Bk_P~TK7C6pgeo}IiDJsB3HOY*(E~G* z!tr24^`eJn&B~6M7ed+z8c{!{O5iH+;L(3<*cd!w84!;=gUq7E3jo2q){ESvA`*+P z<-clWtX8Cr(#s4YnVOD}>inf5DmNFE_fhn=reC~B?+Esbh6E=CI>h89Fj}A9*0yDI zfUB$Z-?XRo@^X5vr}bppo;}ink_=iMk!D6+T8H0Y@^z^mS;ESLt}uJhFZ&qEVQ6+6 z+HYE#kA6*Qjb98!$Bv;x7bq1v3aQ;=RfWeY0P8fK0$(1%h#xE7Yf1!qT0th6p16+^ zB~8aNat_;=~sbG58fpCL+s1EG_ zl_cML6en(?iel5Od#=+vC7e2z4!2%h_b`1K2(o2x1~Z2{DwD zr;|{Kt_(;q`3jxhLZ8m9D@QS%)ceW35EUF67lu+U!4K%B)r=neXguZ_GA|~lj`(5X zF&c^WHb4G6j$b12tkwG4d~r?MZp3%ijeruT4Ph zJz!4cy~2=*#StYyDaS93DhyAo1K|lBXo5WYPJc=4TLzO$d>5w7PB}eqNOki8poYIR zVy?sb-Kn!vTf8&SgRJ1>{`m9WH4gJ_`TWJ)k0c``7acD0JTlbqoLWoq9nczx~RToZ;p2_)c2hn_@61I{RTE_q`g#{ z?5ne?``0f0@x%-m7`5YvfFW^N8Rp@Ju+IG86Y5CIz%bgeS1wG6R|c#NR1lG zhR}*+PnUrzr{3_@t6`rFlN?1Qs4L4!;v!1{dU=30)$Pkf>gbucWbHNX9J18A@pU}0 zxBow^?f(yZ`k&j&_BP|T{=_aOK3{r~EsZNdH)DUQCEqJ z4nMCWNYtYUNWM}PflHTQUZKIZT}HASMS+FjEb``s?L10h%ZOl!Vm@G<^t~d{sif_W z3g{)K`xs)6p|O5BvKUuYczA!1y024vspM|XDxtI3MIql5S@|AT-P95`$Fr9*Fb!2V zqIQ*o6g;F#xwZ^~xFzmoo{TQfF%@j zS*%gYoP50;P_eji9~0psV^j_?;#ihSQAo|(PH(-JzY2ZBYsSejBpVb z(q%8~68{jzKXZ$JrpFh`PMKM!VsCK=?s5mIoV!#WxAP*ELq7jT{<+!J)h(|C?A529 z?|Bh#DE2DSp*X%lC*cZmM+I;V`NB0g0zV=ZDuyj+l#OoslODQzD4;(c7vAx_bO+i&LwdX)TgarLg)CoQSs+R zVHSH>5G4>OED>rsOX+Qn&g2l8p##XCl8U$_7%07*B{n4=G8>>^2=)=NS;sgz3va?j zM>Nt&MUQk5Qch^N5I(;tbaZ!>3%^CdLfG!4vTjv5!B$5U@}1DtLCh?n#At*gbbcpv zaCfHU!kZ|>5w?ky)~(KtV%Xw{LT?IPlu8%jcksC*8YQMg&h$tpfdih)*Vzg@mz{X; zY$fk?>1XRXCu}RwS})Mj3Y{7ZBK$x8PAjy4zw%eu3RHHf3zeTg4?DUpLED9bM~w(I z&ZQda>hpJ^ojZ3zDawCPPYH4VqQ*ujLyKW1jDzto6*Z&P;C~S`*ROMvJ3B!K{^)CT zh3b0|Wn2M$XJ_{sbzSI#>5CAM{KRDMn}D*A&2fGk+@c`10Xak9&lkutLQq@CUc8bL z>6z=93u?zU=8WGv-XT<{8MtJCXR#BE++SH%H@R{_?#!7R9OJ#*ix-#9q(DQbyB9Q< zy6a*br>~h<{zC1z*+T&<{0<@~vyaz+mr6Z@f@G6EEX|)aam)*7`Pk$h`us3`h4wRQ zn?ggvk9nifMr0x+V4_KMwf!6fTRU;U?;=FhRqIA;h$`oZLqXw_fDR9utXjn zXmWPeE6cso%BQ?KYka7>$| zau!GV1OyMD7fyVAdaZkaD^SB+qx*+P<-9p#@;ieKshPpP#TrXh{VNkIE$VUNa3`md z(5RBtlV%>w)2O|BM>seb==44mxVW0Do{WV*ZmZE2_fG~wXg`fG;C0JB0495bNFVU$ zS`m0TSa~sfQhF(M=aoyFZbH@9*EVlGlQX67Act=@f6*E~Y~j^ph@UVm|9#+CR^%(Ff?K6zV|17$@hH#Y_9wcO z#e0+qLy;AY@2ihO)6qi&bF=iRuo^_gAAUJzV46N5wrYj>({FuOjf&~z8sZ-xJ9;g3 zFba)BkAQ~x*+Gd|I16wAb+O8T=(x2|vj2Z7V*(|;!yOFqBbP>=+V?-B5)8I|{z`OQ zw3$61aKloAAXZcest6h{iR7~#81q4tCgS_Wd+>;axCMPcZzhg9Q3{h%B_&j|SSOQE zc17ZE5#5!4@EW?qLemS8ou*D-5 zb8dVB3`zL5VS$hD;)WL&awbhyj>ac5+dk&kg=6rTlia}FUio@2Z~-UK^TG7OF(_|2 zRvB~+sDd(|I|p~UlTA(BN$5Hc`(fW@x*0Wboe+yYqJp8(06!yXQZVJteIJaDa<`!Y z&83v~di1y+5s4LYu*W6vYY|@yGZXfpLT(%C4}0lj$a(VyB!$I0UEqoi~J#ApUp!@XMBy8cXeUFq#+ld5J`HnrgFEqV9XWkHc z3_8vof`zD#%77$ys+il2is!!dV&gk6+W8HaJDxAsmG|%S5%@pVM-(>QSvNfqLAaMh zhDeJZ0@YZ{7mi0o%aH~dnotpCIe%X30{`Ydu0bsc3lf^3<5J4{yOrGgaLf5-bKXUI zAzIkeeRaWb58FrQ1A0SZaB-=hALaJw2qjY`n%caY(7G=D10Hs1{BW!^6E8ntCK^M^Jio1}sco{t% zwQ^@6AMK|ip@ItKE=0pcWJGt6g=9H^(-)4QH$MFo1{|?zeKapKDtH;yoA`6FNrqv z;`lM#bJl3k;;F(!RJV35nhC+%V_eVoC5caw3seM4 z{^=eSh0E~x>cjQG%0O6;;&73O{s`%){Etq+1?0TFotoN#?s6s23Jxfbu0y-Iqfmp^ zQK?W&1#_Ljr>PDk!*le0@o99u1H{}RLHFDfS#aGFd!0rAJ+4*Z3kt2MXDCG$lywOG zj4q;8=>9$wPGuZ$|F#_t>_EcyHl&7yZLkNnZlp(|_qprhZ_uw%loEzhYD$MB!SE0{ zp#LBxSkP&>ZMR2=UN7T4+7wy^OB(_I(c&*G`^n3w$r*j%f*QAz=+f=bK=_)Q}946H%V zZb8M9U?7T0gvS*!tn)$#7e2 z{m|NNQ(eS$ks9=Xxk^V;M6qU;1n-z=Ed2HCMQ%3yI~irTm8wu_I-KVksV1aLg7-8P zN;s5^0;mPlW@nU>3YWM#Y9R_rg@ewe3fP~D^we^0GF(VT1s+fIqhLHve2xkoOFRJm z4S3G${LQp&pWFgGtdX8@e1sZoEDtsxbSxxrWNHe#C9J(_&9nQN7TJ((cGm!z7OiG)8(Knc>WRDKyUX7!F&de+u9v zdW2S$QuV0zigqMrx!xIr`hEi?BLca9!J9X+U#G;NqdOC>Y*HEvWS}w~$&Z8eW7Q;|tD8;lNT%90t6p3o! zx}FIZD$tu~kCGOPw<58x9)8{`SJLi~2gNel*`W=PuMP>@Tx@jQ7mC^SJcfga)<>zH zB1YlXBLNk}5sDCHh%~8La`4Fe4n;*UFW79uo8b-S-4>DKfc> zoPD7Y&DA(-;Z!jtlsZX343xx!o$rfMi$$(tS9BZwsA64&!%(Qo%^T{_d`~gl%V*>& zpg^t>GsW1tmw0Q?LYV4pqxl|d#Wa&00X>m!tRt{QykNOzMM=JR4Y=TsGDs*q9P)=y z2=#>yZ0NTckRF?NZE)EDMlc%i$h-KOv{L9?nXFCyJPMCFAd@C*;8{VXRVK7<) zLbQ1d`ntLt-7iP$zy&RV>F8IeDF^5BYVaQemFN+5aw0-yXfue>ax6c8f$DNl)>MJA z-1ZG$6{F2%2zAQX@35jJ!cw1F2ASol;@ zM(&}85}-*IXu6VhI@kGBRwp#Ypy}|3FNdfg?h-}$A`vVxp}K2X7oBs3r*bZ#MhmP! z0uANBU8Js`%jkk83x2}tjdcnG*F_1u5d%vssIe>KoKu1LeAYLpE*e&Ih&*wg3MW-k zXnZs*{3h$X*mfrH=MA=jZROW-Z$SXIzoLmhq`=Ll>=S%!R|uqtRRcB)nRV-S7t`CU zvcLd4Qk&eOcGL4lX_Q6JM)!?YmcI33$0W2YINgw+7BU^ai%1*Z&;~(yNLD?1SMPWrHD@nUFKV&)F+le5&r#y!oFOf_O@THPd%O z?#vU(QkY(|yt-;dO`zZSy!um41FXkGqZ2|hvBrOK{@v-hH9lhR)b8~Sw{HiJG(&b2 zdCUZ2(^0%7t+Y2Kl7RA1x^Blpv%wPC?fhvwt0hN(yy+=alJDIBW8`pG*bNUyUlLAi z515!8(f_d*yA9c3dz*8?vS^nOj`zkexMl=<*sWJ=kZnZDjH%AgMjj#nz2s|&ruQsjSMe|)rCg-#}`Bn1NF~MCBr2y`+N=l z(n4nD@X8)% zYLQSKVX>uXCEHs5{24tjL@f9z8(JTpn{+v29=L91`-sHCP&qXva@ww))5|l03&i5; z_HPe{`Fl9ZWj<>%>h^5!GIX7CRb0F;9WQ0 zi13>vrZx_qy1i{;Sd+#>rAsW?aqCTAxwBH}ytC`IH|7L;d3YmMO zH}Rde+wGx(G%Uqu36=`h2woR_AoyBvkDtLdfzEHz8Ehxh7Jk~=oGJOuxNcBNAD|=o zJyf+_g7criCctq=8=lIp+Wk|{?P}hC2Y0>NErR#}MnJj0$US+4A4>d5(7hC}k^F5c z8?T7eeAdA3Yu#eiV9O9i(6sGC&tH22Q%~{%`FG#?PMPCo6i&?aVnv}InF>w9$}!v?%YcxA>P(-= z`Q=?H-~v z7fF>~x|71gF~~P>q+5<#uu$eb$6F){ch6C&O;mkl>hzc*b!B))@6_Vmt_SCG;o~>d zj_cR2wtZ}5k!oyMc3^VBe%C|w)y4ji$C%Te?z8h;mF~Xh9F9en8VW~KUn$*#xxvuJy2lt_3zndauP^+gdbb(giw+Pv3uXi z1xWA(*|;G)#aL^NBC*rKyxPxKaDn)Ood^4$yL=Jsq~?WHPV&$Xr5 z^S*R0#kfM*#5 z3WRt{$@nFd_yn)=4^6gn5q|;U8zIsJJ>g zZnAVEnCsD|8`2SJGrp;)u*3(JkM;^(@zL6nq;amT70ZuP@^EflO5_k~^o_g+lw9>V z2r5r)e`6&xnp2-YU6*b}bzkpdUW>>|pYl4zG*oM`eP; z$0Ho8nz=LP4fisO_sC$=p@pg0&yC}urihctptH#-t5j!}`9)eU3z)+0H$wRIag7OEs6YD5; zR%z~IgYnmrAK}sWckiOjH>rRh>u-Md9Y}A&4p%2vl~J||o!o?e@N&XW(;}?xZGyN} zGPRqFmxyiNx}nKc;;fSR%38p(349z}TqvLzO5~(L-)=ysx60i-oP8;wY{`bLFd3)? z=w3==e;g6@A`HaCycy$HF=vumbf+H>eZ1GjUAeIkLw|)s|y{}AAeWV zVVsC>NN5#jIc!VDH%u^g_`ZAGfI2Q;hAc{-J|=YR#|lWTw>~Ou>FR1JePpdiM-?BB z4IPtSl|6TEP8Ggm{AoEl-eCP>$m+|NR}cBa+5k!N)8okPY?RbSwU*LMq+0)|Lla%hNmC%^Cq0`dCk4tV1cRmr)FPy~TdCU6t#2&(8) z(G_~$r&`5}E&dG8kO*M0gGS?WiR|hFH1T`0nKcJdf{z$rhmspe1*RuE_zGR+F)kiv zCG~6J;(}<$MIG6@q(+BceiA7wOE-F;5tM^BIzr>owS>7-yR%HDEb`{)%pqgK-d$O8 zsEDS5WQlxPEuD3iN%G9DPundng>!I77OZ7`CgzxTSn`nVBXEgc7r-tHsli@o`8? z59C}j_x9~r;5g;wq7WIQkodtLD7B9Vv;rd}I`5PIrv)+|E6#vdtpq`ypum>Po+gHo z-3}xm4)#gR+eRP)3wcv^n_6W1)nK!hpxd&vS&(|N5popO7-3C#M8f_g<;#_sE5qE2 zkfp%b+fk^FE84#kZ8f6t!OX>AG%DzoQ6ra(8a_$CVMy+}-oeXrhb&5fs(tMd!!@9m zLQxpnjH-;Vk=39o18lWk@E+msE*cTHr?i+lo3*%KR?wK1=+^>_$Yg+x!H+|Op(PYX zjBFk?YDr}~hoeu%x}0#U4AO?7VWSVwd>vAAYqRdGDJD;~dm zLe zH_?{v-67mqh5eWu+r@6AA6OM@o2~X8A~h{!!_7Vp@sCukfg*2kjg5(qL0w=-k#Jqo zBux&>s*((GT!W?1Td3b5{Zn9Z(lSO(RH@%d1u#*lVA{miX_MYc$c&LBYWlibk46W= zOw_J$Rk+3xk5wPXC=e(Q>zF&yh2A2=b|s2)@Im2Gnb9t3nm8BAz~5cnz2)|EH;yPKo>jo`S*!}-WpBQLc=jaV=x8t*#B`K|Jdrod@ zg@q1$0%T9C6+9z}SU&vIP3S#MnTnbfFsyIVXq`OhN)YZX_Z>QCI?s5iU}Wl0Fe}jN zV&T*rlPUqmD$s>QsV;k{UTnN%%n>r`Qd7D(G3bY=^w9Ja^r`}C6WznJsFUNw(V;)| zsm=9qje&4E8sil#El5}Uy2@aO99^nSHug)tWQ=qk7n$Ll8T@gOG{9s^2^1%y%Szbj z<0f}5&NF$$p;byK&d-}@{Kc5*oWZYEvzb3wSKgT!%@{y@WF>+5JF8o7snr@c-f zNSP661pg6@*aKVnpJ99VKEnmvuVNm#FbZqXA|VN7{V-!ShfUpJcUOb3BXOA`=PM^F%Pny^Gx2_JKRqtG%(P!c-#`AOi`my{ ztzcpweB{CBzT1p$)W=IOrlRCJH|Ds{$~c7UKjIPU4G0FG{0dCESUAf z+n=M@`9p`!n>TdmeEOR=UQ}%^DPWjgFQxvgEHYi|KFSPpL$W8&dz>_MKE7@Ke1aeP zRQ)M}e*Ygd03Tt+ssg$#d7;R}JE}aLl=~kL3M1cHfAlBxBV@l@Us6-~@hrbn`WJTl zj6$)wCR0w1$&~v~nnEw!H>PCJo(T~NQ%VMHshTiw&@7*k*6pTTTu5%N4Z{YvmFi@V z@I0vCGd$B;`spUoS}aGOPAT5G6uq{T^6Vzn6HT7_dQdl6?2*SCnCeFPng90$w_+}e=mwKJOFL1`|3LZ0B$Gd-%Mo`_$XB74N)ja>S*=r|G zT-&;I#js&3RxmeDadZuW^UEe}+44C4r4N=Z8#Zj2{hUSc3qL;vCY{XmOLH^+V!KW` z+pd#YOF5%b*hzk}`;Ho({6-tN1nNZhZeuVMEIjhM~|9^*+$@n8uy z4NK=wrbQwsSo;QAB4|x!i%KgJvN|Cj1i)1JPW}dcb+&1EN=>q*@08@3JMvi6s!$$V zy?_4iFrl>+YV@V(=m)-xqPCp5#bu#tbnL{=#UqxN&+0cTefMLC@PgX;R~LRYyHoXp zSx;TPV7X&JnzTQuw=UlLP5UpqcKy=c+Q3c{iBw@+_lX#eEra|dA<6S zT-mvjQ}7nmydS13Frq-cEg_>HakcYv6M45TX+ryl4?}yKn%cjEA$LO} zzJsAR>E<=JB0^_>bFDr!^!s)1{&M=|9UuMN>Z)RLJcN7408@I39IRi6Q$^EHuZOI{gM z&)^vzkGh0kuy5gcG?4ggf|7*k^4gQ$wi~Om1(yl@)CN0{28q73Dde<$O(7fZiIhE8 z5g%Y}-v$=(d&j`<P;kLSWbgB$Ug#ErDW++dBAhuE@% z+*oiIFnpM~rCS5#UnEM^2305l4GBUPeeXLHHKB}GKiir2J~e&ha&>K51Vazq(IoWo za}8nsSg#rPl1Ik*K%l+7-Cvl?hQ0jtfYl}^e`Stu?I1V5s6mfBg;U?DDV<39g+*Ps zUQqe=vVn{6!aFK%Qdl32yl?J;3P#d5bma|AoYKR!_n=LTPej_mJZ74(tlxyWkwZ85 zUYQpxA2^{`RIEzDzBNUnO|$1N2}eulxk3=Q2m}hLK(7`OxCON+KoE`%+*O(%&=(N$ zg9c4N6;uXnfLk#^k;oBkz%R$hpcuGC$`Io+%57y})si(tkunSx%x2}N0!`5T03qm$ zA2e8#Y^5@=cu?a);CHCTuitSYNR7)VLVKty?AJugQb<8d$)pOcpa?3#aN`E*LYr~z z-@`ssi5UEW^LDv8`xH^#I=z)iOpceug$0cKa+%7 zsOjuutj`HZt{g2;)6o_56DUB3enc(w+w|Mk+`r!E$lr+X`w3kE6;^C?RE9N|+==hg z|Jgu4#CkeQkUB|u^g}d-PhY=`>zGTOrcQGf!C&vQl}A71-a}KUEUp8VQ5l?t+=}lT zj#?Opr|DxHxN(F&Y7M&m6n#(KXDg3!KtFNgK#6WsYo4NSELu)!Sq^I~0&H~3^lDZ{ zY2(p+sE@}JY@ha9w(VQ(l}EhJ;EtBVdE31%V8Az9SU8X7#}oT49_pL%jqH>w+Hc9d zaI}V;9*E)QBJ!h*VkykHhy|{nme@m$G0`LfKjL)%mm+@`4?+ zg6osphsC0=BB*N~MG~3svvhHyg2y?NK-~KJs@!SWlf79_sds$#=Zn@3K^+BsVSY(K z(lfNiK0~X8gzpmax`CAZh!vtIz)E)d&5`_>tyE|5S3Xbl<2Q!vIuSl?V&7@$wZkBG zY#sXTKj+bd!>KiCL#FK6lpXyXK1-=H5`_i17K~3ROIwnYk~gUJcIJ?Mi&iY088aX` zJiI^>i~0#i+3+Tx&~1yd`RjwvK2y;aC|=L zo=j@f+PV)=O@A}uM{a(xWB5$j@WNvyy`34K{tr5Iy(8j=XTNRy8`uHfR*i+B_5vL2AXhGki_vPwd&bhUzk=bFyG+JrF~L;6*}Kc}U1?4`vm0}Ngj&l7qX z3fm?r;A^8eJtwta^oZ#2mk*#zU$^X`s<`jQ=6>7sO#k}-l}f$V-=L#S1jCS~_>^NL zszC8K1H6;Fm=NL@mE#*~f@No4o>r=rC^WryJxkFxDH`7tjaH%m>}o8~UOn>(48nHf z(>&IjoM--}ry>J+{U7vaT{Yxh zJ2QE9*pM+h#{Thk-GVdIo@2n}4a=jdR!&KeInaElYS58Y{nJlUpH43h@r!R8QiDtx z6Lfk{@Cow zN8oGQ3wRn!D&)C7CV8Ly_&9Yxy_pZ|(_ypGCaKBf2Evds>GSlWgV|XXsA+gs?ns!) zCB?Yv;;QFW&rIqg8BAZPom%@GOWxfMZ?^tV=XO-E<8$|1*2zf!CpuU}qFlp!DM&wB^FI`YJl6|Spb@aSo~2VSFO|CPucOR`tJ zmen@=L|R56I`nS&zGrBS|KDlVD+w-**Bom2nc^$iEc2~y9QuB`Ic@pi#d0Uz zbG+;SY__()w1!95Hv{GatqlGV*&9!DR`~PNjc5y6^WW&KMz=xPL5=2KfCDJ+d7cRS zhyASe7m7&4uqw*r_fLpaHBCqJn^mh?en$6Gh89!DkV9lD{8w@h92h+`=|tHldu7g4 z>Z{)|&-G>Kv$_cV^xA6MJt7I@NLFK&j>t4olu5xavnnY`CHW8L+SJ3>-}rJ|#r);q zF(gZ#QodrhYkkv_uEB$-&xTg~SL8V9+vu&&TAHqc&$ivNJ-)B3$VJ;e?%m4^eNz8S z-~0R@$arS03UvR39Ui;T3gq=YuK2$ZcJr+0cNDS%At^J419ha zvHTys&SN(69N)9c=SNHVg^?_R|DEuZ?U(QIYh9Up0Qy}(kr34|>{Rcl=f*5h5JfUc{BJFx?a0pd9aOL_H@59d zENQ?@)j4LmL*=pv|rF zts5^)j9&hVY1*S#H>+NTrL&hjrz0+!v_$5tSW&Sy%aZxY$OYs5WjkE8vrdgXn>ldA zU)KYY!QgN0C7DU~_g2!G)-LV_<@d!Gs0kXMt9j5X)T`X=56~6Ry#iT@PP zoByh<)n=&{+ZtN)-{>HZ&TbwBp3RdsY;s!-EB>_z4a|P^y z9)%&yy*+LcyaMn#_SZKbvL4pFY|4LI1|Ki97i7N4po!k-oidWV)i? zF!bfRrK2W8`>2usriKo^@f?TvT!vxq_g}xu?;ZKuuc6O>T(}YDkDddWz6Rqnd@6s| zu2E^h^mjvW!Fqxk#ofFQe?Dir?6IcPuRgPe>YkT@So=5I>=hm+PStJFW2HZU-yH6C zVNm=09RWXFJMq#)bYj}#LtV`?VZ^_d|2_(RH*Ni7_u22vov~?b%yVop>65|iz&)$_ zC1w_{+FiyDdGGbIyuxAB`?ZB7Gtx8ixaQ))wH1y1qeJqa(O0xQ#?fCSwwBN86Je2n zjde_ZJ;qAp-;Nk}4douZ_tCBebER)>7?B~*tOUb`=C7&J5#Lph=z5Nac2nYiqt^HP zZ`h@MM{%$nirm7CpI6R%c3m;>(R}}_eL`dyf1<>TF_8Mnuqh?`8{6cIgv7xpt~5Tr z6i#un#tudwP)Jep<}nTYvE#Gs^q&QkaN&s)3%Eb#pHO3gSFG0&kp~aZMi{XI%Fq`6 zEMuk+v2uZfK%gLL1jrU-C9@s%g^5%KcL=q>dsGal;REh1Za;h=csi!*8O)id5pSM? zyRn~dP&w=^I*FV$l3WEgj{$s#z>fWMt0yLv|Gg)xAb%e&7ypOvhJn95n)#cJhU4sh z=9EAv5E%LF+ZJ}e_0ew5`2e+X`|&Y1;a$Xie8*ll_=@6~vE*J7P$y$)QJnSij>qjx z$qwoyDudd^(6kt8pDCC4a^V-dA8p^xRUM%2?`BSMX?M8O9K3teR&KEZeDhwa;cMxZV92(v&;)h9B$d_NEIcqS>*hP4+Tr&lWCC5 z9yX{9V277(8<*K=T{QVM_71?S*iot#a&+{IQ1UJ>w@7Y?xfmb@4Pfi4vGb zLNA{K!V%b}N7q>m97gHXtI4ntWgwe>Nr7k?lR)-*NgpT-xD%FftMVWHmXyRgu_e~;jv2^)IL-{(HfdNVWg z%~P4PGcsnQUos0aG72i)Lt`>CvAlT?jR1igOoB-&!JlaOA+(g_hkrqgmZC-xEP|ID z&7tG66anl=z*(8+xT zf7<*{PK#og<9wb{fum3q^G7gM#?CVt;WYsOv z;<c`{XpiUo!epW{N1QXwXWx|DQ zC>|eIT!Ia4$`NQSUnO0^38_cmNx5>r+#nw*0TPr!Dpdq2+*)o8JshdfK`NO_vX8}c zWtpComBwkQtB43mUrs^&L}|F||65UfS?7fxGKXws0m=Pj0hJ>q!Xj5hhjM0^N-LK@ zzI7Zu23?zNy@httMRl+Q9H4FwT6721Q&o_@9&K%Xwk(C#3@Wls&4L;irmm#U&}-2C zCDz-hS!l9esI%^YQd&KmMu$=TPiWyDsB4ANR!LQwYwN=>3+~<+SaajfhO^8wuG%Q>g^NKaUxp^@Y zN77+MJiak;DHBcLOJL+u5JSp)+y$gwKFkzFJ zy@dv%IUl`#!-49g8o4Ge*!|R-XQ8a?0iMoRP({LkZ4aoW)RG4;=cXO})b4i*S)wW? zy(jxMiH->p7$x5xz;*WB*P>+SA&i-a~v`d*fyqMHka|!lWUKok~b7@p3{&cZAxaPt*{pjKwI<{7XK9y zgmn^%PG8e~tox25PbVbtvI0_{w)rwS>8iz~q zmy#z*6WUM7!(pNZj(L&#V5jgH-Gx^xIqy+L`p8VWha3rFzSg>_MOq76p)sKSkRRkb z_Tld+lgoQZ9h@@nK9}_n_V;NHEiyM7S}Q$9Z~Af3+xPF=bKuz8K``!#*9w7$SE>5| zfycmq-DuG1v3jHe1qhk5Eo)uJ3FC@{d@G_xL;OzeCn**KYB?11jnuNv;qp`M3DQZ) zxD^gH78P2FQoP_8gQjayDwM#{1NL>MOZW@BpPXQ@SXGR&@O$tg-ZeZ>Y5{wS65fbc zNrk^Oqj?{lJ8P0yxyxCgsV_` z!^$y(ErYiPIXP`URYVpO!pBI|!Yr}-ppfK}c$@-gEq|yR2Z6MlWk7CWsT+fnM~b;T zm+dbiYY=rn{z7VHLj8kf4nIR2x`S@28>!ahKJOJT{jSewh<$H-jNEA%xS^x-YSC-p zv*6kGfr@u}x4D?80k@9NPfo&NNq!7$Y*50nTYx??ws%?qcV|d+-+m{yQS$h=`ptUx z*xP46f`2tHq|=K|ZE|u7+EN-_Hm0QkrL6*Cwbyz$Y{}cWU3JzFiXL@ihu##{Gp)S0 zrp*N#^P|B9y3u;oE|@`WF6kr!LPcU%S%-)f1IP6RFB5~}QTX++s`_g|SKtI(VbGcU zhCwMcAu-Jx7HkQ11atm?l$5a^)y|B5ym?~PrO2^COpRCV!h*UjtAkX2%jfv;G~5$@ ziggI$Sw?*0%{qTl4OyLakoi@xbOY;Qb>K63S3p|#uDh^^Y4)~aI1FuW3ge8@%l$0G3f}d_R~Y33R9{kJQXViu1U*Ja!@<1|J7J#y8(d!e8Jy+CrZ#Dd3$oRT zDtG;dx`+YIneK7&_~8Tm8OOvj*CI>z7;P3UXYLRbUmiQ!rXynl{fWOlpKp#2^?gF1 zJzEdijJBZ|f*-McaEE~I|#6!NOSJL&6n2>Lij4P$?{nl5w#w03wjrJ?Z z$m3j`qF(uZti>-+bKI_GmMs zZY`Oz?BSzZtorWCsS_4bC(okKA+_T}Fr)8Rj%a)3<_UyGy?6JcCc*Q0xj?WD%Y=<= z1Htmp6Z}dZwvwD}btBnmBiN1UkDC)%DkzAa<{}Grvd&{d(}RL^PHxO^>FJM4=|5b1 zOI#i!-u_R-I^+jJDUU$OpNi}4sF=L80XKsqJby*>LCC`|LLBL}5|v6quXUVZJzzb+ zLWuQFh$AePDil&!>^K7*N5^$KokYSOQmY?jNVIJFqr>;f1!}5?2iGjo0*7eaM%*&? z6k9A6vS0IZw;g|PW|rbM`jUCV*Do+f3h-d_n4Nr5cWngaCKdVxN~5|HFtN=BZvR8{ z63lo=_?f*u?>db4@ihs&CSf}rrX-=Huk2wm&!MAvA`QS{r9 zBj9wDJKKC}*|Jm3e?tQ(1$-yqY6&Ghp97ww0loB)+ix&XSzkg9I`}2mfj{Rzgc(-u z$Wiq0=#iVtnm=k@MrHhl_F_tWJ3GM_Q?fVz2>R{lQE)oKoy8PjIs^b3)Jk1vf3W5E z*7;LX8{%f5E$m$`716dl3U1W(q&L1Q-BG$Kc$DeMCv-v!zR+(MXkOoVdxD=*?4d>1 z(3`u^_1D+)-v!Uq;U=ZX?g*b(GSWZ?O67#5>^TCcC8b}zku@@BR^;AZXb-!Lu=i@1suh(1m3-~%dM|0>8g=yZ6x;L?UpeJbx35 z^naJ5Z_J-9>}SklY%}wSXe>WZWu#aY!P_+f*-y|p0{fZ%(YFQz>#Z+(93MitI$4}4 zNg1}z0<-W{AHDvu3-i(ASmsp^kHg)$3Vr z!&lZ^_%}5oguCZ#apHb4=HRP721D@U&(`A7hx|X*t^+WNqWkY`y^>tdT|z>VOR~3Y z3JFQLNJ%JxC`}|N9hD+Qq$^DXq(~2-B8q&72-v$Iq97u6MX{my*--RT1iP5r?eL$O z-M!npT#DcK7jw6Fw>$6m-n@D9roD%1Ye?$jAKsxw_s)HP!L^tbU!Bn#rtAj}Mpbz?x=FzkbYa?x=4LT^N zu>(U-rpZ>0-GziUiUS=q71YM%>@O^(wp%I}*)CO;kkwKzO0{p;U*Izh4e%MHRHm0@ z`DI{|WqP^->%c4pTqlZf>lmOh94-88*sbajn65wTWO zN=1>r7wPUY9lA+GBz8&?{7VOn%A;qa@%ehSyl5-HmCeMJcaLK|T*Io_Pqq0YZ3Vf&DXg#b`jnN*a$hREOB6vq{20AX zO!v?W>G__t%35W8rLuZ_7avY=?2~0KAj=+Q1%0EZqTx&S2W1UCFXT>4+pkx*Q@1&4 zSAtr%sL>YTU8z20IV#y(S()ac=hF*4>0lzNgpWbK2(MCBS1Rl0$SUzJ+^`Cjv@AEA z%w*3htLQl)pGw>GZ$w)}US@%jb^^xZFqr<0Ff=CtBN{9U9gR^G7*BRY7=XG0VK~M8 zPUci%GzF36PDu?fA_bX;RAR0qqyM-ClGJbu75iMgUBu5Rt7TbPg<5zIiF;FSxCPmf z1u~9{UX1*S_mM97$h@~fmk33TUtqMd228^HqEd}<&<90ygw57xK)jh3ei0RsQ2tB|%|T3uJqJNJiQ|z0#ntO$^=O zcqyo8>Qg2Q!&o-0+KAnRZU4$VO{do8RLdITce;!bWUc5j(=Lqd& zA5)n{ZDSq0hkczptHnFV8A!}PORs9CIX|EuO0z*TIB!c!vw`!_Yy&Id)$nSjd-yQe z0q;p;>X^E;wD7F(tTg65`WMAft2l@~gntMU_kgz6g3l|kj24|sqSYg#6~T%;x0=Jj z>vQ3>;zAxnbFAAXNI6~SzaL~ z$LULb_Oyxva1Z-XPEP0R!H5GwAG?oy2S%vh!9C==li(|ueexvC244|bTi{Qo!Q2il zH*sUEs_dIYYZ}}Lt#>n=jOt@cr&-M+u8Bu%?J3Kt9seQTTz_kXi_|}YSAvr}&1zY` z-pyc(q#QE>#^_p*FybKwFpb*I31J(%SDgvcyp~8a&>SP&B4wftPNd@AJT= zV3Eg{Z-VQ=Y!iGvP|V!G+)x~Fy2E?Id)(@{{5n)dH?<5LYfB5`N!som`6irFz=TQy zi{MfZ+=(7#Mld7X&OmW^ZFp@l@?8-IW(4=6BVf51``?zEK_T&(QMt?%^8Hfs{Zjlr z;&&IK_X?utR!1fzCY0nPN`@Pa)2n{OSM-+l&H-Cqnlk03Ed!kG>xK_slIlwFOlcQ@ zXLH-lxnnQ$>fSr%w9B3PW$3#vXLcxJI|tj%=oX&TwJ{xc4%THS-i}Lj*@+Y#IB}Lp zbQRo73a^V01G56t5T&+P!kxHuw#}DQ3B7P`F|rF;-QOYbX@DGL04Lp+ylwNmHlDY6=WWZgxKl^SH8t{xRQQam?UDzU4E*8# z`+pdSF50@xzM;dn!du{OxMJ(@p+3E?z!{yEnlP7mx=4D6fi)cx-hMbpdp513)8%reb$k}2wI80&T$c317RhHc0Z**|RL z$YBkapsVrIYD1&YFY|NSW88^)3>+mz?R2B>NH@rp z{*HHq@GQayzmMXB-y?iY@dBy{q6-=#KoEHmFYJ6|c}CSv-L;E0}q|H<<0d=XPo6 znLT^XyuUSXpzO6-%=ybbp5^&wi_I(7<{bnqJdNbqmKw*tuH#DtqCLpgwv(%BkM#jh zsbo{+*ev^cJdnA0w$t#?nKOIVZL}rjTROfv@^vj=j5j%Fp3z}-WD*QCrE2s7wE(Fc( z*A4+{;XOHjfRY#|PYIkeNL9$dOZlv&Y4-Mqu9X9HQgMo@#}~?z4tN#(8vPsXfLW-o z`Pu>QrF(!K4tn6$%R8kog?7%?Zt{l>Q|KWM_|Px4zru&?^aDSGp$=u3@{j`z`Gp>5 z&E{Q$_tk6=lG5oM;QAN*7S00eL0jbNW`cEaHvDG#lk+>LvcO$&-KV4JU%^nj@*q7F zmG^6{@}M0I`{ft-paa#*Y^vDWkG)cj%be@?y494bBuj-BvPMnZDXDQg{iW7^(qHYr z=wV7JPNKc(nb#gFwxzXue@bd5XD?(@I$gfi{66+T{{_$G(CJCS<(HQ28|>nfszP^Mbr+UIm?W}evG}b0Yqx4@suE5Gq0|k#~$Tqsh&RJ4d!7WMNyw5b^vRwXA9tQW`@11y? zNgd-&Kv+f~nOvmRuz)j^>Ts}xNa!UjBDKF!Ee;Y8#zulJVPpbAOoSD*_P5#IICF8f zP@b}~{ol72tgf`0GKbxD{bq+Fs}gwDWC`V-RfWQJB`d0|LZ>Ww z#+XcF=+UOO{P6GA)!4j& zk!`&HrVJv7Mser9|xd2Z?l zJf}&cS%oL4kY|sp5sT#f>?Tzn^~1I2)3EAc!Q?lk@}QuyQn?s()fAtO$VMh7BVsk* zD49657oDU@#A^TbSUje6v0DG<2-9~MR;>2Jk2N8E6r=we;8B7MP&ZINS^F_NscJpW zr0(kZk?xa;cC$L&uKIx8v;lYIH4FFydKg{OOw+gaPfJS8XUZ2T(;SZNa96U+l?-?3 z?>ihe*>VV9gHd3V@%;&U>Ed!GKh=`n?{4HYSnWeMcWxsIrj1iQIe*5E!(N_i-oBBbyMwa0i)LY+!MuT^s?jocVnLQ>` z;NYs$#t)862VG<1$NtnozQoO>vRS~kv+K0!w>e6+5AX(5##+=(uNOr)dk?T=vFU)$ z$-4E+E-@dtWV7B^5uV4in&({YO&tmn*3151B!G;@Nm)K2Nhin!UGcw4AyyWxkqC|Z zJ7FEN?Llp1;m6jz5;SiIFqdsXWSY^hS_EO8s5~#r%Aux=0^JjF*&7YkpGU7sFJ(M# zhp0b1DoID1G7ztd;;Tqgjz&xb!R$tu7a-5Fs*#P*;2WnrHMEH>hOo|HF_c3H{y|Bi ztJPNow`Z*N2<@V`HMSm@0VMXWvW(#-v>TRVE5W?Z(6=gs5kG^~{`HDY^Y4!7U+G5?dyg9W*wDLl2zRmJrxgyr$M&IjuJ)pXc*P=DI+>3`LqqPFti_NOteBUDDD`A%$$s88dh|Dr$5fk&9n zxi|4SXf7zK18Fs(9u^fID&XEy2$m7gCvK$}+Z|e71-xFHw_y3pxvZJZ<5_d=%gen5 zHbAHFlREut1l%o(WF2|9B*FXhzN~R|W%=ax$5(m_T`phYEyvsQ$$WB|)kn9@9K4yq zjlCS%rnhC1tJZ)I@LZ1MC7nG)jY9`^1+uK5JPrk0IXTLlC`%D=|d2tBcOay8QO=LDZJt7Dc)o0gTS8 zlxy=`@e@MP=^#Eb52Q^4d9`UE!F2N+Sw3*HEHB$H%Qq}VoQP6<2M#O`dC=#57Z)>R=4Tb47m|sewJs@c-lwCkbwZ%aFyXmze;vsSV!ajbCIe?h zYGm|eIo_n%5N^EA8j+Km>}89Q)IX9Ld=GgiC8F|b^h$zbo0J~du1l{K5@cfJ*X6&F zVAHaMV-ei#ak30=m*9J-;g(344fU#(QpNwNYxh)p;bDZiH#HFXG%favst4Lqhsb#f z0J*UgU$HnbNKl`Zu87PJ>W`NS4>!|)1|=!jT;CbKT{u}6TL~zlY-^BmK{yyqBdPY^`QFU)pa~G zZ;(Qa7%Q+5a>dK6HCMvg?93>~T~1?38B`gzk%FQal;DTWzaz2OlcJ0P%O0faz^1A? zyns|)Zu}ov&msL2U*q7}FSO4!xW7W5ztYAzs%~ADs4ZyyR13I1o!+C+0>yhPl;Muu-Eo8$kaI>PJJ zItjE^4oykJD37aK;cvI32QB*G&DoIfpUnw|vHthId2<44!CQ~YXIks$0a~Xw|C_WR zBg-!|C$JZgL#zC+69xaUi8UcV(`+Qah5vXS<$q~@jiqUt-JCQFNV{9ooIsb5Tfj&E zKa(&2RikZ6Ke0cPr;a3jWF1?Z@;CTak$8Z@+6dr=6OzQqQC}*;b6=eX>P#cf6ERNC9 z9_H!hL=I8cjLG0*>i$af#8M~HR;K-OQnYFZQHgXSk1ffGP=n)7GlUM94^0=-n_6DmGDQb zK?p69Bz9?|290jq)}psg_5iDMI{7$S#XndvBCzq4&dR3cG9L{~A;Qthr6c9ECLet+ zjUjV7h!FQrR*{I1;P0_ZNukwbZf9=HQW6%@;?^!Fp*FA(9ubzKF@HCrIVAc*S&o{d z!>6XH#EBKj(F#;=B*H~5&LyEAQ>ef}k;x$ludqC|dNKU>%!^rzoV0sy|2_@3y00;% zw9CDye>?OG$cz5MO^f^jKlQcie^G8ART%H$rVZ%x=p)JPEWKx}-f?43I{Hh)tuen) zG1#?zDvm7R(NbinnPNPAZYko(4oDkz6ax~QI7K^TfddQVAcnf3k->6Is9lQb8h693 zefsa+og`b>i)X@rFRo6F{K8F({sQvQFWl2~&l};18NDs-k{@}r&wz$oUE_t+0A|XE zegSgi7j9bQ7lQjjTW*{-52PmeP-j-u=#VW+-ODNy{`hlYuY7y5D{$3wFFX={yD2%- zU)F)S%YHbwpt?^|YWuMVN6&qPDQ`-~ioZ^itA?+vv0TZv-3ooHnVO6xUYguExt}Jp z@Y|2P@Z11dK&HP{PAS=*-)rHYe@w`)qrYrHis+HKqYsWvD@y89z2Mvr%Yx_;gY@F$ z$2HPfHD07o+ZCrqV~kT&Zd{zABF^(;Maq~t(B#ov@7GUW!La&HnDDgLH(58WM=XKcH-0-5gg)+W_<0=+ec zd4n=36VUSsc#hSXDF2atn=P=}g5e`%ZL#p1=9S)>&=}HN^@ou#P+{T2&GD&Bh*!jx zcy3-N&Bilm`se0(Rwgv1v58n|f@ftyQ;JM))gMOhM9Es_S>Hw99G@-fd}KqgrrXW& z*_^%`;H$db9IwskyUxF=+f0P#WXfweMW}Uy9IizmfB+E(sK9Jk>T56*{s4OY`)^z^ zeCKe3MKIxF8#*(*h1+h!H=)nyrouw)+xjaDwOeE8nxb?`);p&sdWI2rIfBH8e4XW5 zF}A`&L+SN-dZC!8Mkr51hi~f~0cfBZpe|0R*E-o)ZFRphVJ@mreGF~?>dwlJxCR~NI~(y`(U|W> z71^ZjHCt^>=;PDP)lkbiYCfPP&s3a_UEF#d z1I;_D0zN$&F+45lSpD-&Sx=1L&G(KPsFrjLE@{GiV#y6?7+KhyP04A67yeId3f8Zm zn(7&lb!e?kIfrG|RL6isz(3n+n?hm>6bmn~qa8f^u{xhax8*P6YshM5E7s2u|1waQ z-;j{lzAdbsADIMCz(JBkOZ$f|;0jwBx>2wjF>+_f!?ia^R9b$Q;sScAF+MuUj2-sA!_H zBfF-_To;j)I>N`XX2JSalcL+Mfl-k zEe>Tla?)^X!-*QT%?EVfU(deda95986c}*no*{1DnURrkMKKL_!XH=JWP36<3-U@m z%zOYiydCn>(|w$ipS*kEK=Iw7xnKr34c3GHYwY#{YYYawub4z-CVSp`?RLC#_Se^w?XsHcUHE`f=f-XHhzk}BS z9ss9k0W|Eg7TE2DSHfrDY?ux=<_>*Vl|?RHBYe)jpyp5`8btZC0Z#ZDCk`#CR4^}_ zMLqWC@ui7Pk)^-K;D8riiNGa9-w20l)Oa>KFS79igTh08)Woy{DmXQoM|hghf|*G0 zyv8Evk0gB>%!ma=KbKfs21I0EMK0Zz;E>4-L`=nCw;kiqcgSE#Xz`j;qWc_#BQZ4( zHzEPehR=|i-vt_wP)?~DqSz(nh$zxk67z9Fg?c@ra4=Wh0)X)WpvkG{KdLdj6s>L; zRM)fBoq=Vg|DYz7m&Eh3{HG-SDa+@@mh1J2$i3ouQpYDREaSIuZXAvfj>bfgO}N-_k`_RAe~$iTCZ{0`HFVy-nAEduLS+F1E;a z=Z2^0f5R8yrCHalt-!GgPKn3Cd9Xi(GqRRz zt&L2KrXY9~MBj3}rJB0=_$^ly(cda_V27tSIPG$B;o!O`;)Uquv5qXI=BYRbhZ2;-!QDW-v4ViA zxf3v8P%V7>$7S7A*uk4%7;Xl0fe8m!q-zLU57L)`J;J07WC!}1;qBp6Sbr8w%DZBr zCxDT!p9}=JM)?D-1oO4{8>PZ}?oLXgE^TG6gBWn5o>SX!sr8*i{8|-|h--MS9zVN< zE~!Bj#XrC5ooX(zvs`k~hqs_kwS)Jah3zv?r`p*?2iDD`7mFhEO$+^%EGz74c*euv zTb3O~9WEzYnUY7lU*^k4w`_Q&7m4Q(%WG?Tf5ZfXWKtGMk*AA<>?lT-3_n9e(xPj? zeTH~N_jE?msD7m1aBoTm62~nc7P(k^i8+-H)J<1zM!arHK@C3 z`DQgTu+7z)!nWY0>NbA%g^7q?)S}4BNGtWYsVGUUQe37;gu7)K-jDpy;j#=yip=7c z^>mZ*0aQR^?5)&GcN5rKrHGrtKXoE1>hajFy1WYnc? z+zkZrOr=)<@e60OV%N;VbAT&3(`HMCufSK5ZMMv0;DS{M#SwV6P3JbCE9i>e;8|u( z3kS5$sSkHSrQqU#3vuDbj~>-Zh*@ci?se=()l$RNa|E%h;j4fYyG~iIRaJDIl4Q^I zX-ul;)V*R3Ikv}?l9PSHO*Y$?^9u4bhT(Sm3yT-OV29hZHO<^l9&~hB^J0JzIDOaV zc=Z-A7V|9IxekYxy2HD#TyF<|*wc+QC z>+AoMrMhbQ z(OlYW>MQjAjQgvau5q}8PNz0ySJX zi^x$|V9X_b(nY*6FGZP2P;`_x{#GNZ zhCLc@SV!pTDsTEMi{W6nQD2Z&#+P6$9qD9DO~y%D8~?&1^mvswu90rU*Bw1xZnnr! zlX9*$?!z#~bBb$cAhHcZSS!`n#gzB4RNsb#!fI4!%0YFHg|`3XVMN1>X^4^17=3&i zs~ZpF@o$OTAp$m{T#0l^o6NN*V}RpDvjvKmoc=lsBW-rD?@LQ;x5-4 zm=2#ijxLp7)Y{9JBz~6GoCuAbh{j1xR`FU#T9G?S*{E{_@Hm|)V52HAOOhJ$5tn!e zuAHbo8f#cgeUOKZ#YO5PP7hjBAF;Zv%^j%qVN_~WERp(%vrTey^`T;q*WqY=C`kNq zz)6k#{d1f)RL9o`m&l45=0L!?cq1y)#X8v+{Nh>I^w# zHd7VwIb=>AQ?WH1K-Vs#OI00%u|dOFp8#V~0#AV0WDtqmqD|duwt@G>Tj=oRa=gnZ zAC4;6W5_O?L)8N-t7AM*-X%%u`cVksT!L^SeDDiZmLNwPKPL%mnN0|1K~r|!nb`iW zRf!s57}Zmi9y6(ty}zxoU5>{Ha#W1)i$oX`p>ZZe9@}74M2%51lj0F6x5-R zoKNC3oOF}wYhyGU)kb{~VR#c!Y~+>PM(lc&*SP+vDgN{l6LBRcW+X8mao&!RkLvnb zto?@ajeNxVJjx?2@zInnsU;@VAUUDZ#MyzS+gKtykf@2p+kr$a%-_fk#JBaP?NP$E zp2#3IYU_zC(#HwfI*x4wh6ofBBsnlVf*!KBR9zj{KcTLhx^33#kSs~;i7{8+bkmh% z)a%u=Zlh}!RF}!Jzv!~diu|%%R;|TCCi5b5DUm9sI<+PNbsaa;Lzr?IXK})h zib|m*(I1NXdrOhBz~@MOByMZWd0&z2IBq3UK8K`xCwfwfXC+9OnO2~EV(ts)``nmg zb!SXFdj67*!>lH=Gpj|!Ph7L@?Yqh@ns(>gHDw)gw7Ja4JVTe(oeyA|LXB;6lY8Tl zs&r0>xur7%@NhinC}wpIvz2EFnv{0j>0njb@dsnCOANln69@3KMlwfw4Npe!5B=Xc zaQ^>u_W#2zoZh(Z9)f$g_1uS)I}+&t=$rD@jg+LzQa*|L?i`gU*jFuU?U2R8z1(Fr%5)#q9ePey&Owq53>Dy!m$Z5PP0IMdDdXGKO1S5m0$aWc>ouo$wDqIpvsL?ph_821D_D*@(iR6H2@CeeA@iaSaU+@bn3gDEuMTk~@mP3xLO_iZtEbN(L2fy7)A0GIRONVy zQw(sx8g>z1Lt=(#IdwYfGfIuF*hP4b0M0VJP7y_6pD6y_H};*#tR1zPS;L$sIc$wN zGu9~2Jfq-0x<-9hD3W*S!3&SknasT;N3dTVn?;{;8cT>I5^zSY=*;Q;`%jzJzyEao zy|(I#s>uKJ_XDP)FQ-ja%C!r+G{34UAN?s0YZoMc0o=*pc;sHZIzu7fJ39@Oi?~JQ zb#$US_wa%fAS^;ANO3xRPM%54mEnBY;P(R_tdw)p;a7tvO&Wac7<`}42SY%oQyHw= z&1ReeoxqTMo~h5|w!kwpmStuxn*q+Tz^q#z=9NlK(#SA7WxGe?>kK&Z{SUD>SPz4;&Dl|!%aEp<2cMW90VT6F~#q@ z|NgOC>fn#?Y@Rd+3<95{e}m>od5fX52S5Ju3;1y{q6!}m-3C(W??4Lt zT4^8Ur3%rpk?fOX1)O$jyZI1VCr{H=ZfowT!-r4hTHSCu==R8MID+^AunWlO->w5~ zUEyhvhyUT*-UDw-P^N>9F2HzQjDwb(6kSD%BL&yq_6X>P;GTe^P+3AADjSZ1C#VZx z>OJ+}fYc~X9Dm+ICC5adXPm$of4&wK6A3S|9Yp4{u)cJR<_cg&Q`70kk^HZT;QQ(jlTTV3AVt=PP!&F`2w61 z3laD*M1ZqqMLB|V5JM_rl2=c|+=m)S_J|-68syAHt^{vRzK|O zO?OUL7Nz0bB580&Kj6;JhG+X>uHo2!w)|mhS?tm z*auYEpnJfSuhr|L-@xCKQ)kUMb!x_}HxAvr;%4;!Au3KTgRxvh;@;BH#0?dqv2s;? zG*qV;-N)+I_m^VN--rAMiNjZ1P%M{{L69h^fophv20W{Ct-Ojfv$G~O;GO}@38Z$s zA3U3#4cz_Uj5M5fB@HR?Fc^;V3pYpj1<6>OL9#A0xH%#-7&gj`PL2rV4I&_9PolXw z5@rBtl=mY+z7JyG4CN%s@DZQaBT+gJRE|K^!FxdxcZM=iPO1&^T?*02x=QmS%Zc0e z-&}yCZr!@21)6{19zkyb_)5#Kh~GLmnJ(vZu~#Xg_7xc{MUM5FwSb?ho&fEPC|#Ze zU)7^C>(QF=>qBObY^#ezYksTwIM9bIvdyu>5I0&|hp6Cc*+r2Uq*^#xRHa(nvySDi z3Pv03<0?jj4B!<#KICfBT&)zoBBe0jlT?y^yC^Ofp1G^uBBxjYyY*2~+_03MXbHPb z%vk01^}A)ccdaSk)gKLx%R3wdy~l&hB%7QBKN@gZ7p2m=u)G6ZHw=D;G3mKf-Ho%U zstJB@w)bc@ReFU8p6{hRt~?M)rmDOmD)Z?P${x~&_43SAHaYX*)!ldyQ#Kk&p;0Uv zsfsvZxZv~$>HgKYkLt-htkX(s14_W7G#J_o`rys*w>D|?AsYOGdNF(>?4$#L5)EtN z@iu8?zy=o6O3yTP9)QT&8Jo>j%MM#BhNemu=3YyRYzc2=D{$H~mz6C{l5I(0AEiIf zOlt1=RCcA=TIdRW&N}e(84f0y&reBGI;wU3ETaDrs_AkqyJM!Ngs8d`nf2)K9Z#P) ze1NO+veHQM(2(~=+{`*gE z#RzsR?87QE5A6h3gRAbPt1$G!K=^M@8-@;aCmgOF3#u`T@SW+?z(trzcyR1m6X-cn z=}f;mk&3NT!`Wv&Mr5red=;)wWIri?mUm>lE+pQvQVES5fj@{udwY6Gk|)0~C47Zs zp(ifgAc~J}Z73<3InKkec8i@irCzslyc2;zCOg&caM+WRIkwNwcReF47k}HmUU{7v zYm((D{ayK{+TN%-=$E@(HUMM^lF8$7B{8P9xjZ9WxqE!6-{rKjre!-g7XCCIK7X)7 z`8AIKahNiz17)!15k8x+=N`3D);Z zE>xQ_oLPH&%nWaFVa9r8vYe4C)++!&2D2dp&(oc)N-D+GSNLyIj^EevLS4=SreeoVke0 zt9Fg=)W+pXLb`en#{$oI(Cbi#a#_B%ze_fo`u5uYF#K#7T~~_v9D!_LJ^Q7`C-2dC zQyW_a_L6h(V2O`OQ>GqZLwvD5F(-0!kVG=V0^m>&4gz`HZ&==LyUm`=uu)xd$<>3+ z`L2G~$#Q9#s)9VfeJQD^qQEss1?kW!P2X4tsd`7Uoi&f2SyD{ue$x`Q?mb1Z&4FX} z=HNzBuyiB}u}+QIJOuIiC*re@e$rbFzAfRwDrQRbMw=z^1Ism@O3}41@?$O+%tO_z z3INAm&tV1N3~+zun+I3RYIO{NUkeh;BqP3UxJGz}zjF6AT8%8-&hxlNdLJw+mF4UD zx!{sVNNsdrp3g7xs5WfLCZZd~B{RpHS$ne8!E4Ha*mCR2!E#3B$lSAz7&2p>5?)ot z@F7ZGUl=GWEfaYbajG6lj7jb0!-He2uUsJ7oXN>N4_BI30i0g$H=Y(^8B)!m#*ik7 zh!xc&!FZfut7b0WMV!#4COGjRF(55RO{B3H_#VA>_SmzIXg?KGuX;P>1(hjOS9uaw zsy9g_0UQ%bl|Z@F9zNWlQ4!9a}dpq9)=7YcYacOXv z^76aarn{x|Yxjc(>8f|M>(I)5pdQTI(RnZA;mREp8##|?Mq@o$&u6UfLBG&)b32f$9sVBaGE(OqzqnqosJ| z439h1VMkLSg=jioBV1}+wgp4tDh|`<5>oIdWzAt0tg> z>Y;On51%s>4sOH)k~6#)@lc6IVI8Q7NJd67Yp$)KYNrX^t&%z$F1Vp8+mW?INiQm* zPcO-GWLMo#(4}=Xz+Lb1RrT=q7$Zqz&|8&HdAHTI(F8BKemzi|Ze{S`ueH1sDd|hH zoLSwjFDSUa8@gCRpDt=OFB%UnjVI;6Kj4L-9=b4F_#L%FFO{LL)D!?UF{0Yrlf;N+ zrFrO0@PksS!tbSo-z)EkrajzJS-C||dU!`Ad<$+s_%=9Ls4P{$Oh<@zfZ2Gb!9?3#q2QA4oY(3Pd+EM0FkrG_tOKxD7Y&GpMtx=s1RxP z50k^bL%{tF2f=I*0<#<;iv1aZ;$WSV)9Nom2aia^SW5UjvcDqHVqq-laxfRJR?flI z_(b$!vUd0$$=Mx?0-uL=f_dcDm3K=L^R6g{JE-rmJlpY{x{ib#Y8R08i`cy=Y35;M z?1a6{%I%?h@5QybFP5fK1k7OG_VE0@^qp8)R^Asw$BEBOHR2e=CysB9T{=k&mr4>i zh-&jiu{n;x6?oh=5b^wEyzG-H7oOvfavaIGsp(lP0&ux8h31loZpHCF#F!p4qFh{r zZUI$7b)-70CrXWdj-i=GJ0D|v70jqB!Y4KzJ~QxUR{*Z!*+^&f*|8~VLydGv(mQ%{ z&De|3f3@QtI9xe>&kn@X?fbyj``~a^LeJ^F)N`byDaYu5-dE|Zb_bF{w)zCPe=p43 zhf2u4cL%tiq6~cDdi7I9c<*7Ox{aPPRhN4>!_u>HNxHcz2QP$Qve|5zHl|xrvOQCI zx>s>=kDetZJ-`|Kia#}{2P}&o&qM{F$20B8cNX{RQBu;ghjJRd6r&Hs7WIWSq%STY zc9rnKA#b)4d;x#(!WJ><3>*|N4Qw;3D*I?|8TZ{)Yao05<{~`gbE7 zwc_flSKvRoMt$h;YU2aA0CJz_bP|>?g9j)k1Zesz1!4;-9GOgJ&VSl7A$1&qoy1%qSRw-2nP|SHfoQa>*uLl zLbjChX*WuzwXrUbBlyK<(_oRkzMUl&pYRQvb@srWAy0B~G@Yu1}W-Nzs z`kh3rMI2=yP~p}V;)?WTRUGWXD=^w}WHR#mBiL(0U763j+HJ5QtBX&fvtWbG-X#M_ z@Y9Sgb{pWcx~ApPS%A0MyS9a&0;#QrER@W?8tM%0ud=)dAM2Ro1DC#Nsme=UyEZuw zeFZM>n3D#dLSNZ-T{GhMX=mqRIH0@^K0DwDx`J5cJh2$*?++e=e;+#deck$3 z*Vn~hVD=n@e;zsntOu31>t0*G{6j4k{drUS1rE#)Q3O{hrv7|a?e5f;hw}|&63_!e|;cFZL>ow|r z1n?SPg>+^BMBgKOo{ZW_8(jj}^5L0l$xKJ*uFn)S>@VQyUA7_{y_=t^Y*)5(9mIym z5V%^ge{OD464x&yqhW7SE|vj2q0WsHx?1^-N(YGwZB!IFxB0_`P5eMqjvaYbdO2MH zDX6S87kK~!#rp3g=~DVGT-4Uf#N)UuoaBltM@7A@7Q~|Q0N__}t5Hj9i)=$~bS1(W znXET%gJuA#4D>`^!y=PO6ip^>X&!oQSd^E?Ej0;&=Rzf1MW}??m0^X|Og=L&pMkxt zp(*(cIB3ntu!85Ad;q|*@ZU-=#sqI7?eq$&R&cPL(U?3{TQP{9JdPpm1Oh&vB7Y_F z7L}xh3)F^6Hda+JQ!6XO>x^W=hgAY-%!A6m29hYU_Q@93kX5qyEXF;6R zZy_H36QL5iCWax{UZn{8U{+9lfFf!bXJN~cPoJvoH8DqtM7Bn87TIoxBj7MQ;=`2; z9sqliopLSQzF4xOo?(PtVm6A&a2R+XSqy(fABEdnSvG>6xNPM_!opz%7^`%pfT8Rr zN={sCf+E%P{(5SBT$ZV7lIk3mRPU#B9 zg0XNrlDdI29Swu38p`;0ye1W;)dZcyG!hj|_Cy%=2yh;4&w4jt*dqWU`_>~7q}4qF z>TZA*GCDt@?*oY48vsT{_YFjIN|QYT$j)k*9K5wm|ID^Sp99vJ*zQ_qfh#t*_;W;Lpd0B*T7>a2?a?a!edF4RG1flRs#Z17YpSCvT}A zQu!hL;;|E-J+Vx=V($1^TdrO8Xvc=y)sH;39IeD1ah+(UnVeO?BKJQGP+%WwXpVrv#-hGW0!#^8XCY8%UJl);~&Rxuw1#k@)OW$ z)uWGWfZ=!Q`fd&fqI@tfr&#=*#uuaPp~h%X}ByOgTD~; zixv%&<>R1T6ZluFQ2X|s3*W4&0$0JeRlxoF%mLRU6FUx+H3b{v29#+!vySZkmasRD zJtE0(1K2Oh_WJx)AnK2ckt^ZJLoZ&So^vQ3$8#5`7Z0JvXs3U&KM$_k@Y=?WuWe|k zLoeu(S$7!z`OCiHdWkfZ{Y0D+8q6*UEkXDnq}FrmxL)WvFPUOLm(y1&JFzWTgHQ})B(2BrM-I&!-?)KdXeB<^ z@gMYu{CZIo>CYrdsikj6{?m2zWB3Rq-jjG?Ey4(>E?Tw~znayz!X3F#ClB2!bbV7r z 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®G9nNo&jvqHu*IL!H2Fpo$TA)vy)Et zUFGtAbKjeb?|tjO=XDH>C;yIFbnmvs_n!@gPy0C}%Df@{D3<_th>1wd>%tNgQXOPQ z7uheX%!m`7d6iQixux64EH0Hx9n+=qnyf+X+O;#{h|qfVfT~BXn%K2d*IsW-uj*!R zpHPS&m^O_G$R>cB5pNp7Es{%ktr2d9yyD`bB1h)2P6WBtFl0jzAJ>AJW)BI>0$hsY zflCg)hL2N{J==jxgl`iaik0VUlCz;RtR%FxutkE>%%au-Yw$?mR}tAuQ9WX2B4HW? zcMlCBBg}RH`2dcPzdacc;9qulCIUZ_0Sl|bPPDX5Ae~-Hw8_#;5xi1{MLohPE;C!i zYU9Z|Ok07~sf{Od53{d^q^D`=^>sn%n*;gl_wdh!r0e;)y@7O7$Ds0GF_ng-`^x{; zRI2rhsjrp7w9q}p2z^a+m~t4psEjnrISh?|YBx$WQr>o-K#yX?U3Wd(@eqnfFP?w4 zeMAEK)IgPAU%MSOf3T`!$2HsW>4&P?<5pn_{(gNZ{*gMJ(gge?6+8y~xeEr`uC|DQ z0B!!bX0KWsTMK(|6vfbRiH7`^)LmPw35E92xDB+FonIr@qtIuPk-5MhD)(86QWAP7 z%6;ZSI5Uwr8F92>oFaJ`4JSi0;e93&DK<#XV~n*Fq^u9U(@j?Vq6LI2>0V~~ym#%B z0NvYKi{z`#v=!-Qd{K4y!o4Ta|0Vj3>cC~tZ&)ilD=&+FUeigvPb)|B} zmw0oA%QH2emos>?=Te4Z68Y6G_Bio_NRI(+ZpER2=Im@U8ptX+BK``0C3-Wn&3G%< zDpN!EPn}a&PZQk z!y5!)7C{iQ=c^3GEPx=Q)9RU8D|i_Zq0g$<

=CpCLyy`XlLs_SBlJ}^g z(i_mxc)RSU!$|2P5j3PDl3e~%0}RzK!U^%LFscCtbyxU5Z+FNwB@~_lp%Z*nmp^NO zBOXlXBe#^k%vPLcc4Ei@Vu$8K7z<2pV9tV6+Vu18Z07o8XUyG7e#3K?4Exm=d*U|-^cO9zZWeE zcPk(}!rb13MhQxmfDhtNMZ8_%&?r-LpymYuZ#K0z6x~ohxv-`XmeGF0*=sRWhIl$JN#<0`%P4Ca?;t`B8NiBbbdS1Bl-WaFU5j zQ{!;CfJLP5$oC;`P8`oALZ7k7>;gCChy~As&ZBySbRJm~bzWH7e-6MajDgC)@JwU$ z-mVR|G)gwRAatxH44+0gkQ{_hgS>d!KY-OBOK@Ib41W_o47lvF6+oNI&@YAzH#8*O z8AzvN&!j&pQQV7T;H5pRDmTo};HUhwMwluN3Ch42;noOWrSP$dhIq@r9Q>H=(=dw< z20hllCA=W)27b!)8^RO7(QJmnTcSL3YtP6xA-z4e_*!J6wxCHZa(HuK*dA-P2Sh{6 zlV>mAKHc9Uh}Va=!F8ozRxVgGGOXwVr?}#98{8)DFXJ9dGaSVy(u`_*&)#&P1NuP? z;O=daVa0I-Yjg-5iUWz^II9+qKp$h0BHOS8zbOx8EvSjQ*X3ZZFq@QQY(r<#{li@( zg${S24q%rPL1B=MS6t>ZKgHt%zEQ81yl>RY7ZV`}2ZQz|kmR3~88+BuGP74WTR*@P8#gZUkHc7kS>k7mB_KNO$Vmx^;-~IWcN0vI2b*0kbO{Tj_sn)+ zJCal^pi3?nHX~2^Qk;&{(7ymllz{(3kooN#LG0Xb1WEiKln|1}Cj9v0kJ{K_{e`$^ z`NwPpq+XMnFF1U-oALp78;um4Y~xJ9%;YL;G7^@oc`7k2z_4^>{(R3#egVFyK8OEI z53t6w^IvSr&p0u%Tz$q2YfI6lBaw}2ktv^!7NjLUwZ@uG#|k_n=FjJI^pTx(WM!{G z7ANWYqhmj-zy1sTp^ru5iT<+lqF`+awY*Vi7#%$D+W;_-}-5n<%ly9|SRq0d>N79m*Iy{X)BS@!00zodt0x;{@awA`S!RjW@yhEN~t z;ePSv%QAP|o2rla1V-lk6BGS$O|&+h=%KZTuTA&96_VaFkWTl*TOq9E>#6-NZs401 zphd^2^h6q3+wfB}ek~z=!E5tmyj7NwWZ!sVQzDWjEkpzPPQ_kSnk9@_xL_2pW7?`m zrucEIu@wlf2jRy0(gC;d@25Fdz&!wEXAbc{2A%6VLjAI>%9DdvnJFQdEg zRZsO(@=SSXB07P139Dp(>Kvu(H{Z*xtjfZ12fANXcgLh6>F48D1dX-UK#lIKYd|rQ z^R-3QQWsR|4{0dyBy>h2qrtgi^Y1s~Kk)$I%Nr>1Zzo-Vn6>c9t@sy|uzgLTHQGpQ zUMu;Hk4pwB%HY!dZ%IYYiXFGiD{H-Q>f2@bg9gTkYnV(L)vZBpHH>p(9E?78Y{*pa z$}n{OKIn%w+1dwiZRwZ3W&`Lms+(=2&Vh(c7h=>2#owPF(1>0DUT&tp?l&}5FTz<( z>XjI)mb96lU@J`MjbDZ=&mUD60qZ}}lF-#a;HabQdN~$7;uWO%0 z71Ng3zOnge%w$R$ms(T4wlyZT7^vg^G!&Vd(I{zbknASKBDw$K7p55GdO2U5qDxwR z^D@6X1!O-V2Fd@I_|v#vT+a6>V@>hQzbwvZ{_&sU)wJ#I5!80m#cw4B`Xe-&L%bS@ zbe;Sg{^P7HpAFNC)U8hzTGeTd<;X6Q-r8R}I8+D9=H0TR!Ws2RI4z_u2#H~W)VM*u&Rihm*aY51eWv$8s^u^iCGH-QTMi7p$40smwm~dEy8RM6P?pv0NAWh)?o4%Y)Oq1$y>Z13~< zRREZM7$jgzq8}l$W+>QAe3+`b&_P!Yl?!<5Y z9B`i$Id7Q>oe^s!4X@;_gWje|!bkLZu}h43k3HneQ7>Kn>)s3DvTqzA20Ws0)&LJ< zK8E7qoe;vYpgys%-6jkF2<>BpJbN#!|KaOL{RleHGP<3j?i1}9hqzDCY}RWS*lGA zM25(q2zPYJiD|~(Ey%GM=EM(L0H`dR_@#iW+Yx%xL2ngzflGvi% z3?$&!&DeWs(G)hu{^sy7HCE?G>z75~9!-~H$32>Y$J(mbVZT)?o!yhQt-y7G}Z(7WZu^$iOa1$AW5d{ zWJyvK?q_&8)Mv7i@!k+y#MyOuhsv-@{a%xy-#zmD#{H}bC%ime29yRyBtjqocmsST zysRRO{hrMP7Hdur-vL;49$4m0N7=e9eS(x}E3i)VkK@e=NuLx*r+QGuc}*P}^OvHw z5XSA2VJ&3$hI&nHLYs*QT%!9-#;s;FpUDVAeo6@N+PodWp zvyM%^oM+95QYzL7@Hf z7Zl~wlq*y486Ohr+$~iUkxolf%?T-S)@8j>9WI5O!io)Kh$E+F-`M+bQ`Sy+s?tPXB z-^uDyMNyYXlF*F|F8B%weNPIB`Dmx_)%^pM=1zcfhfMc{z5taXj?T-5_x1|I;Jq#e zZ=x&~di}CVi{?m%cuGsk%jkA7WQT_eP!{2Xa52vE)F{ z^30SZQ?r87YhLP^{m&LxEPt~@3%A2&W}T}@3&G+KtPvU= zG({prx2e8{>Nw*3a~+05e^k@;W(GPNQf83e`^pUHKmCXWz8A%j^lz=Rq3hPyX0qPt z=L@MDX$E}pf!HhIDS7~bsX)G25{eX$B+LBQ+R+~qFHlxE#(w5%^#}RF6g)z|wDDid zvPaU6K>KkhXDs_Zlf*a!nnj0Gh<{w}hI&{kj0MHIvQ4jEZMg50D({tfd8BdL*spEd ze)8NZEoMqcIb`*6P)s$aSeEBbCE;Itwegbg(cE`!dR66lujJm&V|%ylhercbXUYBA zDpiEG`XB4RU>R@k6^cZx|A0dnU*O0KaiHS!PFOWxo_7q|JaF`zbEm_z;?}2_d}sjv{o(y<$ez3rjmJWRBOnF zXIkMtH!D#5=Mp}BmkxqhCU&ue>vTZE+lptsEdcCVMX7D3gF^ME>c8Ly1JC`j4F!7; z>&tcCr`o0RFcGj@K~-;6lxq{>QxeQ+_XF=A4BUYz*a7G8dPr?mX?7+;>R|Mbq9Q!~ z-1?%TTYX8oPV4j9I_m4+WuIvDi_kR+X&ORVNWbu}SRm`*OG^}`-N8ylDJk`@O(1C< z4wjQNeT4#vm0|N<0%O_Iy(!1@FOY2~o4zi=#+kv$AI{m7!#hDNyX|C^0v%&Rw)#YV zo-j{eo9v4P>9?YxSNuF`L1zSx2cfT7AW5~yLeIK?i#LhQLEfcCHo{=+IIPZ#%_aOC z0Qyk>JrDJN3^2cw{=0_E6Yzqi<^~2Ip-K(}YPSX-weiH$^{3EYeiPk)JWX5uPZkR& zhn>-)o;}BQ?>;u@$Zyg%abA=oBFDK<~i#NE%|@UCAiTlH7n`kMSJ2r?SCKS) zE1knM2~DDN>uya5p5L1sGQT(a1pB6~Jr2G`FE_FfIc!yOByNqb4rt06<=|`Xe8cON zaleqMYS7LzV6WaKu`sQVkujF|Ra_3;=gNkA^Yb9x6rbVC$G0N+;#X<;&_i_Z2(Tlp z3G7G$sab+HJWuzgccyaoGH`+Ij?xm=MA}*MqpsLo(hLiW$+7M(VR2qw-CcRKEZmzl zfi5O!-bGAh;lGn&L?=03IwLys@-CgpgEnV8zEylq*vhnEx&vNLZM$|(#D$1x*bfuF9$!yR{8qB_=QheNM!QaKXt)8`Jr}+ahS!T;` zXqm>2+Vf-QpGquw;s>Ic^N1GD(+Tm*7YzGq$B@+J@wrz12D8)D)|zX<-^Y;~cr(vx z{%GM3`$jrjj<1lD;l22HvuCR4u<+FhHe391$Kah`4qUuE-s)LnHqrLeM~keDd!{+* zNBM$WohG6tgq#A(s?w6K2)rJXlq;vvJuOU*Y(fAcAL)tFF^P_HmH-AiJZr7)IQ*T( z%8xe#CV7^UpF01zXGB`d8}RgD3zo+xc%HV1J4{Y9e}gqQetGJU9bC=AkIYse*KGDY zZH+^j7D{A%yhwObF}|g9ieF}-6ov@m2fwU< zxH$ZlCJ)aVpFA`<>3u!B$XS>3B#1xKa9?01!_;)Qt)n zt{NOT$kh?ZOLNjm50bXq0XRBj21r`Dwy^=(6bxRLE%zi3-hh8uU^XSj@%b)qohzSD zi8n96zie=oC&M$8y1*Qt0*^S8D?iZ!k5DRkq)t-2Gn9U%Pwn0NRB1njTj{@Md)vhH z${$W7pmgMD)(oFbM+ql>s1)s@&Hn(OZPpAq{14uc#4fG? zen|RAYGd@LiYpXvN_0YgRnQzMDqh++M<=|C-ze-4f$7%y5AI?a*|D`k+dadX3|7F& zZ=^5dDaIvp0x*|+4)|KfOXH%>{P>h$m?W-BstM{FtGTD3pR8QanYK?DV}SRf=3IdjnQ^GYs_zX3ZCyLFDm1~+bNL*dJ@Thy5BW-RtGjQ*Id zU`)0yCYu(?gBUGW4E8AoOQh8=-QN6lYjfH58>}TRlCyQ9~p zhH;6HR>jaIM;;?CW2b3j-uiaKazSg|4|S&bzbo1)#^SQHE{~2(ijPkk z@o0x;vS@y2a@}K!B0Q{2UTqfTC(`3w{hxBVo*a;2O)uoi=CMiOlc{^>mvICZn<*|6 z+G@M75HPZT9LjF;eWR_=y5V%H+%f>Lda_b?3qZJe@BkTkE1D+K5Ro^-jM>TkANgJ{dw`<)fOPrf>p{@HBKH0`tNGNtaZNH7`_KqA?2 z@%L~zgv|MDdnJgzJpUd+;Z$Yofy{w&4csjn-y)bQ+)SV;Z2S2dxDckQziZ1(1ZY5Bd0u&`2)`8gN$^94zf}Dy+VjA>q^#6Z;mzu@nsYTZ z=c=o5UQG=;QC+Q;*VM2Fs;j-dYihW6s;fOC%c^Vm7i-F@J^9tu9Ax$;S68$3H8m=N zvmMUARac{2D5R#kj2~E54Q1U`^FXz_tOm`l_C8(1-c;>*rG~q@tfub0>M}03#`8)w zdsB_~>1s5)MqO6@Kn=dDy1J%JYd4nT&&At>cYv1+A{ua8ZMx}a{JH68;B(-as68cm zr{$=wJxMav&N1cGo+RaTLlanzlYQl|9PWa4p$TXgloNR7E2lg!Rm)LbNAlqHb#`3@s?XGrbcd|RH)s5;#cJvlJ1wFzQqDSx) z)y8f^WAO88Km0u487M<9A@FX{OB#QZ>z4qoJjqLGB8X1${!`1w_SW8ld@b-)@u(?_ zV5Mz^XQxN;sJaW^h;LMPv0c!U=t;H<+dKG9-39MDnMK?h-a>e9;kY%pGwzH&fP8R7 z9{|mP=fHo9=*xjB@P51>Rrqqkk)}|*n=^~pJ-#y8J$N(TjD`o5c`uY%>@Sl`iAO11 zv6ky7{0k~G6Ms+lutQ8U<~Md9_q1N-KKv4X35|f9a6}{Ec{V(k{Ldwl;B;nV8I&1Bc7ZAW}uAh$Wl1)sN7`B8SpyYIh7U0rB+`! zf&avRp15$~1hOLQi3{Oiu=m47vt}*&kRIt?a~!`xSgPSIvhEzNz;3HdcITux`3)p{ z@as@mC^$d?@D7xb9a#!zlj+#C-A26f%8JNRt9|H@qY(&vl28($Op6)YT3p6o%ak!4 z>4*Tdqlt)oK6N`&XxmvpzpN5poVKc@U8MsvCecj>%E@X%L}o=4BaY0S$U@*n;9qRV z9)9?kO;x|?W=?HwWu309n|HQO%xLlXw>1539JO*ZAkCyx2L?Ti$}r+1jWWg5wW_(!KrdsN*> zj@tPD0C9!s3Z{x-fC8=UCj@94AL?sxL? zOYDdw{L=4LS{eVwFOq7;%wo>Q_vh9#JvINfHA4O=-7;B5;imhd(|&_E-D9=Zn;e&{5oDv2idf&0$*E|0xrvlXLeL%0NorB$lf@$~878}=zhLC?@n-?L;H zEnAQO$mY|zlvn@V$$yE^6{f^QOY&W)#MYKYEf@J+6Q3vFm#@6V>k0E?M3soogC*DrC6=a`tl}HaC0q zw;dHFK>h7EKRIsPlQ-XMDGt#LbRlwT;8B0__ zvlqdp^)b*DzqG^ZyP-t28f~BzK{SpItq)ObT|=b$3|b=;AJc5z-sm*9r#X%_PIc_G zN9O<&#Dh_xa=v_H*9Z%|=bLN-x%h_Iad~#pm>og4_E=B|VY%T79 zwx-fQCR~t9BGa34^GV}C8WWvybkrQ0l~mGn@Fld1L3p6HfS7w2L}~=fakACO6WXNg*$PsF&gIci%zV z{0_$Pd&mxPjT2ZR%Cg#0lGwxkbG2N1t|5|4$ud8X%-#4xJ2Z^CZ!WSXi!^@(UGmK= zw?LcNo`p(FDoUKOVmz>UN__6!eJ}2~Bin8<$B!)UbMeEeog2rR8`-Y(iI3Mz=$zZO zwD-p~ctK;RlbE^3bi6wTeL|2#RlAQ5Mp_J+YE+{2@O@AA#_VECtSF zAWa)tk9X5EI&}s6jo(q6jmYT0eg!?XJNBkezqie##T)gswJte&&V-j zMhe^EYR%LteuLCU=`p}0yNXAljJGn%?a9gZjPkcoM)4?@Y#Pu*QC7@Sl!2wCQ2%GG z2*sJ~i!Sn1jo8Q za8*6E$}<+8%=S@-2z6|4iY5NZ5KF~J5&nr#6l#woin&w!$S5Y#4gQGQ=$O(8SNiwO zXmwwlk&#rq^Jb-hwYE+*cl)OHoGhD?pB&acm1~(KB(|7z*!!AMWo2)O&oLzr-PZd- z(duGzp$SlwX|k`6;w=25gbcbfsUcB6M9tI$WcpSzCKFdX|OO0F9n7 z4fjqlBFT`<@VWqfxG>$v$)R?+OPE=TY(Gr7bTFGL8kyliI;y2Hw|E2Z*m1G%-MR58 z&8L2Nu}}HPc(cWx9Yg!UyCNbUV`@K)-xY@#k<)1V zVe}Ge9YWx-M%oW`N=SB1PQ{eoJYVdO%Wf5yT}}fCu2mx_Uo_IKVt>8*%eCq+)Sjl- z6fMq06+X`|5FWRg(9Fi~>G!Rh_=lj4x6mDGg%n9hL2egH%ag^tG_f*G<{!e(-A6{S z@59fbSMR%T?w(Ga_B`9^>8CrfxE@bbRaC>&qZ&N1`t7%8ZJ#-FyXJ4lF~_)S-b}vG zYNbk0Dp!p!PQVxG0ri=j(A}IR{Y(fSMU=2D}L|Q zHHd%yD|9<@psp|B|D3`fzkBbIIS-+PQ>YBR_U*%X(Rbgyjx)EM{B{fae%hYhPvN`P z?)&H&w1|BW|FY}l?pa$tLDl%3=c~%Leu~$k>}T$iyUty85TATz@wX4NnKSWKGscXb zf!>%oRvmaP8g)(Ie%Ioc$Mq+4?W<1|+X?e15A*0c^C*1e$a+}1=9`2m(4v?T^Cz~$ zndJL3&P3m%;qdqUOLzhP9sU-e1tLAeJHqTI1(UwGjx`2p91ULu8% zyut7K-+}kFch1uJ^11aBP2ULl268VWIFfh_C5-7CJPdyVf5Xtrs099A-iJT>_FMcB zs{Hm_R0+_79+9k&=*z$eLAqrJD4BGAQV=ARD_T$iDua$}h2((VsR@--T97kR+q~5m z-b35aw)fCCt8hQGZB^aKRcIUTw~9S{;XT|B_j@l~{m@V?quNr>a6vD@TcN$#WP9_! z`~Thl@BV-H|GWR+{r~R&cmKcp|J^s(KSj)R?h^Z$DT~aXMQ(eZ-OWCR`%PyHgjaAs zwm=)d3*@o;a&f-klBFe1{f(?v+1ahgPkR;j)b3g_I-CutPKU#Da&ii)!?liSiT^TX zVSKNM#-Q|wd?G8ACZoD(4qW^2zqrjJnuGDr6rT<3oql|@(t_~um5l5@i~=x%unI4S zLKA}Nx>JLU*ZRuw;jqD12<0C?0Ll=3oGEwn1Arg6A9tKE0&Sb_aK_@yd?mqdrN%0)^h0VJlIK?#^X2qKoNzxj>3!zF)9?J!h_39CuP#{ zs=QoL_ALZSbCy)5nb@A=OS0RgOV_vx<0{-k+l(*Iw#Fs3txW08%^%+p<+tq4PZP2_ z9bH-8Jj*&YQRmMgb|;h@GN+#1scvNlPRFa^;Xs^=rsCBa4yV}XOb$AyUWBgVbAxd6 zL42D*=!Zc}*mDb#5&IlGMn4F<=?Qv_({XQsG4*B=nPkSvG-FyYEtxh<8PkL5!(0Ug zRF=@u(ekp&ROm#Lr4DHzbn;7a6Bfb+A=u5qg-CvogA-|RY%-2lUQu4g<%*>RVo7D5 zlYPCS^Vo`Bug_d{=+Hvk5*@x%?ZkfgBW|5Ketar!jXoo1^x2Oj^-l79;h{s<>aP^H zvd^)%A_rl8LZ_ZrRnBgfZ@;nyKGW`WyV`d6@RTX-rcA+y;rettd?qLd_i|a;y0S6` zc^Ui~&(!B=>kmN3nM;fr(m=V%v)=R>wIQNhNuC~D(rcqQ8oze)sC$_3Jir4{_A=t= zjlGsY5%-L`S+^0m8vVw2$-HcVj2_FCT~K+MR7pkvf15FGt*vs@eEhp@?YJ3(A0F8+ zZK@^d*5TV)Oik-IQj0M$9na!ROz9w*BrSGWpcWAM1=k8RtViqCJ;;y!%KOTVT-9XX zJ@-%T+ykAyw5(X1Rkv2Z*Kq{g+Vby%#L4KTOqU>%)tFRw;nA>b`i$}p8O*&l`SgvQ z7OeaTwPZhDaZe{;!wm1>!Q87uyI(sL9}bjN!tWzxNkrf2xC@*eX($aj*;%7*?zD8) zNBDzb*LEMuy*k)Cc*gWT*Nj1B`<5^4bmQsC+-rlqLq-w0>+AU>z7ptmGP$92+j%Z8 zS<2_Yve|=;O;YEgqR!-}Zas9*4s;9`?6?Q&hA)--R6BQ8FFcLkLf60c8oD08^)zNpaKYt)Ib9(oI@q^1Zjd~arWb&%^tbN_r zcTPuT_dUtK;Qb@PJk1=(-ZEy`kum6)pz*smKF$9oJj*;n>U&ycMJ1V}kXoTHdvlhM zE1rDagR8Vuvdoeu!X;cmVx>0Y988}7VJWGo0-c3l2D+ffj;kmu&|}C|$XprdZx>YN zj}5OqBp2n5g0jjI$W$)Vk8|9A%zQ=LZfMZtj@K_r%S%|_)_>qn|Leh1AbP+znmkOr0&KR&{Pz!hd6`jV) z&7Eo1<}JC*%48)gUM@|J7n0Ij$))jjDWR3ao|BNC&9_8?P3U=r`RV~&qF8WiRvV|( zwnuVFLYwr`>r#tZwwP_tm${R#;7i!j%8o5sb7i^h1{BI%Cw9Pap<8Z>Y;K<@UYTE* z_*1KjcXE57_+Gtk|Dt^ExrKvoZmINYhPYO?XRpml9`a7>5$0x}m9)MiBQd~t11BFfDtEl;v9JY6L!^N)G5Ph36x?vbO|0^1$0 z<4?!Ubx&>k^$j;AJvgjvaC5x7TXVUE%T>Uiyn6Pik#`TrEf(GX$G#LKb+t_H`ZrY4 zt-$4KArqf#I-bNn$E>l53C}Z3-4Z4=ZKIY(>J!EBZ$N)mDD?(dvOD}_KVX0zf0a%> zemEE_U%lPJ_vWqxyF=g@a3I)H^fsdX2On_G99+D5Nr$T2xB7IpEwqn5->4M4%eMH{ z>C@2=_73l}VzKwx@O%RGi|nOr+v)gKG-UeE+_>r7IFg5b6&-*)CbD`E%Bpmu1HVjf zhw_9Y-ecUg?U~3t(9EC%(|{ic0O`bO819tz3b3eS2!R*YP{~oixUh2mZn>2x|PPBp>|iu0^J#{RZ#*7Q+5etdB9bVbws7L3Zi!#!v-ndfWw=qTdZH*6;6F5SK{ras(*Oa|4w zf*etsj7TVf8`{aB8yuF&x}7(bJdgi;_?vH6t@`G~!?<>n^UXQGesb{KoHw!c(#6NG zyRL@4n4>&){-H0vc?(`z_5CG!w5-nwwgAv&`P+8H$Dbg!{yz=w)%=ka$?6ESqQ= zk1F*2dV6!zNqWLDlAdskq|<)DdbXo*hPE3eWKmU~9bN3%6CbD&&J3xwhG|1Bd z@|a26qJ>E)Wjo;6J$s_^DiVLtbV1Vv$oDHPi!4Jcu@xb*w!fqdN-edsyspIxW9?^m0Dc?b-D&V{a!?F=;yscjp=nNbS{a^%9xsb;IrO*RY}4ZLTd887 z)Od@#&qejLditVmlqIYTx4zGi-KIxoaI@3!B!2;A=yAMWD}Z&eE>b`|2|7>9D1#fzU}&;2?awuuoUaWN5b_OeRRo>qXKTqWZw^oqQyDsR@T zJbr;^x$=$6$5Gceo*VevpmDbgO0he{O1tbtV^_)O6i^+nTcBDwe6LV4Y@e!tjJxPxg)=Y)~j4*tEb$Z~BmdP64mu_6nGR$IhL z7IA}1DbR4GWZJro4jEM@o1T60mB;G77%eZ_yOF8Kt;ar`Td=gEeDd6b4`e&dSBxo^ z(A$TQbKAl?HBnBpNnai8Fl1a0sVKGm)BNPkIAzCkV+Xp^rFQr3NBL;mybSib5#mbx z?KwOrFR^*+dv2PGPJ8bt=zH$&4&8^pf73&F$*%HdHzCjw#)Nv}O{N{fceKw+#tBmB zs21@#4SuE_bxVXhjebJkC$J;rKX_V3WxJScXoX~LU*%vpsDWPqzUpOp-_N_89J$*X zzxMt7Sh5LEc&3IQb-d#m#M_TE`ICb13qDIBxDx&Z;}nV)cK~8QoxfY)IpF7g|A}|t z4=~cugd2}~ngLh+?(7XUh-;712gdq+!R7;{vd4EYqyFJu0M zU+cOR;EE5Im|)w3coND3U)jOD2&G%o6$&_*Vg`B^4eNDOt&T2@=o%eODv_ETCYdJS zX{5=~YhHA1j#A^oH9DlS!9Otyo+0?zBeW-2Y7J?P??9n73d;yyq_%{^3(^(efeZjf z=YNEb*c+@N(Je*@y?%`dLPle9%(xg?kmxlgnuQGl9uRd*ybtGpXp0lce?Qd$<~OQS zM*0+L8IAZ$em-01BaSk+$@U=J4xmQtfsqXeuWMn_*DV1(5hP>AQ8K{I9@Q2E| z7r^nIAml>yBPJaU#?KzczkvM0@e0N@Tz3MkN|63Eii;6^Upk6tWsO?5FkCN$;NTY= z!^G;3L~CuN5R4jYX^bsfnBflCxF+~Y_6A#*=$56SR>f~(!rPRXV69+fwUN3{B8q({NX#8&^y8}Y{Njd+ladEcR)q=D!C7kn$!pa&isj*+&( z5L2I#XrliaDpjM_G@6A9@hdd@)ClZo*2x}|Wio8-0?x!`^h2Ucr}6r3q}@jLC>D8y zxA>9PI-Ccg>An_2LxF2k8 z!le-m*&bCQk(wJOm4LQ3!S6MyCFK#VX0)0TRYL*@X}H8_FO0cigh%EjKk@UeJrKCk?|CJqpfk2mL`gu*;IeZ-eAidi>Gefs)TvzF^{F#4RMJ+mSHr$ z6aqL#8)0O-qRS=x+Q>h;JiFO&uc-kKJF>^5+s!&xXlE&Qyo_)%w&xAuWHhqlXO@nf zZqH-(C+!XP0-}xn8A>g{)+83 zZr>YkPoj=0g*e4bllo4Lw|9+=3WU`y!;yhl$4eUWKJ1NpAjU24<>Jwh}aeu1e@zH2Ky4Y=s5hkd?FE+*&En*zB3HB`V3r;la z-k>%#@mo%`nrmD?8t>5?e0#j?_C;#2eQBtN7y0$IY2SYBhFCN{_7w^}?AuxsZG6ME zqOlqpb+jR}f;3q^(R-B*^<<3N|KMKC<&A$wpC!<6k0rQo7t~$hn4b6((>ubuOg>!+ zMAnDc$kesbNsl+aSKoO^J;G;Y#i?`KN1OPZtKx>p8D=pJ$fhnk8%V z<0V@Py?<-nKmWPzEqc%MJ=nhNj+bs6F`|02+OwUNM?JK(T?g)-GUe_AY8R45=kf*N zf$R=_cVU7_9zb^j7IH2HoKsm5mdt+{1X4!{O$^pmVIkaE#nF zHdY*6o@oR-zPo294gR;v)ew%{jPwMRZgk7SKN|V(Xo6>^F^;Y3UBbgA9&ju*<|9|) zprPGbBO*(3RYrGd&PGJJx*#JCCOYC<9hmvZohbz~bied8-5 zK4!f6WV>(Mt-ZRZWOt^weSdxB(aJRgd&sSlr8lyE~OB%o7sfNFlik!$U zAju9`t6zYu&k@Yow(6$@b2eH1+~s16LF#srt{!6BkaYDowv|i05nsW5hPyqMo`7pT zigLJ)#(}h;KahoxQFjW7blYT6mF0iZhxih<;!D~?T${koLL0yEuKNOyHlhh>2vVwa z8X}3KRMF_?C^d*UPO@`$f$EI`}XMun)u~< zEMB*7?=r0dR_YOxv?@p=6Lmx>8Wo(DD3W?9sXO!Ru0nG<=AjNY8=Q9uKY(t(#0~^3 zwjagYP`{%cpSL$FG(Uy5$ue#^h?OL)D&txgBsqJKP~bz(pGQL!1)n-{1fN2Cilrnc zzFMoAjpC@Cd{~v15RCo7IRWD$q~YlOM91+@Sw@9}@nSgDXjqLpiu&PgN7e0s{lH7; zcKpDlxr4aW5F8c7hZo8|as*`qwy&N)k6+bs)Y^kOvIfiFF1aIGBy9uD;O5BNFJSj& zK2ZuZM0}R#yMXoQ`%9ANO}+UEYJVi!{%Bi-hBiL#@McHy{2>Q`aod6$9M9{r%wH7% z=lO=u4Ky>L`~B)?3g?6j#?06mg*c5gjFipH+88)7?x0OVg12=q;rpPCcohC8{Ea{_ zux02Dyi`4hm!jFo%oa*G5BQi5k^nP~PDnxq9;t4IoG-CgqZjI4MzdKvx|6w5zDCo<{8=k`&+po07yUKGk? zH`yo3U4csSE8R{$6k+b}zW5(_7Jj!6f5_o!;Yj8GnX2Bi8+GgJxvnqj5sDwq*?Ro= z*8fxu8dL>8^|KROwwwsIYblJIDUa$!glwE{up9ge*<|rdh4yc?NmMdCr+HTfNtu$N zh$jA#43}rB#Uy9&F3)M2vf9PvwBpbLOIDTzEnt;wGkyWTV8#O=@g8%w!s7XGlV!mR zxK_>0XcQVn6Bk%Q+ZR91MqWkehU$@2k(MwVs|?Q+n(_!x5lIpMv;juAKOjG!Cf>t( zdKyrr)!DOvxPxE7B>3yBUQsv)s57Yc7DeGlc@8OX66J_@B)ytz6^nC7P;sCxY>`O* zHnQxg1s`D*z8&~titZ0`G5QFR-ptn_Zb68{fS)mNWlST2-GXVs4g;gFbGY3UCydj4 zF3HHBY1HS6^ki-hb+QsdU9dd{z6>`Y;AjP$FY0eigm&jKCWG`vrEp&Aj%j$^2;-bL zl>=kt&F6k0_<1He6f4iyBxi^63xgoB9FIpra*-uNVbvpMpU)SBLqN;J!e@u+x}PuH zFJ3UN+;MNJ&K-wmBBUqtHM~_}d;6FX6dU_!0v?@VQIBwn%gh$Bf%aF}PWB0k+WyAo zDg=29kLj&(OECU_3|4nS(|g^ZiII-Og2|+bz8>8QCV$3YbP_xVZZLaQSlb-#LKM)Z z`hxbX0UET8fhwEgN(5-|uGVNcB+KUp<6S_=*g<$WoIcWUZV~BL^dHRrAW7c(!Q7B= z3P1!p)?p5Y<_Fc+GfVI+bSLwb%|zC10Zr-nb##VVMAohem1PBa6*RsEsouzBdtpTD zYv=CkSzO%n>(RsKmV7(ExMxo&<6(I57Fvd#miZFg-^C4r`%HSj31BScX2N|Iz5f}W z?-JgDd!F8p0DDv+Y=HY*s-FxVE%srS(kPSu-5lIGN!mWnz$iPDgXof{oW8Z{PwG## zlPvM6VxOwov8Wk;2TH*!we?H$U()>a<(plX6W5ptCVT_yF&5%(6DKn3;M+mbR&H z!n;-ayBc>HcX;RF230Jkey z>z0zs<#jx6AH zfEV>^gl%jmQwy7zc&&OJLt&7#(EMcUU@iauWpSifO<%Ybj7aK>FS>%(&nEG+(as({ zuIbieZTHr#yZ5-JJGY|em>%87_VoVHx_kF)dUU7sA{%}ljTe5RF^#EpRV6;g}UAj?lbiF_rddlaNmsDBL-g! z&lP=bsBQ`L1$AHw!qzK<8W`gq#A?bJN>31gPCx)%~SXB8yG!(;dEzpB`sl=b=QL0um}xyR8x=$-3kb&;;@y>fH+jq8=QbI-{MT4`fiN`rN81Ymen8rAl3%ZByvR2STBo?-I9b%@u94+O}%ZLln6^ z7d4%rx(RjRS6z3hp27V&+Mi&AxA_uNyuSZkBRk*mCGv+d{KwNn&%$>>d(bh)<@)@I zKxv{s4a&tw!GCBW<1X@bGW@UeC4?4@m=b=uc*azsjmJYtfsIG$zN32CWVa;HL;v=o zppa+e>2}-w_%mxtiWPqbX9-SAY_^#IZVlX^)~JnkYE7~{b*(InQ*2A{eyf#)M<>T6 zHbo(uhVDldzT;ZL(-NjsJi{G?`gI?}cwPXT4`=l$y-sfCORx%Qix}q8A7N?t`qN6l zpEyHS&69U)KcQ(;+26QZgniIv-w!N>yin6J@b%(PrdDuO&h%u4Fr%1i<_=~#^BA*^ z*~DyP-eo>yJ|Xql1k5EP^A*5fC-@B{9!W0wSl}#mrM zo4<<&R}z3o)&EdhNqJcjvXfJuD3s8p#!!s-(}9(BKdd}(V5QJ}<$(#CW_glkz3{>; zws7dEs?k+d$s^ruvs^`{*|Rpy`k|_WSU#(GIm*OSmRI9*$Z}}(BDC?nRqwOOUf1)h zR&9KK_391mzR{y|vN%^pS$T$wb*pDqt>5tAgd`B*(cyJ<3_S$myT$W&`fV-n~&v zOQ%*>Pb^s+J;SUmIHK+OHIf+GJhgc@9pKwdP@#!KLp@G9{BWJq~p9>op|`h`9)e57pXhw%WtUy9l-7z`;cyvU|-SE7hoP_z(3#!`uXRb*Qc}O%uh`Pzs3)=>xsDI zo^kUhz%wTfEUcIfJ0m~;{K(Oxy-3P4Gp}FzoQMEdz!jYTh7rfkN8=mQbHk=g8C_RD zZ?CR+{I0>dvFGx#UxWwe?1kq)M>7W!q!BZjQ)GgphRDWTwBtYK6ub(;?bmyM6En}? z{~^5tY2bP06eULbjQ8LP7W0KT=k_7*zwYrqME4B%JG@6fXL!tW#(#f~`wn-H$74>> z$Hf->F8h2jUvS|O_l*C355MbQpF{5?W}9wh z@2qFP!x!Q#?(+}b+wkxAdf>hI7@K{gL=v9zh#Ci+!G>4IJ_>_bmT@5C8kG&zT={&;K#+T=STFYaels<9$E<`7im{ z@c(}YQ;_A`g~#yi;$!%B@zHwp|LVi#$Gr3MV`Rbn2w7OyPZo^-DhuXE=z{To(1lBn zf%Vd3@PC{xTz$+tuRaEU|NmDP{vCh+N9e+u$LPYE$Lm5r*)l#t{?+h+;)L@%45sZPpMCc+@4fOryw~#IwD}i%;m{H1 z+c{bJH+rz&Fg#j5|4mnV?p^*L;5PruvzH$8-mCw^d;K4!7kx46hx5bt|9_eoA3>81 zkI|nEkI|nEkMSiN9-}uK9-}uK9-}uK9^*@#_trn=-iF?L;Ctp2vD*=|H9M|JQH(g9 zql5DrFA2qC1rGgjT&8Q^Ix) z5<|}rL*d3V%#H^&Y@W^eJ<=JW#`O6%?(cLyar+GQcPGwol6{_W>|_?x^V9dq{!iaN zLl$)%z_r(Y&vScVJ-qtkp||wB34DLXz6t-Iiai6KheNo$9HI?D(Ry~)Z;(V0)R{9I z>Ek>n-N=22Zf4Q1?CkberycKZrpwst_qgk1Q4gKF&~=OG9=;-G@O|#OU>AG+x8Cay z)0x|aojGOSb;iDno=RIE)G#~F^!uKx<9i0@ci~h-8aUPYZSINQ?|V4*C++#c&m3Xt zd8F?%eV!9Epyy-{KgT^QXyBejPxH0?pLW7Z;Jqc$s|WLxXx7Fv@na%wIF$jS6eb$Y z&vbkSZ&>CEfbjD3eDH!>yBpa50=y27JyQXz3dqFaV8DR`4AUT`UNagyBO1`3f87!= zL<4vo`~@9#WHbi#51q_rXZ*RnEOjwa7)0DUC};Q@0Iax?0(UpcxIc7}HY@ed?}xi? zoj5^!{qm&wyQZ%>2cHO18}i^+Kh-Yv^)H8S0^RU%3mCWmOas;4SUhY``&KW>A&``P zHhD1Q!?h#x$J(zB&tY?a@!daC-_T_|Be!oV+qV#@vRQGj2rhoI=`nolS`^+-H7b(& z27Z1Kz76Mr*&uG;qFI92K?YZW^o=KeZOzFU_veNyc`9(}BD@V|5EH@7DXjt(RQvc0 zT=3!X>Gn6Kzw+%yEw6{ZBN6Uyh{Aa9GhP7TP}h?9sJ9@1P^PYJgm1#{?STl@kAWsG zC${3w>C=~~iLcsUgUc{(okzwHDYH&>F6D4R^n4S&6IskC?qxEA+3_wsRmRt%@uskP z1AE05MaG{vK`D|NyapD$z0W+s>{DM~+(DA3J{g?o-%y1|fZ8khBcL=fcoId~-zUih zRrc%C%YL!nbc{CvjfYUeQt@8{;^8dZXbR8)kDoX}b|%z&#pj*brX6qeYG^PS=Mv;? zBpd8Nm-6cEe-8?oV*g-qSg8Ha1}A^$F^E4n*Je@}Byzpk!aU3-i`mkbPl><~LsbCf zqR1tFRj)gl_2ROb!q^nOD?xdjoBtc)R_lYb`acOJQx9v^Ii6Gdb4+en{5fLTx#`EN zQs1lRIq6FuMELqSVBwTOqI3RXh@tUiq}nl5Gsrx444!}|jzQaTcoHKIvOvahaN!s| zfNAVpidBLz+OIco=rc?sl!9Lx9pex;&^Ye>$1%i!6`=U+S=_*K?p*I%(9=98t;o00 zb8088*y97)vqlwiKAYA>FCh*B#j;hC;b*mzs^$%;j@w}IyN6%am9VKeH8yQp%8;so zjsEJwgevm2#vZ(Pq4(mfu}y(buT!!hA)CN|2zOvcxZim383`N@-f&$5yWxomB6xUq zUlI^D&n7&e1WvHWOECswLNXf;>!pPK6cOXmGd7ig#+Eo~!O1OWCqM^izde6fu}#sG z*p+bN1V@wgjpyt)IjXSFGkq<3u0q))G=x$vbNFZd0M%IoX z{ZJ$QaAB(gtX`mBHY*ToC1NeH5BP%&cnp4levWK^k*K#XCZ^J5i1N?FnV^HHJagGT zhDfr%Vqeo^m#DJ{ZYj^FSF4dZ7UR4&qL{45I&m6JoH{#e`KsBke}8!eJyCn zpIKbw?Ez1i66>-Cnp~DQJkgQV< z1K>nr<#-U=V!z|m^X-U+Y_~KbAD`jskhofh)798(A+6W;*hkJhGID$liUyF|FTh3f zhY4c~6pVWo2&x=fIQG4nn=ga12~~o)Jh_mN9-CWUlN?@sV8J%9?v>x`tAuK>({oh7 zjgA-Q`i2KwS@iOax+-KRhp7|2=I)$$(i)(!81MAxYZs!El9e803h|Mq23e0|&?$(m zuo>`cItIlk8v?1Zfej*K{LbNk&!U`@@F%zlwXbKkBjs}1|BdK2ksZDWlA_jVz`x_RrZ9SpR&PjiP+I}!0Rw}EVsDqp}UXAV;Q^Xz+{Cd);j#}41) zUqSCQ_PoyKvDS2Q4R=i)@m2u z{m2#m2%dfk-h_u&z`x<|>ZS13FRm`HyMki4@kQVVa+kjUk@phLc4ym5u#|#VV3nA) zOoRtf&bqN@L4ijP4CfFGUQRmnSlk}u(YWxf7hK?!lkjz<7;yYPU;>3JKpcoxw6O!( z3t=8R&=KM+>l;2IeERqX6?(q{#XETGXoFUUBn@dM;KC1bgppXg7j6U%p5%0+z3uq> z!-^V>*+ObDTmWvSx^~W(GwuufCC3_s+vIoTX{6ubxC0;v=*@|MTUmnlqh+HeKHGv2 z6RqP`wkS<8&O;r@@ARvaTZZiEXlTFk)Rof8*a5-06AM7)v*Q;og>$E!OHL>npOBCe zFMcjDYsSH<6ryzae3yVJ`FU|~rk8Anlv=*``l`u;#x8KeLgmxA4v!;^NU4}WaPSS1 zXcS7tm?T!#1|xmuOVHTFGw*zR|LUTtwJoy+LNIk+m#4xqX~1-I(S#225d0C=z&q3H zsJpRaJnRQY*!@aDY4N7~DEsw!oUCHJGZEfewhNHa>4}(V_S6Oi+iqb)<4DAuHI5`R ziNW2xE5H4AWoFrgyovdipzs49&ktwBqDmCR{Q*4Re;;_8BgYKL&zoWp!Zz48RiT&i z`r)L)y-T#75aU6d7$J)urJ!RNk_+J?Z4xuMe&PH3S7$dYq-Zb|{em;vb2@^(6qetr z3Os=tYzLBjuoPj{NyIg~m5v~%ZYYKOOP*Rq1dVa>b2-Ax6Yo85ViyVV#8R!2UC$zR zx)+j-PbG2%xqQWp@t?up{{frc)7d}z;n@UtH>q#JW&fC#SH5W~%mAKXFOb8_ffSt6 z=HsgcE;EPCgojA>+^G=c*b?ajed6G#7SycO3vwc7_=QBg#VDb*aB?L))CK|)Wvd0nJ z*)Wq>YtI(J*yb1;!){Nn#e30%7#2rgfZe857Olg@Ot!`k>Yn^!?8cX7!acM0t}0Be z{SOFfC>R$uFvj2CO8IDWzJgy@$-qpdU&Zp}6@JR|@SnFw*5!SiU-tqToB#Iu^oXd8 zH8Z2qZ@8EL)`puc5e}Kd z=PDps&^YK79R#pgM`^tPYn!4Z>~SfWS~hrp)lwQv8~qm0tbu<#n430v-6}*aY5^AL z%46_j``68wda>yIax!$0_a^RCh~NikiZ>yKy$CgB8T36vMw#Hwl*!TZVBvK zHJ>2Bgbu1Zt-fwaZS6nj&?}e3HA}kAvOFNVt*{2Xiry)}ktEMy2)Je>M~E%wqLvuP z2%xeKzv-u&E1L^OIex=(`A;CyeHL>rF?4^qat`-sxpMdjK8_YB9=FQD(t9#H3RfdxCjj6T0AQED zr)Mzi3ib91?db3Xd~{I_zk_-3@B3w-x@gtX61cB&JNI5VmdZ!4v$hfRfgTAhXZ)Rk zH}XLeWh4v#B8mc2=gdEUUG5K^DU~nYNLsXt3rv7jOS@<>}_;;j7?cN#=La zCT&>Vh9W!|7(EzxA#*I2D>M~nyPOBNV!}ZNhzeRk6coB)uR@dn*jH4HiZBIugFO*s8iBU)+mj#z8RlnQ|Nf6Cc5sCKn8rThi3-%IF=(hWT`_fAy&msp+v1w1SqoQNHVP zT55JoT@Q5d{D1*!pi`@}cWfUL=$^1_SIqt|ynV4!+Z<~qH>XL}DkCus|tEyFVd zFBIdjQ&kDJ`*IehDB|Sg8u-rK$d_PkzKZK{5CkL+5Xy#S3P5$ z??dwZJmwIMUgmU^Y+KAjUX!rE4VZEZA`gyUhW?$uoFw4F!Jfc{0El?@kh07dYQf9c znsp&x*|Cay|KF4sxrNO>A^T$JiF{SgfRLQBlVREg@VaQC2!7ac3%E{v^_XitYf8Gh zO(s%~6$E;Ko04W{Eb%ve5WUmb@13sB7u)cQEzUozmKa*Og`vms;qUI_-JjpYY1e1vkzJ1W&tv2jSW;0k3N1LTMfg0lWnp z@qoX6g$yP7R|W=v8TgO)PGQT*jt^@nEgIj{i#vOQTTk{SDl!@LBk#;z3^PRlR|o7K zT{u2xWLAcNUOX@!zBB)OMCnsUWmO#VDJ>h?3!^i$qDnNxOFPI2mI4a!xugegG6s$7 z$;H4nJkL{bQ7|7kk|m{PKKQ0;!=zDO#BMVKwe@=v{H4w21Xow$&qbTTq*ynh-Mu>L zI4t90wNxZ?W9S*YK>T(apF5EOr+;Pm5KR<8Sqyx(gCDP12?ILkauz^>yBk!dHD$yh z`2czfqmi^4POPf;^{kHfCTQro!8q1P)TF@46eZKq@)guvT~MdhCKAX^6s7c~U0gy2 zTvNpU6|W05GA2SuY_PZB_y@!D6pHipyf9vZ^P~t3VArRxCv-$vSpadQ!!`5Ctax6I zB4iRxh)LXbM&i5y`aqi|FPXGu#=(Zl?Dq?PwD(bz6?;BU`@fkv7Rwd zF&1_-&$fT!BT;?B>BL9fA2VU}XhcgS7u;fbf}JxMxd;@6aXh?ygUx5MpGjoO=xO}i zGWhMnYkyxkx&koyfS(BcaQwSn zv)!Lm7y{402O#)IP(Xy8Jn8uiJZS3W>wPvqh@rtLXH2}vhlwX8*}Mg!9zaBk2U_|* zw7?7YwJ{-v8o8@0rWSufC^7f_Uq4Siw)az;!5!Y?r``m+$P)Ob{YRxALwI`x^%Cbc z6dwW==RIRO-$aDr=z?K6j9@87AEFV?XlND$+#raTe{em=95v9bXq-H7@X$dx(#d^m zFZ&IS{?5a603GO762BaN5aH)O{X$!n$wi`24|b6%WPIhU_ZAC6K+KKS(t4Fd{;G>i z)8%OiH5xJ`v;epW!qcO}$Pa_)0M`KcLa>q;RIo5i?-dEXGG`dv>CtdUfDEKmh=T23 zYu#1DGrx^7!6Hu=rIrRnpt~;>;3x2c0?| zt2B5Gx8?0djaHu=BN4bDKqJzl!pY+S!Au~-mxjC#zY6tnn{#?hgf`Vh=2Pw>R>}p+ zY3FAP7}vKW#v={$5>Y4Qq=e4NzDdap9PI^RPw7a{ze+GB2lUG+W&+E%RwuCwg> z7E^mnqabYXNi%0C1+G9S2&X2S8Ua(UIV=~rv=b#$`C(MMrGbv8lzM@$$kcgREYXoN zWCmq^3`im(z@PRTJ(mKsZh<}8M6r*!`ojS5h4T`JFS!Td>+isqa3iluNzprRq zIk_++)J>$>(omf0^NoOUf7Qcw4pYa^l@`Tx)h~Ha+&;?Ef`ccjmuh4Wg_z7io`$9S;Ra7P z()P8dN-$3U>IZ6LZ72LNU$)28_H(Ny)KDiAx*#66B$&qCZPkd$XQV=xXGt8)m6FNlm2x2(RWSIUcjtL*rq=Y&I#-1-YjSA@Fwhw@)Dk z#|5aRVvH__FNO2akxp70oRZB6E^8U_vJYK994$B_j5r?C=GzdHDHpoJKLx=bT$ngK zS0>)$n{KAc4ElF0Id;I z>xuUi0RZ@WP&;IdEBuXm-aPVttzW3IR*tygOLYC9l*#zd67ZfdKvrwS6lPr9G?nC! zPM}4a&Mj1{Ual69d|#JMosz5I(RP>Rp!|Lz?Wr7M&{Da|u zFp9u)Hw6CDT0<2UCM_d$*ADAE?r)%0dW$;0cS43lO3!z3)l^XuwTP0N^qoJF?M88! zOz44bBHxc~xC^r3u55J>8El8y=J6fI8qfB$GAZL??}Eo}!25&%q~8RBZTolMduP=2 zf~ws>bNMJa3?8<>4J`iwIm96N$(Fr8|2_wy>euaN}^9t0O22B}P3tdiu#duftbnBeU8{M#A6EqKIPwPyqko zS_ij$JOX+QWP0(cqfbnPZep31!0a4&)-%TbJuK&PX&=E3mJS+TG<)ipn8)W1sAXd> zf?a#W7#=1Lf>XsU)m9m0R>x_+=o!WZ9_XfJ+TzuN-GvfO%dxF)jU)OJ@A*|L4tzX* zvSeD`dKrjr@`dWD3AG370V3o*Xc|=?n){|EG!Nc+FKU8c4_Tkz|5xK|81n6+8~$2t z{_M|>f)n%Xq9YB76+td6jk`Z)X*>v@2yg4-%lZ=;N6GAI)N)5u!Dd0tY@p?crutDo z3Q_;kSRWrMYB(1YBd--o_-&uQ{>f?2o-vgS3h|D1RjP95jb4#BXT;APh#hUDFZ^sJ zV#gCVKvJC_l0q#X=r}XRG9$GZ-e|2fChik=4;UBYH^maRbyQ>YrO2T}?Y}zp&3Xwj zsPpGM)`lb^Uvd)hCx*w9@#VO>6KytH%wk?tpYS-whNk?uoJC<#;u*N+AR>AM{P?w74Q=jnVS`X61N&yIS@Z4c z+U6Wn7AOUhjT@EY;ag_Oco2T^AFEep)X>GR!D|~gN*N zB|VCnok!TouqD=UahyKdu}lFQ3a5PlU9&V&s&%r?4G3MWYhEb{Ds=OZ&!t3sPbw*r zisf4rY2ok(4~-c9CFF~~44j3C>&qvAt2vYk3?>wnVIS&b0L&7}C?)9$p9_qgr>{4u zX_w^A8wMYtl#ycJ3|f)iZ|rZckmgS8RSjMr+s){!)CP@TdW?Ld zt6viQ5+1uE-Rl`nO)-!AbByMgL?C=aF=OHjz%}>)Ypht`%_j->+(P@I=#kI;e)ZV_ zS;T=F#u>xtTzuV4U7e-rlU4!#e&U3mB2p%B6XWSK=s+<4r*ACdu&|`LFQhn+t&llg zH8WtH!nmx`9;fp4WwtU#Np0A(TPwZ8W-TL{eVUEfnQ3YH%Fa#ZaOzZqJA=XpWF~DS z)%hj)L8vBJFW}aJqOk>?XzYP~;wWx#CkUJY=fVZX7s!C~QtuT9OoGbgN<&G0n0=Z; z?nP$XUs1@^WCbPTx9UeUedHUoFb8zeB2l~Ht&ee<`ubVXbk>qD^eMxl${H4s(^3q(e z_eZ(Oqs?%wtwl3kaS{yCR7G&{k1VYoK5O5WC?Z@i%rY&bG=eTTrNTGRQ)FP10qTX| zZNd=YMsprmtuet8Fj1%W_wq1sd_g!tgi~UFzst(1DylarVZ(+{8f|$5E{>3Hd#0!V zygDyAl*wE()M071;Ko0jeay*2R2~(A-z8zgR?9Y01s!b@qt zpbUcFjdDk`Cl2bAU{G#R5-UR8C`!sj=4Sgs!fQ~n%GJ~puhChK*qGh7!m*mRPml(5 z51S1-OVRlbDF3c)NQu-#zKZhT>$^^ddr?;S`lXhtLXk*55ru4iWN;WArc`yt)#m>Y zEw{i*6r6c@`cUTzQ!g0gCQylN1NIl2x^Gi;Y>h9JJ^hw-0~SVW7E6sHALCugMFGI(dzI9@mKPV~r+^-)HIdZt$9y20T$+Dyv^A68Bh zM}X|$vj0@)Ja-8&K>GWtCY#5Y`nUEB&S(TK!9)%mu(9OYrV4Ob5i}pc^lkTT@>lv6 z&xg%LShdJoi2zs7l5tXJvl>~*WZ2uXKA45>^Lc<=6PDBszspLD->%-GAbH(VFa8fp z3wBxP>b0LwFp)7!--Dg)TYnoje0kB2MEgjQ(M9GZB0QC}k6m_kLB0^KEWZKH;RPa? zHsn=A8>53Vc)?;c&$*cccKK`sfM(!q2G2^qst7s)JGYzw)i-OlBt+%p#{_Sv9=a^u z)L8e?ny3Ik1%{owwDlXXtfnfuFf+ zQdv6jqqOAPp@(7D)_upGX?bhO_wCTGKmFzEDndDYc-pd25EBSYL_hxnEZSjDn&1zEb6Z#er$-sS%)3S45ph2R^Keesz9U%7b({B!lV$%}z! zvY;duK7W0zX<7bRS(88%L5|@2bj8@>PRA_qcaz^)UVlTZB%@M-;K`OIG z8yu$4Sw2T#I{+h;4uvGvtGq{S&l{nhR2o+quL*RQczM@s%dJyRuHfKO1f>OJrhsg7 z#-H_hmMjo(eQ{0XEK5N89}PLiWO(_Tg%}hnKPY2hR=_|W(LD}k5MLp9gzT)^srQkj zyeEsn*+^#&0~3_p5eZWlfk}Lo8jzC~kXT?r)u6U$ZW(5s% zS83)REgef21mF?vjTU3qjis+A4Gc|9FO#cAz&Xj&mkTr;@N>@hL~lFS9yBeqxfOv&k-)#vx0;n!W*THo5c-H2}6>@vs!&3 zORB@)$pZ=M%<;KyGNo@>$B;26C-3orqbFj9-Y|-h1yzZW1tpDLbNyO&x>sa2XQtP> zsk6-2Lj%tGwfl`mh9$hpivR&ypRegHOEQ3W^K%1r)LY&c~U%GK@^E?Z$a;^!eiXGYUY&VTQ=@>=V>#m2b7ajb#_q;Lu{cFv~vgAMlksghtTGYot_ z+P3Ln#q;o|tnr~%ucj|QoA)~Gj!~#jgyxMcJ@df_Q@(GrptYJ^g)X5pk~7ltbRN(5>r7FC%ZQmV?9iUgfSbaXJLAE7yO)GdO)JX?4t} zku%j&I=K5kPaXrqzS?-~WI)}pqjQ3?YKH-eDE}5txw`plu>2Z)cg5+IH}l{hCsyGe zjNjp43im1n1WytLLX_@B6P@9l9!%Ce#}vS!9LWa6ijEO02TFuU-@G33W-q4g}UP6g!+ z%icY<2L26y{cSBgGRi|ORGFzUSGO0ya!-qHF*vsg(*nWFu<-@9ExmK~WWWVr$W35n zmiOku$bPP#;MMzTgkeL}8n19-CcM9@%?^AADjI?SyvpBZY0AJpzT&6?`FISZPC%p< zw0%r2LEarm?`<`&xycEoZkQVFL~4R(T3;zh`!D=V-jkjib|w+#epClx)$$ zmlEW8njg)X#xd~g$z`MCVsia;L3}|7c&0#IsGaeVZ}snWTSz)2Bi3@TX3L!jB3Tl=H$zj(wV~Yj|^mozrEhaemcx6eLI;9f$21gza%U{2K(OQ>xphHfw|zTb*OX)$LWY#Cv_B1mvw?JTL{?4MT#JADpA9*I z9@O^Il>vj{ zy^PL&~qXwEP$dDR1V#<44wk(-H zbm3=X!m^4&kNXdLfB>zB*QQ;Vo4pLs?~jS)PlIbG$G-udTCj90!@(Ve=r#nwoz^Gj zMc@+slXn)z&_@w)JkpoAoGNhUj~bF1nmHmoX+`Rk$qgBSrBa1v@*4*tDwgF~(*}lS zkBCTGJ1E!E{&bnUpPR^2Gv)MNYw_9~TN)V`nx0-M_4x)iPhMLTb}TIEkG*?+4QZhn z85MHhe?ai&h}DNpnJR@k>Cb)pG)9)@FoP;Zu*W+hVqR~|#Fc)uG7E0?`FBCUvKmR1 z@;?fOw_d86ml&O$66oTpn+NEr9e83P37^BstA9OwbN=C}rNk4toQx(QUA}bcO) z%Cj-tW}QyTqWB)^^o6%!c9pvFQ22ogk-N&T{ng}+ql(gnp6`K|%f+dO!>1;BxOjS1 zu1s7%dLf}A_xt?{Cp8K)j%p&3ettG>gai?BRwI$#;4Ve`3; z!htm&M5<)0Q8v+fyxj?@Bb98f1CXF=o3}nRG*(7DCD#`D(c7k(WFq8?Zg~0TCF^14 znqZs754@iV-)EQ+G)eG{)N!M+)5k3$h+#^kfDb%irz9W&+$7BQ&$-+yP&tyr7H8@^az=V zxUsQt2E6C)Qh$5y)A@_w8?AC6Tu_)sQF%^ktB4N5>!uL1tVtr&~g8sm`||eLb~bDRb8Z% z7VB_Jl8VhvG2-)|!sGTBZ+&9jy}4pg_E5~>`U_Z^;QTYmRovqNn_|MVWVWk==&(9& zAntJtH9Hy+lsJqu=&9TMblb{3ev;9VC~? z$vEW_8%exNSbsrAAtBo&!TjRo-z<-i(LrtUiO>UHSl@9AlwBO307*c$zcS2M0Y*~d z5;@VH50^ zch7z4NM+$g%979{Kg?H%=C}@K;`%yBF7egF0^P$GIG)hx>-gI`=jZhx(o60#Iqa9I zQF0M{7v51TU54aLfc%NmB4r-%Bg77LA^YAF9^T==2WY%}Cx?v!|BRaJ;jN~JPiWW3YXboKQ9q^ zBX};uPrXzwL-X%NjZ}yCj8E}(5@a16ridbqNgSOfcHdxY?)skGvw#8g#|Ns}XT6S?%df4IY;A zlv?s2CDbJK@?|F)FV)d+gI%Ux2)Oh;?a1CERHGh^EbXKP;FOzjo8_ew>oQXWZ~%xB z&eQ$?uX_cBhkyM-sX!Q38)Fu_u0Sc~6 z8}J`HEAn^kRz(i;&X3wg7uJ{zN0gFN<;d0s44lP@i_=D`fGiYn?EmGQmtW{4s*9GFiUju4H#MV#2$U-h z46s22i-QH={r$fA26Z5!;s}Ni$U3V%J*c^zx7=vJ@sxvnFhLoT#9ehHK9PXc2!i*1 z_YL|svU6@+F9FsCN4*@dP3p*^vE2mp?Js_SyY9gI;0zdX2e`sR3D$v6z;_o8h)kXf zLdjbA6#NJN0Nn0?Cc+4RvH$%Uh%T##;8S>E@R;77#b?=dv_YI_NCwEUn)RGtWhaNo z-8$7CL_6F=5@20`K2bO5p8QFBJox6+QISjAi4{}hae#z{ zh6s>^q!(=&JsfsJ9Yq@?K~(V)V1H|T7mAJEhYMJoeR-igtD|qAr&*7{T;RF}WKu*1 zx~Hdt>p_e6kkdvO^e&!@LQ&CkFE{yyW0-5pi4o7&3S zQWiW7gCh!`%qNG#yD+q^IZ!e(auU2f&-#J~aQ_*M1g^jr-kG`R@KeoD4WF$qpM9u> z@UZ`w9v<(vhV2o!LEk}ii^VevNBG!}Z2fuzSWk-QMmUwtHU~uZrzc)|+YWDgYs>Qx zJyF0i{m_JU=T|S%7M2E5a*s%FLb<9IJ{wt>x~p}1m`nt|`Czk)aMaVwmgtmhyvfp6 z9GY0LbLpGGscXVdhfkd%iZYPGnyFt#oSs~1zl+U1mAeYqe{SliaP$J)pw1zhCu2Qe zEB=105yS<555U#Sq9Xaxe7OhL=*I5RfLFgp+oYVYRdNA>nIb9JHRh?-9~)ZWcNe}J z*X(Lm4kPnb01y;iU$$(*=GIT9HwVrFwlhPc(k$|!q$XHJ?oJ1uPk!&0?ET8POYn{H zV<}Gt9QN=9fD)*D^&Kg;gOe6%V*~bFtOc4jYaCw;V2*^q@eJO(nDIgMk8s2@oY`SB zD(wECGHc(!hKtgi?#n=&hnv*e(H(c?r5y`{gi4_}%6leXN)-yFL?opqgS|a+0uM`m zt)8v+W0;`=5>t2D0)48dK@QelxaRfM6Pn;*&2BOd);k3eQn= z)Aw^7&J2{9Gb!**FKy^V`nh0u9=6O}A$)#zunx#UjF(E-9=u2O)xq25o${%ys~FBF z`0}p5--Gw7n_f>0B&9Aoc8n4~M893t!jAz?!P8$5yFdEnevfUW5B0c+<- z&Z?=nC`0D-V_8qC!>9S!^Avu?TINi(pE~#tpjZ2h)~+QKmJD`u|HQD)!A2wXA%)Bq z5{&hI@o{=qF6QjyO7bhr!&5PBMEnfBoViS|3 zp&FoGY@(Aj-s7h6YA*e%DO= zFAJ|E1o;FBziSb3@~i+uU*^I`pU74T>qt4jP{zf`n12Xhwye+A@EsFG(APoOBDt!* z11Zd0#BwJNbjNWoZ@(vl;TGT;S)ta!2kANIGPXk{t!42 zhsJ2qXz}(gGOhuk!D%eHi{(+U#$J!K+laz~Vktv|Gcc>ig^Zws0R#RbGHB#FFnT3Y zih=7v1I7sP1NmkV!Y8Z`KO7U>o{$EZAC?97BU8P}J8DjVy|Y?3&RYjRhqsXTt<0(J z<^?ACdWS#|to9zPy9AC>xdEJ9MA^r~BFZ0uS?+?&J=jm2!cZYH7t0y@H6oA@&<2jq z*~sU_I@WJTvdbu}&Z<4ZMJmWpI#VuEL|C0l(lzPKOXm~a{e&srv!s%)I+c`MaRh!b z%FSDt>Q(O{rIQCLJ3AIV6I$hIaD!2?=_+dWT}!^F!4=GnbmYvBk*C=;4s7PknYePM zbd){$DRwO`FzX#Paa**FIz|+{v}a%&{POuFPu_0Jwq#pUs41@I3N0aUsfN={m(q<{ z4Xr~d5KRf-nYOmG+wPsbR1q=2;v%!3j|t4Ws_>J6z0I47;J&(*9by^hd#@pwBIvgq zeFJPB-(p3kBHE^RSL(JW3qTdm zQLCr;+*)O$vQMp^lXyLwG2;M82ITiTdM4a@;0sXk_sHC;vgGQ@u(TVMx)(p4k^Wnt zui({l`~LxBLTxnzTRze0;j}g7r`uDUd_Xt{uwMRQKFIo^4Iar3D`rRGz8-eeXV(T7 zE5sm?Ahe*HCp4F9388CMFINEBk1g5Y-7skcq5?s6CImH(pl538Ub2%-xE>CL7uZ;ZpaQDHFKz`S#XRc2B)4R0vv$lM4c52kMY_R&zFfW%^ zuN<_4s%Jj4UtCtxP|A^nkKzX>+eZDykaoCqh_B7wPgnUk{^ z&#iXAsre6c>Z5YBN$QllKDq~ap|Szfi*_%}X^hTMd)u@E<@|Sj<>HS`VU&WqevhcrJ-m1bh@P?TvCdE1v!mi2X zys5T#!y8+pm=RF z;5*93C_;Bs9z}qweD=x@zG~I7lOLxL(OHD=vy+Fc^iB&dUE8jeHV8|H#{t0iFGt#w zgv5sc;xSW!w6u1bN;M^tc6X};(FA|an=R$O4Uy-P2TMMhR8SxnVT3U+vjE}PPAkS<5fh^TQlpQqTfueuSu$_vj?eFU1ygZ zC|}T!5KtOIR%cd{!2=B0Ss^=o`OFh%#&bNSK0rLh`8B>1eNMZ$j8hL=kwUOOw#Oji zo@cxyoLhTt<9cI|p(0O9{OkQG7uQNcn^=5dv+!7o(VD zOlbj0nFHK?Dz`}9n%*!Cgg#sFj;B$kCHPYZPnuR=GhGii2B)z6zKo0~!8fr?C#bG{ zhMPgTZ7X9^5*um>?}ef>)5Ddsj1YD*2+plj(J4l{K{u9Im=Aw1JMLgho{A#g%d2r)Y*k~e-k($jKw%!j3n z=+O?2vA7eh{}n!?;QURbQiT_E+OpY^wo>b=Re z@IlCsu;d;TTGw$HY>yo@r+(w_Srse-oPU|f*6_Xh*YH_4?{sxiY9f58^T=nQyzB5M z4>m0>ib~(SxG*w<$m)Vmzj??G8s17jvUD&!U4C@QV33aV{5M!dRipR%a~4&Z4_pF=3>#L|7HpU2I>-7k}cp!5~ECwwJu%?I$Sjk?GLLB+hH^d`Lnp0i>GZ^r78qMi2$HOZwn_xd2zLq$OXdPFq&Ky^l8IG#fgzk1-YiRAUPmztfFc?ITaJKk^>@#C4ZGUc*v6#4VQPc4NDR_!m-!Xv#hVeCl9_sM0!^PZJ#qq`8=Em{5-`?J{XVPg zRnIU7{R+=582S9X;POOpHY6oE&|L_#D+lfbgXT3O_*wczAo>*`KIio49CqD$$BGEY zEYOiC(_4C51Gx%-(~kA#cpOUk(X{NOz{uE8{kTA_s7zL$vCxw*bt@zS4nFZ}ns)Ml z>P0z8{!y`^e&cgQ#ftjOd1}5?;2y4eF!e%4!8r1C+orMc!zxAEK@o%Cxhudm(!T1; zif3Qn#5_t?I0jMACrk~1R}YRXZp=vxNGu9Zn=&|AmosYB0W8z8BgCZ8-H#QXfdS2p z6^mGzP8Y(j?AKnt9~eDsAPS)CLOfSAt&3l}3<-C3>5PFAeE=s+B^Q@BZYbq#u9 zT>NlZ5;^1sA2c@H4Ga``Bzg-oj}LsYrb%2tKEwC^{?F?|H#**=_G9?)`10_fJ|cR{ z=M2aZxG{P__zHclFJI2%QQc>|?+V=M?I==Bx6=$7DrNxZbGSODC1t`Ct^3uqHu$@dHNevg@mWBI?qB&vdb^mR8rglLE!}tdLi#yg5~cwc<=`KO zszkH-PD2l6xDdh?3dC$7lp$O~DO6h6XwaPP7q698{>SLuV#>e34) zkx}nngVhNMUdEh}rTJ?C36^{?yb$hu<*B!?yz;(2Zh+sH=RSX9&FyoCkE90s1g4GI zf9&s*#e3nN7w^;!It9i<@u-YgA35gp!S0{w4fIaL=h5sLP?NfU;lGqdzW2eb~bI?KU?o>yL1ci3&%e9 z=BI@f!N3(*rYZ`wOwqce;AMvvmqoe&-!IO`7PsWT(3CLVOCt?VHv8s8OlvP|8r?yE zvhBozF`+)@>4#sRzK9w+{)YqSD+^X1xK^Q+x9%RNENPU%C#Xq5wojisJf_C_=M7AY z?o-`A3+B>KAzGxdpD!YxC!x2X&+Phu?!7RB8BA|PGLy=!m*88h?Ag8+rbjMp>^2ar zQDE@#R4Vp{*km=SSP~F;<7-SUY#*rdrOg|`lB_N5rHhXIbg!fmkVo%=z(p+^U%4{z z99%RcAg{$HP8!hALL9vb3c#v~WkaQ(3>q<`bM2t;wV>jy(;sQ)Rc3f;yn=?!DjG_4 zzjSkE+3QQ|LJ0E5Cyv&-8{*-K;}w$={k-+-M}ZeF45Bs5nyv)czh5Y9hLz!ih$hqO z9o!yhZy>wpO+STV(pt8=j&;^5Zqg`4!q4a(dSSImO)7^q;41;ox#|>YxW%!yMvm7P zsu-?Ytf!LRM}%ZjdZ|`ba8`YHSI)3ive@EmRa}0QZ{&MmE@(?t>jp0(i3`;ZEuhZ}?5z8-xt;!w@{(^tTm=h0>a=1edT5N$?yF?&o zhy3aLFytP*ADh0gv~5tEx1TIzpkCcj0#slI)|HCxpP8$yuH>@kZ64~rBP^%avvXhE zyGihQj-b#%IOGK=;7BP%%bXt!|LsvYwd!p-Mb4aWmGK0-$EFN_Ito7LYn@S*>|^i9 zD*>_vAQLWwmR-I{iJ95owEy*|Vy0?!_q&u5=hg zzV6%3w0nmoT?3ow#KA%H;k{;i&?vw8HB}P$^6KLIVCHeqeAgcKdr(n&ZT;_{{T0yu z7ZkqQoCRl3E}k_gY@pH8BO*!XIkRAE*A@``-3Tw0s|x-M-Qiogn+Jj;>#N{fCzZ8EE1m;A=PJkOl@UNh(@l79X z4uO}aT>Wa|^X+Akxv_!?g+)mjYi?ZwzOP&l@lcpGl5pkW;NfQ$BvIv*t<65^&1pmi z*z;ii&cCwkKP$&i+896DT^N_BSDym$;0@rrRV#DPpZBqSYaj^DTL;uJ@mx%G zs{2R!1A3PuLu|2fn}cEm5NovnsREuA;(c$WGAYYLlE==P#9T&HrKCU5=)9-o96P@n z{*_={1j<3+w(|?eUhw0)YgH${xKNb$4?F?yY^%%%qMa9iy-<;oN8Jm}a!m}*EIzZ$ z-gRSPRtGTZt6RE1T8maBA42F&-EpruLC#|;LzOZvMIZM0!1TX0}PrzxIF8reRC+a__s4-*41=?FTj@V zxr3RCnCPi#e&+ar2i^|*U!@|7cE$NHi*NolG<;hzSuWloI9LseC zlMIb9QW4HxT1S0F#;&HI@IwDcE4F2}o`^+i)GC4AvFr5h2d7}yAEj;k)c5~xxqNDU zt~I@`uzKO0yIY>vdjzifsP?7(8->0R@b?of3%>)iz}W9QgBQH8bknDl_Ir5u@}AHScNpD7WrHsWZ3GvjI-hm>}Oh<&w@cZ^8^|KmAXPZ15b@lL7%Fbulj1GzXE{eQ- zKRNt=guMq~lhqeEn)_vSH#=>UHc68--78Jfz4zXe?!EV-El{A8$|!pa$le=dZx9ef z1VqJw14Mp`qNpI`_TBIM(t`f~?>$92klwS`J?C6F7FGHqTsu-o8h#dJyKX?>+E=k`SJ#2+jFN9xO0=MOlPm4V759&{f7lJb z4~`v7?TBu(k#OAn<)WO3;UB5Da`SI(Sil#tA05p}>6=FdymikyQX5V4prG{f2GCVO z@+=p{8x{1G6d5tWY_FJ*#Bs)uOHL{Hqn$_;fnm%2f2}3%L&)HQ$zUYr!v*kb_-SEV ze)N=|ENwy_uCJL{1B}6=UJ!l4$13yHw`<_tvX+V@uQVjR#fj0&TH><9M)%yYjP~Nz zMa`$3*|@)Hcv?&yD4ZpVFrL=F?tb(4!yq@xpL6O}Lugq1%w#01VPbo(Q-Dg+o3eK< zU;@DuEC1;lSlvH{+l`H5KO5=j3vn$}8hik0>hXoG#4bd<6P@S@q>vN%27C>ck)j~W zVwS*Ae&gb?vyOp#0tS65-#u%fL7Y`QTpE_>(i=SEgVGeqU)rp!&?5L36y(Rv1uPSZ z`|_d96;l8Uq=4MVDaPtGU+7c;%dSg6<;?ooo7UWSjB{0SgA3kccjpZ>4OOiTn!e%7 zQD2Z>v}~7?1UlT0D+iaC3&Ux1J3pR3&``b|6kb2Rse3*v@q2i&Q*D<70zI*`W2W?{ z@PDv3a-;yqd+XSJBMyB8&q0;MjRFS`5$I%sO-2Rdb8P%KbfMxlN&yHIg@%eL1Dl<# zD%RQBWIjb6D#9gfnxGrrw=S<)S?m_r!47@7Z9ZQb7#*gv?$DzM*j@;(ZmnO+IJ&EJ z;iZb4TV`Gy>UvPHAoj=C*J6Fj4=~N)I?iC}eE+(=nCZD0Q#mgAZScjrN$_3$2q+X` zHA7jhwmy5yufgAE6h5GkJbY~IjdH&v0v87shoYk}DRdky9fd3a{F`?Z?xTt#Q~6@x1?<7o3Yhve zJor_wwS^ma49+#@T!opB(>lQE719vKJ3XuZR$C7=9yzjh_l5WjxC$oe{{c@iw^D(z zexwcVeF@q>1EGtp*TM9a$8h{h#-18UQ4CmMm=_vnA(g@&j|Oo{&>3%PBlZr4mBWb1 z6phcD)nK~+)6xQ)zd8dRHryAL% zM;=|9eF8+?-MwS^$3<~!r^1J3c53+YROR3oAQkksP2vuh&Y|bTwT64A2h)YH6`H|s zrvpC@JaJ_8KDf5mqop#bHn7+)S(oGKn3{hP%Y1OXqZS?;N@(SKf}VGs{23dX&%ht2 zR?Y>PkLI<_4a~evPDy}QjKAgqb*3fdSWs+^~P>^2%cMAL7@Q} zjApu`ST>fDj`&|mRELSh0py|?Cc+E{ACKtqGzZTJ3>3i2=3M+a9S34_4st{IWr7qR z?;{BBQJK7#CLi+4%R@X2LnYU&bmEc^BSM z1ed0qt?sVAVVN=c=eeybj&r0Okn#&KKj&g6s&s3Q_f`shPJ6S=;y!)#N0cTmy5x{n z|7=Rtti1TutMAb(Q|~xiTikU?PfTmu=HO%-m&DFYw|fT99lN@0`3w)Iew94g!@;w# z6|kaa#r*wlP$8`#{Ab|zo5tR9xpuCv)sr0TJG~`e+}Y^&`pV$({&$_yTS-4g8T*~4 z!#<$c;niy;VczmAh9MM_P>|w%LcQ0vgP_+vD{w!mF(r|kH5(F`W`+i za%@hYfQR}Ay`JJlbi?w-v+=iPn}v+=DI?-fxQMw_WSaq3hfyhjsOa#7TEKQ{-xbvr z78G}h!}IeI`icUi{^53Z=NBgy_gZcD^eO*H6nOzie)#G1H}C{_F69N}c`x%6?+z@S zvn0Lr&@Xg%UMxG&#>@0fQDXa-uE5eWVj6_(f?q%}Xy(EPaEAU42;)f?O?N#=yp#Sr z)fBso_v6qBzzF)0`-5>X4MukY17KUb&{iP^0$`Ok;G5#_EAg&}zl6;lNa?Z}Oqpge zvnD9g6HzN6(beBu5oBe~6hm>Jds*;O_Lktv30lz;X=f<5_zldsw?<7qo{%j z$`BA>+j#LU_U)pjA$7y4g5A5*8=b{C1C5thgQ1uDNlk5ZZ$iR;YDnyyQq}*kXSJ)Z14mT3QezWvZpjY7JS=r8Ee@+(bGu=F zqz%0|ps^5+!9&~OK?&e<=7v>rzq@`7csS*R8hsd-z{$x2@<*U5%zk#^C-B7bxkq+{ z5jB`k5S*6SWfU7n5IN>`q<6jaa=a^qj&mv)kQ2gyZj477c-yoN7&>JPMwuia_IqSX zw8MM6(wBC~*NlPRV6n*d0Pr{EeE3YC2DZ)%3J-T!ri^d1@38S7sJ1BB+7os|UGC7~s~Q6F-w`W4IA$&2g8-t;+88Ds&T zAf%E)`T}GWu*<$_mHye!l17uJHn!{#?_C3!aK2Ubrxv2_2--+MReC^K_N&c-d0_=# zoUDGx{&BIneqRb3*mF6{(})@-On}i;Iy%n?X^)$se+TCpFt{eenHa${lCv}w?woP| zMWtt!1!wtIzq+T(KiIw;L~NQXTJQ;={4(5BA5v}8n9$u{0{{5l#d_+7rmBTBd*6(Z z()5?7eAI=FF@9KE?|Jskg|@I8{=h5qpUIgQR%7|$_u1A`P~{U}i{$G|#3u!^M`lDd z0K=CQ8Q4Q5SD#uC4IX&eL;ZHF@mA|HVLK6^PfzMMz61{tzf_T+*G6@xWlyb%Nt9c^ zm2_%$hd0VW4pFLLKxR7?h$o|dneKB;f+_IO}YI zi8xAQOfGX~X~xX_x*%@Y~|no#;9nkLR^q5|a>I zV;I2Mo0r%UVl;|o|WE_w$Tht+jGhTr;cj@wc0v0yX%fX$S&(O*F`1njAs zK~U=U(`@K92|nl>KZ~&e*#W#Cp6q%dbd5^a5}7NYQ~ni5Bcd2~Lm(L+Zwezj;|PM$ z<#T;a_wfB1FMkf7=RM(cz*zVPs5eP~KZ|E-7UcPdyI95zr$lsC1cp?B*fpUsqlGpx ztxIjXBR!KWHdeL>{&cB54d+{ofCF&?eK!kptv7><*n9lfrp_ypPCHZ)(_awMd>(vQ z88P+VTuZ@}_mM}!M_mbAp3yELT)ZZ5`4G9^qAA6M_8e`A;K$g{FH(Asj>5*iyySUB&iZx5$VTY;OIB+q0cWujz z)F$WQ-vK3mZmtvjQrRtC$6lVH2zcWogAi<1gxx1<1qPq^#`ExbstJ!{xC+2*nHEVK z#90nmDLl^9TZ1w;5wiLgm!i_@;6J+jQqvHo(cGELo9qTfD!pl>(l;XzIiM5of7=Lc zCwmmIIRV&LIBnonWXp1Cd-0CTw`jvaxul%b4xJiIF!tZZ>)zr>`wbkwBT%0VkN$)` zh2=Ks7lCEhS^clopSC6iMn}lkNYdIIT5UEpsM%{9JAJQ7&9}jaS^BfI$B@EldI}Oh zcwN^1WoC)!YYQFE!C5-S+tCal;1EzJoFRgf zinN%BX|R1$yJpXvdZ0{!C?f={g%&}7!r8MfiBGMRn7KL>!@KgZy^%v9&XPmof>o2Z z0LfoXQ{F8>R2mto73iC6A^R_N1~yCO3+bKmrETB7z8-%h4ekxGp-kwa6EzF>k_yIn zL7J$(hk%KJX%ugw5FH~D6(%-k<)W<5Th6P?#hUj0LT{1MWgyd6q+ZA={ZVXL+g%o3 z56XEKem4VWvg1ciT8qU#3afBG2Titr5qzQo8a5C48i?%qHEK0(TZM=ih9p*CxDG-m zYj79auQFTI!(<1ifz}j)0qMoDE@L4$Be`*V)EyB$x zRV|cLpftMOwoA0qyt^bUGvhC0G84`Ku{y^0yW?lU=TP7woFZMpK5H?haMcQMSpS+` z`6DPuX-ee4JMz~b8)!{yz^+V0wIKjAjN*OSLJd&<04z2Z74c$QW$j3J-2&3)PCgAEzSEQuI2H7iK4B*; z&{nfn!wb7yKme$+fR8tSV&AV=ipXpuj0lJ$YiXAWV1ljhhW;xuLh%Xzk zdngi*oPZa%FJyHwpvG-cb~nwcemLG?J0HF9>3F* z9oi4-%6>xB4k)vPU%=-n4%iCII>-qZ9d|1o8E!1x2wyP=*|ApcphUK`P$%<0i^p7# z5&e%L`V;-H$XpT+&N1J1(|ErG6*DY_CTFMKcr2pBoq8W=JzyI7>de+btL?%l4!OzVFWqyDxGaP%UJ0j|~7* z_-Bw?VexkrcU6cZ`~25Df372Fj%@2p1fvFzH@JoX=uMt(fahOY)5dGLuCICl6&M5{Iknn9FX4xmI%-DBl3d{}g4Ys8mu z5ekx)!L2abM?I-nnhGwT4?0j5QP-b*$_9=iBUc!hKM?f|j|HxUF6XxW2sazCeV?%5 zn7;rP;~`VhdV_yLcKAJnLnz9^$!$Qm6q6-+1UBuhl7oue-hyY}TEbFm$LZ}&@Worl zG3X|Z+OPDCTUc6NV$-`{bZiO-KHaAD9&PVu%9E`9dgFad+)FYtdy69&@$iXFQSjQ& z^BOYV*B2?{E8-pCDeQ7mXlc^AIL83RL(Wr`&S%5TFo)`{B5x7TP2_7X@pQ4_8YRva zhBfq=zy+Lv#51*;Squ&rIK6rlwsCUHVT70c*jk1qeJ;fXpL)daP4P!vW%jD^T@pfk zeI+72g{#JUQ-ltD@~u~IAj8-wdSzH@Iu={GaA3<6CVbQz*6wair_)Rez4M;~*+-_G zo-|O(bu^A}c>Nd**q$EqjJB4=gmr&_!Q8S?$z(ufc|?F3q$bDBY$MI7lU_Uh>Mlj; zXcL$L+hDJP+#7L+E<*8M*u*9u1#z`2mr^lYadEnHxD0!PyRifuB1@&?Gi&6|#b7`_ zP@`ozVCO41QCwiGe6KSD?)*GDhg;}FZFH^=&GON!xTf}xL3rtWI552b+1;O$j#^2Fp};9ZB5}fJB8b4 zezSTcE=U}0DNb7lJhvbm%EvyYRnQyA_m(X%{P6)~B8e6TA+g~wm=G!&ITc3CtkWt| zbOk;-T`O!}XqTM7b8eY4f0CM(50Ar5W!aLfPksV{%V@uOT};uMx3+1@^&fP$9B3Wv z4Y1Yn7z?iqcc1R=0ueX9C*&7JRrK$O_Z*!KcTqI5jhlljB2GnIKotQ%$|Z*VF=8z- zS4+3L_WmaQUw_``^nUC1EQZNumuY~NZ91sfbPUigonG~)v)?ZbK=9em;e6VIPRRcB z+(R=Dcgz_JrFHNfCBdeFy6zGE!yj4-^f&a^hnE0iZ5X9s>@KYb(SzJwVt9sv>`W0F zW`gYvcag--0U|IpG*RKDJcC81^;CI#N{{@dW_A<~aC;=He^M~ZGVV=@78H6hir|rr z(~6pn3Ku~nYDn`bcDwQ0fR2&9rgj;5=&#Yw%yngs9K)HG5Myo zKB^2*y$3v9OZ(HpSR86QcHNNc(zwNp1-r2&P@(FD06UL-3 zsXwB&v^T5L_+5s{rw8aAQYLf3;!U$Z`fB@bt7LE3y=POxs9W8hHQE4|~h=fDCjKag@{8CPo}Rl-$F^#F!YHrw*oi^9hm@ zo>?w?Lr)HVZ%8(-j7u)zowaHi2Sebj&~0jGjL|N>%d+ zR0tmb;oD#vU_zsVBJeISS)lN4wsN-%F%5T_Jhy29yvPTEOKovdnH+ZKWzE}KbDsy zm|@}&cHI!K3K;m?ovwx+V=7~OZxAAz5D%fHc*M%l$?Wkp8U&aWTzG};(phsQy#a9O zv$Y)+8K7PPJo4RRWZU0E^65a-B6N6uhig6Mt?39{?Wq`k4M%=yujFA= zgCrnG3B!;6h_0eXRO_GFQb9uhwkRWxU9dHf!(ZpGIIY_YuVo#`*|1EGbIg>w415Cq1-s$#9)YL1aHDE!FEk|fNMFV(%+IP04Rgg9G zy81(Ga_y|3IAd{pIlMCietu)Maf>QMO7y)@Xk%-Q%8{=OCf`FNx*xdsO#%9hiWwHT z>d5e$!zJT$++N|I6WJ2O1mF)pYrT!iPr4?tj7#;u9-3pyX6#xR*?o7W=Tr}yq?Dj^ zQD$o})x;=A$}?iHxo!O`H)FMaCKh%XQe#tRwI*7bAMI2KT(Kbi%BxdNjQ*hV;YD~( ze_0pbiAC)7{|6m9f3Ev-H)_5+O*Ca&Tp2K*Qc3?KxGNPPy^n^D3|n31njN4FY=*nwTK)GL zC+XyfSc~0W84nu8Q|h#vUS?dD(`nyY3x!T zDq#6PiIE^>Lh(QbDBJw}#O#AKBZbQoc+t!@;?zDTyXDCNFc3QSU$XNzK_-18HkDQ% zjm#w;5`<(Bu+1Gap&upv6HV()ws)x z1_K&#D%0p#D>j+l#*e|N+%x;Hoy(_&`Zj$!$3M^2@K)em+Fyv?es9NJDu?mNOE^CN zLtY=^Ul3i@<69qDgv`?Z%JBBG@W~tb+J*V_-KegYUwo%;macO5@v;}!eGTILjoZSP z>TkRcGRgyKd#XHb*&u)wr3l(9wprc~qbr{L$Iq1HP{_y<_6NOr^!ues(Afk>|&`)fh(KdW9u3vZ_$w|@h7lP|+JaUv4vCRPdaPB9F7ZCuB$(pR83C4iXV#2pbLo7UT~wVb>-C5)1Y zZ0on5xap&gU%umw6?96uW^bE|qlf0ODo%SkWoDRgm=E{;tbDpeeQp#EQ8@xM| zHRbhguyQ0}0S<4>*daRK@TLQPk%ZSdRCp_hhDDN5%El{W95SJ@C$7`!eAZNbH#5tP z0oV@kD8Eb$TBM&I_|=125pUsPQ&LBpqz!~}{Y$adl+HAc1ZBIhqZT%PdiA~MyUzjY z9#c+SQE>MldHxnAzH0)XCt%^reeerSauFei{RRZ|O~YM2;faXaI`Jj*rT)9cQXt$2 zU%({?EiFtei{QsNMA2@bjWT9hEanT0wum;&zBJX`%_cRG)(ThXvya(fYcMYICXQdR zH6B0(3b9liz&+o)5D85f!p+@K|Q?)R{YJ+Uk&@8kl+KZK#fPk zLdp=r8OAqzG&@VNvmaYU+I(|ik8KUSy(vUyKA^!^ zcCo;2FbTLN(h}8dx(~zhANU?vfgdZ|?uJA9X<(w^<3V^9byYIs0L$Y76`hmok;8>Zo3Z=sjL z2bVn^fc=?{S-eprepO2Cf!>2cOcf$98@8Y;i+Qq95yJO|Y&_+ZUo?r!WI=1xzq z*Ifnc`uiK_CdJw~`vuynSQ|Z~f~!bau8uvSOAtN8hTC()x(Ftr9)u;761R33f7JmH zcrQj5yTE9u^=wZQumO|9mhX8cxVh$25MU(>%29FH{bQ8nZJV(;m444}WIYb2cL%~% zjz?TXHpLkCTli62eElCvWpMLMG`v%&<3!g|zgWd7s#`Oq$io3h&$JI^gm(qAd;vDN zRlE$OcZ7_<+RxwpdRt}uR`-`pjoT;h&yTHshA0o#Si~nO)vu4wE1wCn&N{w=-PrmX z`1t(l2SEf(rxC7NgtHLe4e{1m2%7vq%>u+Uk`_E(unJh;oiqi$|JmvDU+ZM=k&8BL zTt`1zYj~HFypALv(Linyoh$=sTyBDMi1je5J(H)CPEqka(r54Ttt}Uo%}BEL2F}ZJ z>^&7QQC!j~w~qB6z&83eiYzZhEXkUyDf8|6B7Tg*OA@e%ou#{BG#yfRQ0$SksR?<* z1xm?f&?Xi?1Opv|N=#o7rgK8-wSb3AKAi#1R!3$14H|92;nQi^RUqtid5cNl!ZeJ?TW-S9JT?E3WO@>g&lE-SB5yqiN?Pcb33Fxlhp z=Mb?2b^Hzu&&9B}n`=%;xu)6+Uedg&9=SEqHu-YD_|)Euvsyxj7u=&x&vmbJuS{%w zJ*7QQ0y2|bYy~Ue21W71HOEvxZ~Bv*BVoX3><8jZhku>P#DkOZhS>4ebNtCjykFs@ zgl($1?1_#Q2vdCWX7BWEtE5JF_Jwmj{2Z(&N&TtQ3tZ~m(Aht#J7E)i(YQrZ70og7 zN<6Op8OYAni-|V_J|W%`PQ$B@N_&b5n-E#@18$wj3keH=b3jXW5K}9g;olKDZn7%G z`b4yMK1+9WWJms#9Z3$ZIWY0uXz1LJg2L)%oJgXK^~2x$6rx!FDb)QoX|`dy@YnA( zwk)qUS)BlHmIG#$^5Uwm5gY(VK)An`5#7ZI4r_ykzGWPVt5c%O2AnUevRYwlwGT}C zF?+vNQQq;-f_er&SX$-Ri;dAY`}n=C9&n#_1>`wD-1wS8zD+hZX5@o(KbW*e9G`#5 zm-g*1IRs(xypTeE7~gS(-+Krt^xxLT*=NE!YM@!Hm6u$Z4o{go%Tv`3d5TDm0C4UW zI=NMJ9USUN4POkrLgAsCxga}4KkCLXW<~RAe&0Dszu%X|;^r8EGY4H|X?6$iV^Om_ zZa@BH(?7Gb;h}?=LZR;-e@|@`!R+`(Cx~#Cgi`Z1m_h+pfD?y8Yaf&{j2Yo2kEWYA z%aT2nCGr4EKCt|}UrIA)&e(c36dvInlL6f^*znMu%jV`dfjucHUh*8Dm7ijv$E@Jl zW7k2rQa?)Caik3NATBIZ}jITwk|?+z5_3M{!-Sew2t+fNz<6eB{^u|XH(8xs9xU#WAdL8 zehi(RgLq(#+kv+%IYs_f^njA`H{PqBIMaFteDP(WrxMtoZk;9A?aE)h_N#4`30uv# z7k8lZbW^a!(0Nj9^{>crMaS20NI%6PY~lAv2b|HFC92bR#t94zad; zS#nA|3KvsEUe-3rTCIh(OLOPpC8|&=PnR3`QT?Lfcm~5d%Axszo>J;80Cg+Os2hw~F6G0T8b1$*_~}VLs=&BTM~SYR z%MJ(yOX_^NQPeQF8E$QjREQIglxI9#15B*qz2~~bgQSC^R1Y%l`4#C@4Wg~ncoaB( zLywTt8I+tmp<6g`NabnHd+8bVE2idFqzf$Tq8gH?Tz=0u*exP6?J(em!pkneD?WPX z(8<31sUR@R+Zy=D;K-LKNTxPgT5z0<;Bj~vymZiSBw^S&Hb#9#T}a^>YU#+NBA#OS zksL0CE1oo+Og{qAHrwl5=Tau&->tm0ect)uYgVM| z>9H5|2J|ys$!Q)rj++ILkN;e*kjQ*A+KJnK1CI2D#nV^rVHBTP&MVB1_SoqTYUA=l zR1xlF`6F?WK?T^gyYTm4fw|e)dw<1b9tDRhrFuX9@Zy6#Ooo-W5q!DqQ=qxAz)p)` zcsSNYUqHy*8$TIUQ0M3ws?&N#g?=+N8tLIs~sl&=2^9Z-hBl~cp31E z))|igBXk&8-TCy+$A~zAEjki4;4q)B5zS{6FU1Bp$&uQHRA0E)Q2XxEk^q*2L8} z(mSO7IQZzJ27hJB+F4s0JvFE$s5-{HIH)V+&dePLGF>j`E?+h@Y!#pF{ZMzWPVUE@ zn`@DyX703a4_bNseoO#$(wUBox~Acvx~O$SRuV~2kghIf(u@yp?OJ=W$$wRLb8#H@ z!TVJD_B(wKy_ce;gi}(-@5+d7 z3Z{x&KZBT|VUZq)Pfj0_SrpMlp(BzT8WndChEWQ`WVIzAuG#2&E*<%1TDQx6pNtUk z-~pwiz#n`aKJ?XjqZYq%hTol~A7%brvoG@+V13nlc)BfhW$lvqXY1S*?A)_o&Z`+b z27dp1<@^Y%?VX&PM)@BswsZ^yyGlYcuIHT&l{!Vb`%Gd+W-Ph4C%ddVta;9yDj>}r zNvU{0D4MH@*MGm}W24yxTXs|)Bxl;H#$M2_(z{sPzg=XBZ|1 zNX+rAAUbj%hhc&MSxza1>O)cDwBV5l>a_G-%hr$8)@;ZL%}cSJcFxBuVkm(#&G-AB z^=zTjframbK=7*uZW*Ht&kJck*;=x{wixS$uin3;tJbx$zvAXi{^e+i)eJND;7(f` zbC1-m#fdNlPJa#3k6MY6_>vn5`O%~h%Qw*u*nfSonfL|MHVv0r|y^} zw|p>s1p+c#ETKR~#?&nYzQb@&{U^dsfg2rNRJAm z&u17V_}?uV0PH#KBObQC@P*M2w}ABC$-lN;Es5bA3X2U0=%j8vy|{5|S!&q)U80ap zAm;RxkW#3IcaJ>v32eg-UMBTs6yBtp(3|mhy79qAJ|62x6?j1CAlKpP8lD$RwWJ2& zo6YPEW9q~uhm=O7?iw|39Le#~LRxQU6?_2K!XG!Kx*3_}uUdALGIl6wG-;u7ZPTgI zlA%yq^t$#(fDY;g6f*g`HXq0MTLQ=4XlFMsY~+%W(ZVH1;9q}lEk;t~Vb^^a{+`hJ z?v|H**Sc#@-84)0t6W*h3ePriTGwMXbaaNY?_o$KQ2bL8kBR<*x4}B#dFR@*Ii)GR$-+aE z;?I4y{(1LEXm@Q?c~I|ZA5r2t(DcdN8Twmr`|7_}^dLR(gC}W_(1R#KFN8?0X3+c4 z*YQNY1mPuGCz3N;qVojT3H!J92KZy016PYM*nlUnn7Do#|q|2KH={?2sU zpP+vY>AmkFCkfs^qB4k-Y6s2LS zB=bs!pA1J@d^lVM{{p-lH|l(SUDN_MI437C-Ob<5yFawkL+BPr4bU$h#8P|xu}dy} z@b9)=BO3X8qq+m&bk~Q#Xj;VfX=e8IUR&UkcjPWnv3bp!OTZMftltlRySPU*K= z;=wXRb3D$l0C)kA=*aWI?|-G_3wwkO!pqf&8+c!*fQEQLTc&>UKX@skCD>;0qVGLm zg3OK8ib(FZz61A;TpWo4E{CU!fxPp`#TM2NjHH#ot6?)Re!4jCsbhePsBA^VcVRWN zMm~k#rM7>}I?x%6NTTu;w)gAv8UygxoG%5blCDeg6}SKlXLPt-qMj_IYw&cyCyC9D7n&i)r|kr49Q;UN@dejHWalR$H=6s5ddWcyKm+ zeBaCZNJCBt*qPrOX&uBdOLu%*nO# zUY9CtdxY4L>I~X}xCdvVV%;+Nh z|KQK>+h>l3i1&^9odKhdo4#t9@7J1eWWG%9J>cJ#R5t%+e^upR3;jy9%yb~-5FGN7 zkUlXT>CJI^3Can*h<+(zkpQ9IDtyNzE{{5V<&l)DWl``dH6G6J4f2S>Ug1W#6+Z0m zuw9TJP#r2#ttbh*|4`ZUp$}jkuY@n3Xm3w*5=u(GSv(2U3}2zmysp0nyMipsf(F#0I2=$vYXqh^Q*ua;N+y06y$Ye!#~UCt>OKQ!xsxL(3_FX4I*|6*b_ks@gO@> zj;SVmH~arn_yj};kXlIwDttC!vhel*cR+9c{4%_~CNhVw^3c*7l9Q9IXPgoUzlvWR zF(bM%iCG%aY##B!!rDX5PPbauTUw>isPIa3NSUW%e@jZ^&6U;771VPBKHnCtg7>|T zUIk_+6Y~YfsaOm+(>W_-a`KMpQl)K@x317Kv24-p=@pNseJF9i8dhAN+Vc93)y-Re zK0RW?%|dvlj=f;;=tUF-ep{e4ED!j<@j)nHF$vpDB^e_B4@YzpL=n)lGjg_{>FW?L zLc9sHaaf7-M%9J$X79#@xpgX9&cQzT>KDyzO`;>u9x>&L-r z+5#=h0teWo^Ko8bbq^4)zPzr#yQd<+Z3xiTf;+%jr4bd8Ok1>^_p{R+H^HF01@32L zNVc-+?a0q$8EWM(=;siQp2XBW!3!4tfSZFojmQRsMBQFtm?pu!D~m$(lHl4>5dlv$ zo~X^kwgA|_2Y$bAwHIF!M^1L0am_j)foSzXdK? z9V1=EQ7%@JO!eZstG}Mv4z>X`Wem)n(P;V$0T-?V0Z0dQcnx1clAMSK5lm!of21E1HeYPCCRbalRE&HC`f*3UBsPB#YBt}dk7GCDJdPhMQgfzPqArmHaicMnx=(G*5-ZB^2LFu-2?a7eK9xJiM#^3Rz<+LU2w(z9f*)SH`%y zI=s6A5sWDPD^vJC&3iMhZMu*XUBB3cr6}1)eaF7* z+pNRzSvadMyxHut>b>jVs4NVp@gCuoD`!MIg@ zLmd=i5iL{%;`qv6()}{%`1kDq3LZ&Ui;1aUN7n?j1#M&32K9#C9L`_s#2P6+6J|Cm z?~u2gQ%0x9EV%V*S<$zFibpq}2Bd35GZxs0da(88iB*BxwC@Lt9xW_i1+{-4ZR0dqT=g~adEtRYOC@NYg;g)R4YA=I}Hh)`az9X^=tO5)$IEZA}&ydgH zdu=o_^shlUX~aq=A&NLu3|k=M%M2Sf@EW-xdnTN0Fu>yBGhq2RCy#d~4H&6xioIvg zkaG{uSP7Kyepu4X)H3sicJF&BzQP*M1xx(+AFL@#1;1^{SAb*jlE#{*pX-XeN*75a zOP5xkx|Lr!zhP>&T~#0ehUa04R!4jzILTJL#~Alg*eyohN8f~Mtf%$7cldsQhqJCRX>xEgEu=Kg zv@oQF7IJ;bmkEl)U!}M!G^>1{aYsH5wO+ifue`w}MQHl|a$3%2_~)e+8{DO$xM@4> z_*ET+fcE+1oYv+{-D`UhKExK~+_VZEwjg?=o((STrjOQMxjtXi5 zL32R_#>VGbe}{)?>**E9K9>@@J7erQbs_aGMTl>}CnFt{*a-P=Sr-k1ibpSO#1)X* zojqwloxkx&Y=qnci)wB;vv4$gs_t-wN&00Fcq2oS*eMg3b;9f+m5W2cq}(FV1TW-c zjG$l-(pI>QJ*B47y(nU$f=Rp=f)khsr3ll8j; zv-G}?JZa}wruaTtb2_{Q`$XQ0(LOHHHb!+iuzBg&>2^(=tF1hXskD0XQ=H1F4Yq(8 z0s5arhF-QUV=u5n)EmSrL&%)74N^xKQI<9YkY8amuQFehMTXV0mN&kqaScpfmm1(C zV?|>xGJW8SEh$ShcK!`HEkz)AZp28vh}(wahH`gm6+NE9Ctj&W;y@=+)9UczEZ%@h z!yC|%aO2?!6;u|$U+*5u+}QiW(mt*)_|?Wr)o-!yqu6q4Q9o2<9b0P3W9MTw60e4g z^Rd=)W%8%`U-l>Vg);o~A9NG@l>fs1q28vj5%(xu^5J4SKGA?DI_?1F7(AhJMQWk+ z^jVl_yr405;KHPH(}A==%K%OowsxJGoeI}q=r|VbGAXh429{x8e7Sgtq>~0-!u*gf z$k0z#;j8$(wZtMqhJ1YWhMF&DQRNt0uF;-mrB$?h2#sX4xL`$_l}ml$`~%T;k?Tij z@;w2QLcGP6HevMk!4Ko^t`ng(f_XqQzy8 zZR+9_Y!#dwx?8h2D`tnnNnx+3b=6e4?Q=>jnhNAMOMEBCkEnzkJ3shC*4`rUNTmo> zkaX~Zr>U8Ur+DKQi!N7?AwOcEaNIV$CAxehx=3<4)J)hO3^Wq&?wAgTpfa<{ypq}R zJW;AeOviPfGh0Vzlz>gp^x0+bV0-u3X#EX$_Xv4#UJIXNUWI+zpow>ts4{6P`8U7& z*3`k*1f7D$UVy*oxfCOuBOG!yqJu_6OzdiKUoYevT6l;ocSmq~oO4ti$2`>Dd1|I6 z#=C-H5+Y4%E3Tz0e4J8)3%bHzeGZZ@$4j}rfiTVoh2n7HCg|>V)F``OT9c?E{tyBaMTdPFr*<{)p z=LThPnORkC@d!cg=#CpcXMT22ucf=6>nVuh1)HbTP3;yeWJy4vMJ))B#^omc;OZG6 z56MNuH><|Jt=A^F7>E!5+_hZIkPZcT+nijjuy>F1qqL`Zt@9ja0_?p9B*eY*-Poqg{Sz%8m5MdW@s3rVjOlb*k>bc5%7gexQ z(S~tN$)D?i;;C<`9};x}qNRc@XTSA9g_9lsPw^i^P1|9TZ~kmvy5hmSP-PT%G`xoU zyrmZd)MT$z zyyq2E{U^2-ro%ZG_5;VL%+$|7N~Y&K$sr}CT#MNGIn8j;+7px16Z}N^8Fmi&dkJZ6 z-w3LP{l=7NiLeaRl&ed)ouMuVCwEtHBTC|9d~BkZ&YE7+j0M020{>`Hnx|VI&yv*# z$}T9KLSwv(Di&5RZ0&19=QN_Y!WQ{iXJR9TglcC0#_7(o74Lcu=h;rK0RP-6|8TakwQT~}H{OKC($=2!H%7sUTv$2H(--4v_Ulr^_eg#{dMbIs{ynxRj~A zm81dV5z&d3UY6FJ;%e=2rD}`q^-el1InmZ*L#Ije=aa3kcU@b`mX)~%wVmku&Z5p<2^-4^%8^ zgl;lva-yNHIRMek0>w$V59cEpAO`PA1a^^x$zeOzrMTyv^?&QwYkkoMbfzUaf+1*VgF^zkYjR0F|lyT5ll`D0xhog9BG_p!3!w2s1rUW*RDE1Kd$z*6wEZ3nTvn~)KXNFG*2_5Jz z%w)KK6}$|mgDJqj_%~k%8?jt2G&h%Mf3H7T7#UG`_peRiY;)Hc0#{2<+3R<=?mBzx z=tTg`O?#GscTo5c0A?2y$Y8HRWFKDk-Y>hM>&n|JB3abc#=zAB27+0aBH;~~3NHq4 zo{+bE#3yTHwcLppw51dl#R-gWE+zRyY+k2uSeQz{W-+-0llW|+iT5prV26Mc7=ZKP zb^QiwBO`uvsECtgZDdb24gID!tn1NXj_^?eRK1iq)=4ExN{KV}vU z)N836GxVv$t1h4hD}c~{KU@y$cVpq7uD+J?>Td@XP4`+G=^}Tf8N17IF{9A&*J9{Y zVkRe&5{G0gkAi?F_F?PZk}(0v0C#|Xxc~&Zl~J1*qU>j{X5)G__%yKALxx$G^r?DOkJ&>L>AB(*$z?JSR8j#IehY>tF`p zDHQtsGTBq8tlK@ApU1PXv4nBPX6Cf#_HO!Hqn=`Gm{t{9N4*>5rV4xQ9_{2t@{l%) zXrM-V7D((T;NhKI#GCE^L6w}XCUj8!wi0^tnG;CAtzx5c)nL>7ULCNDjfLN-ZOWbG z`Vo7-WTl9k>}gN4k|s>jI>28Y{r#bgeTmDz!l8bnR1PJFH^baF$XG|Sj1($D*KWph zEE468QfK`~bKJ$&;HTGKF^&p<>X)G&DncHSE^R})q@e^*qAAISU5B>+zdFTd$-IMz zeQ?CH%z#iVD$$971X(7a5DLc9(YL9Ex!e?ZzIR;9N*@OiT4rT#X6yZ;?nGfED1T5D zYHyF_$l;j4+1yP!n^CV*!{}|g6~-t{xSbmx`>huzwCaXAI^CY zlC4x??-&DT*VlhOu;Pj3H&P>mvFGqQEP=OT_EUwI@Vfw9|9+&0uo$#xB7Q+%W8WfP ziikM^Z{Gi5F1>lUdF1_zP1s&hn-#Gn90&{{J~Kid z4#+ip=+CLUa zveZFMerah%1ypvVJFO&2z)CpsYQ48}z#Z!LSe4T&OLmHrN@W!@VW)l~W^>{w>69W0 zMPZF!gLlb)&;H!i4 zecYzn>$fB19HhK#ZFjH`crC(rnTRqL13@!br_#@3 zf6PI@5)xEa#zr)=aBxx$=fo(+bs?E!nt+G_WnhuxB;N$3tr3kbOtx*ju1}^}17D@{ zt3i;7RnYl=7f18SGghUruwf* z+x+SPjt#;Pi;_EKDs{tyuR^TYA`2@_NAnEJe@CBcd4_b%u??&d z8WRu0<6B@bT*g&6pahsoAO}navL^@aW#-|2(AGpKG=XBje1!tem%E0uUDe6<_F#{| z81#ZZV?H=3w-JW;6>M?1=*#wO)8%qzQfFp`-l$Viw3SOQ#?8?v>zqi>kZIj4Y3l@C zXH;a|2qGaJm(v4+KcWwGZ0F<^>!*R7ycP(|`f3-}SC#^az?sD37JyY0v7t)dUOI?n z4hjc@4{zg{0BA*1(Ixyb1*TxdapLIFElU<>u$fs)7jHgtR9J(?v2AE9v{7SWPDe6? zKsy9y9qjz>u%7v|!`5(^c0ZDZK0|fn_>0#c%x(^z9{l%c6M+YRUt<2fa4h%xo+fyo zFm@PTJzkxBt`!I0B88hQE5YpJ$xXl@-LN%g+3(i2MA?#NO)@z{6H|d50j-ZI{Zh!K zy$OAE&U(gf|MJg6kCYUMe0CfoQK=0zXuo$(Xo zi6!*W@urYxOg)hqJJb9JLIjgJ)ME7j5}pB>&y3&9(8>xUHSBDqr+8S<;4}UfQcGv8 zn(3u74omg#_}f1YUhb8D=}h0yXj->Y9T#(*tn<^v5R%M9!;s4GGW=eFV#nnSe_xXrJ*pOsp>uW{EPXA!jFWBo&7IVNitJiF8R+%Y+1G(#lo1Lai>>AbZPjEB4QjQ0r(l zm8Md)K<*g7KAu*Ao~kvVv6c09W;M2*a!+`giRNK5Qr=N2lQFXf+ffegTBD(b4Fjh} zfQ6ZIv6awEd(_dX+}qvP-rL0^wd2Dbw3kU<#pf`*3D~h5L3E_8V9=c$LBEOeh0THdpDg^7g= z{Od8=JvvI=-RVJ{D`oD?>{NRnqcLDCx{WHRvh!9g{n`W^~**3QesL(`{qNadXbI1ib`(NIo(jWkyBP zI&Ngn8=Y;C`p`Nb?iklhE2)7yndSJ@9Etf4)@jRj9zJ=hE7qu!TZx2@cfh$Hk-nY1(%Y6oEx8GqBQ+x%X1@B~xQY0FfV)R=`txCnNQ0l6K z(N>9{a}PDVQ2HvovC&g@I%S1pp>0rZ>M67KLG@_6l({Pkfm+!;xzJ5+=WY~EL)mC< zzYwEN6I21=)Cg6wtAnRD)shi9C9*86R`fPv`BjB>ynrgIP8)7f#!f*eD}sVe_TwAQ zKJ?+@si3Zx%xCmDtS=+E85f0|{l+eiUE*o6%SsnGllPcA{ro{=oSzffIAGV?RqN z-NdqSaTL8cp<+Cm9U2ht=SsCnHQI33AT@jcd(dZ1&8TmTZ}Q75AJ-!t^E$!vfN&I! zd%gM2n%HiWh7Mvi$M9sIiQ{C6K0>N@z-C;i;CG{FljmfhH-jDe>i&W8{qL$&adFuD z2v<+u^U?Kdg=jNK|Jqnnx}jYz&nl(cy9B7Lqh*A#iTKNJ7#MFhQcdQMgZgoDJMPXv8o8d~+K;&+Qs~XeE1^Zn(zVnLOoFids9i${6 zDi|zlIxh8?OJaAHiX3n($W&`tSKrvp-_Gn|q4HdYu0BUMKo932;p-)mJLSfx)Q;qE z`07?B{1qrXRyt{Vv8$`@5`qtbd4Bv(?+M3d_Z!pPXBI_+-%w;RxDmc0YljzbyYMik zQ@CjlnCu~vJW*$EZo7offidY-2_{?|H^NmRCT*9AmXtv)#{~6 zA14(WrBcNY?#mvQACMN^X8thrEE^MIg%>c8HfKnvReu157)pj<4&#oJsF#YRnU7ftp1zei_>RY(Do*ySq-fytwCR- ztfnS7u}hsk90jC?ho&=iL=&ZkhjH>H5KxqGs=!*H!2BFx>KJAU3Z(x9UMGs5KItTr zcEbtB2c)I->z9@`K=&^whwJqkO=MI(2O#rx+5mi6|Nb2TM&mFlv>wBk*~CQav-D9p zQJwMBl8{*Tllagu&PEB)VCp3Ymj?Uv2EI4n8^~xUE;)jm1CKe2JBR1sGePJ420Xn` zAIZ&Frd|>V38d2R&f{POi=CtVL>$pm>fuq58jW6$A%nWY+i1KNg0csUJ2!LmN;G+#rHmVo4ZXe|6A69mg3r&(Xq~&Dn z|4HbABW8aJLrs#GZR4I*>ch$4Iv2AHetf|!gKzzpa>smwrSZcL-;&2B6i(z3DuRM) z`${rR-%?93OFiPm)2vf4J^mkb3Xl8$2c2R@;@>JIEzAsaT3A@OFEIk!Y)gSXw%Vlk zLAZc8Uf4_n=VyuWSD)@v63%)!Q29TD0bP3h7+rxV_~VnSu|pN==*^oAYH!1~ZKxzU z_Cxv{X42@t{=(MTs`KPvcra=ZlDn3|^y1dmVl=U2VeD{tIAkR9Bru=}%zjKaSFG23 zxvcAOhUARvB>zD!XFUg#vy(8~LCHCPCQ?xc?t=#Xd27#PHTu{@q_W{K_v%MQ=$8-+Oa<`V* z1?18z(!*<*QJv3PD2LgRwaBdo!)@|$W?&eJcN%5ZyHHid9`NhG4bBww8DMm^N$ZVs?Y+C&8TPkyu3y&{mz7C54!nm%caU5hLP^U?5?+% zi|4H#n72rbmeYOSs37xE$r*^r&xkT@TJheDC$}G@ZU^Y%;H)g;%7TufXUlUVA!MI!PdS zTWL~qvIqF9)f2O$RRQJwqbf4yw;T1oz8=ri>Z<6#X$4^=wuLamLnyXjziCRSOlk?$ z8io&wsz`533rkLMaERe@LtoN9!rq+6OZF~^M~UO}a6To_6}a$4%5B)u5^@5J8O4XD z)#?|!jehzz^w|cr`p*zacDgaxJ>p>=E%{mZGE zRJQL9`^^8)HTpNYCIN61qUbiTJYVuV&~N{QmY5GJ%)3+=CQjFUtip-~Ehj6#xLfVO zBDFg9CTEn`k6aGPcWRBCY5@%#9b+_(L4l{vwm>=gFZ-y8TEvbDOQYP=!^7Cea0~yF zfpT|g()l=w`4hve#L;ZH`CNnFoC*dLfTkclinFkCE=1>gN%CPj^QlUey1^U0a@;OO z7aekC7|;dkA~ARgx^Brvt1m`dGR`Q}ULzCPqtEQAbv_=Lper-koxXn54t1R|o3V6C zW*@*;VY)cEr^YCi%UKJd$kvydrV0yxhhSTZt2Jb+H}Y9uk>| zRyn9;vafsC(Qo4l>(PM!z&I6R-(Vl&$7Ao}!eb8~o>Ya!k6464grab`cIqu!;4gD9 zEuwMslta${%%=yW(m~AC2ADD*$Qr#xhqs+1vNOX4>ex-v0l^=zr=;}3vds)4PLj&Y zS1fw3e`LNIEmEm6*9O1SB^cp^(ch~sv|yIx`s68Lltz=@7O(&mgHPmJXeY@-(MQe6 zw#T4hVx|ooCDvTB`PD1^0G#*BD1=rlaN4X`#%^ zi1gxhQ-^MUKqNQ*PGxwL%MwZz$HJiCjg!Y3+$*y>Vg*wq_=9{%`AUT4hTx z`?$=Hc)iyv(DLAe!w@PPQ5J4%H!34C63voilVzW;DY767eY=~DXWcHgXVz*xpbBNA z`MbFI;pJVC)%j)Z)DzJ?dp3p8sbOR308On?rw~~R zl)t}gl6gJpOBg?IZ0mLWZiX00KS^%<9IfQLyD9j+cY{w&4S~WyyvF@TTS+XCj z2fddN#2#8o-nn0EO~ubdA9)EW3wIqYr(=Cs8z0J%+P;`Qy@X13bk@=X?QB^1QAayz z(2+PBd+MJbeHbSV7>#PFLuZH5(Vok9l65^2>4ZHw4vXXkj3n)9Ng4oOHOHsf2uapa zq^X91q^gL7nAfoL6wc)!=_8!^d=)3Yc2*b+3~h;~#_a7AJ;dF`2Le4@Y!$DQ>WU`H zi_ov3qu=w(`{x*ZSdxyO{{pW^M&*FS&Uksna#sR6~)G|T5vCtEgJR?nS~80raC zhRy}9KJkk9@4Q!H9q5VioQ?4$@qGoUV+|+iq6D!wm2~Pz{lAeGiMb-FNV1h_;Hw3d z_zV86R_-JwomExL%YMD5poS@cJ9w{q^$H8E*TBq>L76p6&>E9@RT@ zgj442iBVw*yAyY;c(3uMuNH*wF0mIovhDWHl;~7~lbfV?9Na?(H^dVooEuUkN*!6V{gKc$tZJTD)s0E$Ws=G|F0)hM`K-2?Ru{YuUqSCvt=lV0k|WWTo@7;+YdRBO_)T+(K$r`%nI9Bh>fn zH#$I_Ub>=h-^`N8R&iJ^>RR_0-Cup?t1CzW>!28{pk>?My`--WS=)5HwxL|tbW);9 ziu6=EvO|cM%-rSA)ZCS4P_=@T<|`F)hK|&lGzGucBPNTOjwYjTm!PPWNe+&V>fg7f z-AazH+v8lfP3m@W`PYkjYQ{GEphqvRgAn?@0=oqC{ok+UTA&QW^X(DLS z+C*Y}#tLh=3OT;%rX4tO&Gfr>oj6>G5g>hlBb>OjJb|fSio~==GWnZS5iW+{7D_b8 zn7NtI=r8X{`6rgFG*mwyv!OJ5LXj#pYFMjk`szpX z`rRvxhCW}GD{2R^`RL*7_ZGETTDPxOMR9A)G!08=vz)kX zLTT!%1S@H1EC{|lhvJXlj*-t>(4?@l9sd2eUEd%1>jFAcpc#u+?fxXKxTbXAk+G`T zpR72va~U)p23VC|SL8huO|GR2EVBnLD-ibX-)mOEq_kk`o)ML3Q_I7}lZQ{fTsgq^ zs3LY;4rST7=1cTh&%q6|XHc_h2ZfAWp5_;JEIPE!Y3b^vr$_WFhKDIBff9{p;))sR z+`O2)u18`qrb&dLlB*~YDHS>mznpplcdR1jN_%B;-UJ%>T2C=wbcVl@lTrS70%IQG zXd=Oz#yTR7Q}kjndiV>vgO+!qZ(t5MZf#SJvJQ{;ja3Ke3zizrHEx_aCCM$)aCfHR82|^SpRyF@2al_gm;$2I0BYpg7tbb6bR){#z@&PnKf$O;*Xc5TS&iC(9~ zR&1h&3~C*lIVAeYRQB5H$Dawzd?I=W)1=CD_9PUE&82o+MFlBOci>gEgtW{Sceipj zGZdG<(@h5r*O^0RnvcTuPvYijh~Amp{~WriOfR2oC>mCA^@l9?od`{<9C~wZ{~ZDQ zA6~7hh_z8~U$J$}iK+?JBZp#MSS%{qtbyITjaL>|*clJqpRhi2bNk7dxzlcdFI?C? ztFGT-iTA=xePwjWK%@9)0UiF|%{UBgj`8Lt?V+8ZkYi4BKy`` z!TP-!UmaL_7CoC77atH`ZW~FhpLin2A}BI>R9x>bcTCN_Uk#UE=#wWxu zeEp>(Vevs$_UXtFtwW=G?yo5xAG2fp#>5b3|KLeGmpio1T%H+Q2!kJOJmo-Dr zYWBiw?8Q}AI`M6IRQyZ^tke`dcAQM>q`{=<-?4j}-i#gBHHzRP<&hI`-v|Tt?3~>8 z-P8*W`@v!uZQF!yorI8+OID?UU06Txv8$iAN1gN2RYXloNea5SGENCd$ zTr?M*xiRZzDYInHM-|&Enky!(DY3UH+p+w}?|uCqY-L+gM@4(0&Ww4r-!E)gob|!N z=Abgmo{5dqHlf?wN{zAb_sd;B3HY^pB>WWPmn$gadKN^=984qRxuLR7Jj6VQYKiia zIIAN`Ex&`D%vDiHWu!|9_CvfW8F9bJSv~f94Uy*dL9NrX5^U_zZ@Dvcpo}hF(qmR>+}L36JWhr!yB;y8F#e?PG2hcC%6udx;KnZU zMg0*@%p2EC&yC?Ud7xZRowo)M%9v9vzwP_HI{#k5V3757Kjh^<0NP5nxq2dY%cK_9 zP5l!~B^r@~TiL?Q!+{0I)?B-``BIGY{Imf*ZKy@Nw~Q+2F!Yb~*M`>Qb_tH<%f^ZS z*t_Z5T>F;X8OoIWq{<+F$L+Coy-yGCT|VS^zn+RU+K}0Hd|$NZU5_lLU|hzKsvH75 zXo*<@>299XL(^j@#ThQGuL41vkJrvld?y!{6)~x&<}ryWojV$x!9Hx+l8f| z=cOw|r9T%(rX*MF_sIq7!pIwju%}-RbKiF=vr=v~#M*X2WRu*Xb4i5lBK)k=} z$V_m~$}SA?vJ^Qkb+cyz(Sw?}*(cG_>j~rS7+7E*H79TlOf25=v^fp2>l6Eaiq2dQ z?(GhPF376(6yLizY*9mEP@ynoI3kub!HW5$B)PS6w<sY8F#?)?{{ z@<@pV>YU$4TMx3lx-?4*n@HtH&dHg++^m*wM1;n~3d#w=cv1=_4&Czp-zh2Q9Co?P zk?*bYW;@luQ!?@mA+d9N-r@6bboOtDk&f8QVTwiKoSAESF1P8~R`gD8V#Og{9#~&* ztDh1i1L|U?zm-y9plLVvF+teIln0etqp5pBWlaz;N>St^lUU0VtC`-{|6XxD4BfkD zUF`_jpFFJoJ77e5D_x$ zB!-*41gug-gHb)YF=I=}Co|)Q_-nKv0DpJ^`cvppi4U4?ToEm@h^xIeameePoOkB;W!Q%(Uy z7<>f09q09d51;l-vc(u2o>=}6JS=aDUEYN$fkO`X=iwMBZPdKLw7*A}4+)BwhDxN9 z?Rxpy29`}jQ%_`!-5TKU8RR^+G1_R;zjCvUwNOZx6b*b&JaAC&Ue;EBDD=5L?$8)V zMd0VWAFR_Q4Y4c8pSWM@PDT2-_Y5eQwCh?}+}IyNVuz?EsSLIZfF}iFg;L^eXt{`5 zeUN_O3J?r7j)TLs)j}7vs;Fn|U}4UIcmp^*%hm@C&97o-f5ESg{<=6Dn*RM7@ zYpCY-8(?`8UY-4XPw!i_=S8ctEiC-3(5kbFX4&2gZ6ibNbFJ4O z{_6U1m~4vC_F}yH2!?PTzSzs$M#?nJj3n!dO*6#!5sh3yCq|F7Q=r}iB#+@R*-5%qF$q-ecfUb{QFzGp$(SGq`H)JN+{RQTK#Cs$&-0QG>*+K z!dV~cQZ~ib6wS6NYN=m#ZHF>zZQChG>1*Ykyw_*lx{Ax}I`5q|llB%ba+3P&Cq*8ivY=w{aiWsjn5?W7it>+*g(YU6=EjV9Bwu+J~@!gPu=^}ykTfp3CC zXrth~1i3Ts4w2C{e3x#q$Q+MzmXl&84o3|Q2cEsy1NPL_(xu~%(u>idhwYc^C$68H zS`N~br6b>;z4_bA=n>kDN?;+lt%lD%`zSS)^nvwX?Rz{h3q+ayde5ecPpz(R^wk8F z6-Sh=^GGS~e;ED#&ODfkBXC!k_4!zIl+#IK?9=SS{%8rA$%^^U1iG3#i8cowB<>&* zOh6|w_`jnw9Go$n7pHwQf`#i?B)0?RSS`A|D+gT-3p3K1J3DKhSZE4Hdllq(4J&w3 z@qBK3ZlB0eTh_P1xDTo!*FR%T0oV;HLw}%u+)G=Or9Y*CrpNefFXdcSLZ;X5%5ZC& z9Uqr?s)Ewp(zhACi$c@46xXShiX|g14eMJK^kqW&KwC}u($UHKIkqyd&^4Q^l6EGR=h4BZNC|-5u1HYZr{tu>0dFS zt4QUe`i~(uoc-_-lTAN^K7k7x@fCcR8e&x6jvTSXC4xc*LO!vLC?jG(P4#NT)4`Vu zkvJqY%(Z`8q^fANqUi4%AI(`N{C+~g5HANu+x=Cp^8y~}{UWmF=Ps;ULQ$8q8l19r zFFOpm#gg&ha*$02!L%8}YERdKeTC5)EbP-2iOVuSps10Ic6hS2Na*D4CGpk8dZZ6~ z_|CMx^sc_^EvdezBtqN#w69^m+&w%+R}fdfpfbh1pC%+%np(VbNbet}_21Ze_x%Bd z6Vk`#m98w-O&shVnV7CXN2d=C>&fpCS}ee{DiSmbW)k@my-g(E^oZ2FROnVR-=uLAb`iK5nWeZ08dsSZMZKT&))up+O) zEARS=Llw1wXS^NO8mfCVqOE!1Ihvm*1_tC_*Vh@B7yL0fW^Q4Fx)5|1zn>B69+}Wo zG4E&47T9Q|o(T@RWdq-{90(5H34^u%9=(!gr8Lng-$?TtK+;1~z(zg2Fl0wjCMxbx zyP)^t^Yk2LK|rEsR>S2@OQU2{$9qNnP#Phg^ru4)sDcZ|VUcy|<&*AuriH6@QHqR) zvtMt>_t0Kt3>Dg|YPS^+OAIv5680)MIUc-!jzCd@uJZYx zWoNg|LsRNq<9kJH<^1TUSf&J}jR;ctmxt8PMxw<@&US$Wlq(%hP_2l8QoIw9+``^wU9g7to#0 z(XCFUZ_Jp@OS8#AU)Ok)$vhF3anqo}Zdkrpwm&L_y%1BO4>!ebdg&xGxEiuBiT@X7&I-o59Dy z8l7psZKc_}9FFa}iM)WBysHfT*48vW4dma`^sbEl*H)ZeUj|1Sj%}MV@Q_>f`poi- zF$${?*EEQN1;^H08Btx`^cgziA67X5>)WcXoAl50Zh?nD!|7Xd!yu73m?9f4T*oA= zgPl2VMS@-0o}yHxPO`V>cH42gA{(4SM;_k1=B70@3I!TeLo$!f(4O-9|x}nDpTh;3B8;Oz6>Km z@s5!*V_fG<$neSM>{>E@{%qz2rg8vRDbKYSz=&de@#Eh#+aefqd*@_mfezbeda!qB z&&~aU4t~ev8sZm$gU_?ILjye|iq^9J%Zk?Ao*X`)fOaTD16sW!eM{FQNUTEOr7X+R zu5?XZlcl?8gwiWmo7owh2W&?OKkudwhNTeW>LPF_*pjwbS}AyOs>_Mnr6A27fR-HT zmD=C}QQx9`&n10)r#p%)*DRF=-hs4pqXxp#x#8B6(8Vr6<;WBvO<9XAs)svy7Ql}X zf(CIumKVyQ#$lXEUA~&4@n2GYZ<=Ifak%n{imr~J>23vtt^ZZW>-=> z?dd~rOq(SM*p}Nf&qYQZLRD-mbrN=oL`tZTPk{L5-qtoU57bc;nljkZ3iy62eNYzt zKE^YQRCf#Cltr2}a5#TdrV}wLAI_mS@w!aTwTzW%i62Bb{{79f4$P>YUpc-`?U?9z z-B{hAva&^;PBW~$R(&yi<%d>IwxG%$!hY!HJ2+wZsLj2N-XViy(~^dJ*tzO-Vf`bv z74)z;S7RUK18jI~kE(fLlu+mZDo^%0%>2bQA`QM27h!riV|Zs{nb4C84zdWO3kKIb zf#ZC0|DzD#>m&`N3Ex{nf+G}qc0k_&_Vo|MRSmv$Zpb3U)5`L$?Q#LtwHwW$ z!twhoNr#Cy@1xaGGIPQT_g3yG*QB}Z$ZMNI@N4_*T;<}LGBm)+55GF)^pFZ4ONk+r zv2^Wg8Do4@tY6?3CkvO9Dtphop*$Zscim(n@VXed zK29nw+mmbN=c6+(gkEVrP&VjsZ0BSTGQLBuJ_1uA1e-&y`x6CJS(K}XWkbJ^*z*I) zniN82qg0wVYTpvqsY*D|C(uJ>6JQf)h3>odw0E@ay{w@$0d9vr_py~^rbnbSJBOK8 z=7B3!XGD9O`!|NEEgFgjCa={CzZaKg%+6gocSgidME=NH4aIP)v6K^5<`ruM=Wdvf zzxfc9FqJ;RF2J$S-!;vh@&6^ywXcm;LTz4P3Ru?O^*7F>4%$ko2N5en+^Ukc1=_h% zwF#ZO(lz$haqA7S{Vh%VJU4|uV0la8_7?GzG3sXK<;i6*t(YWI&NuZW3~XLR>^tCv zBpgHub41B@ndqnRks2FcV@!CP-I!5SNrY=aOSP%1PkXxGUE=fwLiuo7|WokuZv8s5}9Fj(D}Rp)sFH6K32krQlnzLdPLG; za~yQ*l7)F9cWZ|#44^~5G%4g`;EFum^ZhW}{}eW=ol*y5V8o$JOL$xZZ7*RQ;faSY z1|}k-3PU26WL2G6mrZ0qGS6f?rec^R+%$`B+o3l|IP+{a6g6Ja65`o&yvlXyd~0q(ZwenfI!YckxPnQBnG1Ui*QmZMJ&?W=)M_Y!Lxn~>@y4D`z$ zIBtZytwiOSsgaMnlCvbk&MP7a)y1Tmb$Skc1=E7dS0>e1G}l;)sP81;^*0uO?nr|7 zRssuMM`}*@JJPzVE@#Cv8_?#Vz*tYKJi0E2TE^ZVwgWx;8S0xW2GjuSADbSUIyc6` z7Q9iGSDqiheV;IX57XYX2A)JWn|5SFNch>Ufq1`33||*$V_PI>M*P$*S!(A@b%+GK z*319e5x2^Jc-$+szK;|=i7L;OTPt8kf=2oxcf(iDQrfaMM{)Uj*=tQlQ{Sl{#*F*U!f zs->#H_H^;U%*6hNpvIvst?TBEYV)KWM~|DM3e2BcpCUu!Dks+FP9-hfh+ju-Wwwwx zT?WpZQ+UBTjPZMR>x`m{wEzqB7qbYQ%V&ObV0$h)lelMLK!QPX&8-TTRR6t8u!VsZ@ zjg?arD#r3@Z+%xjDfMOZxnaEgh<)R2(c8)C9D(c{3F{DagNT2$w*R~AO~Snnm%LRUg4`;XGm&b}!+ZkmmRwsD5v zlD-%xbhgDvWZG(L&!mn!o|{)D(*`0-(gdaJPfXhz^hr{&W>AUA{vl?5N@wal>kZtz zg9v_ZB+2?UPeQN;pFWZLLG8sVm1u{vqECpl)1{)IcGir*EC*KyUqh*(k6Z^!oWfNa z@kmtHzOdRpxyO+(T^|=n@e1~rz8G^JqBG0tje|pV#WZ>lTIT2BdJ1CEc$!e zdn^B5;gwllSd23RsxOSI`Q`&xpFihO8{HxjkvhmDVoC5aUw80@S6P?mQ0}1emPwUf zvAU|;zDt7y{Fy}-^$^R3KgsGg%_4Hp@_m^3s$a8jW=a^6W1Ejdb&@1+>Jm#m{PWb@ zJuuMIHfe&Zcluy?dPZHY1Zrz+6N~&B1A2S{)&~dGqYvyeUU~Xg4R$??e)(_#1L;NbhpvY?;YXRIl$hSS{CmeCYBaDSY<|kfesCV`99TXePeMmhSNqMV2%ot1Y+zx z3Y2PENvk13Y7NZMeKXkiX1ohOJZydS8YZBb!lceC)Co3=ud93)-!~86XNRLREzi}? zq$G_|D<#TsuI()8GexEVl8pwXgqydvxb4vVHRu->1;FfovL)Jy36)>{wqbQ+Q`Twp z-HWGX1BK!&w7J63^T@pS?+KI8xd=_ZjR@5bKu+%@XxYEw$Z@ZrqU#B>Raj2+zG-HS zBPZC-YBGt^ft#_-WwB5{pf7eE39foIZrPomm@oeP1a;1v^fAC?I&sQ0mz_tUeEW2u z`vx~%JA{5cKW_anenKI}&zhh7MTtdzAmLKI9F%GaNxBpYSIpmyj-$hn z4MjV_dk?!||9-Go_!0Ha9`tFip~9pgN6=KtvE$3$GX&F4-*OEPwr-{N zZl%_+b;2a}XUdtwdpIWONHgA15fXKj5*wZfY9!0<-%rs84oqNjCQRr!My_@3`jwiF zua%gxHgq@`<@--zl&I;S9~#*N%{@0p=+HxWA1dEF?b_~}AGe-XOyz033&VD)8@31u zL|Bq`Cy>8o3$^MZdw?2#i+#Ef0~bnt!nU!|RKL~cwV|Kj`-I%uV0`E&ooBXE8-z(6 zJxsqBrsCh*aL>h$Bv@NQgfMjrn%o~vUHt@xLiNwgp3ZBup`!%9fTECzR;&0mRB|^d z@za@ApR!|DgC$kGnz`NKkKeJJ8OGa+imr!3KVff-zjyb^ta%NwRuxBf7xWMo^h1Zx z!}*Pm%L6bIdM|2x+%sVJz@|r!nrj9&!_}sN)CP0}Ee`1m!fD%aoH;tAKSI;DKVQCk z_cG+Y41YEAIwRy{S*jFDr#SIc+8 zon`RtvfaCuA;q%YCOjWuJncC=9fYJMKsTb|NWw4SdPa<%z^hv*3H`klMvX5%Q0Th{ zeR%Km(T(&M=6ec;S=46cfnSH(zukjG9k7}{(aUI4P1z}mGIfp=}F^zA+ z0;uFOYh-eUsYMTv!*A4WkS?fh>D9OXQ?z~a{0o2Iq7I`c6DvntZF&Scn7I3=AzvH{ zOPtcXx2x1I2QK4ik-9oRx7W`;!=VuoO zOqej>938$ECS3?JpDiJ8y!1;_7O%*(SSrRE+(-nkg* z;p%C$5Y2oKZld^8&;Vnw%nio6F^c_&+CXh&Kcj*%eaLL!EPTHOFSi5$pqjRzfWt5v z#_mNyR2swm=eD~fKD9ny|^{&O*WtXnA zi_gzqFnM;|$^o9?LEBp|aD8jNT=Nt;4)a} z?Hyg;8{PPzK)buptiyh!XK^sP@-!im&plQW0j3Va*w3YBty{3}WOd=Q-IK?!Lvt2q zCH&Glb433MYp1{tuuX!+NHL`MDs-Tpat!01+Y7_Fo<1UQgT<4qHpoDozuozEk&~z z&ir}Kq|x;##&<(pcEXslkqgGddSFt08&5Asm-@l$NDl5b*lw-Iw07Y5n`1c%&khO+ zy?&j_|Jl-Z{0AZ^yA?4RBiTZ{{2^1&W&$hL43Ny+!QLFv9vD#?-wDb4_gl5MGx|*( zesnvROL+rrhU46I&Zg`BZJDt>hvWPATeh#PDzoSj)2Q)$AF9X$q^l3OELWyREubDx z$FOd|uzrhS{ZHE*w{9JLZ~>LTjT>m;Afc%93Ve)uB70cgkHZl|0eXBN&EE(5_ICUo zhr94AOlz+(Kw$A@s+LF7udkL@pNbkY-S_*7A|4~6jMLH@RDF=lE zz2`pafA1b_xW9@06>i)@zk=fzUw{<*#UD`@SpGa<4cbFr!uRtwnU`}jN>X0TBNSNB zf7>;EOndv%cTS3*w9aiD22$E%BBtG6$!Ie3tp5b0fV_J4Wu%EW_i(()$t9>I|K`ZI z<#OTL6a9*w?VLJ}aN?q@gr`$yHlaOmx@Gkg*anuE2?tlKB$8>Jrpbo-n+R=mvh?s`fGV%@3cy$%J>QT*{YcPOAR>me>^ zqXVZ5L5JHdHXgVi;$=*1`Sv38oo%sjSAjlr`HAnrYH5B-{{Hc8N#0HpYmc}yW42^$ z8|VA603lR?D?hVI$bqwG8#)i_z(7g3%0kMPbbbIF@x}8;0-;!&yh)%}W+K@irYHLu_ z5$=Hh3RS-^`t9dMe{SCSc*-xE$UW2*HU{4pMSVm*&F?vm@8#spY&s)=K7JAXgZ@4O zgHiiMU_f{jt$+dO9k`B7=@#gNV#&RjR|t$^4n`>tB>QOF9<+ETxPuqn-XVdhbOT#T z?IG{V$M4eP>;GjpX+0~a+}Pi-tNoDjA5CqWHi9kZZ3LDIVUaoR^aC7sDnV&Y35(FF zKI~t8&_#Fz<3*=Vfebyxk>?>Qn0S@6U>&y4|8PE>yJ?~eA9nK5naq^U$3>oGOteo3 z{+~h5Y`QpaDSC+hW-q}%U_ELPTBnq%r^nQWW}dz%^9bGe-0#zMjQxcQZ;y@BPk$*) zip@pK^U8d(X$qY|?*0>fvnW7qKy&L?fMc!W!U}HR5wnd%#0?VTx~a+~T%4ug9X(oe z_KJOc%giO{CRzsdpkIA;h_r2dLOOa?t(rFU=27&id$0~_sTD9TIuczU8{phg(fVTC z0G>t|S79UP`#AqQ1_hH(9uY2VTswacx{SS{yAZJh)a*a!KJ9b1uI@VZ&Te$GoCKlA zIy)MuxM884GYIU2emVao2F>X#q4%;2s7&@GHCmYT6#e-W%{N`2{I3|4T%F9Wq!QQ* z=rX;PDMQ~qWseAx1SZ-%6e=-o+}@5uIpQcxv{7NNf*v0ngI-d3=yey`k7mJS=mpll zI__-AEn93lR%Drj2M%jEcwp>l#W3! z4o$Kf+xJ+Q2fB{gGULQ|F8>4#jXOa_e9hxe;466xK2TbM65F`D1U7h$WezBJ)Qal* zV|TTQn$Iq0gQ(E)=6jjU?iiHNIkU4T#;5_i#Jf$;W_f=a|DMF4_!|6pA&ah{U+K>B`mm*0k5IdM}b#Qp?6?HFeYo*nP?5vLBfkZ=+4!P5OzV>8?~|H(QFt` z&4#gPU&AA$`sF#?>gH#zf20l1&s?0TM-l17(os6`-jcjL!V*4vHIH#z&Jn4aagAa2{ges?R@X242ax zAJ=~Enicv89Vc+(kHP5pWgd8H^E0#~yP;fj+x_$bM`)nN!5B1`y#t>;eTcNbnB;K+ z7bg?{(*!!nu)!-VHDeGCx6x%v|GfE~nG4|rnu3-dF%F7ayrAU}{DmxpN!k6*FFTRR zo`Ju>GX9~z95rxjUxH)E12~4%nQftj1d)l{OmIGi|gFZHW0p@&KGh z4T{?^^fPq*@)r2+j>GwXYICY9n-+pi|4i8U{h0m(A>@dEOmw}Ev!NEGpEg#Pqi@!E z>Ut!lxOm5mDdTE*@!G8Jjw6*^9Jv}{J&gJ=)0nc3-Avh2a$Otd3uk&msSsef zkdR5s_+Ozjx{t%UZ_#~7oCHo&FnJ%mMt_6&72UV<*osw4+UXqf45Is^%`v2sNQf{R zsnAlS1S1qe5g$c%y3&tLGm!)W@lkUeskA1yNI~fi;-hE-TFt&fYq0Ukxra?z>R%7Z z&Gep5920lC(~rm}_YCK^^@b%UmE_%6Z>&If&?jgIe2QYQidKLxRA6=bDGH(9rPiV> zIKejI`>{+4?fE#8$R2ky9f--}41*vLf71(j!e4Y2d!N#FUghCVHSLl9JC>Z+ag5r> zj%FCPg!=Rsy8h|!o$Gk{$m)7bf5*iRO70FmmUPgPw%ckhlq9K1-0>#)9sM1;?^jm( z{2+{Pnf9uFxBGrr-mscomVPY1=gO)9ib&n2sbCjoZ^6t?`6gJOcMk1|j!AuA?Cycz zHNWdOrjY5vcGSgmCP4y8vht*rzRAH1X9R`AnlH{BW{Vzy@0yk8W}NF)V#xi8R!l&{ z=B-W+X1Y-PcpfhrjE>EBV_(-C!yc{U4lEadD`T5J!Wjp@Dkc^zAN{5tjbgp z-gRYc(cR_CPt}yQj(M+n3izV(pDy*vkL@>p^)z^Q!PG=(W4}hfA!L9{F8p&byo@V- z9BVlePb!kuaultPuWlNtY)uTF2#EC%=bre$c@ zuSXUPwE}NKhVlZ#kdBXhAIA)9a;%2Cw>nb&&Y|BTV6&WqcRuFT0FJ(dzqtbxo*5Jp zCIH=zK2e2@i|>||kObd-*sLvpG%7%W3o>L|c%%7_aX; zz!Xb|ydkNP;qS7;4ZC#1=7KECZ`iBl{;T9bm>44s$SY_wx7P?@hlGjl%Ty z;_1K-UsJyMkFq+U!3q5WH{fG3auvl8 zSTVnZnBz{~%rhZu7kYmwb~W{1e~#l$N2sKiv%4wIZ^4crz2kqxojW?$!($XgXJVJ) z$yrKx_Y~X7@p#uk3|r-Yo_AUUFqPW^*@Iv2rd=NB%h6z%jHY1^;v#j1P2`Sb_Q@4~T?`GlJ_<`axRi z=!}T?lb`i_v95G%tWS@`bLi&@AQ+c-fcho;(~))PH(`>{$~V4wY_Ezi&>A(qsBc&X zyC?5hgb(}7)*Iv9*!4u1i2X%kUwjk-Zhnj*0&}f^KVT6HrTdW;I(*?22z~*-7udi0 z4vxTxdmrl<^?o!MeR%fv$x9P}dIb}pb2L|H7l-*Y(;ROS+(_9l>2v@Nm{R1-(-GET zrip@ZNZ;`Oh>>VA9A^J&|N9~^+m^KplZH-1&mLU5^aULZ^Ez%+mjQo9kDtrj;(ad= zW1{e%z})g?6Dq0m3O2C?f9-6CNMX`E)Hs)YHjg{gjOF@#^0BAsJ~c2Wz1hlYDoeqh zT>UOYkvr<7JFxhIRxnU*-snVdN&Eviab<{re^p%Ydigd7R^R_~? z)|;}LKKR4a=oPj-7hu}+hdS{&=Ck;5=*6_@s5%kq+t@1sJ-`Bl&;n1#TsUmPOITw% zn*g)3%f7<){)@^AuXsyH)EFmc67Lxfaq zpyS*Rq4(U_4)+6SpPMkLxnp;8GgH>go%I~<`jsx=V^g_GXW(rnkDDDV8PTAoN0e+x zk5C^+_dVh2L*EXm>k8i<32SNJ|HasQfJJe2kHg%V*HAImQMj90y7X)u|DAEFJSjCdTjv44V!2kf^`g=LiN}Hk=MwE zQkS{?pjUAIsW;j`1E5!^TTXz84e<9FXvdm6aNiNyeVX&3afC|-gm&=a1|Vg>?sghJ zUIHSX9;Dd#WmDGETS}?95+~abEJSX1{Sh#ouKC1J8=C=_yKGI*|3xY04XEG{Edx1{*0=5LDabrh2snO?zf-j?s$px z#vgw(RJYCL_HI1~AX(kIe@|oI>v{V9dm)IH(G>EM-hwkV?P2o^_yBr$(o3zYGCZ0b z0i~c9AGn6r`p4v1Xsvrbu5$`nrya2g@Dh=`ixx|xefhZ38;>u7%X`7tQ*bqWJ8A<6 zr+ST^cV*PMy_Mqx2@7XzWFy$4lm~lHkN^)>^kg4pRpNd2MLzEh#H*g@CJ3lW>Q}`m zBL%a?V^rJ zO6w4t0iXLSLenpuf-h>$=5>n6nm^GmG3DWnQPtfJnqxHXyswMs7_G)6a91M<`E&zN zLX8KKDa{?2{WI`)Cn1```BgcN86!7bX259I5XLjmlm(@MRW3(29CHNn(>29`CpH{u z2T!_!s`8<VPaf>rHlI4hXHVNP zM+hGP3i-VQ+jxoQzK;Gc8pw`2qho(N8op6Wxopu=T<&yqb0hloIA&b)5C+5EdXb+; z#_>8$0>J2fD z@@|0*J89~MMtFPIQwotWD`9t2QM8a1D&gGe&@-! zwLDY{66QAlG-Da#G=tEXy7du#f!<@`MQ9&)$LCY1d`|~0J}`*%EzLD2L0sUC|H>G| z1Cgs_xjTQJacU#zZ5tQ*e4C~Frg@;mwu(0TBv`r@v;8+sSsx4EG)%J_5tTi<-?i=q zHbzBz59ie7{&#(iFxSo|+-b7nUBh6&*o5&jVS^Anw**2&^GcE}Cn;7WCXH$(2$Nz% zm{!ua;Ki#m2g>IG-(}Uifa5gw?@cH7*R5|DNDYI};DmO8B+t5otpYmama{KoEqMR< zcX~FLYXy8Xhg*^sXI=@R(^cbUZSPg~c=j$U&7SGIzS_378dy)(P@fN8Jn6t+!?$$Y z4SIoy%#f^22-fu0M@%Y$mCHA_JxfoH`I3(Em||(1%f%?u(P!Xbne6 zoI*{aRT{n{mZ9zBwFPcciW}#OG)DTUJ6me?*{JESv z!IGMhIwc@zebW9 z5;(fUXZu&|@9W-I)E-0?7ilb0n3;X5Jw~w~H&g&zacRc*>jMe9k4_i?; z5U%xE7Bj6OFV3)S_B${n*{9{=gL}*@`0Dd-dV#;A$({$HbzDSyBqP{DOE8jn4pF^` zvgwQVGnS1|tgPL=YB{2&eutVYTB-BlaqJe#zASvk5I$$i(Pm%dQ-qUTtejX5CK>K+ z#YrV@3&1PyUEcB+_Oq9bRm@J$v~;azZmwC=th!=|qiWdOT|$PrPj)7@uqRwg)qMIa z@QGESMOFnx)p+mGL3!6awPkwzz%WnEjxXFm*B?6IC%(VvILo75=v?aA=$2e~8221Q zy26Xg?|x!iFkb9mpwDr5dvfXu;J4xwbvN?_;c|Eo)FM z?zVT;^6SeT4^KSdb7{?M>T+Zv#(X#9gb@aRoEh#NJYk4AGyHKs(fj_hpX4R~*iZD_ z|86IK6c^KaMEJ+?V9JDxwL+9J?U1S14-}E}#c8IIuvG&4oWM z>%F5VmMMeQkEoF%y9x^v?`8=&-ascVn+gXFpse|s-x!}UeE#^8y}}GWt8wds6<1ey zoS7aTqqT~sMZ@_F@=`JPTl?0hbP3WOo@RM!ZVZBL2&GE-@zgmHtwH10bV|q>8#U;Q z*Kpbbtz|?)_sVyTQ3Fpr0>c_K)WyD9|BW6t&cREkev!8^$Srtlmbi9bS`G_x-ZTV(wL@-MBz|xhg>cN+vW}7Xz8V$jCv;Y5z z%^?^M3+8r#jdP+`If4-r$`NN{@BeGognn(LF5rK#{{ITSOUwEGpV%CX7Wx8e*GahX zB=`ZsU7v$eBm{z?k>s7Pg7a`S;A%bm;C4pdmUjjOSb57A+koAsRgK^XNjp!cd$M`d zE@E#yLbNlR^Z!5E8}w{vHka~sW0fw{PWB}dI0M*@qw1*bqX>_nUox-$lY0h$c?Hk7 zv&}2vQQ8@d{2~UP1y1m>AfaV96~bQO>YhUpe)Q8X9aYI*0!HxDsfNu-iA|Qn`ck*H6m8DhGi*BOd-#iz)1U)r5F{8gH;l;5 z_V@4_+~=>sWlSYJ(Yj*s5V ze>iy<@cr?DO=kSK#yRk9Q`5`mpa-xymZjLt4E$o-pYZrWc-1vnKXKw)FzNl@)$qb0 zERXQojuLy(`JetjSrVC4MRH0c2rEbXg>jp$$@0|v;rqRfgtDO%2 z`uWQ*zhkOehKnP=p1iI{yIL<zj+151I>@^<)@k9hN?${M{db0APMTBy(dq4 z115g>doa9l%)B<%91qaQ2wCBH01Gd`Gqc$HGZ8@3a=ls|oGzX#Jhk?TSe}KxQEIaAa{p=IZu_7|Ecr zxpRUW;kO2Az;{M?OW}xQZPR(m^ixa2ANN1*N2}RK&>)?SVFrR$wjXGM8{w5zJrK|l zAa*{k%4X-YL6mV8EJ2s!sj>X;8Og_(0K%)p)KY?%+4}S;pSMQe5q{m4zmowipTZM< zjS%zYFR=R$V;{j==r=7UOzq0qKwzA;rZAN(CjNuwBdrV=Zv>j#>f# zTKE|N--02)e&GUe`;XQ8r_IdFns@?OgN*jBvu3=aY4o1=vu3@33*N$4%#y9!;je27 zi$E2SEG#MGY&4A14rIM@5*yF}{(VAOIPsW`RMni`gcxoB>rqp|n{$0%F6lLA-7#^6~?LLihf2+_-Mt z4uW8~=ELoJ%(dX;p{}3L&d&o;QG$g0yfqtY`^U4Vxor7Qur@xfccorOVrH#R1RB21 zT20!}D9yoFH70+xsjYMjJ5rddRq!^jbsU~hc%pD3IChNPcrQu*B~=XUoa_2ud-}^x zN_!?=x`k=j;N=wTr&NVUmo0r*H@Fgn9N4LG4Dt2I?0)69`tl<9<8t)=9enIe#LFP; z*;W~0msWTNSir6kNc^;jMow|oOT!|l{?_$4U*8Z1C;+KcT3Za_b3FEtCMfD@c-xs0B1yDffz zgZbzQx7i*e;MqEO1LW@lNdC2a!@dEp=`8jd6@cD*1N|oCKk_tn`GYT zb^{iIJrkD*Zw=Yw;(y>QSZ`Ay(#1zR1r1_nOf9JjoZ&yr*V%52U009M{Xtl~%t|Zl zoAg7_6aOICQ|)@r71)(zoUyf38Z;OlP3v=}ifQHRM9ismTn>kfa3g1f8^V~XB`fYP z>!O4YfFAhv**z6#;rO(L>3#YorY)fA;fLdA`2;&Vp&G=PV2BgKX&hRsklxS7{XdN! z@Ns{7MFqUQ@#dU~ehKS0T=*M|0@i!xB~Z0>=jVMhuqETG0ewP!J$QRrFUAUGYl zIYZ{i0p|~Mu>)+)dYVHAZ!ty&=U;ZKY*!mLcL9j~v9Yc*@O@(mzn!sWdArI!2}ckv z#v}(j9a(?_{UE^r;$F4d?#lvc0ht@2EHdVl4*DVhDc*% zj6Q4ukZjzdG3|n7;}?Q|sM;9&G5#Su>oU+zF(f5SRBIWx|=;ZQ}1Ze+t6&%m{?7Yei{VX7Kz&cmL?YorL@c`rT&NE26UV3M5zb4H z&oZ|y=Z;uPhMNL%5{V-pYGgP(7jA$L9OeSw2Gt@BfpK=&*ky000N0OK$!io=q>#EU}Gw`y4_#}au{mazro@m@Fy;%&!1i3)`sH- z|6UcSM+hXe{7jq*qQ=vThN) z-p^%N)L?}C8^G7`)cBKOKh60-U5ZFV=>K+vZ|69i{2$_15ob>RoA(sG>py!+UV--1 z9zDL=aZEaT{LSm=v8Sg45p^Lv4sU6{;NJYR2p`3@K497-KH_W)d``?9JHRKla2){C z9`1(EPdz=dWpLBU-`Ot*FIWIMK*qm1^fRhGd;>Qe0mDH+M#uqn>pjrzAzX*{^n192 zsYI}S8aF^YAtEtPUS=Vu< z*wAlUAJac`^#A~;{~2@gA7>y)@Ze*CfQW9I2&aSgX|;!Dz?jdXT*8hF{wmY<&-4NN zrh#pfP1Lkrog*`Rl7{UoNpAnzKfBDwnThmEsXtJflJpe8S<(8OPGi;)tzeehYIE#B z!^aL*B3g9}s-B2Qx2hp%L>%yq1Ii%yd$tN#W3oLTkOU5#!Q}yG;JzwC!$nA@E+ccU zu=eAhiJpZ`LiE?n4)m5A%J1gD_x3YDKtIR$se={+-}N3u%h`>e^(ZP9R}ECx`o>XB zY`n+`iE{Mp;fQ9N+G+=|5@(v&ui&nkAT$M3{j+vp4&tRlZM6e5_jPQk9D;7}TpT=) z<;D-^Z_FH#RB*oZUeu-7LYI>SRsiJ3d4ab zdAs|36ZMg%F{jnGXbp#cphM*@sja^4|!S6)26(jn041p2( zv0K2ep)D)?sje_2gkH9n{r%cON^ynIG(MLWk92H#s>u%ue{=fzU22 zIXT>pVa6KW+)d4mLOU>;+RNr3shfn}Z9p~>jzDlTZTV5sxEN04NhbI3o!=1ehU3%M z=D&>LmzC_pGNZk}RB7r~2L4=he@gF>YoYt#tlYi|>ZdcT-hJNV{3wKOgxb zq?1(wo|qTLc*19J2W*WA3W`BSedZ_^k&{=lTbYwh`i)_ocjX@$QS_Oc(%RKK8w}id z|Jjboix*Gc{;Y4bwRbtZ91`Fb2vlA6!k;Jqd8~7XO1<;PJY_V(iIPZiQqO3{iNTB$ zSzFmW{Z(E4)L&std5AdN#x}5PIr#FCU2#$GLszdJWD3tg>B)P^5w;9keQIiR%OWsi z`N`(Xgtmgwd(zN*(EiK#$EuWg@L3!#nl{p$R#3Ju z#INJG5#Gs>Hk3J^<(9dkjw-I9d)K{U_kyBlrq_yte9Ie9r?J0wf?+yj_guYtO#kkF#{OeLP@PX$N=~eUQ0h7& zcTnf18J!=e8tgllmI6U1${`ibE-zx}`UwL-Ac&Z-Wx#~WN<kqm$UOOCFHr8SHbw_s(LgP93=${FUV7)NorGyo6%JJ&2EJLP+>Cm{+KmYFr`yo18p_2~A6$(u`{| zMz%ho-=p7q@Duv*PH?s~>3+<$d*Pl(zmK#DlPK=O`@P2Y@QIQp{WxlWSs7?5XIMl{ zEd%E5h)5pUJ2G1l)vFslF)f+wvk~Dj4n5z*OSy0Zpm`*kWgL&Q7{KEUc(z?zVadnD z749u4h2MOmau9VXd{P)HZm+Vp>{9d?UxCZzg_jHcrAcrP7!)PLp)pi;N%IqtT`2c)D87oY%7jVbecDe3$Bmx&{*x0+)cl-9+ZuPGA=&It05` zHuL2+_#VVONblD#{Q>-v{3Z4ExDJxgi`Pf#trR0Vk(fRa3SkCP*@Bw^Jcz0+2Y+mT z{b~n%jxOQD@+izg)ZT*)PoFj%By##O-0~RKpbIRMY2EPo?2`qYP8tGFk#&1=Q@VA4mdqx)k)ir9M3pIQZpg-?|}uMOq~CeMl1kAtDa?2>!&&KO}0{Co&ax;^s{d z^gX&emFQ??X_b^yT{Jk>Qxuw1bp*-HE@kjTslhhfPV6MM?otXSZwB=7+)y}T@ZrOQ zSAofcHtA!M(@SUejOn(nS5O@E|5T)Yv;IP#_))-O%$-rtpUA8J2xd!!^GL2M8=ps$ zU}>l_&m$xHh$IBf8j73Vz@4md2lT4GueUs$;uw{ZFrSq?nQ)j<Ry-jFR~4_m5t6p?B|c_;a~a zTGE~o-LnSB^{!zSe4ZSisq^G?C)U(F3bFLp5d4zCIwZBkBxYyAp9h!b!J&DjgW(<5 z;4J@Ox;z8P##p4Dn=hwfeNZ3lpT8x}4e4yo2Br}n261))5PhQ2uztXYktP5BkZ9%z zIxf0LC*V>ZX=9Km9>GOVqPv#^*YZePMD|_(6VeyP!-th7!YEhdjGnhI=Y3rLj>kWog2}nhYU906WMJAKGC>Z7x2kiXh1BM zxPrg(D{o!wQ}|bYutO&BhVNBk%Zh?md0n?I>y`JaAVi$`4n(LNEGv+zNdsG9F|zEC z!AqqAEXR}6;3<%pM)WRJut)hG2}o)(_{^>k#;ZR79}UVFd>ru;Fh1GTj-^5HSa|1L z_$0S;I6M|qn)^1_U2b^%*dTXDmkgW6c7p@bFc@>G)#z`agBAOM5?VO~;=SyObJv`G z<83yg0b&utAtob7!9atj_A*LsM9ZrJC3THGpPlI>4W@oAP_hA3m&N4~-dWyi#;3l# zU~`<<4qZ3jTG6S1oFQy|#YE9N(b|H!4q}|d;Cpm&9b32*KVe3RGR!-IWD=EO@qmf) zl$s8Njyf^*_S?0;0eI2PK1ARWQvr4i~N+_sz_+4PMDXcB0h06^;AyjLaQC z>xH%nJ(lN`uY)1t<@*_pp-)zRjER%E=?I=Afg7?1aYVwXmXcE#3b`jX;r#+)8YLZ>*5k7d7`(WdCxT< zx<04-iv9-?URSohqMwj;^Q*Q%E0${1X5r4CVJ0a>?6lEO+yQe1lw^AaUAnH4D%Bm0&9y|{EmjGbNm(gV+1jy3h~UWnKE+5CzLTbDms+SsU+ zM={KB;0cBS*9y=Puk>@^vZP|pRrulN5&YgJwAS}%t&XHS7Pnflg_`u+*WfzSc*+pQ zHxGHQsr~b7_%rg>C;q4lVJA4Aw`fhY@>8li!0v;$Dyc~2Z<^5cKmld|m)3K^nz8FM ztUDl~u(}S&_}WtXslbQyL?iyM*3%7W2%kv!ao)Uz9|MS?NcGfsZXo1_$2@(Aei^E(vgH5i~5btD3YE$>zD9ajM@hmY7cY&c~xv;7ifsj?!mU~%o;e)H)>Z$o>5 zx^usz}+EP&}mR>%`0`2*&N0(70nP`@El420Z?U*X+`s&IZN#HYyPY;FZUo#q4>sJ}egmXH93m*%kzd8L4US(XosskQ=vOF|j`PtASsE;Z^TYL>U5oM1Y2 zjy&7z4rG65GfCQ-@y@E>08886eXWt9#LXwh`D7%H#`Mu$||K25q*a@fw=qklb z#|VDk|BH?}|4Z?Ika4uzf2kOY0>9`_Xm}QqaUYP3Bj@#Tr5`f##8QZv%L!9h#%bFXg>qYe^FTuaAVSU({oXOnG<$*{Cf&V3R@L(~cn(+_U>kZWQ8!t*q z*egXvyLJ^7{ZYm&0&8ilJ|a^8bSHd60smxN_W!j$T?4qjYs@))F( zt(di(FM?~v+jJ8KgI8Q~uKEiZmR9HB%k{^LN{(h`f^LO{aP@}8a-o%dKnGwyVafcd zlyzdtuF}$7NMC(ezBJTU!Ow|)h4^9FN3Cxn=NCWH5b-{Y5uZ?%gkg$HmluP6^WhcD z1BninL7FpDyA_o#Pq$_o8&mUu1?8QX;vw^9kC(VB2K517BaRTevHUr(^wz%-4KE|q z^G{cY#`$eME%N;2GZ`IVD$fO?jwVYVx$9fI(6Dl+w^5yQfMsrkb+B0eJMD;MUP`zP zVD&oBOzI{zDaC+%Aku@+A_Bb&pLdLCi^0)k+nh35*wZ2 z$RyMLW0yG3%={^n5NQ=ER=~4<8wR%T)72;3rY7Fj2+v#Utt;|?WlpGdkc0dj4zBqu zv-Gy^jP^H=E)BP)TDmqI?3K|aJXs+es$Aqs+kuHm;mCn)^(#sl0?q?Gd!!oS%niY( z{un>T9p`w*;}gFFNkzsjwB_5}5Na9w2guIw38wCL3}!2-q|D5Y9oy@Js0J%9>yq4l z(QfU10@=xVr5(ArEwzn4N&Mq5^K4<0%*Yk4;}w!*E~#4K*^l~6vBdW>jg7)Fec6EtCnOy@7m05AFmmSi| zGW@&PsocjMD5#;D^jbhw83zez`(ZMtMI*pv<>Dxc|!S5*P`DnTI}%x;FGKqFOl z>Jr>vrIwbFS zQU^*bcSs)&_MlA!?PmYXVy?X4iCvYL0|K#Y{)vG2PenPEv^Qo=%abrJo)7RGcxCx?!Jui#% zdcu8Gxzfvcqc2Nyt3YR&NrEyuD!1^~elk*#voHQ4I(9ft5b7r5Jg5|MVPG+nE1U_WnA!ws1|RRP;PkE!EMtOLKTJ07Pw?wQ>+ zNLkrVKbJDi1ykUNx$M_-^3vruJyvD~uNm zu(0Pkc8f@6190YpNCSlN44W&{>11p!qZTYzFKNC=ISY!dEk7*K>jnKRt)131pTe>^ zu=NS^J-rvnOkXb2hoc#7fgzKDvq2Fu4S<{T&COtDz8}){a)O;}pYa!-yuQ4=y1Hv| zikJa?AT7yw81AhO?lG_6W%p&{CGK5;6IcbLi<{V-%|l!=-MoR?)_dvVYWT9>%H5pL z5e^IJ-vqcm%a8OELokR%T4a}sahixU=MUHEi3g8dQsU4#;ciUyZy(MsNDg@!3>F`1 zSzOl*-U~{M4C_3gQ}@_tUqhdjQ;vYIzJgD>z&-1(OkzC2(?f96(8TqyYu<$)Vx_U! z23c`)dI|il^i`yzJ$T!ICT0iPU=u&28BglM;cAnS?lN?e*DmdthPXgk zN_oW~`Bq$sn>Po*W3DpJ|x)B z`*}*Sg&NNt`*b)uH$>5s^FfT^IEzngb=qJ=@D!kRhmcu@q>L{CX)H4ROl=-|$&C-i2+>8D$cSD8j&o3nC3*QgeUOBiTFD_T9JDA>(?j35e+P^}^+> zdeW73Nd6-HGp>Rw7Pg3&6`Y?+scD@=Y?7*JBwG{$4KiT%^{t-5zME8CJ(;rdh3&y1 z{15Z>CHB;1*aDbuff}f<01=x)Rj}J_YS`7>8Nb%o)IsE5D>?2~lL1rO2yZiABWvj3 zkgo9dG@1gnom0egAH=pTlpwl~1T(B#nabIGR*;FHH*x)$0PZx)KZme`nvg7F5uh|M z5%3bc9{)3b;!ww+QNe?NIJQ%scYZfeXg3-h&xB3XU(x-%hg)1C;h3C$cJ z&H;IF?a1;`AeXJ7Z%y|djJa@Rr;%*UQm4U-EZX+<8t1F>lCMqjaB@#)z90gSxi+Nh z)tH`}^5eZ>;G0$R3vFL=LJwhV#tbL;b>q3obPK!uSz{vZhTaKbFHz&m^VeO(U(URw z_QWYM9Y!D03ocl=Ve+Q$4uOx|>cu}edbqWx>BXfLPv+?(GP|{-lg6Hh>aZ|sYnG!b zg^FhVfFQl|(oV4*KjD{@{};ay{{~5u|G_dsxr+C7ghc8i3G-hL`s(iGb|q~r)PB{3 z;T>aU9P};i)?t0GzJ9TN%l^$z-=BNF+<2<$KMd7ro?ohuSG2dgL;J{_3-J*jW#LnV z8xgkX7z?i7B^h1f$tB}KB%*E$aLA$+veJ;$1s4tN=6~e~MBpHBhQGoN@EzE_d-xW3 zaL3pkBqs2LS;_g2K%)?=+At!~(n8``A>SXndB~MyR>F6^ozsI$!}Y7PWOr=4Chav0 zvJ9FtnC?wA*TAj21LT2*FXxQ~aqO(so$Wn=Ef|^KV@{jSf(UMV>}|-xr5J28^?;A% z1ZV->pMhNfz~<|VIt2X^NNo>GpIaFou%**^aPu~BfDd3U{JSq)wc^}l@P6BKX(u4Zkd%u$g10u zF4}IaU491bnO`{Bv#VeYsBF^`uhtBmjn^24aM>Q=(wghFq7)0&xNWrtt&hw?!-px_ z|K9sO?B4wDD%AmgR`K2Z(A1_=RP#hQ0J2~s5VOykhyS^0#3nvo^Mw9}tCt0uk9?)z zIHolu3o*6j+_Q#8wc6LfnbjPphj?Z+HkwOckNmh$)19= zD`N2#c|+Ep*(9$XQqzHgq4_1FU7eX2Uy+&GN8}X-2s8HPFC68C7&)C|!*)pxTY9!U^#n#(+onQ)x*?n7_ zNYML!L)thIJ-DUG{?+J?NyB2o#+q#qK|8eG0CQYQ&k?)W!ke5R6=NfsgrDVPdWnSe zm}V>l?Yi{d^<`e(m%I9O0Rg~Dwl&79Az`3f;`Ic#0SS|IaeHLI3jK#Y2glEwG->XH zgMa}dx|msB@h#jkBz@w{7cZJ7qz?fxH+yXq6w~lMqWg}mKQWgDyOBS{)lE@&7!2Vw zL`fP?^nQ-tjA{$MB@oxR!pK~9sAT^*GvWkj_va7AGPrU_X+U&Fk4)E|lpn}}mnSyt z&+*W|JXoGiN0#x+=uJf>tpxLih?gX|FwQxn|(H& zj~!vtOCmQ%h^3!cY9zVJNdv?N)Hu6ozW@)D2|n@tX&P^yO}K?+>5n6dMkCXV7DfBO zlLE#*G!!l}+h&|xb@T1gUEe031+~aF@g)&-xu>2Yy^tcpxe3pNEF_#PkVJTKjWLxn zoYhsx1&CY)wb7x%nyG)mg!1y55mms;JG}7@v|cmn{iHrN)$G=em54gj5!88|9en-e zTQG6h?nPGCE`>|rg_t=RJ*e__6F}yuHE&PB->3l%`G41)neoJollKTGzMQQfF-P(u z&*@Avx>xnIVNLht3epodA3)JJSWP%ku}{WRdV z!5AuqB#g9a`u29$ayHNe$;wyCcVZ?1oS6* zl$Jj~oin-%u()#vtJ0hBT^C!YvT%?;B|1M?;oB*cQ?2LW3_G`A-~+DzY}T)5ohAi! zbCY=ZkBT(Wc5S+rLh}5za0Zg+PQ-K2Diu8A5}(1;CeMLbuMtYj3~VrSuyDp-14}D6 z9?#B(t13%t7jSZ3PzXmAvbPFH$M$uN>)kufwQuZbiXD4%$H*CD#>^PGfZO>kfgH3Q_{bY~@yjNJC_ElJUrzk{cedX5PDQ1}IO$6qM zwl%CK_olYJWDxH3{9clM48!gL9!sFrYq<~6KGNnbygyyxGCiC6Oc6zwGb+m(ukJl> zJNqIK*dN^o1u=}wlTl4!#$)Un>=}{78-1jut&>G|^s| zP4JtKVEc~5KZ7mWb23}w$;I_?A*Tk%7Cc2bWToYhtM%jyJP~pYVX`nH&NckkN%B)^ zz)i^oBOH3MbcJh(SSC!c^`-B4`&)W{C5*Ijkc-*=Dw#?UZ7o$w(Gq1!wIa{b!KKB? z-_Fb0UMV-FQm=Zeq8ZZ=7w0*0TiFF~w>y3hM5>#<3hTJeir2n!%cL&sZ~o6!A{mpi z*Iy30riz@`llAfRg4P#f#=Q{t;EUmLpU}oeTtNWVP2_BR8}n#LDi8-xfu`-lW1U?C ziX+5`p=^aE4k`}5zJ3JQjp1ypO#XbgAE67}tP}|O zxH5NoM@|XNXK1W|4oCBl-y&FS*)M$;WPk-FVHZ)}uluB%9AoV5th+c)A1Vy-3)|=Zjqe&*kT2;i$0JQ|C39(|u!7&p;n3|@9a-Q#~urZpTrg&*l z$E!;V#QyFBj{~VFci{Y8ow^4qm`=&?^2)+6k^SkgM!Z|@86X?PP6R%i)naAbBREM> z_SNVOBQJ>q5<9T_;ko;cmSRT1$xGVe9>U!WLU+j=UlBLfpY#~v;?;tG5FDNmY)k;0 zneJucCIygGrwW97(_S*8KrWCmw2-MD=O(xER*iG9@me=*)~HkPYyFMTVer9NwSrmW zs8cv?7&>cgA7DF9C$O#X@OASU3zoxIM?iERua*_S{xCdNbVBj?MDD1lJU?ZL;zo3KU3MZ!(IqliodJTn1@ z0}Lu=^%!?K^M%UJ<`>}E5Rz`pR^+*L3{>hC!rtD}vmqnk!?7CQ@DYyozVLKVJEs7u zzgI~3>ANC<%~{=8ykZwCO5i5;Z<&@34(yBx0?4khv6ScQ8lYR?XYMKiS-&?8C`X4i z0U*kF)znocvX#*)kE+HHa=`VxUE4Vu-2yQj3tahe5NR^EWw+~@I*Zbz~YO3zP zd267fofmxTCZsGS3Yu~$-9&Bp?Iy50J#8`l)57&BaQr|IW|=o^wUYG!T@Dqm2lA~E z1@Qct0(higo0FYb@MFB2Jh{}x%5ET7I|vB&ZK|v#Jmu565A8;+SR_caIA_7>`o+jk zy@~8LFQRe7NM3+MS`px%R=*Mp-VGRKMqm=R^(oXbr&LzXlXF38WTBa_RJX@))-6xsxLSNLmBkI^^{IDPu!%3r~>Ni~~~o&>#v z*x{Ez)4Q)P{dqB%<0&01VvY)+h1|jw*Y4v=IT4OX+W^AuSh5>vJm4z^gb`I^&BL1_)X$mjb zNp=oTaf<#8)5u7eE^tG*R1-{Eh&Y=KX(8gBksLm9jATlgRAyve`N7pHUwu}PN4y$t z_+g0HL8+hj=zK+@)$sA*^wwr#?T@ZqJi`HIkd)FYe zve1&flXDg#4$t#F&n((@j@Y*nd83mT)p}s9Cl^NFJKPy=a`>0e$A?F zpm2xuZU^}K$ZQ@i`Z>ab0c&EwM_@678%dmAZx8s!OMJkOj~+ap)C_DYWsK0-_o=&z1s+QJh;K6^H0~)87_uMZAf>M z&O0*ERWmTIlb=V9%2O58l+b>3;ljX}(y1lw-M!%)JDD|yLzvD434XT-B$X#3ITwV) zWN#rRgP}?BS2(Fh!l4D?`g8t*O3OiM(oug}DPnrfIacm>9^SifzGqQGZ~Y8d9v&k^kf30g=We+@SsKtyr#<1mqv@c=?v zBL!m4SfLn;py?C$9GaOJG&6#$1Q*lTMI&lP_R4`FX@c@PxC|PY;=Pu*-=VY+5`U^{^Ztgi?F1fe?pqG+#CMv;d91gs7GI5 z9T1Z9U<5a_?pG#9@Q}pcuq&QS=D&P*7oWQ(r*Z7IBCbYA&JkFm= zu$^0Gav<7U z$I~9aL=pv~c~Sfk=cHT+XT6c(MNCI#meQ%+nD)Kwhi;nEp~8KH2!zW5FCh0IF+Nq_EE~*G7NQ z$A4G=H;b{AWu|a(NWA}KoG{N4I$~sSlz^-&1Q0Vt+65NFU-Gk5;FNG>aOhb}r?5@H zb=Sl(t^?_5t|s^p_Na7~P&7?B%DgF+#+s2zEWc*EcfG#_ z9O#|E z1=kDxT&*LL0>i#}oakbT7h7uA?w*j2@9beaTiXLD*^G|Bzpg6K zGq&sZR!W&IyUKx-Gay?J>lO`t64`o11mDBZ{onL5E)(t#gysx}BwVHy(q;<8NepwP z7!i}$3rJ3@5dH(vek-`jRML;c{8o48H~A^LhqBbxAW~=x2mYC!M~F(EwOyAYk(>}Fgav!Vs!Sv zE5M!C@4t|llI|SVKhf!$Fh0b~+dRxKl_zrG=9}~Pfxb7~OFzt*)&-5m=)0xw-A~4 zE&*U^WkDpjiY8;Xb$Z%}WE;+@qAxMi;N-uut?aC99o^&he+NeXImAY;0>jSqEt|Mt z_;)veWy}52jDFwUm^PY{U4mOh@O!m%>5S-V8roxAUnECtD48P>UAi&U(lw+PwE2adzveXNJ- zUAqPv{{{@Z-CAx<4W*6@k=uK8iwpYB9kx*Ej=U{dAb3p9t%{M=Zr%jRdd#+( zP~>x{_(%;1vmhc6-3bczorAxG`Acn_G|6z?^5{a7N21utvHR-GN`3E#ppT8zNd%W% z1pRv_dY90F@G68)s5|@QGOO{x(g~<~g8Ee*gAVHw*j`z_ec-c-+s=ZufpUTChwfnJ zx2ZdUcMQiTPXv_+hk>7*=EkBy%;`*uxAvswqEcxafR#S6mD7*x5Kr0u-KzKi$#L)C zF3ZMvWa|oSX03cz6|XC$1FIH4Sn%DoYrr4a0q0tkr3<`qt!GmHd0-68J#!M|tWVud zz(D*`-g=dpEjVi7YZ1k11-=t1X+N$q@W!u!&sgd>Eum7<;U8^cqO)e3I?g%p60)6K zz|e>NXGo~X)SUTedkAz!qfTd}byp{S-%$H*VBL{XL1n|L7uA_*)Z5nUXAd^ooMjnBRnL5 zBIJO<@v62i(DZ7xWRlnPUIl?*xL-TCz`e3_mlKNBMG-3w?O)%g_6K^5##q;Np__L6 zsl^q*S=nCt02Be&js}by%#*(%d(EHg1VGBED01j1BAg>_a{7q3WMp1=Ix!AiAncIr ztw75BCUa?@G-1~n_$Y2lGVRoJVRh`PQ4`8C;ku(h5aScj|8RZ(B_Jx1`dKAoufw~q zvs+RsYZVFU0}Hk9N_GNj7f2Y?G8qV0^@raaR)NPYf7JcZ2e=Yk^hUUNVdg`wH!I@9 zFa<@ZUcmj~8~6$NLS#fu-q_ZBVH5g;vTIZ)UCyS8P`EaCXpkuU7iIT|9$r+t9X&!p zr^4!RdX9^J*SvvM=TFPw*GFbu_yhhJY47sQyuRJeop-df1it%coc;|sw)q6d5iFjZ zUu9vgJ;UM(u^(?`3Ke33k=q!v6^>!{GBU^E+z(zFH=QOZ(kBz%pBJrBIqd;fzH|I) z7B-u1)fXm&#>v8$0r_ZZ0t+hzdrw6ey+-{K5B%-`rjLx#JbnsW3^T#*oQrVL>(LcE zKV->l*0m7Wyb){~V)q2`u<7)i#eqQ5>ihxkO(DR%+H@jE+-gRHoV?MyoPs9287=e- zT&PvqHbxaqi^&0^g$oZI_3hDx^Y;Kll;grtTk|%A1t|MCc_ab9xE(XVqw1#P-@%JB zPtLxZ4c{PVkLW1D2SGTZss!FLpsD|Z{jmk4_u^u9GJMbyZ?-^b2m*o+RR(7A>bw6_ zAY2+)D0=b`9vI(yG&qu8md-Zy$m$E+cV2e7g!E7gd=I}OV!{@<5HWH4CNCyBo<7-f z;uRfTxO`xu0rmz(u0DB#Lfuy!HpgJ63kD)x)x9kyyPd?idbGv!aqm`Kh4}vw_8tID zUG3v=&K(I5APHG)5|R-1NJzroQ)CFpQUp;^5d`FoS?Adg?ag?v#MW{M4`4aQOt_(eH;-gTg>hA26nyCB zY*&{0c7mgul04_;O(>`^H*VeNRZ_`YmnoiZ5=Sn#$c_RuRZH1;#d&jKA6FU#jvvvP zYMD;}z*7nX+1e`(htkju90weW@dFlxTP~K!B^nZtzqO9g2#L?cv#2Hj&t$`)u1=mb zp;mu*N^$*O6K~8y%bwUcKrd#Gne4nxbUm^?PVfVB-G@1^Z?=6;Kcg!-_8eEnDi)F- zC+Dy(1O>_DTPlE_$t6`X>b6C9P_ieL*hoM7_BmYt68;HJf{K@b5BJ6x6UM{KQzCWo z<3KQ+VdstZoM|IBx+T$Rt~5MgBQd%qQe=0y41R#mf&EKRO{n2(^WXPCcwr9+?!t@3 zwWJCFAJRo9Qo-}izNAaIP(=fS#1flf_tCd~U+b9be(ktaBUrMr8AhBSVB!KJF&mlG zS};r^+ey!0^5twdZ$CeskZ2Tp<#xD1q>>?lO$!Upbo3m zE$#&28^h&xvgZMuPO!wzhEii(TH-VJnDx}PukR9b-M>9Pa}?2|x5_=?L0aBLH!RzYiU1DzP zsc_;;Y(ys4LavzduyXwG2l&QgF$lMrCnQO=U4^P0A!`@<+Q1qA%VR0?tpj5WUalS#Y3TcnyI7vQ@;~=|~{20aw zZ>K0kHFO7RV9pWv;JuysGN}Ke+r&(Pk}nIO<@0SsEeG7}h;Vp?mN-&bh)}!<4>H(| zoRYdN#@GD8+0J}h9lppn*9CBsVK--$lN}L2jN^L*dGHy*#>R9IEV%9roCY)TgA8s^6Dt3f>;0ae{w}yauLna;Hay&pc-POsF zkS^^Hc;-IS>;9r6xjg~*e8-YGhsO@QNDy3aQ2>|Q)rNa9w{-fxu>*$Oiv=j)Gk*F88{DT;GBi7H=(_xeB1|*G>WlUU_&%qY)$-gLq^szGlpC16qx`G zvo$@X1BotPwzerFc7K~2G2*nFhpjlm*DxdUX+eN=k_vGT+y_s%c^8ZbSbfqp#rycDY`99qS(6Ws`kJgo5WP#4*me~RNqU_Le|8-RwnRbExf__&B z*@4o=A-bN3_5cu1#ea;ySbA#_)>e8>miEqEDO>d5Z4xs@tBgayhrq1}nPO5dC=Q3O zbe;Mul7xD<@eYn~mK)*zN|@dDbZCV%7*28ryc}mhYxmi2Nh$^%&*t2kxQx6ve|`x( zUFfl)Zl8D52m(^TDPvG8q<7e+g_eM zT`%N`KIdHf7;~W&jD8tnu~V2dGRCXOy4I`#7pYMk2Xr*H_SkrfmY@~DxX&ohl?6A7MXBb+-HH+nEBox?+j){rBn|Jh3gFu^&)EF(%#Ejaz5zoQ zOgzv5=)I-!D+m9a{c_v>{Y;ZglG6tkQjh4{92v*cVm-;2!E20<&*%nNF2r5?WM~;; z2F`ZilYongjkp-8M^gsEub`%31YPeL^JVy$MK_vG!E|k|jbxI)=bm}Zwb{K)(}u6> zk?WFIee|c)$b9P1)%jJQzk~CxnNP{oj#Ge|obkilZOfsjr-RZCjM=$k6wHC&C`KQ+ zyYon=1mE%zf&+}KyN7IKV9CwH%?6EP%g|d)(iVGx5h0A0F2@t{m=Gly7DDA|LeegM zrn8ecbtC+{)Gpf6GtF(CQ6M#dP6<8b-lR|w0@IQysxMGZ$$8XcQJI@os-StRdJa1` z{U$h+AyMp~4PQkK)oxh+y)_mymdi&t4YI^Mn7mi4nPXRxHORq)4wRNq43~A9Qe$(5 z<@$vNe=&Ahr^2B#fB16fWZ-qb5vWHO4~CQVgKiXhf8U!OlI}3p)3nR8e`M082o$zo$*8OHjygcz;Fj2~z?C zn?OnDepBH{&t+K=Lo>-RRkSeBGqBuOp)VW|lvS0kbx-H&!rY@4n$l*^uGcrE-0%*B zv+dkuc%4&WIz`dnTi1zKMzBD$W)^iBsf$Gf^^YG}@@Lra zi-KBech0t`b0T@hDQWy*XOV|I(!NudSaPhrHr`X^AU7`EF;6sUHINbKqe5DXgOVb( zLPv6K=cKv=8uh#h5C$hi2iiCi6_KjUhWS#jZg29lSF}WnaBmc4k4~dwuzu;N zgCHBEf_Y0v3a^=)fwc99t3*HeEr!DjWTST^PcrYq!G3nnxT9@*0D#dlbYw>&;MCn^ z+;O%AU82EQzBX-;Cr>QM2H_O9@oasC%!BA1n35E1OPkk)2V@S(a`VTz#W&D?wxj1q zTjDPNegn=Nz^VY3`7r`KA_dv%Ws;LH3UxYEOG z-0IwNF32@v1;K;IM=VdO)#0 zgpk}+*t;bu68=n*iorqqDB$QVA>`)o4T-+-f#5GfUnJBDcpiSKGJQ*pq7jFdTr4xIk^69y@?&(hL8Q3IM9QqygV3KPk{8Q@e&CdD+lQN|2@K}j4j zn(xz5OWN7xf$)k~qegkcU4hA%9;q1?xR}ag*7c0C1!9m9loappU~4`Q9*}Xy)d%D6 zQQO~C8^Rx3OHR;SOG77g4x23QQ;p6Nmk~3~e|0jdt>zhYNfh@L^6kI|z;(AN(119C zP=c*Mv{9xB7UUEskX=Xbfyj1tw6mv3(w?#fp^1b@1E|&?27L!*ucm zk|nW7)9GN9Celwry67`4Yxmn*hJk5<0ggQjjizv`WZ`|3EKG1lN51$rLp#SIKjrAR zbp_3{z`$NJyChuIk`BZ2eAV!?%Hfl$%D!&~3H|~Q6nbQWQNrSRZ1fs~rOm86 z30jY`(f$+W^o(rw8&$q3x|ACctq{!8uDSanw-C6!HE`W{`=eaDiS4k^G2de(k2MZ6 zi1DRQV`%P5+Y`DExg2W_I42?iFoL|j1VgN1b$K5q`OVrpfN_^8>3F}`;On-fPF;QOWqzspE{UqjCX=0~jlGe(a1Y5Nmm50eR;Dfd+FxocA6Z(l4Uo`dx=Tq^ z+VDFo2W5y|Nrep`So$niBH1_`(WRK}l*0LxDvj2$kBrWa{fg9Z_|40~83lHQNFZ+Z z2Og(ZpZ(Aj#=m1}FnmEu8e%Jx3z$vmiC4KMo{;``P zM^x=nsQl&0ABFNN^@{G8~=l6kG@3if9JM zbWG%zh-T(8=fpZ#N-v|AB3o2r?YK<Os0dsi4$|8Oh3HLNG!tX>_86$Z{d*Wj~*W zf2KL=oP6k%3!~?LcLLaTWv)suja%^7-#f3|Z~gQ2&hxhkx@GxfKKwkv-CYi%#oY&d z*}8P11K5VIVGmK&fcb#$+WL(cINL(A7paxQ=L|i+f$8)*gijq?gXRi!thd6_bp7P;&~F@2k#`T zpME%k-%13(Saijd#4!fQKOl&>&C;oZt&YdSmvIO)VHsSakCju}d0zh5RCOdgeJg_j zV(RL_lYLU<@&*G}Xk#BDKYwDDbF}6daAtlBfB9pZfv6ePP&;e>6J*eRL;HnWR^V>L40Xx$)dO&$^TUb`JrgOf&Xz&;7$+F&~ zzg!4^UD|EVoYCboUIKnUJsAbRZMfDMq<*_%a_*+f$S96~0$-a?w$6%&+X{EDPxu?d1?k7+ zGDLTl$SP8laPu2Wjd8m);ou~sWxBzSGeN1J9xfAq7m_qm`#R=A8|eIgmWG_003X)Z z7@n%rskFeXTW9_T8EC)L5zGxpFAHZp2ko&I5t9nW=!}Hw6C#nw*pQ1T+)|n^1K~`_ z#Yh`e691@in{LAOf&hDMkgLGU87Yj%mht>$LFr?eNuc)e-lN zj&0{)3n0_eE=8y_jmjmyNM&rO6nJ0hH$EMBWr5`WfS&ns$;gev*8s5p!jbAPdbF@~ zz7NTb)7Bg#+L{H(YE?K0!?2=;4Z)~BiNP>QMyKIPuWr$U9X!aggHycWt-Of?K#ZzO z>_A&LqI~l-ZxE0%J3NLo9$q;kYQS1|$_}18T{GkJ){$42%ncZ_+KtNtu{Tmz9)Jbx zTwB$dqM7st>D;E09QD2s7bR4~egIn4c+E zd+<*8GG&2BK^M?>So!K(lNRo&YK6@Nd^R^M=FSMsrI~p^-B;^j z>s1c_h&rYPIrBdpI+fpZbK#;n`88-=e(1a##Nke`+Gw0H?r|>N!6mnN0Q&KAVO3`9yQ%{(8TA-7VU zTedMX9tma|Z6o?j;t3^qW~JB`(2XCKfj_~BYIqOcqvKn)kcQUFmgi?O&%eREF9}`G zV6LB7-%p1z*IzT|XinQBdNJLF>8U5>aBKiu6|5BdDA=}oq|%_ILO>t5)I1q31-(J+ z@8$5Di)TRC>1H?x%%Z!%Y332I35+0`z%aP8|6}O=@(uVJE;8fyRic*^Fz>tF{(koQ z8+NuW3m=H7el*U8NFeP%CpXs=@#IPsVn zlW665^!ciWdv4Z!+(H@Gn>jaSwn`VTps_KEM+wjHdqrv!bJn*eo&kaoP#Oc8LB1(Awfv zi{XNeH}9-NYs*FNY-H!&`2mA1Fes%;AO%XQvE?Rs2!kk&c^LQt1`@~Kf%9PT>tEp5 zNSMpQ5BHp0!mRhl_8yc^=u&37656CtOK1(Az)5a&GMc1Zl1sY5bCqLWHQs$39P;RH z)`EW%RoRK`P>#hyvN$_scrAL<#Y~urmJOEH4HaEs4#tiTAnHLBxIEGy#*Kn^&8te1W-p&bZ2fCy zY7W1-Spn3Qjo^9cj2W)*$L=tB$2<_MHRphy2RbLX68oGt;XO**>H870$Nn4+x03CT zgwR2wZK^pgh|`43NA!tX2|tI=;3f3ub6^5mU_^gR57dAf>s&4R2*S4;LnpW@8S{)>gy;>IXCmZFg|t*jA2BZ-({nTYa&xaS=A~d8 zoD2F8oe&Ys1=~SQ(Pm)0cMo3LTm+kcab5!&--Bd${5_nw#`!9D8B90T= z^_;>@GnJxnHG9f?0vewTS{>^_#m+(zc4eJ~S8vU3gm-}g3>!0l;P9F7tHU|nf(fF3 zdPZ^Vv8uVhg1J|INrHiN&FP==D>pXv4Y=8OLvc1Tsy?>rE3-<^z&i$}(ch4Jn4K}b zfLO<<7RTJ3#7Yi{{Z@o@+Rh#g!!^aGKG|UO;%#OS07FlBrAX6ZT2mp=|ctRo~yC66qc%d*h+jd9H&QOJGyy2d<;8G zT?%5}wmez*#`VFh{p%kkt*LM9)$=q-&w%;Qdol^vf7@K8^v*(KPAv&d&9{ zXY}&UxxZnGA~;=_3X)^FAs{$8%)l1@p-kdN%IaOtYR_1KL42 zTlWoo*qMJulU~XZVbc@svSrnTD@uK7@c!l}qxOR(BbG#~N31Bj5$R*z)C9yE^`h7> zx_9D!FE|~Za}JCGE1Ww$sE-c61+{QVldIfq5}VVSj_73;+M}E~-I*P~JTS;7uFyP=*rX$_^J^QWzaM8cw}{=L~VoEmjPk1@6rntSE*J14uJ-#2w*_G`5NKRPp^#IJ= zFTevY;9d4^Pyj06I#3KZLvtQ+hJD60FdtSz8qDv-z*E=uj=GEZ56cCn>n3^xVTC4k z%;`+j-K?!6)Z5`1_%-;YSEp|MBW91=)UO~7#MyXi2!3)Y*lIpc4g%cl@3L$1cDBBj z(5$XJ6Y-afwcj;t^HwcR43#R;j+G+xWb}WuVOrJ^KJQpNySgAg6Yi}7zL~!y1K;Fq zKVxc7WB1TJ6wXV zpWE9zgoI~@-%6c-KLpq%lb+|FjQoq(kNALlk$(;50{7z;a#s__LSNC%creJT*2Q4Q08FbX2sPmtenC!cr1As={REC4+Se3O!HzT(BblYsca??fZIUO_EQ5oMhWqb z^EY~ctIq)e+h90+p9ob%En$E^Khkq7eM-y8o#cKjhyDRWHIsJFvC2M1hsIFbi6nzM zv^aD>e4jdFI`Db9agoo6`2&VGBHi4OXN6T4zC8HN@@IfZ|EqrTz*F(E5KZJqIr|>1 zU%;HoO4bL(G*po3**yrU_wacs{O!dH_!bC%$sErEPs~|o&z~o5&K~wl8=jMV3lJV= zIbkwiw8ELPL2#C^{Z889Y=tpp0}oh$ypaJg@#-G{W`T=&{UM!==oH5T*mcE%c8(R| z#tY10!1F;XeALzkAF-_a?%m89W1hi_ICK6FtTg;_p5@-Fa5E^m+ItZH3YXQ7GGGQb zgwmp&yRvx{G#3j*i_6M{6eJ{j>2Qrmt&z|oiW>r7Pdg3ow5~dPc2z6zZ(Vs7UPF8x z*g6ITqQ5UfI4xBStH2uf-s8XfZhRm2(WB9)A08OYKN;@bGZ0<|7RP#I<29pwVZS~G zj-}0slJVtDM;<*0)4xe~j9v#J#Ly zk@n?pK8ZBFlfW+|aTD;}lo$g1h=b-)X|No8mPSl|{PWd@rT%39*7^QR8?IXBxo5RK zrcYS<9<%hS!d;z(CZ&{%TixJR^GrJ+gAmIV`b2!?yF;~hwQ%ZJ-+a|7}LCqHoR zGZ6a?STSqp{z;SGodJS3;`8vQUt|10COqUH{VVXeD1P#hUbAQk(hHPUUyl#dvd_S} zdN6@0nD`|{*V7GAh86X*1hpgHQeLg!*++Mo`rr!gNz@gqt zY6rZ_US=(w4r8+B)t|HQBhm}DBYt#dCl*W54%I?ayAHxbD!+{Ay>*ap^XB*P)`rRuTPpM^eF zyb!b;T5GhZi#!ZUT>GGrbIEPfy)&!w;SGCJb})RoHDwQ#SRl?E77c=V$yrgrX;lv4 zym%|`mJ&=;M;sfP{q=Z_W<|Nf53X=Tfb#q9h1W6e(3y6Wp?e=|HzAhY7zFazas#29 zX{JK53agQJU%hd`8+iZ8f^EN@3)Y46g}J_7Z}(07g{bWw@Hd&z2#u453Sbe~A?iO4 ztOFkWi$q~UDSYb(E=}ADjlI@XKtE5btj=L%wS?_mWtG)Zp_0X{LZtbx&<51ldFpk? z&29gc-45`t$Xi;Z#ye^;K-|sCJ$Znp6hdLW*?)VuoX~8@Q8Bq{nyv z&B7CzC%N5Wd7gQ4o|Q9@l!ccWz5uneFGAk>nX^7aobmXvKR)BycA>NU9k#JVY`+M6 z_G+1HBSXLVT4?cU;F;in7Mjcp+c@wHFf#MwS-(cx9`rrgr+y7S0JQAGaxxH%nAZzwvAFunm1+jpQBvc-QwwwXQRS`SPAT1@vGk&uIX zhAEJtfN@~t~?a`9+@B_RCZWE=68SuM%U4ct;-PxH@a8MMo%6~Jr!PGvf z2u%cN0Dqdlomq4hK<;kogwtZb~%ym37i+48*J9fudc~esF z;Hd%TJ@6>027M@Q%Lh81y^nj5xi8WB9IhjCoy6>qK+nzm#Mglbx?29wnUO8OMv%3U zt(g&IRaDEbk#zj~_vSy*pEK{@qi6L*u=yGLJ4DIt_%gHp4#oq6F=j><@o50e4-wrl zX#4ObRob%2x;C6YjP6fi)?#@c(+ygSXH+v2Z=5(vY!nhaf@Ep{(2o$@0i%~QssynT z{?@z@fU95#aBN-#?!8>Ie{#GJaWFLvo<2S?!`mEBbjWg_HRBygf;#Yi)~sLQqCep~ zYU%o%{xXW1Sz6wjx~uyL5AU^woiS`5qIdhUz7b4!?3i0yV4{5u=7FG}qxl$dKD_0o zk?0I3ndtb(aC8jJdi(+{V8sgz;~nV!p3J^77`Wi;y%zt7P-9|TBOId%=iFebF@i_% zqOtLdRs4Jq@TSrD>lgFm3gP*DB{2is5j-dA;O!O5KtL`1oChD@gMYwgP&FUJtGewS zcNLw(oF};Uj7y_+GLvPQu$3_$EgTm+6HNbKG7fjBVI7$CjZ1Ku3SLmbranqT4RD{e zPXQv8A0|%%@Nj~D;JOPZ%nvVis|eFg0BM_~i`b&)z1(M*< zq*CldT$dF9Q-RaX&w=p>h$t)srou$n6aJI}FC~9tCRO>B*msf}|7&c!^8_}-=Ww1s z)|0#ek2&+&4xo46M>M3i#MyZWcVe6z!5j-X-=0*O5R^nhjSLvJJgiu%OQLefexH>&j(oO+U6W8Pb1^|Ii)y@WjElvR zYh+~HEOJMn4Og^hE>NM1r_6}j0^1JP40kes4Degk&<%mJ*FS?plSIwaXDWrD`>qh| zamg#&lbG`qP|HV#ed+b4;|BP12jkLNvs2lb^v96i|0S|@#O+<HhW~2_LUM3JP-l5@%06(e8~ge}HQvp0j&xMLO3g zWaoP^nHSztOZh*KOIZrCEz`>sa-PZuPj6=`@QG*V#~n6~a}0xff81T)^yJ_G1v>AfjS z&_2aT4|_r$V6;AqJBG(JcM#c<+Dzi@lv*x-Vq@6*AK4qVN!^#yUrdSu`!h56J*dN!M5Vj0fPAlJm0Va%*^ zr%!w|JPyePoq?=ru1&zM<{PRIeL?88i7?2nGx#uga({Kjif#{5e8SA}B|MN;<>{cA z@2)!5y$~5?BQyU}2Z0e_l}p}(`dHm97yuV~Fl(5DXzMZBE1L&}IGc^?wSUlBr)p7; z9bUjY-%3YR%v}iYt|Wr_4pdIm=Fp=@rfwj1=p$OWqrm~%+%|7eRdNuF7I{n_cC)DL;;-|zwB8K!zX<=>c7fdV0dCa6oWIxCujtO~ zb6ndy0^4`a`2CjjHpcp~Bo<-Y2sFIm4F+!9{Fy^|LqL2nx7cC5izoP#qQvwSey4nA zFG$dY1euPkzFvf$MWbg*u$;6!On_}GBr6dFoj$nH_)(!?H>iL~Kf}!%`=r9V>xnD) zarybqo*#WY@D_1_k%!I5o{dJl?)<;~JYuFXcy#W@e!>ng5q?b^^v&-!j$SivLw=Ii zG*T?^Cisb6K5_I^=kK;SdH^Q?*@AD7zUYp7@!}1$z8);yc}gEf(j%)ttfV@|lyOVo zvzUpqtJ5@@G~BC^{sMegL_IHD4t#G(5dczq8rSH1j*yh>?qYTMurS$+^qeCW8NrY< ztt5S{>lbs7z`)+QBUISwDhT20OxjZ|C&$r+iU<%7Xtk|qaJIYG{!1)Nqcg&YG zvfJHD7g^c+0?C4t%-Y>Pt{qDP#z4etCwXk@(@7^iJo~Vrwm-c46LYd$iPzQYp52c<|NXhfYS2{yMW>44#C* z=RWXu^Z6vvvNMSy!qeC932fcECn*~p-5wV!wP>3ibO=e7eIh(jgAtyj|HM-}j+De? zD~>j@*dbm8!vi1D!=MImj-hp9TNc9$XXLWWb~1dFIqZ_z8epCeog<@zBjIZE*;h$O zn#~yMsB%8|dv1t)V?R@NPn!5ve*SOx{mC!V0oTJKilXM$rd$LiSE~o}uK+BwyTJ@@ zIpf3ew9I>?@S$M!R~a=XMpvc7wIn;I0vEV*%WuFlS1aJ1%BvH%+v^@40)#v8cfUGe zJG}6F6)4V_c^3cMKli@dyYne>Rl=YVaYU%aPMhe=wT|jhTC* zV@I+CZfk`Pj%>LG^!3H+$7L_G?!c(+!#)F}ve^Ba+MZJOi1%?Kus2rrxmLZ3?P$s< zwOFm%@Kr8Y8wg8?TU%%N8aKj)LuLt$pz5#PQ;fcSiMNN23njby{gRSZ_IX^|OPKni zj+J4L(DM(_#fWA@SWUyKpz1sU>+xdqwU`!rNbTUVY6s)_GJ@Lo23v}75qQ#B{=LgR z&gB`r!vZdsE(GMZ%*toI99nRDt?nW23P-U!nR zO5u$qL#_o5kao~FM!$0ESXc*qXN9HMz6D z_YakY*T=5Mxb27drj3ys?cEGM;bG24KNzBHwtWC|J~2)E+63XJcK=xg@Ao)5e4axP zFq{hs>A@HDOf(*<@w_|v*w7j9($WA~9pJ>-5+$a@N0UY{o-xNxRXf5WF91*eMPgh{ z{dNVoG=6(_+3iEvH3r1KcwMP5hdF0FEZNn}Ib%)kW;AS(HRJZ*ht8Rw8)^l&N{4%d zsKd4$hb59KB%G0qhL@XfCWe_*Ct~k(KRL`=9cjHMnFc<-;8jEf$Ioeg0FPG#&tvl&^L#=E`)yNoTpz z{p*b{rgpnNfAoloUSalXkvYc{Gi1kRBI!Uor#?F__6WIicRXTL1H8;IYX3WV9@+gr zD=qI?cpTVVB&cNYqh6^>mRxI}r*s0@ude@^8>Ui<{xd*~N@E9zAv1Y8`$_TXC^1;T z{AFIzlbzc@wxYAkm6>ye0N{bUs^Sou2VloHggfb#WUKkcCbxt<5C|6sYl43WdUXff zC0Yt3!`0K=X9vY4GClVR$vq(W|C^D9aFXBloIFW)=I|N)gPkPF1jb1=fXtOzM!AzC z(ldIS-}Fh(>`OTIa`e9!U@uU63YpX*S+BYxi6 z7`Dy<9c~lQI|LSZaa9I|Nsk9^N(l*E_Gr)?pqi!ge$D09P@dj3lNBw78hl@0bl(G8=lYMPK{0+bGzQu{7N|TaGUM)TX$Vq>kzj@xlOv7H(!6~cwpZn=s%BYLGobSN5Ad^f z_CYZEh+%P(I8R#0DFXt0$ z+~_1;Y)ir} z$xP4oLZ_hwkHFAsxa8-*!YS{++wc|0tRA%M>34&VjLQ16H#AMWKdT4)FdoeP^2z7> zZjP_Jxb;d_;nJ=B=7Eh>joB+gSC^WP3|?G!DPc=5&VS)6#D#kQBx`&+`v{GC1=DWc z+E|hNe8>#=_qdI@1G4)C6)y;P2hsgb-+p}!Y=jRcEaAI!t5%ALb@1u&hjYh7=Hx~+ zNPLgw=u<#wsK$iE><}vD``I(sJD9+lpZ>gJf56cX{kblYVN<#pxY9qgEuu zBd{0@YedY6EyR+Zs_Ruf-n?>rb+2(m@5-o%q!lsAt2b@lwykTR0#?N?Pl||4S(Qvp z-)bJX@y1shiMd1!Ar2H^a>u5<%hp~t6FmbuoxF^s%YiIDChqFj@V=7jLX9X%V20Sgmqa~iy}0%B6K zva+Z_o<0i7QRJDa{Lo6>*Sob0#`}MT{x=ZqUyJr0`LP1oGIUSLwB)deHnwchdf@Sd z8U!f>i|`OO&D+Sh*}2rf2}N*>Kd2w%<1WmKYdv8Hif(xXkLuhdv8Y>8Qn%li+#WYK z3%<{qTlI_idTzQTOsx(Byf; zNelK=_PYkim>#g}&Cb`Z6p*BUepp!R>A{O}$^z#R!sQ&amrzawCyA5ADP&}&!ZN-E zH(Ax|m_dKxY+BkUlF~9cj;0W`Ytg>cns6V>zCgGJ6J#8q*g5iY6Ez36!pT$DSIwyC zmfU0fvQ^zQ4Mlz)lY1A(l@yIFoi+rdG&I5eVDhAy4G2-B`Hx^_geXYafk=T*f-~l9 zFxQ2LcQm>tfuZNW&g!~0t$Wqf3aS`%2F9#0#r^LUP^FE<#qldTXC&n<{7_Q@j+N94 za^SUw>a|`W1nJW;(7bqGmx`^wRExKG7_tn;(m)FH@)?B7ooN5qMpJ%DDeYnzPb3!c zL_WxB6p-LOzu^alvI<&4Ylc?1xpag0C8t>azMw{`C0H4pe|AT zl`Z!{1<}>Kp5>ia2;NiB`*fTrPBK%KW>iq0$Zadctqs>iOktYB#7=!??R%U^B}HA#P{Rc;PBSdJ7Nk8$K?`pK{v3#PhPGdws{gsNra!h z_biWW(KUsBv9PFRjPfk7KkL~SK6=)ZoRx}0SDd40Z->#|u!mB|iREOlCjg~lMT64P zPvGMrAVr*@Wwb<{7_kQWHKHO`ZZR?gFb)3Y=;#s>4}NTgPang3qsk{X1M%{Kb8;dh z^O6n4v&Wg#Y2durAW)4oz&|2vh(urqUoKiYr=Lm$e_yl7l)NgA9Pk__y!vhn(f!m9 z(H&+*=H~X#wu!ww=|K69K1v&&&^Ok+2!zKJtyibQx3yUy6x6}z^WpZDx#X)zcmM{@ z-lnU)36_C;Ofz4heXge`q4Pz>#Gue&B1Pv6A+qqg7#X+BIpc=)J){XMv|@?QAT$x6 z+6D{)r{QC}jk!@#d8@0R!Hs5tQk0dc4Sx)lhj_yk@J88@#>5l!q|{hPI86ZC%paoi z^P?aT?*<}A&vk?g{8bdI*S91jCV~!+;9X2tT+R%%rl$z@PD}=-ffL6`W#tlvy=8JZ z;!(t_T0A~k%d#bHWW+U2(==gcAmc?+TaGNL9NmU+Lp?pP5*98$4T7GonE?h*-S#_( zm@_LTa{7uzSJ#$-z{ZRvZ!_Vn@%-|wc~gHw_W#y*2ZzCvD;!D+PJtQMhxhGN4W`VU z0_yserxe3uqt<~FqmnvZ>r_@+H>JzEuytKqzwHS+O!L2xHcacC|7MUey|HLvfy0&w zw-a{s-uGuUaOpc>{Q6Jm%M+b_;YgE8wVXUk?|+CZB&L`%P_0*xMkmW@BqZ71@R+cG z&_oGoACh4j+)som>o&0&zQRN`pi@eC*^IF!bxPfjEx`FP@IAU_b42p0*bZ~*m5vLR z!Kn%GFJPPC8Xqk(IjX5CTg148;`nYTsvf|YS`8ifs4fX?;0wntvX}4@#&Z>&+|HKYsKX(QEyamJQ>G^ilIQ>G$gdjvUx_0fbg6meq%uj)NJ~`|dB;J9HJ0#ObE$V@Fl%1BUJ`*c;oa z{|1?>jXVeYG0~p9kj-a@p#ku093=4dBE1qxc(3!T%%h2><>%pY^ABJQoB+mLAl|p0 zBF3A?vbAE5$Uo7&I4=?BFo}>&Ct?nGoc7G_gUp7_gI1ER=E+4F_l7Tm5aw(q_kGd4 z8EgT3BvR+XCY!?Eu(BZXmYCgv)x1!wQKIFmWk9ZHU?GE_7i1C zcS90J!}dO4^@NXkqAZ$_9jO zviF3JCS^UODyoBddA%=;UpJNYO&7O4VR*>ZT5;Z| z?eyEo4HYq2{VqKfSI#fmJYWSN!K{(1Huo=ptqc06PHLVC2;%LYx$r^%2n5GJpF{=Z z);&EBxWkvj8-VVcy9Zv%4$G1IupU|D13~_V&+4|hY29XoGVqUW zYo)e+!rK@kK*{p<)uiy zU&F>h{#yW@IC4iK39SrG#5qox>{l zxCJr~{blj+QOgc3egI$09Y0|4sJ?sWf*I5H4;(jt0-WSCV*S|U(BhFT0~Vf&&Q%$9 zfdNKf^Vj- z+4i|FS!gPqYH)&Ot_X-n6Gp{`W;Ngh=}9ZhX=m;b_bcyqjhUlM`xU*nPunxfo-XDH zm?~kJlaQ^SAaFZYWcP}MjDtWA=ei=KshSMns5Hd%n> zdZanAR-Kyh!SR4HoSnWv*%E<4X6G*6;7RNCIYo0_JtGPufZe8x!21o%Cir%O@a%a(-oK7b1-I>gD7eSaB(pDTL5@t-y(Q)JF`%(PB} zv7Y_1e;As`@T6SfcW~j$?ldWpJ-l;z?btb{B9nXi$*EUYjo4DF@J>@1h}`00^P8db$>KH+objQka#>Jp zRFTV!U4XN{zp{+TG-#&4ig>)o{^-42gaZ#u1so@47_5(osh?&YbcS%NgN}oi!3=8U zIq6A$3;g5w`w`uCY#RQ4hp{L^=AW}~be(tx@Y}WN?dLoq{SH|TTi^`X`gkvJx(q7I z5(f+jijMU2ld0CsIzHBHa~Kc@r}pQ^h~W3_v`}R^Avu=Dsfd%564pH#3$W#@)KRWF zxU$MdVjq|N+imkPL~b2Bngqn{QmVy01nxKg)$MpmZ=fd%AJP<}v@TuCR9J>tX$|L@ z1+w&}Hdu?c*Z4znMU~j&? zPjBw`K<=!wx0_SLuY5`KG|}$FxfKz{S55JBqL&>{%Ig+j1RfxE_b^YxCI6Ht8R0lp z;b&+T*b|%7_M;t5onSyl~KPne%i=BXJ}IKql87Hl@2@?%T-ibqOvup%#wnvzg(m_K8bBVunz{ZiU2nuv@u>B9Z z7EoSdp(5R*vmu1H+r>%cqYf&jK@6eyB+8t(z?H;WTh}CRbp_dp$MctkJ3C0nAh>iC zc+xJESQ9Sr)C$WgNUpn^z|K9_QNnX0``ZN3L>TO18!AXSH7&(e?M^B~yK&)FejH!n z>nyPS7f*HKlwzCt|H2+AVcHHl0!w6_wjx1}lTXoUj5Bv|?yDhG#ZD+h>yzm1mhy6%C&(+h` zC4B-xDCaucfnlCD7tVbSIv1t(@$}Xbj=)Ja%{<9N*y;0_r>00p)yzzuwovS#?BtlT zhbyoFKL)tj`FOg8YVwb0{(}r2WwZ<3JS@Fl5L6nb0&=NlP=~9vcJ2#olSm*{$bEeX zg-B&5RT#$;+T6`+oF04l!nJmRZjqgQ)OI!_R9#f|ZfgX34<|}fwkyoV&Y*fV&wYXH zKm20E9g_b~enCc{oRrG3*Iy>5F`y89WpayAhy<>d$Iw5XRUU?U02?YH04F@ic_M@_ zpZ_J0N?gi3wcM??3da~bcwHWRs7y;}z30Vk_mi|bao;Z1R@snj?_6dN&C?wh~!}(x12nt&4^v z922u_bqRW-&P;QUVtu2Z!Y2~( z=4j3r{}1l;<}#^KK5W)50|GD1f=Dw(U_(MyW5T^drB-(-5BGc5vW&=lUCcwm)WjZ} zjNXdGYXD%hS|pR@cqTb|gv>H~6niHTpEK>E5J#im%5bp}dZ5^cc{TQxBdi$lJQO{C zHAbEz_#g0}N-XFo2-sSe8t5bla*YQ9_fYX{b%>_aCRQnrZkP@4SKA~h9f3d|W9m^s z@xu{DJhL;MG(&pWhH&pXC1==mjp0X5>OI~$vPKo$+1Ss~8+w)sI*9FkT*H(()j;hV z>{B6*7Dh)HYo{#!J0Qj+l&C_3xpu{(kR$x!qqa69JOfMYT#Wtrf`22EJg%`<9U9e9 zX&<1<pWsc+mpySO5b76buSq)t}2ZyA!`E)yu+Ns z-IqoK(m&5RIB*H=C{GH77j3nnb=)AXBjNUM8N$Re|1Y}G{vSX8A9xr%q}6lC5c20C z-UY3m1qI~K1^GaSpT|P`_a`brrSc@O0h_jV*1lxcACoju&CXJ5i zQ}0db@o|7#P4gtYV1Q?0XiZwZx11}-2f7K-AyVCRILlAUMc)?yBOY1BHdR9kT0Afy z{Q#XiafDvSXlXtc098P$zx@ndVgaE=N@^_gd?{}DYw%>c?IFbv%S}YDI6Ni=CPtmZ z=A2d~m1z;#%CS^sgzNtjp)GsLhO7hu@^Vw%64=d7*b&_4DxGo!gqwqF-&p0(!FpOl zh(r^l1QDQAaFrPz2AVJGlkSp2!H0H~+@2&I2$4j4nc$`fB@v?G)e{At27#wg=dAa& zafAR!6NQR+d50KVy~wAj+`-3(?~>-s59EF2=tTw=0Wxfq1K`MA?OY-fJk>TM9U`-N z66bJ_Aev`KBohA-NPS3`Fkfe9$8@z+WWLJfxkVD`F5WJs0h$jf=o5?jK+mAcsq z`8-Lwt@%~B4JC*j<`_ltyvQJ~z-hY+SD@6pM*8PSMS(Qo9^n0x(W{ePaW`kT2z#-O z3u%Z5qhcs`N1hW&`-<(UuKyoh)jc8IY9Bs3ccy@UY4gc3ptriH*GB#@AV^hd%=AV5g(ko-TiiEc6R2Qug>i52R5;8$=tlQ&6(z!OoqD|LmNV@2{e>8kc;)wBPH zbJ;nn&vzkcIj(7mZS+Y^vl3?Qh45@>0|B8;)XqKT6h%?OD4MFHnyD`84C>3&_o$y% zp(-=PRE4d4eXlD+xs7p<@1fOU*@OvBdEXJ2W>J$r-`xlkO5$1_!AlOruL?l&D!UW1DYEx z$2zFfu;%+e)V~2=P5bG(k1cqy#AgaK6!yqf;*N!h-R96O zxKfZH^4UauDOo=aDY>kD!rJrU#c-MVltvbsf}VLMs5)nBKd^WOMl?Z#lW7FsJ^FOH zou<84hnIn@G!NOkqfPhP{gTJo5tDc(72QK8VXwsa)Ad0okLV3|)lS2!&2xL~Xuj1t z_nxym48jJFmoqyp8^2I@79$V-{-}^J{X#PXOxVc)-O&EGvlNR_U7r-WsDLb|t?J?p zfrh=Ek_p+)$Wyh;*TtCDKTf?t{SN@ZT6G={(*{E*O!rNRM^JcAX6`3o1bTWgTIO3n^mnimQ%o>zF|A!ejmCK?Di)DV#im+MLp7^2I1`qOd z*3j*B(TU}v*#u4p4K82&M!Tyqw8gwkiEH=l!7eH1vN{^sGdfyck0KVBm)&;^#Pu^4 zW(6CBUCJKU6E#yk{Q%zuSvo+w?ILSF)NHf}h_<3+Lz}@6F!eH4$yUcknFGEiGpg$X z2aWg8=DG4+=vSw8so;D`-JV8&x?D^d*zn+{qrxKSA9KyDh5of=R{ks1c)&1<2Ljl} z$WrsEvvte$H{){wrRcs$|e>C-KQEBf%d@3 zbDvb5=UxAhp*{j15JhNA-0~Z3rFEe_^h8kokhtJi$G5q0Z+HKx{;vnx0S8>ZnD$ds zl<9csludLZVDa4e0n>7A{xP>WM*G?eseRbb{xO!qogM! zGy3cynJU7`WI^YBM}FD|7uY}dq2(;!6j-p&hZ=*N<*YSodUF6c0n+}O@&ESHSfgRS z!Avtu>+$WQ=iPNoy)Srzxuef%si)66=-?W8^J(y2xP|v;GQY82($ci$PQ>INI?nv} z7OI;%lX{N&KJ~LIlvsRqlf2!V&XEa1vL2@}VQdJHWjFm5wfCQ|^>%A`bEngFW6$gu z&$J|4+IF??+`tWf&aL_E!M*;-cJRaFn(F9ttsbS}->0wja2Do-QxA50ScaKj-oY~c z;$02imD*2^Gnu!Jx|Dj2`UCaOk!(&9&0Z;l3sm(e4E9X%aa4{~! z1{Wjr$AwmS#_=r;-Q~g8)Z5fMpc!O9 z59k9+!5Xj~yb68=-hmu6K?n4}2yB9>s9WU@Reo|!%4Hj96b)E8jCwf zRWVHMUxJf}^bq9V+c$&%G92QG_m8n+kLoLPMpT7Lo~8OzCpA<63jc9y(L zj2kUyN%d@@6)^=@j&Gu$g_9 z{Tf_T1sU<~6UpdxTd#`$aV6bc-@I$PvTX@(f38kq)(Ty{$n#A*)g{IyOI?Fa5uU_k$ruz1bUB=>Yyx*{JN5+^@Ya)6kAW3f zU=y1ewcd)HM)VQdBXTCoopG`LYO}-RzIbV4LJ?dH-@v-(`o(aAsHU0kq?4|bL?B2o zX|pp1tHBFwf*l)s_Fg-~)};XFGJ6Gc(?TDUlTfQb*3{~uD=N?tXt0Y6M?)cNXA{x< z{yH95Q0&Xs{Cd$Q@s(Zc=YPv$6|9_9Kw+0G2vS&`x9;BN0Y>{{)5#21ZwKeY_oy8~ z#M-xkWR&OZ+L?ZEt|jr(KAwm1j@|3cNf&Lpnq?A3?U^p7QLx{%>_bqnn%aeo_k=ds zy1}?RWpG~os1OqrM)A5tR(#oN@@7|eTpbZR%|F) zcAF5ji>Z!)1##@$4!;GNwHIxT;jkJjQ|>3CmRxa&F~z1S1|f+=LQO0>lACm_4&jCM198gIsUbemLxb~*g! z-Lg;Myt7q0azbB7uw=rtIZ9~B6AbBImQ|d{w)DcWbSA0n$;!59Wm7Bu+&P*^T zwOZ=35x`3(6c2r*?@Qb|-XfiQwZRc%TfBC~Z&W^RHw70oZAF-HjRt7sy`EGCG91g8 z84FDd(r5Vk`mpSFG|ukuwDBA(W5C1Mv}Z6 zrDE$RYmF=RQD-QX&SA?&Q8Qs#4Pyb6Qe&0UDp?`1REnlksnf}B807XLf1n5L!@nXh z`n=2uzlVPKkw+e;=|{l2hv~s*i)Rmm^$*jqb>D>mT=?}wB6iNj09=;8WAr&iQRXt7 z%%c`l%dyqCi8=-QD0`?6Q5V&Uo6%>%(RmfHQYkGuaqNL_48wW*i1e$+;0}2Ap@6@b zK!CwrV-hBU-HBlOH)9cRtAO{F)QOl5w^KW*z0`Tw0=kU4mb#g`jrvrr_zzBLG)kB+ z7=g3dj5j`_L`>$bMw%1cz{P!&w-l}DJOlnIUTW7OxVXQ=0o|FH%~lz_((HGuWwi`L_VQqUbkcRJw_TKm(! z3n47#La5V`yQ@Xa#;yxf=~`+FmUib*=VCkJqqeJL$sIO!H z{w3;F>KD}SsXtPGtwOIw+DYYD>qwXxC%vZfIw=KoGSfkIh}uR{X4O))B~_@a8u4C- zsS6>p12+$W+TKd3gTFgc*&Rg^hqO*=+V6{`{;?AAX&)T7ME-;V-QH59+h3D1B#)HQ zCG5vatb=Q*O41CZ>HPp+O4A24EgvT*=zxB5U<6#qD3$_09xvy>2$37nA-n~dYO8S`X%)n>JQ`#GgalYolF%6(Rn_=fQSGRTb^7 zFFk@qt@a4sTTS40ZHLKP6w2>9aVhOCQVML>OXJ!vm z)TgOKnChRx_Q*G|J@Q|e=6{N5{!f_Z-=PKp1vp>q; zl(fe0C#5MSqDtUDM~nC=DvqP4ZVrs6dI}n*QqGhV(X^+u-x!z!$opIR`&sef&#Nh;@1?IjRC+t(v)Z$7yrDe{ z`rmj1^e42JUwch^8MM6i8ffX({_)&%+CPBtx#xf}@y?@@>L&=`4EBl&^OO}ZBb60HdO^!KlU9w+E*2nknuWw4*_b(ZJR%lIs zve1~;AZ`prIjYL=PgCEc{*EPc9Hc-O=mkr`+A4O+h>?*-z-YuMNh4r1;qp2$g-1|R zJeJl;DK(mwq?${j%lb%t>}#K>sj;TKH0JDmiUsbfzVrupG&?1+7B3aF}mruxydT%Z^1!P<9-re5J_& z>wSCo-bXgjR1W2Dxozjp+sFo*%Ax!Fld^1PX3nIk|-BicFBuEaYYHg+NM0KYFm$fXI&0pX ztkm8$1m$UL05@aF_7+rO0LEb}%)vQuAzTShgj?Vacs4w*>X#OV zq!BZYlw!t_SkZALR&*RGI5YJhS*kJ9BpsP)mY~rYlAzH^NLyx%^kl|J-RKyp8yzEk z$Gg6Q6h1g4a1WIrI8Y(2Z%FhWDnW3dLfWh$A$+I=!GQ{CeM92-Pzizq71EZCD|io$ zmjeeTaZTS5Mev~`m4E|NuLJyE7w(719uACv`*ab1i0t9O2)K_3`uriXhXccK*%Lu; z76pB2%bUg|KvPlPm$v*{V-nz7MX_Jn@}V&aFjSQOr7i#3m<0Gr1z}$a$}gy~AY52Q z-d8)zKQPG);R8kMKi^jb3ZpYLC}dppQ6R&ys|aA-F%ezzJL)f3pKzcNtOR?p&HN?s zCbVNsvJ>70KLsCzkHas(ufp%ZAHW~OU%@xwU*JFCdx%4pscDy~Xo9I|ote4s(bGo% zFKMi!t=($XapJyq*+Hf zQf2yelv7ovWk)(#m38fqo3(dbcWduhw`=FP?$^$-ZrJ8=-LcJM-Lm!Lx@YUFxoKTf za^1Qn>dr-H#MO%)$qnotptI3==n`}#x)I%mK7}5fMjvvz ze81`PIcK~*$C;1%|5ac2SozQs^{FT5V^5>cJrzHED!%zt{Pkn$!@rOH{u!M+sAV3Z zhB<|5^9$qKJbNc@`|O;!4YYaUw$S>Sv5C5lKRYQp^EOoX_;yrcd|S#f)}ER-C3~tD zti(3e4sbPi1iT3T0wtJ&>)-+S82kxhP&?X$u0}VZ+tH`dL+A0$*ru4k#@yuh-S821dZz(uroEz&IJ>!TIk@@B-BBo8@Et zR>9{JEPfiFj6K(yrd|S3M=Eio^ZcQy)&M`#iho+u@E%dE#b5qV34(tO;Gfnsyhl`^ z_{$$ELGW)@{L`9-_lU9&RQ{(i$9$>? zXj_T^TsSs`?kW=avN6ZOPZWXt*NXsncx(!~yGYwV8FS2si-5MW2*BLf6#B%0nAn_b zZ!pD&fKSwvH2CZCG)*i|1Mk#U4t?2|6nKv%nY8+OF6kR}_8*hX8_ZY9)at8bLTR#B z(hR249mQ?%2|~WVz&r4*5`>MT{HuxT)yYpJE88CbyzwAWm+_BtoDDmpW@&alOdk{C#r zJ(XE8wPeLo>5#*QH>$#>r#nJv8{WtfIPfLOVW_Z|^nC?u`0a}Z1}?mCVBn(CG5=EO z47S#mHk4PlZ_S#$d)KVlS32fjDxJaB+R}#doI4gRI{oxTi*}Tb`Iky(u(h_dp}fGR z`SUl8-10A%AlOn{+E8A!$uBoMy&hMy;%{!ou!;>-3^$dhd)y>F|MJMQLMgA4l!9>7 z>2NX4TYgEQV%Rd??ehvlKXBE6Ya*i{r=WB)| zTmUaW(hc%YO}&bjCf4fmeDGRJ@u%r~sPFUl6Yv@xe7RHr26}pWG;@5O=wqn*$O8ytc6o%J1W$#|?sv^rk zZ!u-?xgr34#jL?Ek50i?U0DQ}CyQK?f4j&s;L>8sU|0um%4Nl@!O(C@0m%Qk2r$kf zhiK>Pz~;?RET#-TRs^7_m^Jw5=oEa_c}0NvbVJ0{)ZW%0#!kclHi*TT#t)@64?*DW z@`8hB4S~gi^`?;php!%-J(NFm33#Ex)tXRVka2dl@q)+F-fr;YX)(ORmilzs@ArYn!I!{yz@MNIHp7*0 z54;(E9{w2q8%5D-bP;+8y-EXYy`MyXl)j$6mA;F9fPRerJpCN~E&4_JRr(k7ALu{R z|Df{>!OudeybC(*{Lsks0LV#DuesEwIE>9`0R~#H(l>o1h z{ouebT%J-~zqoyPl>)p%_Jae%aCu6hWZBxquSPG`U6TJmX{q9uV^gYRl{Q)#y>54| z<|!>+Tst*v3zcG3d?~MG#rR9vb$EH-tDs6OZ^orgV%~)FCxL|Bbm8{Z6|Ehd7 zq8!M7w>%AY)K+dP*OmixUzOE|YG?UBR9o;^H`yy^sM>00^!25c!Q08ApiqLwoRS|s zue3b)CRt=Tu>_4dB|rMc(i-6x@eU?R(3n%Jz5-(&6LWSewS&5ndQATUANd*+4XnUh zEv|M*|6+QIL?tGX?PLz`!sG+=ipqwQ?RwC$SX_^2OyV1-v$+hX$JfrJX-Mfs3T>I+`(pHEv7Hq}qb&U0^QLW{R1lj8o)% zk&U!BWHD*?N6bPH1?+W<3ouL8U+kAw8ojB_P8S=N`3?l-1daZ5*~W0F@v@B@FY7&L z<7Mj>ELeBh#&defd1ENN@v{6vt8KN7<5Q>55T>@8>}buN8&ZOK)t*(W_6Syoea8)Z z_N)S6)t)^!?65nm0!d$G7Lqsa$w%yb0Ei67t1)mhsgZ1cQh;n_Q(}A2oSmI*hVU-f z!dss(hu4W_yFp=~V|l{nY+;k4sxa2MPLY>*uED2T0OyJN+zc(MjNP$7`vntId`~H@ z*TrvNZZVtU`)0YX;UF*>Z1P~o#>a!cGYpl z3z=LqXYpqS53kx2HA}Oe#ElGiX})U-X{?2&E$6IS^}!`wJngN+9e8qmD5(6b$ zh$f!NWs*9FkT3hiGpTGYPKZ`f(;S;3(GgcP_R zwIsAS>mY%x{Ft_hAAsq;5H65JrVNqzLL{<7CQbMZpXoQrWr>GF3R$xS=TglA?Dizh zATEZ~A#or`yTdUOs{&&pl-5(!R4i@Beh9`iX7&t+@tO%^Zf^w+ z63xR=aF3NFX6_sd2m+HFt|NuTKm`^ytqjP}T<=T^852z}^qCQ0L>{n4!QaCJlVsYi zx*CJN)-dDqLe{?3z(6A#W^I;btk2HhYIB(5IhVCn4ojGBL|Fh_YOZ%7uvnzvseow| zLT0~(qg#a_ds4X54@_;^-xsqnku^%44#DQ(Y!bTUswWSg(-)lEmIwoAYG7lwuq80p z5$xg_cik-eBAQ-gpH=5(_^zO1Zom?@#aKB6K{(MiH`sU1!6&cUI484xduEPyT3C$O z*@THr*xek0oTOfJIEJZc~J}x@q3;5*{|&x0wY~KgZ3ItxCqu-MZ^Yz77FHW9tLJ}XAnjG6~&aAD|;BFUAFm&3oPTMwzNod!;;bYHZ z{TUFAw0eLy9`^!IYa|LXew^&9YfU6t>zJ@)HF?txvw<>=kZTgL5yX0e9GDwPBw!~c4GsG+}j2D6?X5)WY|&&AW( zq#pzTR)vb1%t$yhnZvA)uai|0x1NZ$IF=AG5@?1)B%~?Qxtv68QdCY?&{%#FnMy`A^=+!Bqo|nWT!*c8|%XoFBQxb z;`Zo~c}X-G2WeI@x{pk5CbNaWlGr4{l9SjI8Qjd-xJGQDgh{g*EJdO*5)Dg_I3s6) zLS!WQ$~A5amfhLRkaeW!q1jYPRft6t&*`zORE5aqc&-pqiv-cqO9NDh)QbC;8x~I5 zPtaOp1k69Z&vGON284hm_(6d0cZGaYMI9rMd+i> zYQC`+OOv6ElIxb(`p*gr$zZZGYcgsqR2{UJA4<-meB3Q*g~ov??(m!nmN7zNr^er5`u_w`Opj}*m(SCaSnr?7HqW+g^=5|Nh{6F`=KR}aL*cZ}% z5{!n`j=fMZMmI9toer-xc}6=8h0X@kyC1bm){}S>V-p=nW@0?*NG%GbLm5Z)eB(@CH!}I}8+h~%wKXxTM=kHnZSnRwHUu!j=1D-Ou0sJW=EZp$$yz?=M z$!^}$gd~T91Gh8?f)zCGF|{T(BjS z%0qJ*ZU4vn-}3dMFAe-D)%6J$it^oe1HohpD4by%ltqicD-3JjX1U1{*>%&mm){^* zn;3^pXjwNq4(GHi7Myb9j(!)qdCftU{b!wHE)TT7fAF)rS+;#gqOM0c)om~+aC>L= zvXA-CmBJ4-W-tDTgAPI7ZEHSJ(028HBGwlD{(#jSeS&FW%odun`QM{_W>H#*{uUN( zF4}Key5Atw-_Z$HTF&a&yr|(3ICz5g;q_nZO)nG#$<0v>qin0$R3EjR+D)BD9iXnE zZla#Vp2rK+E7UKkH>tl+|H4!%0w;)o7HoCR1B<{aFaWlJU0@%$5KF6T!N2#X3*5Rrl@pkEQqV*ewASzZsNg>Oj$edTmRjw7}k_JgoY$&mMt;VT((itI`X=$W}@qDJCIz!s*U zu~inut<){PoSh+GQq0*aeHVJ;nKozJ=7`iF0@1RbL9D`gT*m&e0+<`TewKsn&BnTA zvcYWkz#Fq+?W+v;OJ_dP&M$5Zo1Lsk%ik0G%&iVajXRYLBSgTf9p+aU;~G;ZSl6vx zh7ee&WSa)RBQK2b9W4Kp)#LPAl+~-;ig=d8?y;?IX<6B7F|T(A2Tli?-C=sXz+LDj!>s*jgf)zrmUhpgR8!%d+^e5w$J%Xj=5+){()J= zv-~%35wH*;?XqroxO8Fuy+yc2a0vj~0V9mBUR}787R4>>1{Wc8R;bwc+ns&cFqp@1 z;2w8lyY1PJ8e3fTLLc~IFfM6-26LOVl|4PMs|$i3rJ+%K4)hvfI={fxCO+9Gz&%ac z*MQv~2@U?k*4E?(=9|b96QI4xt^LolwtP3vX##UWzg{|#|8N@D0eZFPj8G+Y_Vnam z4Mpt0u6?Zuuwt7lA@phAayPZvo-L0LEIS!%HxrULk@0k?9M`~@YzBibY;Hmvh}3=G zZ}ECGx_}ihFASr`baobPG+SUD^hnV`^ICtB{rm!@h1R0OXw@Fk5%!9?1H8K;$octO z=}r&`@SP&_C}0mkd$H}JPZx)W+O&2 zI4NBkCoQHA9BjlW)`v2GT7%H{q}T#;I*PZGMg98-r2UT@?k%7{|MSv-z{bMB=ie-i zSsI*H7J93jKmc~&1Bq%rZ%U60>I2wQ#HJQD zt*{3cis=rg1t@a>iPGo85-${shjgPSMgkIIc}2o@$HIl#p&Xgr(ScYvt;@++PIre3 zvrHsxp$`CktrOc$as4B%y5p!2>s0qsNdozc77j)0YBpfxFqV8OYv*+1FO%*83URwR67U)1(s7Qst60R!vjH|aIfqj4h>2}R3^@=k)IA$S zWIaxFt_4&QU_Tj{XHGdgLjbb>ln*6zcIVV1{q0h40eb@e}s?s^G4cYiOL3HkIC7wld;3xX+mh#K0Z#b zURLj}Ulnkfzy>WY|V1!iyPZ{P%j3Y;wglW(51t!3X#jC!s3!zp6OaFYmBOI4oyn7yaV_*ZYFP1D0v>1wi z{Xy!a543-GezUt-u-9e#H9sTvzqc?GxZh5nRsW%D#kGnJ&FcL9h z$R{7B_ET3=Znx;OCwko65H@g#bAh=hhRvN&56IaaYPt)kOvsL1rL3Y-EM`@8)MFjwV+pu6 zd(sE6gBDY8CAlmK0*oC(%o(IDVL3^!&VcSIl^q4VL|n|(!-y<-k9C6 z=x0W8VDsIahq=HFeiqnG(XCDREp&@MdoSmzGr6p+E$s!2 zXr+Z_(Fj`ZLsmXH$6^BV;2#Q&-bM+dXfZ(bPz$I7paFaVe4|>_aZF{{$+m~c#2g`} zTwxMFMS?Ob93oymi>>rDv66}5tCM7o*v=$gYq%}rP%!~uLWBYAeam|ATcQVIy1*n7 zT~`45q-BP<<0&G;G0795pNz`7vrJ;ia>Q(B)i7I(1@md>RzdYuKGgPTWU=jvxf zg<*#xOr}o|W7H9*$GBDXxVL)LZC&A{^ahcMker$Y1b<{^7~i?l zr-1`I1j}ORaeMo`)>KrvC`SWV^LcU*LWi9N4f4nPRKNCuBf?0{zdc*_e-#R=*R`2E z4QKIABVq+QfSi0*1^}%$MT3Id<7JHj(>X@_XJi0-OwbP0I0vnqB=8oewT{KKAS53X zn*F?Fw=hEV{ zV+UY*6d5jwb~VvqyO1#1>?n@tWP^V`XXZQTd2MUBPHT`e`4QJ^>`+(_BY31B*O)dS zkM=zi6QMb-(ZKku2B%Bl0fU;Nj1V?R3TJVp0pJ(`FtG@0WNcm;n}}y1CRAtPts?HW z1sRMy@8u0{T52>H)W(#D4%E?1krdm1_!OtinzVn;zT06I z0YlHi$f>hA1ODI{&^ap-F}gc>OF!aSn`jkPcO$fWOrpzcb04&?Ft+lyZE?EVE!!^J z4z*rdhHj}&0`@2`Ng-d$Huh8Pj#U z0T)EF9k5IS3m<6iXpwjeCvni;B=9B!XO;zl#!9w9nlGAsE{ny%vsr&=HZpQiKnEp= z2i#x)G~$?co-;tZ85!ldGOgqx3M1C$GCK;7ti`QBG8t?a?bouBYO_S@e+ z=KsWDeHYjdaT_{lgrT)u2ZJXOO znK?r1>;=sqS(PPBE>ofZYceQMK`sqzA zy9W0^V}0=Cj*}KOuG@dn+Q$A3xswlBzPvxbyLHp&KfkGUcYgnuEr(9dZRl@Yd(r-N zjf?27vqo3Qq}sw` zD{)65(m2*<4qd9Zz%;hFQaL{;Ojo7#NhY%Ttjc84MJ>*OJJeiOWo0Sd9^%@_e3Xjq zt{$wrxRCBQWdNB8=Vao7>1G*GNOm%(9^zy|la(S&xD5e>OkF`sR(M9DBQyYB&cLsf zxY@zCob5dP+Po|)YiBf`MH_zrfTOWlomJ7Ch6s|jA(LN<)TKWKQl&p#owHTkXt<1kQ zVDa|#B7}tIIF?dSwphZzKZ|Qt?VC^#m|W?ES#kh)KL9?*j=kVwB*g#yR7~a@=UqAL z@|?@MZe)rI}fNw{^9VM>mOeOdV%e7p6?Cq2U_7 zPEqsMnB9_5SOT!9_0F;;4V=hw4nr>uQzk2fCTB|Z2IWQrtKFzBy#DGF0<9j;p97K7O>SuXRV@Jk}Jv_Tee|ROw8_n*}9FGYu z6Se;Z%R&p0xYf26f_e~Mr<$pDDnoUZ(R^IWa#Hw+e@Jqu5<7xI`unf#UohtH+W!6#=-p=e*W;4R4gBlS zkv8^?e_yxF#I2UzdyiV9{e#}m+-7CLUW%INIYncyD#87YJ{9-hLfJ9TQ_)fV4NB3V z6a;wV{+9gLrO70BaS|W7WrNqDeS;^H{mIEBdOevOOrX~X6G@zk(}-?BW9lxeIgGav zwGN()|3_6uw(>RxD%UjX(ULK>vSMc<(Mh(l`oVt}GCC=y>^_Z0zEick(!Va<6%LGh zf7D*Qe||-&A^69RXp2gD^tR+EYV@6JZyCG1bboOFk=qFSOHKOkT3XAEYHOH^>uv2F z+uC7Roj}W(V0rt_AKeA6qm+?9RD#g8W83+Inh?*A=}Rk>()+S<{N7AFxPl&U}=jP%2SK;B|mW-7%CElGh=hncj!%eJ#M@KfbOwN>eb6PlaV%%7*6IFO{ zxI6r~d^hb}Hz`i5*1?JJ*LX5!A+>aJGG-!UT3gR2H_GKmsA=2{6>+haIuYYy$7pOY z6a8Mu6lr1@Ba@<&A%T-9!^b2EXWH#Cz#sqiSfw_;&+M^EUHE^_9;>aB$G1H;Wi3$~ z5^7-kipVfj(HlEvR&z|J7MU!PCQLiVs=8(G(bFz7qG_rM#wqEXO4yucc@IBSY9e#t zv61)8lv|EopOnr@OsFqYl=teSdIlez8ugV^T}?DLDOo=q60LgACnm|NAYq~cY?AVR zx+T^KUZtm7PEDJ9nvkqNTAFgAn430Ao4WE8$HC_oYP*ilOU9R`%yB`NGpAFhUAIoy zKVc?-C9t@>OZ2MI-9}rdZNm5{`X`loHY~r#a!_r3JUaf#bZF~Jy$Ab`Na3}iVRD2# z4f<-P=%Ny4#+SB}MbZSRXIgaDbW7Dr*c-NVCm>5Fi^R#%-URj4v9JavkJ;&`)G5=h zX-7Q`{vyTcSZ)}KFK^)53by&r#0V3H(KD?VmW z_o~x|of_s9CWxj<&NR$`?wxtgn%LaLlo2^GmYf0odo(n_2)RYiyxgBgc|UFX_gGp# z6UF`vQu|a5B6F4TIFGtOACKE6u9=wQmN$;3oiqdX(zLECG81^t3w^p4yiIO~W|9wj z9m93SiDPD}Gdz=fPGtyNleQbAX|}p1j=33}9hw~BO~Gc6X3!#=9?TwNpS=>FPswJG zj*`VTaqJ)C*{R9V{uJ#6=@?jZGc__tgHxu=JC>^Bbs2S~K3?}tZN!-4p08%m>Z>wD z)AI!7&}h<>MO#NNWpl&t_>84}@_rBbqnF~EhHCtb{*Djcv@3_+`?>gEm!j9vzJI+j z^p4M{y31?E+vr+x8%yO5zpX{xmV+n z?^gBB=;K49er~lk!1qc+xPSEXr9;d2a9h}ld^{m8o-pSQx3MOE9d2v|xih7AfNE)d70#^IkE;AQqDTC=d^qh~ zIBCus?&qZVZPfTxk~>510x?st6Tvj~zNYa$G9GFje?vul480E&ogfxwnl>g#FDH*d zkM`(P3Fz3_ZS0TVUv^vN_D+l429Al{RnGQXL2APKY>M)qncUbcm?Rwz^)%l!NqVa)|EIb#H2L07P_9+M!$bwzk#zt#N>Z#k zh9)h$hI#yzX%bpT)B)4=94nYn>`j*DYQW>fiBKE|r!}nYGRG}_PMv0lB>MDg-bwf} z;Ar?V%;vFeJ$zDmkLXLv=VaeszD#*PhlF`0uBp)BY1L)N%$F(0gEmkDNmszfH0ZJ8 z*q5mVPgUh^C6<{UUG~27XUcIoBxoljS1Y1)D!L3DXa4q#&}|L4o-iSs#>M#zykB&z zX?z;#en{s`&A_P02=8}&JVb<*W(Q_MA4@aR`{}|$)!Btg1Tcg8n3+D>STJq8G=!;| zW+y7^j%nA&M}fN*%p~tkaE7B2R%bvT9}R6#9mCV81BT_?E7KSEV7Dsx84B18Z+4M`-%_W~!596-LccbXW+~{|g4{32najqHsumAQ zL7k4cc+LXiIdY70h2wN=rMgJn6=IoPfB1Czlg`7RpikYkd-ra)TPuF)HPKi(bft&AGXMWis180k5H1iOnmaE7ABLR>b-hB7!+RY0-I zc(F=SHNf`)7_Jm2xO1h`y2R>S>B>6Ka%Nrht&Uk;jz}HHn}wiY=D9v?$BK3H&hG($ zrSmV)fP+2f&s(?R&W)0IJ!X>qykP}MsQ zFBH}J^A%InJ7vV%l6$Af|MGwInN7v{pbh@#h^3x2r;#FZ4O1fN!lMR`Rq>~z)( zqSfN@SY&Ix(-{tK&7bP%GX*1_p1HP_Xc=$<`s-sy?(p)m;dyY(MOq)OYU|kg%f_lP z+7zu*XV3C8O#E!M4xjB_;YcR!hF}{_3k!3SbGFj5=2rHs#Y6>6$D z%po$!DLI7qxs+aOI;Rh=9F9%HP#=otAWHc|z#De;cw-ITg*M)4lf(a&B0h>BrtSQAkrB709ZAaGUkk_ z=Ap`DF)BVIp^L@T0JV$SPu)lzqMpaJ@tw&~$9NfBSk{GUCLGVDc-0e84k#mG_dxQievn2rPSwx_FlQqv`!7uU#>wk%ncUH-%*JY^5;}a)t<}H zuV!kYlHKJ=PQTOXS1-Bvu8>acFkrS%53_%Nz02cYi)P zfi+Y?AFl18+USzZGnCWgUhJvfK|M-+i~1$?Pf7#KB&gCpERM3 zQ>1f3h$OOdY+N}u-o0((UZFEjk>F!B6YJL6DOl_1sf#V_gl@)P4`jwsi`6t#+(RyY zt0H~wt8}x?6{Y6W(Xb+O^bhqzEhL;Ds6de~mX}L?G@U+cPJEgA?yrt0Q~#nD{Al`H z7047WFTY=YK_xl+r8Vx3ckjfz!Z#VqY5M}~1KmwMiFNZ&slNkpIw?Co;f#W7l+A_7 zL1t?v_;4m$Q0FX{%B0}*k^9sL{O>gzl}y85R^UQ#VWpd2UWs2fVO#It0|kT6QBe;bpgu|6PkoX4 zKJ^;)7wR9tj5Xn0a1z)8PCK@`Fiteu_}UDVCT&s^unUWmJXQFd+;d!hjZ8RWd`3=( zWJj{FKU&)J(-&NT9;j5!;eW05dOJLfT7z1BvBQH44=%09#$UhSg0EC$$Zyr2TA8B< z=gp(H&zm<{US3^ZtU{7{=9y;>aut{hH99}(`j5klj%>F6htv5hb^r0oZ^S)PWS31D1dR zunpV-4uX5YbKnK=-_Q!fuoo_c>){4?Is6#B9o`E+3!jI-hQEVv!GFMiBZv&>bhHcY zLFc2Z(Dmph^a*q)x(D5lK8yYn{T}@ly@URR25FuaX)CSJLAsu9raS0fdLg}>-bSBW zZH$` z2}@@%Pm?=ju?4QO9IJ3<5LRac((+6$-3s(x$Q-VPR2$>e3`?$T1-M2vo6BNLAs6=J z^0{~>E=NNg?lG>+kt4lGC2^C|*?5?BD5(%`8*TvW@B?fJaJVtCc!(pVLb*8UN-l%b z)C@;bIZ_EpP2x^tjOAE070YGiR4l6!sV6I3EKY8b%z{ju13D^VIlzYE622~+jByh7 zrdt3uHUc1M55+kaNKrOTs>Qd71C=A|WpUC=+~PPEarmDlr4^M`{XhnV)~YfdOoxII ztl~T@c(a*8*<1_A0ExjlxViX3T*3@w6=ajDl*A~^Nh#buRUuE0O*Jf2k#|j~&7%ovz4{;@&(woYqcjbY&_dVMu6oAkEAjEv3OkZ>1@Cy@lElyn2`u| zWz`fL&T@FHbF3W8ae8XJ_&kB?z`f5&N+^T$l~A3w!la8zVQDm*^J8_%a(MXkwN_5W znJHW-r_*{gMu-yO_9kU}u}-p)HiVNHYZ$W@fcc8c%mIXvvnpnpIHpsK11^`+?*j1M zkVJ?PQ*bKDk~&q1PzEBrNk&k{Dx1gxU5)FUPNV@UN{(T{k*cI+56j+#Ee5wijnqtVu6^GUSQ&Ow$jgcm=RGXb0FK?Bdn8#uOYRf0Bij7esVoW&>!3^3N2Kgfty zhI6<@*4WzW_Q_$xYBC%Fs!{Zhk%t%aU9)k)BY;(kYOM&@D4E%LaQM( zSTVLN?hvn<85e7ooi-B{@C5J3};UGquV_x0w!l%`(rk ztiUhwD@L0^;6;XGX*Y_jkMamvS%@)2Tdi)xgH~4bNoMUW8?xBEZq)5sV|6%rZ&oq} zt@Q}oFg&D9>K7dk4o0AQ1>MS3#v(z$1Q|W@(ONID{+~!R;1S2`-NiKseQcH=I~z>>d8Vsx~2zIotj2 ztz#@P?QhKM|7YxENIx#=)-Pcs7sFb>wI91MZdd0Sf#|j1ei@dsS>BpZ(Q?EvHsq%f^Fzr@15r-GxEwgi zXX|FY$U46lB^#I)YfrtK_Q?J@G0Zk~?ltJf*)4(x2)=oVha5C*G+1d)M5xiq)-gsE zxH0N{j3q7A(SlJB84J&gyulXBKf6^nf}a{$E3(?)s z)8F^Oty=mT&}48id?32)#KCRtA-_qq8FE&?RrQ+~z~>BtnXv{~x1~vN3SfDXb}3T8 zD8N>u&0@$vJ3@Sp!;&Fn;SH8%L!EK(7Vy&5(5Ub<&s$B58uli^X81_}wfj9m0Kf*T zb;AaWr&&oa&z_^bjM&Wm+Rtf&WCI}yw-(Ydq<|+s{6V`mfD9hw!ldG`Vu2JDOf+Zl z@)o1P(qT5*IP(kXg{sT#^+i|&t(UTquIB6NR{QIH%f!{PhiURHhAxNC;0V~8kzk5u z>WrQ+$00uujWlLz7g`u_SZCqErCsP|nzze91SfThhB*w!(DQgq+Xf@gIYg1iY+tVg z8&oM}YRk?_QgAFSy_qOl-j5 z5{zxYU<@ua({UgWOa})-455U41W0fQEr5X-2n6gA|8t&Zy|cwF-~Y2$8tLi1`|iEx z+;i{mymNjxWoJX3;Cy)Vq%k;X^yR(0uH{lgae;lHs@+}**2;|k{&URt=ZaBJcA z9Ho4y@TJ0c3Xc_jUick>36Pvf&L-!ROUM=ET5=n?6OhV1n8zYk zWJ7G6En#i8lC5DIVO$>1ZUsd1I(9F6Cwo783@rQ#zK(C^+xfBlB>o!yCVn4(7k@8* zh(F9f&A-II#{Y?boBuoi8GnNR5vGtQSq4gq4+h}{YaMNGTD~P!MT)S2o6b)C9V-J#x~?pNN?WIG&<@eIXh&%mXqRZ0Yu9Qo(_XIKrroW*ReO*2VeRAE zXPyP4?TTiI(YG1rAyh92r{ybJINnAtZN8Rmutowahd}~MbX@+!a-ONU1xT&ghV{OT zJ2M2{R5w$wx&$E9hE=9&rcic`05XbUg$>9engm#ZI7cBkffp=I72pHFe@P404znpj zlxCJtvt$hj0jk<8D7rFoSExfppmxoA+Q*6s zbX6OL+L|4Nn_~5%zQa8O013ash0Si(nVX@ihLEz^ZHC=hz+Zq3;GP&_BcV`eVyd8* za%|ZN+aN3`EJ^{gH)qpMzk719lg=Ojg%We|05*YJNvt{^cRo1LG7>ILma#YGKr2|$`T=ok|BF&}noy9?0Y&+%!lxBdU2 z&vNGhKGVa(U<|}5AfGmr2%VGV8X{pBWO@0hG07lF;tmcO{2zuytQzQh04;!XRuM#Z z=sdtdI+}udLvIe|Fdd*S$PkBW8|9WY;pDcA(|kOph|s&OZetpIRW_g%sD@3%nQ#?C zx4cWS({Z$oqTH}GIAoxrb%5mnJ2Qzs3DjT$xZQ{D&-Gd@;Aho$$KaDp1@!?nYUdUu zuR=^fow3Dh$ZVGDWe0vnRYC>D#>Sm&m#}kz>=N59frfCffun4f*mmp2fIh8>G84{SLaFdP+d zgKp9vEHJuiB#S$wzKS%ki4yG_4)g?nNoF(jmH@I&lO}q+Bq|U>@Td#@kLsjS)dF>l zTTn6>TTo-DZ9A8x>T4cqIkpuFg2A537z79<)=1m}AkfYgB~Efzl5B(MrwQJ#g=&mW zHIl0a+R|<($vsqXC)IC0+#hXYmY+9=9*hiKWOFbQ5zfop(*^w=V_V_c+~v}RW}&}8!H&j;7hesMi--8-MgQDE0h;tW+ybh)Tes9Zc4qatnq!;X3Cxf?Xs4FxIe?cn> zZy8Q$HG+CPfO6=cw1y}cC7|>QCcrlS5JOY& zMEDV|Zsa9q3nea;o|pP;zM@?@Enq9aif5|bMfdNhYQy-6R0HjN7uOaFrITVUVEzE% zLph+Q_!*Tc%=?BlGneew*%M9Y%auvtIJu~TyrQ5de_QhG+VQ|Dac1FYyy-Zy8xP9BCf0W{O2sW z7Vb&j8R&-3tBSbGhp1%|uCtY*)L#4K$jCL+aHRxv7HFL6%+VQ@9tiU~B^@J~ z;kIeKTLnb=Ho|gd2gY}!P^Sr#=#2rm*-*kOxr2;nB&-S9bA(7uIU2)%@8vpo9Gg*U zSvn{}3P_vjWM*2_#x4D`NvxUXq!EGyb<;>42gcGgHc8 zRM;^yiUu(l?>$K^Y3NcFIj!ls=0d}rRas4qa*xwMP#9N_c-_*%rR`1)O{e~Vy5lG+%l0&b* zEjD!%W(D2QK_GD&g9OM3$cgLIGw1CiL@9J}Bg%MCriO4F`O7dghz5XKqq$nhLC}k$ zgL)BwT72PY^~nM)pzv!-A;zfxO+d0-_ra7n zY^3+LK~L}@i@(g_eBj?bT46+HTp$Slgm#ODyoO}T8;em}fLiVn9&Dud={z@SsLUUov z(>Zp;5%e1AQhAT9^JTL4!`uS#P>=`sxJNX(Of$eP1X6;r3Jo)6k{>2G8mmg?EH^tV zG$9)&>(mrz=jg1)!OoopX7GF4c3H)PrFC&`E)^4Jq5&o7M1PI$T19rlq!rqk);F`# zp3X$V60pM+WolrDUB_7kR>PA}TTs;1wlr)LOgJHW$z)RbOat>?(iCWh<$jW;{N^+^k!V7iFrotm_ zDrxUXm)QsJ&^1N)B9 z$vbpd4RZX=54OX(MZuY_X&u4kk(@Cou*!v81HaH$UAC9gcV+LJ4tIM85lP4)5`=5n z*G4`$N6OxB?Fov_5dJ@uplyc0w!IgcsyV|$8i*I0Uc|oeyy{DBFuURPR7A|)$CG

GQ>hDr3gbjLjxXv}7DOU>r}@`bEMmSHxkN4i%e@$0zkU z7(|*eZlsAW^_mfonTUF^?lP-13KNe*q^&8eTPXswu6h2uf`JzQfxUM0!$mtaOsJvB196b1gd@Q`vB1#yP9ual9V`Gl zi3FrKv4pv9?(9?k`F44epCm9y=z|l&(ANwJGTLjH@#&s*vCb^{0L)5*APaX6~Y3^^A5w@4Jx@7y4A`8i~tILrJ4iXR3F{fM&Q^MS54O z^Z+o&2OWJ>xXIiU{YrU(FCAiXK?60&Bg=9Wv-wcZ3=AVM*Mp&cbo1oo6k~R)>QOm- z@Z?H0XcXDY>@E6+%e+-z$l%Nsx}F*^Ed_dLz9|S;9RK%(5t~I{k95)%qW7?7!sPHk zUa>D|RR6MOn?fr$E!X6x-f-3ET%urhqpvUNBcpbyl#Eu(j9BqV*<|xenXpr8CNn2x zR&{udk*ewh%p^tEcjr$q=$L=J6)j_|ra1>HXI0(hbdqcql)08RHW0Z!7d2aq32*5c zo0o01h~l0sraTt9{P}}=5!7!WstcjXc)6b zq@Z4S;IMH+8(P~xv=-_S3VL+EV#Qq*JtNZAjrk4ZsXI(Yzs|(S{#!VVJyN!I_XyLU z?k*QPFS6VW`!dwNt26CkUDJK~u%2Lt_uc?XcVLWCSc3BC{XUL^;Ik+tW~3;ylTdoS zZ-OAJ%k3@S*^itjH-8j#AXf&n_XkiHW$aI1?(FN+AqSbcf_=u5l~t&7y}MBhJyb#x z6^&k3*emdy zWC^S0qp9~+7+pukyT;m{qmaXYi$>^)c04)yTYf+=aQnirHljVob*}+qewuT-V?Q>b zH%Dx+ahBR@S>(@sn^N+2*%U8qyC=<9^RI*jne$e#Ku4u18CztT?s?jXCC2`&m|ScD zr}nUaZ_I7vgB7KWq3W%QV zW$?LY6`K+DVM^fnS;U#`Ghg+P%vKmEAy^V5Y^9PxC!{tnLbcQ^WA>;%F;4GS0XHoISz*z@FqId^O+9xAJ58 ziF_wNk6*;ES9a<6`Z9xMzS%^DGUU?X(i#}b`Yv#OJI(%k7Q8(BSf zl%lJy+ek5FE6PKh+EF%5a)&Rz&;gpqMyXae%stpxy$s#2qj9I(QuQ??5BYJ3noZ*< zcfcl{?rPdiF$fGU$=Y=lHD$ z{%vOH!Iui^DC?>X_eM`m-&GIC(aAjQcO^QeTWxepqi+>`Zi&p@oNes4Bo9-PDncJr zm85fQt{%;jZidyspBf51V7dPXdLnH!GmKPQa9by;A2-&?AMC(=Kt|0jRtx>%=u(9C zpyLhwcUTehQ4;7uI03!O=!T7D{`dj!pUe?aWOR9Geco!7|#+oA1|^Wc|=J z6n`5%-Sk-;qFFs3Wnq3#bc*KLyxufzra^~V|02TT(BLpm{t8Eb(N+m^3j z_NQXwHTs~g3}%*G&w}He_s(Fdi9W zDu7ao<}mY!OFd5o{=vg+XwugVd4x~xb$aiYFe@(E&a|{_y|D?)GJQ0a(o-gN{0ga0 z3@o#Xy3MBj+F9+RXTP5cgGooPNkL{zhtYMnoWz8>jJ%uBE9S2%a#$WH8N%w)@L&N` zHA@<&CEXOYiclHThezyDYISwjdhzODASw^_esCFw;-w@`82jTgaj3ykEeM^Ida&Gq zuHu?mA%t9h+imQ1>`um|f6#UQd%4lw^rESyT;F<3!Y(>(;*)N2yE}04tD-Unw#kIp zH}Yk$Xk!>!VsHfjOL|g+UfE>p2GtZme<9`k-JCJH-q5*y5r?Ij#w0fgB|hN>Ur{fy z`D-msPk@8-({KSZC1cVOOu<>iVK)g1s|ky;j$4<~G*97c6R8LV9;n@*Fkc7dyw zv6qFFgfK0H^$qnh*N$9^NkTNDQCKNSDg(lVCa9h`mIJU-52RhJH!RgLk~7XJ3Y)gb zNw?iLU)6@W^=iuRj5b_pe2BVa;;6H>zHOY2uUr0x>vXexz(=k-s(u}#EgoKU!f~QB zLM9EN(*Z~J=4%Ic%cGQDd}8Wn%gHgBZQn9Z8icFNi;9+&coXG1sGL&H(k!gQ2QjR+ zd6XraykUnj^B}GF8%NXKS(nyA5$Z#hIn2#ruT}N=_>l>%G=~Ez4H+pV!uz@8y>ARa z=_=rXrZYV%Yo6y2o!AaqSvoj2F)JsVuVZSH;ai$AM?6pj-6@JVH7&-VvxPF_WyGAJ zicr8J!evBLmS$16%s&wLnvlAnUq&~iNj|3zP}InL+jiU~lA8h7m#9HN)>0|Y@)&4r zIq(GGl>Y{l($}=F2f-CP*Oo2NKTVB|_8#3gAn;PoxbT>>uZt)4~V+CJunfcQB0 z24#`q$jfZ^MRbVLfBD(f%p&ymp3Y@ik%uG&?V~mff0qLkw2M-+Wn@!o!T@J5E{On0 zWw_@YxP-9v+1c~I+@`0VG@Zx;)9eQ&3nnt(83YUlwvYh~V*oC=!(&Pqn21Za-2K!Y zQO)tgc-;19=J@^Z8#FvSI^*&cm#nW{;%+v*&dXp;Jz~3+=0Iqe8QEx0$+88uHX5xj zJyjZ|C7e1dYYyRrbGv5Jv%z@He>w3EAbk0&D@w$wj~yw*n1PYkuQZGe_9ePkZYkT0*Es3nso@A> z4L-G+ZryN}6YJ7+B>-xJ`lW=Kk-=Tdq=X7+D`gd`+1$V(Ndpx~O9}?#JXRt(_%hSn zZeG#YayPxde#qF6?qs?%q~ykCxP*1&HDC6O4_`8|YWl1VR#Mu2#bIMcgX+Bx$vZyv z&J)ST4dP5;r=;#0x-PogDqI-jy>IF3SI0{YMZOXY*-6FlmMK8OdX<(OUH9EGSx=YR z%TJyt39ZC<=t}$Qp`q2ny=#@>r%+j#q6Uj3iGq}BL1X!HxrsPu&X_T`$2C0^{;P>a z&d4S}Cph^MyQ}vtE2&JI>(pdZnbv9^O})h?)`%G>-P|ULe(peX`sl+4hpl9Y{S7M) zOeaR*CaG@n!HzKN>xFzxJkcuvcGY7h1_e=|C?R2%Yf&fU_b!>xbRu+z@k{lQakt{W z+#;IA%6!zcU^=3l>&`lWoh2|#0;T`~0_%NfD&^!ZQRW}lHDk#!a%#=`1Idd0V(zDo zlEf7+*)Jr%mDdxteb|Ul)5pDL#c#ez$7lH(0W%mWAPGQ zGSf4Z#e3c$tX~XQ_jzD93#aaZi$@E~02d!pIHhoI&IEZo;NtHU{tHG%KvG!Lj*&N$ zcajg0kC1PW{~$jje<1UDoMM|Ur$^G$03W}JzK4FC{+Rxb5g1w_s{$_G!cJfpuuIr= z>}K{!_IdV2elXv{xAT+v`TTl*2Y)cf!k^<`<^RmT!+*e^036H#1FsOP#X;gwag;bl zoFI0Ho#HZawRov`xwu{2CGHpR5g!yE6`vH3JO{&JpW0BRt?X$otrwVwwTMeA=k4e& zP#Y>t*#Im7_!ZWuAwu5}miQQphA|eyIS2z-0!Sr?#VNufT&DvfiaU7#Ul+sFa@d*5 z8o?l;J~D+RxerJeR=uO?FaQBS%rh7?(~$WKz<-*Djt!D1gQat44aIMfVy!lSod^JW zJCk{kRW}Dlvt0y;81>i1JJjI-28?0g2_8Wx+{L`HJWOUT&u0NFk>(+E>8_|ojEza* z+GgBsV_ZYDkd4(?8Uwbekyteliy)ZGy#N5iW!OTnS#M7h#Tp3x5W(b;f01f7;?8Uh zLs;_gl0241X84x70CLRLhw_rdh;6zAi*RTkxG&_JrnB7~=wrXt5l83oQHavmRrXOdz?zw52 zH7AK|rx#4b(LBon%e;I+uodGcbKn#&da~ zU>!TKiO!ML1cUjYh^J%ANF6&j?|4iohQiu1!(IR-#b}*ID&Pb}#F#Y((rLoi92_%1 zyO?eWw@Pw<4x(t50QQCsz&iV_cHZu`1jq;<(3Jp<=z_+D3OWh_e_b^Z2WBclg_}jk z0`xOBGIyF_mT?=QaD;`U=PBzuSwQZXP?iTG&0&CO9>XeQEDVn{+j&+S#^N<)*6u1 za~+mji3S)ljF{UWd~a?`)*e(mGFiPgIkS`=St@N4=JQ4GpWT*Uab|usmh)|K60Ie? zGRnfRsB8Yv{VQXyOpM;gg#oxWvj|}htc$p0S|g|s1s?zr%3u&M23IhjYvfYHh82|t z3rrWLct^>eWaMT=>wHEJ!?`%2)zK0e86kHV4bAjm!Zd0+*VYF%f#qsy#okwZxKBHY z2etWc4Vzr|<@r*Z+>uCPQeCFpg|(}!yP>2-&na8PmM)acWR1yyYl1|Bk;9la(JaDb z4w!=~&31%Sa|{L7Xs$;izoApiKr>U#Ad%rH_kBg5|MBB>D#qyA9rgc62g=Q)1`7bP zlIu(fUawM8_DaC|GYXPH5yC$QIe0i99B)e*F|9@Wz|iquta9$ zTeGwC@9@{yGN>*e4ymhbmQIxd!25m`Zf!^J38erKIB?zIlrt3Q(ZFy`4J=&;`2F1P$+M^y6TxQGbQ0eQ3-I7Uw&U#Ikoc0BlmqyvTW2gewfI2#}xpqfbAVYZ8=(z0|1sP znp1KG=Rpi>KWPUX5Tsi*15o7J*bwnzcZw>O_$KO=StP_5b~w?57Mg?xZb^+8B=7@o z93yHBiyY&P4=Kylw(0ZtWon50QE{yTIJ5W8qN)2DAQ}HRow6UyvYKMLy)2}>cZqK- zb=6N2?k396%0~F|QCIwyYpgZ|z_}GpCNlqN~S}*)V!Z#`*kj_H_hYv5yB} zp5n7fFj9a+#m1^C*#il&EYGqk6FlJQVAyrt(-W67NgHwpj1eVohPv<2D=N7Ww22ZP znbyF7^=25ajBV|h(vAbhtg{V^L(7;U$fU_N&Q3yeBW3{I0Td4+-05DS+;TD71m15bi-LL zlf!prrP1h&vBBFk-99W`JGNtIcgs0-_ZR%CyVkA$L_}D4x8O_ck5@vy5se9wliWQTMrgBZPd|=@6ZCp zw3)K%tzOM!_Wl8l%8CMG=vNb#jvCPv;bzkp#Zk=(Vtt59UvqdQM+`cilBsY!)rser z5veABdFWpyjQK|_S(2F8a@USi$Fg*5lc*F0H8q&vFNz6QLO zdmFS18wy(&_N;h;dmGf-Ii=vDr{zgJm(wGwoS<-S_WySCg1fgLef0MEAFnw6_!XPV z%a)Zl&7X7h_U%XWNB=jw5~%Uf(ed==o9KN@cHDByjwPG3QYj;^fFnitAxcv_0|5i2pC%ERDQv(e*D9}XUY8X&3RFUeRMD@ ztS=l+$(yf0X{qoDGX~bS#%2<3r7}CESy`ox^PqB*1~NsKq7m8-NN zWxAU z#LwK5x4pD@hT4;#{gK6z-Ce?>(R#|W60k3p`25X_<@u9EUv_h?-@DHszH@=pb7GNj z=`R;u{M1_)kLdA5Be(GX#ry!O1?d ze_^`td^o>fm~Py+z~;Sp>VDS(Yxfho6@YAfP7Cp}XC&i(!OF6jaQjb>?4vKAT}-gO zZjom6Uj6*6$1Qs>X#4w}Kh7y!TDSpLXZOJT@u|XB3;$O5QQ;T=Kh7e1PY`>nLil{v z4SWBx_tcapUm5^>fcUZ{CZ%`ib3|^UwQVY>;ickFazP7U~!8f61{(?T&j^ zn(4)=*IT({$IUnISaJxe8<|_YxLlZgp1dzt#RX;h__HohdY@cW+HS7sgBR%;*}Ay6 z;}&b+qtD0*y~~!JQn;{iW#Rh5Er8hGQFt$`U>+@e4>a(J!XN(M*|X7{dwCzLw20<; zzth_;O6PqP6-!fll{Weu-}lkU=U{1mVfOB`*IvuMvRkR1{CJ;rxw6Ro{e7QZ`Q}AR z*|_%FyLMmHdw7xlJ-lD7eA_cnB|oD+-mvKNxrUsc419nYvJg8kAc?}K2-QyVv=#PksLuz zBo~sGkbB5|TLVYjlo*aPfC>|yo~?Az=y_G9)l_RAN-R=i6;RUR9&8({6pOpI(-A)D(u z1T!As{B{!wG(vnN>?f&@^du^u)6=eul6It~$sC3y^X^4Q&q_>!kW1TMxHFtZefZkI0KOqXE=HL^*LK4O^6lpA&Z^#>Z8nl_9YmOuA1!UP=2l}Rx>+78gyJ2= z;25YfQt8I{j(j(*MD;^n;!Y~ke#i&ZrADKyPkh#F;3jknT7mBv>9GL#tE5J-RnvK{ z1!f$y@?4P=ZwBvazK+b0bQhzdn%$hl2g8w=-={K5Fb*liT&7uMj}DO`EyAxzb_Gy1 zC#cCVL}xZ<>`i4RK_licBBhgaF`>^QMaC#3UCJVv_LD-8ix~5^!d+vkH5(?V%()Xa zhr4mEl3kgMBDGT<)skW43Ji)S(oaQ=W}2rpbz7J>0aZ+MK7Q1CWRc5a%sY85ir`P9 zrT%svN->g~>noq80{--}VxaCc%FP4BL^dY%BvqlQ#E><{j$ayBf!DD3(0JTTBz3ED z>dqBT+5gmmUPIOOz!g?`WXvk+tENS>K2Wz0jhB#{cg!(Wzxt-eP|XXN&bgZm63eu; z5;sPZ619o0>I0h?A!cB@gcbwMTb`|2UZP5~4xd<7%qS!7(%CvqrQxX58egSFN+T7o zoQkRDmZe7wgZ>GfvH2%uDo-!_(R9@t0NWNSu320>Kvy3yluXy@lyMwA$6fL5qtk(~ zxpT#eL7E)Vd)OPkb@(rDI(6On=tS>{%XzgpGf1g+0C&vUB9qk%l)`KSt#SmBtoM6T z7NqxkCcf+%!lf55Csv_8e|v0FjDV$=4N0POsuhDnor*G)H$pw9$mZYZ4u)0TYLA+! zq!)_B8lv;plnqj+^e;-noZqR_QAP&;o@kW!{wQoBIoxa0mdg5>^~O>+3v^@9^jiv}j0WPQaxMT;mUcCk6*cU#%utm~GNtjvnc zN%U&mebF`AVQiLp2QJ^l4pK{J;yY%KPbZ{iuVJQ9q65rfnl2O*&ivz=KfriqSV~Ok zf>ApJ;n|hRZ3D-<0qIu45?xZ6bsNQDU+5EqhY1<6GBZ7Qa-=pLQN^WMtXN*?({f-L zwlzSK!GWx1IOT|16*KHsdpmE9-}1p}*9z=mn;&{Kp>~bPDaIz$Kd$gf+E+7{5oQU^ zEz*V(pQ@&mh(VTVtI0odoBh5zmUvCW7Die6HI?X^V{~+Fg)`!DO;IUj*P=dJvk(Lan*ju9ZK)LjUrCG#$7J}bn7SHTj+4%Wn)zzHugtZZaaC7aJ(i9z|nRY_;+JU>u zk9)->#R1O-`Dv~_*c)?C9wsb$@!yWr2gj7o{b&fZbjjs*iPkRGhjq%szZ$aaU`!`$ znP9hWZ)`Y^8Q$zmw6Tqsau{lNuj88Szebp4VW?5hV+n5zt*D){+N}wVSB>9KrIF>- z-s~u%sikSf@fAMdON22@Xr$Ffl=3k1X8xFaJ~VS~u4|J8b@)9+ws!=LdRa%Dw8OPwCZFZPInijk*)hAE%;W1|!Vz>HKxH>dgN-tPBblyjLP8Z07^i$zvQ$HjQwWm&{mV4v#M5E zaoQ3o%!|+01uZjYs<|d{B#3md=q|Zb%}C;;?XyVj)q|F>#=`-^Zru3K=4JX{JwD@= zEc@Roqc*SIKS;D-CaA5fRmhim;j4%49Q<9e6xPUr>{Z_n0`d_>dLJyWZt@`TOn2P3 zi#()0{Wf$DDGEUx=28rO56;(0EEN_<5(4HDQ_8EG?}&%)UNzh>()FXg9cp}BS*F=5 zjYXzusopIs*VBVmRqh|CzWzwd;EdI*G@wYHV_WA?DRk+Em@RKG4&$nJZ&u!TzF@+V zTofMK=lSpQoMrdS!fOh56z(b9UwE+aemLu6fa(4&_fP#t;lB%i!n7n%y-~7)Y$8XK z^U0;;8uBvoDsmTj3;ApEF!>Vs3i&6h(Uex`2wh6&=qkF69!Jlj=g^Dj<@7JF~_Y%VoEa~Meyn}LBj>#$6l3jVa+$qnK7t71!mGTwxW_g>uQ@&B&Bkz-Mmk-MK z%ZKDgUnocJGoXY0@Zsh=J;0hhhGkExX7kut+|DCU@WtfdKIk^l3{cSv8m5BRQ zAOON|qp;jhRe$pni4n%KjeLULoB%j~&pIS;S3=+-7c+<(82;YEeOE9#xxR)V8p`tW zx^WvL^9jbWW1wy%`*fXBwL3^7i_Jpf#(WD8q>>CVWjcF0gc$S58%d{yaHhTR*f^67 zKsK<9$46xH+NoL;os>1QM>iC$BJXLOqlBvphq z4*Plh_-clarbDa&Y4`UPK`hfL)OUFw0BEGE$>>69E|H1AxZwVeVbp5oTiie+natTR z7Z_>NF7El!Sw$pifEQPiowR8zF+oy^)<~#GDn#82?-<(M#gfxLdn;mSM2_*? zGTZ`(^np8~Mg^5kb9{ze1bv?9e5hlfKfr7lz3{IF-Pz3YJ$RsVQ`K6q2mPFlB<-h1 zAjtqGPAGgthzLkUIM${ygeT2+4MIX-h1AD@kn-%AJTnFvol|H(NUm=d;6R?Q-^@!v zdTaohfVR3h{zeF%4`(d1p3SCx<^dm7wgVLg=^{4-ymBR&MVyA959HLH10nS}N#T{? z{xJlZdqK1EGLY{Y69qcm{*_?e03>0W4pJn;N7<(>ZNo`PPE0D%@x7AF_RDN{vsw5t zPojtKNMV|X@b7~>b2`$6^npcKGmm}BsZQH@9)N@)g6ySv>Gix$IjJf#3M??9A_)TY z-zpq#n2CWO5x=82Ku_{i2ZYj?QUJyv-#Mq*Z$I*~q7wo!H}tp4Q#q2^5buMY5tX@s z;W1mN9(UPnSLLh|$UUL}wj(^RKOb7u&+ZL!OM9Nsdz5lU1*STuR7N_3sndo9u5t}8 zaeR~M0S8Q!#I`@gO}^?;ePE?~nkI}*+9w_S|Cm!jyhDS69HSCuPe+`r=!}C zEp@`}n7L=iBWlnnnag1jsRyL2gzP#M(_}2pf)Rt3v@vI9j2l`wRZ6(y^Nj|bez%@5 zN)62r24)@7-hX$7nO8aFW?0!5qtR7EE&KD-vgUkS&w4)`4Mv5ahZJ{=Cd)}1mYy3! z2J0$-S-g(^{&uI#|?4w`1m8NL5}z1|~GRF%?6$GK-8c%j+FGF|k!(P%?S_fWdv~a8oM% z$+6y1%*AAJdF+5TS?>MX92n=me@vyCikaK=*t5xWT$e8A+zfj!8XF_^@$s+JZxQLW zy{k%!*~HWUm*`}Jb>vvH_tEk3V^S4(n+6-jjWN*!{q1HfL}Ii{iYRW(^afz<8Mr^u zn9-D!R(@>~rHLl7E*T3FQVY`Y!|@2u%>U3cJORMa4>)wQ)62?G1T$w&mx*D<@_sEa znyCoX5pXY4ck9V@V`IG!H&3;W{9zf>IG|!oQT@r{wej#Ro5#lfI6mHcQQT0D5WesA)0On3n_IN{R+YRY!%&>`HFy=~*)8PNMZB{XeS7^X)M!Zj&-4d_unl{H5* zQ@ZRRS~V&YO7F|Z^d@-%@+p>;3YZo)2&*N!Be*r7r_p%$EvK4}GWMmhD?!$=qub;% z{Rl(2eWCYunnJheW>ATNrY2i#utq^edaFl4amG$16mF=JnHxRM{IVn8kPVmu5VNHXj$!vQA9rnAXIb>0z z3JB{^DKFmB*Fi4PwB7?s(PQVvV&lvU(9Q8~DGz5tq{NI3V|C!r`f-j^2g9|28G&tw z8-zGjH9aOa+-@@SJ61{Oo}X8Tik9K`D@;Yd!a55Xv}9QJ4uDoMol^A~xatPZc&njf z>qm9E!#y;tH!ev+F>dO9dQ)zA-EH0|^GNd?*WiM)s}rV`l2A@O3(4l6ezhNW%75Yqu5W?TGVKJVj@BKMQN5_Bxn$NI@<%ax9t@YPI#f@jeTFb;g%e>& z-3qy7+thX^vc=tDw?ohb3n!y4`5d((9>-6EVqTcLX#>hHmiPFY{ ztnfiCQxQA%&@tLzo19Af;4{InQ+lf91ir^SW;-zDRSk!E^FI(CEO}oP5HB1a3IALO z#vT-Ytbf6<0~zw+;na^zjVKd+Ji1*qBBR))Rn2E$=H`E)yF-c#3N}P155^NGD@$kW zYjvO5N(VSP{K=^)@_s{C8nbVmTn&cF~Es&XSe?b>6=U%^kkHH~cPVP_okuS?BSdjGxcYnJtP zQv*fbsfvWAvg(qb1yonP-{`bnREG0-sQe0a_$7Gl58&;jg#$kuC@S67p{wzHs&-w! z83`A)w^U{?yquo)lagUDke!kh^0JBRhl=<7 z2+RLTGDfak+@RjqppEk%Ab<8%G;JqV8Xds((vUy7(ralZIlA9H!9&y9526p8p>9yN1GvWiA{rgdiNvL*baAUP9qK=EeGZ$Hra@(}~x+ zdw3)Ys83!=HOrd+LDjUGTL(o5T}%&Epr{sVZ0`WJe%sK>jFTZZV)O{Yt zLCgfN%1Js4I-L%ci8cvCX2yz`f61P*PJ*Bt*G80g1VLrV}lw+bxXuT|&`C>E^a zU_KmWaYsO>Guum6m|B)HS~2yQ>JM1Lc$^T6`=FcT6T}Z*T?#|4D?PTrU{hEU6b)Fx zm~D5;7s?hPwJ+9$IvMOGQ+%5~<47`LadV1GwkELTVNypHBdQfYxjKfk#QiJo;EbFONmUSlQ8r29v3QN~@ zFpli3y?7S8g_VU3g_8A%xo(ciFPma!?; z%J~-$VjFYM+e_K??3L_W>|faT*-v5OF}cqZei%QBAHz@M=kg2r75r-cQhpnMGryNV z$UmCzdi6#A^_+X+C;V~#1pfn{7X;R!w(ws#592fV#P-j**vOgdaQ9uA<_u`KDMjuK zYvRsMjTCd^5%cw5*_vBPVx+oDS{?Y_TH1~j;D0Q*3E(zChKCN4 zH2_>BO@zPsz8uLad`^uUwc_*jP7NQKCn?FXcmAlkL+0{LV(@dT|1><`wl%`+egu-; ze$G9h_BDY0@nJpg990KMPSS2C&FT5j$JWSejJ}k{Y}`dMh@3`3#!FjBXIDp$RTn_- zXqvMTAfpA`7qD%AyOW&7FYQ14&SL^{&WxOdqJ^Nb&*#|5ce{<}>Jc0Eb6Kn*oh)pq zEX_Sv1c?XwgnCl>5$*}&E2M7hwxN8L`~1QMibeD^hFJ%h7}~h^Ro9`&RWa8cWhzu4 z@kHUN5qef~@`TQ8(tu7tXpMe>j6ugj7tdvWcQjM2Ex^Uk_)oi_mZKS;HEl#GRT~fP%894kUk)9=Q|>I(gfXJxofqVb5vj_ zAqm1oaD?xS1w@E_KpKoTQa2p-;CZUe?l^jVP(z!klMt_SmWOb~O zoGSzKwlZX1==7mKyh7ajtCMf!gp3Ao+dgN9Lf2($HYdB3S%L&0vIRq4IQXYlh?mnNRO|1-*`2`_ywK!7ICc|1oObf);l&EvRZbmou|;`(X?)NYhc=>ZX&YrlIaOyX`8Op?x2+%y%fx>Mm)w zVwJV?0;N9Hrvos49ONdGi3h(1^Z)LymxP(%a`}Vs;C-dw8Sy<{<$&-MW6(o_UsGztqzXCxV8v<>Ko}ae zn2@~(2GZCi7fIsToLGctdha*HOOG2|2`e<3Qo&c3SCxHrFteDcdRvQ})X2vKtXp}n z$#tu=opLU8&~c`F=2*%iBaZ2)?#cs2wB0^g7PVHLY7+*z)Hr~X%@USsP{-z9^!Q1%_}sES}92-EEl+R51LXbTTqR(qPoH)AIybrYi#M3R9|?l`w%$VrK1gZ@B;+gVxTB7kpTF%k zR%L2XEF1F5OLV35bXl zuB#4RzUR5sJu}@C7?8i8|2t6C6>i;o&pFRI_xauPobPktX`3j&O66#3+u6zv^!Uv; z_b$@}TC?|jWDG4^UzPuQKOA?$=7~Ch*$ka%C;6pSvNmrC5#-DV$WU zz{w!^@XZ zA5`5iAZaYyIDI~ z9u#zf6DOH*bWN&k(t9yCG=#p#P))yBxA6l*pzbfFWQQNxq6 z3tN_p)PSmrY6B}$>Ow~_viChOX|98}X}XI1=hn5Y6faRoIG8MqPo)RBUDk`Qu*Y&m zO~KN`R2tHMb-#hj2y4LoBUtXu6-0VvSdmW*31Z5ALTxS`d|weHhFwy}?EUK~*Tf=J zW$awWijIfKE^$1Up36i+QC(tGOn+d8ife-KAqaVYlxl9 z$VTQIA*7>_UOdn;5wF>GQ9YFm@YK}g&Q3@PA14k+54tuD>|RM@mb8%X5zAA_X;`|P zbd0EUv{qq47hE&#Q6X5t9oa?lZ`f)gqoS6Xrlx29hXe>$gu+tU2?RXDidSTU6elqq z%XkwGo>mq&+v6&FLN+%q8dqJBRWS|1A$`Q5Rj0?zcd%wP$8>Q^Y{vDZi`uHflmVRtk#)&?RJlgy1 zqnY=s3~^@tI>IH&I9`OXBWq%$5O|Crq8aMM7B!RUHAwV}AAM!!gspdmQ*r=!^pas! z8B8xf7hTH-2DrSOpl>$LdfV9U@y=hpeccHdlUyw``i>W_PEQP?pK`fZJaaXpCP)8K zd46@pc&4{gqdM`*MyL<35f_y)b)!+D4bl`gXhDt!j8e)`?|V3@28bdRH&;c&c0<*s z=}s+$K!2MPen}|3JmM66sgyKE39?-~uTx%8@yve`F1q$4=PvUzML}t4Y|_v3{7VW; zrQou&RxxJycti54M$qjz$5@uZs@%t@rcFdq@4@AbvdKqY8ikgVbIW*=(R@a+ z4dw_1rv){LJg(*_Od&O$uoYHN z-Xogj7qQzCnc}+&xUkb?Tn>a4-$nRGQA(}RFBfQ*I=PxVEC-;KDiQ`ZrCh|Jyw18v zYHrmL+=RdnS!3pBiN;v(ZN^p}uzkm+NUuje^Pi|m}f@D+qiHaj5%n$)dqCbkMW2;ii zmYkAn$WtE-xIr!w;xVFf{>MK^#{x!CfkEFs=MY}vbYf*J@xjDL6AvdomH79>&k~Quqk@!M=mGT4=u_z1=-<#|=yy1QZ9Iq<;Yqw$>Rrh7 zyc1uG--rJNe;R)te+hpJe-Hlz|DGr$Db;R^YSf|w(nA`jTj@!3Cq0W^NH3!|(Z8j4 z(znsO={@v=QqMk2KS{qpza{nTqx4tw_pzEyvN9WFW30oLvNdcS+roCRGvla|E7+A! zkDz!2rF&#rVy7NdA;GU`)q^HXU5hx{w$E27+}^2Z@Vk<4^jK^RVp$&Yggiit0hkQv@kljd6-qh~BPO zL`xnD*mP1>h<^U!T78fMo39@)0jWdlt(p(y^x1r!-9U<%ZeM-J3cS{87Elx1^FA`M z-UPa1C+cGsn*dn^VJj6>PU5hkM}2u^^-CasuvPe7YOGFPek zIPfDuJHruya$kqW35)UWcH^E?hDsW2uaE94b#xVU1;WJS1b{vrr_<3n<-AX?|BaZ2g zS1%ALe!FpuyU!pHA{m1vTTzEp!+0JWX5>44FeQ|~KD$OezEJ^z7b5-&;*e@_d(8q0 zp$#hS?re%z2zzLE;*8FI0l{*CT8#YXAcFg?9KY#jtc5qwN1APjF@p97bRp;-nEV{$JV#XjI6P94lTC#&H{vYB-A1Xvlr_L4hL9ei6m5AfyIn^#|)w2)V7B zofvosTa@EO3n776h}fQB%>wB8eoR=m-ik$O6VgDt&^H6fGu`fYOL(sLv5asNqEoLx zM2i%cvU(x^0!Wtc3Y9FeoMI2G( z%i=cUwHI;t14QFMTz-EoKpe>fH#r)0X|?c+0^DVp4N*zfMF96NxTs9|Nw{foZ16*8 zp_u;YLdf9P2X?e1*~A$^`3 zWPIEQ5e9wuerRHk)G=fJChO8Tn%M1f^6&Ph+5bhoxZTCq7yv6GwZDE z1=2Y~!xV_$y$^b58Z*-SqtVD2s$Ic)=9Q|lXmY7kgC{K6B3%qRW}{7*uHx%ci@ZFk z4f;7+Fm@v%#Oub;(o{85lHMjm+M=X^EXzwKJ zQkC|ljFp#XM(!|rJ?Vd;X|MOu_-s&3?Y&knZ{e1{3%!s#UTx~qbY3ZMl3MzmdvDNn zsyhbK$KD)@K+Sup-fzwAi&ML)5sVqh(=^J|vl02iF8e&DtEUvuFO$+`%j8Xs8H&w^ ziAy}9n1LoNRyH!&913&{IVCN`YFd$UO}8Q@U0|Jr=>d8E+Mw!JOVY6xR$Yl?BYHf8 zm!OCQ=?u3uL%Qq=i4=3>K}wSaOnAXWm`(~QTB&SaMOCHV;*?`V3W~?8ozhrys4^s*Y%mz1IaIvJNGpbWqP50l zV{W-IqNz@x4Q03yit_~}h#gnhN%MKji|m@4F6bd*QSbBUI@8K3yQ%U7H-&&1cE|Hf zPI_P8uI6})6FpdLn*TAiOW5C6N~zUsk*i^kN--6Xm2Rc#^OC9frT4ZU*ol;hOiUu{9nbTXgUbptJnPBVM;Gt$ggv`k~; zp9nf_J>w27!Ng|ewx#|6p))@tOs@K7MLzW(2hfQ)C4dafDP|*rsA7`4G({(L`iw2r-6nA?HzzLxv+AQ#_L2 zaJrYII5oZ}8m=YH6{i;6AzbM^&n;-9#+ydn@l~m%9@=}Brfo$VPb#WR^;Cp7vE=Bt zbnozpno=-RFfKBaAgap>99$<%ESwd(j%1}W%vLOI+l)GlsCr>ax6%W{D|BOEQMEgb z%FdD!df?vMMekbEG?Ph(3!w^~Ap@zhW?y9G9D{CmlI~xXLuGi(%TtGV&Z4m|&-`LE z^KnhP-nW!M8T5pz3V$d$q8NJFDY26+MMZ`4v;Hz2XCJX)NscKSZR`@?WQ%cObn}F6 zZy{`wuNGBSq8G~nd|7*f@ko97nyJ4H-|kUtVN#W&ZdP7%joS#flR_x!gl48J&CpI! zrKRax3@k6*)HW2AGNUUr60koUEY1J;=m8b}01GIj`)-+34~euc9jlixIcBX>v3ibb zN%OlwqqZ$~h|BUKfViKzDkRmhDTVHl<3Es6<)wb#hbT!r4QAj(qM7I>HYZLuKS^yImDP8!Q5==Y zceI*$_u&A1L-TBeK5&?AW}Y}wH5~%lTR-1g7J~Km#To>?f z4sy58+;1!U;dW?vb|ZTIEX__oq#ow1<;-KS7pR3JGVA8q%aPc0vwJyey?p7g(7At{ zZ!{k~3~TNqb9*>qWzDC_eQSZ`%%jKco&Cu|Rvgq>HPMReZENDh#HopAC3YvCbM%@^ z&Q{E!9Ju}C&O-Lv>=*GbpOotcb$8uHwAPyZfzfj>h(C`8|4v+;T>M)W%RlnT6{ro?>S*nWeX#~3@P^TKcOF)+gx*4-CpsbB}j zvVF5mupi2A(Wefsy5Ag$`*mm?&f|LhX@51&<9Xd9x9hR_cK4p6@VXA}!!Y)3ke1gU z|1M5k{^T_aSG@WmEUtsczq!XDY^~W}C-)DMN8@JA>(yUdfXIp~^{jb=B6^*CMedmg z!@6N!AAj^{;H!S!e@E8fSKzub+nt{vvLSljyrHspx_otjU-fr#bNQ3|X1)y-|I33g zRSP&(b2dFTJEwG9-0u%q^(Dtr`*U_(?{la6oqmorbzm5n<4eW14qMLst~$FP@+6F? zh4y{_)mIa^!aT9LkAF(e**VMg;ZIjW?SJsMMieWG(+q;*P{y5_cu; zOS~^$N&c^i&nBKg3B=&u9vVk0&_=WaJ%ql5zKOn%euRF8evN*M{)BZL;4HojUx`0} zKY~AjKZC!3zmC6+e}aEb5~NO6lQYN#WG{Ikc@cRTxslvPUQgai-bwBwe@{M49wwh5 zUm#y4-yuIIkCES!-#-O56SNb|yv6-xK931C+hG(m+YR~T)*1pP6d;$kkR1wQK3AX^ zSX7yie~W+~t5;zGX15-qsL^SJ{YO1UF;&GZiYcZ7O~ms&@gz@-@_~1-x-yK|{+AH1 z+JFU`-3H8hgz;Qi9P!qLb=m>kAMZj*0+?Wm@BZ^RH8>aDM%@R@6K7Qt5&2cS)AZx? z*8MrR5GE{umDCoI&md+I&Y%;yyjFKf)abf#gkn2Rz1*$3yjiKcRTn1MfSe>hf{}iI zCS{o2sLL{yflDMEHHf@y$KiGIZ>P_$iYLWZqDGw1Jg&#cZMyKKtlD~5?Z%7Q<40p9 zRG)xsX2rPJkk%aL73Ggmj4MJ!BuNeOGuPu>(Njr?zZDhHY;^h|q_shqLZpX6-YKJ#2CtQ`=TOCTZ9PCrW;RUK~!NpuPK0`1zDPaycIVO?SM0t6z_i9`$5xW>~pkVp>FSV2|BN!I&`zPN~5FvTZe z@qWEB)#{26Cg4!J11Z*UJRyi?)2%_Cyr^#&%{WDO6%wq=-2*ua&bTgXVAk$PozEsC zgTz@7LK&|kjpse#1+chAQ3%QDVWJjxCT+ll%zE8M5f+xhj7?Mz3bV~6fZWvQIU#6$ zSj+Fj64{EhF4@owX3`++F%&g<8G;4t6DZKP1*w@_}S)nr3am~Uq^+_U$shE zAJbyeQkHJOEK zbA$SO{vHpK_7Xv{&wL}v+>ECP6MgK~-Me?beN#52a?TuLtlpk(wDjXn6(u4(qfU6S z_mv^uqL#&0pS=G5lT(W*=hEs;K~|s-Rowx?^+FU46(&)!Q&(%I|HQ?12BA8`-0~4B zpt6w?zN-gyR`nWgCdiXvJDIbBHjOTS<5ipYMC0Xa*3~DQBk1!qub|$!?UMw%1+^dJ zKm2ha(_P}9^ofdrezo>mhu^gO6on3jTm0NxuROCCrlW~2U$TUR04?EY55her&@IG3 zT0}9X*dRox2$P`lxRpi&#`cEdrSy_s)BI{qOtec**>Ox}O`e_#wakoDu&mzqx1&ANG#R97Zg2Y!^s?uvwjWvL_ijfY*p4^2`i8=Y8)TjC(u(4^ zem+?#)P9uBC8@zp&N$W_8Wt48WulCXq0lW*uWa!PEQ}4+(vekGizpcmX~%ENC;95) z6e_js{HT@tP0bwE@D&kvsZTSyux0b{-nF#ix!DjSl~c^u8XBc$v@tnoQI9Qhh`!9w z>-8Hq)iS5AYE@C%^OG8SxqP`*e)O}5Fs9U+- z4q@xMj#E@~k_=H3y$CUkGFXwDjB!ZYeH3idYr(7g5c~E|!P_{%Ya;*k3dCQ0E&FSf zO9h*8aVqKWQkE?un#rhvrA>Z0IDe3$6?>LnS__GzqHfyG*-_dH)3%8%se14!y9HER1|#Dwq2WsR#;?PYIw&PGas-GeA3L_P6|JyWJrjJYOK@KOl2Z( zo;S=-*;&0&RhBU|xWGDRn2FVe)rD&B=c<9;+uNxJW|YQ6HTPmv)Af3DRe zVLSF>oKZZkInKnXe1*wLMj?#Ne3^PVD@oDX4d-L@551S8y6F7^4Gk4G9-mrGelyzp z?#Um*Zd#Y++K4Iya}t{sg=8Ph~l3e&U9W}M01q&Cm@1{Cw$ zA&!?^H27kp%THc67QEsHM6bQ}+TNp?%vzkD*g2*Th!ie8*SUBItxF%TCkv>g+P!Vh zF1}u)E61bCi7v9*#+u}_`7$EMLPuBJJ%s7f8yS_>kI5tsP?bqvCChHuy=weilT$+PWQcSD1DguAdRG6tDwd>keb{Su(Xpx<*tx-+Ws@JzA>02qI z3S>to`)-AL1mFAaBixe*#eR9>g^3p>UY>Zj^uIqK{qKKHd^+*P#E%lcKv1zsB)tjr zd~_3f9eNA83w<0tj6R7zkG_rm5Bddq4E-nChZWgGSzN`VcrD(FPsL~AbMPK~5xyK> zk6(pv#kb?P;CJKqPqJ^B#3dmqkQx~$8_0IDlk6rJkt@j! zN=&EPagr zH+_O7n8FM;!lu{?wwkSF8`+6$Cwn$Kk6p~JVArshuvf8L*`4ez_8#^C`w07I_Br-d z_FeX4_Dl9#_D7!J3U_#lm-t{zaGK^T`Eh(5KbfD-&*J9*&FLxfnhsVBhhsE#8vve> z{-pGSib(o!ZZ(R-ze1Q60rwE%gyQ8nfPjevthl{LlUx7YGcJ zzlgZgw0E7CW9IibI-e^>__X2k5F0=>*``0vZH{&Kw4*7B9?;aZu9d97PuH zFJxyRH7-1smMvmt*?c{VYOwgX;ltXypAE5@WJ(Te#rfCy^JUy4STz``e3Of`yN z5lyA9fq;EmyCty_r;Hrw8?@~Sh90MOKkACTKuN&!D? zFewcI8de2qQW4481nNVh#zEr8(X0T6;y|XV$4mF50t>=vv;r@eT|Ul$90yv$3`84X zy&%=99ofngvn(cn7Kd?sTiiQhGwXAy-~a*S2d=llD&TBouO7!zH_6w$(~8%r=22~S zI;_*5E{r>BH(s|n4)MBh!ZpY~3{WLtJJmq;K!0C>WJ6WrI|p%P#ds+g836qp^+QG> zfK^%?^!Aw07T&6xnzfDyUs;f8$`yR{cq~ zdZz!@kL{=s_y~iKES6|@o3c!E!gWweQYgKwEGR*IqooTFunNHGIFVHYD>sucfXV)J zER3ZO&DW=wEFdgBkaV?_Zen7Ti&oKEStvYy^5P6n5hgv5Kt)a}MWuQ{5kV-Js9FZI zh*QJNx#D;JwuhT}sN>U`BwQh*@c_XFNt~ zz1^ql=d#Eu`Fc_@nK~*33-Y~M!_{>^O+^wRAq=KV`K2bOwk)E|KaHV>q`!!)bY4S3 z;fNyLIKg%Eo6EW5G<>E=dsyYF_l?PwlaKfgk!QrEi>XIMSJV=pehDi3O}p3Rc-wi~ zD_5Mx2RL)xLDgr(T!LscZs=UCEZS?_ack!kDm`c0wHVS>#M$ozOXEG3m6a;{cq1G@ zzO~9@H~I2k1)i$#)Vq?{M04;!zW0qTre;EV8JzRl-x_;eF>iK;a`A1NGDXDmaC*V$s){y-k;#($KfTH9{5na@1GMOqBsJ@ z2f2&Cc>iu*D`kxDcqTzAVt2tOR}h0~o}#Ry<{$T;Qm+#q>_xH!s)MUJG}swCK0m~uWg9UoR_ALET|b9Lb}?BH(%csHUPg=n z8B`CE6Hzn6wTw&2AbK9{t=^kU%XZ=DA$nFcU>U0J@}w~GsYalkCY2vrT4hTS^a9jK z@v(tO2|V@H2)Rl=X^7T)=v_uuPgyz2>4lyeX-Q^5&l+@HM%?=Tey5|mDyHm<<0*nM z#HF%4^wq5Fv<}m$qsu;xh+Zk}@6%b9rsq`B$|~e^O{zOprXeLlAJVSOg}JvI#@Avc z->&>YYOOklc(^p>%=jpi|0?iQg{J~M_5P%p%0I!YJUo@)DZBqw{8?`P(}HggJbg`Q z`lI`IT-|@Lj~j#vCq9i~sw)D$b#<${b@O1R_f8$%D$n>fT}KaEOmizzt}Ch4*dDKD z9@MZQ2)Umq3N`ejK#KMaAAIxR0G)__&Zs$gO^Pu&%9S+TZKAK7Dw@HhMb8@WvCBoe z7T9*KK$bE!Os_1d!KgB@OdDpoJSM|NM1~d3vobtmFAJRAY0ELw&bw^;{nBR_iejqQ zrvtaNwy^?5m9Zi-%(X7Y{*sAgx;mXx*R52zVd%>J=1??Nbn?s65mkz9`EKT`kA8i&aQ=lDOgjgzCnglX_X6y)L2(H)BzH_lRZ}$WmnY#T`pvMKP?K&&kAqCH0%+Mm`2(7!v=fl^RB+0 z(Uy-m1lua>HXeUIFR5G~;Tg|MyIQo?Do)6r^ksR1gLo_)2_uFwg=iVp6xBvjZ>e6J z(q+7jUPM*uQN)BCSKVKc0p1$%QdrR5`!z<5$fYlv9WG!5!XgkUn-Q&bJsqEUnVR0D zMd?MAjIPm{|AH~+lkzDgAA8@ds2_=JXGDn1S@M0O8^|N*x@$CVF{0Ul>h)px01Q`u zunH;x_`UgkLCM&!|=A*JzcJOhFiJC=!Ax@ zzeav=vBDKE6*|s{JdyivoINY_dHFQ+_(5gBR~=ji^n=-QLV5pQ4k2+B^xklwRvzou z6Q`Q2wwIuBzLe7C{rZ$TexwjVJuexF@Yu|+4Fi3X^UNU)bLa8v*P-!#+x7034XGfp zdd=SPhuuROyZ3*N!AQ(mt13#PLU+`JeH07q?NJo;3u&^$*GZG@F~i6mV%1}Pb2k+W z%-@EN5cIo72tDJZes9S_&w1TkKYGNr-u%GuPX8Sq4RIL{_3?!*8$7AV4;NCWBG>gS@%0NqIZ^HC;8gagRKy|Sq zX3iJnkhM%cmdHmNmZc}Ow5*p0y60e#vq)|SgfU!lE|4m$6R^@2*j$S8H0LifFd3TZWrCKBf? zU;$0V@fs&2b|tP!T%UMV;{L=35+6xCl=y1m-xB|e1o|6vJ$f&C5PdYhw=*}-`U~`H z^gFZ5@%kJ2{Q~b<6;|kNgAqC-PbH z2>CVnJ(;0M4hJDE&>9_~O*&0i#!R5o>3Q@L`Z9Vmy@S4yzMbAp-$U=GAEY0n57B?6 zpP`S?uhMVQ?>=P?(82dw4$J-_)tE*rxG!C7P*!1|0xX3}C?y%J4H}Q<&pP zMy+@b3^JocusE_lOQ;F_t~^@M>hy0CwPCqq|4s~KNa^dd7@Zp{%tnj`hf3*Vd|>?^ z+z5(6)0KL+T7wx@cp=(V(We8$v~&@nm`Dx6wIUj!s8xb6Xv#X4LZ3%5l?KJ@C*zq# zUPsjkK;f`Bl}GJ*81rm8QH;_NkaZ`FGX_aHi<+<)QR;HwBUuPq9Tw@q6mdNS{V%n5 z81+}V%BGeVhpkW2fK1QDZQkL62vWr(z6pAIG#mUZ4RhajT-w_v!ZMHv0*G z3IO_UgP^ZiD8@&3>M`}YKMT&m#9_mD@o!9pjGb90sH%rGNjvSR?E-;qFO16WguFt4Sd~Mg;N{VFp^ZHwa>w3!aAi zDe=PGM$FBLZ=%FEEdiyI0L?vtT$ol4ectxt0J^zZVc8$yR!2Nj+=LaMax6dxO&P~* z^cE}=bgS_S&U(C-5xN01fvE9%JI2}9I*lS0@vX_A9}&^Nml)&mVV+tZy(!NbmLke( zPPY4#$TiWw{REV7Dc$?VCT9PDwYRJJICP^C0Pw0FHQ;_6+=e+;p3m*`^gYWTO7r={ zuDotpmCV!`yQ`@;S_L9ap)CYP({8z8uhrK?B2`JJ(JQC+nVzDLE;IR*^t;ayqP2R^ z60rIt+*D4fCADsgB%K;$DYDY+eL|bS8A=M64=%EVW*@MrJ-6)Vl^36; zk53j&-*kRDq?g2m?HP?>wbAs-_};L^SM} znodlexrBp25~iXNZfG>coLuk6H{VRY7U*Wi=Yt#8n7Oy;{&eO1H(L3+Q4rpnOxk__ zx#i}7V%_(|Zww4bT>OCUq%}FTand0ZXy#m-aJEv#D*6)#sPyh-m{yZBx4GD^+ng(6 zqmCHI?;@6psFRz?7}#R?tfJ*b+|C-rnYpdV6yl@{R9;y!_-B~P(?!6yk)8%1{0vpy z>}Z_LH1Q&Z5Ffvg_NctJW}s;zqY<>f}& z&A%~8QE`JA4Y)b!PX^}85dN1}n)!{NB%i8{jasI_1|!Sz$P&Y}JX>~~>j?Kpo8F!%3T|9E zxw3cRtdK?*;z@5eLOUpZUxlnZlTnEES)MPMks4ApZ@5}kVK|Q*<3=}~t7E;sCF5HP)x7c@TAmwkj1!@0$3pJ;%)v7GFvy-eSFFzXL+NC(zVVYMjBifE zRQg~C^J%KBnm|JnWg}b9y}R-=RaLTxTNOK}_jcGgwIrLEOC6b0F{Zmg2xaNq|qek9B zxIkGN`^1)gO3_>e%b)5drCc#>RX2z!-&4=^P4vdCcRumHDdI($5jEqv}%JlkBXglyLAy?PTxu(>Z(gdjV%-?QH!P!xXI`cahd0bbor4(a) zyG^n}N+3e;DQc(*K68a;0!Rkq$85RrB^6sxGnZ6wRgqnjIP!$tB=Tkki7JO8+3W^k zdB>5x_PNAjNG15gl*>Lk^FkreyEDKk4Y9Sa@d*Ko`jQ5`h8 zoVdA^RD~lrJC#ieL@y#A8yD|=MQ&ux;tMO3uVT5Wvrl=#+IlD24Ipizm7PWD6Uu+R zYGVrhYI2Qdnna2Yd2m&e+7B~h!n6jMtzkt~g`;^?R-(vA`6LXTY0``cLD*KEl&9O2 z$g?JExE>Jz1<4;E?Ghz&l8$3(MP27YbO*=PWU|`boL!vmWRzOIu&BOuuP^k8KNd5Y zd?9iIOh0?t>XV2~kYY#6mYdi&C#Ob`73iZCu2h!3-&M-g8r0QfhN-R62`jT>mrd0? zCz~9I2C3e{szIoFTpqg{3aVAfp}c!>Z%=FK()t*^P?kuxVpH~AQ@EQoq#hSmb*f00 zlL$5RMv(5q-Q|=l1v@H==jWP3_-k zqE&7^yk4C|SUrwT&;0kS!b4YYT(^GL1a?vb#?s!`twzBa9O>m)AmoUSFl7q2^(C6d zbX8nNSLqXJLY!cP8c7D`ui0pl$JfCCV*`M0Up5Q_0!)x;$_pt~X7)(|$&<`97=2@s z7zSoVDS3M-RW&Hh7))@&ZD~Iu#aJSdSbYd@ryujbF|i}DJFzE@ivHWg7ZZ=7T75LTot@s`I3;4VEar{S8BNvdDk)KL6xQgzk=hKVnUV4pG zf3KmpOYQd_`T+e1{U`cqsrtS_e?C3N95ul9_QO^*QC2f zAO%sY3!)GfD~AM99W`ADe}&8?fTHkW_BGC|3eF_2cN;KG-A@Zz0c9D0wkwCt8X#EZ zo})OAWv$)>aRq8sY7{`U#-X|e+yxx#Y@BaDb~M>-i1;^gb|9ER2S%q46PqxlC_UA9 z_Rp6^g^ZJJh@6CELoi1T_|jM&$uDD4M=U7fX=+e^s57fnTmAf>#O>h=o-%E$dxAq604ta z7WL7q7J_s=26N_jk=>dQ7z*mrWKH zMbcm@q8-OF_lc;pn5TMNl`#F>=(bj(8Z<^XtTyFYu0XRq8))nh&F0wc|JOZWEwSjG z<=52uDU={|rO&jj!0fK{n&%Kopw5FRnC0jIG8v#PO{sZy~0hqbUtALl4O(CS!*Bi0ncj8cG5XrSR6g}o1SE>-lUIijh zy(6`xAgx+V@!=rL;7{GHNS(R@O(1#tZl_))U`=t94S~q>WIYZ!k7HUubwVSBa1Te8 z#_q>YOMNOp(idgFY5?;F=F2Dc3s2w%H7DEUgJYHl;r?lbB-}Zua!3gk-%>b6e2ti|9qonin%-}P;O&*yXaut>Omk#p zyF%!zf{~Zn&X9su)G~TiI!hkT;>tZs-)>N%r0P26iepGs$SWCE>g}Ws!^BjiOhPp4 zCNZ@bXBvwfPr5Lwb63(8+C%=xN@7wi=ale}XQs%ISt8@t6*yL1Gnt}X#~VE){l#=S zvP`>xtbysgPgEuE+LSwnlmfaxph}mGma{19a;6(j1#QNfD%}p-7ltF8k7 z*B}qMQh0I3_>yxhj{e7>hM^@Vq~C(2CnsGW-{2aR{a$Vk6hn%okBH%4@8)EBbo|6L zBG$5uo&Q_}9U>q!nXbnk=MP!E8i2>WYs5qmjxQ z2I2-~8b#9Eo3Q1nVOP4qSfNxQOY$|2SEEc_S%z7@NW*uaH&fobDAA)!ZC#Ci~Oy(5Au6E|8kv z9-S(Y-U;KQqiKAm{9vp6qW2q;W_;tIVA#gXNmYx2ob>CYfWU@c5_zwb|4==Yjw{V= z&7mCS5Ed%9`dUI2O_ofmNTJdvMbOL(!(PCi`M0LM%3fp^3Q4B+ZV~L^MSHd%f7SSX z=u(aL-igt`&09)?C^1kZb-wJ>$_}fN9YY0?i+V3t&{uY^lhy4q7%qtPV>z0RbjD>T z#aNnkocKX1E1gISMOjVra)cSkNU=cYo}N^C{~(7VsW_x}d}661WTTytZY#*jud`j8 z&UVZGCi1G#$Y^bB2UeDFs$*7oX=D$Lq!xw65pgz&MqQXsH%Kxw(fjw%VwzXd({@_1 zy=vR47@=5Y{D@<1r9GuEVP!^xnyI+m$tq__lA8?cQsj7CvpMm`Ljy8_NQuUaR%U1f zV`l|xgxSWAtE%S8`Z@0pSi`2N7br|EB}2m1P`GN~mWZJbZ@Ke+YmH*w`i{m)m^`YF zo|2nhlSD6m_-AKfn%@1qtFJHiI;NPO}YORijwO2+s_3KGg1>$w1V+G?W<2xS+c@`(uD6^&LcedeO1pCsC-h@Op+ zff25@30ga#rmABXkeG5>IbN!_bwflBF8s#db-<4x-L|!_piO>&EuG z4b$)X$IHJy^e7_#>kLcrEiKa=N=Ka^C=G>W>6Y)N8d9O#1al|iIHk)rw^h|4l=vPV z6|x@>7VBgRiDc5EYkj|@6Ox@AEeakq72`OiD0CY;$(knBGlY`J#+Kr|rk3UYw7|_N zo>}z`-z`Wjr6h-`&{IAAx+Y|x*5%Mt8qlP&qK<_%G`?xIhTGe$iqzgqvS;GT^U9gk z;U1T`zL{|e&C14CG#2{HJ3^~q8Wc7a2M9S^R*b9$vst1zsd&s=qSFw8iAzgYWv5h# zCI=RiQy6(P#1uKAgLu<1(G`X$voYF+Y{$V%Psx$(snJF5Al9W)`D@mz;F}7sU0xmP z{XY7y-ff6Yc5fQpl{yh!)qADvP}lYzdbXAvR6R8vCh2X~*5ktT*ziUan2JGFIZ~4> zp<3or-N#H3O4ig(;_aN1tNFET;|8>4^QO|w>t==OE~KTfdV?xEqOW>_V;ya?QrMAR zY1)cj;MXY1s>yR{+a|UG)Fq;F)xi5cK@3IOlkB84k(;M2tBE%!?n%5i@#Vz-B7_{2 zMx$sFbk zzHbiOLL4RdhSHatU3lJw858hr`-`YyVlZq>#K|n%{mcnfSp7Fg9BDhv*%-?HQa|ZH zCl5LcShY?d;L`6$oI>y=OxZ;7oSF1^$FbZof-DG)PJfoC4cTU^wb{H6B2MEO14}uo z)}^a2x=|h0JH`$q&^)6KYt5oRMPK&yQ|`u-7bIS+$?IV-o7qw{y1dqD%L-xbxCS86 zNk3@3Pr>Y`)m?#;{ba7J-W8DdGwQ<1dnp58$|=?b%cUL!^koohE8#c0F}x<8;KC_)&K5^PG-llYwf$iz#!x2}9hJ?tq!_!9*E{#oX zaDp8LXWT0%8zuUQ>@~Ty&us+i@T$wdqNv_ka|gjY&l&yx#S^!Vug{_=yX!S87VQkA z4=a#exy;HqWPoT^^4!(du;BI#9ECX=h0eybHA z~&Wwil7=<@8l*Ye8X|M znj`iZh`}A3bx@NlM`mPvNG~<G7D)lG|O}w8A@qPj`pu#=`PXMH7Bv8}GB43)48cF+8> zP{{s1-g9kwn%ur|gLx5eH)5XJHccS|46z!wQ%FUgm8D+stkfPwxL& zM6c%!4--GA)qI}}4dq2raU3NndP8HGDYGKoQTa5L8C$QGQpTD!MyjN)pILp-hPnMe zr+;`lFtEK_wGyk>MM2w|_l63D6o$M!`c`JRRb1O)th2V*8qOT=QI^W7W=*I_b zxBs{M1`dUY&1Z-KJ?w>v*C*be_|}tL^PaRt29HP?d$I<9vZg#DoeX|AcO!CTe_d2( z{=Vh)@osPvn$BGy0g&4pOAHyzd#_FZuJ=Kk_R^w|{$?|uGp4}oL+aDD@? zb>|w`tsRDw_Nv1f37I*pB`iPm_ZP|C+y2_MzMXg1&O7j-e6{6?(-T)E-j;YM@dHHu zY)d&Rf$c9dJRFtn_Wy-l&14P-h2ziIFmuykcHh&U5!*WiKKFuWW^@`}u-_LQ%^>Hq z?3N|YiLXEJmlpX`q$3Nt$6}R7u^4u2rn>-#_va363ov@HH9+GJV|e@RjvZ{Bo$e8= z^T;H=KY|@p&E@jZIAEetg|DBvVu9K5N;GFYy>}kq_TB!J2E+^I*nU^a{Tb1IV{FWx zggns9+!z@d@-*h3MDMwW1p&s^dfZ~h79Y33TGt-Yj?b8b1};1Hf%A`h_hSXSYh9~w zuzAiqd~CP{Yr)|en?(>VU=V`+UY&Sj;^D- zTKqc>OJscgGd5!1d>EMHeNU^8JR`kh&%u<)ef$|3;^)yNU-UG35cne2g1&Qh;^m1u z5+6={JMpL-`CI68bT)eKpV@=lW7+6f{hNin%Rk!#UdYKjmJV}lC+i;D<>X0WoJa0t z^S_ww7*R<%dhdJAJe()}^;2`g=OaHqbCh1S;1rZnG}mvBa!oq>sMOFS_r95z&;RP+ z4)mW#?3wSHLk{j!pTdRfJF_UmHy*Lm;nWek^USM`*dgiXkH9wV_sjPtK9=}?;tA=K zO`_A#HGhd-Ie3g0zhl~J0b%ve?YZ;GtmH4YPOFe~teAyg27bTwIp1gp) zJJ)|dn)qH~A5zgcIt5*Y-WJb|+=t%x|6EU=PXPY2FTn?sgOBn0dn~sR2A{#+o;U`8 z@n5p{zjGFj{L}>FH~IkOM~>L#32HW9&{FK=bhizp3dOG#^#}>7qF)1eDsgQ{X$el8>Nr_B6K(UJo+m7&i{`* z^+R~pN9nWsyIJxtqn3|-FY{pA&)m>-jMCsqiQdn&GV5JVxjE3g74|we3e7veCkk_t=fNWnXy+_E!Tr1HU3lbS>ym>&?fzl?pARIy zo%k`rsDc)ulh97|H|QPcv*}id6 z?>a)}fTuOmU3VBytUsDue#9a0M#xC;gCh=qWIE1MaM@GQaB(IBapdt1%R?U7ce`)F z#MprXz3FLWah*08?5i&teBhMxmkjuym$u;D9@^*4Jxrh7%=}}4*nxqlU(JHOe zQQDwgx+`9#bs^nLUr4W|H_%tn`{@Vhhv~!gQ}lE6tMohc7cp)14^JU)!jlYK@p`Q% zougQgZviO!0pu!aF$H61O0e8j1MyK<-l;zHZ% za}m4p?D})f?G?zc^I$GNdIMkturMpeI)-w5jQ0*e1z7}M51O#51(w1DfYRuQs3||~ z#3>TG5w8Z_Mjes?0Dq$!cH7l>O_2NmQWnSpv;bft{3IKM(gFeAB3`8XV^F!8!G}>_n^ zEQFGOqOvRGC9l$Li`Z~tP%SLNgWL?A*}uI1K};ZxS9!^528w180ogV-v)EK8P(N`7 z6fq98S%C)I04wcQrD4cd5mdVfU?(-$Bnmo^m%AGVuuiJp7L}IVM*#b6$JEJgy8;*t zK+@Jk9>Y1;s?zrB5W)(K;D)I8Gik)onH2~^G`n$Xh^Q_P9CIspJ(9=h0JhZ!cnuV@ z-RFP8O2K+7UY!P^s}ZnhlJQC>X~=ORhnTU`1q+10QfcQts>XEyKn(~Ut<^jI{0r?! zRBPRO(?&JXfh6CsNd&mdb~pYi5yz821ZXu*guXwadAvZd0fgHQf(_%XrFQBzBj^&5 zfKOYH+`bD7G~4jhe;vC~B8bNqxka5<;(!rY*VP0ohTvS(mgNaxZvX?5Ezq4k3Y;FS zgKLM4djB}G&x=rwQXyb-`bm0V=@yi?3q+77%NlXpVXyPAg|%4w{&4t<{oMyLOPpnq zsPrt6)@e5Bl!#GsALOi}5KJ{ApgD%IRP(0m+9{5 zuCA)-=~-Z47-j}=7(j-7RW{>-N<_dQiu$?17c?%xNQ_%zj7Cj@7%}4ZX-pLNH7bdM zxS*J*5xU4ZuNqtee2`xly1KgR)q8h2_q_8zb?*O9>XUI&Ataz>%S@bb1ujFiL4U|B zyIQbWRDE5=)8;AZkzOVWVUbfZDd*fgbwQTpTgio;-R&}mR?8O-u4p>Rjv3~IMgpN5nLB_^$)@|sGZ z&zdy~4bqCTBBPNl*!LwTQKV{qxk72+b52unDK0 zrM)z`#r_act1)kD-_x|1ST88rEG)znj-XM(6mxx>8V<|!DMEydDX;D{nB!Oe(qx+m z=WWiaa4h-b&FnCp@_IesxcNM5MsAxJuVE&kr>*fJQ_hra7YyTM7-r;8C1iAbyXx&U z4S&%$J>A;6rR2-fmSn00&AX4;gjDdM>k#5p8FSeB4a^{9mNA>T9*Wu8jK29dKGgs1 z)2*N85o+Tu`lD^jp$#g<=&!LkM<}&u3`}OMT*SG}uJru6lBUZQNx9O`ql&#Y@LYR7 ziQP~T`%!c)KJ;**>F9^zE1!7S1mfn0lrO}fxt|UlQJ!IKO$1?O#|D!heN~v`HHOb> z=5e|o#jwoW$rXBvZJrTF#B$to-NFuP;_jY`H16Siw>G)-BTx6d72Y>w94*YQIfk(HU|DBMRbbTere7QJ zmA|9Pg@9AdaIV01B>m1IVO{mTDDye7ITNAmFT7~FdiLxV2s<58fHlj_4A!#|GG1cL zbTgwy(@PrV6MQyzAUx9PFF5;s`los;Kcmbnnb10m?fUaBYR-3gO-O@=77YtrIz{NB z#pp_8eXNp9hILN3MR!RxcibPI>WNk$eP_W)=OTj}F`rR04&2jLm&qqa*E)LEj_Bf^ zO{7ftpd6nxx>dWS(&&AE@zSe~f6JD$kJ{Bze&LMK;fn_*gWvy5-Hp7|P7H%8tt)}F zcu^5EGRRY3_KnfStgy`@TX%nSn%Db8KS#ln##)8cLx5@-m3jm$#cCq zGo$@|v6T|-WU$gyi6|%JWn9y;OUT+q;W^1^^X`FnX+BVAn1SJ5TncQ-OoK%$7c>Tw z)5py|{khUU^m2<63bXY@t3;U{OuxFYMf#UlHM4f{f?yss*e6Y@35$=C)(N!TA*5~# zE_fWdgt#&`O!7TpGjUz9S}>4>(3qm(@#(_M(e`#<6YQCAcx1w zR~LFFW7H-6wB_(Jow3~6!#KEVt3umy^ee*Mf?Hy!C1j1xi%si~1r5KU&B6yAbb*nYIrZ&xQ7opvWhC^S-u+eYN zRh7Sfg>CV(;Gl~wex8)zCFmu#RP;O)(O{>e5X@=$)Ae`$=Er{PgygSnrs$I`K6-@& z$L~1cI-^~=>y_PB5Mgi}A{J+)lKVjl&6EB#! zapG?$ZkhP-#3v>`H}Q>$?@in{@c`gH8x~K6Op*@SL^hLcpCw-)caxuyUr<=Y)S&@QXpv6RHr+&*=n#5cSH>AUFP(y!BR(R=9qaGOHKj+h<6&S2-VtJrJVd)dwGbI=uodpriio93&0J3ohC z$S>np@ay@j`HlRoxkAVL`K|mm{*U}?{9pJTfE|B?3?E_wYzVbF0#OrfF)fzF(c&0! zf;d^6Ce9I061RzuiBE|yiLZ%&5qF3mi+jZ{#Yj>qWhhfwmo2$P9xnIGC(6_1dGZ2z zwS1j?gM5>GzxV@hh>gDQsb)$Nt`ZM)5 zb+h`6`hxn3`iA;8ghfA9KUeo@s!i?df^O(3J@Yu#KK?gw?!%~ruvVR@u_yuV9Yf5U zAuYxb5J1k;kl^mNHKR9ssy?d1Y>VmLZ1oSyOf4 z{0ImUUIVU7k$E8xno(GyoAxm%M>qko@d~ybu!_XL@h3tKM+w)U{502- zAf24pzK%4I5Tv8z-5^6o6@qdmIl|5}e0>E!NWXx%xQ8)%K1?k{q$v_2jO9T3xG!!6 zc`Gsq&HGq0iHZj~Yy$`ZkhIl=u^uiXIR~^l=iy7TmdY54&;i73K}49TUY-X4$e8O` zAWe(xHaAr8aAynyc+6rzJ|x#?$W<2bEJ*r?`V#~tAQ0w4FPh_z5yXT9g#`gHz?60K zqX6o+pfjzZB)Lo>40+Z{hN$1z0ppk>$vAh5`Up5&IZ*~6(3E&NqbA}Ni98b$*+p>k zTuy5OfEHeZqnc9nbKI9xmh^_0yjUc;X2%d|YqA81Cz0hd87CG1XX1{)v05OYE127r zrW(s=FqLznB6!-K6K!Tad>mxs{eyYmIwU|qjn_mVy@G=m%Pil)h!cb4BZy}QD>+T% z5LIIERhds~P92i-bpUck<_$7j$#-JrpgB(h4D%#FKHkj-^+IHp?`niAY{*Nf7#2sT zpPTfUl`_R81&zu@Fwy}Ufs=i)17ymAQkET;NBb7RdOM$Zpa>(?)#@m;!Jq$fYvu;4wKnP&Qy)c!~{1 z4U;ZD!<-Gw{dQO&C|s0_UM4yB4LoFnodl_1S_r{&ciPKYPrE1>nrp2jL!@ZJp@YWe z9HMcma_N*@xuvC0544}*Vn&WwI5PJ~faP=7&}pKM3R1@Ox*HA;8VMas2IxatdGEon zu&-cnIqN4_Sc0oG?+2!TaQ6W+3U!e91}rN>${|b~C|rq6n37JWnq%ptVH2(a!vekv zT^o3C_*p=)n-)^pg6ACKQ09a@V;Y`Cl5-h%QE^BGy+su90blKbZ|xD)!NbS8MY)m_ z=D0ezV*AJ%gKSIb5L|Z)vog4&7wo9HNb*z|N_F<@c&-O?HTXjxLyjhb_mL+lU#%G| z_1x`uH~!AkFSzb<7O6Z9m*5y@>BirWC1*4B8%@IIC3$vfOdAW%Lw0ipVsNjyW=yxE z`a^WD2^dVCxEzkvqEznl;yGCLuw=TJ(ag6TLbqX_n+kgaOTH;_m7^RfEdJ#|Q^FKV z@CB-gkNp+AdqS6+xwtQ|!H~&E|?-Gm_Diu(Nrp z9KZcx*3=~iFicX5*$LCGL!_CWQ7Fu|0M3@vDz}|u3jnoJqeS-?6Q`I`4k4~@5n|Bi z3+jhbrkg7+p(+^tgkPIFkr_H-$xCKKsjMQG@+Z7d`Hn+`x>?@rD`7GnNY?n0Gg_mJ z-7A>*q{SuIQt16!kr8#RwqOlu+ZE;693ZW^y*=10cTdeWxl>od*=NUF_P*I^ZSOQ} zue<=TfI1?cqh>=gD>atSPIh-@KP>O07U!d*f;%C+zndAhmOm0)k`N}z;!N7oV5Snn zP*m&>Lv1==gtpwT0Fk6tNXf65?Tv&_*xm4XQ+}BQjC@IOri=$B;J|N0k+z-D$%V}J z$QQHHhmoi#^nTnM8 zq{f!QV5Xe98?0p{v&V^EBL|VVq`uJr>_B1STOt7v6zUGQb8$O>HeV82l$t6o(72dy$Xo z@%gAvTBtFkeb;mZITEMl^)O}SR+LYf!E_8$1}?%2)_;{4Q-X1FQ-8NXB+fO!HS$SM zSJv;e4N4A`I`zu$(Yb~KLuoR)L#CEZz|JG!l-D2e3yCTD^h|1-Rlz?XJEpdNWhg7V8;XrPd|n>F2aLgf0hEYtpO(EQsBao z#FI??TuWG-KZR5LYcN_PrV!tj3&zqpxSViBT24iA%jQNym^)g-MX`HouF365CEUHZ zB;R7Uwof%}uQLBTOY%00jfhhFO|Ag3a`hQ#&5r=#kNWQYeA3h46IA#Wc?&v;J4B)S zQ|O1a;Xzu$$$iSTd~^>dLGEq{va%}w4{}FD4H|({Lf>@gK~J@>$}Km|UD#})U>CSx z7PV5Y(7#Qxh5=5`=~|%*!50=bQEdmUJ6mi%qtBK|BBiX+n~IWvojNf^R#n+97pJ;%lG9W)K7<40jnuMeD%#fB1-b$Gd%IIj)?PvoL+I zZcK~EsU@dS#i3}A-)wM(?sct z^OB<)YSB~h2q<4Q7#V^WuZ>CA!ml(~zYw@Vn9f_wHF zIDAQ5ma3TB@w-~)?rvMwOV7<{m3vf>lJ7qwv}P=q3u$X@u;p^7BdJY$u3Dw#^634F zubqGNzry-)$j1!h=FIdNrH1@2=j4N$>AQ%cw`e9~Fc?GlCvw~8G!bf-=Yi!~T{E;J zq6%;m>~=4m4a-?s7TUy2rkurF`6{})6 z(P&cCR8f%6Sv4O2z=Q?n-yvK+8kiEbu+!V8ZQmyE)v+EmeSe4J)L6jilmRX~A*vRy z{{rqN(vX|G^fWXzu2j?s)xu_XGQR&6ku6QLTRnJ0nKI<(3&bCoIR4k5;fXOF6cVw)v^IbG7(IyRK`(T44qaZGz)Ow*3j z@cmHmhswo87Jo9)k|ucJk8f5^hElH9QR zA9?q}I`CaaG_}7D{l1-vVo{GQ>#~it(|u?mLSXVgUWv~U-olGdz{$`D9nKBDPqzK8OM1hGuR^~?*3zwG zM|O4Y)q=5$+X>#T{gC&w&9Ogp|GTFg-5AKZ0{c^^h_v9(G$^Mg+ymiWVKCPaNnouK zX4}MaR0Ppb9A4&?OlF$Iji@P@O$$gn&d-M#g`moKor=Oc*Q+IQ;2r zKIxdT(woO`#!>#R@-q5c?~b1Kh&l8>hU*&gd>%nNI?x_y)w1hB6WiWP$1Qd@Iyl!kdkAHVz$a z(?oS$7x%TE`8zsF$4(qS@r;QVPrPd4Lld8x_}auh6F-~y<;4BOCMju?9pp4}Ho1^I zl{}BUfLu>*CtoCACwGv$$bZm?mS}@^=saDbeY#2yr~BxW=`-k6^cwnq=qqxS>>KI7 z(eKlH=sLvxE{oVfb{adIUCv&}ZeXutH?e+V=RDbHA`T>58)WDlwTWI35OoFiQxjMZ+&6*ibmMULxk2a9-+ ztXbyivsM?&as(!u2GH&l-oykj8K*ttu?A8;Yz#}EFe8q0H0&#hCA13!dI67p66Yd9 zS^n|m?x5SsNS=dgqH6TwINw*tL<#Z%An&n+5nd*!dX?wek_W%*K&hscVT~-4yh2Oi zV|Sb>#!{dGR(q{%q-9B8AzAV`kx24(5{1-38|p(?W}^lVN+pfUueyVNu1=Mc>tVVY ziPBqxgOH#*)#P=+Cu`a$>!4H5r;nuE>;U zke5@`Wy0Jg%1-y1V{N9fqL9q_rH63VtUrL$V}`dzure+uC+}k^S~r1XHrQ{5DBi5{ zY!jBAsSW8d_?4#-H|PX=8w&we2*V;rlrU@NvQ1b-r^Z@SNCMs+q-&VC#YW@Q^%h9Z zJ-&izMX(Oi%=g~FoaKDxn1dd|ne)6KiZx-1wgsaMhcp$EekUE3%abj8@LuP!)OS6m zPv3ye;7ttwswc4o}8{JeCoVa@obBdD{ ztwg9bfO}#J@-Y%prq<8rHbl_$`BYF!XIw5hrvzeQ=j*YZsXE(QVl&Nj6QxT`Z4$CM zg7IdAy3AoFD^uz*`T_1h*u@13HF3HALYI2NsOc%_-XYfHWLifyc~i-giO)TqMJnI{ zwJj<-_9-tHMGV?L6uckYvksKoHxb!%Rfl|GX)H-6bn_{7rx zZ9DO%Qd%f+d+L%cyY#oP#DZ0XhVD?|7OG?>?ab^dszOgryLFpm;3_6f>UI6HvfXXA z;&O`6fLBj9ciX`nSN?_b^Wh=2yEdarMmbhaKQ1nv)?N!+g;i_U=Bdik^f&CZUU=uM zMHn-Z4v$-QOVpULn+D6wqsP)F|MS=Hb9`B=Z)ry5YiO0y(u`51HP-b5)4q_`0!qAE z#q@oj%haKp531C*R0?K2FnFp=yF^5mediIgIrP(yl94$E1~jnD8ZSb)>}+GkqREQV zro>JTYg4~qO*fxIT*}KRNyaxTDGFS|aJ7)unzWJ8{jtb0{o--uP=590hY@Z{u4ytD z#jMjgnk+S2r7*FKtl%)pGYN4ar6i~a4W`@9z}bAfvz7&O=eo5gpG#qm-*iLVt8}m5 zCZphjJ(rNZa~p^ymlNUT9oV&_=s7^P=ivnsC$g zQ!_RRtY;w?%Tx9GRC(S9L|IOGsXBVg6vE(&UACR(aF?#^tFDayDf%w6SdZ_ z@R(f!)DB+Sq_0RPtHqIZ1oaYSTX>>`bE^^)7$X>2#SLu&uxBK*2&YBGG4jwj$>a>sZH@TmiyjA2lt;$ez>@+ z5`bj`H0J;&m1AHH6;+Yt*?#PL{-lwK*#=phVUqV0<2NJ~k#5n>r!OCz_R8|4V>p0gcxuNa4@w*8TaCabZN}`W!6&TA(SNQ&tK@V=84{0gzr85Hq zE`({qy4hTu4V1^;lO$7Gm$_7>hAyP5FO=S<^F5-Yc`?85+RB2i3Y8AectxvvMC}EO zgH0ctU3lNpr}^9^%SMM5Jf{?vU~s%L_l0Q%N0BMjEKIfIn?LQB)4{1nD3MN`%l^rs z1zNU*W5M-3rfU3v;TyIwujp>(S_=Zqj)uBmvKABU+DC@T_dV$mk#3jhDajmzrIh*z zWY%~t0Z#qrKPnJU3H>wrHipUb0;@ouyKIs5*-`8`b_zR-UBzC`-o|capJ1P7 z-(x=pd#2#^sI8mJWKT>!4-@vGk zs0zhGREPzHnPfo=Fh(w<3K1()_}zSSkvs$zJ<`n@g9u;|#+s~`Q+MYGj*T}|KpYLH z>0!{@&jzjjczZ>hhp!MlLj;|wLAQ^;s{qGQAUCf8K?R%q7(6P8QC12;$skvvkvTBS zx1iJr!9oe72?v}6n5<4E?wlE}i~$;|(Du@t>wB0BGNrlj>2Qp^JKbRhuXpnj2>>l) zY`0N~mG!&1&J-Y&K`u7jRU16%sH>U{l734OEG@vZBF@VjC|8yNqU5^D2#P$CYv|xM zD1aZ00B{f%2w}xf4k6S0n{`CnYos$)q6K)|N2w~j7~=LOSsvz~y#uGf>Y=)5*7M!C;|!H9##aQ^3pTISu$zB`eu5YUNdhi6TQ}ly6A2 z43HjxVGkc#Ia$4UFp;u?^+yWrfpxmU_!BtB;|_JY0EtyRPUega3hbjd*4+YV2TdAw z6pAIu49z1R=8zTZI`ZvSG1kf?>GEU3kEor7;>)-nXwcu>TFw$&R)cIR?IkNP^|>lp zA0?9WaxAPQ%N34$3Ct{F`h0&~UN;6$d)c@&2&>nS(7u!O^B(0o%vc1H#*YcIg53ft z?PD$pY#jy)i&vltC=ES8Tf|krGQ^!-aSN~0AD1zycoAithbVM4SXTL%EO*hk$NIxE z-&Zvp>vwn426gI|@-;6o6$0ifSzx((R@ArRKO6r#mW4<<+ zb<~&0jD@N#D)F;vT6G*ayi~7{Qn}2vb~QPZzR`jRN-OT$K7a|SevIfwNCQ4@+bVG( z+)JtJ0RFOnPkX*{F7`bKz?gLP(XQp0WUFmD1n$g+DwOR-=~+ZJ9Os*+BP?o^AhG}; zNw?U$V=e8dM#;3D-oPxGuD^kWg-OeZ#eAeIv=mmQVa0-R)6Ato2yso5@xUqA3h=VF z3vp~p?MN9kMfz4@dT~~ceKiBkw-d=-T3g)2=GdsA6x@>qz?}s#vt*#Wj=>kViTNcv z>c&02tx;(vqg0U1&gefsze*ev(A2l3H@S3ZaO@PD*U-HRx77L-bBEp7){&I-bg9qg z(aP)g8gx~;%y*@_ZDC<`)50&(h%b*;Nt{wIAd&^HUG-aqIZ~JOMQ^rjDbKvnI`>^W zjiQ~IR3>a*Sf+Pm?}VC5(!%tw$Y`WGaufwoJ6JZ?X2Lq5;bdCoVrgjs0vm`pEDBCg zu~BssAv1E373l<<9oUTf6~}djZ3MQJ03g$`5P_tIG9>e(ghifURpRy&C46p(Amti@ zO6~laQ?EpAkFko$`zFlK=yk?l8guoT*kgJ=k-9-H1>7zz%cce~iSbQT=rpNAwP4S2 zDy_sLj8pGfUI4SQ#}9pxnP=G$G3oPdCE#-gmL9|cB4E!{+~fSqRGXd^GwPAM;I7WZ z=q4)aP9maCov~^%Z_;8Ta7QnNC>J7@FgXMe-X|gqo!#WN$)ZeW48z+~iK^gLS-ouN z^9stPb$gZ}nnzmfehL|X(LfBS?6E?35>X{8`igtSn_nUYw71ncq14OF!Z(+?s z>_&j2*c!9;9Zd{V#vMh>(F4+C4sO|D+BPt6;7DQv2r@XTsYp~-As#m|$~SEjV2Pp- zbuo|JaE!avlDrSdV9G$PiaDF^c@#YRA?X-`GS|zPoHEm`?e>bZnUYRK08^Q^f`v4< z$aE5N-_NusL{ge8d%{rCU}_85Wtva7=3t^s0JdQ}jr<^R%T-JOaX^m0I5Nd!;6hX_ zQlL>}nPHeEQqW9|Zo6WBq2bC+qrR$zrjlm1X%{K9=1!6p6Wh+OT~1mvOG;kLV$NrV zW-Vk1^y&kK_5-zWR?wNZ_A+VDaWXvUxu#BuxMd%7FR*W z3Z?UPf16TC7}#pou`6la;B<78Ik& z=3VmDO67yb0e5uxxm7dLJ%ib`YrX5R5BXR76 zme#ucE?Ym_X|0jJzkG^bLl1~ysPqEQW{8#2DZ>a&GqkKxyP7_3ZuS%&Tm3B3qrf z!yvDuL{su9WfoiDv8}K$I)Iufve_@r7S`DEL>LzZe1$1&vZB0A$%guV}r{aS8^q6?fn5d zHw`fbRfZ88a3g><#AvMebCl4w5SkkjZocfk_jrcsJAlp!`~!SE`8!%ue=_kG6Mr@F z-icc#J_^|Qs}pxj{BU9f$4--dOc@B9Kc`JD*c`vz{+)Dl*`5O5*@?*fp#$(f* zV)%{YaJ-=&AMxv;U_)*SLdCp(UFM2Y5K($W<|0n`grCVg#2p$aE&L$7R=DS4fTV>}!?9NH@ImRR{QEQ9KQZ2w1ON_j9K#(3F3mS3APGbs zf5UkJE$6)@D`TxG1#o%%g=@ZX2_XmI!|BK@o*VI!gj!>4{2aMsxH;_)i~rr-~PBZR#LOD>%kEfqbx1>$} z?FTP2d+a+K=M4G>Tg+W7dv=9Ife1YNz^QY-UEa2SKp1M69>*~DLwe`FD z{Z3~v=+M&(yi$N*HreD_WwN_Bx>Xb=kI(GrB5{&YeoXAIXkU$^3Ku)!|LXh zBra|FcerQ=F8+(noA-#V&sAkf>gRO!O|Bl%e8R!g_m%fvz1&&|FYXRktoz@7h#cBh ztFhhOwnn!D9B@m%XRS8@&8@_}!=i`|uU?#sSD&!oECzgr9u6<<%-_84`z57|u})%5 z|L%gNnm%~2XbZ_|i#~a3{&E5bJhFb(t?KCbqA$+7fw}6b0x>0T&)M~#$|V3u<01x-8FmC zQooUIx&M?0^{bBDyZ4n(J8JdJr%uXv;rOz_xgAsaEVsH)>aR3*9n(4zH&I7}Wm+Ir z^7g_0KKwtLHKoxE4Y&hWCrAC2mAwnf-Meq<`WLT?D_bmHtDkO1^vvLdBZ6m5ohau7 z{kAx;IUKy|KsQad9B0?2%JjJQY29h-=u?gy-Js)|Z@VQWN$o)OgtIOZ%t(vf1NVPv zd^N(dEF-6MGC@e{)num?RyG~A`r_sjN~;kWtj2S3(}D2t(vwbFe_O3qrk_RKd485l zocnY=$?Ej84~k%|n?b7QO7_gzZpD%2`oxCvmiUJ>^&o!8)?3=S0Dz^EC0nhJU-Qxw z-1dI~%LVDf0C?JCU}RumU}}|16{p4FGcV1$_Vj0C?K%oC$mv z)wRdZ%-lQkPtbs}D*+QgK7FsB($BZ&?sM03&Yk~6ahSRi z{+T|7bjG@wvINmh*6WmIKS=R*Ga6{tpe*F|1zAWRXD3l1%FopDakCkbs7&3!W-t=; z1}%fa>00(S>(V-uFXXyD)*QN99-}Pz7Ny9xAPKw((kVrJ1-T3CqZIQ5rC0|LzKC?B zIfj=mSA&XR6F7}B$d}W-Jew#ba1+9RLAW;R4M#hLG=}>OIog^{+1BgsP9CF(qeL;2 z60HKrM<7>&+6XrXPg9~94?4P|L=I#!CE6FgbWz)@r|Kkudce_n520LL$mL$x;`WbF zrm=)pK`s^1R6js8t$6lRgihrNxaYm#~X?Ia^YttZAP!srHZ z4>dN&8I@44k|;zv#%;favAp5UkF@~h;=C~{X3{a0uIEn1>iGk*J!B5GVx$Rq2=mv& z9VKs}c$AG7*_6O@gK>Lv#^j?+Te`};KnakE<}QT)44y>ZBya8&ClKF?wmPalB=B0u zcPT+WO5MeJy&lY`L1B%UOVNy4uf0Ty$H7+s>t_W}W))o}dQzI$==D*pCHHj;;u}%s zIq(vVRE(#(#qd0!-(r9oZ!6gY<(E)XfB#rVsi~SHUEbb+ws(Oy(f>JM6v75LgEppu z-yn>B$_dvAV#(3L(%zS`i7>mGzR8tf|jziuqnuR%>W%V~2`Cy-YrMZp~ zd2|z~54tf(Yw2M`K~@JBz4lNjjJ7CB+FKI@mrDX?!6F^620EFA?nNttVpae4 zpx>j>*V&Nhi&cphg@W|K8tzwh?AK(-1)4*eCw0F%X{w@cFF>vf#)_lb48qNcjJY0k z9$?jt7|0HgQQ#QD-$1SaV|AIYbslpFjPc4D8^93IQI|XKmEktIJsJpBBJEbt8sWqG zIsCk4r2ZN6fY8K&y81aBuPYvgUh9H={TXG5!PLn3hPr@Mdmwb$5bQ1Ja>n|Q4*Tbj zfnHnT=LKUX;7qrI{(#P9o$N@8a`GrjJOz+%f9FZ3BSqOeC<=RseErP2S8Ue$d3cEq zX8p{%Sq=!&&8F7R`#c@ZZ7TgfU8j%pbhCU03{!0+bGmrT(-|Ti=N~#ibOxNZ6*_GV z#aqunvQ9}xI?7n@>vH2kWdPkL9Hg%WpCX)%I>!;7g|l=A!fT;-xXn#Sdzl&wl#va& z4fiakt2&*%G#(Rd%AI`XStmQMVounWpsqa??Ff|NKC>NofNF?Kl*DsnEk!$XsgKow zQsr*se@LzEMHpvgGG{D%<4|_D$ z=o}>Wmd*9|1K&35^|xyEbVHfU$8hmEq% z?h-%1+3MMJWov3fM?s&83e;5WrwVLa><;i%3Mf_l8EH&Y=&~LKPVd>lT z`(PJXe}AiO@)EC}J;y_?rxDV{Gx#}I;e35YU6hT`woE)m)ztH^^6b3w3F6(e%03RK zvG!!-Jx$eBKe#{qtYzq@zwY;8Zbwpg=M3Us;h8+X1WF8Rim_%Rj7SPDGoCXsuSABy_i->D8*?R_20c$pwcbQ{qv4=_rXIsw4++tij=gxN2>k4@avN^`h z&sn4UiFM+A!fU0@8QWbgdC%~=1#X6p+J^i#UVnWlv5(n*z+9$?qmG ze=MIBHU3bk`{=KOIy1a)z4&eZJQYixU-)HC9Qt(-aw?x;te1m+{guYD-f*hWSmzU@ zA49+9pgepkI~DD&#hKCL@aHV>0m@fJ`Q|7;7URu;{0&9356;hFpPPLpf35@3h>t^g zz25$u`|DMfjVi@%<9X0i?52ZY0m9uNkAOX1oRCj{*YOv@2Jk72C&9laUz+Q^yN=OA z-C4-s@Dlvr6e{x{$`0i6C_4~s3=DXXRgG40o3O8sf;Gk|n!?h0-KYnhX|!<~@%i*4|F~~qH&T3scPJjVKGGUSk>VYS3=W%zsiyfhH2^!X zH_lKM@Ckpz^lgVN`J>+9nhE1zXU6g-}`s&_OQs-yaSI@(J%RGp7ZqYvKLC@#5MtHuf zOx5v;o*!%WF6pcCb^3XBS)FIxW%+K$_ZHs&VO?;Bs(JTQ%;h3JH}+N3Li+dDZty|6 zQA>6I-R1dJV!pPc9k2$R{{nQ&Po14#f%Z@NwjAw25nw<`IzO+Dyt{VE{`907xL zn9Dr_dgx_k+cQ;%lY`PL2DPg(=KY%f;~p3z7lV7L32g3Q*$4jRHxy&<#X6m*2;A*z zJ1^2;>w#^j?a@TsZJU0)6!R7|8IKDCO!1 zgws4fkY)Hv?C;;|{f&IKv1Vhm^Bulh9h z?u92K|GrRkxyD@9uLu2+&XhdESQ^}RaNJ&7(jPw@oCe0@`NLQ;;$v#%OHPNp{invS z#}-}2JWSQ(h*Q+km*s){>2`gZ!T9Cv!qW4p`&m{vM~qdr{|VgrZa|phIk1!I_A(mG zz+M$HBHxpK*i1sX@ibJiit6fjm0Xv{@d(53Ld_KDe1JYZUQCjn+xoN|_qiM&exGKJ zbH7&a)QB43SvkR2-xAr?;ioi)-76J#zwq(xE&P~ISO&jG_4}tu2dnX{$dL4Zlx_@k zWe)Qz+9@mxoKFSjrJ$U0KdYTG$`}3;g4d&ryayOPwWdJ?WS8_l$n_;UCNwQM@J-@kQ9zxqe;s9PB-(7ELT3%UXJbfj+*@cnh}gWz}D_ zWyF>cG{04lSEcNE!5WS6(<@Z;_@(pwQ|rloGW*Cr_TaM5sUHr_XK7dPo)eftS$01| zi1#R8GmwE#x7(UyWWry*)tAE4Q^jCj>fo+_+`f@IY37N^R8hY#Wg@tY-H+~pUC9is zFB=glrh1^!IPHfyBN#W=s(xx@Q>xG^;$-KAnWM0ONS23Dei|~9`!LF zaGm(K20X9ie3h&{>*F|z7jJ-%OZw;UJNA>*d#;A?drwikl>^;-0ps-I33fQ;I&JAu z)TxCz8exv3o4Fpw%IBrf*$1ZJyfmat#8d6RBfeMn*`tHq6#71irr7VRa}~NrAF=PF zYq?M6cFM#0Wio*T525dw{|tD~1jt>FF#i_RKD;Akf}z+SAQFPOHHbpSuY)^Fru|2?50Ars9D$Eq#V4?#gy3}CXCl=c2lX!)^eKz?wlkX+ zfgF3bT9>cnM4Ary4j5_YqVE9V`PxU|^o8K0%CCg+{6ha9^=<&`JdB>2TAnof1ibeG z>$H3x>Ak_*pglhmvbhFfljG1w<`a+;yfh!>lQ73T>DN=wzd^Re-G7&Q2FEX3?^3`2 z&3l^<&ct!?erc2ri2*6N>;H|8JJ4^qUmXA6c)p%jU~K_UBb@G0UR+5({B%kEQtkYL z{7^#6|DPjtet1mLy8qE0rN$dwPWqOz(|-THwfsJ9b{$!kJI;Gly z9k6S|2L(ONI2flctFXz2PMySv0~p`$Je&a5ygQ|eT@)|>O!3Z>=tEV?3~NJ0 zfzjyeR>*CTGeItxk9cFqY{)%e1{K+@5Fd@U_M@$pl!3X(aMmE40QqX!>2e0WYx$}FN z39E)Np+5*;hrVV6{y^c*aOxuFBYg~f+TGYgsTk7~^^Snw(QickYq?(*=HE^Q{V|@e zDMO3^ClTHNiFWPFkf_gK-^OrR=P#5Ib_%i$jgi;W7%nI4(E;q4BDtG>4?nSw^*8DU z8&_m+!XE3cnW_AjD9xQe)J=w;77hlh^Pu-K!nw$Q6S5u11HJeR>UqWaF(N!kGXwk{ z&7(-e=@UU5=%Z17E?5M=n*E+Uou*L!f%n`S^qQ;$=k0X$%+Xr%d#1L!ZJz&I0oP&M zeiujzc<-e6UDO_Mt+rtuc-@o_U{R)X9?!J&+5J|HTdljZ5c+l}(uM+@2T_Ew5j4P= z3b_fe+=F@s^4oiL?Jkf&_65%%+zoUFcY$QI5eJ?Hyw}&z0IXN0jdtv5fYauH$34{j z`7JODTn6ugj{(>D6Q2DPB-*nLbsxyI=YjcnF3ygf4F>5nJX@aBU<~p@r12eMr*0d_ zPryrFT{Y%u9?%C~pKv#k{qf91Jr+Gq73TJrdsxj7e-JW_mK#0bvyVaeQ82(m&iC-c zxW{LT+X2SQ_a9DkDyef)!+MDtS;HvYYCv7B3e?(siSA%TB<{A%a2mvzkJ3ovGpd2R z$hE>-yP*lTMmTSr5!@4`z6V6}3H(1}E9?sJmtd+Cg!@3B0C+eQ}aAG{v z`T(bycScz9vm9P?*ej==mY93zvM1GEiPz8m0z9G5SAANJezyv~=khx_hVQ1he-ht8 z`5Qaf{=>NYE>rbN?%H+q{kQntf`5Mx>#W-B!64oMT%-2$F+ArO^)L^sJ7T`G1m*if z-}F~HN8N?}-vG@e)E8t~d#EqSvPRG<#!N+eDrMPi(RU!oZHi|{R@g;3A&l1y)A4RP z&T>M?ds+XzayK3K-+@Q_&nfFYdg%M)QtT_cd=TCIchvGvr77bb_D_*x|E@IX(;G~{ zd$%6U9~l4L!jJVacwFK>s>}HA?1O%9=;nppdzmugT)#^h@sAnR_n!Lwf6pKM=I{f! zj4n66%zW=1WKPigNEMbNu~(S~sjgzKQHgD;xtG@Qcdz`-t2GLHZB+3$#eMxfSiC1g zrI$Z6^c|tUSB)h!*W68W)%#MMx6t?Qu-QFI#rb{f2^z$Nro)c(0X>UlQ>;%74;o+eK&MA3U3GP{^0Tnvis0RpnN9!TG(yI)Qn-N<)O0ARs4y_5T zlSgSbWMMJQ=pp!k3xl3p2mVhLzrWaXF`DX{mJGM6zMbZ8zW<9BnolDPU<(&Q&n!e4 z{(d|oXkWzmy4!yT?c=0j9YCPFv6p{ikdQjDqaM_3<1x|eQ5fG%1BO7-%Lt|99kw03li;b%M0*`dGjlt{cG%XKZXBLS3_2$dy4l0>vQ80e=JeB9_08g5C%Ej#Et7m)g#i{J#5xeE)aeQugMD?;*lNU|%DjF;l1wWADLT zff35U=-q=?t1-8y+g6w2$Ip1~o<$}M_(D!k=z#u#y ztop&X2t+eM4fVH<`tKLj-|EewyZzrcts9Iw<$pu@{qx|ziLSiqNwX!9yOjA^dkAfN z-wt{3cMIkH&RXv8uT@GT>(U&?&lm9?fm-m@L2#VE{|){o7xt#6_x{gF`49g(tTZD< zT*5ghK)kh)5_YC^e%M-rzkO^0{n$d*1}gzk3sD659JoL&teS`$2>%K4ern+~_R?if z#IHaO0pFqAA0U&!VelEX2!ul(1SliAf@>*OOrlt8f|jpIJyqvHU?KmE&P%0Oc^q;8xC?oxC$lJ7Mu7SBfqaOP#RYH>@p*{Pq-1j= zC0i?Lyj+L$p_FXzKpxWN;ni4Z0ux`Xo`GCfNkpiyDh=$lE|Ik$6{<9Q$B*$TgV zGtx0$o5#8fWYb}B4ss$LwhfdygYh&s>d1GEd*wyr;Xp&Z~omU`J=)3b6YJ?E^UXYFP*NUo(L zGS3hKI?VbFH0e3$DJXC388Yv2ui@{wMKAX)*0AQVD;>6G}wkJ*n4%5-xZ{R4E2qBP1=t#UBMuP2cTRdly8Q- z`ut71wTkjUta+5yKn};gDKIBcq6)8~MrH)v&R7SiEhM+yKm@1`@*aVl4*4+ZMxoxl zs8=6pjgXdv_WK~M1>&j5?KME;K7nofy=|CXBb(p(2-R{S?#SHNf9->=I&tRM7|=mA+D@(<8QBM{C8 zX&C23#9zcd`W)ds6dP!abm%l`fOwFMd>8ew53EgyL)XcNDHi>SmA8RK$eRYect2Ic z{WH>r9<_@ge@h8=FZg?D)X{#AA~F6*x!x_ZQy?XU1xC7;?B8Rbz61`!mLCFPsMiZ~ z^94Ebb@x5wM~0aw|Gs+;?MBMh?nKd=`r+)?vmU~HUZ&R8a_VoMhHi7Hzx4%GHRn-9 zGs9gkvJu`!743!?TMpUCYb}yc?+cV$O%<(gD9!wy>LIV9s7;OJ4!T9ug#N3J^=g1R zd+93iCas2U?2R>AEk**9R%70J<9w_(FVMZ#%~VtTo(iEqR?9P>CCH=R&?}xihB|v` zq`1rdT-Kol+@^hrQU(8AYzOx{$RQX@PdtCIHID9v?2SF&%j~B9{=qJ_Y^UfEJ)^yc|L8St=&dU2-7Kb~{=MJK70) zcq#4}OJTc~%4LYZLrbllG{`zg)nyN)522;@6UaLbP9wjPmLrjOhPpvFR+B4e7WU88 z&N0kg8da6mNs2wxR%B9pv6%9$xt!Gw^*^Idri*$TX&UTlO?xcP(lDwDn^qIHpq===yIK5^nu{-K9PV5#FqRhL z8fuQSG>&}$^D8o}ME50eo?2l}o8wG0ml>b{cbaxejuRJA|0s0a0E{o5reiJNaIQ8? zam;;F^rP1xzlUzS0dpLO`AvgONkveWI}k5;$y+rZ`T=`lO56 z?g`XQ#rkml2&~UY(U^w9<~@$}S#F(m_ac0YHPQW4=DHhYf6Qfd=>WsH`2$aBfSzABR2=mB{T9SIopoxI2009$zw zoZUsp&lXy_H-;gCWhhMrBOrJvLj+V_V{>e1G<9d{NMfntw39FD_8?2 zfhM3Gr~{I~1khf~Dj-Y!ZTxt$Koq!E*Qo~vfKDJ4EYor>SgM~B3pRq9poPw>rqk!> z@(n>huo^t5^HO#H?*eIHWU=4m|9zJBPucf`58?TzT}ymW_D|V2g$^$EO|chMo(f;l z;o90iode?G3mw$qPVh-q&|oRhpGf`R1UL_7f`01n>k~u<_S`4fYuVsYomLh3JJf$q zBtg7~F~lRj3E@e&8ySe7MY-;16LqmC5}@l7pqnyaixc1{B#1cmw|NO7mRjkC{d{g#Y*=I#ROMKP<=7;^&87S-fuD4OT@>`!U?u4B?$v&%`ZFH0!X|`h; zG2%t|YxC(w_$vs65u~gl9 z3gMODI{0?*Sz#xKhzZnB!e_;Opg_!n%~%0>7Hxh&zd^kM)UPjJqXOTbg@2R`9hR#6 zS@@sq%d*eP{w({lvR8>OE8fO9ktdHJe9kK;aqg8ryUa+#{y4$DtUO_KfR4&@t}+^8 zo(iBRhl>q#6!Tdi!f6TSex@i;ecoZE(RuikhcF+H;huYsD1(nPfNcQEMff&AT%voG{^v5<7GQ2WD?322`%hClwgL8j%9ikbxLr92 zzHmj#mnY$aLbqE-se^TnI>>9_KQ^XB^D>PV&jGeo{h;?Z!(JW6xkp*af49FMHefTt z2F_n4?8EIe8a_rE(i__wXsR7X9Wb^u>szF)qzLg5wXrRgpKm`0KVIuo)|K*kcazem z(0{B;p(}^7K4o2saxeJ0R61lTJ&H2EP8DyvA1i%YgNp3!G>mmA#(7YF>HatT=MON> zrm~{D9pijoCM7#yFc`oc+aq_dLd# ziE%c;IQwIq+cC}oNPisTd==wtfN|b}aVCkC?rHIndkW(mg>kl1d0#`9#FhMaRB$h4 z9s?slFVG?=oUUarIgXx@pJ`@co#g%VKJ8O1sA|nFcUNZOLY2VFc930 zb;KCyB;fPK>v}tw4n~3pK|1IRT{;}>1EWA6&`j(2Y#nE^?S2&h|A{ibAFufDfavpY z!Y}>%gMY$a_*d2U+hF-)|N9@HWnFmy0C?K1+k2RnWAr}!Yo2Fjo@ZvF5JCt=C_)iJ z5lsq3l%zuYre>;XgZ2$=wBK*0w3#+Yq9QeIrKXy;+AG>&QV1c0_tWqD{pa`BdmQia zb{y-tpZmJjI@h_*wXS>a`;S8SKmP{(-AaORdrf)s0 zzb2*^eS723XI}_?{qCn{{p}A>Uk>g$xW1u|H)%dl{|AX5vOR>i^l}((!(om{4`HOb zMyY)?tTAH7>e)Cv$HSVaXOrMhF)LGPHI4Rfie+kd zXuf{EPm2X={Q&+#^?#_AMQU3t{$n+NBG0E{mcd=lFW>zN{8#D6YHMrcT8r0bIIe^H zIn4EH+h9gF!r7#r&0@CDY^#26s~*C3*B$0(r}!`6>{9z~weC^>K799!I{@n-K8O7N z3iq$wAJ)esYBt$_;(k@{Z)WWey#AE; zZ+!mI+keIXw=N_kB(lPg5G@@N67xbr($bKSd^RM+&V+=xYs$HhkXAk<6w3(-7xWDY z7v_hA;w6~1;`1HvN^EgRxTq`}8xk(A&ct3aG9;9&z_y2kOM5UmE-S-Yu!Zb&NVr_= zj&`SKxZ3y(_aBtgD){gCW5=Pbe+N)qJkW2npBj3JGQ8 zxDJ;a_}_qk*}4pNxsnW*a{O<^|Hh&0FjMDEMIoVlHD;~6wVQFfnHD$8b&EP~fqx4w zw>Dz1D!{IQLj|>0R98hjZsT{``K!3w zA;B{$;Xb`$I4vqG=8KKP-Pu_cd{O6vs#9 zea!W-QjE`IFdkD^EqQ90om#MJ;hs*XbUD-ErsJEguG)NR^Qm2x!LE&CZL?HcZMEky zzK`QorwyY?9XNID)unx1x$4UG1e_=3f70wdCH^V?_3*2QUp@NNr(u2b`!r1&;L<=n z&zhO%aBQgW4XrgaYYp|Gq1c9E8}e_Y_UGkjjKd51{(?L&;@DIj&1ld}51QlilKq$2 zEBf6MMk~6vg56q;ZSiVL-*)`k!_Lr;j(jrRXTi@Bmu2R%XxNEwCmMD!KiROms=urK zu5h}lvm4AF^+LjH_`goao@(tyx8C&YV`lr{+80(o+6=(YBO&1pIS1MwM7zP(-x532 z+A!yEM1znpl18KO7){eLe8$mmJpDaJ5+4c?#0wGRF|+}5dm9nS0Y>2v%)7ymh4>-nzt%vsNW z1O6NBZL(Hqe+yn)^m8k&+u-bwZ>Q@{cwg}S!nxR`hTYEhZavz|cOT6TsP!Q1L)N}_ zUJmm=EdOEok2r5f>2p+F$K*K1@3{Tr_P>?;J3TC-+4ne{r27wa`B9BO!TnkOU*!Ll z?!U?PI}U&F{gZBg>iM6v`%C?Qi9HAVAJ5$XaR0Avh=hY75?LK0i6ufLDLq7z`-X@= z>5-J|5J?*vA{R6dk>U+PV?Sll^L8HN-}$8#g{!5BIV>Mw=YC) z#OX$yZnS>mx)3QJ50RV2-U8!Rxhs@ngF>XDd=(Fe$ZdGu#_x8Rw-<&;rJNACqil%W z$=CZSpp2gN^>$Z)D|uLhil)$s6{ z5P3vBHSO1w@6ila#LkAuV|di6#CC;9I^5d0JYI~+RYy$SY9aE3`zLUJQa#?uB2Ura zDZ13dsXk5X_Xv?^)Y4#ah&+q)bMPDD-%u@$=7-4hEkdL*JsRWjLP3Z$;r}As7hyEj zv!<|{(Wg0nFVX%bTwccI6?(RyRSUJY(3h5t7>w39w6)%juIi}BB*Nfu6>>~+GgGtIj2&32!SUsrs(;nQ7QcfIX_dk@@Rh50J&U+33TzMkso zMeE))?QOpg-rnmXef6jxjr!?*e|ipponr=a)Zv*Fd6WM@bq?e=NS_Cr&B5Y_@O=yJ zTV`>nm|bJ6hdi@Eb#)G5p4;Wegr;^>-Yf@oWNpC*m?mZzjt% zS^N~e$%UC)hUsyxvyf{)7iKQsT>Z?YWv)Kvs&guyQ_YQMUSyhF)AV4PIeD8VZ_{nM znV6x^GxTak(f`=Y@V{2-|ASTkU&C`I9y9TnX+CD^-Aww-vNy~6Ec)b`i#!}=%RgIf zbJR2k*STWnx}Qt4xn^M=zj-vDH}e18-l6}ya=t6qdwTpH%=c*h9&O&U_nz69udnmz z{XX5^mumsP1?FP`eHO^GfJPtC{{xzQU_KVod!aM5P|QO8S%~98=kY@^AL`wQxPD~L zKC=Ij+#jiJkvbQ_Uu2FK!(9w>F|C(WVCq_e-^Y6P2`-`k z6vt2HTPE)^XJom2%ge2&L@aT{C<$J!o#duX)BeC~m}$L#OnzgPafW_hm~_KMr9&b_ernw7oc z_ln;uey{kw;`fT*D}Jx|ee~Xk+de+~ocsN7_T#@_JqPG^0Ix6c|B_Z;nt_8b5869K z*F*F<1m}=*`xQOErq$PQzV=M|T8)Rz;bA_9&EH`@NANtt=ZNRV5wm~9j2*$}2tG&P z9Kpxm@`%6X5r4}gN7ZvwJxA4ZR6R%KKB}IhavW99QS}^iK90-v4ZLs7?RPkT2dl^o zozR05o_F7S-kp^56kb2z^P}}2t^cHs)6VnHuzxZ8zligV7CGbhZ+i7R9=}`rL$0$l z`qT9fR*1&RglN14 zI}@TQ)>00JXsVbr_r>~#=mmaXST{tA!z-T64u@!o$_&;;86kS{*$}-%Ov#)Oy%g4^ z?k~#^(aWnc`crMDLpzqW7!k{?j4q^Ez6s1XF`=pJ+9l9xTSnGCUr1 zU)_C;9wGWL9UjK@5x;B7Q*#%?r6!+86B*pcs)cARv9;7!3*U72>1y|V6MfvicZg^m z+SE};9h~amSO=FnxYWhDF1#mb@dRz3?>iwLjZ4 zM4zK?LmD)M*9iXe_&=|Yjq5SE-Zi34%s~?|FXGn}uV!MJ!)y-wC0t*E^>QgjrtMXpB-tK z={^&uOmmXOrxV=H`p{XccV{tee7XAddT;x*w^rUO&?wt z*Haz6%xW)n^d1|ceemp~&c68d6Vp$x`s>{QxpVX zDBoc?4yVZo97o7GQhlRnK1%Fpb&g?UaUZLX_nYemqh|a`q7M`ulJw&4=%_=v+OT=Ulx*t9Q+Vzw6QW z>ieo;^d^uO(w?cg@)wNQO{XLAX(yP__ zx0>#2T-Ug+<@=fabuicQ|J?fLa<0c|JssA|yI$V)d^ga)fK~;1Q((V&UT0ySnEi4cpw$8WIpB!uu4h{auUx zppGBt@&i6U@cR+okFGzd_a`-+Ht(llpT^~9Yd`D3FZlgp?^pM}f1_vAcLvsP^!`o0 z-{|q1S^Z6|zgzp=oc{sm4|)H<{j4+fC(eKA%U@>lZ!v%4b7|CJ<>|jWYR%K&DVqzl8W{26?keF104Pw(nVsa_wce3?Z3nnh!fZ0o_ z%!aacAu+WqlP4`On8n-|YsADB%V(!T;ss?`J=T{kWXD6|g>qfU@4|T@v3N0tUkMl` znuNrQ>N371?O&S57Bjgn-NnRSR+G&SiI?-g94CK&6HBFs#4FriksA_A7lp*D%d<8i z@fx|WITsSIm8T5fGUu=RLgIC>uN%phGPPY#3*YvM*W-P?95<->2D+3LQ`UVsSmkgk z$M;71-3aF<+TKLJoA4^15fX1!$IbZOg3B$ZL*lK~8NUiNseo5S*NS>^8|>TUy&bpP ztyh9m$@PwEOwKziF#6u5p1b(og>Pm0R4xpORq(5#CwDhz*6-=T)L+%Ls_VUY-fRCp zyzbi`67R>k8ojE?`v5)<;Qt_uht%*8ogU&_J#O@|IR36D zK0~i(%+53NHlTk4>(A2UIr*M5zYS^G5WhyH89t57KqECiPp9Yccpk>{YHSRrv6*bF z_Qv#XEanCEy+ETE@P0urn&9P~AhC&hn&9%H`FK&!UNny{(!8m8Y-+8k{iZOQn%$=Q z-V~2!xHZ$GX6kMxZ!>t!`Mo6OCAz=l{$;sero}6Az9Oy#&MnMN3-z@yzb)Oj#I>ba zY^Bata<`&cYrSr*{x&ph#kSb^}oCNyTj~me!J7EyPCSo z*Ioa*)4Drdy6ayL`n{?*ubF|@Twhni>+<##+fz(We!Xz&C9by_?k#_B8uzi^hcSyhZ1s_zhL(P``)KahO_$;WUii!}t&5KU}`y@(q`7xO~IK z50`Jae8c4%4r{o4!{r+;-*EYc%Qsy7aPcF=j}SjXymz$35zf&F+Kr&e2r(nf#Yp=j z*MemCuW?pF%F+`=4+f>Gt``6u8z!E8>nK9M#P<(}wo$wccD^?8z6nI!Kd^-eN>llV@CJ=yu1jN@ed zC&QhB-xPIC@m!iBb_x!;>dEDoOXFO%wweky&YIs;SnV5(eG`A@Yz4X*dm#A#}r zMz?9SeVZ1vpc({!As<2l1Qm;rBwUe1um`)cA$_cLM7ggwjs zEHSgxJ&VsQ__M6%;o|)@F;9*>x%1@7gPTX2JU)5OTOOTf<2GCTY?!mn*lhc=&Dm_a z&URMjn3FlQngeH!n&-$fhZb|xJ;$?i4&HN|x4F2#OQ(hQ7pZd*pGEq%h>nZ!UIc3~ zPK$9`tbdC=s}|F5v3!g9ET+j4nk>O{i8)w;+sFJqQU53Im*Vg#%unV06!%Z{W|_5R zcrEjsTc);UcrTM{89vMDvRvPnJJ-wgb2*IV&eL+5<~!H53bVIDA6L*~rRU~K+*hj6J9Xk}{MN|1R{pj8*24bGTzsac&(yL`?sa0o{dVKHxdt6V#I;D;u&B{+=e>Qh#@I6E4-*Ejy@BTKEf6ILi{yDSr5Bz`l{X>)g zvO-c=9Fh_;*y)fI8Or9db?h)Z7m}i-SY=j^@r%_BN%6pzhNP5qc044d_6$jBC0Jfa z@{XBQ%=Lou%=!gIA?d=AA*pyJHYg;OfL8+kMeZ*Wd-2$ibP4QB;FW}3QtYMjTzWPn zU54M4B}3BH;;xaajQtzsz9}&z-LfzwRdlV0|Lt;C&Iw6X+*ipCNq3iKuJ^>5Tvgpy zmE&G(_u+D%wfieDG54PeN!4IiQ~LvO9>Dh@wNyV7l4?v0Ne|n5MEoOSYVv=y0Tc5W zjtE`ZQioTYFlK zPs4gfz0WiXNe$Hgtl!V!(okF@d(T%7Nsa0E0_~dM)fAuR{9dB-OZg0sm*sw$Ca=J2 zflo{LEek_ZE7w-`Tk~&C_cpNF@NJ{6w(_@=tKEEtTYJ|G{4&}wed&N_huo0VQSOd% zc03r8GWlofN2dN|?F&hrt1(#FxOCTt9`e6t{dM!yn~wd(+cF%@f2-RNqAXoP^gTIVZ_CS^Q+{lW8+Wow@4C^?Rzk)69auB}voiJl*{a*BNro z)Z1Bdg|N7VWe(PB$3--C!Vy$ak!+Gs{u~(HxX9Vd}DA@vyF#250%QC=*^DNlU{vzEm80Eni(^iS( zx(+2&9!+&#u@Z5q<1F0xnGYvWV`#Fjx%HMS5lb%pieWa+aPc@OmE?AF_=mlFSZNwa zKapJMf*BzVRZeM9&XEMHH{Mr%cxG>_+feSt8*hxgZ+T9Q3_RI9e%`A%XsQS@&hg3? zY;|=uQ2A-Zmo-Mh4V$63DH=@XlgKpdQcuJU{{2?8~s`-RQIj0F&v!JEjDQJ-nU#Ci|kWNf9lHs=zhr zWbW&O^#80u^_!BzUvG*{416;gSg-t|3BnX^-aup9cCU1hyisJVAUUT8MCC4=Iql-T z*SpFuqZ0=fMNhl*PFM%+on*_uCvtX5KOo#R<+lI`K5mq6D!hj|+?lDObg=V~=SW$C zwCj()H}eIXt(xg)KPC2Cn^q@?zn!1|q4@3Im8gZN`O_4uOJsCYH2Vo_gph!C1m@oC zesa~UBsaxT`7>`2A**Hlq4J|3cvLyiV5O#>BqP!(G41{I(A&Alwb(hUP=5oJN6DRG z$0@O`_V2sf-0DwHUE;vLW0*h%)6T4f(84OCg@%$F#XS=+^^Y?_g19qODo+NMX^g_m0@=#60c^oaupDdOi3%O5J{ZN;KW}6`-oB_A?ivOA@XZle76^P zS-j*Zs~5Y|7=9xU1Lr+MrGA1<({;e3>=0k`?Hj7FULW_e8sH53IuSZJc;~?p#PI90 z%9{nbwU(Uf*OOxo?shim81)Tz-NfokU$n>jGwuEFWd}UZ$A9sFL-s*XxKFCyE9VIN z!e#pQEMfX~+G)uTDn3S|@}#XR88i&qnV8s!>Ctrw)oEGDG96ua*1_7h`M0#Ok-mad zVCFC`CQO_%JjfkePS~j@;8mtH0(?p352hSe)^Zo80yor2VLcB3wPDlj;{&OdVM7C{ zrjQVR&wa@DMoT`ne!JNHr9Wk`Q)``YJ65BuQQ`U5?Hys`vllzgU5l9H5lps>F*olj z>uzi*gF=r$DNUWao8blg%o|d9DKi_VWhn-s`q47R4ZnRqdmNHAU-Z;)VFL6}?;!cLL_q($8yAbm^eQBG0l3L|d&PJnKcD0mC4a)R4bbj`WQE69V{*5uH}PapcH?!$G=kIG{fKE-C&`)w{j( z!)>7w)S(m7Dbp2q0bol~M__14JeI+0y~4}8@37LSyud5W2#XoGUUem+9KF` zkJw933zuLwa3HO_w>v5rdpDF&v)idum>+k1Olx;(IzwkqijG)hNMjM2JG!x`7kj{o zJ;omV>AU?YKhB?#J*7+%iL#n)J!a%~*0FOfF+R%5BlsQH_N-B12RYKp&3Q3x5nL)v zm2zymUy>sB@*J*wfcJy^Hi&J|N3Oo+G z-nVLRgK4Vm;X4P~eb6u5IM$GL=bgR6uA;Qj@X_+(8JO@=TK&;@_cnXmV~)d8O$hLaK<6QA5v;ExyvLb$XH_mlqw0yb*H~Z7os!Uicazd1zm7HJo=lf; zteFidPE&mB=%|D~QXX?vskv4dJI-jNJ$N^%LZ=CqF!Mvi`;JOXd<$J?zAj=Hi54!` zVK$2GVs_Tnc`9KASMuqdR^pqMO+2qUdf(ylkd5iHr!BY>R5t$GnrAbk5$XSK68e6| z2j%e2qGIc>Fu*+PD?W+?$$<<#wM3S_LJ1E?ZBmch+`PWNx5G}fG7fUU9UtQn4Cf()1ku+}0HgR*Z6tes7!E7%Vlw+aCgy zK3Xp4q`Ru8Y0T9yH&?Cg?fqfod}q~J8rD7|UNO-u*oF+4Wuyd#h`y`Ju`mjAjYKF( z+x#w2D1Dus}qYcHsj0o zI!sz?jTq&>)JLZ-Invr{Bq$D{AFs)}RT3!DC4ooZZ1jR5^p821QHsmRab*Kvy z(-x8+>;J#)|Ihi~h6K~T6?vSZ7y2KJYL17?x$%kTtnPs44Z#ipkpn|E&});cNW`gz zXsQ>kL3MCaYjq~*S4$6jdbowVJoCOWrlq*=cX1!vJ=CFPM$Khd=Xps!>sR-emHox3 zJcm9PI4Nc-LmUqh3y!77nFE$eF5uWCD;Q~-kWs<6R+V7zrXpSnbN1V`j8*AeHmR%Ivt41QE-v4 zsfSBaj4AK8`0nC6Z=3*2Z~%0T&Buy>6Qq; zVxIDxTDLo+7*Jpn6%9Cm)WpsN#(ixQBzlX&a(It8@7sNDm^ih5DA%yuE#GQirUsIh zm~QER!T&K41BuG_ck#S>cwQdY8#`-_kE`w{+6C5WnhYhndgEE`Q*W8-!ujdg<>2cr z{%^NkR`wo9yELWcw%=skNPk|jfSJ?Mjw(ZN`z(fU*7rngij*K3LD1EPT0(vq+ZzK6 z0QXX&h__^pc&~${Z2!=IMfq(%%!v2ies?O?TW}q(p)WB~taw&@Knw3~IK8Yq_qkUg z&vXW;%Ilt1HmCUBOlh$-iCPE@iH}p(IMUr4O2CH(a-Uy^*?~RR`Mp2$4Z#jvhUK4u z!{tgPxT`u!gVnE3DfQ6{o%TB@`B)h?Br`0#sy^-Aud{5nGVDm6ifFvhVfp2i#rF66 zK7J7X zb$>noTV?+u^1}N#j>nsd<9+uurDiN?)937|Ommd$vv3$KJ`P6}sL!3ca!z>m3?;7~($ zL@i(*af~c0EgDo7p4$P_+6Vjn$K47xuH&&LGOqK!`?w9jg8sz%tYqoL$2liBhndvs+`Fr%>-Kb#FY?x&!YL=5q*cIl%>oX$4Oh9|T zrU5R~u<*U+Z5;ev)Vhc3JNZFjrUBYHGO+T|JNa$Q$j#Qo``_DSGwhOOjxs;v1J8FK zVkWt*dc4c;JHoudb1l|wv=Vzx`$tn^40v{=`5179&`LN)ybNjuszumv*M+c05s+hb9~ub2diU8|2lwSgt@ndxwI;^6yAwd=0Mw6H6R z!KY3l6W-3i)-gjr&-EqpDi@c5g+3*fkbNDgbo?Mk(e*E`}@g51iBED}L@*0|TiJkZ$3E${8~ zvfc{aol8NmPi*HMSo@r~6^;Ra8esDSZjGs{Hgi{Mv~BV5lpCw9exxf^Rn=Cfj1AbH zbl{%}Rc&?t)!u+;%ytMS#)bU%$7SZT9+aNuLyu;vY|vhts!!I>jtl6`N2&LU*EEA5 zu|zkT+9uxX6imYfN7Xkah6s+^ff3xatk*r|yZOi+P_^kpNj(+zlwC0;irw`MqQrzy zVnn^$1xtEnhg4-)%ck)T{z9A3>-Zt#4oCBt4EbO1^Apj}L(H7>@;cqpkGda@L-?c@ z?YdTee#;wo!<1= zR+C2c~c$dUbr zch)_mr`4gJu6BesKQ4s8+OTz?yi)pbH$PD37k%Fi@RKdkcijHaP{Rn|jLc*9Z6Beb zz=OlO>j1M3*$HAl59htp^&sq0$FOgxr#fMaceO8S^UpWwsLiE=Yx*182SM>a5hvN% zE1LH!oHn%ONY|(xFMOo2b8GytSU|^|W*_C<-n}*WJl_&U%w^Yb!tzt-^IVa9I!C;a zXyCcK*cQ97@h@5|BUb(o2UJFxW8rHPYcmE@6SoolcIZ#6lW22IbpJ5m1t$Uz_-}yi zYIrM6J{!E5diO@`(j(3ALSOIQ;& z{=C-?H{XN%@r2_k{9PFw<>`(|4dlg6)MrS~vNefUvDMebljrZwv*b(nKCys}d;Qr& zOcn9zuIFwaQ%i^~t+F@G5q*zp-8HH}@pqx1y}~63XK7Dv&xKB$lf9Jmv~JbT!0<(% zoS-uCL}7dIH?E+XFxt{l_%r{{R>CK%#5iFELyIq*`Ti@IQBwyAGe;lG)J^AD-TP=% zsJ4!{nc2LdwTzjW(YM^LyltRxh?v7OYI7(mGa3p#b2hbwxbwt7 zA(AfM_PI*Q_Ubig;j$tp7jdU+$gMH>V#}Ol5KiH+!tg9YdDpo}H55nf^sXbEjX*@y z!;jgLtFD+VocNN~T}W-eca&_rPPqu>3aT7>J@0fWZ!|3IY98 z1K;oe_@UE&eBn9Nel?4qF5A%G!Fp8jQfQ^+?=jCyXE5-VCH1gcV}4Cb$>W&cf?g<{ z)`?6ya-<=VBG~fGnxDZ6${4C0_R|%EgKBKn`kvQLIEk!1GPek}$YtVvC*8q~Q8^PX zbZ|L)E(Fr!_Ns91?_lr~hqFnn+hd?NExN(B7|S77GkejZf$wj@!@trc{R(bJMa|qS z0n?QfMCW$CZJ)KIT=2a)OOPX`?YOOwvfYA`rs4}5Ql`kCRPB|QcLrQ-$9Lxz7ktY7 z|G+wI>~~Fn%^#Y`NZ2z3q3)NO*5TxHyni$LlY)wHCH* zNh>sC07h3=5S~$c&Az!yVud*DNeyI|2f2ClNm5ZxX=;n?*CP^xTmO_94^sX$5%b3z zAn3OgjAt~GD-`hQqwwd%GhV%}Bhq9e4!&d$II!+))0owM>W0@-5nJtu(!s$l8~6Ik zx8rZsJzFbt^=<3MX9h)vw`!{)s7OpE`wT;M8u{|~@q7A+jKZ~^Fxg8-uvb(E4EdPN zLRGZNw}xK@u^Gsws@S0A=KLeH?+bm^SWn1!xVqP9W!Kvwi%@7?Lt0_kdO)roRJ#5* zA>F2-Y572Y1AlGZ4@qe$*?7q;+Qk>8K$ri3lor&=ap|eUpnVSPhJ1d8->Tub!?$4O za_)yI-{7VD%cY`We|`($z*o0d>|s3qlMPkg6y9vRxSY7NuT_NcpeNJ+0|KinL4Ts4 z<=2&IE>a>53e(Nd;1K?136lynR*6sdjQJ?@DUCLwpxL%cv=#os}U6Zc&s=4|$p zpnRheq0EoX{jZCs9DtJn-s??bGT%E9_; zS}W=9UQ1v0f@*{19|Q@t>-gd$=na95O1t(%ig`=O&QdXgP{pR<;U=ek*xyPNwS)X{ z&2$;OgXb8;pBe~>w%$3tB_F(@kkMVTRP1`GM=h{Kl`hrl)moZBwtY(fHIC=d5M+_h zuOdPTuMw?ZG(S+0n&I%hBm~L^7;es^=<2#v1{o+D7pWUD&s62>ZT+DeOKTOY*tSPzt1IUvghpOYq2lFK2e{s%}bVwTopwI0wM>Omu3CmhN=!} zbgK!dKn0Vs3D#odAo2yfj2a@OyTaSBf0_Tqkk5E*z&BWHyJ7ne&nZ}?&F2d~G<4lH z1rCG}LO*l2lW{O^D2quF)bL8q4*&tg1a_nJpIg?i*ImyM6{a%Wv`n{glyiKqy_cCa}U(J~u zmCFJBs0j}?aCZRbIIBD>9^FbrF*nK_&PUnSKZ0 zVb^`OZz>Ii?~F}E%X)TxNvK9sd;^v4zp1nc$2B=keod%;YHu(;aWThJNv5BWfW%T| zcT7?aww9{lmw@4tNhI{Mc?g84sxo%&1g z^LOW8`~LbjaLhgdWYTi$*gcrRtzQq#WwGb(2v~f@PrS|`f*~KAIxl|vS8wKD^vgu= zgNIFixCS;j{ChhEN$Ckyog@8FF|YRv4!Jcq?i&@Bol-NO+GEdEL&WP&U56unge=Oa zVZT5=v)W2sdOzjqn_LbpS+={G+|8!N6795Ea@s50EvkuQBWvku2B1r+pysC{u5Aodd@_8uy2a504Q*Yv86y znd|P)oU49)ce>@HoGW?fWm3Yee+!ic?K2|}|N6%tiDakLH`F8r@9E6FF&rQtyJu^rDZDuaJ)rBFa0;H_FGN@ki{$(1hVc z=LCO3Zz6R>DbwJW)6 z6Rt#zqx8W#U?j>9%1=rwrH9f?>7uk#`Y275PD&f4m(oJ%rgTt9kROnrkXA?!q#4o$ zX@~SdnjoE!Hb^g|1=0=afRKnkh(C#~#2#WZv5VMF>?1Z2JBe-dY04sHhO$7JqbxzD zA@h(~$RcD0vH+QbED@)P^Tb)=B5{VeK%65kp{7yus9Dq^Y6i7{TqiOcI20~~1K|=m zL@tVh;_m%xGQI!yvHgY#`}H2~k87~}wO{w@exq;u^}Y9-G9qssj69zi@$1o_i+-o- z586k1-9dU~|I+=VuyG>zNZ1>~9Y`ke>aEk4kDfSiME6Z*^VO%dSMQwew7>HHL`>v6 zTi`L-QzvA_ufIBc=^wGJ6I-Y59dUXS_9iT{T)?;{-u1>e^G?CZ_Cs@#hnmBi?>_x> z)%x@K2jY2$1|rWiKX{sQ)%Np+RbY>}$g#ykLWhM82_1<#7ep2mH%)YQ|o&@|Sx*VNTC*EG_!)zsI7YMN@oYH!s(tTm{$s=ZtL*h;=c zLPbnPLj9mrq|zIu$l^D}k;ct}5)bb<@6vA;BXS-RWnyI#UdOyndY$k(<#pUk+)K<$ zV(r-4$+Z(}r`C?IiLZ&RNt``)_N1Vr=hWHbXT{Hoot4NqmT@xUM8>I%;~C-^Vi^(+ z#~e;NoNzehaNI%MLCis7>e$rDsS^PQ;Ya8P>4)iu=tlqt0fzyH07tL~v4^pTut#7A zVTWOdU`HqiDTgVCC`TX%A%`J{AV-J?iHCI}DR1nX>CJ#ztRg%2lU+YBx`UXgQDe12Zs=&sz_r8VUbr#jy8 z-tl6b+R#>tDbWj#kyZ*H#5!Wd1PX`Ivlo57YwDpDO~mqJRa?KzUh%2c)SrN%mCl~) z6B9itdP4M+=y6eTQL*Ayu47g0t&-ysF|n;}j-`RMwRcOzQe!q9BWfSmsi?;oJ64RG zFFOW}DQ+E_JwE$!_R;L`*=w`qvp%!T*+a9@vxc*svywigfiZzafoXyDfo}uz0#gF3 z13v_o1!e>i0$&AY27U}I4~z~htTnL%I>8-u9r~+b5eQJ3(^bzRC84!_2~GRhUSoDASY)WWt#MCX5M*P7E|mxNG?7nc>IB zhKYWi2@g6yd31iX>r4z)NVrpIuyW2nN!t*Ut6~N%Odqsgk=;xRHpJ(G&0vMtL73z@ z;iLnG5xKJc4_!asu#=RHOS)&+W_IzoLdpq+?g}7$jFig8*{4wwTK+baiQP;d1Mrq2uAGcB$?+Y2Qa`xp$ zPtR$nN{Bb2G*9<>+PB}5fD9$W#@Jf||QciNe zqHC4k8^0XCB)>|(_kJaQXun3k*M3=kpZva8-m_7{oX03)kQV;A(M1EF$*fb(7N;q z`!!j1Qb;F$0qhH_!%o1?o)b+H>Wo;BU4Iz#`KH}j+4v;=&NknRVp=I;TFI(kx-MN$ zWPf6(=yyBKhs}pAl>3^fBzMpI*4-&f>gb$X5YX?e-wpb7(>mk4X>xw&z`~jJ2SF(U zin9xJASqciVX0H7OQ=(*JL+dtS5&9PdT5=E!@1#~M;7$f9qTN?b`Ixux*9 z0aK+GRTup8u_h0T^?nUmiptwd$upZb#px$K< z)&-k`jli~GeJ~Vk3WgDG5grl@2v&r1%3`Efy=q|Us~Lc@H+Ldbl` z0&kwTAT%!|sP2iX>z>!2*I($E?^uwZmtV-A&tGtvcUf4PUs{lumsm)hPhEh{Ll=hU zhZi*FH5O{-W!A^nb=Di!LnhSLdFw*!QS18a9qaPz`Rgw0OY0Krsq4`7;dPDmnswwl zdtG!re%*APv<_UyO^mLaa5aJ?kbfgHcN%u0cJg;pcWQRxcW^t{W`)M{m$S|*e9yXE zl%-Jbcsb8ep?dam*{lNL#N|x09KVO!ikPIn`x3du{l?2>8xMmO@kvwn0lBz-(`DSz zhX)iRlA5}XITu`iAkYMRcuz4q$?=leyAw*$pA^5`Nj?#&5TX#Gl%0I73*1HMvbvO? zr09IV&Mfn>;#?B5>tAPxbJlgkFC`BiBzmzxz!mtA?Zl9YQN-~aWBd5Tip{lxx~%F9Yg$z6)h zRlaY0b9|G0D}CSlmiVH58+~8%)bul^%U4+g|#g#JiHaEV_oe($+>vm7n*Ft1h`Rv1>& zxU8Y5p`f8ubGb&bMxjOtc^RpQR6r`RFS8Zd3T!3O%c6>+3ZhE!m*W-V72=glFPkcw zDwryfE|U~V3M3`qWuPKZ0jPw#j8nuZ;FRE(;fintoury%WD+u&oy1NSO%hFxPl``A zO)^a;C6SVWNx)=W5-u5@1W%?X(USp5fMjeEHW`)#OU87;yHpmC3!)3A3%~{V0$>5Q z07*6vvUsRxVdiY{$il+hf9Rp{keTPuBl{uqFtvxeRR*-L0grVGF+(bD(5mz?ds^n! z7y*C)6y()GSn!i!Ldev(4C+ z`o&IzVS`~qtWU=D5d2rKU^YZ44&C{D!o0^+}oBwX!-MqN@%s;N)5~K&R02zbqLAoGw zkP*lhqz{6EOhGXGE&M~g0p1FK7ysBkzYGdA2SPOpq=u9Rm4=E3i-(L?p8LlJ#|4+x zTTJG8L2>3dDEuM(G29Gp34a8)fSbdi^oR7vbThgo{Sn=QZcc{+9s(W%%m9{vM*s_e zIRJ`%h<%JT!&+h=VJ)!cSSaiv>@my?W(j))vw)eypp=J{#}qSU0lb)AKrf;f(u)BF zfFeL4pcq?#Ey5OJi(v(@B3L1;m{LF~q7+h!Aq9{kNFk({SU@b&8KMYYv-B0f3U&py zLRo>V5LZx=`OLJh(P=rIX<3D7dCO^;U(#|%)3WQ*^0_u&BW*sCZ&M5W`?cNeE6Z#& zN*l}f(@jUsD4YTK)C;ayKZIX*j3M3^*d69as4q>1{Z8fF4+`0OAg(? zkw?p=mBx|VU+`Y=+?=Y=mPN^~3pSCKg>eJz?qZev%IL9+p5N8=(u<4-^4wJ`zl>e+ ztX9__hou+GeC-_&85HRkA&dML84?*Ns^r>KRo^Q9eabDivdyM6ptkyM@j!~(rcFfk z1KTn+H)ER$a#ratOSj_6p|Rs*AIBbz{T{nERzBu4#vD5|7CmM-);T8WSsD-%P!y0B zP#^F%ATJ;#pgQ0~Kv_UW03qO2KxV+lfbxLofWm4MTbzBKeVOMkbvNh>s2kK3>YiTN zJ9dgDNwe`Rt~MSov(LB3O@5s$n9P|hnar9jn#`Llo6MXnoXnjpoy?x>7JTPV;y_

vA^$_L@_U-1R_9DE5r3txoK!j6O&B5!5Qf8lg%5`Jhm*s9hYtm~ z5nUT9DOHe4NENY?ScR%YRqgqiEcxG-@Hb5L*Ms^S5BuwC_#4&u>m&V5*_*dSH_ziE zrXJCAkmQCx_M2Y8NPN_kIX#z6=KTrV3=c+yy#zl5D$V zY*?9YJSO=SrT%$9F{0Q4O5=aCf3t@=Rury)4+J6@3b}>N7u>};fD%BK;9kyyF0(e>!d^LK0|zCRV>fO1-eJ)W z`M@FS=7F#;1UvX(`o?p-9xM|#2wg7Tys&X$GkYU@(`mzLb8cg9Q*1+QGjStvQ*GOZ zf0F;0e}nJGKgxf=zry$6OY`mcH~FFbfB1L!=lPEO6MVBU48ei;fM`eg3LnJ%!VTj3 zab%6<^iAb$we6~H%dm8UJ<){dK)g+SL^LE?6ZMD|L}Q{oQI}{=G$Ps(^@&iTDG`Rc zg?flGKv|*gq8_6jpzKh0P-dw6C>zv0lqJdp<$$`4dW14WS)=q&7ARwsJxUj4jxwTT z5=)8M#A0GT5r_JUDnR9+N>Ev-B2*r#43&v0MCGDNQQ4?sR6Yu~_jRveFK4f0FKe%e zK8PAXE)%J!Kd2SdGK#wQXK!Wi47y3`wXEbPS*e&z$+S$Vw@)Qgo=Sa~k<6HpdUae< z@19V0_V3O=9)8#AB`4pn-4o5u|K0t^bK}~!B>(+x`(I99ul+pjarD|-$(Hvs?FXH5 zu612jKOb?r{Nw4uk7ouiU;A91T3&N)?6lLW)2jP>HQ#%MkDezE?Mz@v|ZW>x)uD?f+!A zTfMk){ghNy`%L?Z>^>{EK`G((>rQpQU)(s;doQ-U*~+!#x}}u-N!ht@gV1pmuKi{`Sarz4o^DOYOPs z+D>?%FFtkUO(QStp4z$EIoo-9TvwN}eeeF>J+8D}-KoI`sKU>j;=Zes5N|<>^=M3v?6tMeAQ`7P0*Iv z`}g84M1t0cw4;bx)R>lm#S=Lk5an>W&HI@(S5X+FI zz;b1sVOg`ZSV64)EIrmGmNQG7Wx-No`Ll#s#w=w-6t|lDfm_DS;1am6xS8CK+;VO- zw~+gVTgQ#$=5mv{RopmkDHp@Vb0fIf+(d2#Hl2f#XTqmzTfhNxV22l2TS?lilMd@H~)%yTTn@c zC9t?gu;jXLR&3kuD|tme=l)HtRnkqk;;rq4l8@xe#Un9S9NR1%b1k1gDsFWoJCLWy zF9gp{d=*ZO+-03>`NhJ^!YY}p>E5W;G)78$Vf$qY`cRLJPQ>Rd>mPW%kfB zHCtu!VfWmsE*npor!uZG&N7}dPBQK?E;4Y;6U+p^<&G+gndU-hl?sJ{PUgAGtt#6i_ZR+WLXkYC`MD3yAJr z#joONzqd|@0776PC722$+VzHsvTsT>pRK@<*LW=Gcg8c*>iiLNn(LNd$Xn1rhBK*p zX@ob9pzT`?+IqEhd#hx z?OsEtSGDb`_}2Z9Wc(PoSrDXjfycn@f>5OoJOyqN1T3B4Q3oenm1((Ym1%`(4e1-H zlJuQaO)4i zpU+R_*YM-{I6k&TtMP(n)&;Ha*_uV!TJ=tvc}`l@bDCvyS_Co8O!Ij^Z*6T1y3a%+ zzj&Z`d2PcxSR0R?G6Ce{21v{FquvL!BhXEK$6N|jd(N!A_r9l{jdqmxeJ7?9ov8gq z7jq&?D?}?qCmVCE58OxSvyxv*(snkfGoN{^J%?uY{p$j8$x`k7viiU$PkR8p+;`L^ zPqq6Ct;c5zxu`9q$wKeLM4%%ux@cWY3tG{IU{1T@?S_u*JMU6%PL*D};L?z-qq6C3PG$LLjvJjsT-z(a!spwhs3VIQ} zhMqw$qZiOL^cU`honi;CTWp$fSN#UpcYUEr-{?XY2kF>ns9BnmJYfGgG3`S zY&07qiWbGhqvJ8AXj2RcO~L@tKnxCz!@$vS3>{6!0MGyo7LCQg&@c?958kJ;gj^C` zGF<{L!IuC_uq8+;A_(fO2laJ^`dB~_{=?qJ!@i!wKK8?iFb!|rnxC}k06(2N%%qAJ zv?hIgk~SlF)avk)U@uq=cAO$JE#fCs7cnWj_7M45XF_J?gP(p~o7emajQ}wXf7R6b zODYJqFFQcL!D%9FB5bnUt54a#d&0M-xzw+tZf^3>TKL*slU(|c4PN-g}PN*TOHmW|V&SEXJX3Tz?Tzh0vZ_TlW44SZ?CD$2E2G=y% zFRCD=Cgo~IJ$<0HN|P3AZtR1C^x|dq3-)QYmEe2_vj1h@WnW}JL&i0bL2aNRP%mf_ z)B+j+b%Vx19iU+l2}HsF!2iPk#E;-x@q_kDWk?_bh}5W+npB!lnk=3uo-`ILWU(P} zA*BsNlZ#$R90G@gd&B+UzVHCJ58NM)fFtSNbU(T;J%H{*_opN1NPsuM58w+30Qdm> z0SEvR>y7op`eFmHK3IP&0*i!s!~9^rumG43%pZn;At~MzKZ-B17T!RwrPtHz=na5c zKs}%i(15MQ)?@3i4X|2RJ**DaK&hqFQ|c%U0&TE*NFAhsSWB$enWP9(lk_#f8g>n~ zMp=Wb5!X;>mzWvT(HZld8MB2Mi^~}^UosX(Gv?|tmbebnkq#e+o2Y;M*R@0J8_OIt za1FyP)aA|f;E=FJf&&Cc)c7IwM|k}}h;C!%)Kz$`Mzhp%+?;36CE5@w65Y@&nQ&-^C z8Xe=5bgImBFH2-YWL;!SgekHq!YXRyI#kvCC}y4tj%{pnC`H!Rv=*~cf;Sx^YIXexTjaH?}k5?+doK^7s?koCy7 z$UI~UvKsjTS%%C&5|FQunaGdGa%42Ju%^$JZog>1=E+bGh6X}|p+V4)^v2$)Q*=qX z4ZOIfcYMu$$(}wrJ^5#HesXnkc5-EMadK^PW^#FQVUjjEH%XmbnxuoKL4QE=pjFT; zXa%$gS_931mO%?38fXqg1ucQ-_-Xtf{Jh|0Hj7`uFXGqmGx%lv0*x`XB{<~GDb^Gl z%m8nI*TGu?g|tmD3(O`k2pfcT!WMx^*d(wB>~Kc-M)-R8RyZ?!Ga#54)X+%5LmDA? zVj~fcYDD4pLi?7&nk2$HQ^VSzVZFm)EgE6nHDMjdFcO>pLzI7>7(w|>pGR&raP0YB z;YeZ>Wq`iG-r{k>_~GFw)Jw=Oz`W>I6i1i;bk`g82GS2$kl=kZ-5D|686<_Sq;h%$ z;OjVm7SCie*_$2PTEsyhtDAqA*bi8WXUlVVTrs}k?lV*jWC*)x%68$X3JBLcP#=gy z$S~vwb_wtYFb`M-%mP*bi%>3$?}mB>n*(l0aAWy4d)}yM*b;D)%0GbmLY#nar0+Z@ zw!vm_8&GaB|H94%e)di_-)YB*Kesc-7uylzC+;Nj)pl+6PVPP4yRqlDcXaQ;-jzL% zJ?TBWy_{PoYl%uH zP6{C6DFI0QTL2S}65EJF#9o1~g*ZU$CXN$3h{Hq@k%Ibx`i1(58bP(922nkz2~;zx zAJv5#L$#yGs6NybstNTQ)rlHKwV{Sky{Ji43u*w>O_?Fm1b{M?xJ0B2K;=IISb0?d zEUyTl}~Ju zxBDS<=iC9ab3*sO9D}^pm#g!tJ5!qKhl1O>JLo5Ub`Lt z)#aDcADN9q+Xwiscbi^5d2;pgY3ZYf-X3UqJ=65=$+N49mqoH({_B(QuWQ2o8~OUe!J=wkozN^pbwut!;_J?)q$h4yl|P^DIr#iQ z#p}@~^pm|OUf#E^0yVE{Ue?sqyr_9Y^GdmH6)VX> zA>pR)PlA4(zOldew$ZoqR%c2MTMFs_tA9X$zrIk%za0lU_IC)$|0{n$e!sks`|GME zg{HzL*QVvBGfiKbteZxgw3_Ogf||HZ`wCL+L%osSrrvOG zm^X@Xi}8fhF#;KP8P6Dx8Geih3=f7KBb0H6;m9y!_%iM@+!!{DV8%Vh zbB5)&3xPU;@_`zGz(5G+9Oo+MGDnkhk#mD{g>#d0o^zd}$kFD=anv~~956?gbB&|G z(c)a~8P&Es%-ONzH%?R7ixGLiU$@kiqi$BV=t ziWiPQ5-)0c(DbP3VN;ReH|{Ow&E_ow%>yl}&8jUG%@r+(W<(3CnbmTn`AAD_b8L%I zvr&ux%r@gYW8GV~_FCil#_NrWjoK3@y+mr>48IwEYun;Ev&E=qY%|_6+8KF_MMesP z%&2B;F+MQ*7-ft#Mh0VwL164MUNM>&nT#36N5*ePIfKcFW^^(N8Ow|>j8R4%gUg6y zv@voS3yfsO5TlB*$%te0GD^MmIRP9Kju*#)6VAEKdCGaj@!=S9TshX9AdVi#nPb86 z=NNN5Irf||jxNWEW6nWvj5zMKsyoUP;=5;ekMEw@72lQF72B2Cg|><__3nJMx+vbM zcmJbJj`*_Py^q$<#7Ff^KHAQUbMb@FtfnvQGQmRo_$RHDSxFEhr#Rumq)m) zDZQ|m?NggdE3g}1Up)E!HLFQaH|FgrVI@h28(A-&{VvFItjZ-+*M7FF9+E!0)HUv= za69gi`Qz$_dnJ{nDdO4p3OunFuIVY?b}n%CRCDD?8;-lbi6P}*b9*+bze6V>n7BF#9H~j6+QSO;_)p?hnqy(%i7P%v;Znf5e4Z16huN$iUjfn)EONe?|Z+u-gV!#|Lft|zq9LE zIXTY?`|PvXD5WooH!%26f~cz#b&Xsa?_qlmJDuhPDBz*2I2Yl0qZZQU%A*bJG>(!@ z0oMRBTrm=DvguPddc7aHV#Ku_l<_@DmI)|dY^rc2f6%PboNqjue@nb;N306X@V1g- ztF+}C*IR{CDTjgIh&rK&qRTXV=8gu88ZVv%xk@;NwG=|LZKh%>bzld+N3I3U#nm3V zr!TejZ(cUPWU%_Ke5|sgLkC(>Zd)}kPwx?%dCO#wZIItX)C1@-`mFP;tViT2<2!YE zw}N1&?b~{Y2)0O;-Sjpk<#xS*3BU8aPkgLq7tgQp+f$|dl+r%&tp@^CTVd=f%qs0I zngIT9O#JAtBpHt8b}9K}CH(C&aJqNzR`acH(vHysRs&|EwOdI^rMC5r9_xh;<`Ylt zOf5}qUCkvtOUgZqC$>o|=i`SD9dTqlE>Tw~RbGCveGBJuPa!ywna?!+xrE0S5|Tx_ z?RBRGxET~EJT}KSmJ}G2nqg0^;*G9u+66tICZrAWN*I;d)R&#gFsu7@CqnF;Z=6hl z?hV^gC#r|FHa?xxQT4Le7?m3TXZ>P67UprW&te9+hGShfiDx`Z>JGk@W#fjP54~W< zd4}|m@w|JnyE;?dQqisASt6{K^dG@chs=q~#&I^xryPt;hwTcSApNZ6(a%3Rt-jOt z9Lqqttlt`{6R^1wS5;!+b^f?iwT}AKJuTM{p$t1+C9(>iDdIBM7^5Ww}ss1@}$qTLsNt+j9 zq8F;y%FB>ZTh=Ca4uOTL;-?t4t}z71?Max(7ksWgU&hIV=aA^zM2=2VD5{Fze@#gZwLwCQ@ z`EzEqGF&!1jFRyPt~Eo(;6jAzz{4E(bA1O8s_7gF4f)8kCYZybE-4&xrx<_-5b>n8 z^}%pXIje6?9$x<=+HVE@pw3MfA%2J$iYR{=(5NJJ;Q*q%wknmg{`|Sp{HhM*1k6k4 zESPZsN#%faLA-q!AoP&qK=+6z=~A5DkTEy>p(a7}+Y>wtdZtR1XQzUJ=SotZuEqMa z=(07Qq~O+{6r#5i36B%;PNI@Z{sLuO4gZfiCB_)gNW8LKC2h!eeGP57H9I8+r}f~W%$q5sieIxS?8V`jz3Zg7!BCGp>^y8W=pVZ=)6b$v%Udc%X^|3GMC7tec(ZIDMn^YmGHvsjym9%H}a zf@0U=*<#LOOxKYk9ecWl6a=el!6FHCo2+%*j|ezBxYlJQ5_`LBJC#a7cT5##@@g%hZ%-!2nn4jT~L;oZIELK5Dn>>ZO+IR8RO0ItV+TTly`nGn3lP1C>8PNUGU_>LMkgu@AQOX+#Oz4b!np* zX*G}<-eg{(jUkd9pk7b^$j7uf-hw-Y$JB4O)hGqYjtk6SJ1_}J z0_h71r6sF=y@aHx4BtTpGpvY`HT{m=XCIbCqxBN;-!E(@tKhyJj93_S&vcqSU^0PZt}oes+cKe@#DKJ?Xnwi7Q508wSMpA|X)(IqZ*+ zFq(gJ79*_(Q^xluK@teQ*!1s_B?wKi$%(1l3o($8Z~_DNN9dcVV`AUX4+4>+qQa~! zK=LQ7ll=26$)Y=GXKk8w=vO~yb5r&lPa+2mTdIfr4pie_U0HSEou+DkYd>UeV;sp?0iaWUmtourb#YvZ()F3#iq9SIciUOr z|Lw}CM-QKa>i$VT9=3Q;1gnlr1lxp^=b>i&Pm3r#NOfW4g78Jp+ zgM`!hh83oSbQps^6Xon!{xiD!iiDy~liKctfpthhbg?QZ(cN@6*tr<(NA4Pv2VhMBN66_IN741LXaa=} zYg6sQ^ON8`bz1@`zvh1~Y-aJ&UusqU#&c-YvzTU%!XEf+2Gad{tX`|AaZ zb*NHf^4M6-gd$Gq7+<9mW7Rw$^iP9g;vYi1ZXUF(J1x1o>QeKIxtA&I*eg5RK&fXQ zX;PjJH-~>wNpg?lwGAyOgIahlc%;phK3nVcTRb>^eIV1OWHn%}WbIIoaqrpDP7Rs1 zLtdWBo0)lq#Tn+Qf=13>1Ia2u+%w&5W>Ge=HfihdC|9Oy<^IOzZdgSwMG23wl+p$6 zp*s5xstApdG#@9SPUiHSN{oD5cOT=?mxE>8cNE1s`GXWGLF*1H-YMyg~D5dGICY+OC!ZxuSE{D@~-!(atw%kqlC z6R8ViS3;?-!2Yq?0~y1)MDQLUPS@Dk?WaJQv=(DOwaV8^3DMs`dYFFVN`#u&CC~@ zln@J3bY6W^fw#TpzNf4w|F^nPiHT-mp(Af1r~g*^o{EzZQFFwx05BDmR@gg@i2n<< zgy^cZ7?Hs!aO`2ZWQ5lTMgGZpG+a+ub6smxO6FFqZSi$31Legbzmg0D=&`SkqYhBV zUq?~bf3eJ(JZElM%d4+`yHWe8^NmU#>PS!&OFQcc)^i-*;XG0-&MTlO_D^{dH0Lb` z^<^2_uikw)7ZOi%k)@5vsZkT4s8J)VS>xQC_WC~4?Z;5t27f+DhjwES-Rnq^*O8Ab z3CbWkSt@W8C{H{2TggFu#PVomE!dpOMB1Oic`k<~oMO{vc6zM|P>s3u`9L0}JR~VG zHIgTpMVrm(q!vJ5qwAMuA;HhtEt|6d{TML4tOz(tq#a2r7Pjvx>CB6e3*4gmPMfhI z5`67eM`OVIWZS_}O6@GsJku=N{7y020G~ZbezS<`f2H4>uD-zH{1Ozke{V)CUrp!z z*N}i@nTd|%@uZf0&VY+^BTdMJMVrCtq$WT#223rR4~pVwM@I1M!7|QvEAg0Hl(N5q zqV}~v4d*$=qD|}cS_2^Pcfc~{b}PZZs{h*Jai0y6dAEI%Yl+?Mj_jBP{l7`8HEm9V zUqbi2-(}3Ac7HvS)RxpM*U(jaPQg~JLBV-4kAmI|6wV-G98M*M)S&(jqCp}X)ZkVM zO$z#xAaZ&UP&kzcGK`81Ihh_wg%%OnH~=Omvg6eMtwvwGE+h4q#};|Rt`P6 z7D(9{Rtmc2pLok9QPC052zdHV=ZjJ*??<=nG*H^nz77!jNA%F+pD%0P-3mrdfas6*7hi!p3jeaS>>e6bi;m7;f=YFs=--)Z z%->c;FpV@P)uD^3p6!_Q?`P%I8eKOWiO%F0f7Lvne?>)qD=>LY_0W=_5hJbDi@yC6 zj)A@mMrWqFMOBm$hl+4mj-2d=*GKuPO@72p1ARvpx_jq_70jgFg8{qs+{dqT4=!&W z!;@V4)b$X~H&xgp(C$l&>mdT4+-r}$Du)#mB`a)Qo4OkqU%l@Y>4U!cVu>9X?DQfnFXxm39vj;1V=lfIdrq4DGz$)+cL8T8M9yWJB+ zXKp7GsO#?Mmovf2??cP(T!>asG6`kGfubrbM_Ts7 z^eDks!FU)=Dxx?8~5g<`zbjLm44d^fyDdMg>=6EFd;plSPhBi$)Uz zq61Qa;UE{5NI(QqGfDoiFO528k`~CJ3>R{H3I|;N43A?RKSLxO;QJXWVkT*TuRw4< z7jHP=;%BIU$)f=dg5bO^#&CegXDE+xqyatx!GSI^aKJCfDY@=E46q#p=W$_y1Duc@ zhEN+DTT=92($v`l;X=?lnHs2$M}Re$?lziOTh-Jua2uuR^zUb8VV1?VT+L}j-k<#~K*w4XR)fB#ZmnuQIE&o)#P0TvV{O+g1r7l2=ZaJJfB~iXC*_G623lTu*`&9UIIZ_b- z2u|)I69%9`wvx&5XwXn%9Lau%pPC@mW(fmOAT`P4=rm}^F(5J^73hx^zI5{Ep7y%? zzE48m9|uU@SEKx@0n#WnspMibb|*tBVF-fLyU2tC4kBBrXOxg#oybtrT)r8eib&K{6mU$>k1f&`@LY$bcLmIE9OG7=R%xlt~*`d5&&J!H{&{ zCS@OMjSv+WcLV^fXm~g2ZuxB;LVJzYl@6xpT^&9 zR>XlFl`b4y8lN3>@>#;E6Qm4+!MK=g_s}QO8p^O^ipz~4auA9p)%OPTU-XYV699tS zBGg2@xK%a5~Wx0oSXmVQT*%Y{r^di$~bk}o%t3b|3)q)(Qh(z zAE7Ut`2Qv(R#y0VUgXoii-Wtpy}0hbY-rei;w}1oGDuX_f-P+MZb*{kR)O~5V|V+L zaVZBDhoJ|aSc(jdZH4*8a!=;vl@Sh8Yef?2cMfgjPKHMO*ZI#l2~ga`B)T;ePNX3+ z?eGy4H~tI$dp^GUI83wY&mmD|rKV)4;qE$4O|3;dBqk9j+l+wD z&?|;S3qatS7vB{d*ffEb(XPC59LOY5K6GH|nA4 zV$?Xrj)Db_mHH7=Ke$|ZsbN9dpDpQv#AvctZ}KA-b|C$=vZb;jR1W@f&!TAMPn=3r zGyY@GqIl(BJJ38-IG(15@9fsan;L8cf(u0m!eR`>{9 z#PEr3(!tTF(Oc(_8g{*=eomayYpS8yYuPZwDG~ zS8r>Y8o3+ktqpRGVsKrcMDJu1pgFzuH1JhgYoc7EGcxOOxB11Rhb+&kv`y&U8^a#T zL>|Rb{iRL@6%4uO3*%| zbw;~6G7vM2tU<0KcNg1^su z!kmSw3ko*LxhSa8%bYvEq&w~~x5O!J-bP#5>%Dtns|Th}tgAtTgSLf+Z z0eF-McN|Kj#!zbkc`%$5o$n2;P`W0j)*bO`n<_4#OYmh;h24pEx7bAx~h7HD?#(0qy z@Vv_8N}T2`J~7LV>f}Rpx5zCX6EA|AY9j?%5bk{nLc|$KmkQf=- z$&3?)#RyJyZP3GFLt6!ivAI+88`Q9?eK_SECiFw@4K~sqb2Ew?k~@^>w)?q>(jQj4 z)mlAKt+oXE9gff_^)ASy^or%iz8&6)4$?yiD*+q9Ag>mdhQ~8#K9}7LD3O2vzqH$Iw83M>&Nv%3Ig`4 z%rW-fhm|U-UU)zLF01$W{zvb1*0*QJqEzXXr+HeusDE^yCVD3;tqrWqd(m|2x>5wJeN3_xSb>8>DaS$`kb) zIRS9ET%D-taY@tTVy4F(jFuAatc<&6WXjjo$knaN)x}*jNxwPnZ<|T%H3==51DOA%FX77yji5h4-lQ$N)6UW z@#Cq4^5d&RZNwhnBJC!XB{M9e5|SrHq3I(KqHm84UwD{a+7zQ!sd(v9(!_5~bo(B^ zk6aL9HsfxNZ^ASUynzkAE|J2s-(S(OZhT}acq-(Mt! z*SM5KOY7=kTIg?6=x&BB|Bj z?S}@teL>b4EqDJ~qH+Dwgyk&+@g8Jjd#@kp8so%U?&fFG1nwc-^*0}UEP2Op+~(1p zV#tdG&pWJ3xS+bWzQ-PxoN?n%hvIT9y3d!Dyy;YbFfG4kblkP7ujnJhfcniF`kE_vmA=sRn{d)ngmVJQL44+Yhy3}@ii7!~Xx#RJzEFV*_o zN?5ipzW)JXv)uHm(YU$U*o}{SA!J6&K4sC*nx+w7L;-HK{^Lxg`k;8@pfzE_g z-%B?umhFo+7Z&&{POJ`H$}F!OAnw?=`d1R>VUHJz>IthxOA}eCqpGVDi_=3hm$v;A zL$fA=gKo!OvF~U;yDJ#!b!jBO#A%|~31V3dHQQCX*qRAxWAzuy=DV&r=N6>og<{DI zOY^s+*NKyC=^i}6x%Ej+u~$ef-j3aN;M{78-JbtY(R+B+W5W5X6c|kPk*dcYSZeC5i6T1!L+?pBb zJv7#(S9&gFQqbt&-D5M0VrrRc+4lPb1a+amd>jnE6!L2OmWzM6`oiY=yAOy7e?j}1 zMXLMgCtZq)zlO4|yd&d>mdu>KgmPCNPnkKbJZ{#Nl{Ry_ccpNbOLC2^-0fK5VoYeT zdL20BgCbn!mqu62%!VhVPdpWXRtG*>`EC6*(!Q%Hqx^F5KK|i&=KyU1weix(ig{MH znPhh8L61ucQooG7bc@T51Gb7gg?>4Ckp+EQ--R>clPj!Lx18J z1ljhCnvAF6>r)yENH3i85{3Q%*#?dFj9QG>udVO|=yNGiV^vHb^x>8_9`? zD)MV&232&%R@LO>3D(soXvD3+RV>y9RU9THC(K%)ibmYdimZwnq+3NPu0vi$^U1NU H;t>BI>ZUNq diff --git a/css/lib/mathquill/mathquill.css b/css/lib/mathquill/mathquill.css deleted file mode 100644 index fb56595879..0000000000 --- a/css/lib/mathquill/mathquill.css +++ /dev/null @@ -1,410 +0,0 @@ -/* - * MathQuill: http://mathquill.com - * by Jay and Han (laughinghan@gmail.com) - * - * This Source Code Form is subject to the terms of the - * Mozilla Public License, v. 2.0. If a copy of the MPL - * was not distributed with this file, You can obtain - * one at http://mozilla.org/MPL/2.0/. - */ -@font-face { - font-family: Symbola; - src: url(font/Symbola.eot); - src: local("Symbola Regular"), local("Symbola"), url(font/Symbola.ttf) format("truetype"), url(font/Symbola.otf) format("opentype"), url(font/Symbola.svg#Symbola) format("svg"); -} -.mq-editable-field { - display: -moz-inline-box; - display: inline-block; -} -.mq-editable-field .mq-root-block { - display: -moz-inline-box; - display: inline-block; - width: 100%; - white-space: pre; - overflow: hidden; - vertical-align: middle; -} -.mq-editable-field .mq-root-block:after { - content: ''; -} -.mq-editable-field .mq-cursor { - border-left: 1px solid black; - margin-left: -1px; - position: relative; - z-index: 1; - padding: 0; - display: -moz-inline-box; - display: inline-block; -} -.mq-editable-field .mq-cursor.mq-blink { - visibility: hidden; -} -.mq-editable-field .mq-root-block { - display: -moz-inline-box; - display: inline-block; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.mq-editable-field .mq-root-block, -.mq-math-mode .mq-editable-field .mq-root-block { - border: 1px solid gray; - padding: 2px; -} -.mq-editable-field .mq-root-block.mq-focused, -.mq-math-mode .mq-editable-field .mq-root-block.mq-focused { - -webkit-box-shadow: #8bd 0 0 1px 2px, inset #6ae 0 0 2px 0; - -moz-box-shadow: #8bd 0 0 1px 2px, inset #6ae 0 0 2px 0; - box-shadow: #8bd 0 0 1px 2px, inset #6ae 0 0 2px 0; - border-color: #709AC0; - border-radius: 1px; -} -.mq-math-mode .mq-editable-field { - margin: 1px; -} -.mq-editable-field .mq-latex-command-input { - color: inherit; - font-family: "Courier New", monospace; - border: 1px solid gray; - padding-right: 1px; - margin-right: 1px; - margin-left: 2px; -} -.mq-editable-field .mq-latex-command-input.mq-empty { - background: transparent; -} -.mq-editable-field .mq-latex-command-input.mq-hasCursor { - border-color: ActiveBorder; -} -.mq-editable-field.mq-empty:after, -.mq-editable-field.mq-text-mode:after, -.mq-math-mode .mq-empty:after { - visibility: hidden; - content: 'c'; -} -.mq-editable-field .mq-cursor:only-child:after, -.mq-editable-field .mq-textarea + .mq-cursor:last-child:after { - visibility: hidden; - content: 'c'; -} -.mq-editable-field .mq-text-mode .mq-cursor:only-child:after { - content: ''; -} -.mq-editable-field.mq-text-mode { - overflow-x: auto; - overflow-y: hidden; -} -.mq-math-mode { - font-variant: normal; - font-weight: normal; - font-style: normal; - font-size: 115%; - line-height: 1; - display: -moz-inline-box; - display: inline-block; -} -.mq-math-mode .mq-non-leaf, -.mq-math-mode .mq-scaled { - display: -moz-inline-box; - display: inline-block; -} -.mq-math-mode var, -.mq-math-mode .mq-text-mode, -.mq-math-mode .mq-nonSymbola { - font-family: "Times New Roman", Symbola, serif; - line-height: .9; -} -.mq-math-mode * { - font-size: inherit; - line-height: inherit; - margin: 0; - padding: 0; - border-color: black; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; -} -.mq-math-mode .mq-empty { - background: #ccc; -} -.mq-math-mode .mq-empty.mq-root-block { - background: transparent; -} -.mq-math-mode.mq-empty { - background: transparent; -} -.mq-math-mode .mq-text-mode { - font-size: 87%; -} -.mq-math-mode .mq-font { - font: 1em "Times New Roman", Symbola, serif; -} -.mq-math-mode .mq-font * { - font-family: inherit; - font-style: inherit; -} -.mq-math-mode b, -.mq-math-mode b.mq-font { - font-weight: bolder; -} -.mq-math-mode var, -.mq-math-mode i, -.mq-math-mode i.mq-font { - font-style: italic; -} -.mq-math-mode var.mq-florin { - display: -moz-inline-box; - display: inline-block; - width: .3em; - position: relative; - left: -0.1em; -} -.mq-math-mode big { - font-size: 125%; -} -.mq-math-mode .mq-roman { - font-style: normal; -} -.mq-math-mode .mq-sans-serif { - font-family: sans-serif, Symbola, serif; -} -.mq-math-mode .mq-monospace { - font-family: monospace, Symbola, serif; -} -.mq-math-mode .mq-overline { - border-top: 1px solid black; - margin-top: 1px; -} -.mq-math-mode .mq-underline { - border-bottom: 1px solid black; - margin-bottom: 1px; -} -.mq-math-mode .mq-binary-operator { - padding: 0 0.2em; - display: -moz-inline-box; - display: inline-block; -} -.mq-math-mode .mq-supsub { - font-size: 90%; - vertical-align: -0.5em; -} -.mq-math-mode .mq-supsub.mq-limit { - font-size: 80%; - vertical-align: -0.4em; -} -.mq-math-mode .mq-supsub.mq-sup-only { - vertical-align: .5em; -} -.mq-math-mode .mq-supsub.mq-sup-only .mq-sup { - display: inline-block; - vertical-align: bottom; -} -.mq-math-mode .mq-supsub .mq-sup { - display: block; -} -.mq-math-mode .mq-supsub .mq-sub { - display: block; - float: left; -} -.mq-math-mode .mq-supsub.mq-limit .mq-sub { - margin-left: -0.25em; -} -.mq-math-mode .mq-supsub .mq-binary-operator { - padding: 0 .1em; -} -.mq-math-mode .mq-supsub .mq-fraction { - font-size: 70%; - vertical-align: -0.4em; -} -.mq-math-mode .mq-supsub .mq-numerator { - padding-bottom: 0; -} -.mq-math-mode .mq-supsub .mq-denominator { - padding-top: 0; -} -.mq-math-mode sup.mq-nthroot { - font-size: 80%; - vertical-align: 0.8em; - margin-right: -0.6em; - margin-left: .2em; - min-width: .5em; -} -.mq-math-mode .mq-paren { - padding: 0 .1em; - vertical-align: bottom; - -webkit-transform-origin: bottom center; - -moz-transform-origin: bottom center; - -ms-transform-origin: bottom center; - -o-transform-origin: bottom center; - transform-origin: bottom center; -} -.mq-math-mode .mq-paren.mq-ghost { - color: silver; -} -.mq-math-mode .mq-paren + span { - margin-top: .1em; - margin-bottom: .1em; -} -.mq-math-mode .mq-array { - vertical-align: middle; - text-align: center; -} -.mq-math-mode .mq-array > span { - display: block; -} -.mq-math-mode .mq-un-italicized { - font-family: Symbola, "Times New Roman", serif; - line-height: .9; - font-style: normal; -} -.mq-math-mode var.mq-un-italicized.mq-first { - padding-left: .2em; -} -.mq-math-mode var.mq-un-italicized.mq-last { - padding-right: .2em; -} -.mq-math-mode .mq-fraction { - font-size: 90%; - text-align: center; - vertical-align: -0.5em; - padding: 0 .2em; -} -.mq-math-mode .mq-fraction, -.mq-math-mode .mq-large-operator, -.mq-math-mode x:-moz-any-link { - display: -moz-groupbox; -} -.mq-math-mode .mq-fraction, -.mq-math-mode .mq-large-operator, -.mq-math-mode x:-moz-any-link, -.mq-math-mode x:default { - display: inline-block; -} -.mq-math-mode .mq-numerator, -.mq-math-mode .mq-denominator { - display: block; -} -.mq-math-mode .mq-numerator { - padding: 0 0.1em; - margin-bottom: -0.1em; -} -.mq-math-mode .mq-denominator { - border-top: 1px solid; - float: right; - width: 100%; - padding: .1em .1em 0 .1em; - margin-right: -0.1em; - margin-left: -0.1em; -} -.mq-math-mode .mq-sqrt-prefix { - padding-top: 0; - position: relative; - top: .1em; - vertical-align: top; - -webkit-transform-origin: top; - -moz-transform-origin: top; - -ms-transform-origin: top; - -o-transform-origin: top; - transform-origin: top; -} -.mq-math-mode .mq-sqrt-stem { - border-top: 1px solid; - margin-top: 1px; - padding-left: .15em; - padding-right: .2em; - margin-right: .1em; -} -.mq-math-mode .mq-vector-prefix { - display: block; - text-align: center; - line-height: .25em; - margin-bottom: -0.1em; - font-size: 0.75em; -} -.mq-math-mode .mq-vector-stem { - display: block; -} -.mq-math-mode .mq-large-operator { - text-align: center; -} -.mq-math-mode .mq-large-operator .mq-from, -.mq-math-mode .mq-large-operator big, -.mq-math-mode .mq-large-operator .mq-to { - display: block; -} -.mq-math-mode .mq-large-operator .mq-from, -.mq-math-mode .mq-large-operator .mq-to { - font-size: 80%; -} -.mq-math-mode .mq-large-operator .mq-from { - float: right; - /* take out of normal flow to manipulate baseline */ - width: 100%; -} -.mq-math-mode, -.mq-math-mode .mq-editable-field { - cursor: text; - font-family: Symbola, "Times New Roman", serif; -} -.mq-math-mode .mq-selection, -.mq-editable-field .mq-selection, -.mq-math-mode .mq-selection .mq-non-leaf, -.mq-editable-field .mq-selection .mq-non-leaf, -.mq-math-mode .mq-selection .mq-scaled, -.mq-editable-field .mq-selection .mq-scaled { - background: #B4D5FE !important; - background: Highlight !important; - color: HighlightText; - border-color: HighlightText; -} -.mq-math-mode .mq-selection .mq-matrixed, -.mq-editable-field .mq-selection .mq-matrixed { - background: #39F !important; -} -.mq-math-mode .mq-selection .mq-matrixed-container, -.mq-editable-field .mq-selection .mq-matrixed-container { - filter: progid:DXImageTransform.Microsoft.Chroma(color='#3399FF') !important; -} -.mq-math-mode .mq-selection.mq-blur, -.mq-editable-field .mq-selection.mq-blur, -.mq-math-mode .mq-selection.mq-blur .mq-non-leaf, -.mq-editable-field .mq-selection.mq-blur .mq-non-leaf, -.mq-math-mode .mq-selection.mq-blur .mq-scaled, -.mq-editable-field .mq-selection.mq-blur .mq-scaled, -.mq-math-mode .mq-selection.mq-blur .mq-matrixed, -.mq-editable-field .mq-selection.mq-blur .mq-matrixed { - background: #D4D4D4 !important; - color: black; - border-color: black; -} -.mq-math-mode .mq-selection.mq-blur .mq-matrixed-container, -.mq-editable-field .mq-selection.mq-blur .mq-matrixed-container { - filter: progid:DXImageTransform.Microsoft.Chroma(color='#D4D4D4') !important; -} -.mq-editable-field .mq-textarea, -.mq-math-mode .mq-textarea { - position: relative; - -webkit-user-select: text; - -moz-user-select: text; - user-select: text; -} -.mq-editable-field .mq-textarea *, -.mq-math-mode .mq-textarea *, -.mq-editable-field .mq-selectable, -.mq-math-mode .mq-selectable { - -webkit-user-select: text; - -moz-user-select: text; - user-select: text; - position: absolute; - clip: rect(1em 1em 1em 1em); - resize: none; -} -.mq-math-mode .mq-matrixed { - background: white; - display: -moz-inline-box; - display: inline-block; -} -.mq-math-mode .mq-matrixed-container { - filter: progid:DXImageTransform.Microsoft.Chroma(color='white'); - margin-top: -0.1em; -} diff --git a/css/perseus.less b/css/perseus.less deleted file mode 100644 index d9f4fde635..0000000000 --- a/css/perseus.less +++ /dev/null @@ -1,488 +0,0 @@ -// -// Edit this file in the *perseus* repo! -// (All changes outside the perseus repo will be overwritten) -// - -@import "variables.less"; - -#perseus { - position: relative; -} - - -// .no-select is used to prevent selection of certain widgets. -// often, allowing selection makes for an awkward mobile experience -// where you constantly highlight elements unintentionally. -.no-select { - -moz-user-select: -moz-none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - user-select: none; -} -// .blank-background is used to prevent drawing under transparent widgets. -// drawing under transparent widgets is particularly annoying because if -// you lift up your pen and put it down again, you can't continue drawing, -// because you're now clicking on the widget. This is very -// counterintuitive, so we simply don't let you see anything you draw under -// a widget. -.blank-background { - background-color: #FDFDFD; // Keep in sync with KhanUtil._BACKGROUND -} -// There is no scratchpad in the answer_area, and it has a different color -// background, so just make it transparent -#answer_area .blank-background { - background-color: transparent; -} - -.above-scratchpad { - position: relative; - z-index: @zIndexAboveScratchpad; -} - -// All graphie components placed above the scratchpad should have their -// background wiped out. -.graphie.above-scratchpad, -.graphie-container.above-scratchpad { - .blank-background; -} - -// Selectable graphie components make for awkward touch experiences -.graphie { - .no-select; -} - -.interactive-component, -.interactive-component.above-scratchpad { - position: relative; - z-index: @zIndexInteractiveComponent; -} - -&, // and moar specificity... -#answercontent input[type=text], -#answercontent input[type=number], -.framework-perseus input[type=text], -.framework-perseus input[type=number] { - &.perseus-input-size-normal, - { - width: 80px; - } - - &.perseus-input-size-small { - width: 40px; - } -} - -#examples > div > ul { - // React and Perseus.Renderer add an extra layer each to what qtip expects - list-style-type: disc; -} - -.framework-perseus { - #problemarea { - input, button { - .interactive-component - } - } - - div.paragraph { - font-size: 20px; - margin: 22px 0px; - } - - div.instructions { - display: block; - font-style: italic; - font-weight: bold; - } - - .paragraph > ul:not(.perseus-widget-radio) { - font-size: 14px; - margin: -11px 0px 22px 0px; - padding-left: 35px; - } - - .paragraph > ul:not(.perseus-widget-radio) > li { - list-style-type: disc; - } - - table { - font-size: 14px; // to match

- - th, td { - padding: 5px 10px; - text-align: left; - - &[align=center] { - text-align: center; - } - - &[align=right] { - text-align: right; - } - } - - th { - border-bottom: 2px solid #ccc; - font-weight: bold; - padding-bottom: 2px; - } - - tr:nth-child(odd) { - // Doesn't work in IE8 :( - td { - background-color: #ededed; - } - } - } - - // place on a div above the inputs - .range-input { - border: 1px solid #ccc; - border-radius: 5px; - display: inline-block; - padding: 0px 5px; - - & > input { - border: 0; - display: inline; - text-align: center; - width: 30px; - } - - & > span { - color: #999; - font-size: 14px; - } - } - - .number-input { - border: 1px solid #ccc; - border-radius: 5px; - margin: 0; // override - padding: 5px 0; // override - text-align: center; - width: 40px; - - &.invalid-input { - background-color: #ffbaba; - outline-color: red; - } - - &.number-input-label { - margin-left: 5px; - } - - &.mini { - width: 40px; - } - &.small { - width: 60px; - } - &.normal { - width: 80px; - } - } - - .graph-settings { - .graph-settings-axis-label { - border: 1px solid #ccc; - border-radius: 5px; - display: inline-block; - padding: 5px 5px; - width: 70px; - float: right; - margin: 0 5px; - } - .graph-settings-background-url { - width: 250px; - } - } - - .graph-settings, .image-settings, .misc-settings { - padding-bottom: 5px; - } - - .image-settings, .misc-settings, .type-settings { - border-top: 1px solid black; - padding-top: 5px; - } - - div #solutionarea div.paragraph { - font-size: inherit; - margin: inherit; - } - - .checkbox { - margin: 0px; - } -} - -.framework-perseus table.non-markdown { - tr:nth-child(odd) { - td { - background-color: transparent; - } - } - - th, td { - border-width: 0; - } -} - - -/* Widget CSS */ - -@import "widgets/expression.less"; -@import "widgets/radio.less"; -@import "widgets/interactive-graph.less"; -@import "widgets/categorization.less"; -@import "widgets/categorizer.less"; -@import "widgets/plotter.less"; -@import "widgets/table.less"; -@import "widgets/dropdown.less"; -@import "widgets/orderer.less"; -@import "widgets/measurer.less"; -@import "widgets/transformer.less"; -@import "widgets/matcher.less"; -@import "widgets/sortable.less"; -@import "widgets/image.less"; - -.perseus-diff { - @borderColor: #E4E4E4; - margin: 0 10px; - - .diff-header { - font-size: 18px; - padding: 10px 0; - width: 50%; - display: inline-block; - &.collapsed { - font-size: 14px; - padding: 0px; - } - } - - .diff-body { - border-top: 1px solid @borderColor; - border-bottom: 1px solid @borderColor; - } - - .diff-row { - width: 50%; - white-space: pre-wrap; - box-sizing: border-box; - -moz-box-sizing: border-box; - font-size: 14px; - padding-right: 20px; - padding-left: 10px; - overflow: hidden; - &.collapsed { - color: #888; - cursor: pointer; - &:hover { - color: #666; - } - - &:active { - color: #444; - } - } - - .diff-line { - margin-bottom: 20px; - } - } - - .before { - float: left; - border-left: 1px solid @borderColor; - } - - .after { - float: right; - border-right: 1px solid @borderColor; - border-left: 1px solid @borderColor; - } - - .inner-value { - height: 100%; - padding: 3px; - } - - .not-present { - display: none; - } - - .blank-space { - visibility: hidden; - } - - - .added { - background-color: #EEFFEE; - &.dark { - background-color: #AAFFAA; - } - } - - .removed { - background-color: #FFEEEE; - &.dark { - background-color: #FFAAAA; - } - } - - .image { - margin-left: 20px; - margin-bottom: 10px; - } - - .image-unchanged { - border: 1px solid #AAAAAA; - } - - .image-added { - border: 2px solid #AAFFAA; - } - - .image-removed { - border: 2px solid #FFAAAA; - } -} - -.perseus-widget-container { - font-size: 14px; - - &.widget-nohighlight { - transition: all 0.15s; - } - - &.widget-highlight { - @highlight: 0px 0px 9px 2px rgba(255, 165, 0, 1); - -webkit-box-shadow: @highlight; - -moz-box-shadow: @highlight; - box-shadow: @highlight; - transition: all 0.15s; - } -} - -// TODO(joel) - remove? -.perseus-tooltip { - background: #fff; - padding: 5px 10px; - width: 240px; -} - -// CSS is evil; let's overwrite some styles. T_T -.perseus-formats-tooltip { - .perseus-tooltip; - color: #777; -} -.framework-perseus .perseus-formats-tooltip .paragraph > ul { - padding: 0; - margin: -20px 0 -16px 0; - > li { - list-style-type: none; - } -} - -.box-shadow(@shadow: 0 1px 3px rgba(0,0,0,.25)) { - box-shadow: @shadow; - -o-box-shadow: @shadow; - -ms-box-shadow: @shadow; - -moz-box-shadow: @shadow; - -webkit-box-shadow: @shadow; -} - -.perseus-math-input.mq-editable-field.mq-math-mode { - // Mimic native text input - background: #fff; - - // If the font-size is too small, super/subscripts become hard to input - font-size: 18px; - - // Make the click target easier to hit - min-width: 100px; - - & > .mq-root-block { - // Mimic native text input w/o using -moz/-webkit-apperance: textfield - // border-color: rgb(78, 187, 212); - border-color: #a4a4a4; - - border-radius: 5px; - - // A bit of extra whitespace here greatly improves legibility - padding: 4px; - } - - // Fixes for strange default MathQuill styles: - - // Cursor shouldn't actually be touching left border - .mq-cursor { - padding-left: 0; - } - - // Don't gray out implicitly created closing parens - .mq-paren.mq-ghost { - color: inherit; - } - - // Don't put vertical margins on an expression wrapped in parens - // because it messes up baseline alignment, e.g. h(x) - .mq-paren + span { - margin: 0; - } -} - -// This style looks a little off in the expression editor. Luckily users don't -// use the expression editor. -.math-input-buttons { - background-color: rgba(255, 255, 255, 0.7); - border-radius: 5px; - border: 1px solid #ddd; - box-sizing: border-box; - margin-top: 5px; - padding: 2px; - // each button is 41 + 4 px, plus 4 padding, plus 2 border - width: 45px*5 + 4px + 2px; // (201) - - &.absolute { - left: -2px; - position: absolute; - top: -3px; - z-index: @zIndexCalculator; - } -}; - -// Math domain color -@borderColor: #1c758a; - -.tex-button { - display: block; - float: left; - width: 41px; - height: 41px; - margin: 2px; - border: 1px solid @borderColor; - background-color: white; - border-radius: 5px; - - &:hover { - cursor: pointer; - background-color: #f0f0f0; - } - - &:focus { - border: 2px solid @borderColor; - outline: none; - } -} - -.tex-button-row { - margin: 5px 0; - - &:first-child, &:last-child { - margin: 0; - } -} diff --git a/css/perseus.less.css b/css/perseus.less.css deleted file mode 100644 index 2fdc1944bd..0000000000 --- a/css/perseus.less.css +++ /dev/null @@ -1,1194 +0,0 @@ -#perseus { - position: relative; -} -.no-select { - -moz-user-select: -moz-none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - user-select: none; -} -.blank-background { - background-color: #FDFDFD; -} -#answer_area .blank-background { - background-color: transparent; -} -.above-scratchpad { - position: relative; - z-index: 2; -} -.graphie.above-scratchpad, -.graphie-container.above-scratchpad { - background-color: #FDFDFD; -} -.graphie { - -moz-user-select: -moz-none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - user-select: none; -} -.interactive-component, -.interactive-component.above-scratchpad { - position: relative; - z-index: 3; -} -#answercontent input[type=text].perseus-input-size-normal, -#answercontent input[type=number].perseus-input-size-normal, -.framework-perseus input[type=text].perseus-input-size-normal, -.framework-perseus input[type=number].perseus-input-size-normal { - width: 80px; -} -#answercontent input[type=text].perseus-input-size-small, -#answercontent input[type=number].perseus-input-size-small, -.framework-perseus input[type=text].perseus-input-size-small, -.framework-perseus input[type=number].perseus-input-size-small { - width: 40px; -} -#examples > div > ul { - list-style-type: disc; -} -.framework-perseus #problemarea input, -.framework-perseus #problemarea button { - position: relative; - z-index: 3; -} -.framework-perseus div.paragraph { - font-size: 20px; - margin: 22px 0px; -} - -.framework-perseus div#solutionarea div.paragraph { - font-size: inherit; - margin: inherit; -} - -.framework-perseus div.instructions { - display: block; - font-style: italic; - font-weight: bold; -} -.framework-perseus .paragraph > ul:not(.perseus-widget-radio) { - font-size: 14px; - margin: -11px 0px 22px 0px; - padding-left: 35px; -} -.framework-perseus .paragraph > ul:not(.perseus-widget-radio) > li { - list-style-type: disc; -} -.framework-perseus table { - font-size: 14px; -} -.framework-perseus table th, -.framework-perseus table td { - padding: 5px 10px; - text-align: left; -} -.framework-perseus table th[align=center], -.framework-perseus table td[align=center] { - text-align: center; -} -.framework-perseus table th[align=right], -.framework-perseus table td[align=right] { - text-align: right; -} -.framework-perseus table th { - border-bottom: 2px solid #ccc; - font-weight: bold; - padding-bottom: 2px; -} -.framework-perseus table tr:nth-child(odd) td { - background-color: #ededed; -} - -.framework-perseus .checkbox { - margin: 0px; -} - -.framework-perseus .range-input { - border: 1px solid #ccc; - border-radius: 5px; - display: inline-block; - padding: 0px 5px; -} -.framework-perseus .range-input > input { - border: 0; - display: inline; - text-align: center; - width: 30px; -} -.framework-perseus .range-input > span { - color: #999; - font-size: 14px; -} -.framework-perseus .number-input { - border: 1px solid #ccc; - border-radius: 5px; - margin: 0; - padding: 5px 0; - text-align: center; - width: 40px; -} -.framework-perseus .number-input.invalid-input { - background-color: #ffbaba; - outline-color: red; -} -.framework-perseus .number-input.number-input-label { - margin-left: 5px; -} -.framework-perseus .number-input.mini { - width: 40px; -} -.framework-perseus .number-input.small { - width: 60px; -} -.framework-perseus .number-input.normal { - width: 80px; -} -.framework-perseus .graph-settings .graph-settings-axis-label { - border: 1px solid #ccc; - border-radius: 5px; - display: inline-block; - padding: 5px 5px; - width: 70px; - float: right; - margin: 0 5px; -} -.framework-perseus .graph-settings .graph-settings-background-url { - width: 250px; -} -.framework-perseus .graph-settings, -.framework-perseus .image-settings, -.framework-perseus .misc-settings { - padding-bottom: 5px; -} -.framework-perseus .image-settings, -.framework-perseus .misc-settings, -.framework-perseus .type-settings { - border-top: 1px solid black; - padding-top: 5px; -} -.framework-perseus table.non-markdown tr:nth-child(odd) td { - background-color: transparent; -} -.framework-perseus table.non-markdown th, -.framework-perseus table.non-markdown td { - border-width: 0; -} -/* Widget CSS */ -.perseus-widget-expression { - position: relative; -} -.perseus-widget-expression > span, -.perseus-widget-expression .error-tooltip { - display: inline-block; - vertical-align: middle; -} -.perseus-widget-expression .error-tooltip { - position: absolute; - right: 6px; - top: -2px; -} -.perseus-widget-expression .error-icon { - color: #fcc335; - cursor: pointer; - font-size: 20px; -} -.perseus-widget-expression .error-text { - background-color: #fff; - padding: 5px; - width: 210px; -} -.perseus-widget-expression.show-error-tooltip .perseus-math-input.mq-editable-field.mq-math-mode > .mq-root-block { - padding-right: 25px; -} -.perseus-widget-expression .perseus-formats-tooltip { - width: 190px; -} -#answer_area .perseus-widget-expression .perseus-math-input.mq-editable-field.mq-math-mode { - min-width: 130px; -} -#answer_area .perseus-widget-expression .error-tooltip .error-text-container { - left: -125px !important; - top: -17px !important; -} -#answer_area .perseus-widget-expression .error-tooltip .error-text { - font-size: 12px; - width: 90px; -} -#answer_area .perseus-widget-expression .error-tooltip .tooltipContainer > div:first-child { - visibility: hidden !important; -} -.perseus-widget-expression-old, -.perseus-widget-expression-old > .output, -.perseus-widget-expression-old > .output > .tex, -.perseus-widget-expression-old > .output > .placeholder { - display: block; -} -.perseus-widget-expression-old > input, -#answer_area .perseus-widget-expression-old > input { - font-size: 14px; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - direction: ltr; - margin-bottom: 5px; - max-width: 240px; - width: 100%; -} -.perseus-widget-expression-old > .output > .tex { - overflow-x: auto; -} -.perseus-widget-expression-old > .output > .placeholder { - position: relative; - height: 40px; - overflow-y: hidden; -} -.perseus-widget-expression-old > .output > .placeholder > .error { - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px; - background: #f7f7f7; - border: 1px solid #ddd; - box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5); - color: #000; - display: none; - font-weight: normal; - min-height: 22px; - width: 168px; - position: absolute; - top: 0px; - left: 40px; - margin: auto; -} -.perseus-widget-expression-old > .output > .placeholder > .error > .buddy { - background-image: url(/images/perseus/error-buddy.png); - background-size: 100%; - height: 36px; - width: 40px; - position: absolute; - top: -3px; - left: -42px; -} -.perseus-widget-expression-old > .output > .placeholder > .error > .message { - font: 12px "Helvetica Neue", Helvetica, Arial, sans-serif; - line-height: 1.4em; - margin: 0px 4px; -} -.perseus-widget-radio li span.checkbox input[type=radio], -#answer_area .perseus-widget-radio li span.checkbox input[type=radio] { - float: none; - margin: 3px; -} -.perseus-widget-radio div, -.perseus-widget-radio div > p { - /* TODO(alpert): Find a better way of doing inline renderers */ - display: inline; -} -.perseus-widget-radio li { - padding: 7px 0; - margin-left: 20px; - cursor: pointer; -} -.perseus-widget-radio li.inline { - display: inline-block; - padding-left: 20px; -} -.perseus-widget-radio li span.checkbox { - position: relative; - z-index: 3; - display: inline-block; - width: 20px; - margin-left: -20px; - margin-right: 0; -} -.perseus-widget-radio li div.instructions { - margin-bottom: 5px; -} -.perseus-widget-radio li .value { - display: block; - margin-left: 18px; - min-height: 22px; -} -.perseus-widget-radio li img { - vertical-align: middle; -} -.perseus-widget-radio .perseus-radio-clue { - color: #007aff; - display: block; -} -.perseus-widget-radio .perseus-textarea-pair, -.perseus-widget-radio .perseus-textarea-underlay { - display: block; -} -body.mobile .framework-perseus #problemarea input[type=radio], -body.mobile .framework-perseus #problemarea input[type=checkbox] { - float: left; - margin-right: 7px; -} -body.mobile .perseus-widget-radio { - color: #aaaaaa; - margin-left: 0; -} -body.mobile .perseus-widget-radio .perseus-radio-option { - margin-left: 0; - padding: 0; -} -body.mobile .perseus-widget-radio span.checkbox { - position: relative; - z-index: 3; - margin-right: 26px; - display: block; - margin: 0; - width: auto; -} -body.mobile .perseus-widget-radio .perseus-radio-option { - border: 2px solid #aaaaaa; - border-radius: 28px; - box-sizing: border-box; - cursor: pointer; - display: block; - font: 700 14pt/30px "Avenir", "Helvetica", "Arial", sans-serif; - margin-bottom: 10px; - overflow: hidden; - padding: 8px 10px; -} -body.mobile .perseus-widget-radio .perseus-radio-option.perseus-radio-selected { - border-color: #1c758a; - color: #1c758a; - font-weight: bold; -} -body.mobile .perseus-widget-radio input[type=radio], -body.mobile .perseus-widget-radio input[type=checkbox] { - -webkit-appearance: none; - appearance: none; - border: 2px solid #aaaaaa; - border-radius: 25px; - float: left; -} -body.mobile .perseus-widget-radio input[type=radio] { - height: 25px; - margin-right: 10px; - outline: none; - width: 25px; -} -body.mobile .perseus-widget-radio input[type=radio]:checked { - background: #1c758a; - border: 2px solid #1c758a; -} -body.mobile .perseus-widget-radio input[type=checkbox] { - position: absolute; - outline: none; -} -body.mobile .perseus-widget-radio input[type=checkbox]:before { - color: #aaaaaa; - content: "\f00c"; - font: 15pt "FontAwesome"; - left: 0; - position: relative; - top: 1px; -} -body.mobile .perseus-widget-radio input[type=checkbox]:checked { - border-color: #1c758a; -} -body.mobile .perseus-widget-radio input[type=checkbox]:checked:before { - color: #1c758a; -} -.perseus-widget-interactive-graph { - padding: 25px 25px 0 0; -} -.graphie-container { - position: relative; -} -.graphie-container img { - position: absolute; -} -.categorization-container { - position: relative; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - user-select: none; -} -.categorization-container .categories, -.categorization-container .bank { - float: left; -} -.categorization-container .categories { - width: 231px; -} -.categorization-container .cards-list { - padding: 13px; -} -.categorization-container .category { - float: left; - padding: 8px; - width: 215px; - text-align: center; -} -.categorization-container .category .card-container { - float: left; - width: 100%; - display: block; -} -.categorization-container .category.target .cards-list.cards-area { - border-color: #999999; - box-shadow: 0 0 4px #7d7d7d; - -moz-box-shadow: 0 0 4px #7d7d7d; - -ms-box-shadow: 0 0 4px #7d7d7d; - -o-box-shadow: 0 0 4px #7d7d7d; - -webkit-box-shadow: 0 0 4px #7d7d7d; -} -.categorization-container .header { - font-weight: bold; - margin-bottom: 5px; -} -.categorization-container .target .header { - color: black; -} -.categorization-container .card { - min-height: 26px; - text-align: center; - line-height: 24px; - width: 167px; - padding: 6px 8px; - margin: 0 auto; - transition-property: border-color, box-shadow; - transition-duration: 150ms; - -moz-transition-property: border-color, -moz-box-shadow; - -moz-transition-duration: 150ms; - -webkit-transition-property: border-color, -webkit-box-shadow; - -webkit-transition-duration: 150ms; -} -.categorization-container .card:hover { - transition-property: border-color, box-shadow; - transition-duration: 150ms; - -moz-transition-property: border-color, -moz-box-shadow; - -moz-transition-duration: 150ms; - -webkit-transition-property: border-color, -webkit-box-shadow; - -webkit-transition-duration: 150ms; -} -.categorization-container .card-container { - float: left; - padding: 4px 0; -} -.categorization-container .card-hidden { - visibility: hidden; - z-index: 0; -} -.categorization-container .card.dragging { - position: absolute; - display: none; - z-index: 4; - border-color: #ffa500; - box-shadow: 0 0 4px #c78100; - -moz-box-shadow: 0 0 4px #c78100; - -ms-box-shadow: 0 0 4px #c78100; - -o-box-shadow: 0 0 4px #c78100; - -webkit-box-shadow: 0 0 4px #c78100; -} -.categorization-container .card.placeholder > * { - visibility: hidden; -} -.categorization-container.currently-dragging .card { - opacity: 0.4; -} -.categorization-container.currently-dragging .card.dragging { - display: block; - background-color: white; - opacity: 1; - filter: opacity(1); -} -.categorization-container div.paragraph { - margin: 0; -} -.categorizer-container { - margin-top: 20px; -} -.categorizer-container div.paragraph { - margin: 10px 0px; -} -.categorizer-container .category { - text-align: center; -} -.categorizer-container th.category { - vertical-align: bottom; -} -.categorizer-container label { - position: relative; - z-index: 2; -} -.categorizer-container td.category { - padding: 0; - color: #ccc; - vertical-align: bottom; -} -.categorizer-container td.category input[type="radio"] { - display: none; -} -.categorizer-container td.category input[type="radio"] + span:before { - display: inline-block; - position: relative; - font-family: 'FontAwesome'; - font-size: 30px; - width: 30px; - padding-right: 3px; - bottom: 9px; - content: "\f1db"; -} -.categorizer-container td.category label span:hover { - color: #999; -} -.categorizer-container td.category input[type="radio"]:checked + span:before { - content: "\f111"; - color: #333; -} -.perseus-widget-plotter svg, -.perseus-widget-plotter vml { - position: absolute; -} -.perseus-widget-plotter span.rotate { - -moz-transform: rotate(-90deg); - -o-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -} -.perseus-widget-plotter body.ie span.rotate { - left: 60px !important; - top: 140px !important; -} -.set-from-scale-box { - border: 2px solid #EEEEEE; - border-radius: 3px; - padding: 3px; -} -.categories-title { - font-size: 14px; -} -.framework-perseus table.perseus-widget-table-of-values.non-markdown { - text-align: left; - margin: 20px auto 0; - border-collapse: collapse; -} -.framework-perseus table.perseus-widget-table-of-values.non-markdown tr { - height: 23px; -} -.framework-perseus table.perseus-widget-table-of-values.non-markdown th, -.framework-perseus table.perseus-widget-table-of-values.non-markdown td { - border: 2px solid black; - border-width: 0 2px; -} -.framework-perseus table.perseus-widget-table-of-values.non-markdown th:first-child, -.framework-perseus table.perseus-widget-table-of-values.non-markdown td:first-child { - border-left: 0; -} -.framework-perseus table.perseus-widget-table-of-values.non-markdown th:last-child, -.framework-perseus table.perseus-widget-table-of-values.non-markdown td:last-child { - border-right: 0; -} -.framework-perseus table.perseus-widget-table-of-values.non-markdown th { - font-weight: normal; - padding: 5px; - width: 80px; - text-align: left; - border-bottom: 2px solid black; -} -.framework-perseus table.perseus-widget-table-of-values.non-markdown th .paragraph { - margin: 0; -} -.framework-perseus table.perseus-widget-table-of-values.non-markdown td { - padding: 0px 5px; - text-align: right; -} -.framework-perseus table.perseus-widget-table-of-values.non-markdown tbody tr:first-child td { - padding-top: 5px; -} -.framework-perseus table.perseus-widget-table-of-values input, -#answer_area table.perseus-widget-table-of-values input { - width: 80px; -} -.perseus-widget-dropdown { - position: relative; -} -.perseus-widget-dropdown .fancy-select { - border: 3px solid #358fa4; - border-radius: 40px; - color: #358fa4; - font: 700 23pt avenir, sans-serif; - z-index: 3; - padding: 0 60px 0 35px; - min-width: 40px; - min-height: 40px; - cursor: pointer; - white-space: nowrap; - user-select: none; - -webkit-user-select: none; -} -.perseus-widget-dropdown .fancy-select:before { - font-size: 0; - visibility: hidden; - content: "_"; -} -.perseus-widget-dropdown .fancy-select > .placeholder { - opacity: 0.5; -} -.perseus-widget-dropdown .fancy-select.active { - opacity: 0.5; -} -.perseus-widget-dropdown .fancy-select:after { - color: #358fa4; - content: "\f0dd"; - font: 24pt "FontAwesome"; - position: absolute; - top: 0px; - right: 17px; -} -.perseus-widget-dropdown .fancy-select-options { - color: #358fa4; - position: absolute; - z-index: 4; - min-width: 100%; - overflow-y: hidden; -} -.perseus-widget-dropdown .fancy-option { - cursor: pointer; - padding: 3px 20px 3px 38px; - font-size: 17pt; - line-height: 22pt; - background: rgba(255, 255, 255, 0.95); - border: 3px solid #358fa4; - display: block; - border-radius: 20px; - min-width: 40px; - min-height: 30px; - margin-top: -70px; -} -.perseus-widget-dropdown .fancy-option:before { - content: ""; - width: 16px; - height: 16px; - position: absolute; - border: 3px solid #358fa4; - margin-top: 4px; - margin-left: -30px; - border-radius: 25px; -} -.perseus-widget-dropdown .fancy-option.selected:before { - background: #358fa4; -} -.perseus-widget-dropdown .fancy-option.active { - margin-top: 6px; - -webkit-animation-name: perseus-fancy-dropdown-slideout; - -webkit-animation-duration: 0.35s; - -webkit-animation-timing-function: ease-out; -} -.perseus-widget-dropdown .fancy-option.closed { - margin-top: -70px; - -webkit-animation-name: perseus-fancy-dropdown-slidein; - -webkit-animation-duration: 0.2s; - -webkit-animation-timing-function: ease-in; -} -@-webkit-keyframes perseus-fancy-dropdown-slideout { - 0% { - margin-top: -70px; - } - 100% { - margin-top: 6px; - } -} -@-webkit-keyframes perseus-fancy-dropdown-slidein { - 0% { - margin-top: 6px; - } - 100% { - margin-top: -70px; - } -} -.orderer { - position: relative; - min-width: 480px; -} -.orderer .draggable-box { - padding: 13px; - min-height: 69px; - margin-top: 30px; -} -.orderer .card { - padding: 0 10px; - cursor: pointer; - position: relative; - user-select: none; - width: auto; -} -.orderer .card img { - vertical-align: middle; -} -.orderer.height-normal.layout-horizontal .card { - line-height: 65px; - height: 65px; -} -.orderer.height-normal.layout-vertical .card { - padding: 5px; -} -.orderer.height-large .card { - line-height: 160px; - height: 160px; -} -.orderer.height-auto .card { - padding: 0; -} -.orderer.height-auto.layout-horizontal .drag-hint { - min-height: 65px; - min-width: 22px; -} -.orderer .card-wrap { - position: relative; - z-index: 3; - margin-right: 4px; - width: auto; - float: left; -} -.orderer .bank { - margin: 0px 13px; -} -.orderer .bank .card-wrap { - margin-right: 10px; - margin-bottom: 8px; -} -.orderer div.paragraph { - margin: 0; -} -.orderer.layout-vertical .card-wrap { - float: none; - text-align: center; -} -.orderer.layout-vertical .bank, -.orderer.layout-vertical .draggable-box { - box-sizing: border-box; - -moz-box-sizing: border-box; - float: left; - max-width: 50%; -} -.orderer.layout-vertical .bank { - padding: 10px 0 0 0; - margin: 0; -} -.orderer.layout-vertical .bank .card-wrap { - margin-right: 20px; -} -.orderer.layout-vertical .draggable-box { - margin-top: 0; - min-height: 170px; - padding: 10px; -} -.orderer.layout-vertical .draggable-box .card-wrap:first-child { - margin: 0; -} -.orderer.layout-vertical .draggable-box .card-wrap { - margin: 8px 0 0 0; -} -.orderer.layout-vertical .draggable-box .drag-hint { - box-sizing: border-box; - min-width: 140px; - min-height: 34px; -} -.orderer.layout-vertical .draggable-box .placeholder { - box-sizing: border-box; -} -.perseus-widget-measurer { - position: relative; -} -.perseus-widget-measurer img { - position: absolute; -} -.perseus-widget-measurer-url { - width: 70%; -} -.perseus-widget-transformer .highlighted-tool-button { - text-shadow: 1px 1px rgba(0, 0, 0, 0.25); -} -.perseus-widget-transformer .graphie-container { - margin-bottom: 10px; -} -.perseus-widget-transformer .transformer-undo-button { - float: right; -} -.perseus-widget-transformer .perseus-transformation-list { - margin-top: 10px; - margin-bottom: 10px; -} -.perseus-widget-transformer .perseus-transformation-list input { - width: 40px; -} -.perseus-widget-matcher .column { - float: left; - max-width: 50%; -} -.perseus-widget-matcher .column:first-child .column-label, -.perseus-widget-matcher .column:first-child .perseus-sortable { - padding-right: 5px; -} -.perseus-widget-matcher .column + .column .column-label, -.perseus-widget-matcher .column + .column .perseus-sortable { - border-left: 1px solid #444444; - padding-left: 5px; -} -.perseus-widget-matcher .column-label { - border-bottom: 1px solid #444444; - padding-bottom: 5px; - text-align: center; -} -.perseus-widget-matcher .column-label div.paragraph { - margin: 0; -} -.perseus-widget-matcher .perseus-sortable { - padding-top: 5px; -} -.draggy-boxy-thing .draggable-box, -.draggy-boxy-thing .cards-area { - background: #eee; - border: 1px solid #ccc; - border-bottom: 1px solid #aaa; - box-shadow: 0 1px 2px #ccc; - -moz-box-shadow: 0 1px 2px #ccc; - -webkit-box-shadow: 0 1px 2px #ccc; -} -.draggy-boxy-thing .cards-area { - position: relative; - z-index: 2; -} -.draggy-boxy-thing .card { - position: relative; - z-index: 3; - background-color: #fff; - border: 1px solid #b9b9b9; - border-bottom-color: #939393; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - cursor: pointer; -} -.draggy-boxy-thing .card.placeholder { - background: #ddd; - border: 1px solid #ccc; -} -.draggy-boxy-thing .card.drag-hint { - background: none; - border: 1px dashed #aaa; - cursor: auto; -} -.draggy-boxy-thing .card.drag-hint:hover { - border-color: #aaa; - box-shadow: none; -} -.draggy-boxy-thing .card.dragging { - background-color: #ffedcd; - opacity: 0.8; - filter: opacity(0.8); -} -.draggy-boxy-thing .card.stack { - z-index: auto; -} -.draggy-boxy-thing .card.stack:after { - content: " "; - background-color: #fff; - border: 1px solid #b9b9b9; - border-bottom-color: #939393; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - height: 100%; - width: 100%; - z-index: -1; - top: 1px; - left: 1px; - position: absolute; -} -.draggy-boxy-thing .card:hover { - border-color: #ffa500; - box-shadow: 0 0 4px #c78100; - -moz-box-shadow: 0 0 4px #c78100; - -ms-box-shadow: 0 0 4px #c78100; - -o-box-shadow: 0 0 4px #c78100; - -webkit-box-shadow: 0 0 4px #c78100; -} -.perseus-sortable { - position: relative; - z-index: 3; - box-sizing: border-box; - -moz-box-sizing: border-box; - float: left; -} -.perseus-sortable .perseus-sortable-card { - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - box-sizing: border-box; - -moz-box-sizing: border-box; - cursor: pointer; - min-width: 25px; - min-height: 44px; - padding: 10px; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; -} -.perseus-sortable .perseus-sortable-placeholder { - background: #ddd; - border: 1px solid #ccc; -} -.perseus-sortable .perseus-sortable-draggable { - font-size: 0; - text-align: center; -} -.perseus-sortable .perseus-sortable-draggable:before { - content: ""; - display: inline-block; - height: 100%; - vertical-align: middle; -} -.perseus-sortable .perseus-sortable-draggable > div { - display: inline-block; - font-size: 14px; - max-width: 100%; - vertical-align: middle; -} -.perseus-sortable .perseus-sortable-draggable div.paragraph { - margin: 0; -} -.perseus-sortable .perseus-sortable-draggable.perseus-sortable-static { - cursor: pointer; -} -.perseus-sortable .perseus-sortable-draggable.perseus-sortable-static:hover { - border-color: #ffa500; - box-shadow: 0 0 4px #c78100; - -moz-box-shadow: 0 0 4px #c78100; - -ms-box-shadow: 0 0 4px #c78100; - -o-box-shadow: 0 0 4px #c78100; - -webkit-box-shadow: 0 0 4px #c78100; -} -.perseus-sortable .perseus-sortable-draggable.perseus-sortable-dragging { - background-color: #ffedcd; - filter: opacity(0.8); - opacity: 0.8; -} -.perseus-sortable .perseus-sortable-draggable.perseus-sortable-disabled { - background-color: inherit; - border: 1px solid transparent; - cursor: default; -} -.perseus-sortable.layout-horizontal .perseus-sortable-card { - float: left; -} -.perseus-sortable.layout-horizontal .perseus-sortable-dragging { - cursor: ew-resize; -} -.perseus-sortable.layout-vertical, -.perseus-sortable.layout-vertical .perseus-sortable-card { - max-width: 100%; -} -.perseus-sortable.layout-vertical .perseus-sortable-dragging { - cursor: ns-resize; -} -.perseus-sortable.unpadded .perseus-sortable-card { - padding: 0; -} -.perseus-sortable.unpadded .perseus-sortable-card img { - vertical-align: bottom; -} -.perseus-widget-image .label-settings td { - padding: 5px 4px; - text-align: center; -} -.perseus-widget-image .label-settings tr:nth-child(odd) td { - background-color: transparent; -} -.perseus-widget-image .label-settings th, -.perseus-widget-image .label-settings td { - border-width: 0; -} -.perseus-diff { - margin: 0 10px; -} -.perseus-diff .diff-header { - font-size: 18px; - padding: 10px 0; - width: 50%; - display: inline-block; -} -.perseus-diff .diff-header.collapsed { - font-size: 14px; - padding: 0px; -} -.perseus-diff .diff-body { - border-top: 1px solid #e4e4e4; - border-bottom: 1px solid #e4e4e4; -} -.perseus-diff .diff-row { - width: 50%; - white-space: pre-wrap; - box-sizing: border-box; - -moz-box-sizing: border-box; - font-size: 14px; - padding-right: 20px; - padding-left: 10px; - overflow: hidden; -} -.perseus-diff .diff-row.collapsed { - color: #888; - cursor: pointer; -} -.perseus-diff .diff-row.collapsed:hover { - color: #666; -} -.perseus-diff .diff-row.collapsed:active { - color: #444; -} -.perseus-diff .diff-row .diff-line { - margin-bottom: 20px; -} -.perseus-diff .before { - float: left; - border-left: 1px solid #e4e4e4; -} -.perseus-diff .after { - float: right; - border-right: 1px solid #e4e4e4; - border-left: 1px solid #e4e4e4; -} -.perseus-diff .inner-value { - height: 100%; - padding: 3px; -} -.perseus-diff .not-present { - display: none; -} -.perseus-diff .blank-space { - visibility: hidden; -} -.perseus-diff .added { - background-color: #EEFFEE; -} -.perseus-diff .added.dark { - background-color: #AAFFAA; -} -.perseus-diff .removed { - background-color: #FFEEEE; -} -.perseus-diff .removed.dark { - background-color: #FFAAAA; -} -.perseus-diff .image { - margin-left: 20px; - margin-bottom: 10px; -} -.perseus-diff .image-unchanged { - border: 1px solid #AAAAAA; -} -.perseus-diff .image-added { - border: 2px solid #AAFFAA; -} -.perseus-diff .image-removed { - border: 2px solid #FFAAAA; -} - -.perseus-widget-container { - font-size: 14px; -} - -.perseus-widget-container.widget-nohighlight { - transition: all 0.15s; -} -.perseus-widget-container.widget-highlight { - -webkit-box-shadow: 0px 0px 9px 2px #ffa500; - -moz-box-shadow: 0px 0px 9px 2px #ffa500; - box-shadow: 0px 0px 9px 2px #ffa500; - transition: all 0.15s; -} -.perseus-tooltip { - background: #fff; - padding: 5px 10px; - width: 240px; -} -.perseus-formats-tooltip { - background: #fff; - padding: 5px 10px; - width: 240px; - color: #777; -} -.framework-perseus .perseus-formats-tooltip .paragraph > ul { - padding: 0; - margin: -20px 0 -16px 0; -} -.framework-perseus .perseus-formats-tooltip .paragraph > ul > li { - list-style-type: none; -} -.perseus-math-input.mq-editable-field.mq-math-mode { - background: #fff; - font-size: 18px; - min-width: 100px; -} -.perseus-math-input.mq-editable-field.mq-math-mode > .mq-root-block { - border-color: #a4a4a4; - border-radius: 5px; - padding: 4px; -} -.perseus-math-input.mq-editable-field.mq-math-mode .mq-cursor { - padding-left: 0; -} -.perseus-math-input.mq-editable-field.mq-math-mode .mq-paren.mq-ghost { - color: inherit; -} -.perseus-math-input.mq-editable-field.mq-math-mode .mq-paren + span { - margin: 0; -} -.math-input-buttons { - background-color: rgba(255, 255, 255, 0.7); - border-radius: 5px; - border: 1px solid #ddd; - box-sizing: border-box; - margin-top: 5px; - padding: 2px; - width: 240px; -} -.math-input-buttons.absolute { - left: -2px; - position: absolute; - top: -3px; - z-index: 5; -} -.tex-button { - display: block; - float: left; - width: 41px; - height: 41px; - margin: 2px; - border: 1px solid #1c758a; - background-color: white; - border-radius: 5px; -} -.tex-button:hover { - cursor: pointer; - background-color: #f0f0f0; -} -.tex-button:focus { - border: 2px solid #1c758a; - outline: none; -} -.tex-button-row { - margin: 5px 0; -} -.tex-button-row:first-child, -.tex-button-row:last-child { - margin: 0; -} diff --git a/css/variables.less b/css/variables.less deleted file mode 100644 index 8185e35305..0000000000 --- a/css/variables.less +++ /dev/null @@ -1,13 +0,0 @@ -// Steal from webapp/stylesheets/shared-package/variables.less -@baseFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif; -@clueColor: #007AFF; -@blue: #1c758a; -@gray: #aaa; -@questionWidth: 480px; - -// Layer variables -@zIndexScratchPad: 1; -@zIndexAboveScratchpad: @zIndexScratchPad + 1; -@zIndexInteractiveComponent: @zIndexAboveScratchpad + 1; -@zIndexCurrentlyDragging: @zIndexInteractiveComponent + 1; -@zIndexCalculator: @zIndexCurrentlyDragging + 1; diff --git a/css/widgets/categorization.less b/css/widgets/categorization.less deleted file mode 100644 index 27cfd38787..0000000000 --- a/css/widgets/categorization.less +++ /dev/null @@ -1,106 +0,0 @@ -.categorization-container { - @categoryWidth: 215px; - - position: relative; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - user-select: none; - - .categories, - .bank { - float: left; - } - - .categories { - width: (@categoryWidth + 16px); - } - - .cards-list { - padding: 13px; - } - - .category { - float: left; - padding: 8px; - width: @categoryWidth; - text-align: center; - - .card-container { - float: left; - width: 100%; - display: block; - } - &.target .cards-list.cards-area { - .draggy-boxy-thing-hover(#999); - } - } - .header { - font-weight: bold; - margin-bottom: 5px; - } - .target .header { - color: black; - } - .card { - min-height: 26px; - text-align: center; - line-height: 24px; - width: (@categoryWidth - 48px); - padding: 6px 8px; - margin: 0 auto; - - &:hover { - transition-property: border-color, box-shadow; - transition-duration: 150ms; - -moz-transition-property: border-color, -moz-box-shadow; - -moz-transition-duration: 150ms; - -webkit-transition-property: border-color, -webkit-box-shadow; - -webkit-transition-duration: 150ms; - } - transition-property: border-color, box-shadow; - transition-duration: 150ms; - -moz-transition-property: border-color, -moz-box-shadow; - -moz-transition-duration: 150ms; - -webkit-transition-property: border-color, -webkit-box-shadow; - -webkit-transition-duration: 150ms; - } - - .card-container { - float: left; - padding: 4px 0; - } - - .card-hidden { - visibility: hidden; - z-index: 0; - } - - .card.dragging { - position: absolute; - display: none; - z-index: @zIndexCurrentlyDragging; - .draggy-boxy-thing-hover(); - } - - .card.placeholder > * { - visibility: hidden; - } - - &.currently-dragging { - .card { - opacity: 0.4; - } - .card.dragging { - display: block; - background-color: white; - opacity: 1; - filter: opacity(1); - } - } - - div.paragraph { - margin: 0; - } -} diff --git a/css/widgets/categorizer.less b/css/widgets/categorizer.less deleted file mode 100644 index 4d18ea1af8..0000000000 --- a/css/widgets/categorizer.less +++ /dev/null @@ -1,50 +0,0 @@ -.categorizer-container { - margin-top: 20px; - - div.paragraph { - margin: 10px 0px; - } - - .category { - text-align: center; - } - - th.category { - vertical-align: bottom; - } - - label { - .above-scratchpad; - } - - td.category { - padding: 0; - color: #ccc; - vertical-align: bottom; - - input[type="radio"] { - display: none; - } - - input[type="radio"] + span:before { - display: inline-block; - position: relative; - font-family: 'FontAwesome'; - font-size: 30px; - width: 30px; - padding-right: 3px; - bottom: 9px; - content: "\f1db"; // fa-circle-thin - } - - label span:hover { - color: #999; - } - - input[type="radio"]:checked + span:before { - content: "\f111"; // fa-circle - color: #333; - } - } - -} diff --git a/css/widgets/dropdown.less b/css/widgets/dropdown.less deleted file mode 100644 index 4fba3b0ed1..0000000000 --- a/css/widgets/dropdown.less +++ /dev/null @@ -1,120 +0,0 @@ -@fancyDropdownColor: rgb(53, 143, 164); -@fancyDropdownOptionHiddenMargin: -70px; -@fancyDropdownOptionVisibleMargin: 6px; - -.perseus-widget-dropdown { - position: relative; - - .fancy-select { - // Put some placeholder content hidden but always in the dropdown - // so that its text-baseline vertical positioning doesn't change - // when content is added - &:before { - font-size: 0; // to prevent it from moving the actual content - visibility: hidden; - content: "_"; - } - - border: 3px solid @fancyDropdownColor; - border-radius: 40px; - color: @fancyDropdownColor; - font: 700 23pt avenir, sans-serif; - z-index: @zIndexInteractiveComponent; - padding: 0 60px 0 35px; - min-width: 40px; - min-height: 40px; - cursor: pointer; - white-space: nowrap; - user-select: none; - -webkit-user-select: none; - - > .placeholder { - opacity: 0.5; - } - - &.active { - opacity: 0.5; - } - - &:after { - color: @fancyDropdownColor; - content: "\f0dd"; - font: 24pt "FontAwesome"; - position: absolute; - top: 0px; - right: 17px; - } - } - - .fancy-select-options { - color: @fancyDropdownColor; - position: absolute; - z-index: @zIndexCurrentlyDragging; - min-width: 100%; - // For animating them downwards - overflow-y: hidden; - } - - .fancy-option { - &:before { - content: ""; - width: 16px; - height: 16px; - position: absolute; - border: 3px solid @fancyDropdownColor; - margin-top: 4px; - margin-left: -30px; - border-radius: 25px; - } - - cursor: pointer; - padding: 3px 20px 3px 38px; - font-size: 17pt; - line-height: 22pt; - background: rgba(255, 255, 255, 0.95); - border: 3px solid @fancyDropdownColor; - display: block; - border-radius: 20px; - min-width: 40px; - min-height: 30px; - margin-top: @fancyDropdownOptionHiddenMargin; - - &.selected { - &:before { - background: @fancyDropdownColor; - } - } - - &.active { - margin-top: @fancyDropdownOptionVisibleMargin; - -webkit-animation-name: perseus-fancy-dropdown-slideout; - -webkit-animation-duration: 0.35s; - -webkit-animation-timing-function: ease-out; - } - - &.closed { - margin-top: @fancyDropdownOptionHiddenMargin; - -webkit-animation-name: perseus-fancy-dropdown-slidein; - -webkit-animation-duration: 0.2s; - -webkit-animation-timing-function: ease-in; - } - } -} - -@-webkit-keyframes perseus-fancy-dropdown-slideout { - 0% { - margin-top: @fancyDropdownOptionHiddenMargin; - } - 100% { - margin-top: @fancyDropdownOptionVisibleMargin; - } -} - -@-webkit-keyframes perseus-fancy-dropdown-slidein { - 0% { - margin-top: @fancyDropdownOptionVisibleMargin; - } - 100% { - margin-top: @fancyDropdownOptionHiddenMargin; - } -} diff --git a/css/widgets/expression.less b/css/widgets/expression.less deleted file mode 100644 index 4b23a8c19a..0000000000 --- a/css/widgets/expression.less +++ /dev/null @@ -1,133 +0,0 @@ -.perseus-widget-expression { - & > span, .error-tooltip { - display: inline-block; - vertical-align: middle; - } - - position: relative; - - .error-tooltip { - position: absolute; - right: 6px; - top: -2px; - } - - .error-icon { - color: #fcc335; - cursor: pointer; - font-size: 20px; - } - - .error-text { - background-color: #fff; - padding: 5px; - width: 210px; - } - - &.show-error-tooltip .perseus-math-input.mq-editable-field.mq-math-mode > .mq-root-block { - padding-right: 25px; - } - - .perseus-formats-tooltip { - width: 190px; - } -} - -#answer_area .perseus-widget-expression { - // Super hacky overrides to make the error tooltip fit into the answer area - // by putting it on top of the MathQuill input. - - // TODO(alex): Implement arrows coming from the middle of the tooltip side, - // then use some of those here; e.g. align to left middle - - .perseus-math-input.mq-editable-field.mq-math-mode { - // Make the input wider so that error message never scrolls left - min-width: 130px; - } - - .error-tooltip { - .error-text-container { - // Move the tooltip to the left of the error icon - left: -125px !important; - top: -17px !important; - } - - .error-text { - // Make the error message much smaller - font-size: 12px; - width: 90px; - } - - .tooltipContainer > div:first-child { - // Hide the little triangle "arrow" created by the tooltip - // (If it weren't in a corner, we wouldn't have to hide it) - visibility: hidden !important; - } - } -} - -// Old expression widget -.perseus-widget-expression-old { - &, - > .output, - > .output > .tex, - > .output > .placeholder { - display: block; - } -} - -.perseus-widget-expression-old > input, -#answer_area .perseus-widget-expression-old > input { - font-size: 14px; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - direction: ltr; - margin-bottom: 5px; - max-width: 240px; - width: 100%; -} - -.perseus-widget-expression-old > .output > .tex { - overflow-x: auto; -} - -.perseus-widget-expression-old > .output > .placeholder { - position: relative; - height: 40px; - overflow-y: hidden; -} - -.perseus-widget-expression-old > .output > .placeholder > .error { - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px; - background: #f7f7f7; - border: 1px solid #ddd; - box-shadow: 2px 2px 5px rgba(0,0,0,0.5); - color: #000; - display: none; - font-weight: normal; - min-height: 22px; - width: 168px; - position: absolute; - top: 0px; - left: 40px; - margin: auto; -} - -.perseus-widget-expression-old > .output > .placeholder > .error > .buddy { - background-image: url(/images/perseus/error-buddy.png); - background-size: 100%; - height: 36px; - width: 40px; - position: absolute; - top: -3px; - left: -42px; -} - -.perseus-widget-expression-old > .output > .placeholder > .error > .message { - font: 12px @baseFontFamily; - line-height: 1.4em; - margin: 0px 4px; -} diff --git a/css/widgets/image.less b/css/widgets/image.less deleted file mode 100644 index c9eeceab6b..0000000000 --- a/css/widgets/image.less +++ /dev/null @@ -1,18 +0,0 @@ -.perseus-widget-image { - .label-settings { - td { - padding: 5px 4px; - text-align: center - } - - tr:nth-child(odd) { - td { - background-color: transparent; - } - } - - th, td { - border-width: 0; - } - } -} \ No newline at end of file diff --git a/css/widgets/interactive-graph.less b/css/widgets/interactive-graph.less deleted file mode 100644 index 73034ab523..0000000000 --- a/css/widgets/interactive-graph.less +++ /dev/null @@ -1,11 +0,0 @@ -.perseus-widget-interactive-graph { - padding: 25px 25px 0 0; -} - -.graphie-container { - position: relative; - - img { - position: absolute; - } -} diff --git a/css/widgets/matcher.less b/css/widgets/matcher.less deleted file mode 100644 index df10294ca0..0000000000 --- a/css/widgets/matcher.less +++ /dev/null @@ -1,36 +0,0 @@ -.perseus-widget-matcher { - @matcher-border: 1px solid #444; - @matcher-padding: 5px; - - .column { - float: left; - max-width: 50%; - - &:first-child { - .column-label, .perseus-sortable { - padding-right: @matcher-padding; - } - } - - & + .column { - .column-label, .perseus-sortable { - border-left: @matcher-border; - padding-left: @matcher-padding; - } - } - } - - .column-label { - border-bottom: @matcher-border; - padding-bottom: @matcher-padding; - text-align: center; - - div.paragraph { - margin: 0; - } - } - - .perseus-sortable { - padding-top: @matcher-padding; - } -} diff --git a/css/widgets/measurer.less b/css/widgets/measurer.less deleted file mode 100644 index 277bc59c4e..0000000000 --- a/css/widgets/measurer.less +++ /dev/null @@ -1,10 +0,0 @@ -.perseus-widget-measurer { - position: relative; - img { - position: absolute; - } -} - -.perseus-widget-measurer-url { - width: 70%; -} diff --git a/css/widgets/orderer.less b/css/widgets/orderer.less deleted file mode 100644 index c89d094bb2..0000000000 --- a/css/widgets/orderer.less +++ /dev/null @@ -1,115 +0,0 @@ -.orderer { - position: relative; - // HACK (jack): The highlight inline-div around a horizontal - // orderer will squash this together unless we set a min-width. - // Ideally we'd like to let the width expand based on the size - // of it's container (maybe?) - min-width: @questionWidth; - - .draggable-box { - padding: 13px; - min-height: 69px; - margin-top: 30px; - } - - .card { - padding: 0 10px; - cursor: pointer; - position: relative; - user-select: none; - width: auto; - - img { - vertical-align: middle; - } - } - - &.height-normal.layout-horizontal .card { - line-height: 65px; - height: 65px; - } - - &.height-normal.layout-vertical .card { - padding: 5px; - } - - &.height-large .card { - // TODO(alex): remove after checking that no items use this option - line-height: 160px; - height: 160px; - } - - &.height-auto .card { - padding: 0; - } - - &.height-auto.layout-horizontal .drag-hint { - min-height: 65px; - min-width: 22px; - } - - .card-wrap { - .interactive-component; - margin-right: 4px; - width: auto; - float: left; - } - - .bank { - margin: 0px 13px; - - .card-wrap { - margin-right: 10px; - margin-bottom: 8px; - } - } - - div.paragraph { - margin: 0; - } - - &.layout-vertical .card-wrap { - float: none; - text-align: center; - } - - &.layout-vertical .bank, &.layout-vertical .draggable-box { - box-sizing: border-box; - -moz-box-sizing: border-box; - float: left; - max-width: 50%; - } - - &.layout-vertical .bank { - padding: 10px 0 0 0; - margin: 0; - - .card-wrap { - margin-right: 20px; - } - } - - &.layout-vertical .draggable-box { - margin-top: 0; - min-height: 170px; - padding: 10px; - - .card-wrap:first-child { - margin: 0; - } - - .card-wrap { - margin: 8px 0 0 0; - } - - .drag-hint { - box-sizing: border-box; - min-width: 140px; - min-height: 34px; - } - - .placeholder { - box-sizing: border-box; - } - } -} diff --git a/css/widgets/plotter.less b/css/widgets/plotter.less deleted file mode 100644 index ee1d4e7d31..0000000000 --- a/css/widgets/plotter.less +++ /dev/null @@ -1,26 +0,0 @@ -.perseus-widget-plotter { - svg, vml { - position: absolute; - } - span.rotate { - -moz-transform: rotate(-90deg); - -o-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; - } - body.ie span.rotate { - left: 60px !important; - top: 140px !important; - } -} - -.set-from-scale-box { - border: 2px solid #EEEEEE; - border-radius: 3px; - padding: 3px; -} - -.categories-title { - font-size: 14px; -} diff --git a/css/widgets/radio.less b/css/widgets/radio.less deleted file mode 100644 index 1ccb188d67..0000000000 --- a/css/widgets/radio.less +++ /dev/null @@ -1,146 +0,0 @@ -// Override the float: left on input[type=radio]s in the -// #answer_area from khan-exercise.css, because it breaks our -// margin-left: -20px positioning -.perseus-widget-radio, -#answer_area .perseus-widget-radio { - li span.checkbox input[type=radio] { - float: none; - margin: 3px; - } -} - -.perseus-widget-radio { - div, - div > p { - /* TODO(alpert): Find a better way of doing inline renderers */ - display: inline; - } - - li { - padding: 7px 0; - margin-left: 20px; - cursor: pointer; - - &.inline { - display: inline-block; - padding-left: 20px; - } - - span.checkbox { - .interactive-component; - display: inline-block; - width: 20px; - margin-left: -20px; - margin-right: 0; - } - - div.instructions { - margin-bottom: 5px; - } - - .value { - display: block; - margin-left: 18px; - min-height: 22px; - } - - img { - vertical-align: middle; - } - } - - .perseus-radio-clue { - color: @clueColor; - display: block; - } - - .perseus-textarea-pair, - .perseus-textarea-underlay { - display: block; - } -} - - -// Styles specifically for mobile -body.mobile { - .framework-perseus #problemarea input[type=radio], - .framework-perseus #problemarea input[type=checkbox] { - float: left; - margin-right: 7px; - } - .perseus-widget-radio { - color: @gray; - margin-left: 0; - .perseus-radio-option { - margin-left: 0; - padding: 0; - } - - span.checkbox { - .interactive-component; - margin-right: 26px; - display: block; - margin: 0; - width: auto; - } - - // General styles for the li - .perseus-radio-option { - border: 2px solid @gray; - border-radius: 28px; - box-sizing: border-box; - cursor: pointer; - display: block; - font: 700 14pt/30px "Avenir", "Helvetica", "Arial", sans-serif; - margin-bottom: 10px; - overflow: hidden; - padding: 8px 10px; - - &.perseus-radio-selected { - border-color: @blue; - color: @blue; - font-weight: bold; - } - } - - input[type=radio], - input[type=checkbox] { - -webkit-appearance: none; - appearance: none; - border: 2px solid @gray; - border-radius: 25px; - float: left; - } - - input[type=radio] { - height: 25px; - margin-right: 10px; - outline: none; - width: 25px; - &:checked { - background: @blue; - border: 2px solid @blue; - } - } - - input[type=checkbox] { - position: absolute; - outline: none; - - &:before { - color: @gray; - content: "\f00c"; - font: 15pt "FontAwesome"; - left: 0; - position: relative; - top: 1px; - } - &:checked { - border-color: @blue; - &:before { - color: @blue; - } - } - } - } -} diff --git a/css/widgets/sortable.less b/css/widgets/sortable.less deleted file mode 100644 index 3a2b2b2145..0000000000 --- a/css/widgets/sortable.less +++ /dev/null @@ -1,202 +0,0 @@ -.draggy-boxy-thing-hover (@color: #ffa500) { - border-color: @color; - @darker: darken(@color, 11%); - box-shadow: 0 0 4px @darker; - -moz-box-shadow: 0 0 4px @darker; - -ms-box-shadow: 0 0 4px @darker; - -o-box-shadow: 0 0 4px @darker; - -webkit-box-shadow: 0 0 4px @darker; -} - -.draggy-boxy-thing { - .draggable-box, - .cards-area { - background: #eee; - border: 1px solid #ccc; - border-bottom: 1px solid #aaa; - - box-shadow: 0 1px 2px #ccc; - -moz-box-shadow: 0 1px 2px #ccc; - -webkit-box-shadow: 0 1px 2px #ccc; - } - - // TODO(jack): Make this work for the orderer too. - // Right now don't do this for the orderer because it uses - // more complicated positioning that this would break - .cards-area { - .above-scratchpad; - } - - .card { - .interactive-component; - - background-color: #fff; - border: 1px solid #b9b9b9; - border-bottom-color: #939393; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - cursor: pointer; - - &.placeholder { - background:#ddd; - border: 1px solid #ccc; - } - - &.drag-hint { - background: none; - border: 1px dashed #aaa; - cursor: auto; - - &:hover { - border-color: #aaa; - box-shadow: none; - } - } - - &.dragging { - background-color: #ffedcd; - opacity: 0.8; - filter: opacity(0.8); - } - - &.stack { - z-index: auto; - &:after { - content: " "; - background-color: #fff; - border: 1px solid #b9b9b9; - border-bottom-color: #939393; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - height: 100%; - width: 100%; - z-index: -1; - top: 1px; - left: 1px; - position: absolute; - } - } - - &:hover { - .draggy-boxy-thing-hover(); - } - } -} - -.perseus-sortable { - // This should really be applied to individual items, but applying - // it here makes positioning simple - .interactive-component; - - box-sizing: border-box; - -moz-box-sizing: border-box; - float: left; - - .perseus-sortable-card { - background-color: #fff; - border: 1px solid #ddd; - - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - - box-sizing: border-box; - -moz-box-sizing: border-box; - - cursor: pointer; - - min-width: 25px; - min-height: 44px; - padding: 10px; - - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - } - - .perseus-sortable-placeholder { - background: #ddd; - border: 1px solid #ccc; - } - - .perseus-sortable-draggable { - font-size: 0; - text-align: center; - - &:before { - // Vertical-align, part 1 - content: ""; - display: inline-block; - height: 100%; - vertical-align: middle; - } - - & > div { - // Vertical-align, part 2 - display: inline-block; - font-size: 14px; - max-width: 100%; - vertical-align: middle; - } - - div.paragraph { - margin: 0; - } - - &.perseus-sortable-static { - cursor: pointer; - } - - &.perseus-sortable-static:hover { - .draggy-boxy-thing-hover(); - } - - &.perseus-sortable-dragging { - background-color: #ffedcd; - filter: opacity(0.8); - opacity: 0.8; - } - - &.perseus-sortable-disabled { - background-color: inherit; - border: 1px solid transparent; - cursor: default; - } - } - - &.layout-horizontal { - .perseus-sortable-card { - float: left; - } - - .perseus-sortable-dragging { - cursor: ew-resize; - } - } - - &.layout-vertical { - &, .perseus-sortable-card { - max-width: 100%; - } - - .perseus-sortable-dragging { - cursor: ns-resize; - } - } - - &.unpadded { - .perseus-sortable-card { - padding: 0; - img { - vertical-align: bottom; - } - } - } -} diff --git a/css/widgets/table.less b/css/widgets/table.less deleted file mode 100644 index 6103310a1c..0000000000 --- a/css/widgets/table.less +++ /dev/null @@ -1,47 +0,0 @@ -// Extra specifity is needed to counteract generic tables -.framework-perseus table.perseus-widget-table-of-values.non-markdown { - text-align: left; - margin: 20px auto 0; - border-collapse: collapse; - - tr { - height: 23px; - } - - th, td { - border: 2px solid black; - border-width: 0 2px; - - &:first-child { - border-left: 0; - } - - &:last-child { - border-right: 0; - } - } - - th { - font-weight: normal; - padding: 5px; - width: 80px; - text-align: left; - border-bottom: 2px solid black; - .paragraph { - margin: 0; - } - } - - td { - padding: 0px 5px; - text-align: right; - } - - tbody tr:first-child td { - padding-top: 5px; - } -} -.framework-perseus table.perseus-widget-table-of-values input, -#answer_area table.perseus-widget-table-of-values input { - width: 80px; -} diff --git a/css/widgets/transformer.less b/css/widgets/transformer.less deleted file mode 100644 index 9af0bba0de..0000000000 --- a/css/widgets/transformer.less +++ /dev/null @@ -1,18 +0,0 @@ -.perseus-widget-transformer { - .highlighted-tool-button { - text-shadow: 1px 1px rgba(0, 0, 0, 0.25); - } - .graphie-container { - margin-bottom: 10px; - } - .transformer-undo-button { - float: right; - } - .perseus-transformation-list { - input { - width: 40px; - } - margin-top: 10px; - margin-bottom: 10px; - } -} From 456f4d96891d90d41c64670a3280468736254433 Mon Sep 17 00:00:00 2001 From: benny Date: Mon, 14 Dec 2015 20:41:49 +0800 Subject: [PATCH 046/156] Ruler word type error --- build/perseus-1.js | 4 ++-- src/widgets/measurer.jsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index 6e9a0e31ce..e339fa7a3b 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,5 +1,5 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 3a8578a88a1f82aeef59d511cd367c8f2ad13357 +// commit a597132cb1395ce8f3b498f49a4252776a58732e // branch perseus_into_junyi !function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.Perseus=e():"undefined"!=typeof global?global.Perseus=e():"undefined"!=typeof self&&(self.Perseus=e())}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o Date: Wed, 16 Dec 2015 12:46:29 +0800 Subject: [PATCH 047/156] Modify css for paragraph in solution area margin --- build/perseus-1.css | 2 +- build/perseus-1.js | 4 ++-- stylesheets/exercise-content-package/perseus.less | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/perseus-1.css b/build/perseus-1.css index 5692016e9a..ee2b58d9c0 100644 --- a/build/perseus-1.css +++ b/build/perseus-1.css @@ -160,7 +160,7 @@ } .framework-perseus div #solutionarea div.paragraph { font-size: inherit; - margin: inherit; + margin: 0px; } .framework-perseus .checkbox { margin: 0px; diff --git a/build/perseus-1.js b/build/perseus-1.js index e339fa7a3b..c2dcdc7b41 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit a597132cb1395ce8f3b498f49a4252776a58732e -// branch perseus_into_junyi +// commit 57a015f704df8358a3537fc0b1324c7b478d54cb +// branch master !function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.Perseus=e():"undefined"!=typeof global?global.Perseus=e():"undefined"!=typeof self&&(self.Perseus=e())}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o Date: Fri, 18 Dec 2015 17:31:53 +0800 Subject: [PATCH 048/156] Add katex.less.css --- lib/katex/katex.less.css | 321 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 321 insertions(+) create mode 100644 lib/katex/katex.less.css diff --git a/lib/katex/katex.less.css b/lib/katex/katex.less.css new file mode 100644 index 0000000000..0a76d712f6 --- /dev/null +++ b/lib/katex/katex.less.css @@ -0,0 +1,321 @@ +/* +things to do: +\sum, \int, \lim +\sqrt +big parens +*/ +.katex { + font: normal 1.21em katex_main; + line-height: 1.2; + white-space: nowrap; +} +.katex .katex-inner { + display: inline-block; +} +.katex .base { + display: inline-block; +} +.katex .strut { + display: inline-block; +} +.katex .mathit { + font-family: katex_math; + font-style: italic; +} +.katex .amsrm { + font-family: katex_ams; +} +.katex .textstyle > .mord + .mop { + margin-left: 0.16667em; +} +.katex .textstyle > .mord + .mbin { + margin-left: 0.22222em; +} +.katex .textstyle > .mord + .mrel { + margin-left: 0.27778em; +} +.katex .textstyle > .mord + .minner { + margin-left: 0.16667em; +} +.katex .textstyle > .mop + .mord { + margin-left: 0.16667em; +} +.katex .textstyle > .mop + .mop { + margin-left: 0.16667em; +} +.katex .textstyle > .mop + .mrel { + margin-left: 0.27778em; +} +.katex .textstyle > .mop + .minner { + margin-left: 0.16667em; +} +.katex .textstyle > .mbin + .mord { + margin-left: 0.22222em; +} +.katex .textstyle > .mbin + .mop { + margin-left: 0.22222em; +} +.katex .textstyle > .mbin + .mopen { + margin-left: 0.22222em; +} +.katex .textstyle > .mbin + .minner { + margin-left: 0.22222em; +} +.katex .textstyle > .mrel + .mord { + margin-left: 0.27778em; +} +.katex .textstyle > .mrel + .mop { + margin-left: 0.27778em; +} +.katex .textstyle > .mrel + .mopen { + margin-left: 0.27778em; +} +.katex .textstyle > .mrel + .minner { + margin-left: 0.27778em; +} +.katex .textstyle > .mclose + .mop { + margin-left: 0.16667em; +} +.katex .textstyle > .mclose + .mbin { + margin-left: 0.22222em; +} +.katex .textstyle > .mclose + .mrel { + margin-left: 0.27778em; +} +.katex .textstyle > .mclose + .minner { + margin-left: 0.16667em; +} +.katex .textstyle > .mpunct + .mord { + margin-left: 0.16667em; +} +.katex .textstyle > .mpunct + .mop { + margin-left: 0.16667em; +} +.katex .textstyle > .mpunct + .mrel { + margin-left: 0.16667em; +} +.katex .textstyle > .mpunct + .mopen { + margin-left: 0.16667em; +} +.katex .textstyle > .mpunct + .mclose { + margin-left: 0.16667em; +} +.katex .textstyle > .mpunct + .mpunct { + margin-left: 0.16667em; +} +.katex .textstyle > .mpunct + .minner { + margin-left: 0.16667em; +} +.katex .textstyle > .minner + .mord { + margin-left: 0.16667em; +} +.katex .textstyle > .minner + .mop { + margin-left: 0.16667em; +} +.katex .textstyle > .minner + .mbin { + margin-left: 0.22222em; +} +.katex .textstyle > .minner + .mrel { + margin-left: 0.27778em; +} +.katex .textstyle > .minner + .mopen { + margin-left: 0.16667em; +} +.katex .textstyle > .minner + .mpunct { + margin-left: 0.16667em; +} +.katex .textstyle > .minner + .minner { + margin-left: 0.16667em; +} +.katex .mord + .mop { + margin-left: 0.16667em; +} +.katex .mop + .mord { + margin-left: 0.16667em; +} +.katex .mop + .mop { + margin-left: 0.16667em; +} +.katex .mclose + .mop { + margin-left: 0.16667em; +} +.katex .minner + .mop { + margin-left: 0.16667em; +} +.katex .reset-textstyle.textstyle { + font-size: 1em; +} +.katex .reset-textstyle.scriptstyle { + font-size: 0.66667em; +} +.katex .reset-textstyle.scriptscriptstyle { + font-size: 0.5em; +} +.katex .reset-scriptstyle.textstyle { + font-size: 1.5em; +} +.katex .reset-scriptstyle.scriptstyle { + font-size: 1em; +} +.katex .reset-scriptstyle.scriptscriptstyle { + font-size: 0.75em; +} +.katex .reset-scriptscriptstyle.textstyle { + font-size: 2em; +} +.katex .reset-scriptscriptstyle.scriptstyle { + font-size: 1.5em; +} +.katex .reset-scriptscriptstyle.scriptscriptstyle { + font-size: 1em; +} +.katex .msupsub { + display: inline-block; + text-align: left; + margin-left: 0.05em; +} +.katex .msupsub .msup, +.katex .msupsub .msub, +.katex .msupsub .fix-ie { + display: block; + height: 0; + position: relative; +} +.katex .msupsub .msup > span, +.katex .msupsub .msub > span, +.katex .msupsub .fix-ie > span { + display: inline-block; +} +.katex .msupsub .fix-ie { + display: inline-block; +} +.katex .mfrac { + display: inline-block; +} +.katex .mfrac .mfracnum, +.katex .mfrac .mfracmid, +.katex .mfrac .mfracden, +.katex .mfrac .fix-ie { + display: block; + height: 0; + position: relative; + text-align: center; +} +.katex .mfrac .mfracnum > span, +.katex .mfrac .mfracmid > span, +.katex .mfrac .mfracden > span, +.katex .mfrac .fix-ie > span { + display: inline-block; +} +.katex .mfrac .fix-ie { + display: inline-block; +} +.katex .mfrac .mfracmid > span { + width: 100%; +} +.katex .mfrac .mfracmid > span:before { + border-bottom-style: solid; + border-bottom-width: 1px; + content: ""; + display: block; +} +.katex .mfrac .mfracmid > span:after { + border-bottom-style: solid; + border-bottom-width: 0.05em; + content: ""; + display: block; + margin-top: -1px; +} +.katex .mspace { + display: inline-block; +} +.katex .mspace.negativethinspace { + margin-left: -0.16667em; +} +.katex .mspace.thinspace { + width: 0.16667em; +} +.katex .mspace.mediumspace { + width: 0.22222em; +} +.katex .mspace.thickspace { + width: 0.27778em; +} +.katex .mspace.enspace { + width: 0.5em; +} +.katex .mspace.quad { + width: 1em; +} +.katex .mspace.qquad { + width: 2em; +} +.katex .llap, +.katex .rlap { + width: 0; + position: relative; +} +.katex .llap > .inner, +.katex .rlap > .inner { + position: absolute; +} +.katex .llap > .fix, +.katex .rlap > .fix { + display: inline-block; +} +.katex .llap > .inner { + right: 0; +} +.katex .rlap > .inner { + left: 0; +} +.katex .katex-logo .a { + font-size: 0.75em; + margin-left: -0.32em; + position: relative; + top: -0.2em; +} +.katex .katex-logo .t { + margin-left: -0.23em; +} +.katex .katex-logo .e { + margin-left: -0.1667em; + position: relative; + top: 0.2155em; +} +.katex .katex-logo .x { + margin-left: -0.125em; +} +.katex .sizing { + display: inline-block; +} +.katex .reset-size5.size1 { + font-size: 0.5em; +} +.katex .reset-size5.size2 { + font-size: 0.7em; +} +.katex .reset-size5.size3 { + font-size: 0.8em; +} +.katex .reset-size5.size4 { + font-size: 0.9em; +} +.katex .reset-size5.size5 { + font-size: 1.0em; +} +.katex .reset-size5.size6 { + font-size: 1.2em; +} +.katex .reset-size5.size7 { + font-size: 1.44em; +} +.katex .reset-size5.size8 { + font-size: 1.73em; +} +.katex .reset-size5.size9 { + font-size: 2.07em; +} +.katex .reset-size5.size10 { + font-size: 2.49em; +} From a9ba9c6388d866f0ad41123904923c7a395c41cf Mon Sep 17 00:00:00 2001 From: benny Date: Tue, 22 Dec 2015 15:08:43 +0800 Subject: [PATCH 049/156] Show scratchpad if questionarea use image widget --- build/perseus-1.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index c2dcdc7b41..d218c9a4c7 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -5444,7 +5444,8 @@ var Graphie = React.createClass({displayName: 'Graphie', onClick: this.props.onClick, onMouseDown: this.props.onMouseDown, onMouseUp: this.props.onMouseUp, - onMouseMove: this.props.onMouseMove + onMouseMove: this.props.onMouseMove, + allowScratchpad: this.props.allowScratchpad }); graphie.snap = this.props.options.snapStep || [1, 1]; this.props.setup(graphie, this.props.options); @@ -14541,7 +14542,8 @@ var ImageWidget = React.createClass({displayName: 'ImageWidget', coordinates: React.PropTypes.arrayOf(React.PropTypes.number), alignment: React.PropTypes.string }) - ) + ), + allowScratchpad: React.PropTypes.bool }, getDefaultProps: function() { @@ -14549,7 +14551,8 @@ var ImageWidget = React.createClass({displayName: 'ImageWidget', range: [defaultRange, defaultRange], box: [defaultBoxSize, defaultBoxSize], backgroundImage: defaultBackgroundImage, - labels: [] + labels: [], + allowScratchpad: true }; }, @@ -14578,7 +14581,8 @@ var ImageWidget = React.createClass({displayName: 'ImageWidget', box:this.props.box, range:this.props.range, options:_.pick(this.props, "box", "range", "labels"), - setup:this.setupGraphie} + setup:this.setupGraphie, + allowScratchpad: this.props.allowScratchpad} ) ); }, From e9637ead678e26e9cd0f0f5437ebd2221fddfced Mon Sep 17 00:00:00 2001 From: benny Date: Wed, 23 Dec 2015 13:49:48 +0800 Subject: [PATCH 050/156] Modify height css for radio in radio widget --- build/perseus-1.css | 7 ++++--- stylesheets/exercise-content-package/perseus.less | 4 ---- stylesheets/exercise-content-package/widgets/radio.less | 5 +++++ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/build/perseus-1.css b/build/perseus-1.css index ee2b58d9c0..2d67fa703e 100644 --- a/build/perseus-1.css +++ b/build/perseus-1.css @@ -162,9 +162,6 @@ font-size: inherit; margin: 0px; } -.framework-perseus .checkbox { - margin: 0px; -} .framework-perseus table.non-markdown tr:nth-child(odd) td { background-color: transparent; } @@ -298,6 +295,10 @@ width: 20px; margin-left: -20px; margin-right: 0; + height: 0px; +} +.perseus-widget-radio li span.checkbox input { + margin: 0px; } .perseus-widget-radio li div.instructions { margin-bottom: 5px; diff --git a/stylesheets/exercise-content-package/perseus.less b/stylesheets/exercise-content-package/perseus.less index 0c0cd4c668..32d71613dc 100644 --- a/stylesheets/exercise-content-package/perseus.less +++ b/stylesheets/exercise-content-package/perseus.less @@ -212,10 +212,6 @@ font-size: inherit; margin: 0px; } - - .checkbox { - margin: 0px; - } } .framework-perseus table.non-markdown { diff --git a/stylesheets/exercise-content-package/widgets/radio.less b/stylesheets/exercise-content-package/widgets/radio.less index 1ccb188d67..eb18f1d0cf 100644 --- a/stylesheets/exercise-content-package/widgets/radio.less +++ b/stylesheets/exercise-content-package/widgets/radio.less @@ -32,6 +32,11 @@ width: 20px; margin-left: -20px; margin-right: 0; + height: 0px; + + input { + margin: 0px; + } } div.instructions { From 1b7d28fdf3ef9b2a987a994bcb9385535a8b0486 Mon Sep 17 00:00:00 2001 From: benny Date: Fri, 25 Dec 2015 15:00:29 +0800 Subject: [PATCH 051/156] Modify image.jsx and graph.jsx --- src/components/graphie.jsx | 3 ++- src/widgets/image.jsx | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/components/graphie.jsx b/src/components/graphie.jsx index 13dfbc49e0..885e34ccbe 100644 --- a/src/components/graphie.jsx +++ b/src/components/graphie.jsx @@ -125,7 +125,8 @@ var Graphie = React.createClass({ onClick: this.props.onClick, onMouseDown: this.props.onMouseDown, onMouseUp: this.props.onMouseUp, - onMouseMove: this.props.onMouseMove + onMouseMove: this.props.onMouseMove, + allowScratchpad: this.props.allowScratchpad }); graphie.snap = this.props.options.snapStep || [1, 1]; this.props.setup(graphie, this.props.options); diff --git a/src/widgets/image.jsx b/src/widgets/image.jsx index cd5278d381..54fbe0d5a6 100644 --- a/src/widgets/image.jsx +++ b/src/widgets/image.jsx @@ -62,7 +62,8 @@ var ImageWidget = React.createClass({ coordinates: React.PropTypes.arrayOf(React.PropTypes.number), alignment: React.PropTypes.string }) - ) + ), + allowScratchpad: React.PropTypes.bool }, getDefaultProps: function() { @@ -70,7 +71,8 @@ var ImageWidget = React.createClass({ range: [defaultRange, defaultRange], box: [defaultBoxSize, defaultBoxSize], backgroundImage: defaultBackgroundImage, - labels: [] + labels: [], + allowScratchpad: true }; }, @@ -99,7 +101,8 @@ var ImageWidget = React.createClass({ box={this.props.box} range={this.props.range} options={_.pick(this.props, "box", "range", "labels")} - setup={this.setupGraphie}> + setup={this.setupGraphie} + allowScratchpad={this.props.allowScratchpad}>

L*UoT*r7^-0Np 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 diff --git a/css/lib/mathquill/font/Symbola.woff b/css/lib/mathquill/font/Symbola.woff deleted file mode 100755 index b9bba23986a4938f11ae4f788f7bf1cdb5081e86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474392 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 z 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 lVJ=j8!1yp8J?-YfKM#4~|~2u172g zZTOTZm;+`ISzr!3UmDZJLdT)?$Fuz`a-aozU<1UU=fQLH?QbuzzcU}~q%-RM2>n32 z5Aowb`z?MR@B8R8D#S5q>=adwW87JrWgR@xDG=!56*7Tdr)DQR8PNsiDYb*4Yz|%` zCplT=BPX*{RhU=c$BCgp^C4^$ybFKSCxF;*VC?B1#!NrAnPZ_S%smb+X^r`V;U%~j zUJFk2+YF?jYRQIin0Lk@XEvWoYxc>0^F4y&3-aZleHx2sELI@MBJ>Kx~^* z)efn689Oo#%h+Zf-VOb0e0S1`}$;+ZVhO;qi*7@-%HsvrV_D>go|8I5i@8`=4#Y`0{FA2_LS%*JF3PlVinOf56X z*E{C5QRXnhGgd9iy7lm$$s|;4t>~;Kqr7Qp_{dL)!5$$(MUON2PcfeUL?}>fH=D;F zpPB4K0i|us=l$6Gy5LP)jojoLDc8$@8@J5fm9bjbn{pFR&C7vC!(mN{DTB~~H6YZ& z5uLXqybZVW6{!?Px>kdb)Krt3aLREY$PfnlrhK!>J3!%J6qbCX^8DAGg}CnyqTMY-yKIhj+Ay_>ryV|BkLCJq zvHE}`9^xy<{Lm)03I;4!8BBz^7HCx@kaq3S=~yQOu0la6q%mXPP?<14CGF_D9R944 zs!SKhMX5H^dkIavHn)Rk2p?BY4!R!?e=}o z?CZ>uD5>P(UFA@bI$WRBHQXm>J}^uypd@C`eW$y25vnBcUX(QIJUiN4hmiU7y}@yrtZ4dH6hP$l{X zDZWFOuBZ2Tnk7`hL|~Yo<3pb$vS-6jC*(=Oy^bF1Qi9%wAQh??C&nGBR(eNT5-w zB7sA1;o?-}DyRv@5^vzN6<;XGyy`JBW$1^)Qr=1Eu^YZVvdbS9m03Xs|9g+O_nvC+aO1);rl$OTaF=u`M0=((3JOVsyqF|~s@I0dQ zhc{pNz9jD3$n0$MIH@a~{CqirK?YoCqQa&RrFe*)vm{xy!~$qY0byi93NH3jAm)G7 z6&`rS4IUR9K!z(0M81sb4F5nd0fP%nW>@fm0f7(yv@!1cL3*>jAAzZVJg-_>ng#V! z9DMrD(x2O8+3#I1s8w#}!hcd9&$;eqgv)-K+aWtb-HKTucl%hoMn>3$`7Q>B^Ud=w zgtcpYtXg;_s_CkJy3t6jaDF7}$^zH*$YXhj!qtjGwpI^`qn;B^$0cv2kgWDJAK3g)B&h zcwac^ZYOi0lJud1fpmB3xbYig@%)9^ydOw{DStqO2Cu)J;&wrMiQU(y1NKg0s|JwV z<%8`SL)`i_nMVBE(fYJ!B&}Y6m#68PT46NSPv<`rb!8zhFEPv!PF`@0zZLtmosql=7BkWOp$}e9Tk>oqqg?%zjf5KU^g7HTj4Ps zMItI&os-v{GtYUB(zRr;Bkl}VKOWv`0kIQRYF&E_HVeMr9O||ijKin#9&?P^fv3yx zeHYqU4wkE!V`lTizuWd>#Ab6;dOG;Movrl0c#bi_@wqS`+4Zqc;L)%RLJ}+;@NB@9 zjEsg$85te&aG3txyCb^vKy;}?bct$pZ|5tpv3#}X>O3@~KSHLR4ct3Dok~nggHrd6 z8`CDA_jzJF?)5lm(*f@XOyy|P5ijV$e-UXAOnL+p=Svj*pLi2Z;QkY@!hy*@@-80! zh*9L_{1o*qTY=Bu%_0O(*D(WDIzlSF&On_g~q}rWY zQGhTI{&#m&`u;VGUEzskvp2XNNe+F&3y5P0cpk;k9U0rMIK20oIkT$HQnk0Un0Ox% z#TZ{-nl3y3hLIF8#Z30C`rqNFBQAozi>PIi#cTGbN9_hu1dmDlLn;J!&#>@?n_PQNHFN5nVeoCUxuI9v z*80Kt(p#Xfeaq^XD(B2ubJi9}&VQJ%w?8l%3DM&fO$wlAykcKXM5P~Gvv_aMUlHtG z5$vlG>TaXWrIv$P?XJihdYR4e?P2eLzPC!_$%D=G_M@$< z18ry5%$ZZ!LW6VY=<^?f!LQ7K^)0lvFOl+V&%KM+988aL*r4M6$X+gN(_Zd~h3{@a zi~Bbj(1jK7@+ZSGuO#%?3D1uxY|Z8`EC(r{uqO3$Aj|bFZYK4elDL0IWZ!Ak1-Qf7 z*LPa6uf?m;Ufccg{#8faLU%l_Z**p4}59djk!bw2jHdn3QQ z0cXXdH5C(-mg};Ina#o~QrzCz;dqM)*7H_0gb=0m2Y~lEQIt1GdG^b$Pf?oW{SsNU zuQ0HL{Kc&VS=nvHr`x|hAeXj6ru__>8WrRj--BxdlE$|Ff^q#PD6_Eqh5_2gG z2OhGy66twElWoAYwq+H(L!tAQ8PYW5O0(Ji`@94)!bjrYb*sPswqlXo(;3eOULy`a&$-{~c!Me!pU9Id{kL}Y zWxs!({de^BMCbY3y^FW`Q{z0mt2QO$uU|X5{yTKhAZ`w?NL( z)nCXPJqSJfm8Ls1-JI}7`)FU6ulI1dHx*zuyVDY=92+HvoVz8_gj^H#>{l>$-c6JR zech;sa5L9`*F@XqxUr&x87LMwHVj99Ew!9$T(q(U;BYI#>M0H@klq|;>P-Yvy&RFl zDXYRy_?UG2ac~x4;V0%t2ilZ1Iu4=SUND@DH=DWpTN*!QPLXfpp4djd-yM>d5CO?^ zXe%U82y`Jz1#`-5?o@K%>;w2Y>_N7^h6MNu6oHXHU8karyLQ!YIS2>BFIwXSPzc_K z@4)Xln7SgE-a|0OxUGT1DL@bqxTRWCS&u>&B2aR%miM%2&1HmyJ>cgL&K@Y~WHw*_ z35-M#eMPWq&aRHTyn!&V^Wc{HUAv6YU@Gtji7+0XoyRT~+PC3FrViQLVK^tTgAr6E z-;Pfg-+nBWF+H@JOv0-i?gJFR0-?e&NZ9wabLypQc>d+`YyeejWszsv-0YRP;*ZZh#DH!5D(*r zpR*f%25_CFp;6FxVQ>2}*z5K=vDl>Ddl}3m zu@6HDr#*M_I*|`Qg;n4nh1+#$YC6H7$wkt^$bW+Q;og(G3 zjdlKFakWuGOO+B&Aw49ZFWl>b$2!(xbat3+n)!ir9|Bp!MzMo{kb53&+D$m}vV+m+ zh0y4I{p54ggcRc=7JGVF>z=2AJ!IVhAqo$p#2{?=OE_zO%E>;L-_CFBYn69Cog;WWNnDq zyc7P0z7P2cYksu)%FOU5e606n9#e#T4E?1g>3o0mmh|FX7l-G<)a5)ZZ}wSCFY`_y zZ@PgSy|ip6Lf+$XJ9wTVkO6cM@Y;hFj~mU5 z@ebG8>D*h5R`T^G1UZ1-a-xS80<8@Kx&_U!_HyVeM0|=rjU3|20zi(|p}rZLm{`9m z9_hj@XfMUpcSx)8Ml0ucH2MDsOx6Tr@m3-&iDOSqdeZ4`V^xPf!754N`Oc5DX#tJ~A~ z2*E$wQTT{VZcWWzG8Sx2!h8M~-uO;WD&$r?(Nk!?QD+1@de{w^Ib>acK&V zxjhGRYjM3cam6t{`fW_6rhEn$`nM)+e9+ld@Gv_$MGqP7{G-;St8GXS3(;S)kYHwd zqZNT_7xm`!cShq}V}xNQ;bX&v$OYgZQP=(#APi5!YHuUnw6R>upBBc=!x%qnW8AeoEd=ylvqkO6eK=QuAsoWYNb zAOn^bv}NcV4guH7k<`Tl9bRD_v&snL*WehyGk-AuQ_k!uwhommL6$6&ou+icURNi-Xc}f z{cE0`Z^rzMz5VyiW_Sst4o*oK%;w4t6DY-75e{7hWw-+zV54}v=Zl!i4I|b!HE`l@ zP}=x$(oTGItiiy!k7!Q~GwDd3)yUx{UL}>j{Yyazlc27RX*kbg`A6i6G!IcwPx!|( zGFfmMP^}DR5>(5hNF9eH5f!&I-Gk{IY_5GXpwFy<_Ntf20RtPJZn!XT)~tcVN;V;- z_nlSwQcc)3D~EmTXJHy;=8^Bxgn=TjfK@=9i(b4Q&mo`uUYJHY*_QZxe~*~#zVK4t zulr_a_vO}7iPmzKAca3!5i%6noCw^+dHz7%4QozhDHpt%RZ>F%-1aYa(Hb&1gkLh5 zemDaMn@r$c9>JsW+qHD0hj1K-d?COreR<7{hId{f@6I6dy=jTha`?2T#_(kfhZ%B* zk%`YCl5pLC*Z9NxorO}7cgkRRX)tF4ICwIWo@oG-dVokt3;^Sy|SQd5Q#bd~S4JcCcI>VU5i>?>0! z_S`yN#c(v>)-tNaO0p}5H!(lagW&MwPDmg&mCo#N@y=3S|WMUuOE9Qe;r{q5AEC; z8NM+$^=cA;F(RgS(dpkc5ekLBbsq?s%!r~Dd!i_;xU%w^2J@-?!hAtzJk`;tLTlU<-N0i(5?RXfTxQ^+8o>bXsev3na#W@{ zmPEv-_Q~OiXVr3rl=09GJ=k@F9Dvj>qvJj|Xyu@4yI4s}rJ}&>`!CB8mv;KhfaniL z_07txsmaWm@4-9;FD4p2{o>zUoRTL}$`h4!W@=i*%1jSt11Qo&NL1M?|1M)ZqLsDL z^(!M*`q018ior9c4tsQO*wh&=xlWz9_z^C>(r5uU$P2I&(GxhITFp6AxJe1?Q&S91 zFN>6kAN{s{Rf>$3Ng}-^^|3K}iHS%Y9Hpg2`@eYjme9kY9X(5Yq}-%F11j zev^1dN~mka@GHF+bAI`qtJS22>X~TOOC%!SaH2j&!tt;RY#@P4@WSz6BGH+HYZE&2 zaq$L$7z&rJaG|6nQG*i+lSCg=AB*ot%Va65wmWgHWuY>wnK zjW*2Wc$}cHuu&y0P0f`&KvanDC==6iOvy+8!FQ*wIVcG~b0rS-k;FSf{OBGgBrV5? z)yEbCy@QY~VMEJAX}MlQY;^&mmWo?ZJZndx=7YU>rj?D)Wvh=Z1R_`RI4Fr$5#8|7 ze=sF!Iie(0i`G2Gg*F-|9pP8S=n6YKD5pY zjU%|uZWX*|fH#afV|{W#EE%DZDoo2Eoa5^oQ7&k#Q<$Wh2r{;Sx{Ndrx#XPCYBoQ- z`tlO0!FbL*b&-fM`NvcP^|@|xg+lI|cn0{z^!7I~qD529=9d?m&5O?p+~7-W(&4TV zYgUarj9-_OUoNmpv$-<}APASs!#RNJlhJuECSB%x9c$x!NqK}K^BQ?bJ zlxC%)PV$+T*i~w~z5@70@0D@Ko5C<~civi-$ z0DU0>A z3r6i_RuJ!VU;|&H5&poT!`0P0^4Y`!r67>=aq!_TKBuKyebk})gEvg*ADqzQH{8+Y zSqvD&hA&VOQNCq`a5wQEVzECX^2AZW2(q3Yz3;rx0Io5*X zqdab>ZkxvP4%b$={%JSUi2Aw}D%*RvBOO>Ou)Vpc@g6ge+TlF2a*LE>*NUAf=7@-K ziXOO}^q3xdqBg=_1p^N{j~L^X>3nDB@-OUD4*n+$H&|M#ieSwz$C_5IY#Hr$d1*-u!m1?x+ft#I)j{^ zBG=r4C_XWaXtzFwK>R9aR#USDMm&FtjkL3?8irQTz^xzWea3U+7x3vX$fMW-onj^$3Rp2xqFOh9RNFH@^QO6NgMndjAk?WC66Fb^9aIU zFoF^02ED&O`IQqr7rKVwPDre!LE$tT?wEjs*#VZu;maC%l+X)-z!A7*R`d4}N+pPr z4N3&Zul@$9*a?Syq`5(k?*E(f{zSf$m_X%c1RIThK;=aAl*tGF<$|8Tm9`wbY9W^w z#AoKQZZ9{LjDwp4lIC$iSCPOGvZeO7Tu~Pw;8V@+4r*Cc+<1oe#;B5Cn#~PH|8g_= zmA`+3zKOb6KQ-|}CqX_pTe&0r08~!et3hkL0UQ|N;aiXA6ZkTI2_ptensE%lB8i{F zyaTtPoqA~Nyi@-zdTj~PA(zbX8GnB;+=*uWBOvhiZxr~utxq(2w!z_w=lG~tQA|hy z?Z^PyNYI-RQs~WiQ)wv=dyK}0n?~cFHf3Uqj}Nic2mNxF412iw3p4sheAcFPyx{L& z$^Ij|H?1P+f>S*10`O#50Sr6M#x*RhBWURWUU1Mrt92luTM!AeBNtqDMY1Ef0m-bT zOJ{vu6Bk$GjwKtXZNe{u%}0AO{8}s(DaVWDifl&~?hjyatl9Lk^0MhznPMzEf?k8z zxoA^1Kk7vv+&l&8ZVpiw{A_}*xQ9<05@>4!LC!11n6j>l#lejhc1tEZqPQ;(gWtBc zfqXmcBEtL~^h8|W4;;MuLEkt|`MF6d_#Ba;JCeT_I1)@8+bSg}!`O-F7xB8HY|U&3 z3(sD|XZ{^H=4B~`v)@WC3R2m@b!PgN>~W+^i`PTc%bmH)WVzXDyeZgHx)6 zCZ*G1#>p?bcp^$M1Q0S$xr$%{lZ5$UVqdv3Y|+NJ`0ho@aH-hnRrBoOV$$rF>{paq zKi6#5duXV2xn$oil{=3Uq|8eiz<4H3UF_lU)bu2ouSn|KRV3AWs)Z7R$U~GEr)>BX zeU$pzT<@EkOZ}Nf6C4i6N8U-#6?o$;Vm#r{b(ALHrs!dl!RjnDwXryP12&2m%%ROi zfAyhUh}{%M??lkmk4HCJjP`y53wpz+oZ2IUB%*s{26SLb1p*~uyQI1&m!kC zcyLIX^GO5QY2}>O($emN$Sdt88%ciQKbevMsWd>6`JW4NQU%n0emL==`Sb7>KR=*W zk;rT^o#_?7X3(HD@x9KtJf1HR^}N5rH!aO~#r>WlNw|+c;$WZf7SGzl{e6w`>t@~w2xX5Q$awZ-qIpq^-7foL!-g+p z@E7E{s=3Dm>FT!Be>?H8H&Nkzcq003Kk9wBWsdZ^H{V=mHshbJjtn3+jUT_sz90YO zYlDQ#S=+FLiy=7cNZ8qqjxrLQPk>gH6((Z`{a0$?GWer2H^ZZ4YKHw_Yfi0Oeg}>( zG^L4jYLO*k;}S_a*k1s4WmXF_Sqs>a$>NBRG^HW5c-%@dP*X;Ndu~F8OCUrW_1=sb z?=^qK1DD~Fp|GmFe3knnYE>-)%Nc`_%MoR)r%qd2d+Z3#aP;cAZf#G;Pq!Lc?);#G z1tg9D9j^0!4JnsJZD;HwFPq3_tGlNnUae~=VuVyD+k zCL$ZTeDm5V9$+Cwt^^B>o0pHzR%4k}2(IGRdQh}Ry_T&g+yHiTq?qT{k-|O)fjg(o zt`r1za+W-9PFOyKR2bKM7k|I>22}!J(sQ zlfl3}ZdLBJ&to0twAT2oDYg^BRoieJ*G9xl7Z2pT>Sb0N>;GsYLPmKS>*w;uC1xtm z)=YFySVF3JOVSk%9j?S}W*<8k#>FIN*myajzq{#M{|8deo~}mkS#04VU|fydKM-aA zXaWk`vJH0;ECSwkSWWdqUc60^+KeZ-$-|B#ejIVdJb<7=q>(o*HU^AFgwinco0h%d zzc}`4h#dKGv>upu?| z>AC`orJ#=5y#oJUaVItPPFiVcT76AMX=%p4Q&U+yLJ%IF^vePRy93D>LKliVZ(&o- z!cCPAW$+c--qL0b(P~Jxlu`=VVY@af<+)%d{O+Yki=O*_%#IL3*0ujjA7(I2nAKL2 zs4N4&Zd`J$ZsE&=LQTu&pBh$9M!+lg;dKaRJ^Om?=p~g`mLJ>=ti`tE+=MSac@>Ik zFP_QxZ@gCkkAB3S&Y$JlVG$jCyMQ- z?SqJ}_EX&agd(_uzDNHm2t?LrG+VELTm=Vo207aXP{~&pQlt#Ibe0g@p-wJCZW4VD z_J%j!d*OzsCY-qe?}7s$>iy?$cxcSb4WKCh&92{i5{STb`$G5^T=6^c)iZ2yLe*IK zf!ypR0iC`8{Xi5rFc!pnn>{4({V)DM+TH^&isE}5-+g$!0vUx$%xuLGLw9O4He+`#2Rw;+(+({DE zrDDAkm&3`eaT#(OE|T9FIoGuX*5do>g39J4C-WsiI?Hle3~nDg8HU@*Ey8?Lu)!UW z$x`!|GioC9aB_#+DWH`yS^_4>U^JG_YtN(Y>^wnmmw+DU!B7Fqsdi;$0M`?`|BfWR zgYMIM*@;TIow&_pFxe!N4u#>VmsE(M;bx=Oi^s^50A)!`KR|G>fpELSM&Y+=Ih!<| znFqecXdInR8qD~ff-q$ph{q_M+1Mx_V}d4O)SzXX-0JMgwUQKuHqchos|iRxju8Z% zNE<>IF`_y6x0#8(jWGrn%mv#Np0MAt>jLsbv+IZl_zwH6fNq>eH-K;+U{xF4 zc;$`-o)84NspZZq_zvbt(7W$~AW1s4T#}Zb^5-`QXEZ-8CPz8R_TJ%kq9rm~iTlUU z^Pq>jL=f0{X#07z7T*~yg9)&(482YO5M~n)=yiX7XVJ_>;SAlH>#vDBBmcLccvT`=f?vVlm1AL0TKs`0c|JZBmp0JUn5)rR>Jw1*8CFPiSk#FiOQ7S&5cHKUjNeP< zIK0w3^FbyZO^F}2&mFqxN6QKKtaa(aVo*{{Os7_|y;Y|e^_-mXPpW6-$;ruiI@5zc z^ODIK|A}%etC3eV?23?_RlzP>q`?DUku&(S_gsUmL45G1&g2U_8N)8cu;VckoOF>0 zI1}?ou2w3c3?P-XnPjX=u#Mzhu#PTB-VC>c*q83K$y{01+QP#pQzZi})>xlfK^Xc9ES&pIb1DmF3 zCLa7*LEeg|JX`UY(Tn`$b-2fEg}nsOO_Dd`Hqi%<6}8EZt^ASdpVEYXPv>OxOoC60 z?TS#;nF!lHw|VEh0{DR-Z`PpT^7;rmC%%vWyS|oWte(P&`0hjuc`>DD9-70J=!|9^ zc>IvxH5X5>Copr_V)h-g9!qRS-cIpK1MOfe`xtJQiiZ@n#UqM>UQtn~h5}=k4-$QZ=s8%XdTGjG z>QzG(%}|>U)C9Fz{t0TGmgo0tLklE2@mwI6-IeNgvaLqYSWx{TQi;=}|P8@*)e;K%xPs^52n*;&_}_DqL@ z<{cM+&~;A~E^~m00<>-Ivj+}5yJl3YEucqG6WxS-L zA9(gbw?-eMul9a=WB)U9mqyn?{rP)#KaboWENQdKow{K6-o=3XU~Z=uu>SQuT8+M6 z@nkXD2I9a75WVV&VmzW=ya5vbM4MiJd=|WT1Ks=!^w~3HHtid)Vy>;FYwW7NlB#+A zXYy+cT#J>(?jZ%rn*QGf1uo6sk>QK!e8xw!Q!G{Sm&Jl>jA-N*8zUs6YcH3FwFAi- z%;$$lp&_myMNWN+zdy`GX_^PIGW9FQZpA8@6N&(rhKi*Wy*y4UQts7dE;uO2pGIv( z&rvHMO9(%h6z;w;5Pde0DL;k^7*!sw;fuN9nD;TN_am0>8VufU#=jsNYoob*v1H_2 z6QaYpm7Gzsp?|t{16&mPvArAu|7zbvg0QKnt`RneQk3E8=amMon?xqwSj2y@j9F1!tG&nXk7=}VlisCxD4n#@8JhwS2%GHNgZG^Ajvd$@7 z&@z_L$u^Z;+)XIoBPGc9ATAaB1b)J$a<2ySu0Byw+-5#ligF#`I!5{8747l-r*Tdr zyxU_$Y-9AKO^eWqg_|Vl*yc|@+444?U9yq8hIZ>dWS9FkK2NwXWAvyQ7nurW0`I(C zO)i>9!=saJfSYe`Atg!D=0#xCB3v?up| zmK~cN*|3AIu*=G}EexrXd%lK#Li6P>wv1WYc@@4RP96&HehU`u9eBYQSf9ZW=5d8KISaJ{($`U$*vQ#>s{9jZ0KVt~@ z_QM#0hX1cw=J$q&WeA-|TSyj%LAeZ+x@e37UX94CiV4U76m@FlLM&_Bxh}F!TCK zxaa0!l~7mtzAYukEaXu?6fgZ)1omJFMnaK4PwwsQ%`l}Vv_l(C%PrO zfB8I8L_cagx`{^2_zt@R5A7}y}ml7;r7FQp_4__L5%M$yUKK^$4nO?e#MI0ASCxO<8fc)^g}hyM*=XQ+HcVMrqlNMq14z8AAAv$3gXbZ*RDr3`S3yv zO1yM2BIm&M1ouCmTchmgd#!T5LF1pjSR_Nwm8qEGB(&FLr}I2560CY>Cz zp5EOyVCSB&jC~@(kvJ?d%o>(BEWw`e1Ut1~Ok`aw&v1u#h#IH9Mk6cr^d6f5pL~4E z&}7b>)m{+VXNB>}LkDk41bvQzNe4zQP&z-_kG^484}Ez|V`?e+i1NxyBA)qqMVF|N zY6}Hq3+G`nOeJ%ulMPASKVFk&rxkJ|Q-`eyPwkUXy;$4oAvUu^uw&Fxqpx`TQz5(& z$TTe-T9{#`GTK9PF4Kr)3w$)1Q+=XJ`H&n86gvpJLUZoJC_Y{vnw&!u9SKixCl_i2 zU$-apNliW&nL24b`@}=ZZEy@GcE~hy$wL=?;3v$%Ud)Az!Z#Wbg2N6>9*W1K`dARf za6PCVjrH^tySB)X=sD9?R=DfUo7Jw}teLy7a)f;f3VJth_HFaN&B(QSU?(^4-Mo3< zrha8x@Z86z?24Je;B~(e-Tnn@C935@=6hTx@8NRwbd5p zYO6~FimNlVh{U4_HMio=o?JO$#^vcxZ0sCo;3H#CteW`Lr5WS8E^&s1M8?6N*ZkgN zbB`6-y|S9nv%y6vGt~80Ul@u_S8@{ds?)p>F%0TUXXnqxMF!cNOS+Dmap|dvt4_p5 z@`kw18=shddB%j5C&9)h-CGw8#)bdBrb$+>>=oopjkyKt@xQU%l)MYxnEAX(zI;)UH{$$9ej)K&d1K0ZL(Ka`!6&e{FwgNTIF8Uq_8f^36H6f{Yin2z8}0oV z=!)3wmkK83c4@Y*p)PwA;{#O(W-pAEHC}9M7fW%3p@x zalaE7WX`4Rb}Nzd)Vx4pN>1Q-0KZczU`5S=YE=yB82e0N+{u*_XM8vV*ItxKZ^yOw z&(PWm*;}uT+saFrPU+z-(&7npSAE+Q%F5_6 zF*qEcje@5X-zx(956pwU|Np?|;sd~TAColODpbm!)defjdA<9p+Fp%V5f4vIWNJ~3 z$()&0md6`jA=@_RkX;mE(5_eQqlS7=8$0=(n`GbScK?G4ekWIsnXm?K6+pBkpCH>d zkZfCBn-$hVMYZEga3tBfk>@lZDC0XF(BsM)9&U?gxwVvES^tG&|CM(h9`+8vLpg!0 z+_a>OB=HgtsyMZNG>lj+YD=K4YjrE~p?JFQ>?B=aIT|a9;M5U$9%lUZ38V}30_B1r zUpWGQ2#me!c?o?^x`nKGmYyX&Vjb};W&GMjTmSubKWuGPw~nle&BH^F;J&47?opig zKPi7fEZ*iE8$Z%R;)LlJFO#&cOM;74y~wf2ZC4Iqk$kx0c(LBwp} zUSW6Gea5gM!-a)E6Vm@I8RwyO#*$HU(}oW8T#p*hAHGM3FB|oyM*GC4Mvu#S{D5)^ ze#ay^o{(qKKJ!vnmF`g>ZFJOQ>O~uNDO^LjP~1Z0LND}bpM-jvyd&%2DTEiey*7EY z7W==EN{=Khe-9)r4+Uz(>53Sm`o=h{Z^YrcEydS*rEbArf#pT@xd(g|z znWa!8XayUC*2XYN3NxZN_27JxJEj zlGUrGg{fmtSBys<6HTH_P+t{{Ln_$>Ox8@liRCwCMJVtXgyR;Do3_dt0hO2{XYZdW zqUpFx_pxmKa%U)bToBO4u~&Y231vqcKOu ztXMu)l7wERPxqjHyc2xzC20<;3QjXDpw zUa`jcCaPvFU-H&6_0KPF?^C|$6W!9MTrX75EFlY%Q~`!OSAqVxqQ$eG_QbAHftTHF zrfB~P?9LeW_r9>LezOPV%oYHjdkP@lq#S2gNp0C(^#p$HAv*wECIH+(eBd`K09|`j z1nT@J$duo}q;Ja33Iy9)Eo@*_V5-w6-J(jJdX@?ijaN@VLWR116xeJ4*gE6~`-}es zTJ0}v9uuo(e^ZV6vDEOfV6cblotY`Qbca9Ot~D?4eL(?=QGlVy<}JX_g1oFpkNkZ6 z3yAl5vp#(a$QD)eH=CKdPwv@sa(9hZ(r>0#`pk`xfxQ775$6;vPDZE#~Kr31u3DRb)`C9B#AIf{y>y?xI`4?6RrLs>5XFJ4 zh-6|l6Oo)lOnZ}avgl@{ouMl;c#`bIqh+3h&!N}2!l(*ms2UK3T*l9v(S+j} zEfr;Uo3QE0uFYDE>SlQVYB(+TbR>q2Xx&Li}p8Si+8pBDxV>YLJV;MCgrs=Y4d zmxXDHXAfP8T^HsGaiUAoheu#yVzJs7;iQ}*_sB-8=bGg1!+eRLDOX7Gas+DH z_t4$^_})!A0ua{-{ain>Z-*v^&}QgvZoJLlbQrcqKNg;yH$HlBpJlOmS1a|l8}_t1 z0L*F&qfL$K^dBqP?P9&M()Q>|U2Ck}o}TmTm@vJ;-h9$yVX2cQeeg?u&F?D8dZj%& zsH7*JNlB!psRLnhV@T>Pg81{=GI1-(4phPLrM$5#$29E`&qlBjy&LECjqg~mUOjlH zQqLH^yj}6i_QRVrY|`TO@x@Io^-VRV;~)c|1Fqh0JtHsBdInZN_{CC?&NVJ3hFhi!k|JHl zxn_}qTxXWaT*Fj|cH>&va$SBJ*UE>=Ezk{DN6+gJPaWDyEKD;+Mw(z6D@6y(NJhc( z8mZJ&!)$6vU4cBOm2uWW9~wO22LB7rF|Kh0TdtYwcqGQ3TNd+ZII|NXP4abuEyVwV zqa{|pZgNcwh%>2!@_+OXeCjg+j#lc%b6=@XC%KPlT!RYPq3T{e1I)ng*{xHEZ4B}l zGf=mE@QkT3-Rr>uieb$FKVjIR=)E5O9koK@bH4q$L41f~aS!w!s84U@U#y#Tt^v6P z>JLT;xd8_tEJSV5o?efcVuL~x&Yw>R4KnrV1v;~1K#_WLZS6WQD!0)d)E2A*dFYb+ zB)W)EQP&-meoW@QdH-eR%lf60|8Mi)i(&4!NWW(biRo6glVZ%~=&~-P!}GgE+Kx*3 z#kydub4gm%Pfhj+v=eC3Mo`VzSYS5*p0;y&^|xfX=X;bA69Z45Bda>Qz!1`sP}kFN zOr(5Oz6zd8kXVo+ub|60Pu?UA9JGf5HCmT;khXI{zJqQAv*GB$Ta4NteQ+XeTf<1@ zm|)XdxrQ8X*9$Ce$MVn*2}TFeM1lpl`i4B2G-x>QM}pkX;AG4Kv|PZ><>ppofW$cUB2>PFb zJuxxz?Clum1!&7sAB@3E=Lm{Ffp0)QW$(MNHD&Mqi-Zz%1!b{`o6#g?jSFqVedn~Y zekm82sa-j!S;aG_@{F!c7gAlNHQ6l|9w4p+^poGj)ps%nKY{6BGOfN|!=Q<<1+jyc#}7ZEEc?m(BD=M(C;R$8@hK(e&!YmV*=3$Dobx6?;%Y^9{ask@aWIGxKx}$Me z9_6U5z;THX=K2T8v;{uf- z`9E0aTSIDFQ1i;9P*IjBsL6Qf?lez5gE0+B`q=Mwp}$Z&EVf<;p?kiG(IrbEHP#+P zcYx{0x*8$LwZzxo&+H&cMOhc#5Yp|rZ;zRoU3<>hH?tXEc#58%7y`Vz-GVln+e3)` z`CE;)#j3|^7pY~kRAqOeJ&g(k#oe^;;Lwe3XW=) zI=zM-agDEB1)Sd&CFc82?^Dcn-azXEFn{E4wnOCc{^K8zRvIbaBDjEml0T`$_e2&( zk%#jAaLu<6I@!aGWqv!6+2k}It)pgJY9lkCf!RHSGwCw=9#a7l70*~ao&F203<<%M$jdNM z=m;2&l{2)LDwNIALH-p?oYx=L9R=9in9?`VpDFBD0dTA2O`7Ed0o+I#eKr*FV6AYX zT-j#+mxLbzqhezfZlsA%5gezU1wq9>??G#CU{+D~cz2Z9?^#LWK{txt;Vkt2h5aBX z-HqAjnOiS1r}9Sw%(=<^x4rj0dS+|fhZ+UaGxJneWdBJgWi)LnqTZL|g8O0(V@x`m zi2lY@Nxk0u19ScJd~&NUh!aJ07Ok$Gf!U6$ra^WmR0kv7Xg@jc z2|f}k_Exk@nrle6nXr04H>d_aR>G^Q9$Y+)WOEvs^$kxQmubLbL4 z{`j3O4T+ALhsT+s>@cF!!-MBJGwV*Yl+ zuuxQ%kna#-0xAm)%Z~*j`Ybj-EEMPx8b+nS1fUBIYZ!+<17ciNl(>IrY&?PX<|H{l zhZDxeDW-)BO)2;m=#rBZg%09d$)O7uhBAJ1Wj>6qfUd)pDR@;thjEP`76i}+w}3W6 zmHgi5`xgGnckHtG`>m^P(2E7v2vOu-5CqpsZZvNF0@n=xbw@G*zx8#b#(m2*LJ+vo zu9f)j3nGbBz}{BEd{7zsqAEkrd1UAezx(IC_c5%e7>4^4^UdPPJ?+T>of*M>igChZ ziCif0v*(Ij`|;nWv^Z-1-+J>aEAC#O3a)#26lO6KMdd5kUanaAmS@_OPvn2&qnIGZ z#8`2Uj%Ao268Iw#V+Ne542j&z=y^*nlP3W?tt8L~3Ecs*^Zr5&&v*d}-T19T6QcfjuW^*@T`9bury-MeUqnZ_Ma zaWG&EVtiMdHB5pa$%cy0y%mOz`r-kz!4$MW{tYbvB_N2#?uR>l;g{`J(!SD{<~@w= zT(f8Zsfl_6(3u?ufLkr_r<)CV^;Ogpj5&m24}t9{{?%8&Hnj3E`0g<3=})+8{vmJ^ z-vu|Ml9#5Afc45-a8I;TxC}4-UIaHYn{et-PlW@>%B8puwcw@d(zYdq3)Z>OY@M^%IJK zh5luI&a3jR*Fn@4ox?wE!68r&{~Q{O=AwJ}XD*lyLh;XZw0z6t$y>J`t!;{;-yt;9pJyo%2rjkAW-sO#HN1*_%}6h_7O!Vt_xrK zVi+MXg_SoCtDysi2=2O~$X*h(V|BQ)ZON8Qb9JAJt$!tF7PvEeouqs8%1Bq58XS~C6x>XE-Jl-&|VK2|7}-^2g8GxUJ9Mm`>o z2rt40^1I|$eo{Nbbos-mR6g)8*VT|a<7((vqEZ^=k#AYGE0-ns`Wzd4y@i$CCVx0Z zQdk)3g?faUB_r60x)~*_32X;jO%}pQF+xdc%0y#P7Gz(xdMDo zk{4j8O)>5B{l60`4&U53JWM@>tNLj=)W9iN3QyH?j$+=t$9M6Er)?X)=ZO=-2MK(- z;29<25W%?-V@61dt!^w^e10p<|M1|;Pfi!gVP1#JCD_bWr66U-#G$& zr)mwppW`!92qU2)r4ZBsccHVMm^qYJ)s*GSYJ5f*9;htniHl%Xyt^xu=5@vAiv^jo z0^Sf@6X}UBg>s&9rrDC}wyR~PR9mX|Ot)Q-MOy4DJ1krtUZYPG3r0gVRDf3UwdcYSTb=Th+hA!U1<@|yYsMWv)`Bw^} z8EEgYOMIp|TE_aE`#9M^W23y(!KR`X144l(so56&gKq@{Ok?ul0|x%i1VPwv7<9)N zl%VAlgYKw5#o+ZD7y)+-xOA9cf%XzYasQZ0FoDHh27u`z3PEQ0SguUBala zcR*Xrjb{(TIvzCJ9Y!b)He66H&jT)UxFw83$=3)gVS#{+(s$E5dtGNa9=)QNZ zatCW(JV$5us67TZ(-(|_2AG4vzeYm5Rs{8$2Mu*?s{AivU%`ZGGY=no2-ZS&2#lO- zTueB(hBHdVuKQ5}gpw&b+5pp`;QEEVjG`)+quD4}6!Qc-(DAYX+7*F%8vr@_(SM|U0XylFL_AKeKsZzA`9@tHS4CKE9F57|YU#j{zLm?}C$ zL1L;oH_`5JHU>bkwzg;H>dnVblrwLds5G)L5FovhV8jNAB!>~e0 z)JYANYB25vqx(t$CdbIj`Ull%tmeLveCuaMUUWY3w+o8_qm6-|8v zga>DELy%*&v-$MF`}ACpUsdyC$y4!-FKGOisi-&WVh5A?4VgtaE$UV#9sfyGde$Y` z(aD;Q3^NDNsU|fdSiT7xV;5aV94YC+JlCpixTuUFcszZJ+Ku|fYgAP#ADws{MCl

L*UoT*r7^-0Np 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 literal 0 HcmV?d00001 diff --git a/css/lib/mathquill/font/Symbola.woff b/css/lib/mathquill/font/Symbola.woff new file mode 100755 index 0000000000000000000000000000000000000000..b9bba23986a4938f11ae4f788f7bf1cdb5081e86 GIT binary patch literal 474392 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 z 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 lVJ=j8!1yp8J?-YfKM#4~|~2u172g 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

yqN7pL*mp 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 zDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_ zpMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj) z|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7> z_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#N zg8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FR zDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_ zpMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj) z|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FRDfpj)|0(#Ng8wP_pMw7> z_@9FRDfpj)|0(#Ng8wP_pMw7>_@9FR8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7 zf&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ z8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur! zpMn1w_@80^pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w z_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7 zf&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ z8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur! zpMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p z{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w z_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7f&Ur!pMn1w_@9CQ8Tg-p{~7q7 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 literal 0 HcmV?d00001 diff --git a/css/lib/mathquill/font/Symbola.ttf b/css/lib/mathquill/font/Symbola.ttf new file mode 100755 index 0000000000000000000000000000000000000000..52337df9be976d87f59c69f68ed4721affbee278 GIT binary patch literal 890008 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

; }, From 34a91bb6f5877bc416f17026f667cf9134a1f764 Mon Sep 17 00:00:00 2001 From: hsJma Date: Fri, 19 Feb 2016 15:30:09 +0800 Subject: [PATCH 052/156] update frac button --- build/perseus-1.js | 6 +----- src/components/tex-buttons.jsx | 4 +--- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index d218c9a4c7..124268b21d 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -6920,11 +6920,7 @@ var buttons = [ // fraction, typing "/" puts it in the numerator. If not, typing // "/" does nothing. In that case, enter a \frac. function(input) { - var contents = input.latex(); - input.typedText("/"); - if (input.latex() === contents) { - input.cmd("\\frac"); - } + input.cmd("\\frac"); } ];} ], diff --git a/src/components/tex-buttons.jsx b/src/components/tex-buttons.jsx index d8fec11e84..5e23b30cfd 100644 --- a/src/components/tex-buttons.jsx +++ b/src/components/tex-buttons.jsx @@ -36,9 +36,7 @@ var buttons = [ // "/" does nothing. In that case, enter a \frac. input => { var contents = input.latex(); - input.typedText("/"); - if (input.latex() === contents) { - input.cmd("\\frac"); + input.cmd("\\frac"); } } ] From f1300317fef5652f67d9d4bb27150a727a80d022 Mon Sep 17 00:00:00 2001 From: hsJma Date: Mon, 22 Feb 2016 16:17:15 +0800 Subject: [PATCH 053/156] incomplete easybuttons function --- build/perseus-1.js | 372 ++++++++------------------------------------- 1 file changed, 63 insertions(+), 309 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index 124268b21d..cd060475d1 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -5626,7 +5626,7 @@ var InputWithExamples = React.createClass({displayName: 'InputWithExamples', buttonSet: React.PropTypes.string, buttonsVisible: React.PropTypes.oneOf(['always', 'never', 'focused']), onFocus: React.PropTypes.func, - onBlur: React.PropTypes.func + onBlur: React.PropTypes.func, }, getDefaultProps: function() { @@ -5775,7 +5775,8 @@ var MathInput = React.createClass({displayName: 'MathInput', convertDotToTimes: PT.bool, buttonsVisible: PT.oneOf(['always', 'never', 'focused']), onFocus: PT.func, - onBlur: PT.func + onBlur: PT.func, + easybuttons: PT.bool }, render: function() { @@ -5793,7 +5794,9 @@ var MathInput = React.createClass({displayName: 'MathInput', buttons = TexButtons( {className:"math-input-buttons absolute", convertDotToTimes:this.props.convertDotToTimes, - onInsert:this.insert} ); + onInsert:this.insert, + easybuttons: this.props.easybuttons + } ); } return React.DOM.div( {style:{display: "inline-block"}}, @@ -5947,7 +5950,7 @@ var MathInput = React.createClass({displayName: 'MathInput', // TODO(alex): Add an option to disallow variables, in // which case 'x' should get converted to '\\times' if (this.props.convertDotToTimes) { - value = value.replace(/\\cdot/g, "\\times"); + value = value.replace(/\\cdot/g, "haha"); } else { value = value.replace(/\\times/g, "\\cdot"); } @@ -6898,32 +6901,33 @@ var symbStyle = { fontSize: "130%" }; // on the page rather than reusing an instance (which will cause an error). // Also, it's useful for things which might look different depending on the // props. -var buttons = [ - // basics +var basicbuttons = [ [ - function() {return [React.DOM.span( {style:slightlyBig}, "+"), "+"];}, - function() {return [React.DOM.span( {style:prettyBig}, "-"), "-"];}, + function() {return [React.DOM.span( {style:slightlyBig}, "+"), "+"];}, + function() {return [React.DOM.span( {style:prettyBig}, "-"), "-"];}, - // TODO(joel) - display as \cdot when appropriate - function(props) { - if (props.convertDotToTimes) { - return [TeX( {style:prettyBig}, "\\times"), "\\times"]; - } else { - return [TeX( {style:prettyBig}, "\\cdot"), "\\cdot"]; - } - }, - function() {return [ - TeX( {style:prettyBig}, "\\frac{□}{□}"), + // TODO(joel) - display as \cdot when appropriate + function(props) { + if (props.convertDotToTimes) { + return [TeX( {style:prettyBig}, "\\times"), "\\times"]; + } else { + return [TeX( {style:prettyBig}, "\\cdot"), "\\cdot"]; + } + }, + function() {return [ + TeX( {style:prettyBig}, "\\frac{□}{□}"), + function(input) { + input.cmd("\\frac"); + } + ];} + ] +]; - // If there's something in the input that can become part of a - // fraction, typing "/" puts it in the numerator. If not, typing - // "/" does nothing. In that case, enter a \frac. - function(input) { - input.cmd("\\frac"); - } - ];} - ], +var buttons = [ + + // basics + basicbuttons[0], // relations [ @@ -6964,12 +6968,16 @@ var buttons = [ ]; + var TexButtons = React.createClass({displayName: 'TexButtons', propTypes: { - onInsert: React.PropTypes.func.isRequired + onInsert: React.PropTypes.func.isRequired, + easybuttons: React.PropTypes.bool }, render: function() { - var buttonRows = _(buttons).map(function(row) {return row.map(function(symbGen) { + var buttonSet = this.props.easybuttons? basicbuttons: buttons; + + var buttonRows = _(buttonSet).map(function(row) {return row.map(function(symbGen) { // create a (component, thing we should send to mathquill) pair var symbol = symbGen(this.props); return React.DOM.button( {onClick:function() {return this.props.onInsert(symbol[1]);}.bind(this), @@ -13592,13 +13600,15 @@ var Expression = React.createClass({displayName: 'Expression', functions: React.PropTypes.arrayOf(React.PropTypes.string), buttonsVisible: React.PropTypes.oneOf(['always', 'never', 'focused']), enabledFeatures: EnabledFeatures.propTypes, - apiOptions: ApiOptions.propTypes + apiOptions: ApiOptions.propTypes, + easybuttons: React.PropTypes.bool }, getDefaultProps: function() { return { value: "", times: false, + easybuttons: false, functions: [], onFocus: function() { }, onBlur: function() { }, @@ -13682,7 +13692,9 @@ var Expression = React.createClass({displayName: 'Expression', convertDotToTimes:this.props.times, buttonsVisible:this.props.buttonsVisible || "focused", onFocus:this._handleFocus, - onBlur:this._handleBlur} ), + onBlur:this._handleBlur, + easybuttons:this.props.easybuttons + } ), this.state.showErrorTooltip && errorTooltip ); } @@ -13792,282 +13804,7 @@ _.extend(Expression, { } }); -// The old, plain-text input expression widget -var OldExpression = React.createClass({displayName: 'OldExpression', - propTypes: { - value: React.PropTypes.string, - times: React.PropTypes.bool, - functions: React.PropTypes.arrayOf(React.PropTypes.string), - enabledFeatures: EnabledFeatures.propTypes - }, - - getDefaultProps: function() { - return { - value: "", - times: false, - functions: [], - onFocus: function() { }, - onBlur: function() { }, - enabledFeatures: EnabledFeatures.defaults, - apiOptions: ApiOptions.defaults - }; - }, - - getInitialState: function() { - return { - lastParsedTex: "" - }; - }, - - parse: function(value, props) { - // TODO(jack): Disable icu for content creators here, or - // make it so that solution answers with ','s or '.'s work - var options = _.pick(props || this.props, "functions"); - if (icu && icu.getDecimalFormatSymbols) { - _.extend(options, icu.getDecimalFormatSymbols()); - } - return KAS.parse(value, options); - }, - - componentWillMount: function() { - this.updateParsedTex(this.props.value); - }, - - componentWillReceiveProps: function(nextProps) { - this.updateParsedTex(nextProps.value, nextProps); - }, - - render: function() { - var result = this.parse(this.props.value); - var shouldShowExamples = this.props.enabledFeatures.toolTipFormats; - - return React.DOM.span( {className:"perseus-widget-expression-old"}, - InputWithExamples( - {ref:"input", - value:this.props.value, - onKeyDown:this.handleKeyDown, - onKeyPress:this.handleKeyPress, - onChange:this.handleChange, - examples:this.examples(), - shouldShowExamples:shouldShowExamples, - interceptFocus:this._getInterceptFocus(), - onFocus:this._handleFocus, - onBlur:this._handleBlur} ), - React.DOM.span( {className:"output"}, - React.DOM.span( {className:"tex", - style:{opacity: result.parsed ? 1.0 : 0.5}}, - TeX(null, this.state.lastParsedTex) - ), - React.DOM.span( {className:"placeholder"}, - React.DOM.span( {ref:"error", className:"error", - style:{display: "none"}}, - React.DOM.span( {className:"buddy"} ), - React.DOM.span( {className:"message"}, React.DOM.span(null, - ERROR_MESSAGE - )) - ) - ) - ) - ); - }, - - _handleFocus: function() { - this.props.onFocus([], this.refs.input.getInputDOMNode()); - }, - - _handleBlur: function() { - this.props.onBlur([], this.refs.input.getInputDOMNode()); - }, - - _getInterceptFocus: function() { - return this.props.apiOptions.interceptInputFocus ? - this._interceptFocus : null; - }, - - _interceptFocus: function() { - var interceptProp = this.props.apiOptions.interceptInputFocus; - if (interceptProp) { - return interceptProp( - this.props.widgetId, - this.refs.input.getInputDOMNode() - ); - } - }, - - errorTimeout: null, - - componentDidMount: function() { - this.componentDidUpdate(); - }, - - componentDidUpdate: function() { - clearTimeout(this.errorTimeout); - if (this.parse(this.props.value).parsed) { - this.hideError(); - } else { - this.errorTimeout = setTimeout(this.showError, 2000); - } - }, - - componentWillUnmount: function() { - clearTimeout(this.errorTimeout); - }, - - showError: function() { - var apiResult = this.props.apiOptions.onInputError( - null, // reserved for some widget identifier - this.props.value, - ERROR_MESSAGE - ); - if (apiResult !== false) { - var $error = $(this.refs.error.getDOMNode()); - if (!$error.is(":visible")) { - $error.css({ top: 50, opacity: 0.1 }).show() - .animate({ top: 0, opacity: 1.0 }, 300); - } - } else { - this.hideError(); - } - }, - - hideError: function() { - var $error = $(this.refs.error.getDOMNode()); - if ($error.is(":visible")) { - $error.animate({ top: 50, opacity: 0.1 }, 300, function() { - $(this).hide(); - }); - } - }, - - /** - * The keydown handler handles clearing the error timeout, telling - * props.value to update, and intercepting the backspace key when - * appropriate... - */ - handleKeyDown: function(event) { - var input = this.refs.input.getDOMNode(); - var text = input.value; - - var start = input.selectionStart; - var end = input.selectionEnd; - var supported = start !== undefined; - - var which = event.nativeEvent.keyCode; - - if (supported && which === 8 /* backspace */) { - if (start === end && text.slice(start - 1, start + 1) === "()") { - event.preventDefault(); - var val = text.slice(0, start - 1) + text.slice(start + 1); - - // this.props.onChange will update the value for us, but - // asynchronously, making it harder to set the selection - // usefully, so we just set .value directly here as well. - input.value = val; - input.selectionStart = start - 1; - input.selectionEnd = end - 1; - this.props.onChange({value: val}); - } - } - }, - - /** - * ...whereas the keypress handler handles the parentheses because keyCode - * is more useful for actual character insertions (keypress gives 40 for an - * open paren '(' instead of keydown which gives 57, the code for '9'). - */ - handleKeyPress: function(event) { - var input = this.refs.input.getDOMNode(); - var text = input.value; - - var start = input.selectionStart; - var end = input.selectionEnd; - var supported = start !== undefined; - - var which = event.nativeEvent.charCode; - - if (supported && which === 40 /* left paren */) { - event.preventDefault(); - - var val; - if (start === end) { - var insertMatched = _.any([" ", ")", ""], function(val) { - return text.charAt(start) === val; - }); - - val = text.slice(0, start) + - (insertMatched ? "()" : "(") + text.slice(end); - } else { - val = text.slice(0, start) + - "(" + text.slice(start, end) + ")" + text.slice(end); - } - - input.value = val; - input.selectionStart = start + 1; - input.selectionEnd = end + 1; - this.props.onChange({value: val}); - - } else if (supported && which === 41 /* right paren */) { - if (start === end && text.charAt(start) === ")") { - event.preventDefault(); - input.selectionStart = start + 1; - input.selectionEnd = end + 1; - } - } - }, - - handleChange: function(newValue) { - this.props.onChange({value: newValue}); - }, - - focus: function() { - this.refs.input.focus(); - return true; - }, - - toJSON: function(skipValidation) { - return {value: this.props.value}; - }, - updateParsedTex: function(value, props) { - var result = this.parse(value, props); - var options = _.pick(this.props, "times"); - if (result.parsed) { - this.setState({lastParsedTex: result.expr.asTex(options)}); - } - }, - - simpleValidate: function(rubric, onInputError) { - onInputError = onInputError || function() { }; - return Expression.validate(this.toJSON(), rubric, onInputError); - }, - - examples: function() { - var mult = $._("For $2\\cdot2$, enter **2*2**"); - if (this.props.times) { - mult = mult.replace(/\\cdot/g, "\\times"); - } - - return [ - $._("**Acceptable Formats**"), - mult, - $._("For $3y$, enter **3y** or **3*y**"), - $._("For $\\dfrac{1}{x}$, enter **1/x**"), - $._("For $\\dfrac{1}{xy}$, enter **1/(xy)**"), - $._("For $\\dfrac{2}{x + 3}$, enter **2/(x + 3)**"), - $._("For $x^{y}$, enter **x^y**"), - $._("For $x^{2/3}$, enter **x^(2/3)**"), - $._("For $\\sqrt{x}$, enter **sqrt(x)**"), - $._("For $\\pi$, enter **pi**"), - $._("For $\\sin \\theta$, enter **sin(theta)**"), - $._("For $\\le$ or $\\ge$, enter **<=** or **>=**"), - $._("For $\\neq$, enter **=/=**") - ]; - }, - - statics: { - displayMode: "block" - } -}); var ExpressionEditor = React.createClass({displayName: 'ExpressionEditor', mixins: [Changeable, JsonifyProps], @@ -14077,7 +13814,8 @@ var ExpressionEditor = React.createClass({displayName: 'ExpressionEditor', form: React.PropTypes.bool, simplify: React.PropTypes.bool, times: React.PropTypes.bool, - functions: React.PropTypes.arrayOf(React.PropTypes.string) + functions: React.PropTypes.arrayOf(React.PropTypes.string), + easybuttons: React.PropTypes.bool }, getDefaultProps: function() { @@ -14086,7 +13824,8 @@ var ExpressionEditor = React.createClass({displayName: 'ExpressionEditor', form: false, simplify: false, times: false, - functions: ["f", "g", "h"] + functions: ["f", "g", "h"], + easybuttons: false }; }, @@ -14121,7 +13860,8 @@ var ExpressionEditor = React.createClass({displayName: 'ExpressionEditor', times: this.props.times, functions: this.props.functions, onChange: function(newProps) {return this.change(newProps);}.bind(this), - buttonsVisible: "never" + buttonsVisible: "never", + easybuttons: this.props.easybuttons }; var expression = this.state.isTex ? Expression : OldExpression; @@ -14133,10 +13873,12 @@ var ExpressionEditor = React.createClass({displayName: 'ExpressionEditor', "正確答案:",' ', expression(expressionProps) )), + this.state.isTex && TexButtons( {className:"math-input-buttons", convertDotToTimes:this.props.times, - onInsert:this.handleTexInsert} ), + onInsert:this.handleTexInsert, + easybuttons: this.props.easybuttons} ), React.DOM.div(null, PropCheckBox( @@ -14177,6 +13919,18 @@ var ExpressionEditor = React.createClass({displayName: 'ExpressionEditor', ) ), + React.DOM.div(null, + PropCheckBox( + { + easybuttons: this.props.easybuttons, + onChange:this.props.onChange, + labelAlignment:"right", + label:"小學生專用簡化版選項",}), + InfoTip(null, + React.DOM.p(null, "只顯示加減乘除、分數按鈕。") + ) + ), + React.DOM.div(null, React.DOM.label(null, "函數名稱: ", From f85772add29d49c67016aec0a2cc71311c62dcd7 Mon Sep 17 00:00:00 2001 From: hsJma Date: Mon, 22 Feb 2016 17:57:01 +0800 Subject: [PATCH 054/156] fix easybuttons function --- build/perseus-1.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index cd060475d1..f3f6b307cf 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -13971,7 +13971,7 @@ module.exports = { }, editor: ExpressionEditor, transform: function(editorProps) { - return _.pick(editorProps, "times", "functions"); + return _.pick(editorProps, "times", "functions", "easybuttons"); }, hidden: false }; From 84ccea42ae038f11fba46ea1f65a0b2501144aa6 Mon Sep 17 00:00:00 2001 From: hsJma Date: Thu, 25 Feb 2016 15:46:33 +0800 Subject: [PATCH 055/156] update math-input according to perseus-1 --- src/components/math-input.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/math-input.jsx b/src/components/math-input.jsx index 8a04a7fd4e..ec4de54f65 100644 --- a/src/components/math-input.jsx +++ b/src/components/math-input.jsx @@ -16,7 +16,8 @@ var MathInput = React.createClass({ convertDotToTimes: PT.bool, buttonsVisible: PT.oneOf(['always', 'never', 'focused']), onFocus: PT.func, - onBlur: PT.func + onBlur: PT.func, + easybuttons: PT.bool }, render: function() { @@ -34,7 +35,8 @@ var MathInput = React.createClass({ buttons = ; + onInsert={this.insert} + easybuttons={this.props.easybuttons />; } return
From 57625ad0bca0a8b884874fc4381a304f7caa9078 Mon Sep 17 00:00:00 2001 From: hsJma Date: Thu, 25 Feb 2016 15:56:51 +0800 Subject: [PATCH 056/156] update tex-buttons according to perseus-1 --- src/components/tex-buttons.jsx | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/components/tex-buttons.jsx b/src/components/tex-buttons.jsx index 5e23b30cfd..19fcc7b21e 100644 --- a/src/components/tex-buttons.jsx +++ b/src/components/tex-buttons.jsx @@ -13,9 +13,9 @@ var symbStyle = { fontSize: "130%" }; // on the page rather than reusing an instance (which will cause an error). // Also, it's useful for things which might look different depending on the // props. -var buttons = [ - // basics +var basicbuttons = [ + [ () => [+, "+"], () => [-, "-"], @@ -40,7 +40,14 @@ var buttons = [ } } ] - ], + ] + +]; + +var buttons = [ + + // basics + basicbuttons[0], // relations [ @@ -83,10 +90,13 @@ var buttons = [ var TexButtons = React.createClass({ propTypes: { - onInsert: React.PropTypes.func.isRequired + onInsert: React.PropTypes.func.isRequired, + easybuttons: React.PropTypes.bool }, render: function() { - var buttonRows = _(buttons).map(row => row.map(symbGen => { + var buttonSet = this.props.easybuttons? basicbuttons: buttons; + + var buttonRows = _(buttonSet).map(row => row.map(symbGen => { // create a (component, thing we should send to mathquill) pair var symbol = symbGen(this.props); return + ); + }, + getInitialState: function() { + return { + recognition: null, + recognizing: false + } + }, + + startRecognize: function() { + console.log(this.state.recognizing); + if(this.state.recognizing==false){ + this.state.recognition.start(); + } + }, + + componentDidMount: function() { + var self = this; + var os = self.getMobileOperatingSystem(); + console.log(self.hasSpeechRecognition()); + + if(self.hasSpeechRecognition()){ + var recognition = new webkitSpeechRecognition(); + recognition.lang = 'en-US'; + recognition.continuous = false; + recognition.interimResults = true; + self.setState({recognizing: false}); + recognition.onstart = function() { + self.setState({recognizing: true}); + console.log('recognition start'); + }; + recognition.onend = function() { + self.setState({recognizing: false}); + console.log('recognition end'); + }; + recognition.onresult = function(event) { + self.setState({recognizing: false}); + console.log('recognition result'); + console.log(event); + for (var i = event.resultIndex; i < event.results.length; i++) { + if (event.results[i].isFinal) { + self.props.setValue(event.results[i][0].transcript); + } + } + } + self.setState({recognition: recognition}); + } + }, + + getMobileOperatingSystem: function() { + var userAgent = navigator.userAgent || navigator.vendor || window.opera; + if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) { + return 'iOS'; + } else if (userAgent.match(/Android/i)) { + return 'Android'; + } else { + return userAgent; + } + }, + + hasSpeechRecognition: function() { + return ('webkitSpeechRecognition' in window); + }, + + statics: { + displayMode: "inline-block" + } +}); + +/** + * This is the widget's renderer. It shows up in the right column + * in test.html, and is what is visible to users, and where + * users enter their answers. + */ +var SpeakingTextInput = React.createClass({ + propTypes: { + value: React.PropTypes.string + }, + + getDefaultProps: function() { + return {value: ""}; + }, + + getInitialState: function() { + return {value: this.props.value} + }, + + setValue: function(val) { + this.setState({value: val}); + this.change("value")(val); + }, + + /** + * Changeling creates this.change() to tell our parent to update our props + * + * JsonifyProps creates this.toJSON() which returns the state of the widget + * for checking the answer in simpleValidate + */ + mixins: [ + Changeable, JsonifyProps + ], + + render: function() { + return ( +
+ + +
+ ); + }, + + /** + * Widgets that are focusable should add a focus method that returns + * true if focusing succeeded. The first such widget found will be + * focused on page load. + */ + focus: function() { + this.refs.input.focus(); + return true; + }, + + /** + * simpleValidate is called for grading. Rubric is the result of calling + * toJSON() on the editor that created this widget. + * + * Should return an object representing the grading result, such as + * { + * type: "points", + * earned: 1, + * total: 1, + * message: null + * } + */ + simpleValidate: function(rubric) { + return SpeakingTextInput.validate(this.toJSON(), rubric); + }, + + statics: { + displayMode: "inline-block" + } +}); + +/** + * This is the widget's grading function + */ +_.extend(SpeakingTextInput, { + /** + * simpleValidate generally defers to this function + * + * state is usually the result of toJSON on the widget + * rubric is the result of calling toJSON() on the editor + */ + parseAnswer: function(s) { + var arr = s.split(" "); + var parsedArr = []; + for (var i=0; i 0) { + parsedArr.push(arr[i].toLowerCase()); + } + } + return parsedArr; + }, + + arrIsEqual: function(arr1, arr2) { + if (arr1.length !== arr2.length) + return false; + for (var i = 0, len = arr1.length; i < len; i++) { + if (arr1[i] !== arr2[i]) { + return false; + } + } + return true; + }, + + validate: function(state, rubric) { + var userAns = SpeakingTextInput.parseAnswer(state.value); + var correntAns = SpeakingTextInput.parseAnswer(rubric.correct); + console.log("user"); + console.log(userAns); + console.log("corrent"); + console.log(correntAns); + if (userAns.length == 0) { + return {type: "invalid", message: "看來你什麼都沒念!請重新再唸一次!"}; + } else if (SpeakingTextInput.arrIsEqual(userAns, correntAns)) { + return {type: "points", earned: 1, total: 1, message: null}; + } else { + return {type: "points", earned: 0, total: 1, message: null}; + } + } +}); + +/** + * This is the widget's editor. This is what shows up on the left side + * of the screen in test.html. Only the question writer sees this. + */ +var SpeakingTextInputEditor = React.createClass({ + mixins: [ + Changeable, JsonifyProps + ], + + getDefaultProps: function() { + return {correct: ""}; + }, + + handleAnswerChange: function(event) { + this.change({correct: event.target.value}); + }, + + render: function() { + return
+ +
; + }, + + focus: function() { + this.refs.input.focus(); + return true; + } +}); + +module.exports = { + name: "speaking-text-input", + displayName: "英文口說文字框", + widget: SpeakingTextInput, + editor: SpeakingTextInputEditor, + // transform: propTransform +}; From e99c0bcafc805eda2e7c3cf3050ee01320020b88 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Tue, 19 Jul 2016 16:01:39 +0800 Subject: [PATCH 091/156] hide button when speech api is not available --- src/widgets/speaking-text-input.jsx | 45 +++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index 5e77c439ef..9c9fa159be 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -13,13 +13,11 @@ var TextInput = React.createClass({ }, pasteValue: function(e) { - console.log("paste"); e.preventDefault(); return false; }, keypressValue: function(e) { - console.log("keypress"); e.preventDefault(); return false; }, @@ -30,12 +28,12 @@ var TextInput = React.createClass({ }, changeValue: function(e) { - // // Translating from the js event e to the value - // // of the textbox to send to onChange + // Chrome Speech API if(e.target.value){ console.log(e.target.value); this.props.setValue(e.target.value); } + // iOS Siri Input else{ console.log(this.refs.input.value); this.props.setValue(this.refs.input.value); @@ -47,21 +45,38 @@ var TextInput = React.createClass({ } }); +var StatusSpan = React.createClass({ + render : function() { + return ( + {this.props.text} + ) + } +}); + var SpeakingBtn = React.createClass({ render: function() { return ( - +
+ {this.state.recognition ? + + : false} + + +
); }, getInitialState: function() { return { recognition: null, - recognizing: false + recognizing: false, + status: "", } }, startRecognize: function() { - console.log(this.state.recognizing); if(this.state.recognizing==false){ this.state.recognition.start(); } @@ -70,20 +85,21 @@ var SpeakingBtn = React.createClass({ componentDidMount: function() { var self = this; var os = self.getMobileOperatingSystem(); - console.log(self.hasSpeechRecognition()); - if(self.hasSpeechRecognition()){ var recognition = new webkitSpeechRecognition(); recognition.lang = 'en-US'; recognition.continuous = false; recognition.interimResults = true; self.setState({recognizing: false}); + self.setState({status: "請按開始"}); recognition.onstart = function() { self.setState({recognizing: true}); + self.setState({status: "辨識中"}); console.log('recognition start'); }; recognition.onend = function() { self.setState({recognizing: false}); + self.setState({status: "辨識完成"}); console.log('recognition end'); }; recognition.onresult = function(event) { @@ -98,6 +114,17 @@ var SpeakingBtn = React.createClass({ } self.setState({recognition: recognition}); } + else{ + if(os=='iOS'){ + self.setState({status: "請用 Siri 語音輸入"}); + } + else if (os=='Android') { + self.setState({status: "請用 Google 語音輸入"}); + } + else{ + self.setState({status: "請用 Chrome 瀏覽器"}); + } + } }, getMobileOperatingSystem: function() { From ba041d1cf30e3611053162d8d0d9a3cd1d5b0328 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Wed, 20 Jul 2016 17:52:27 +0800 Subject: [PATCH 092/156] add voice widget --- src/all-widgets.js | 3 +- src/editor.jsx | 2 +- src/widgets/speaking-voice.jsx | 217 +++++++++++++++++++++++++++++++++ 3 files changed, 220 insertions(+), 2 deletions(-) create mode 100644 src/widgets/speaking-voice.jsx diff --git a/src/all-widgets.js b/src/all-widgets.js index cbc4a14044..6324a2aead 100644 --- a/src/all-widgets.js +++ b/src/all-widgets.js @@ -22,7 +22,8 @@ _.each([ require("./widgets/table.jsx"), require("./widgets/transformer.jsx"), require("./widgets/image.jsx"), - require("./widgets/speaking-text-input.jsx") + require("./widgets/speaking-text-input.jsx"), + require("./widgets/speaking-voice.jsx") ], function(widget) { Widgets.register(widget.name, _.omit(widget, "name")); }); diff --git a/src/editor.jsx b/src/editor.jsx index 47bfd090b3..a7b9775392 100644 --- a/src/editor.jsx +++ b/src/editor.jsx @@ -15,7 +15,7 @@ var widgetsInEditor = ['image', 'categorizer', 'dropdown', 'expression', 'lights-puzzle', 'measurer', 'number-line', 'iframe', 'numeric-input', 'plotter', 'radio', 'sorter', 'table', 'transformer', 'matcher', - 'speaking-text-input']; + 'speaking-text-input', 'speaking-voice']; var WidgetSelect = React.createClass({ handleChange: function(e) { diff --git a/src/widgets/speaking-voice.jsx b/src/widgets/speaking-voice.jsx new file mode 100644 index 0000000000..8773d9c6cf --- /dev/null +++ b/src/widgets/speaking-voice.jsx @@ -0,0 +1,217 @@ +/** @jsx React.DOM */ + +var React = require('react'); +var Changeable = require("../mixins/changeable.jsx"); +var JsonifyProps = require("../mixins/jsonify-props.jsx"); +var ResponsiveVoice = require('../../lib/responsivevoice.js'); +/** + * This is the widget's renderer. It shows up in the right column + * in test.html, and is what is visible to users, and where + * users enter their answers. + */ +var SpeakingVoice = React.createClass({ + // propTypes: { + // value: React.PropTypes.string + // }, + // + componentDidMount: function() { + this.responsiveVoice = new ResponsiveVoice; + }, + + speak: function() { + this.responsiveVoice.speak( + this.props.voiceText, + this.props.lang, + { + pitch: parseFloat(this.props.pitch), + rate: parseFloat(this.props.rate), + volume: this.props.volume + } + ); + }, + + // getDefaultProps: function() { + // return {value: ""}; + // }, + + // getInitialState: function() { + // return {r: null} + // }, + // + // setValue: function(val) { + // this.setState({value: val}); + // this.change("value")(val); + // }, + + mixins: [ + Changeable, JsonifyProps + ], + + render: function() { + return ( +
+ {this.props.voiceText} + +
+ ); + }, + + /** + * Widgets that are focusable should add a focus method that returns + * true if focusing succeeded. The first such widget found will be + * focused on page load. + */ + focus: function() { + this.refs.input.focus(); + return true; + }, + + /** + * simpleValidate is called for grading. Rubric is the result of calling + * toJSON() on the editor that created this widget. + * + * Should return an object representing the grading result, such as + * { + * type: "points", + * earned: 1, + * total: 1, + * message: null + * } + */ + simpleValidate: function(rubric) { + return { + type: "points", + earned: 1, + total: 1, + message: null + }; + }, + + statics: { + displayMode: "inline-block" + } +}); + +/** + * This is the widget's grading function + */ +_.extend(SpeakingVoice, { + /** + * simpleValidate generally defers to this function + * + * state is usually the result of toJSON on the widget + * rubric is the result of calling toJSON() on the editor + */ + +}); + +/** + * This is the widget's editor. This is what shows up on the left side + * of the screen in test.html. Only the question writer sees this. + */ +var SpeakingVoiceEditor = React.createClass({ + mixins: [ + Changeable, JsonifyProps + ], + + getDefaultProps: function() { + return { + voiceText: "", + pitch: "1.0", + rate: "1.0", + volume: "1.0", + lang: "US English Female" + } + }, + + getInitialState: function() { + return { + voiceText: this.props.voiceText, + pitch: this.props.pitch, + rate: this.props.rate, + volume: this.props.volume, + lang: this.props.lang + } + }, + + pitchChange: function(event) { + this.change({pitch: event.target.value}); + this.setState({pitch: event.target.value}); + }, + + voiceTextChange: function(event) { + this.change({voiceText: event.target.value}); + this.setState({voiceText: event.target.value}); + }, + + rateChange: function(event) { + this.change({rate: event.target.value}); + this.setState({rate: event.target.value}); + }, + + langChange: function(event) { + this.change({lang: event.target.value}); + this.setState({lang: event.target.value}); + }, + + render: function() { + return
+
+ +
+
+ +
+
+ +
+
+ +
+
; + }, + + focus: function() { + this.refs.input.focus(); + return true; + } +}); + +module.exports = { + name: "speaking-voice", + displayName: "Speaking Voice", + widget: SpeakingVoice, + // Let's not expose it to all content creators yet + hidden: false, + editor: SpeakingVoiceEditor +}; From 7a90e2d2163abded063a769c2d1919c7d83dbf1c Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Thu, 21 Jul 2016 15:19:44 +0800 Subject: [PATCH 093/156] add js lib --- lib/responsivevoice.js | 67 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 lib/responsivevoice.js diff --git a/lib/responsivevoice.js b/lib/responsivevoice.js new file mode 100644 index 0000000000..41166a74fd --- /dev/null +++ b/lib/responsivevoice.js @@ -0,0 +1,67 @@ +/* + ResponsiveVoice JS v1.4.7 + + (c) 2015 LearnBrite + + License: http://responsivevoice.org/license +*/ +if("undefined"!=typeof responsiveVoice)console.log("ResponsiveVoice already loaded"),console.log(responsiveVoice);else var ResponsiveVoice=function(){var a=this;a.version="1.4.7";console.log("ResponsiveVoice r"+a.version);a.responsivevoices=[{name:"UK English Female",flag:"gb",gender:"f",voiceIDs:[3,5,1,6,7,171,201,8]},{name:"UK English Male",flag:"gb",gender:"m",voiceIDs:[0,4,2,75,202,159,6,7]},{name:"US English Female",flag:"us",gender:"f",voiceIDs:[39,40,41,42,43,173,205,204,44]},{name:"Arabic Male", +flag:"ar",gender:"m",voiceIDs:[96,95,97,196,98],deprecated:!0},{name:"Arabic Female",flag:"ar",gender:"f",voiceIDs:[96,95,97,196,98]},{name:"Armenian Male",flag:"hy",gender:"f",voiceIDs:[99]},{name:"Australian Female",flag:"au",gender:"f",voiceIDs:[87,86,5,201,88]},{name:"Brazilian Portuguese Female",flag:"br",gender:"f",voiceIDs:[124,123,125,186,223,126]},{name:"Chinese Female",flag:"cn",gender:"f",voiceIDs:[58,59,60,155,191,231,61]},{name:"Czech Female",flag:"cz",gender:"f",voiceIDs:[101,100,102, +197,103]},{name:"Danish Female",flag:"dk",gender:"f",voiceIDs:[105,104,106,198,107]},{name:"Deutsch Female",flag:"de",gender:"f",voiceIDs:[27,28,29,30,31,78,170,199,32]},{name:"Dutch Female",flag:"nl",gender:"f",voiceIDs:[219,84,157,158,184,45]},{name:"Finnish Female",flag:"fi",gender:"f",voiceIDs:[90,89,91,209,92]},{name:"French Female",flag:"fr",gender:"f",voiceIDs:[21,22,23,77,178,210,26]},{name:"Greek Female",flag:"gr",gender:"f",voiceIDs:[62,63,80,200,64]},{name:"Hatian Creole Female",flag:"ht", +gender:"f",voiceIDs:[109]},{name:"Hindi Female",flag:"hi",gender:"f",voiceIDs:[66,154,179,213,67]},{name:"Hungarian Female",flag:"hu",gender:"f",voiceIDs:[9,10,81,214,11]},{name:"Indonesian Female",flag:"id",gender:"f",voiceIDs:[111,112,180,215,113]},{name:"Italian Female",flag:"it",gender:"f",voiceIDs:[33,34,35,36,37,79,181,216,38]},{name:"Japanese Female",flag:"jp",gender:"f",voiceIDs:[50,51,52,153,182,217,53]},{name:"Korean Female",flag:"kr",gender:"f",voiceIDs:[54,55,56,156,183,218,57]},{name:"Latin Female", +flag:"va",gender:"f",voiceIDs:[114]},{name:"Norwegian Female",flag:"no",gender:"f",voiceIDs:[72,73,221,74]},{name:"Polish Female",flag:"pl",gender:"f",voiceIDs:[120,119,121,185,222,122]},{name:"Portuguese Female",flag:"br",gender:"f",voiceIDs:[128,127,129,187,224,130]},{name:"Romanian Male",flag:"ro",gender:"m",voiceIDs:[151,150,152,225,46]},{name:"Russian Female",flag:"ru",gender:"f",voiceIDs:[47,48,83,188,226,49]},{name:"Slovak Female",flag:"sk",gender:"f",voiceIDs:[133,132,134,227,135]},{name:"Spanish Female", +flag:"es",gender:"f",voiceIDs:[19,16,17,18,20,76,174,207,15]},{name:"Spanish Latin American Female",flag:"es",gender:"f",voiceIDs:[137,136,138,175,208,139]},{name:"Swedish Female",flag:"sv",gender:"f",voiceIDs:[85,148,149,228,65]},{name:"Tamil Male",flag:"hi",gender:"m",voiceIDs:[141]},{name:"Thai Female",flag:"th",gender:"f",voiceIDs:[143,142,144,189,229,145]},{name:"Turkish Female",flag:"tr",gender:"f",voiceIDs:[69,70,82,190,230,71]},{name:"Afrikaans Male",flag:"af",gender:"m",voiceIDs:[93]},{name:"Albanian Male", +flag:"sq",gender:"m",voiceIDs:[94]},{name:"Bosnian Male",flag:"bs",gender:"m",voiceIDs:[14]},{name:"Catalan Male",flag:"catalonia",gender:"m",voiceIDs:[68]},{name:"Croatian Male",flag:"hr",gender:"m",voiceIDs:[13]},{name:"Czech Male",flag:"cz",gender:"m",voiceIDs:[161]},{name:"Danish Male",flag:"da",gender:"m",voiceIDs:[162],deprecated:!0},{name:"Esperanto Male",flag:"eo",gender:"m",voiceIDs:[108]},{name:"Finnish Male",flag:"fi",gender:"m",voiceIDs:[160],deprecated:!0},{name:"Greek Male",flag:"gr", +gender:"m",voiceIDs:[163],deprecated:!0},{name:"Hungarian Male",flag:"hu",gender:"m",voiceIDs:[164]},{name:"Icelandic Male",flag:"is",gender:"m",voiceIDs:[110]},{name:"Latin Male",flag:"va",gender:"m",voiceIDs:[165],deprecated:!0},{name:"Latvian Male",flag:"lv",gender:"m",voiceIDs:[115]},{name:"Macedonian Male",flag:"mk",gender:"m",voiceIDs:[116]},{name:"Moldavian Male",flag:"md",gender:"m",voiceIDs:[117]},{name:"Montenegrin Male",flag:"me",gender:"m",voiceIDs:[118]},{name:"Norwegian Male",flag:"no", +gender:"m",voiceIDs:[166]},{name:"Serbian Male",flag:"sr",gender:"m",voiceIDs:[12]},{name:"Serbo-Croatian Male",flag:"hr",gender:"m",voiceIDs:[131]},{name:"Slovak Male",flag:"sk",gender:"m",voiceIDs:[167],deprecated:!0},{name:"Swahili Male",flag:"sw",gender:"m",voiceIDs:[140]},{name:"Swedish Male",flag:"sv",gender:"m",voiceIDs:[168],deprecated:!0},{name:"Vietnamese Male",flag:"vi",gender:"m",voiceIDs:[146],deprecated:!0},{name:"Welsh Male",flag:"cy",gender:"m",voiceIDs:[147]},{name:"US English Male", +flag:"us",gender:"m",voiceIDs:[0,4,2,6,7,75,159]},{name:"Fallback UK Female",flag:"gb",gender:"f",voiceIDs:[8]}];a.voicecollection=[{name:"Google UK English Male"},{name:"Agnes"},{name:"Daniel Compact"},{name:"Google UK English Female"},{name:"en-GB",rate:.25,pitch:1},{name:"en-AU",rate:.25,pitch:1},{name:"ingl\u00e9s Reino Unido"},{name:"English United Kingdom"},{name:"Fallback en-GB Female",lang:"en-GB",fallbackvoice:!0},{name:"Eszter Compact"},{name:"hu-HU",rate:.4},{name:"Fallback Hungarian", +lang:"hu",fallbackvoice:!0,service:"g2"},{name:"Fallback Serbian",lang:"sr",fallbackvoice:!0},{name:"Fallback Croatian",lang:"hr",fallbackvoice:!0},{name:"Fallback Bosnian",lang:"bs",fallbackvoice:!0},{name:"Fallback Spanish",lang:"es",fallbackvoice:!0},{name:"Spanish Spain"},{name:"espa\u00f1ol Espa\u00f1a"},{name:"Diego Compact",rate:.3},{name:"Google Espa\u00f1ol"},{name:"es-ES",rate:.2},{name:"Google Fran\u00e7ais"},{name:"French France"},{name:"franc\u00e9s Francia"},{name:"Virginie Compact", +rate:.5},{name:"fr-FR",rate:.25},{name:"Fallback French",lang:"fr",fallbackvoice:!0},{name:"Google Deutsch"},{name:"German Germany"},{name:"alem\u00e1n Alemania"},{name:"Yannick Compact",rate:.5},{name:"de-DE",rate:.25},{name:"Fallback Deutsch",lang:"de",fallbackvoice:!0},{name:"Google Italiano"},{name:"Italian Italy"},{name:"italiano Italia"},{name:"Paolo Compact",rate:.5},{name:"it-IT",rate:.25},{name:"Fallback Italian",lang:"it",fallbackvoice:!0},{name:"Google US English",timerSpeed:1},{name:"English United States"}, +{name:"ingl\u00e9s Estados Unidos"},{name:"Vicki"},{name:"en-US",rate:.2,pitch:1,timerSpeed:1.3},{name:"Fallback English",lang:"en-US",fallbackvoice:!0,timerSpeed:0},{name:"Fallback Dutch",lang:"nl",fallbackvoice:!0,timerSpeed:0},{name:"Fallback Romanian",lang:"ro",fallbackvoice:!0},{name:"Milena Compact"},{name:"ru-RU",rate:.25},{name:"Fallback Russian",lang:"ru",fallbackvoice:!0},{name:"Google \u65e5\u672c\u4eba",timerSpeed:1},{name:"Kyoko Compact"},{name:"ja-JP",rate:.25},{name:"Fallback Japanese", +lang:"ja",fallbackvoice:!0},{name:"Google \ud55c\uad6d\uc758",timerSpeed:1},{name:"Narae Compact"},{name:"ko-KR",rate:.25},{name:"Fallback Korean",lang:"ko",fallbackvoice:!0},{name:"Google \u4e2d\u56fd\u7684",timerSpeed:1},{name:"Ting-Ting Compact"},{name:"zh-CN",rate:.25},{name:"Fallback Chinese",lang:"zh-CN",fallbackvoice:!0},{name:"Alexandros Compact"},{name:"el-GR",rate:.25},{name:"Fallback Greek",lang:"el",fallbackvoice:!0,service:"g2"},{name:"Fallback Swedish",lang:"sv",fallbackvoice:!0,service:"g2"}, +{name:"hi-IN",rate:.25},{name:"Fallback Hindi",lang:"hi",fallbackvoice:!0},{name:"Fallback Catalan",lang:"ca",fallbackvoice:!0},{name:"Aylin Compact"},{name:"tr-TR",rate:.25},{name:"Fallback Turkish",lang:"tr",fallbackvoice:!0},{name:"Stine Compact"},{name:"no-NO",rate:.25},{name:"Fallback Norwegian",lang:"no",fallbackvoice:!0,service:"g2"},{name:"Daniel"},{name:"Monica"},{name:"Amelie"},{name:"Anna"},{name:"Alice"},{name:"Melina"},{name:"Mariska"},{name:"Yelda"},{name:"Milena"},{name:"Xander"},{name:"Alva"}, +{name:"Lee Compact"},{name:"Karen"},{name:"Fallback Australian",lang:"en-AU",fallbackvoice:!0},{name:"Mikko Compact"},{name:"Satu"},{name:"fi-FI",rate:.25},{name:"Fallback Finnish",lang:"fi",fallbackvoice:!0,service:"g2"},{name:"Fallback Afrikans",lang:"af",fallbackvoice:!0},{name:"Fallback Albanian",lang:"sq",fallbackvoice:!0},{name:"Maged Compact"},{name:"Tarik"},{name:"ar-SA",rate:.25},{name:"Fallback Arabic",lang:"ar",fallbackvoice:!0,service:"g2"},{name:"Fallback Armenian",lang:"hy",fallbackvoice:!0, +service:"g2"},{name:"Zuzana Compact"},{name:"Zuzana"},{name:"cs-CZ",rate:.25},{name:"Fallback Czech",lang:"cs",fallbackvoice:!0,service:"g2"},{name:"Ida Compact"},{name:"Sara"},{name:"da-DK",rate:.25},{name:"Fallback Danish",lang:"da",fallbackvoice:!0,service:"g2"},{name:"Fallback Esperanto",lang:"eo",fallbackvoice:!0},{name:"Fallback Hatian Creole",lang:"ht",fallbackvoice:!0},{name:"Fallback Icelandic",lang:"is",fallbackvoice:!0},{name:"Damayanti"},{name:"id-ID",rate:.25},{name:"Fallback Indonesian", +lang:"id",fallbackvoice:!0},{name:"Fallback Latin",lang:"la",fallbackvoice:!0,service:"g2"},{name:"Fallback Latvian",lang:"lv",fallbackvoice:!0},{name:"Fallback Macedonian",lang:"mk",fallbackvoice:!0},{name:"Fallback Moldavian",lang:"mo",fallbackvoice:!0,service:"g2"},{name:"Fallback Montenegrin",lang:"sr-ME",fallbackvoice:!0},{name:"Agata Compact"},{name:"Zosia"},{name:"pl-PL",rate:.25},{name:"Fallback Polish",lang:"pl",fallbackvoice:!0},{name:"Raquel Compact"},{name:"Luciana"},{name:"pt-BR",rate:.25}, +{name:"Fallback Brazilian Portugese",lang:"pt-BR",fallbackvoice:!0,service:"g2"},{name:"Joana Compact"},{name:"Joana"},{name:"pt-PT",rate:.25},{name:"Fallback Portuguese",lang:"pt-PT",fallbackvoice:!0},{name:"Fallback Serbo-Croation",lang:"sh",fallbackvoice:!0,service:"g2"},{name:"Laura Compact"},{name:"Laura"},{name:"sk-SK",rate:.25},{name:"Fallback Slovak",lang:"sk",fallbackvoice:!0,service:"g2"},{name:"Javier Compact"},{name:"Paulina"},{name:"es-MX",rate:.25},{name:"Fallback Spanish (Latin American)", +lang:"es-419",fallbackvoice:!0,service:"g2"},{name:"Fallback Swahili",lang:"sw",fallbackvoice:!0},{name:"Fallback Tamil",lang:"ta",fallbackvoice:!0},{name:"Narisa Compact"},{name:"Kanya"},{name:"th-TH",rate:.25},{name:"Fallback Thai",lang:"th",fallbackvoice:!0},{name:"Fallback Vietnamese",lang:"vi",fallbackvoice:!0},{name:"Fallback Welsh",lang:"cy",fallbackvoice:!0},{name:"Oskar Compact"},{name:"sv-SE",rate:.25},{name:"Simona Compact"},{name:"Ioana"},{name:"ro-RO",rate:.25},{name:"Kyoko"},{name:"Lekha"}, +{name:"Ting-Ting"},{name:"Yuna"},{name:"Xander Compact"},{name:"nl-NL",rate:.25},{name:"Fallback UK English Male",lang:"en-GB",fallbackvoice:!0,service:"g1",voicename:"rjs"},{name:"Finnish Male",lang:"fi",fallbackvoice:!0,service:"g1",voicename:""},{name:"Czech Male",lang:"cs",fallbackvoice:!0,service:"g1",voicename:""},{name:"Danish Male",lang:"da",fallbackvoice:!0,service:"g1",voicename:""},{name:"Greek Male",lang:"el",fallbackvoice:!0,service:"g1",voicename:"",rate:.25},{name:"Hungarian Male", +lang:"hu",fallbackvoice:!0,service:"g1",voicename:""},{name:"Latin Male",lang:"la",fallbackvoice:!0,service:"g1",voicename:""},{name:"Norwegian Male",lang:"no",fallbackvoice:!0,service:"g1",voicename:""},{name:"Slovak Male",lang:"sk",fallbackvoice:!0,service:"g1",voicename:""},{name:"Swedish Male",lang:"sv",fallbackvoice:!0,service:"g1",voicename:""},{name:"Fallback US English Male",lang:"en",fallbackvoice:!0,service:"tts-api",voicename:""},{name:"German Germany",lang:"de_DE"},{name:"English United Kingdom", +lang:"en_GB"},{name:"English India",lang:"en_IN"},{name:"English United States",lang:"en_US"},{name:"Spanish Spain",lang:"es_ES"},{name:"Spanish Mexico",lang:"es_MX"},{name:"Spanish United States",lang:"es_US"},{name:"French Belgium",lang:"fr_BE"},{name:"French France",lang:"fr_FR"},{name:"Hindi India",lang:"hi_IN"},{name:"Indonesian Indonesia",lang:"in_ID"},{name:"Italian Italy",lang:"it_IT"},{name:"Japanese Japan",lang:"ja_JP"},{name:"Korean South Korea",lang:"ko_KR"},{name:"Dutch Netherlands", +lang:"nl_NL"},{name:"Polish Poland",lang:"pl_PL"},{name:"Portuguese Brazil",lang:"pt_BR"},{name:"Portuguese Portugal",lang:"pt_PT"},{name:"Russian Russia",lang:"ru_RU"},{name:"Thai Thailand",lang:"th_TH"},{name:"Turkish Turkey",lang:"tr_TR"},{name:"Chinese China",lang:"zh_CN_#Hans"},{name:"Chinese Hong Kong",lang:"zh_HK_#Hans"},{name:"Chinese Hong Kong",lang:"zh_HK_#Hant"},{name:"Chinese Taiwan",lang:"zh_TW_#Hant"},{name:"Alex"},{name:"Maged",lang:"ar-SA"},{name:"Zuzana",lang:"cs-CZ"},{name:"Sara", +lang:"da-DK"},{name:"Anna",lang:"de-DE"},{name:"Melina",lang:"el-GR"},{name:"Karen",lang:"en-AU"},{name:"Daniel",lang:"en-GB"},{name:"Moira",lang:"en-IE"},{name:"Samantha (Enhanced)",lang:"en-US"},{name:"Samantha",lang:"en-US"},{name:"Tessa",lang:"en-ZA"},{name:"Monica",lang:"es-ES"},{name:"Paulina",lang:"es-MX"},{name:"Satu",lang:"fi-FI"},{name:"Amelie",lang:"fr-CA"},{name:"Thomas",lang:"fr-FR"},{name:"Carmit",lang:"he-IL"},{name:"Lekha",lang:"hi-IN"},{name:"Mariska",lang:"hu-HU"},{name:"Damayanti", +lang:"id-ID"},{name:"Alice",lang:"it-IT"},{name:"Kyoko",lang:"ja-JP"},{name:"Yuna",lang:"ko-KR"},{name:"Ellen",lang:"nl-BE"},{name:"Xander",lang:"nl-NL"},{name:"Nora",lang:"no-NO"},{name:"Zosia",lang:"pl-PL"},{name:"Luciana",lang:"pt-BR"},{name:"Joana",lang:"pt-PT"},{name:"Ioana",lang:"ro-RO"},{name:"Milena",lang:"ru-RU"},{name:"Laura",lang:"sk-SK"},{name:"Alva",lang:"sv-SE"},{name:"Kanya",lang:"th-TH"},{name:"Yelda",lang:"tr-TR"},{name:"Ting-Ting",lang:"zh-CN"},{name:"Sin-Ji",lang:"zh-HK"},{name:"Mei-Jia", +lang:"zh-TW"}];a.iOS=/(iPad|iPhone|iPod)/g.test(navigator.userAgent);a.iOS9=/(iphone|ipod|ipad).* os 9_/.test(navigator.userAgent.toLowerCase());a.is_chrome=-1a.VOICESUPPORT_ATTEMPTLIMIT&&(clearInterval(b),null!=window.speechSynthesis?a.iOS?(a.iOS9?a.systemVoicesReady(a.cache_ios9_voices):a.systemVoicesReady(a.cache_ios_voices),console.log("RV: Voice support ready (cached)")):(console.log("RV: speechSynthesis present but no system voices found"),a.enableFallbackMode()):a.enableFallbackMode()))},100)},100);a.Dispatch("OnLoad")};a.systemVoicesReady=function(b){a.systemvoices=b;a.mapRVs();null!=a.OnVoiceReady&& +a.OnVoiceReady.call();a.Dispatch("OnReady");window.hasOwnProperty("dispatchEvent")&&window.dispatchEvent(new Event("ResponsiveVoice_OnReady"))};a.enableFallbackMode=function(){a.fallbackMode=!0;console.log("RV: Enabling fallback mode");a.mapRVs();null!=a.OnVoiceReady&&a.OnVoiceReady.call();a.Dispatch("OnReady");window.hasOwnProperty("dispatchEvent")&&window.dispatchEvent(new Event("ResponsiveVoice_OnReady"))};a.getVoices=function(){for(var b=[],c=0;ca.CHARACTER_LIMIT){for(var e=b;e.length>a.CHARACTER_LIMIT;){var g= +e.search(/[:!?.;]+/),d="";if(-1==g||g>=a.CHARACTER_LIMIT)g=e.search(/[,]+/);-1==g&&-1==e.search(" ")&&(g=99);if(-1==g||g>=a.CHARACTER_LIMIT)for(var k=e.split(" "),g=0;ga.CHARACTER_LIMIT);g++)d+=(0!=g?" ":"")+k[g];else d=e.substr(0,g+1);e=e.substr(d.length,e.length-d.length);h.push(d)}0=f)){var h=b.split(/\s+/).length,e=(b.match(/[^ ]/igm)||b).length,f=60/a.WORDS_PER_MINUTE*f*1E3*(e/h/5.1)*h;3>h&&(f=4E3);3E3>f&&(f=3E3);a.timeoutId=setTimeout(c,f)}};a.checkAndCancelTimeout=function(){null!=a.timeoutId&&(clearTimeout(a.timeoutId),a.timeoutId=null)};a.speech_timedout=function(){a.cancel();a.cancelled=!1;a.speech_onend()};a.speech_onend=function(){a.checkAndCancelTimeout(); +!0===a.cancelled?a.cancelled=!1:null!=a.msgparameters&&null!=a.msgparameters.onend&&1!=a.msgparameters.onendcalled&&(a.msgparameters.onendcalled=!0,a.msgparameters.onend())};a.speech_onstart=function(){if(!a.onstartFired){a.onstartFired=!0;if(a.iOS||a.is_safari||a.useTimer)a.fallbackMode||a.startTimeout(a.msgtext,a.speech_timedout);a.msgparameters.onendcalled=!1;if(null!=a.msgparameters&&null!=a.msgparameters.onstart)a.msgparameters.onstart()}};a.fallback_startPart=function(){0==a.fallback_part_index&& +a.speech_onstart();a.fallback_audio=a.fallback_parts[a.fallback_part_index];if(null==a.fallback_audio)console.log("RV: Fallback Audio is not available");else{var b=a.fallback_audio;a.fallback_audiopool.push(b);setTimeout(function(){b.playbackRate=a.fallback_playbackrate},50);b.onloadedmetadata=function(){b.play();b.playbackRate=a.fallback_playbackrate};a.fallback_audio.play();a.fallback_audio.addEventListener("ended",a.fallback_finishPart);a.useTimer&&a.startTimeout(a.multipartText[a.fallback_part_index], +a.fallback_finishPart)}};a.fallback_finishPart=function(b){a.checkAndCancelTimeout();a.fallback_part_indexa[e])&&clearTimeout(a[h])},50));return!1};a.AddEventListener=function(b,c){a.hasOwnProperty(b+"_callbacks")||(a[b+"_callbacks"]=[]);a[b+"_callbacks"].push(c)};a.addEventListener=a.AddEventListener;a.clickEvent=function(){if(a.iOS&& +!a.iOS_initialized){console.log("Initializing iOS click event");var b=new SpeechSynthesisUtterance(" ");speechSynthesis.speak(b);a.iOS_initialized=!0}};a.isPlaying=function(){return a.fallbackMode?null!=a.fallback_audio&&!a.fallback_audio.ended&&!a.fallback_audio.paused:speechSynthesis.speaking};a.clearFallbackPool=function(){for(var b=0;b Date: Fri, 22 Jul 2016 11:07:43 +0800 Subject: [PATCH 094/156] fix voice api not loaded bug --- src/widgets/speaking-voice.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/widgets/speaking-voice.jsx b/src/widgets/speaking-voice.jsx index 8773d9c6cf..33380cb6c4 100644 --- a/src/widgets/speaking-voice.jsx +++ b/src/widgets/speaking-voice.jsx @@ -16,6 +16,7 @@ var SpeakingVoice = React.createClass({ // componentDidMount: function() { this.responsiveVoice = new ResponsiveVoice; + this.responsiveVoice.init(); }, speak: function() { From 4d7630b9c43a5c84d027a86d14b29e40c074f127 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Tue, 26 Jul 2016 02:37:33 +0000 Subject: [PATCH 095/156] fix fullwidth --- build/perseus-1.js | 5377 ++++++++++++++++----------------- src/util.js | 16 + src/widgets/expression.jsx | 7 +- src/widgets/input-number.jsx | 2 +- src/widgets/numeric-input.jsx | 8 +- 5 files changed, 2656 insertions(+), 2754 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index b1554248ad..f96c2ecdb3 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit df5ef5ed6e0a284e64802c45504aafca03d5ae55 -// branch upgrade_expression +// commit f6efa6ac4c3f45cdb31c12aa9fc22527bfd50286 +// branch fix-fullwidth2 (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license */ -var BlurInput = React.createClass({displayName: 'BlurInput', - propTypes: { - value: React.PropTypes.string.isRequired, - onChange: React.PropTypes.func.isRequired - }, - getInitialState: function() { - return { value: this.props.value }; - }, - render: function() { - return this.transferPropsTo(React.DOM.input( - {type:"text", - value:this.state.value, - onChange:this.handleChange, - onBlur:this.handleBlur} )); - }, - componentWillReceiveProps: function(nextProps) { - this.setState({ value: nextProps.value }); - }, - handleChange: function(e) { - this.setState({ value: e.target.value }); - }, - handleBlur: function(e) { - this.props.onChange(e.target.value); - } -}); - -module.exports = BlurInput; - -},{"react":115}],3:[function(require,module,exports){ -/** @jsx React.DOM */ -var React = require('react'); -var RCSS = require('rcss'); -var _ = require('underscore'); +/** Used to pool arrays and objects used internally */ +var arrayPool = []; -var outerStyle = { - display: 'inline-block', -}; +module.exports = arrayPool; -var buttonStyle = { - backgroundColor: 'white', - border: '1px solid #ccc', - borderBottom: '1px solid #ccc', - borderLeft: '0', - cursor: 'pointer', - margin: '0', - padding: '5px 10px', - position: 'relative', // for hover +},{}],3:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreate = require('lodash._basecreate'), + isObject = require('lodash.isobject'), + setBindData = require('lodash._setbinddata'), + slice = require('lodash._slice'); - ':first-child': { - borderLeft: '1px solid #ccc', - borderTopLeftRadius: '3px', - borderBottomLeftRadius: '3px' - }, +/** + * Used for `Array` method references. + * + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; - ':last-child': { - borderRight: '1px solid #ccc', - borderTopRightRadius: '3px', - borderBottomRightRadius: '3px' - }, +/** Native method shortcuts */ +var push = arrayRef.push; - ':hover': { - backgroundColor: '#ccc' - }, +/** + * The base implementation of `_.bind` that creates the bound function and + * sets its meta data. + * + * @private + * @param {Array} bindData The bind data array. + * @returns {Function} Returns the new bound function. + */ +function baseBind(bindData) { + var func = bindData[0], + partialArgs = bindData[2], + thisArg = bindData[4]; - ':focus': { - zIndex: '2' + function bound() { + // `Function#bind` spec + // http://es5.github.io/#x15.3.4.5 + if (partialArgs) { + // avoid `arguments` object deoptimizations by using `slice` instead + // of `Array.prototype.slice.call` and not assigning `arguments` to a + // variable as a ternary expression + var args = slice(partialArgs); + push.apply(args, arguments); } -}; + // mimic the constructor's `return` behavior + // http://es5.github.io/#x13.2.2 + if (this instanceof bound) { + // ensure `new bound` is an instance of `func` + var thisBinding = baseCreate(func.prototype), + result = func.apply(thisBinding, args || arguments); + return isObject(result) ? result : thisBinding; + } + return func.apply(thisArg, args || arguments); + } + setBindData(bound, bindData); + return bound; +} -var selectedStyle = { - backgroundColor: '#ddd' -}; +module.exports = baseBind; -RCSS.createClass(outerStyle); -RCSS.createClass(buttonStyle); -RCSS.createClass(selectedStyle); +},{"lodash._basecreate":4,"lodash._setbinddata":17,"lodash._slice":19,"lodash.isobject":29}],4:[function(require,module,exports){ +(function (global){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var isNative = require('lodash._isnative'), + isObject = require('lodash.isobject'), + noop = require('lodash.noop'); -/* ButtonGroup is an aesthetically pleasing group of buttons. - * - * The class requires these properties: - * buttons - an array of objects with keys: - * "value": this is the value returned when the button is selected - * "text": this is the text shown on the button - * "title": this is the title-text shown on hover - * onChange - a function that is provided with the updated value - * (which it then is responsible for updating) - * - * The class has these optional properties: - * value - the initial value of the button selected, defaults to null. - * allowEmpty - if false, exactly one button _must_ be selected; otherwise - * it defaults to true and _at most_ one button (0 or 1) may be selected. +/* Native method shortcuts for methods with the same name as other `lodash` methods */ +var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate; + +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. * - * Requires stylesheets/perseus-admin-package/editor.less to look nice. + * @private + * @param {Object} prototype The object to inherit from. + * @returns {Object} Returns the new object. */ +function baseCreate(prototype, properties) { + return isObject(prototype) ? nativeCreate(prototype) : {}; +} +// fallback for browsers without `Object.create` +if (!nativeCreate) { + baseCreate = (function() { + function Object() {} + return function(prototype) { + if (isObject(prototype)) { + Object.prototype = prototype; + var result = new Object; + Object.prototype = null; + } + return result || global.Object(); + }; + }()); +} -var ButtonGroup = React.createClass({displayName: 'ButtonGroup', - propTypes: { - value: React.PropTypes.any, - buttons: React.PropTypes.arrayOf(React.PropTypes.shape({ - value: React.PropTypes.any.isRequired, - text: React.PropTypes.renderable, - title: React.PropTypes.string - })).isRequired, - onChange: React.PropTypes.func.isRequired, - allowEmpty: React.PropTypes.bool - }, +module.exports = baseCreate; - getDefaultProps: function() { - return { - value: null, - allowEmpty: true - }; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"lodash._isnative":12,"lodash.isobject":29,"lodash.noop":31}],5:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var bind = require('lodash.bind'), + identity = require('lodash.identity'), + setBindData = require('lodash._setbinddata'), + support = require('lodash.support'); - render: function() { - var value = this.props.value; - var buttons = _(this.props.buttons).map(function(button, i) { - var maybeSelected = button.value === value ? - selectedStyle.className : - ""; - return React.DOM.button( {title:button.title, - id:"" + i, - ref:"button" + i, - key:"" + i, - className:(buttonStyle.className + " " + maybeSelected), - onClick:this.toggleSelect.bind(this, button.value)}, - button.text || "" + button.value - ); - }.bind(this)); +/** Used to detected named functions */ +var reFuncName = /^\s*function[ \n\r\t]+\w/; - return React.DOM.div( {className:outerStyle.className}, - buttons - ); - }, +/** Used to detect functions containing a `this` reference */ +var reThis = /\bthis\b/; - focus: function() { - this.getDOMNode().focus(); - return true; - }, - - toggleSelect: function(newValue) { - var value = this.props.value; +/** Native method shortcuts */ +var fnToString = Function.prototype.toString; - if (this.props.allowEmpty) { - // Select the new button or unselect if it's already selected - this.props.onChange(value !== newValue ? newValue : null); - } else { - this.props.onChange(newValue); - } +/** + * The base implementation of `_.createCallback` without support for creating + * "_.pluck" or "_.where" style callbacks. + * + * @private + * @param {*} [func=identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of the created callback. + * @param {number} [argCount] The number of arguments the callback accepts. + * @returns {Function} Returns a callback function. + */ +function baseCreateCallback(func, thisArg, argCount) { + if (typeof func != 'function') { + return identity; + } + // exit early for no `thisArg` or already bound by `Function#bind` + if (typeof thisArg == 'undefined' || !('prototype' in func)) { + return func; + } + var bindData = func.__bindData__; + if (typeof bindData == 'undefined') { + if (support.funcNames) { + bindData = !func.name; } -}); - -module.exports = ButtonGroup; + bindData = bindData || !support.funcDecomp; + if (!bindData) { + var source = fnToString.call(func); + if (!support.funcNames) { + bindData = !reFuncName.test(source); + } + if (!bindData) { + // checks if `func` references the `this` keyword and stores the result + bindData = reThis.test(source); + setBindData(func, bindData); + } + } + } + // exit early if there are no `this` references or `func` is bound + if (bindData === false || (bindData !== true && bindData[1] & 1)) { + return func; + } + switch (argCount) { + case 1: return function(value) { + return func.call(thisArg, value); + }; + case 2: return function(a, b) { + return func.call(thisArg, a, b); + }; + case 3: return function(value, index, collection) { + return func.call(thisArg, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(thisArg, accumulator, value, index, collection); + }; + } + return bind(func, thisArg); +} -},{"rcss":6,"react":115,"underscore":116}],4:[function(require,module,exports){ -/** @jsx React.DOM */ +module.exports = baseCreateCallback; -var React = require('react'); +},{"lodash._setbinddata":17,"lodash.bind":21,"lodash.identity":27,"lodash.support":33}],6:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreate = require('lodash._basecreate'), + isObject = require('lodash.isobject'), + setBindData = require('lodash._setbinddata'), + slice = require('lodash._slice'); -/* This component makes its children a drag target. Example: - * - * Drag to me - * - * ... +/** + * Used for `Array` method references. * - * handleDrop: function(e) { - * this.addImages(e.nativeEvent.dataTransfer.files); - * } + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; + +/** Native method shortcuts */ +var push = arrayRef.push; + +/** + * The base implementation of `createWrapper` that creates the wrapper and + * sets its meta data. * - * Now "Drag to me" will be a drag target - when something is dragged over it, - * the element will become partially transparent as a visual indicator that - * it's a target. + * @private + * @param {Array} bindData The bind data array. + * @returns {Function} Returns the new function. */ -// TODO(joel) - indicate before the hover is over the target that it's possible -// to drag into the target. This would (I think) require a high level handler - -// like on Perseus itself, waiting for onDragEnter, then passing down the -// event. Sounds like a pain. Possible workaround - create a div covering the -// entire page... -// -// Other extensions: -// * custom styles for global drag and dragOver -// * only respond to certain types of drags (only images for instance)! -var DragTarget = React.createClass({displayName: 'DragTarget', - propTypes: { - onDrop: React.PropTypes.func.isRequired, - component: React.PropTypes.component, - shouldDragHighlight: React.PropTypes.func - }, - render: function() { - var opacity = this.state.dragHover ? { "opacity": 0.3 } : {}; - var component = this.props.component; +function baseCreateWrapper(bindData) { + var func = bindData[0], + bitmask = bindData[1], + partialArgs = bindData[2], + partialRightArgs = bindData[3], + thisArg = bindData[4], + arity = bindData[5]; - return this.transferPropsTo( - component( {style:opacity, - onDrop:this.handleDrop, - onDragEnd:this.handleDragEnd, - onDragOver:this.handleDragOver, - onDragEnter:this.handleDragEnter, - onDragLeave:this.handleDragLeave}, - this.props.children - ) - ); - }, - getInitialState: function() { - return { dragHover: false }; - }, - getDefaultProps: function() { - return { - component: React.DOM.div, - shouldDragHighlight: function() {return true;} - }; - }, - handleDrop: function(e) { - e.stopPropagation(); - e.preventDefault(); - this.setState({ dragHover: false }); - this.props.onDrop(e); - }, - handleDragEnd: function() { - this.setState({ dragHover: false }); - }, - handleDragOver: function(e) { - e.preventDefault(); - }, - handleDragLeave: function() { - this.setState({ dragHover: false }); - }, - handleDragEnter: function(e) { - this.setState({ dragHover: this.props.shouldDragHighlight(e) }); + var isBind = bitmask & 1, + isBindKey = bitmask & 2, + isCurry = bitmask & 4, + isCurryBound = bitmask & 8, + key = func; + + function bound() { + var thisBinding = isBind ? thisArg : this; + if (partialArgs) { + var args = slice(partialArgs); + push.apply(args, arguments); } -}); + if (partialRightArgs || isCurry) { + args || (args = slice(arguments)); + if (partialRightArgs) { + push.apply(args, partialRightArgs); + } + if (isCurry && args.length < arity) { + bitmask |= 16 & ~32; + return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); + } + } + args || (args = arguments); + if (isBindKey) { + func = thisBinding[key]; + } + if (this instanceof bound) { + thisBinding = baseCreate(func.prototype); + var result = func.apply(thisBinding, args); + return isObject(result) ? result : thisBinding; + } + return func.apply(thisBinding, args); + } + setBindData(bound, bindData); + return bound; +} -module.exports = DragTarget; +module.exports = baseCreateWrapper; -},{"react":115}],5:[function(require,module,exports){ -/** @jsx React.DOM */ +},{"lodash._basecreate":4,"lodash._setbinddata":17,"lodash._slice":19,"lodash.isobject":29}],7:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var forIn = require('lodash.forin'), + getArray = require('lodash._getarray'), + isFunction = require('lodash.isfunction'), + objectTypes = require('lodash._objecttypes'), + releaseArray = require('lodash._releasearray'); -var React = require('react'); -var RCSS = require('rcss'); -var _ = require('underscore'); +/** `Object#toString` result shortcuts */ +var argsClass = '[object Arguments]', + arrayClass = '[object Array]', + boolClass = '[object Boolean]', + dateClass = '[object Date]', + numberClass = '[object Number]', + objectClass = '[object Object]', + regexpClass = '[object RegExp]', + stringClass = '[object String]'; -var colors = { - grayLight: '#aaa', - basicBorderColor: '#ccc', - white: '#fff' -}; +/** Used for native method references */ +var objectProto = Object.prototype; -var infoTip = { - display: 'inline-block', - marginLeft: '5px', - position: 'relative' -}; +/** Used to resolve the internal [[Class]] of values */ +var toString = objectProto.toString; -var infoTipI = { - cursor: 'pointer' -}; - -var infoTipContainer = { - position: 'absolute', - 'top': '-12px', - left: '22px', - zIndex: '1000' -}; - -var triangleBeforeAfter = { - borderBottom: '9px solid transparent', - borderTop: '9px solid transparent', - content: ' ', - height: '0', - position: 'absolute', - 'top': '0', - width: '0' -}; - -var infoTipTriangle = { - height: '10px', - left: '0', - position: 'absolute', - 'top': '8px', - width: '0', - zIndex: '1', +/** Native method shortcuts */ +var hasOwnProperty = objectProto.hasOwnProperty; - ':before': _.extend({}, triangleBeforeAfter, { - borderRight: '9px solid #bbb', - right: '0', - }), +/** + * The base implementation of `_.isEqual`, without support for `thisArg` binding, + * that allows partial "_.where" style comparisons. + * + * @private + * @param {*} a The value to compare. + * @param {*} b The other value to compare. + * @param {Function} [callback] The function to customize comparing values. + * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. + * @param {Array} [stackA=[]] Tracks traversed `a` objects. + * @param {Array} [stackB=[]] Tracks traversed `b` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { + // used to indicate that when comparing objects, `a` has at least the properties of `b` + if (callback) { + var result = callback(a, b); + if (typeof result != 'undefined') { + return !!result; + } + } + // exit early for identical values + if (a === b) { + // treat `+0` vs. `-0` as not equal + return a !== 0 || (1 / a == 1 / b); + } + var type = typeof a, + otherType = typeof b; - ':after': _.extend({}, triangleBeforeAfter, { - borderRight: ("9px solid " + colors.white), - right: '-1px' - }) -}; + // exit early for unlike primitive values + if (a === a && + !(a && objectTypes[type]) && + !(b && objectTypes[otherType])) { + return false; + } + // exit early for `null` and `undefined` avoiding ES3's Function#call behavior + // http://es5.github.io/#x15.3.4.4 + if (a == null || b == null) { + return a === b; + } + // compare [[Class]] names + var className = toString.call(a), + otherClass = toString.call(b); -var basicBorder = { - border: ("1px solid " + colors.basicBorderColor) -}; + if (className == argsClass) { + className = objectClass; + } + if (otherClass == argsClass) { + otherClass = objectClass; + } + if (className != otherClass) { + return false; + } + switch (className) { + case boolClass: + case dateClass: + // coerce dates and booleans to numbers, dates to milliseconds and booleans + // to `1` or `0` treating invalid dates coerced to `NaN` as not equal + return +a == +b; -var boxShadow = function(str) { return { boxShadow: str }; }; + case numberClass: + // treat `NaN` vs. `NaN` as equal + return (a != +a) + ? b != +b + // but treat `+0` vs. `-0` as not equal + : (a == 0 ? (1 / a == 1 / b) : a == +b); -var verticalShadow = RCSS.merge( - basicBorder, - boxShadow(("0 1px 3px " + colors.basicBorderColor)), - { borderBottom: ("1px solid " + colors.grayLight) } -); + case regexpClass: + case stringClass: + // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) + // treat string primitives and their corresponding object instances as equal + return a == String(b); + } + var isArr = className == arrayClass; + if (!isArr) { + // unwrap any `lodash` wrapped values + var aWrapped = hasOwnProperty.call(a, '__wrapped__'), + bWrapped = hasOwnProperty.call(b, '__wrapped__'); -var infoTipContentContainer = RCSS.merge(verticalShadow, { - background: colors.white, - padding: '5px 10px', - width: '240px' -}); + if (aWrapped || bWrapped) { + return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); + } + // exit for functions and DOM nodes + if (className != objectClass) { + return false; + } + // in older versions of Opera, `arguments` objects have `Array` constructors + var ctorA = a.constructor, + ctorB = b.constructor; -RCSS.createClass(infoTip); -RCSS.createClass(infoTipI); -RCSS.createClass(infoTipTriangle); -RCSS.createClass(verticalShadow); -RCSS.createClass(infoTipContainer); -RCSS.createClass(infoTipContentContainer); + // non `Object` object instances with different constructors are not equal + if (ctorA != ctorB && + !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && + ('constructor' in a && 'constructor' in b) + ) { + return false; + } + } + // assume cyclic structures are equal + // the algorithm for detecting cyclic structures is adapted from ES 5.1 + // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) + var initedStack = !stackA; + stackA || (stackA = getArray()); + stackB || (stackB = getArray()); -var questionMark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2N2M3NTAxYS04YmVlLTQ0M2MtYmRiNS04OGM2N2IxN2NhYzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUJCRTk4Qjc4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUJCRTk4QjY4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGE5ZDI0OTMtODk1NC00OGFkLTlhMTgtZDAwM2MwYWNjNDJlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY3Yzc1MDFhLThiZWUtNDQzYy1iZGI1LTg4YzY3YjE3Y2FjMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqm89uYAAADMSURBVHjaXJA9DoJAEIUH1M4TUHIFsCMGen9OwCGw1YRGW2ntKel0exsojHIBC0ouQAyUviFDstmXfNmZeS+zm7XSNCXRFiRgJf0bXIHixpbhGdxBBJYC1w/xaA424MhNEATkui71fU9KqfEU78UbD9PdbJRlOdae55GmhIP+1NV1TcMwkOM41DSNHvRtMhTHMRVFQW3b6mOLgx99kue5GRp/gIOZuZGvNpTNwjD8oliANU+qqqKu6/TQBdymN57AHjzBT+B6Jx79BRgAvc49kQA4yxgAAAAASUVORK5CYII='; // @NoLint + var length = stackA.length; + while (length--) { + if (stackA[length] == a) { + return stackB[length] == b; + } + } + var size = 0; + result = true; -var InfoTip = React.createClass({displayName: 'InfoTip', - getInitialState: function() { - return { - hover: false - }; - }, + // add `a` and `b` to the stack of traversed objects + stackA.push(a); + stackB.push(b); - render: function() { - return React.DOM.div( {className:infoTip.className}, - React.DOM.img( {width:10, - height:10, - src:questionMark, - onMouseEnter:this.handleMouseEnter, - onMouseLeave:this.handleMouseLeave} ), - React.DOM.div( {className:infoTipContainer.className, - style:{display: this.state.hover ? 'block' : 'none'}}, - React.DOM.div( {className:infoTipTriangle.className} ), - /* keep the classes here - used for selectors on KA */ - React.DOM.div( {className:infoTipContentContainer.className}, - this.props.children - ) - ) - ); - }, + // recursively compare objects and arrays (susceptible to call stack limits) + if (isArr) { + // compare lengths to determine if a deep comparison is necessary + length = a.length; + size = b.length; + result = size == length; - handleMouseEnter: function() { - this.setState({hover: true}); - }, + if (result || isWhere) { + // deep compare the contents, ignoring non-numeric properties + while (size--) { + var index = length, + value = b[size]; - handleMouseLeave: function() { - this.setState({hover: false}); + if (isWhere) { + while (index--) { + if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { + break; + } + } + } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { + break; + } + } } -}); - -module.exports = InfoTip; + } + else { + // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` + // which, in this case, is more costly + forIn(b, function(value, key, b) { + if (hasOwnProperty.call(b, key)) { + // count the number of properties. + size++; + // deep compare each property value. + return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); + } + }); -},{"rcss":6,"react":115,"underscore":116}],6:[function(require,module,exports){ -var assign = require('lodash.assign'); + if (result && !isWhere) { + // ensure both objects have the same number of properties + forIn(a, function(value, key, a) { + if (hasOwnProperty.call(a, key)) { + // `size` will be `-1` if `a` has more properties than `b` + return (result = --size > -1); + } + }); + } + } + stackA.pop(); + stackB.pop(); -var styleRuleValidator = require('./styleRuleValidator'); -var styleRuleConverter = require('./styleRuleConverter'); -var mediaQueryValidator = require('valid-media-queries'); + if (initedStack) { + releaseArray(stackA); + releaseArray(stackB); + } + return result; +} -var existingClasses = {}; -var styleTag = createStyleTag(); +module.exports = baseIsEqual; -var classNameId = 0; -var randomSuffix = Math.random().toString(36).slice(-5); - -function generateValidCSSClassName() { - // CSS classNames can't start with a number. - return 'c' + (classNameId++) + '-' + randomSuffix; -} +},{"lodash._getarray":10,"lodash._objecttypes":14,"lodash._releasearray":15,"lodash.forin":25,"lodash.isfunction":28}],8:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseBind = require('lodash._basebind'), + baseCreateWrapper = require('lodash._basecreatewrapper'), + isFunction = require('lodash.isfunction'), + slice = require('lodash._slice'); -function objToCSS(style) { - var serialized = ''; - for (var propName in style) { - // we put that ourselves - if (propName == 'className') continue; +/** + * Used for `Array` method references. + * + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; - var cssPropName = styleRuleConverter.hyphenateProp(propName); - if (!styleRuleValidator.isValidProp(cssPropName)) { - console.warn( - '%s (transformed into %s) is not a valid CSS property name.', propName, cssPropName - ); - continue; - } +/** Native method shortcuts */ +var push = arrayRef.push, + unshift = arrayRef.unshift; - var styleValue = style[propName]; - if (!styleRuleValidator.isValidValue(styleValue)) continue; +/** + * Creates a function that, when called, either curries or invokes `func` + * with an optional `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to reference. + * @param {number} bitmask The bitmask of method flags to compose. + * The bitmask may be composed of the following flags: + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` + * 8 - `_.curry` (bound) + * 16 - `_.partial` + * 32 - `_.partialRight` + * @param {Array} [partialArgs] An array of arguments to prepend to those + * provided to the new function. + * @param {Array} [partialRightArgs] An array of arguments to append to those + * provided to the new function. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new function. + */ +function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { + var isBind = bitmask & 1, + isBindKey = bitmask & 2, + isCurry = bitmask & 4, + isCurryBound = bitmask & 8, + isPartial = bitmask & 16, + isPartialRight = bitmask & 32; - if (styleValue !== null) { - serialized += cssPropName + ':'; - serialized += styleRuleConverter.escapeValueForProp(styleValue, - cssPropName) + ';'; + if (!isBindKey && !isFunction(func)) { + throw new TypeError; + } + if (isPartial && !partialArgs.length) { + bitmask &= ~16; + isPartial = partialArgs = false; + } + if (isPartialRight && !partialRightArgs.length) { + bitmask &= ~32; + isPartialRight = partialRightArgs = false; + } + var bindData = func && func.__bindData__; + if (bindData && bindData !== true) { + // clone `bindData` + bindData = slice(bindData); + if (bindData[2]) { + bindData[2] = slice(bindData[2]); + } + if (bindData[3]) { + bindData[3] = slice(bindData[3]); + } + // set `thisBinding` is not previously bound + if (isBind && !(bindData[1] & 1)) { + bindData[4] = thisArg; + } + // set if previously bound but not currently (subsequent curried functions) + if (!isBind && bindData[1] & 1) { + bitmask |= 8; + } + // set curried arity if not yet set + if (isCurry && !(bindData[1] & 4)) { + bindData[5] = arity; + } + // append partial left arguments + if (isPartial) { + push.apply(bindData[2] || (bindData[2] = []), partialArgs); + } + // append partial right arguments + if (isPartialRight) { + unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); } + // merge flags + bindData[1] |= bitmask; + return createWrapper.apply(null, bindData); } - return serialized || null; -} - -function createStyleTag() { - var tag = document.createElement('style'); - document.getElementsByTagName('head')[0].appendChild(tag); - return tag; + // fast path for `_.bind` + var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; + return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); } -function styleToCSS(style) { - var styleStr = '.' + style.className + '{'; - styleStr += objToCSS(style.value); - styleStr += '}'; +module.exports = createWrapper; - if (style.media) { - if (!mediaQueryValidator(style.media)) { - console.log('%s is not a valid media query.', style.media); - } - styleStr = style.media + '{' + styleStr + '}'; - } +},{"lodash._basebind":3,"lodash._basecreatewrapper":6,"lodash._slice":19,"lodash.isfunction":28}],9:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var htmlEscapes = require('lodash._htmlescapes'); - return styleStr; +/** + * Used by `escape` to convert characters to HTML entities. + * + * @private + * @param {string} match The matched character to escape. + * @returns {string} Returns the escaped character. + */ +function escapeHtmlChar(match) { + return htmlEscapes[match]; } -// TODO: support media queries -function parseStyles(className, styleObj) { - var mainStyle = { - className: className, - value: {} - }; - var styles = [mainStyle]; - - Object.keys(styleObj).forEach(function(k){ - // pseudo-selector, insert a new rule - if (k[0] === ':') { - styles.push({ - className: className+k, - value: styleObj[k] - }); - return; - } else if (k.substring(0, 6) === '@media') { - styles.push({ - className: className, - value: styleObj[k], - media: k - }); - return; - } - - // normal rule, insert into main one - mainStyle.value[k] = styleObj[k]; - }); +module.exports = escapeHtmlChar; - return styles; -} +},{"lodash._htmlescapes":11}],10:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var arrayPool = require('lodash._arraypool'); -function insertStyle(className, styleObj) { - var styles = parseStyles(className, styleObj); - var styleStr = styles.map(styleToCSS).join(''); - styleTag.innerHTML += styleStr; +/** + * Gets an array from the array pool or creates a new one if the pool is empty. + * + * @private + * @returns {Array} The array from the pool. + */ +function getArray() { + return arrayPool.pop() || []; } -var RCSS = { - merge: function(a, b, c, d, e) { - return assign({}, a, b, c, d, e); - }, - - createClass: function(styleObj) { - var styleId = JSON.stringify(styleObj); - var className; +module.exports = getArray; - if (existingClasses[styleId]) { - // already exists, use the existing className - className = existingClasses[styleId]; - } else { - // generate a new class and insert it - className = generateValidCSSClassName(); - existingClasses[styleId] = className; - insertStyle(className, styleObj); - } +},{"lodash._arraypool":2}],11:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ - styleObj.className = className; - return styleObj; - } +/** + * Used to convert characters to HTML entities: + * + * Though the `>` character is escaped for symmetry, characters like `>` and `/` + * don't require escaping in HTML and have no special meaning unless they're part + * of a tag or an unquoted attribute value. + * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") + */ +var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' }; -module.exports = RCSS; +module.exports = htmlEscapes; -},{"./styleRuleConverter":111,"./styleRuleValidator":112,"lodash.assign":7,"valid-media-queries":46}],7:[function(require,module,exports){ +},{}],12:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -916,70 +1094,49 @@ module.exports = RCSS; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreateCallback = require('lodash._basecreatecallback'), - keys = require('lodash.keys'), - objectTypes = require('lodash._objecttypes'); + +/** Used for native method references */ +var objectProto = Object.prototype; + +/** Used to resolve the internal [[Class]] of values */ +var toString = objectProto.toString; + +/** Used to detect if a method is native */ +var reNative = RegExp('^' + + String(toString) + .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + .replace(/toString| for [^\]]+/g, '.*?') + '$' +); /** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources will overwrite property assignments of previous - * sources. If a callback is provided it will be executed to produce the - * assigned values. The callback is bound to `thisArg` and invoked with two - * arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @type Function - * @alias extend - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize assigning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); - * // => { 'name': 'fred', 'employer': 'slate' } - * - * var defaults = _.partialRight(_.assign, function(a, b) { - * return typeof a == 'undefined' ? b : a; - * }); + * Checks if `value` is a native function. * - * var object = { 'name': 'barney' }; - * defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. */ -var assign = function(object, source, guard) { - var index, iterable = object, result = iterable; - if (!iterable) return result; - var args = arguments, - argsIndex = 0, - argsLength = typeof guard == 'number' ? 2 : args.length; - if (argsLength > 3 && typeof args[argsLength - 2] == 'function') { - var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2); - } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') { - callback = args[--argsLength]; - } - while (++argsIndex < argsLength) { - iterable = args[argsIndex]; - if (iterable && objectTypes[typeof iterable]) { - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; +function isNative(value) { + return typeof value == 'function' && reNative.test(value); +} - while (++ownIndex < length) { - index = ownProps[ownIndex]; - result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]; - } - } - } - return result -}; +module.exports = isNative; -module.exports = assign; +},{}],13:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** Used as the max size of the `arrayPool` and `objectPool` */ +var maxPoolSize = 40; -},{"lodash._basecreatecallback":8,"lodash._objecttypes":29,"lodash.keys":30}],8:[function(require,module,exports){ +module.exports = maxPoolSize; + +},{}],14:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -988,80 +1145,64 @@ module.exports = assign; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var bind = require('lodash.bind'), - identity = require('lodash.identity'), - setBindData = require('lodash._setbinddata'), - support = require('lodash.support'); -/** Used to detected named functions */ -var reFuncName = /^\s*function[ \n\r\t]+\w/; +/** Used to determine if values are of the language type Object */ +var objectTypes = { + 'boolean': false, + 'function': true, + 'object': true, + 'number': false, + 'string': false, + 'undefined': false +}; -/** Used to detect functions containing a `this` reference */ -var reThis = /\bthis\b/; +module.exports = objectTypes; -/** Native method shortcuts */ -var fnToString = Function.prototype.toString; +},{}],15:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var arrayPool = require('lodash._arraypool'), + maxPoolSize = require('lodash._maxpoolsize'); /** - * The base implementation of `_.createCallback` without support for creating - * "_.pluck" or "_.where" style callbacks. + * Releases the given array back to the array pool. * * @private - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. + * @param {Array} [array] The array to release. */ -function baseCreateCallback(func, thisArg, argCount) { - if (typeof func != 'function') { - return identity; - } - // exit early for no `thisArg` or already bound by `Function#bind` - if (typeof thisArg == 'undefined' || !('prototype' in func)) { - return func; - } - var bindData = func.__bindData__; - if (typeof bindData == 'undefined') { - if (support.funcNames) { - bindData = !func.name; - } - bindData = bindData || !support.funcDecomp; - if (!bindData) { - var source = fnToString.call(func); - if (!support.funcNames) { - bindData = !reFuncName.test(source); - } - if (!bindData) { - // checks if `func` references the `this` keyword and stores the result - bindData = reThis.test(source); - setBindData(func, bindData); - } - } - } - // exit early if there are no `this` references or `func` is bound - if (bindData === false || (bindData !== true && bindData[1] & 1)) { - return func; - } - switch (argCount) { - case 1: return function(value) { - return func.call(thisArg, value); - }; - case 2: return function(a, b) { - return func.call(thisArg, a, b); - }; - case 3: return function(value, index, collection) { - return func.call(thisArg, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(thisArg, accumulator, value, index, collection); - }; +function releaseArray(array) { + array.length = 0; + if (arrayPool.length < maxPoolSize) { + arrayPool.push(array); } - return bind(func, thisArg); } -module.exports = baseCreateCallback; +module.exports = releaseArray; + +},{"lodash._arraypool":2,"lodash._maxpoolsize":13}],16:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var htmlEscapes = require('lodash._htmlescapes'), + keys = require('lodash.keys'); + +/** Used to match HTML entities and HTML characters */ +var reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); -},{"lodash._setbinddata":9,"lodash.bind":12,"lodash.identity":26,"lodash.support":27}],9:[function(require,module,exports){ +module.exports = reUnescapedHtml; + +},{"lodash._htmlescapes":11,"lodash.keys":30}],17:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1106,7 +1247,7 @@ var setBindData = !defineProperty ? noop : function(func, value) { module.exports = setBindData; -},{"lodash._isnative":10,"lodash.noop":11}],10:[function(require,module,exports){ +},{"lodash._isnative":12,"lodash.noop":31}],18:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1115,34 +1256,38 @@ module.exports = setBindData; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ +var objectTypes = require('lodash._objecttypes'); /** Used for native method references */ var objectProto = Object.prototype; -/** Used to resolve the internal [[Class]] of values */ -var toString = objectProto.toString; - -/** Used to detect if a method is native */ -var reNative = RegExp('^' + - String(toString) - .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - .replace(/toString| for [^\]]+/g, '.*?') + '$' -); +/** Native method shortcuts */ +var hasOwnProperty = objectProto.hasOwnProperty; /** - * Checks if `value` is a native function. + * A fallback implementation of `Object.keys` which produces an array of the + * given object's own enumerable property names. * * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. + * @type Function + * @param {Object} object The object to inspect. + * @returns {Array} Returns an array of property names. */ -function isNative(value) { - return typeof value == 'function' && reNative.test(value); -} +var shimKeys = function(object) { + var index, iterable = object, result = []; + if (!iterable) return result; + if (!(objectTypes[typeof object])) return result; + for (index in iterable) { + if (hasOwnProperty.call(iterable, index)) { + result.push(index); + } + } + return result +}; -module.exports = isNative; +module.exports = shimKeys; -},{}],11:[function(require,module,exports){ +},{"lodash._objecttypes":14}],19:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1153,26 +1298,110 @@ module.exports = isNative; */ /** - * A no-operation function. + * Slices the `collection` from the `start` index up to, but not including, + * the `end` index. * - * @static - * @memberOf _ - * @category Utilities - * @example + * Note: This function is used instead of `Array#slice` to support node lists + * in IE < 9 and to ensure dense arrays are returned. * - * var object = { 'name': 'fred' }; - * _.noop(object) === undefined; - * // => true + * @private + * @param {Array|Object|string} collection The collection to slice. + * @param {number} start The start index. + * @param {number} end The end index. + * @returns {Array} Returns the new array. */ -function noop() { - // no operation performed -} - -module.exports = noop; - -},{}],12:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) +function slice(array, start, end) { + start || (start = 0); + if (typeof end == 'undefined') { + end = array ? array.length : 0; + } + var index = -1, + length = end - start || 0, + result = Array(length < 0 ? 0 : length); + + while (++index < length) { + result[index] = array[start + index]; + } + return result; +} + +module.exports = slice; + +},{}],20:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreateCallback = require('lodash._basecreatecallback'), + keys = require('lodash.keys'), + objectTypes = require('lodash._objecttypes'); + +/** + * Assigns own enumerable properties of source object(s) to the destination + * object. Subsequent sources will overwrite property assignments of previous + * sources. If a callback is provided it will be executed to produce the + * assigned values. The callback is bound to `thisArg` and invoked with two + * arguments; (objectValue, sourceValue). + * + * @static + * @memberOf _ + * @type Function + * @alias extend + * @category Objects + * @param {Object} object The destination object. + * @param {...Object} [source] The source objects. + * @param {Function} [callback] The function to customize assigning values. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns the destination object. + * @example + * + * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); + * // => { 'name': 'fred', 'employer': 'slate' } + * + * var defaults = _.partialRight(_.assign, function(a, b) { + * return typeof a == 'undefined' ? b : a; + * }); + * + * var object = { 'name': 'barney' }; + * defaults(object, { 'name': 'fred', 'employer': 'slate' }); + * // => { 'name': 'barney', 'employer': 'slate' } + */ +var assign = function(object, source, guard) { + var index, iterable = object, result = iterable; + if (!iterable) return result; + var args = arguments, + argsIndex = 0, + argsLength = typeof guard == 'number' ? 2 : args.length; + if (argsLength > 3 && typeof args[argsLength - 2] == 'function') { + var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2); + } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') { + callback = args[--argsLength]; + } + while (++argsIndex < argsLength) { + iterable = args[argsIndex]; + if (iterable && objectTypes[typeof iterable]) { + var ownIndex = -1, + ownProps = objectTypes[typeof iterable] && keys(iterable), + length = ownProps ? ownProps.length : 0; + + while (++ownIndex < length) { + index = ownProps[ownIndex]; + result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]; + } + } + } + return result +}; + +module.exports = assign; + +},{"lodash._basecreatecallback":5,"lodash._objecttypes":14,"lodash.keys":30}],21:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` * Copyright 2012-2013 The Dojo Foundation * Based on Underscore.js 1.5.2 @@ -1212,115 +1441,90 @@ function bind(func, thisArg) { module.exports = bind; -},{"lodash._createwrapper":13,"lodash._slice":25}],13:[function(require,module,exports){ +},{"lodash._createwrapper":8,"lodash._slice":19}],22:[function(require,module,exports){ /** - * Lo-Dash 2.4.1 (Custom Build) + * Lo-Dash 2.4.4 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` * Copyright 2012-2013 The Dojo Foundation * Based on Underscore.js 1.5.2 * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseBind = require('lodash._basebind'), - baseCreateWrapper = require('lodash._basecreatewrapper'), - isFunction = require('lodash.isfunction'), - slice = require('lodash._slice'); +var baseCreateCallback = require('lodash._basecreatecallback'), + baseIsEqual = require('lodash._baseisequal'), + isObject = require('lodash.isobject'), + keys = require('lodash.keys'), + property = require('lodash.property'); /** - * Used for `Array` method references. + * Produces a callback bound to an optional `thisArg`. If `func` is a property + * name the created callback will return the property value for a given element. + * If `func` is an object the created callback will return `true` for elements + * that contain the equivalent object properties, otherwise it will return `false`. * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; - -/** Native method shortcuts */ -var push = arrayRef.push, - unshift = arrayRef.unshift; - -/** - * Creates a function that, when called, either curries or invokes `func` - * with an optional `this` binding and partially applied arguments. + * @static + * @memberOf _ + * @category Utilities + * @param {*} [func=identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of the created callback. + * @param {number} [argCount] The number of arguments the callback accepts. + * @returns {Function} Returns a callback function. + * @example * - * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of method flags to compose. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` - * 8 - `_.curry` (bound) - * 16 - `_.partial` - * 32 - `_.partialRight` - * @param {Array} [partialArgs] An array of arguments to prepend to those - * provided to the new function. - * @param {Array} [partialRightArgs] An array of arguments to append to those - * provided to the new function. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new function. + * var characters = [ + * { 'name': 'barney', 'age': 36 }, + * { 'name': 'fred', 'age': 40 } + * ]; + * + * // wrap to create custom callback shorthands + * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { + * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); + * return !match ? func(callback, thisArg) : function(object) { + * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; + * }; + * }); + * + * _.filter(characters, 'age__gt38'); + * // => [{ 'name': 'fred', 'age': 40 }] */ -function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - isPartial = bitmask & 16, - isPartialRight = bitmask & 32; - - if (!isBindKey && !isFunction(func)) { - throw new TypeError; +function createCallback(func, thisArg, argCount) { + var type = typeof func; + if (func == null || type == 'function') { + return baseCreateCallback(func, thisArg, argCount); } - if (isPartial && !partialArgs.length) { - bitmask &= ~16; - isPartial = partialArgs = false; + // handle "_.pluck" style callback shorthands + if (type != 'object') { + return property(func); } - if (isPartialRight && !partialRightArgs.length) { - bitmask &= ~32; - isPartialRight = partialRightArgs = false; + var props = keys(func), + key = props[0], + a = func[key]; + + // handle "_.where" style callback shorthands + if (props.length == 1 && a === a && !isObject(a)) { + // fast path the common case of providing an object with a single + // property containing a primitive value + return function(object) { + var b = object[key]; + return a === b && (a !== 0 || (1 / a == 1 / b)); + }; } - var bindData = func && func.__bindData__; - if (bindData && bindData !== true) { - // clone `bindData` - bindData = slice(bindData); - if (bindData[2]) { - bindData[2] = slice(bindData[2]); - } - if (bindData[3]) { - bindData[3] = slice(bindData[3]); - } - // set `thisBinding` is not previously bound - if (isBind && !(bindData[1] & 1)) { - bindData[4] = thisArg; - } - // set if previously bound but not currently (subsequent curried functions) - if (!isBind && bindData[1] & 1) { - bitmask |= 8; - } - // set curried arity if not yet set - if (isCurry && !(bindData[1] & 4)) { - bindData[5] = arity; - } - // append partial left arguments - if (isPartial) { - push.apply(bindData[2] || (bindData[2] = []), partialArgs); - } - // append partial right arguments - if (isPartialRight) { - unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); + return function(object) { + var length = props.length, + result = false; + + while (length--) { + if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { + break; + } } - // merge flags - bindData[1] |= bitmask; - return createWrapper.apply(null, bindData); - } - // fast path for `_.bind` - var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; - return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); + return result; + }; } -module.exports = createWrapper; +module.exports = createCallback; -},{"lodash._basebind":14,"lodash._basecreatewrapper":19,"lodash._slice":25,"lodash.isfunction":24}],14:[function(require,module,exports){ +},{"lodash._basecreatecallback":5,"lodash._baseisequal":7,"lodash.isobject":29,"lodash.keys":30,"lodash.property":32}],23:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1329,63 +1533,31 @@ module.exports = createWrapper; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreate = require('lodash._basecreate'), - isObject = require('lodash.isobject'), - setBindData = require('lodash._setbinddata'), - slice = require('lodash._slice'); +var escapeHtmlChar = require('lodash._escapehtmlchar'), + keys = require('lodash.keys'), + reUnescapedHtml = require('lodash._reunescapedhtml'); /** - * Used for `Array` method references. + * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their + * corresponding HTML entities. * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; - -/** Native method shortcuts */ -var push = arrayRef.push; - -/** - * The base implementation of `_.bind` that creates the bound function and - * sets its meta data. + * @static + * @memberOf _ + * @category Utilities + * @param {string} string The string to escape. + * @returns {string} Returns the escaped string. + * @example * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new bound function. + * _.escape('Fred, Wilma, & Pebbles'); + * // => 'Fred, Wilma, & Pebbles' */ -function baseBind(bindData) { - var func = bindData[0], - partialArgs = bindData[2], - thisArg = bindData[4]; - - function bound() { - // `Function#bind` spec - // http://es5.github.io/#x15.3.4.5 - if (partialArgs) { - // avoid `arguments` object deoptimizations by using `slice` instead - // of `Array.prototype.slice.call` and not assigning `arguments` to a - // variable as a ternary expression - var args = slice(partialArgs); - push.apply(args, arguments); - } - // mimic the constructor's `return` behavior - // http://es5.github.io/#x13.2.2 - if (this instanceof bound) { - // ensure `new bound` is an instance of `func` - var thisBinding = baseCreate(func.prototype), - result = func.apply(thisBinding, args || arguments); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisArg, args || arguments); - } - setBindData(bound, bindData); - return bound; +function escape(string) { + return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); } -module.exports = baseBind; +module.exports = escape; -},{"lodash._basecreate":15,"lodash._setbinddata":9,"lodash._slice":25,"lodash.isobject":18}],15:[function(require,module,exports){ -(function (global){ +},{"lodash._escapehtmlchar":9,"lodash._reunescapedhtml":16,"lodash.keys":30}],24:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1394,47 +1566,74 @@ module.exports = baseBind; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var isNative = require('lodash._isnative'), - isObject = require('lodash.isobject'), - noop = require('lodash.noop'); - -/* Native method shortcuts for methods with the same name as other `lodash` methods */ -var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate; +var createCallback = require('lodash.createcallback'), + forOwn = require('lodash.forown'); /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. + * Checks if the given callback returns truey value for **all** elements of + * a collection. The callback is bound to `thisArg` and invoked with three + * arguments; (value, index|key, collection). * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. + * If a property name is provided for `callback` the created "_.pluck" style + * callback will return the property value of the given element. + * + * If an object is provided for `callback` the created "_.where" style callback + * will return `true` for elements that have the properties of the given object, + * else `false`. + * + * @static + * @memberOf _ + * @alias all + * @category Collections + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [callback=identity] The function called + * per iteration. If a property name or object is provided it will be used + * to create a "_.pluck" or "_.where" style callback, respectively. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {boolean} Returns `true` if all elements passed the callback check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes']); + * // => false + * + * var characters = [ + * { 'name': 'barney', 'age': 36 }, + * { 'name': 'fred', 'age': 40 } + * ]; + * + * // using "_.pluck" callback shorthand + * _.every(characters, 'age'); + * // => true + * + * // using "_.where" callback shorthand + * _.every(characters, { 'age': 36 }); + * // => false */ -function baseCreate(prototype, properties) { - return isObject(prototype) ? nativeCreate(prototype) : {}; -} -// fallback for browsers without `Object.create` -if (!nativeCreate) { - baseCreate = (function() { - function Object() {} - return function(prototype) { - if (isObject(prototype)) { - Object.prototype = prototype; - var result = new Object; - Object.prototype = null; +function every(collection, callback, thisArg) { + var result = true; + callback = createCallback(callback, thisArg, 3); + + var index = -1, + length = collection ? collection.length : 0; + + if (typeof length == 'number') { + while (++index < length) { + if (!(result = !!callback(collection[index], index, collection))) { + break; } - return result || global.Object(); - }; - }()); + } + } else { + forOwn(collection, function(value, index, collection) { + return (result = !!callback(value, index, collection)); + }); + } + return result; } -module.exports = baseCreate; +module.exports = every; -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"lodash._isnative":16,"lodash.isobject":18,"lodash.noop":17}],16:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],17:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],18:[function(require,module,exports){ +},{"lodash.createcallback":22,"lodash.forown":26}],25:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1443,39 +1642,54 @@ arguments[4][11][0].apply(exports,arguments) * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var objectTypes = require('lodash._objecttypes'); +var baseCreateCallback = require('lodash._basecreatecallback'), + objectTypes = require('lodash._objecttypes'); /** - * Checks if `value` is the language type of Object. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * Iterates over own and inherited enumerable properties of an object, + * executing the callback for each property. The callback is bound to `thisArg` + * and invoked with three arguments; (value, key, object). Callbacks may exit + * iteration early by explicitly returning `false`. * * @static * @memberOf _ + * @type Function * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an object, else `false`. + * @param {Object} object The object to iterate over. + * @param {Function} [callback=identity] The function called per iteration. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns `object`. * @example * - * _.isObject({}); - * // => true + * function Shape() { + * this.x = 0; + * this.y = 0; + * } * - * _.isObject([1, 2, 3]); - * // => true + * Shape.prototype.move = function(x, y) { + * this.x += x; + * this.y += y; + * }; * - * _.isObject(1); - * // => false + * _.forIn(new Shape, function(value, key) { + * console.log(key); + * }); + * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) */ -function isObject(value) { - // check if the value is the ECMAScript language type of Object - // http://es5.github.io/#x8 - // and avoid a V8 bug - // http://code.google.com/p/v8/issues/detail?id=2291 - return !!(value && objectTypes[typeof value]); -} +var forIn = function(collection, callback, thisArg) { + var index, iterable = collection, result = iterable; + if (!iterable) return result; + if (!objectTypes[typeof iterable]) return result; + callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); + for (index in iterable) { + if (callback(iterable[index], index, collection) === false) return result; + } + return result +}; -module.exports = isObject; +module.exports = forIn; -},{"lodash._objecttypes":29}],19:[function(require,module,exports){ +},{"lodash._basecreatecallback":5,"lodash._objecttypes":14}],26:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1484,86 +1698,80 @@ module.exports = isObject; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreate = require('lodash._basecreate'), - isObject = require('lodash.isobject'), - setBindData = require('lodash._setbinddata'), - slice = require('lodash._slice'); +var baseCreateCallback = require('lodash._basecreatecallback'), + keys = require('lodash.keys'), + objectTypes = require('lodash._objecttypes'); /** - * Used for `Array` method references. + * Iterates over own enumerable properties of an object, executing the callback + * for each property. The callback is bound to `thisArg` and invoked with three + * arguments; (value, key, object). Callbacks may exit iteration early by + * explicitly returning `false`. * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. + * @static + * @memberOf _ + * @type Function + * @category Objects + * @param {Object} object The object to iterate over. + * @param {Function} [callback=identity] The function called per iteration. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns `object`. + * @example + * + * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { + * console.log(key); + * }); + * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) */ -var arrayRef = []; +var forOwn = function(collection, callback, thisArg) { + var index, iterable = collection, result = iterable; + if (!iterable) return result; + if (!objectTypes[typeof iterable]) return result; + callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); + var ownIndex = -1, + ownProps = objectTypes[typeof iterable] && keys(iterable), + length = ownProps ? ownProps.length : 0; -/** Native method shortcuts */ -var push = arrayRef.push; + while (++ownIndex < length) { + index = ownProps[ownIndex]; + if (callback(iterable[index], index, collection) === false) return result; + } + return result +}; + +module.exports = forOwn; +},{"lodash._basecreatecallback":5,"lodash._objecttypes":14,"lodash.keys":30}],27:[function(require,module,exports){ /** - * The base implementation of `createWrapper` that creates the wrapper and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new function. + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license */ -function baseCreateWrapper(bindData) { - var func = bindData[0], - bitmask = bindData[1], - partialArgs = bindData[2], - partialRightArgs = bindData[3], - thisArg = bindData[4], - arity = bindData[5]; - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - key = func; - - function bound() { - var thisBinding = isBind ? thisArg : this; - if (partialArgs) { - var args = slice(partialArgs); - push.apply(args, arguments); - } - if (partialRightArgs || isCurry) { - args || (args = slice(arguments)); - if (partialRightArgs) { - push.apply(args, partialRightArgs); - } - if (isCurry && args.length < arity) { - bitmask |= 16 & ~32; - return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); - } - } - args || (args = arguments); - if (isBindKey) { - func = thisBinding[key]; - } - if (this instanceof bound) { - thisBinding = baseCreate(func.prototype); - var result = func.apply(thisBinding, args); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisBinding, args); - } - setBindData(bound, bindData); - return bound; +/** + * This method returns the first argument provided to it. + * + * @static + * @memberOf _ + * @category Utilities + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'name': 'fred' }; + * _.identity(object) === object; + * // => true + */ +function identity(value) { + return value; } -module.exports = baseCreateWrapper; +module.exports = identity; -},{"lodash._basecreate":20,"lodash._setbinddata":9,"lodash._slice":25,"lodash.isobject":23}],20:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._isnative":21,"lodash.isobject":23,"lodash.noop":22}],21:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],22:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],23:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":29}],24:[function(require,module,exports){ +},{}],28:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1592,47 +1800,7 @@ function isFunction(value) { module.exports = isFunction; -},{}],25:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** - * Slices the `collection` from the `start` index up to, but not including, - * the `end` index. - * - * Note: This function is used instead of `Array#slice` to support node lists - * in IE < 9 and to ensure dense arrays are returned. - * - * @private - * @param {Array|Object|string} collection The collection to slice. - * @param {number} start The start index. - * @param {number} end The end index. - * @returns {Array} Returns the new array. - */ -function slice(array, start, end) { - start || (start = 0); - if (typeof end == 'undefined') { - end = array ? array.length : 0; - } - var index = -1, - length = end - start || 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = array[start + index]; - } - return result; -} - -module.exports = slice; - -},{}],26:[function(require,module,exports){ +},{}],29:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1641,96 +1809,39 @@ module.exports = slice; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ +var objectTypes = require('lodash._objecttypes'); /** - * This method returns the first argument provided to it. + * Checks if `value` is the language type of Object. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ - * @category Utilities - * @param {*} value Any value. - * @returns {*} Returns `value`. + * @category Objects + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if the `value` is an object, else `false`. * @example * - * var object = { 'name': 'fred' }; - * _.identity(object) === object; + * _.isObject({}); * // => true - */ -function identity(value) { - return value; -} - -module.exports = identity; - -},{}],27:[function(require,module,exports){ -(function (global){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var isNative = require('lodash._isnative'); - -/** Used to detect functions containing a `this` reference */ -var reThis = /\bthis\b/; - -/** - * An object used to flag environments features. - * - * @static - * @memberOf _ - * @type Object - */ -var support = {}; - -/** - * Detect if functions can be decompiled by `Function#toString` - * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps). * - * @memberOf _.support - * @type boolean - */ -support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; }); - -/** - * Detect if `Function#name` is supported (all but IE). + * _.isObject([1, 2, 3]); + * // => true * - * @memberOf _.support - * @type boolean - */ -support.funcNames = typeof Function.name == 'string'; - -module.exports = support; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"lodash._isnative":28}],28:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],29:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + * _.isObject(1); + * // => false */ +function isObject(value) { + // check if the value is the ECMAScript language type of Object + // http://es5.github.io/#x8 + // and avoid a V8 bug + // http://code.google.com/p/v8/issues/detail?id=2291 + return !!(value && objectTypes[typeof value]); +} -/** Used to determine if values are of the language type Object */ -var objectTypes = { - 'boolean': false, - 'function': true, - 'object': true, - 'number': false, - 'string': false, - 'undefined': false -}; - -module.exports = objectTypes; +module.exports = isObject; -},{}],30:[function(require,module,exports){ +},{"lodash._objecttypes":14}],30:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1768,9 +1879,7 @@ var keys = !nativeKeys ? shimKeys : function(object) { module.exports = keys; -},{"lodash._isnative":31,"lodash._shimkeys":32,"lodash.isobject":33}],31:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],32:[function(require,module,exports){ +},{"lodash._isnative":12,"lodash._shimkeys":18,"lodash.isobject":29}],31:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1779,40 +1888,26 @@ arguments[4][10][0].apply(exports,arguments) * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var objectTypes = require('lodash._objecttypes'); - -/** Used for native method references */ -var objectProto = Object.prototype; - -/** Native method shortcuts */ -var hasOwnProperty = objectProto.hasOwnProperty; /** - * A fallback implementation of `Object.keys` which produces an array of the - * given object's own enumerable property names. + * A no-operation function. * - * @private - * @type Function - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. + * @static + * @memberOf _ + * @category Utilities + * @example + * + * var object = { 'name': 'fred' }; + * _.noop(object) === undefined; + * // => true */ -var shimKeys = function(object) { - var index, iterable = object, result = []; - if (!iterable) return result; - if (!(objectTypes[typeof object])) return result; - for (index in iterable) { - if (hasOwnProperty.call(iterable, index)) { - result.push(index); - } - } - return result -}; +function noop() { + // no operation performed +} -module.exports = shimKeys; +module.exports = noop; -},{"lodash._objecttypes":29}],33:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":29}],34:[function(require,module,exports){ +},{}],32:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1821,31 +1916,41 @@ arguments[4][18][0].apply(exports,arguments) * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var escapeHtmlChar = require('lodash._escapehtmlchar'), - keys = require('lodash.keys'), - reUnescapedHtml = require('lodash._reunescapedhtml'); /** - * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their - * corresponding HTML entities. + * Creates a "_.pluck" style function, which returns the `key` value of a + * given object. * * @static * @memberOf _ * @category Utilities - * @param {string} string The string to escape. - * @returns {string} Returns the escaped string. + * @param {string} key The name of the property to retrieve. + * @returns {Function} Returns the new function. * @example * - * _.escape('Fred, Wilma, & Pebbles'); - * // => 'Fred, Wilma, & Pebbles' + * var characters = [ + * { 'name': 'fred', 'age': 40 }, + * { 'name': 'barney', 'age': 36 } + * ]; + * + * var getName = _.property('name'); + * + * _.map(characters, getName); + * // => ['barney', 'fred'] + * + * _.sortBy(characters, getName); + * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] */ -function escape(string) { - return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); +function property(key) { + return function(object) { + return object[key]; + }; } -module.exports = escape; +module.exports = property; -},{"lodash._escapehtmlchar":35,"lodash._reunescapedhtml":37,"lodash.keys":39}],35:[function(require,module,exports){ +},{}],33:[function(require,module,exports){ +(function (global){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1854,1853 +1959,1608 @@ module.exports = escape; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var htmlEscapes = require('lodash._htmlescapes'); +var isNative = require('lodash._isnative'); + +/** Used to detect functions containing a `this` reference */ +var reThis = /\bthis\b/; /** - * Used by `escape` to convert characters to HTML entities. + * An object used to flag environments features. * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. + * @static + * @memberOf _ + * @type Object */ -function escapeHtmlChar(match) { - return htmlEscapes[match]; -} - -module.exports = escapeHtmlChar; +var support = {}; -},{"lodash._htmlescapes":36}],36:[function(require,module,exports){ /** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + * Detect if functions can be decompiled by `Function#toString` + * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps). + * + * @memberOf _.support + * @type boolean */ +support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; }); /** - * Used to convert characters to HTML entities: + * Detect if `Function#name` is supported (all but IE). * - * Though the `>` character is escaped for symmetry, characters like `>` and `/` - * don't require escaping in HTML and have no special meaning unless they're part - * of a tag or an unquoted attribute value. - * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") + * @memberOf _.support + * @type boolean */ -var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' +support.funcNames = typeof Function.name == 'string'; + +module.exports = support; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"lodash._isnative":12}],34:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require("react"); + +/* You know when you want to propagate input to a parent... + * but then that parent does something with the input... + * then changing the props of the input... + * on every keystroke... + * so if some input is invalid or incomplete... + * the input gets reset or otherwise effed... + * + * This is the solution. + * + * Enough melodrama. Its an input that only sends changes + * to its parent on blur. + */ +var BlurInput = React.createClass({displayName: 'BlurInput', + propTypes: { + value: React.PropTypes.string.isRequired, + onChange: React.PropTypes.func.isRequired + }, + getInitialState: function() { + return { value: this.props.value }; + }, + render: function() { + return this.transferPropsTo(React.DOM.input( + {type:"text", + value:this.state.value, + onChange:this.handleChange, + onBlur:this.handleBlur} )); + }, + componentWillReceiveProps: function(nextProps) { + this.setState({ value: nextProps.value }); + }, + handleChange: function(e) { + this.setState({ value: e.target.value }); + }, + handleBlur: function(e) { + this.props.onChange(e.target.value); + } +}); + +module.exports = BlurInput; + +},{"react":43}],35:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require('react'); +var RCSS = require('rcss'); +var _ = require('underscore'); + +var outerStyle = { + display: 'inline-block', }; -module.exports = htmlEscapes; +var buttonStyle = { + backgroundColor: 'white', + border: '1px solid #ccc', + borderBottom: '1px solid #ccc', + borderLeft: '0', + cursor: 'pointer', + margin: '0', + padding: '5px 10px', + position: 'relative', // for hover -},{}],37:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + ':first-child': { + borderLeft: '1px solid #ccc', + borderTopLeftRadius: '3px', + borderBottomLeftRadius: '3px' + }, + + ':last-child': { + borderRight: '1px solid #ccc', + borderTopRightRadius: '3px', + borderBottomRightRadius: '3px' + }, + + ':hover': { + backgroundColor: '#ccc' + }, + + ':focus': { + zIndex: '2' + } +}; + +var selectedStyle = { + backgroundColor: '#ddd' +}; + +RCSS.createClass(outerStyle); +RCSS.createClass(buttonStyle); +RCSS.createClass(selectedStyle); + +/* ButtonGroup is an aesthetically pleasing group of buttons. + * + * The class requires these properties: + * buttons - an array of objects with keys: + * "value": this is the value returned when the button is selected + * "text": this is the text shown on the button + * "title": this is the title-text shown on hover + * onChange - a function that is provided with the updated value + * (which it then is responsible for updating) + * + * The class has these optional properties: + * value - the initial value of the button selected, defaults to null. + * allowEmpty - if false, exactly one button _must_ be selected; otherwise + * it defaults to true and _at most_ one button (0 or 1) may be selected. + * + * Requires stylesheets/perseus-admin-package/editor.less to look nice. */ -var htmlEscapes = require('lodash._htmlescapes'), - keys = require('lodash.keys'); -/** Used to match HTML entities and HTML characters */ -var reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); +var ButtonGroup = React.createClass({displayName: 'ButtonGroup', + propTypes: { + value: React.PropTypes.any, + buttons: React.PropTypes.arrayOf(React.PropTypes.shape({ + value: React.PropTypes.any.isRequired, + text: React.PropTypes.renderable, + title: React.PropTypes.string + })).isRequired, + onChange: React.PropTypes.func.isRequired, + allowEmpty: React.PropTypes.bool + }, -module.exports = reUnescapedHtml; + getDefaultProps: function() { + return { + value: null, + allowEmpty: true + }; + }, -},{"lodash._htmlescapes":38,"lodash.keys":39}],38:[function(require,module,exports){ -arguments[4][36][0].apply(exports,arguments) -},{"dup":36}],39:[function(require,module,exports){ -arguments[4][30][0].apply(exports,arguments) -},{"dup":30,"lodash._isnative":40,"lodash._shimkeys":41,"lodash.isobject":43}],40:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],41:[function(require,module,exports){ -arguments[4][32][0].apply(exports,arguments) -},{"dup":32,"lodash._objecttypes":42}],42:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29}],43:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":44}],44:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29}],45:[function(require,module,exports){ -var _validCSSProps = { - 'alignment-adjust': true, - 'alignment-baseline': true, - 'animation': true, - 'animation-delay': true, - 'animation-direction': true, - 'animation-duration': true, - 'animation-iteration-count': true, - 'animation-name': true, - 'animation-play-state': true, - 'animation-timing-function': true, - 'appearance': true, - 'backface-visibility': true, - 'background': true, - 'background-attachment': true, - 'background-clip': true, - 'background-color': true, - 'background-image': true, - 'background-origin': true, - 'background-position': true, - 'background-repeat': true, - 'background-size': true, - 'baseline-shift': true, - 'bookmark-label': true, - 'bookmark-level': true, - 'bookmark-target': true, - 'border': true, - 'border-bottom': true, - 'border-bottom-color': true, - 'border-bottom-left-radius': true, - 'border-bottom-right-radius': true, - 'border-bottom-style': true, - 'border-bottom-width': true, - 'border-collapse': true, - 'border-color': true, - 'border-image': true, - 'border-image-outset': true, - 'border-image-repeat': true, - 'border-image-slice': true, - 'border-image-source': true, - 'border-image-width': true, - 'border-left': true, - 'border-left-color': true, - 'border-left-style': true, - 'border-left-width': true, - 'border-radius': true, - 'border-right': true, - 'border-right-color': true, - 'border-right-style': true, - 'border-right-width': true, - 'border-spacing': true, - 'border-style': true, - 'border-top': true, - 'border-top-color': true, - 'border-top-left-radius': true, - 'border-top-right-radius': true, - 'border-top-style': true, - 'border-top-width': true, - 'border-width': true, - 'bottom': true, - 'box-align': true, - 'box-decoration-break': true, - 'box-direction': true, - 'box-flex': true, - 'box-flex-group': true, - 'box-lines': true, - 'box-ordinal-group': true, - 'box-orient': true, - 'box-pack': true, - 'box-shadow': true, - 'box-sizing': true, - 'caption-side': true, - 'clear': true, - 'clip': true, - 'color': true, - 'color-profile': true, - 'column-count': true, - 'column-fill': true, - 'column-gap': true, - 'column-rule': true, - 'column-rule-color': true, - 'column-rule-style': true, - 'column-rule-width': true, - 'column-span': true, - 'column-width': true, - 'columns': true, - 'content': true, - 'counter-increment': true, - 'counter-reset': true, - 'crop': true, - 'cursor': true, - 'direction': true, - 'display': true, - 'dominant-baseline': true, - 'drop-initial-after-adjust': true, - 'drop-initial-after-align': true, - 'drop-initial-before-adjust': true, - 'drop-initial-before-align': true, - 'drop-initial-size': true, - 'drop-initial-value': true, - 'empty-cells': true, - 'fit': true, - 'fit-position': true, - 'float': true, - 'float-offset': true, - 'font': true, - 'font-family': true, - 'font-size': true, - 'font-size-adjust': true, - 'font-stretch': true, - 'font-style': true, - 'font-variant': true, - 'font-weight': true, - 'grid-columns': true, - 'grid-rows': true, - 'hanging-punctuation': true, - 'height': true, - 'hyphenate-after': true, - 'hyphenate-before': true, - 'hyphenate-character': true, - 'hyphenate-lines': true, - 'hyphenate-resource': true, - 'hyphens': true, - 'icon': true, - 'image-orientation': true, - 'image-resolution': true, - 'inline-box-align': true, - 'left': true, - 'letter-spacing': true, - 'line-height': true, - 'line-stacking': true, - 'line-stacking-ruby': true, - 'line-stacking-shift': true, - 'line-stacking-strategy': true, - 'list-style': true, - 'list-style-image': true, - 'list-style-position': true, - 'list-style-type': true, - 'margin': true, - 'margin-bottom': true, - 'margin-left': true, - 'margin-right': true, - 'margin-top': true, - 'mark': true, - 'mark-after': true, - 'mark-before': true, - 'marks': true, - 'marquee-direction': true, - 'marquee-play-count': true, - 'marquee-speed': true, - 'marquee-style': true, - 'max-height': true, - 'max-width': true, - 'min-height': true, - 'min-width': true, - 'move-to': true, - 'nav-down': true, - 'nav-index': true, - 'nav-left': true, - 'nav-right': true, - 'nav-up': true, - 'opacity': true, - 'orphans': true, - 'outline': true, - 'outline-color': true, - 'outline-offset': true, - 'outline-style': true, - 'outline-width': true, - 'overflow': true, - 'overflow-style': true, - 'overflow-x': true, - 'overflow-y': true, - 'padding': true, - 'padding-bottom': true, - 'padding-left': true, - 'padding-right': true, - 'padding-top': true, - 'page': true, - 'page-break-after': true, - 'page-break-before': true, - 'page-break-inside': true, - 'page-policy': true, - 'perspective': true, - 'perspective-origin': true, - 'phonemes': true, - 'position': true, - 'punctuation-trim': true, - 'quotes': true, - 'rendering-intent': true, - 'resize': true, - 'rest': true, - 'rest-after': true, - 'rest-before': true, - 'right': true, - 'rotation': true, - 'rotation-point': true, - 'ruby-align': true, - 'ruby-overhang': true, - 'ruby-position': true, - 'ruby-span': true, - 'size': true, - 'string-set': true, - 'table-layout': true, - 'target': true, - 'target-name': true, - 'target-new': true, - 'target-position': true, - 'text-align': true, - 'text-align-last': true, - 'text-decoration': true, - 'text-height': true, - 'text-indent': true, - 'text-justify': true, - 'text-outline': true, - 'text-overflow': true, - 'text-shadow': true, - 'text-transform': true, - 'text-wrap': true, - 'top': true, - 'transform': true, - 'transform-origin': true, - 'transform-style': true, - 'transition': true, - 'transition-delay': true, - 'transition-duration': true, - 'transition-property': true, - 'transition-timing-function': true, - 'unicode-bidi': true, - 'user-select': true, - 'vertical-align': true, - 'visibility': true, - 'voice-balance': true, - 'voice-duration': true, - 'voice-pitch': true, - 'voice-pitch-range': true, - 'voice-rate': true, - 'voice-stress': true, - 'voice-volume': true, - 'white-space': true, - 'widows': true, - 'width': true, - 'word-break': true, - 'word-spacing': true, - 'word-wrap': true, - 'z-index': true -} - -var vendorPrefixRegEx = /^-.+-/; - -module.exports = function(prop) { - if (prop[0] === '-') { - return !!_validCSSProps[prop.replace(vendorPrefixRegEx, '')]; - } - return !!_validCSSProps[prop]; -}; - -},{}],46:[function(require,module,exports){ -var every = require('lodash.every'); + render: function() { + var value = this.props.value; + var buttons = _(this.props.buttons).map(function(button, i) { + var maybeSelected = button.value === value ? + selectedStyle.className : + ""; + return React.DOM.button( {title:button.title, + id:"" + i, + ref:"button" + i, + key:"" + i, + className:(buttonStyle.className + " " + maybeSelected), + onClick:this.toggleSelect.bind(this, button.value)}, + button.text || "" + button.value + ); + }.bind(this)); -function isValidRatio(ratio) { - var re = /\d+\/\d+/; - return !!ratio.match(re); -} + return React.DOM.div( {className:outerStyle.className}, + buttons + ); + }, -function isValidInteger(integer) { - var re = /\d+/; - return !!integer.match(re); -} + focus: function() { + this.getDOMNode().focus(); + return true; + }, -function isValidLength(length) { - var re = /\d+(?:ex|em|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc)?$/; - return !!length.match(re); -} + toggleSelect: function(newValue) { + var value = this.props.value; -function isValidOrientation(orientation) { - return orientation === 'landscape' || orientation === 'portrait'; -} + if (this.props.allowEmpty) { + // Select the new button or unselect if it's already selected + this.props.onChange(value !== newValue ? newValue : null); + } else { + this.props.onChange(newValue); + } + } +}); -function isValidScan(scan) { - return scan === 'progressive' || scan === 'interlace'; -} +module.exports = ButtonGroup; -function isValidResolution(resolution) { - var re = /(?:\+|-)?(?:\d+|\d*\.\d+)(?:e\d+)?(?:dpi|dpcm|dppx)$/; - return !!resolution.match(re); -} +},{"rcss":38,"react":43,"underscore":44}],36:[function(require,module,exports){ +/** @jsx React.DOM */ -function isValidValue(value) { - return value != null && typeof value !== 'boolean' && value !== ''; -} +var React = require('react'); -var _mediaFeatureValidator = { - 'width': isValidLength, - 'min-width': isValidLength, - 'max-width': isValidLength, - 'height': isValidLength, - 'min-height': isValidLength, - 'max-height': isValidLength, - 'device-width': isValidLength, - 'min-device-width': isValidLength, - 'max-device-width': isValidLength, - 'device-height': isValidLength, - 'min-device-height': isValidLength, - 'max-device-height': isValidLength, - 'aspect-ratio': isValidRatio, - 'min-aspect-ratio': isValidRatio, - 'max-aspect-ratio': isValidRatio, - 'device-aspect-ratio': isValidRatio, - 'min-device-aspect-ratio': isValidRatio, - 'max-device-aspect-ratio': isValidRatio, - 'color': isValidValue, - 'min-color': isValidValue, - 'max-color': isValidValue, - 'color-index': isValidInteger, - 'min-color-index': isValidInteger, - 'max-color-index': isValidInteger, - 'monochrome': isValidInteger, - 'min-monochrome': isValidInteger, - 'max-monochrome': isValidInteger, - 'resolution': isValidResolution, - 'min-resolution': isValidResolution, - 'max-resolution': isValidResolution, - 'scan': isValidScan, - 'grid': isValidInteger, - 'orientation': isValidOrientation +/* This component makes its children a drag target. Example: + * + * Drag to me + * + * ... + * + * handleDrop: function(e) { + * this.addImages(e.nativeEvent.dataTransfer.files); + * } + * + * Now "Drag to me" will be a drag target - when something is dragged over it, + * the element will become partially transparent as a visual indicator that + * it's a target. + */ +// TODO(joel) - indicate before the hover is over the target that it's possible +// to drag into the target. This would (I think) require a high level handler - +// like on Perseus itself, waiting for onDragEnter, then passing down the +// event. Sounds like a pain. Possible workaround - create a div covering the +// entire page... +// +// Other extensions: +// * custom styles for global drag and dragOver +// * only respond to certain types of drags (only images for instance)! +var DragTarget = React.createClass({displayName: 'DragTarget', + propTypes: { + onDrop: React.PropTypes.func.isRequired, + component: React.PropTypes.component, + shouldDragHighlight: React.PropTypes.func + }, + render: function() { + var opacity = this.state.dragHover ? { "opacity": 0.3 } : {}; + var component = this.props.component; + + return this.transferPropsTo( + component( {style:opacity, + onDrop:this.handleDrop, + onDragEnd:this.handleDragEnd, + onDragOver:this.handleDragOver, + onDragEnter:this.handleDragEnter, + onDragLeave:this.handleDragLeave}, + this.props.children + ) + ); + }, + getInitialState: function() { + return { dragHover: false }; + }, + getDefaultProps: function() { + return { + component: React.DOM.div, + shouldDragHighlight: function() {return true;} + }; + }, + handleDrop: function(e) { + e.stopPropagation(); + e.preventDefault(); + this.setState({ dragHover: false }); + this.props.onDrop(e); + }, + handleDragEnd: function() { + this.setState({ dragHover: false }); + }, + handleDragOver: function(e) { + e.preventDefault(); + }, + handleDragLeave: function() { + this.setState({ dragHover: false }); + }, + handleDragEnter: function(e) { + this.setState({ dragHover: this.props.shouldDragHighlight(e) }); + } +}); + +module.exports = DragTarget; + +},{"react":43}],37:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require('react'); +var RCSS = require('rcss'); +var _ = require('underscore'); + +var colors = { + grayLight: '#aaa', + basicBorderColor: '#ccc', + white: '#fff' }; -var _validMediaFeatures = { - 'width': true, - 'min-width': true, - 'max-width': true, - 'height': true, - 'min-height': true, - 'max-height': true, - 'device-width': true, - 'min-device-width': true, - 'max-device-width': true, - 'device-height': true, - 'min-device-height': true, - 'max-device-height': true, - 'aspect-ratio': true, - 'min-aspect-ratio': true, - 'max-aspect-ratio': true, - 'device-aspect-ratio': true, - 'min-device-aspect-ratio': true, - 'max-device-aspect-ratio': true, - 'color': true, - 'min-color': true, - 'max-color': true, - 'color-index': true, - 'min-color-index': true, - 'max-color-index': true, - 'monochrome': true, - 'min-monochrome': true, - 'max-monochrome': true, - 'resolution': true, - 'min-resolution': true, - 'max-resolution': true, - 'scan': true, - 'grid': true, - 'orientation': true +var infoTip = { + display: 'inline-block', + marginLeft: '5px', + position: 'relative' }; -var _validMediaTypes = { - 'all': true, - 'aural': true, - 'braille': true, - 'handheld': true, - 'print': true, - 'projection': true, - 'screen': true, - 'tty': true, - 'tv': true, - 'embossed': true +var infoTipI = { + cursor: 'pointer' }; -var _validQualifiers = { - 'not': true, - 'only': true +var infoTipContainer = { + position: 'absolute', + 'top': '-12px', + left: '22px', + zIndex: '1000' }; -function isValidFeature(feature) { - return !!_validMediaFeatures[feature]; -} +var triangleBeforeAfter = { + borderBottom: '9px solid transparent', + borderTop: '9px solid transparent', + content: ' ', + height: '0', + position: 'absolute', + 'top': '0', + width: '0' +}; -function isValidQualifier(qualifier) { - return !!_validQualifiers[qualifier]; -} +var infoTipTriangle = { + height: '10px', + left: '0', + position: 'absolute', + 'top': '8px', + width: '0', + zIndex: '1', -function isValidMediaType(mediaType) { - return !!_validMediaTypes[mediaType]; -} + ':before': _.extend({}, triangleBeforeAfter, { + borderRight: '9px solid #bbb', + right: '0', + }), -function isValidQualifiedMediaType(mediaType) { - var terms = mediaType.trim().split(/\s+/); - switch (terms.length) { - case 1: - return isValidMediaType(terms[0]); - case 2: - return isValidQualifier(terms[0]) && isValidMediaType(terms[1]); - default: - return false; - } -} + ':after': _.extend({}, triangleBeforeAfter, { + borderRight: ("9px solid " + colors.white), + right: '-1px' + }) +}; -function isValidExpression(expression) { - if (expression.length < 2) { - return false; - } +var basicBorder = { + border: ("1px solid " + colors.basicBorderColor) +}; - // Parentheses are required around expressions - if (expression[0] !== '(' || expression[expression.length - 1] !== ')') { - return false; - } +var boxShadow = function(str) { return { boxShadow: str }; }; - // Remove parentheses and spacess - expression = expression.substring(1, expression.length - 1); +var verticalShadow = RCSS.merge( + basicBorder, + boxShadow(("0 1px 3px " + colors.basicBorderColor)), + { borderBottom: ("1px solid " + colors.grayLight) } +); - // Is there a value to accompany the media feature? - var featureAndValue = expression.split(/\s*:\s*/); - switch (featureAndValue.length) { - case 1: - var feature = featureAndValue[0].trim(); - return isValidFeature(feature); - case 2: - var feature = featureAndValue[0].trim(); - var value = featureAndValue[1].trim(); - return isValidFeature(feature) && - _mediaFeatureValidator[feature](value); - default: - return false; - } -} +var infoTipContentContainer = RCSS.merge(verticalShadow, { + background: colors.white, + padding: '5px 10px', + width: '240px' +}); -function isValidMediaQuery(query) { - var andSplitter = /\s+and\s+/; - var queryTerms = query.split(andSplitter); - return (isValidQualifiedMediaType(queryTerms[0]) || - isValidExpression(queryTerms[0])) && - every(queryTerms.slice(1), isValidExpression); -} +RCSS.createClass(infoTip); +RCSS.createClass(infoTipI); +RCSS.createClass(infoTipTriangle); +RCSS.createClass(verticalShadow); +RCSS.createClass(infoTipContainer); +RCSS.createClass(infoTipContentContainer); -function isValidMediaQueryList(mediaQuery) { - mediaQuery = mediaQuery.toLowerCase(); +var questionMark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2N2M3NTAxYS04YmVlLTQ0M2MtYmRiNS04OGM2N2IxN2NhYzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUJCRTk4Qjc4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUJCRTk4QjY4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGE5ZDI0OTMtODk1NC00OGFkLTlhMTgtZDAwM2MwYWNjNDJlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY3Yzc1MDFhLThiZWUtNDQzYy1iZGI1LTg4YzY3YjE3Y2FjMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqm89uYAAADMSURBVHjaXJA9DoJAEIUH1M4TUHIFsCMGen9OwCGw1YRGW2ntKel0exsojHIBC0ouQAyUviFDstmXfNmZeS+zm7XSNCXRFiRgJf0bXIHixpbhGdxBBJYC1w/xaA424MhNEATkui71fU9KqfEU78UbD9PdbJRlOdae55GmhIP+1NV1TcMwkOM41DSNHvRtMhTHMRVFQW3b6mOLgx99kue5GRp/gIOZuZGvNpTNwjD8oliANU+qqqKu6/TQBdymN57AHjzBT+B6Jx79BRgAvc49kQA4yxgAAAAASUVORK5CYII='; // @NoLint - if (mediaQuery.substring(0, 6) !== '@media') { - return false; +var InfoTip = React.createClass({displayName: 'InfoTip', + getInitialState: function() { + return { + hover: false + }; + }, + + render: function() { + return React.DOM.div( {className:infoTip.className}, + React.DOM.img( {width:10, + height:10, + src:questionMark, + onMouseEnter:this.handleMouseEnter, + onMouseLeave:this.handleMouseLeave} ), + React.DOM.div( {className:infoTipContainer.className, + style:{display: this.state.hover ? 'block' : 'none'}}, + React.DOM.div( {className:infoTipTriangle.className} ), + /* keep the classes here - used for selectors on KA */ + React.DOM.div( {className:infoTipContentContainer.className}, + this.props.children + ) + ) + ); + }, + + handleMouseEnter: function() { + this.setState({hover: true}); + }, + + handleMouseLeave: function() { + this.setState({hover: false}); } +}); - var commaSplitter = /\s*,\s*/; - var queryList = mediaQuery.substring(7, mediaQuery.length) - .split(commaSplitter); - return every(queryList, isValidMediaQuery); -} +module.exports = InfoTip; -module.exports = isValidMediaQueryList +},{"rcss":38,"react":43,"underscore":44}],38:[function(require,module,exports){ +var assign = require('lodash.assign'); -},{"lodash.every":47}],47:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var createCallback = require('lodash.createcallback'), - forOwn = require('lodash.forown'); +var styleRuleValidator = require('./styleRuleValidator'); +var styleRuleConverter = require('./styleRuleConverter'); +var mediaQueryValidator = require('valid-media-queries'); -/** - * Checks if the given callback returns truey value for **all** elements of - * a collection. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if all elements passed the callback check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes']); - * // => false - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.every(characters, 'age'); - * // => true - * - * // using "_.where" callback shorthand - * _.every(characters, { 'age': 36 }); - * // => false - */ -function every(collection, callback, thisArg) { - var result = true; - callback = createCallback(callback, thisArg, 3); +var existingClasses = {}; +var styleTag = createStyleTag(); - var index = -1, - length = collection ? collection.length : 0; +var classNameId = 0; +var randomSuffix = Math.random().toString(36).slice(-5); - if (typeof length == 'number') { - while (++index < length) { - if (!(result = !!callback(collection[index], index, collection))) { - break; - } - } - } else { - forOwn(collection, function(value, index, collection) { - return (result = !!callback(value, index, collection)); - }); - } - return result; +function generateValidCSSClassName() { + // CSS classNames can't start with a number. + return 'c' + (classNameId++) + '-' + randomSuffix; } -module.exports = every; +function objToCSS(style) { + var serialized = ''; + for (var propName in style) { + // we put that ourselves + if (propName == 'className') continue; -},{"lodash.createcallback":48,"lodash.forown":84}],48:[function(require,module,exports){ -/** - * Lo-Dash 2.4.4 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - baseIsEqual = require('lodash._baseisequal'), - isObject = require('lodash.isobject'), - keys = require('lodash.keys'), - property = require('lodash.property'); + var cssPropName = styleRuleConverter.hyphenateProp(propName); + if (!styleRuleValidator.isValidProp(cssPropName)) { + console.warn( + '%s (transformed into %s) is not a valid CSS property name.', propName, cssPropName + ); + continue; + } -/** - * Produces a callback bound to an optional `thisArg`. If `func` is a property - * name the created callback will return the property value for a given element. - * If `func` is an object the created callback will return `true` for elements - * that contain the equivalent object properties, otherwise it will return `false`. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // wrap to create custom callback shorthands - * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { - * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); - * return !match ? func(callback, thisArg) : function(object) { - * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; - * }; - * }); - * - * _.filter(characters, 'age__gt38'); - * // => [{ 'name': 'fred', 'age': 40 }] - */ -function createCallback(func, thisArg, argCount) { - var type = typeof func; - if (func == null || type == 'function') { - return baseCreateCallback(func, thisArg, argCount); - } - // handle "_.pluck" style callback shorthands - if (type != 'object') { - return property(func); - } - var props = keys(func), - key = props[0], - a = func[key]; + var styleValue = style[propName]; + if (!styleRuleValidator.isValidValue(styleValue)) continue; - // handle "_.where" style callback shorthands - if (props.length == 1 && a === a && !isObject(a)) { - // fast path the common case of providing an object with a single - // property containing a primitive value - return function(object) { - var b = object[key]; - return a === b && (a !== 0 || (1 / a == 1 / b)); - }; + if (styleValue !== null) { + serialized += cssPropName + ':'; + serialized += styleRuleConverter.escapeValueForProp(styleValue, + cssPropName) + ';'; + } } - return function(object) { - var length = props.length, - result = false; + return serialized || null; +} - while (length--) { - if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { - break; - } +function createStyleTag() { + var tag = document.createElement('style'); + document.getElementsByTagName('head')[0].appendChild(tag); + return tag; +} + +function styleToCSS(style) { + var styleStr = '.' + style.className + '{'; + styleStr += objToCSS(style.value); + styleStr += '}'; + + if (style.media) { + if (!mediaQueryValidator(style.media)) { + console.log('%s is not a valid media query.', style.media); } - return result; - }; + styleStr = style.media + '{' + styleStr + '}'; + } + + return styleStr; } -module.exports = createCallback; +// TODO: support media queries +function parseStyles(className, styleObj) { + var mainStyle = { + className: className, + value: {} + }; + var styles = [mainStyle]; -},{"lodash._basecreatecallback":49,"lodash._baseisequal":68,"lodash.isobject":77,"lodash.keys":79,"lodash.property":83}],49:[function(require,module,exports){ -arguments[4][8][0].apply(exports,arguments) -},{"dup":8,"lodash._setbinddata":50,"lodash.bind":53,"lodash.identity":65,"lodash.support":66}],50:[function(require,module,exports){ -arguments[4][9][0].apply(exports,arguments) -},{"dup":9,"lodash._isnative":51,"lodash.noop":52}],51:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],52:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],53:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12,"lodash._createwrapper":54,"lodash._slice":64}],54:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13,"lodash._basebind":55,"lodash._basecreatewrapper":59,"lodash._slice":64,"lodash.isfunction":63}],55:[function(require,module,exports){ -arguments[4][14][0].apply(exports,arguments) -},{"dup":14,"lodash._basecreate":56,"lodash._setbinddata":50,"lodash._slice":64,"lodash.isobject":77}],56:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._isnative":57,"lodash.isobject":77,"lodash.noop":58}],57:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],58:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],59:[function(require,module,exports){ -arguments[4][19][0].apply(exports,arguments) -},{"dup":19,"lodash._basecreate":60,"lodash._setbinddata":50,"lodash._slice":64,"lodash.isobject":77}],60:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._isnative":61,"lodash.isobject":77,"lodash.noop":62}],61:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],62:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],63:[function(require,module,exports){ -arguments[4][24][0].apply(exports,arguments) -},{"dup":24}],64:[function(require,module,exports){ -arguments[4][25][0].apply(exports,arguments) -},{"dup":25}],65:[function(require,module,exports){ -arguments[4][26][0].apply(exports,arguments) -},{"dup":26}],66:[function(require,module,exports){ -arguments[4][27][0].apply(exports,arguments) -},{"dup":27,"lodash._isnative":67}],67:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],68:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var forIn = require('lodash.forin'), - getArray = require('lodash._getarray'), - isFunction = require('lodash.isfunction'), - objectTypes = require('lodash._objecttypes'), - releaseArray = require('lodash._releasearray'); + Object.keys(styleObj).forEach(function(k){ + // pseudo-selector, insert a new rule + if (k[0] === ':') { + styles.push({ + className: className+k, + value: styleObj[k] + }); + return; + } else if (k.substring(0, 6) === '@media') { + styles.push({ + className: className, + value: styleObj[k], + media: k + }); + return; + } -/** `Object#toString` result shortcuts */ -var argsClass = '[object Arguments]', - arrayClass = '[object Array]', - boolClass = '[object Boolean]', - dateClass = '[object Date]', - numberClass = '[object Number]', - objectClass = '[object Object]', - regexpClass = '[object RegExp]', - stringClass = '[object String]'; + // normal rule, insert into main one + mainStyle.value[k] = styleObj[k]; + }); -/** Used for native method references */ -var objectProto = Object.prototype; + return styles; +} -/** Used to resolve the internal [[Class]] of values */ -var toString = objectProto.toString; +function insertStyle(className, styleObj) { + var styles = parseStyles(className, styleObj); + var styleStr = styles.map(styleToCSS).join(''); + styleTag.innerHTML += styleStr; +} -/** Native method shortcuts */ -var hasOwnProperty = objectProto.hasOwnProperty; +var RCSS = { + merge: function(a, b, c, d, e) { + return assign({}, a, b, c, d, e); + }, -/** - * The base implementation of `_.isEqual`, without support for `thisArg` binding, - * that allows partial "_.where" style comparisons. - * - * @private - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. - * @param {Array} [stackA=[]] Tracks traversed `a` objects. - * @param {Array} [stackB=[]] Tracks traversed `b` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { - // used to indicate that when comparing objects, `a` has at least the properties of `b` - if (callback) { - var result = callback(a, b); - if (typeof result != 'undefined') { - return !!result; + createClass: function(styleObj) { + var styleId = JSON.stringify(styleObj); + var className; + + if (existingClasses[styleId]) { + // already exists, use the existing className + className = existingClasses[styleId]; + } else { + // generate a new class and insert it + className = generateValidCSSClassName(); + existingClasses[styleId] = className; + insertStyle(className, styleObj); } - } - // exit early for identical values - if (a === b) { - // treat `+0` vs. `-0` as not equal - return a !== 0 || (1 / a == 1 / b); - } - var type = typeof a, - otherType = typeof b; - // exit early for unlike primitive values - if (a === a && - !(a && objectTypes[type]) && - !(b && objectTypes[otherType])) { - return false; - } - // exit early for `null` and `undefined` avoiding ES3's Function#call behavior - // http://es5.github.io/#x15.3.4.4 - if (a == null || b == null) { - return a === b; + styleObj.className = className; + return styleObj; } - // compare [[Class]] names - var className = toString.call(a), - otherClass = toString.call(b); +}; - if (className == argsClass) { - className = objectClass; - } - if (otherClass == argsClass) { - otherClass = objectClass; - } - if (className != otherClass) { - return false; - } - switch (className) { - case boolClass: - case dateClass: - // coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0` treating invalid dates coerced to `NaN` as not equal - return +a == +b; +module.exports = RCSS; - case numberClass: - // treat `NaN` vs. `NaN` as equal - return (a != +a) - ? b != +b - // but treat `+0` vs. `-0` as not equal - : (a == 0 ? (1 / a == 1 / b) : a == +b); +},{"./styleRuleConverter":39,"./styleRuleValidator":40,"lodash.assign":20,"valid-media-queries":46}],39:[function(require,module,exports){ +var escape = require('lodash.escape'); - case regexpClass: - case stringClass: - // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) - // treat string primitives and their corresponding object instances as equal - return a == String(b); - } - var isArr = className == arrayClass; - if (!isArr) { - // unwrap any `lodash` wrapped values - var aWrapped = hasOwnProperty.call(a, '__wrapped__'), - bWrapped = hasOwnProperty.call(b, '__wrapped__'); +var _uppercasePattern = /([A-Z])/g; - if (aWrapped || bWrapped) { - return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); - } - // exit for functions and DOM nodes - if (className != objectClass) { - return false; - } - // in older versions of Opera, `arguments` objects have `Array` constructors - var ctorA = a.constructor, - ctorB = b.constructor; +function hyphenateProp(string) { + return string.replace(_uppercasePattern, '-$1').toLowerCase(); +} - // non `Object` object instances with different constructors are not equal - if (ctorA != ctorB && - !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && - ('constructor' in a && 'constructor' in b) - ) { - return false; - } +function escapeValueForProp(value, prop) { + // 'content' is a special property that must be quoted + if (prop === 'content') { + return '"' + value + '"'; } - // assume cyclic structures are equal - // the algorithm for detecting cyclic structures is adapted from ES 5.1 - // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); + return escape(value); +} - var length = stackA.length; - while (length--) { - if (stackA[length] == a) { - return stackB[length] == b; - } - } - var size = 0; - result = true; +module.exports = { + hyphenateProp: hyphenateProp, + escapeValueForProp: escapeValueForProp +}; - // add `a` and `b` to the stack of traversed objects - stackA.push(a); - stackB.push(b); +},{"lodash.escape":23}],40:[function(require,module,exports){ +var isValidCSSProps = require('valid-css-props'); - // recursively compare objects and arrays (susceptible to call stack limits) - if (isArr) { - // compare lengths to determine if a deep comparison is necessary - length = a.length; - size = b.length; - result = size == length; +function isValidProp(prop) { + return isValidCSSProps(prop); +} - if (result || isWhere) { - // deep compare the contents, ignoring non-numeric properties - while (size--) { - var index = length, - value = b[size]; +function isValidValue(value) { + return value != null && typeof value !== 'boolean' && value !== ''; +} - if (isWhere) { - while (index--) { - if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } - } - else { - // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` - // which, in this case, is more costly - forIn(b, function(value, key, b) { - if (hasOwnProperty.call(b, key)) { - // count the number of properties. - size++; - // deep compare each property value. - return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); - } - }); +module.exports = { + isValidProp: isValidProp, + isValidValue: isValidValue +}; - if (result && !isWhere) { - // ensure both objects have the same number of properties - forIn(a, function(value, key, a) { - if (hasOwnProperty.call(a, key)) { - // `size` will be `-1` if `a` has more properties than `b` - return (result = --size > -1); - } - }); - } - } - stackA.pop(); - stackB.pop(); +},{"valid-css-props":45}],41:[function(require,module,exports){ +/** @jsx React.DOM */ +/** + * For math rendered using KaTex and/or MathJax. Use me like 2x + 3. + */ +// TODO(joel) - require MathJax / katex so they don't have to be global - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; -} +var React = require('react'); -module.exports = baseIsEqual; +var pendingScripts = []; +var needsProcess = false; +var timeout = null; -},{"lodash._getarray":69,"lodash._objecttypes":71,"lodash._releasearray":72,"lodash.forin":75,"lodash.isfunction":76}],69:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var arrayPool = require('lodash._arraypool'); +function process(script, callback) { + pendingScripts.push(script); + if (!needsProcess) { + needsProcess = true; + timeout = setTimeout(doProcess, 0, callback); + } +} -/** - * Gets an array from the array pool or creates a new one if the pool is empty. - * - * @private - * @returns {Array} The array from the pool. - */ -function getArray() { - return arrayPool.pop() || []; +function doProcess(callback) { + MathJax.Hub.Queue(function() { + var oldElementScripts = MathJax.Hub.elementScripts; + MathJax.Hub.elementScripts = function(element) { + var scripts = pendingScripts; + pendingScripts = []; + needsProcess = false; + return scripts; + }; + + try { + return MathJax.Hub.Process(null, callback); + } catch (e) { + // IE8 requires `catch` in order to use `finally` + throw e; + } finally { + MathJax.Hub.elementScripts = oldElementScripts; + } + }); } -module.exports = getArray; +var TeX = React.createClass({displayName: 'TeX', + getDefaultProps: function() { + return { + // Called after math is rendered or re-rendered + onRender: function() {} + }; + }, -},{"lodash._arraypool":70}],70:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ + render: function() { + return React.DOM.span( {style:this.props.style}, + React.DOM.span( {ref:"mathjax"} ), + React.DOM.span( {ref:"katex"} ) + ); + }, -/** Used to pool arrays and objects used internally */ -var arrayPool = []; + componentDidMount: function() { + var text = this.props.children; + var onRender = this.props.onRender; -module.exports = arrayPool; + try { + var katexHolder = this.refs.katex.getDOMNode(); + katex.process(text, katexHolder); + onRender(); + return; + } catch (e) { + /* jshint -W103 */ + if (e.__proto__ !== katex.ParseError.prototype) { + /* jshint +W103 */ + throw e; + } + } -},{}],71:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29}],72:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var arrayPool = require('lodash._arraypool'), - maxPoolSize = require('lodash._maxpoolsize'); + this.setScriptText(text); + process(this.script, onRender); + }, -/** - * Releases the given array back to the array pool. - * - * @private - * @param {Array} [array] The array to release. - */ -function releaseArray(array) { - array.length = 0; - if (arrayPool.length < maxPoolSize) { - arrayPool.push(array); - } -} + componentDidUpdate: function(prevProps, prevState) { + var oldText = prevProps.children; + var newText = this.props.children; + var onRender = this.props.onRender; -module.exports = releaseArray; + if (oldText !== newText) { + try { + var katexHolder = this.refs.katex.getDOMNode(); + katex.process(newText, katexHolder); + if (this.script) { + var jax = MathJax.Hub.getJaxFor(this.script); + if (jax) { + jax.Remove(); + } + } + onRender(); + return; + } catch (e) { + /* jshint -W103 */ + if (e.__proto__ !== katex.ParseError.prototype) { + /* jshint +W103 */ + throw e; + } + } -},{"lodash._arraypool":73,"lodash._maxpoolsize":74}],73:[function(require,module,exports){ -arguments[4][70][0].apply(exports,arguments) -},{"dup":70}],74:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ + $(this.refs.katex.getDOMNode()).empty(); -/** Used as the max size of the `arrayPool` and `objectPool` */ -var maxPoolSize = 40; + if (this.script) { + var component = this; + MathJax.Hub.Queue(function() { + var jax = MathJax.Hub.getJaxFor(component.script); + if (jax) { + return jax.Text(newText, onRender); + } else { + component.setScriptText(newText); + process(component.script, onRender); + } + }); + } else { + this.setScriptText(newText); + process(this.script, onRender); + } + } + }, -module.exports = maxPoolSize; + setScriptText: function(text) { + if (!this.script) { + this.script = document.createElement("script"); + this.script.type = "math/tex"; + this.refs.mathjax.getDOMNode().appendChild(this.script); + } + if ("text" in this.script) { + // IE8, etc + this.script.text = text; + } else { + this.script.textContent = text; + } + }, -},{}],75:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - objectTypes = require('lodash._objecttypes'); + componentWillUnmount: function() { + if (this.script) { + var jax = MathJax.Hub.getJaxFor(this.script); + if (jax) { + jax.Remove(); + } + } + } +}); + +module.exports = TeX; + +},{"react":43}],42:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require("react"); +var _ = require("underscore"); + +// TODO(joel/jack) fix z-index issues https://s3.amazonaws.com/uploads.hipchat.com/6574/29028/yOApjwmgiMhEZYJ/Screen%20Shot%202014-05-30%20at%203.34.18%20PM.png +// z-index: 3 on perseus-formats-tooltip seemed to work /** - * Iterates over own and inherited enumerable properties of an object, - * executing the callback for each property. The callback is bound to `thisArg` - * and invoked with three arguments; (value, key, object). Callbacks may exit - * iteration early by explicitly returning `false`. + * A generic tooltip library for React.js * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example + * This should eventually end up in react-components * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } + * Interface: ({a, b} means one of a or b) + * var Tooltip = require("./tooltip.jsx"); + * + * + * + * + * * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; + * To show/hide the tooltip, the parent component should call the + * .show() and .hide() methods of the tooltip when appropriate. + * (These are usually set up as handlers of events on the target element.) * - * _.forIn(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) + * Notes: + * className should not specify a border; that is handled by borderColor + * so that the arrow and tooltip match */ -var forIn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - for (index in iterable) { - if (callback(iterable[index], index, collection) === false) return result; - } - return result -}; -module.exports = forIn; +// __,,--``\\ +// _,,-''`` \\ , +// '----------_.------'-.___|\__ +// _.--''`` `)__ )__ @\__ +// ( .. ''---/___,,E/__,E'------` +// `-''`'' +// Here be dragons. -},{"lodash._basecreatecallback":49,"lodash._objecttypes":71}],76:[function(require,module,exports){ -arguments[4][24][0].apply(exports,arguments) -},{"dup":24}],77:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":78}],78:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29}],79:[function(require,module,exports){ -arguments[4][30][0].apply(exports,arguments) -},{"dup":30,"lodash._isnative":80,"lodash._shimkeys":81,"lodash.isobject":77}],80:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],81:[function(require,module,exports){ -arguments[4][32][0].apply(exports,arguments) -},{"dup":32,"lodash._objecttypes":82}],82:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29}],83:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ +var zIndex = 10; -/** - * Creates a "_.pluck" style function, which returns the `key` value of a - * given object. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} key The name of the property to retrieve. - * @returns {Function} Returns the new function. - * @example - * - * var characters = [ - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 36 } - * ]; - * - * var getName = _.property('name'); - * - * _.map(characters, getName); - * // => ['barney', 'fred'] - * - * _.sortBy(characters, getName); - * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] - */ -function property(key) { - return function(object) { - return object[key]; - }; -} +var Triangle = React.createClass({displayName: 'Triangle', + propTypes: { + color: React.PropTypes.string.isRequired, + left: React.PropTypes.number.isRequired, + "top": React.PropTypes.number.isRequired, + width: React.PropTypes.number.isRequired, + height: React.PropTypes.number.isRequired, + horizontalDirection: React.PropTypes.oneOf( + ["left", "right"] + ).isRequired, + verticalDirection: React.PropTypes.oneOf( + ["top", "bottom"] + ).isRequired, + }, -module.exports = property; + render: function() { + var borderLeft, borderRight, borderTop, borderBottom; -},{}],84:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - keys = require('lodash.keys'), - objectTypes = require('lodash._objecttypes'); + var hBorder = (this.props.width + "px solid transparent"); + if (this.props.horizontalDirection === "right") { + borderLeft = hBorder; + } else { + borderRight = hBorder; + } -/** - * Iterates over own enumerable properties of an object, executing the callback - * for each property. The callback is bound to `thisArg` and invoked with three - * arguments; (value, key, object). Callbacks may exit iteration early by - * explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) - */ -var forOwn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; + var vBorder = (this.props.height + "px solid " + this.props.color); + if (this.props.verticalDirection === "top") { + borderTop = vBorder; + } else { + borderBottom = vBorder; + } - while (++ownIndex < length) { - index = ownProps[ownIndex]; - if (callback(iterable[index], index, collection) === false) return result; + return React.DOM.div( {style:{ + display: "block", + height: 0, + width: 0, + position: "absolute", + left: this.props.left, + "top": this.props["top"], + borderLeft: borderLeft, + borderRight: borderRight, + borderTop: borderTop, + borderBottom: borderBottom + }} ); } - return result -}; +}); -module.exports = forOwn; +var TooltipArrow = React.createClass({displayName: 'TooltipArrow', + propTypes: { + position: React.PropTypes.string, + visibility: React.PropTypes.string, + left: React.PropTypes.number, + "top": React.PropTypes.number, + color: React.PropTypes.string.isRequired, // a css color + border: React.PropTypes.string.isRequired, // a css color + width: React.PropTypes.number.isRequired, + height: React.PropTypes.number.isRequired, + horizontalDirection: React.PropTypes.oneOf( + ["left", "right"] + ).isRequired, + verticalDirection: React.PropTypes.oneOf( + ["top", "bottom"] + ).isRequired + }, -},{"lodash._basecreatecallback":85,"lodash._objecttypes":106,"lodash.keys":107}],85:[function(require,module,exports){ -arguments[4][8][0].apply(exports,arguments) -},{"dup":8,"lodash._setbinddata":86,"lodash.bind":89,"lodash.identity":103,"lodash.support":104}],86:[function(require,module,exports){ -arguments[4][9][0].apply(exports,arguments) -},{"dup":9,"lodash._isnative":87,"lodash.noop":88}],87:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],88:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],89:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12,"lodash._createwrapper":90,"lodash._slice":102}],90:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13,"lodash._basebind":91,"lodash._basecreatewrapper":96,"lodash._slice":102,"lodash.isfunction":101}],91:[function(require,module,exports){ -arguments[4][14][0].apply(exports,arguments) -},{"dup":14,"lodash._basecreate":92,"lodash._setbinddata":86,"lodash._slice":102,"lodash.isobject":95}],92:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._isnative":93,"lodash.isobject":95,"lodash.noop":94}],93:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],94:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],95:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":106}],96:[function(require,module,exports){ -arguments[4][19][0].apply(exports,arguments) -},{"dup":19,"lodash._basecreate":97,"lodash._setbinddata":86,"lodash._slice":102,"lodash.isobject":100}],97:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._isnative":98,"lodash.isobject":100,"lodash.noop":99}],98:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],99:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],100:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":106}],101:[function(require,module,exports){ -arguments[4][24][0].apply(exports,arguments) -},{"dup":24}],102:[function(require,module,exports){ -arguments[4][25][0].apply(exports,arguments) -},{"dup":25}],103:[function(require,module,exports){ -arguments[4][26][0].apply(exports,arguments) -},{"dup":26}],104:[function(require,module,exports){ -arguments[4][27][0].apply(exports,arguments) -},{"dup":27,"lodash._isnative":105}],105:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],106:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29}],107:[function(require,module,exports){ -arguments[4][30][0].apply(exports,arguments) -},{"dup":30,"lodash._isnative":108,"lodash._shimkeys":109,"lodash.isobject":110}],108:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],109:[function(require,module,exports){ -arguments[4][32][0].apply(exports,arguments) -},{"dup":32,"lodash._objecttypes":106}],110:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":106}],111:[function(require,module,exports){ -var escape = require('lodash.escape'); + getDefaultProps: function() { + return { + position: "relative", + visibility: "visible", + left: 0, + "top": 0 + }; + }, -var _uppercasePattern = /([A-Z])/g; + // TODO(jack): Think about adding a box-shadow to the triangle here + // See http://css-tricks.com/triangle-with-shadow/ + render: function() { + var isRight = (this.props.horizontalDirection === "right"); + var isTop = (this.props.verticalDirection === "top"); -function hyphenateProp(string) { - return string.replace(_uppercasePattern, '-$1').toLowerCase(); -} + var frontTopOffset = isTop ? 0 : 1; + var borderTopOffset = isTop ? 0 : -1; -function escapeValueForProp(value, prop) { - // 'content' is a special property that must be quoted - if (prop === 'content') { - return '"' + value + '"'; - } - return escape(value); -} + return React.DOM.div( {style:{ + display: "block", + position: this.props.position, + visibility: this.props.visibility, + left: this.props.left, + "top": this.props["top"], + width: this.props.width + 2, + height: this.props.height + 1, + marginTop: -1, + marginBottom: -2, + zIndex: zIndex + }}, + /* The background triangle used to create the effect of a + border around the foreground triangle*/ + Triangle( + {horizontalDirection:this.props.horizontalDirection, + verticalDirection:this.props.verticalDirection, + color:this.props.border, + left:0, + top:borderTopOffset, + width:this.props.width + 2, // one extra for the diagonal + height:this.props.height + 2} ), + /* The foreground triangle covers all but the left/right edges + of the background triangle */ + Triangle( + {horizontalDirection:this.props.horizontalDirection, + verticalDirection:this.props.verticalDirection, + color:this.props.color, + left:1, + top:frontTopOffset, + width:this.props.width, + height:this.props.height} ) + ); + } +}); -module.exports = { - hyphenateProp: hyphenateProp, - escapeValueForProp: escapeValueForProp +var VERTICAL_CORNERS = { + "top": { + "top": "-100%" + }, + bottom: { + "top": 0 + } }; -},{"lodash.escape":34}],112:[function(require,module,exports){ -var isValidCSSProps = require('valid-css-props'); - -function isValidProp(prop) { - return isValidCSSProps(prop); -} +var HORIZONTAL_CORNERS = { + left: { + targetLeft: 0, + }, -function isValidValue(value) { - return value != null && typeof value !== 'boolean' && value !== ''; -} + right: { + targetLeft: "100%", + } +}; -module.exports = { - isValidProp: isValidProp, - isValidValue: isValidValue -}; - -},{"valid-css-props":45}],113:[function(require,module,exports){ -/** @jsx React.DOM */ -/** - * For math rendered using KaTex and/or MathJax. Use me like 2x + 3. - */ -// TODO(joel) - require MathJax / katex so they don't have to be global - -var React = require('react'); - -var pendingScripts = []; -var needsProcess = false; -var timeout = null; - -function process(script, callback) { - pendingScripts.push(script); - if (!needsProcess) { - needsProcess = true; - timeout = setTimeout(doProcess, 0, callback); +var HORIZONTAL_ALIGNMNENTS = { + left: { + tooltipLeft: 0, + arrowLeft: function(arrowSize) {return 0;} + }, + right: { + tooltipLeft: "-100%", + arrowLeft: function(arrowSize) {return -arrowSize - 2;} } -} +}; -function doProcess(callback) { - MathJax.Hub.Queue(function() { - var oldElementScripts = MathJax.Hub.elementScripts; - MathJax.Hub.elementScripts = function(element) { - var scripts = pendingScripts; - pendingScripts = []; - needsProcess = false; - return scripts; - }; - try { - return MathJax.Hub.Process(null, callback); - } catch (e) { - // IE8 requires `catch` in order to use `finally` - throw e; - } finally { - MathJax.Hub.elementScripts = oldElementScripts; - } - }); -} +var Tooltip = React.createClass({displayName: 'Tooltip', + propTypes: { + show: React.PropTypes.bool.isRequired, + className: React.PropTypes.string, + arrowSize: React.PropTypes.number, + borderColor: React.PropTypes.string, + verticalPosition: React.PropTypes.oneOf( + _.keys(VERTICAL_CORNERS) + ), + horizontalPosition: React.PropTypes.oneOf( + _.keys(HORIZONTAL_CORNERS) + ), + horizontalAlign: React.PropTypes.oneOf( + _.keys(HORIZONTAL_ALIGNMNENTS) + ), + children: React.PropTypes.arrayOf( + React.PropTypes.component + ).isRequired + }, -var TeX = React.createClass({displayName: 'TeX', getDefaultProps: function() { return { - // Called after math is rendered or re-rendered - onRender: function() {} + className: "", + arrowSize: 10, + borderColor: "#ccc", + verticalPosition: "bottom", + horizontalPosition: "left", + horizontalAlign: "left" }; }, - render: function() { - return React.DOM.span( {style:this.props.style}, - React.DOM.span( {ref:"mathjax"} ), - React.DOM.span( {ref:"katex"} ) - ); + getInitialState: function() { + return { + height: null // used for offsetting "top" positioned tooltips + }; }, - componentDidMount: function() { - var text = this.props.children; - var onRender = this.props.onRender; - - try { - var katexHolder = this.refs.katex.getDOMNode(); - katex.process(text, katexHolder); - onRender(); - return; - } catch (e) { - /* jshint -W103 */ - if (e.__proto__ !== katex.ParseError.prototype) { - /* jshint +W103 */ - throw e; - } - } - - this.setScriptText(text); - process(this.script, onRender); + componentWillReceiveProps: function() { + // If the contents have changed, reset our measure of the height + this.setState({height: null}); }, - componentDidUpdate: function(prevProps, prevState) { - var oldText = prevProps.children; - var newText = this.props.children; - var onRender = this.props.onRender; + render: function() { + var isTooltipAbove = this.props.verticalPosition === "top"; - if (oldText !== newText) { - try { - var katexHolder = this.refs.katex.getDOMNode(); - katex.process(newText, katexHolder); - if (this.script) { - var jax = MathJax.Hub.getJaxFor(this.script); - if (jax) { - jax.Remove(); - } - } - onRender(); - return; - } catch (e) { - /* jshint -W103 */ - if (e.__proto__ !== katex.ParseError.prototype) { - /* jshint +W103 */ - throw e; - } - } + /* We wrap the entire output in a span so that it displays inline */ + return React.DOM.span(null, + isTooltipAbove && this._renderToolTipDiv(isTooltipAbove), - $(this.refs.katex.getDOMNode()).empty(); + /* We wrap our input in a div so that we can put the tooltip in a + div above/below it */ + React.DOM.div(null, + _.first(this.props.children) + ), - if (this.script) { - var component = this; - MathJax.Hub.Queue(function() { - var jax = MathJax.Hub.getJaxFor(component.script); - if (jax) { - return jax.Text(newText, onRender); - } else { - component.setScriptText(newText); - process(component.script, onRender); - } - }); - } else { - this.setScriptText(newText); - process(this.script, onRender); - } - } + !isTooltipAbove && this._renderToolTipDiv() + ); }, - setScriptText: function(text) { - if (!this.script) { - this.script = document.createElement("script"); - this.script.type = "math/tex"; - this.refs.mathjax.getDOMNode().appendChild(this.script); - } - if ("text" in this.script) { - // IE8, etc - this.script.text = text; - } else { - this.script.textContent = text; - } - }, + _renderToolTipDiv: function(isTooltipAbove) { + var settings = _.extend({}, + HORIZONTAL_CORNERS[this.props.horizontalPosition], + HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], + VERTICAL_CORNERS[this.props.verticalPosition] + ); - componentWillUnmount: function() { - if (this.script) { - var jax = MathJax.Hub.getJaxFor(this.script); - if (jax) { - jax.Remove(); - } - } - } -}); + var arrowAbove; + var arrowBelow; -module.exports = TeX; + if (isTooltipAbove) { + // We put an absolutely positioned arrow in the correct place + arrowAbove = TooltipArrow( + {verticalDirection:"top", + horizontalDirection:this.props.horizontalAlign, + position:"absolute", + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-this.props.arrowSize + 2, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); -},{"react":115}],114:[function(require,module,exports){ -/** @jsx React.DOM */ + // And we use a visibility: hidden arrow below to shift up the + // content by the correct amount + arrowBelow = TooltipArrow( + {verticalDirection:"top", + horizontalDirection:this.props.horizontalAlign, + visibility:"hidden", + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-1, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); + } else { + arrowAbove = TooltipArrow( + {verticalDirection:"bottom", + horizontalDirection:this.props.horizontalAlign, + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-1, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); -var React = require("react"); -var _ = require("underscore"); + arrowBelow = null; + } -// TODO(joel/jack) fix z-index issues https://s3.amazonaws.com/uploads.hipchat.com/6574/29028/yOApjwmgiMhEZYJ/Screen%20Shot%202014-05-30%20at%203.34.18%20PM.png -// z-index: 3 on perseus-formats-tooltip seemed to work + /* A positioned div below the input to be the parent for our + tooltip */ + return React.DOM.div( {style:{ + position: "relative", + height: 0, + display: this.props.show ? "block" : "none", + }}, + React.DOM.div( {ref:"tooltipContainer", className:"tooltipContainer", style:{ + position: "absolute", + // height must start out undefined, not null, so that + // we can measure the actual height with jquery. + // This is used to position the tooltip with top: -100% + // when in verticalPosition: "top" mode + height: this.state.height || undefined, + left: settings.targetLeft + }}, + arrowAbove, -/** - * A generic tooltip library for React.js - * - * This should eventually end up in react-components - * - * Interface: ({a, b} means one of a or b) - * var Tooltip = require("./tooltip.jsx"); - * - * - * - * - * - * - * To show/hide the tooltip, the parent component should call the - * .show() and .hide() methods of the tooltip when appropriate. - * (These are usually set up as handlers of events on the target element.) - * - * Notes: - * className should not specify a border; that is handled by borderColor - * so that the arrow and tooltip match - */ - -// __,,--``\\ -// _,,-''`` \\ , -// '----------_.------'-.___|\__ -// _.--''`` `)__ )__ @\__ -// ( .. ''---/___,,E/__,E'------` -// `-''`'' -// Here be dragons. - -var zIndex = 10; + /* The contents of the tooltip */ + React.DOM.div( {className:this.props.className, + ref:"tooltipContent", + style:{ + position: "relative", + "top": settings["top"], + "left": settings.tooltipLeft, + border: "1px solid " + this.props.borderColor, + "-webkit-box-shadow": "0 1px 3px " + + this.props.borderColor, + "-moz-box-shadow": "0 1px 3px " + + this.props.borderColor, + boxShadow: "0 1px 3px " + + this.props.borderColor, + zIndex: zIndex - 1 + }}, + _.rest(this.props.children) + ), -var Triangle = React.createClass({displayName: 'Triangle', - propTypes: { - color: React.PropTypes.string.isRequired, - left: React.PropTypes.number.isRequired, - "top": React.PropTypes.number.isRequired, - width: React.PropTypes.number.isRequired, - height: React.PropTypes.number.isRequired, - horizontalDirection: React.PropTypes.oneOf( - ["left", "right"] - ).isRequired, - verticalDirection: React.PropTypes.oneOf( - ["top", "bottom"] - ).isRequired, + arrowBelow + ) + ); }, - render: function() { - var borderLeft, borderRight, borderTop, borderBottom; + componentDidMount: function() { + this._updateHeight(); + }, - var hBorder = (this.props.width + "px solid transparent"); - if (this.props.horizontalDirection === "right") { - borderLeft = hBorder; - } else { - borderRight = hBorder; - } + componentDidUpdate: function() { + this._updateHeight(); + }, - var vBorder = (this.props.height + "px solid " + this.props.color); - if (this.props.verticalDirection === "top") { - borderTop = vBorder; - } else { - borderBottom = vBorder; + _updateHeight: function() { + var height = this.refs.tooltipContainer.getDOMNode().offsetHeight; + if (height !== this.state.height) { + this.setState({height:height}); } - - return React.DOM.div( {style:{ - display: "block", - height: 0, - width: 0, - position: "absolute", - left: this.props.left, - "top": this.props["top"], - borderLeft: borderLeft, - borderRight: borderRight, - borderTop: borderTop, - borderBottom: borderBottom - }} ); } }); -var TooltipArrow = React.createClass({displayName: 'TooltipArrow', - propTypes: { - position: React.PropTypes.string, - visibility: React.PropTypes.string, - left: React.PropTypes.number, - "top": React.PropTypes.number, - color: React.PropTypes.string.isRequired, // a css color - border: React.PropTypes.string.isRequired, // a css color - width: React.PropTypes.number.isRequired, - height: React.PropTypes.number.isRequired, - horizontalDirection: React.PropTypes.oneOf( - ["left", "right"] - ).isRequired, - verticalDirection: React.PropTypes.oneOf( - ["top", "bottom"] - ).isRequired - }, +// Sorry. // Apology-Oriented-Programming +module.exports = Tooltip; - getDefaultProps: function() { - return { - position: "relative", - visibility: "visible", - left: 0, - "top": 0 - }; - }, +},{"react":43,"underscore":44}],43:[function(require,module,exports){ +/* This note applies to rcss, react, and underscore. + * + * We're faking a node module for this package by just exporting the global. + * There are a few complications which led us to this solution as a temporary + * fix. + * + * - Browserify can slow down a lot when you include the other packages (and + * their dependency graphs). We were also battling general browserify + * slowness at this time - browserify 3.4.0 is "good" but later versions + * (3.53 if I remember correctly) are terribly slow (on the order of 20x + * slower). + * + * - I'm not clear on the details of packaging this so we don't duplicate + * dependencies anywhere. For instance when packaging perseus for webapp we + * need to be careful not to include packages like underscore from our + * dependencies or from the packages we depend on. (note: this is a very good + * opportunity to either explain how existing tools solve the problem or + * create a new tool to solve it) + * + * - Joel (and Jack) + */ +module.exports = window.React; - // TODO(jack): Think about adding a box-shadow to the triangle here - // See http://css-tricks.com/triangle-with-shadow/ - render: function() { - var isRight = (this.props.horizontalDirection === "right"); - var isTop = (this.props.verticalDirection === "top"); +},{}],44:[function(require,module,exports){ +/* This note applies to rcss, react, and underscore. + * + * We're faking a node module for this package by just exporting the global. + * There are a few complications which led us to this solution as a temporary + * fix. + * + * - Browserify can slow down a lot when you include the other packages (and + * their dependency graphs). We were also battling general browserify + * slowness at this time - browserify 3.4.0 is "good" but later versions + * (3.53 if I remember correctly) are terribly slow (on the order of 20x + * slower). + * + * - I'm not clear on the details of packaging this so we don't duplicate + * dependencies anywhere. For instance when packaging perseus for webapp we + * need to be careful not to include packages like underscore from our + * dependencies or from the packages we depend on. (note: this is a very good + * opportunity to either explain how existing tools solve the problem or + * create a new tool to solve it) + * + * - Joel (and Jack) + */ +module.exports = window._; - var frontTopOffset = isTop ? 0 : 1; - var borderTopOffset = isTop ? 0 : -1; +},{}],45:[function(require,module,exports){ +var _validCSSProps = { + 'alignment-adjust': true, + 'alignment-baseline': true, + 'animation': true, + 'animation-delay': true, + 'animation-direction': true, + 'animation-duration': true, + 'animation-iteration-count': true, + 'animation-name': true, + 'animation-play-state': true, + 'animation-timing-function': true, + 'appearance': true, + 'backface-visibility': true, + 'background': true, + 'background-attachment': true, + 'background-clip': true, + 'background-color': true, + 'background-image': true, + 'background-origin': true, + 'background-position': true, + 'background-repeat': true, + 'background-size': true, + 'baseline-shift': true, + 'bookmark-label': true, + 'bookmark-level': true, + 'bookmark-target': true, + 'border': true, + 'border-bottom': true, + 'border-bottom-color': true, + 'border-bottom-left-radius': true, + 'border-bottom-right-radius': true, + 'border-bottom-style': true, + 'border-bottom-width': true, + 'border-collapse': true, + 'border-color': true, + 'border-image': true, + 'border-image-outset': true, + 'border-image-repeat': true, + 'border-image-slice': true, + 'border-image-source': true, + 'border-image-width': true, + 'border-left': true, + 'border-left-color': true, + 'border-left-style': true, + 'border-left-width': true, + 'border-radius': true, + 'border-right': true, + 'border-right-color': true, + 'border-right-style': true, + 'border-right-width': true, + 'border-spacing': true, + 'border-style': true, + 'border-top': true, + 'border-top-color': true, + 'border-top-left-radius': true, + 'border-top-right-radius': true, + 'border-top-style': true, + 'border-top-width': true, + 'border-width': true, + 'bottom': true, + 'box-align': true, + 'box-decoration-break': true, + 'box-direction': true, + 'box-flex': true, + 'box-flex-group': true, + 'box-lines': true, + 'box-ordinal-group': true, + 'box-orient': true, + 'box-pack': true, + 'box-shadow': true, + 'box-sizing': true, + 'caption-side': true, + 'clear': true, + 'clip': true, + 'color': true, + 'color-profile': true, + 'column-count': true, + 'column-fill': true, + 'column-gap': true, + 'column-rule': true, + 'column-rule-color': true, + 'column-rule-style': true, + 'column-rule-width': true, + 'column-span': true, + 'column-width': true, + 'columns': true, + 'content': true, + 'counter-increment': true, + 'counter-reset': true, + 'crop': true, + 'cursor': true, + 'direction': true, + 'display': true, + 'dominant-baseline': true, + 'drop-initial-after-adjust': true, + 'drop-initial-after-align': true, + 'drop-initial-before-adjust': true, + 'drop-initial-before-align': true, + 'drop-initial-size': true, + 'drop-initial-value': true, + 'empty-cells': true, + 'fit': true, + 'fit-position': true, + 'float': true, + 'float-offset': true, + 'font': true, + 'font-family': true, + 'font-size': true, + 'font-size-adjust': true, + 'font-stretch': true, + 'font-style': true, + 'font-variant': true, + 'font-weight': true, + 'grid-columns': true, + 'grid-rows': true, + 'hanging-punctuation': true, + 'height': true, + 'hyphenate-after': true, + 'hyphenate-before': true, + 'hyphenate-character': true, + 'hyphenate-lines': true, + 'hyphenate-resource': true, + 'hyphens': true, + 'icon': true, + 'image-orientation': true, + 'image-resolution': true, + 'inline-box-align': true, + 'left': true, + 'letter-spacing': true, + 'line-height': true, + 'line-stacking': true, + 'line-stacking-ruby': true, + 'line-stacking-shift': true, + 'line-stacking-strategy': true, + 'list-style': true, + 'list-style-image': true, + 'list-style-position': true, + 'list-style-type': true, + 'margin': true, + 'margin-bottom': true, + 'margin-left': true, + 'margin-right': true, + 'margin-top': true, + 'mark': true, + 'mark-after': true, + 'mark-before': true, + 'marks': true, + 'marquee-direction': true, + 'marquee-play-count': true, + 'marquee-speed': true, + 'marquee-style': true, + 'max-height': true, + 'max-width': true, + 'min-height': true, + 'min-width': true, + 'move-to': true, + 'nav-down': true, + 'nav-index': true, + 'nav-left': true, + 'nav-right': true, + 'nav-up': true, + 'opacity': true, + 'orphans': true, + 'outline': true, + 'outline-color': true, + 'outline-offset': true, + 'outline-style': true, + 'outline-width': true, + 'overflow': true, + 'overflow-style': true, + 'overflow-x': true, + 'overflow-y': true, + 'padding': true, + 'padding-bottom': true, + 'padding-left': true, + 'padding-right': true, + 'padding-top': true, + 'page': true, + 'page-break-after': true, + 'page-break-before': true, + 'page-break-inside': true, + 'page-policy': true, + 'perspective': true, + 'perspective-origin': true, + 'phonemes': true, + 'position': true, + 'punctuation-trim': true, + 'quotes': true, + 'rendering-intent': true, + 'resize': true, + 'rest': true, + 'rest-after': true, + 'rest-before': true, + 'right': true, + 'rotation': true, + 'rotation-point': true, + 'ruby-align': true, + 'ruby-overhang': true, + 'ruby-position': true, + 'ruby-span': true, + 'size': true, + 'string-set': true, + 'table-layout': true, + 'target': true, + 'target-name': true, + 'target-new': true, + 'target-position': true, + 'text-align': true, + 'text-align-last': true, + 'text-decoration': true, + 'text-height': true, + 'text-indent': true, + 'text-justify': true, + 'text-outline': true, + 'text-overflow': true, + 'text-shadow': true, + 'text-transform': true, + 'text-wrap': true, + 'top': true, + 'transform': true, + 'transform-origin': true, + 'transform-style': true, + 'transition': true, + 'transition-delay': true, + 'transition-duration': true, + 'transition-property': true, + 'transition-timing-function': true, + 'unicode-bidi': true, + 'user-select': true, + 'vertical-align': true, + 'visibility': true, + 'voice-balance': true, + 'voice-duration': true, + 'voice-pitch': true, + 'voice-pitch-range': true, + 'voice-rate': true, + 'voice-stress': true, + 'voice-volume': true, + 'white-space': true, + 'widows': true, + 'width': true, + 'word-break': true, + 'word-spacing': true, + 'word-wrap': true, + 'z-index': true +} - return React.DOM.div( {style:{ - display: "block", - position: this.props.position, - visibility: this.props.visibility, - left: this.props.left, - "top": this.props["top"], - width: this.props.width + 2, - height: this.props.height + 1, - marginTop: -1, - marginBottom: -2, - zIndex: zIndex - }}, - /* The background triangle used to create the effect of a - border around the foreground triangle*/ - Triangle( - {horizontalDirection:this.props.horizontalDirection, - verticalDirection:this.props.verticalDirection, - color:this.props.border, - left:0, - top:borderTopOffset, - width:this.props.width + 2, // one extra for the diagonal - height:this.props.height + 2} ), - /* The foreground triangle covers all but the left/right edges - of the background triangle */ - Triangle( - {horizontalDirection:this.props.horizontalDirection, - verticalDirection:this.props.verticalDirection, - color:this.props.color, - left:1, - top:frontTopOffset, - width:this.props.width, - height:this.props.height} ) - ); - } -}); +var vendorPrefixRegEx = /^-.+-/; -var VERTICAL_CORNERS = { - "top": { - "top": "-100%" - }, - bottom: { - "top": 0 - } +module.exports = function(prop) { + if (prop[0] === '-') { + return !!_validCSSProps[prop.replace(vendorPrefixRegEx, '')]; + } + return !!_validCSSProps[prop]; }; -var HORIZONTAL_CORNERS = { - left: { - targetLeft: 0, - }, +},{}],46:[function(require,module,exports){ +var every = require('lodash.every'); - right: { - targetLeft: "100%", - } -}; +function isValidRatio(ratio) { + var re = /\d+\/\d+/; + return !!ratio.match(re); +} -var HORIZONTAL_ALIGNMNENTS = { - left: { - tooltipLeft: 0, - arrowLeft: function(arrowSize) {return 0;} - }, - right: { - tooltipLeft: "-100%", - arrowLeft: function(arrowSize) {return -arrowSize - 2;} - } -}; +function isValidInteger(integer) { + var re = /\d+/; + return !!integer.match(re); +} +function isValidLength(length) { + var re = /\d+(?:ex|em|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc)?$/; + return !!length.match(re); +} -var Tooltip = React.createClass({displayName: 'Tooltip', - propTypes: { - show: React.PropTypes.bool.isRequired, - className: React.PropTypes.string, - arrowSize: React.PropTypes.number, - borderColor: React.PropTypes.string, - verticalPosition: React.PropTypes.oneOf( - _.keys(VERTICAL_CORNERS) - ), - horizontalPosition: React.PropTypes.oneOf( - _.keys(HORIZONTAL_CORNERS) - ), - horizontalAlign: React.PropTypes.oneOf( - _.keys(HORIZONTAL_ALIGNMNENTS) - ), - children: React.PropTypes.arrayOf( - React.PropTypes.component - ).isRequired - }, +function isValidOrientation(orientation) { + return orientation === 'landscape' || orientation === 'portrait'; +} - getDefaultProps: function() { - return { - className: "", - arrowSize: 10, - borderColor: "#ccc", - verticalPosition: "bottom", - horizontalPosition: "left", - horizontalAlign: "left" - }; - }, +function isValidScan(scan) { + return scan === 'progressive' || scan === 'interlace'; +} - getInitialState: function() { - return { - height: null // used for offsetting "top" positioned tooltips - }; - }, +function isValidResolution(resolution) { + var re = /(?:\+|-)?(?:\d+|\d*\.\d+)(?:e\d+)?(?:dpi|dpcm|dppx)$/; + return !!resolution.match(re); +} - componentWillReceiveProps: function() { - // If the contents have changed, reset our measure of the height - this.setState({height: null}); - }, +function isValidValue(value) { + return value != null && typeof value !== 'boolean' && value !== ''; +} - render: function() { - var isTooltipAbove = this.props.verticalPosition === "top"; +var _mediaFeatureValidator = { + 'width': isValidLength, + 'min-width': isValidLength, + 'max-width': isValidLength, + 'height': isValidLength, + 'min-height': isValidLength, + 'max-height': isValidLength, + 'device-width': isValidLength, + 'min-device-width': isValidLength, + 'max-device-width': isValidLength, + 'device-height': isValidLength, + 'min-device-height': isValidLength, + 'max-device-height': isValidLength, + 'aspect-ratio': isValidRatio, + 'min-aspect-ratio': isValidRatio, + 'max-aspect-ratio': isValidRatio, + 'device-aspect-ratio': isValidRatio, + 'min-device-aspect-ratio': isValidRatio, + 'max-device-aspect-ratio': isValidRatio, + 'color': isValidValue, + 'min-color': isValidValue, + 'max-color': isValidValue, + 'color-index': isValidInteger, + 'min-color-index': isValidInteger, + 'max-color-index': isValidInteger, + 'monochrome': isValidInteger, + 'min-monochrome': isValidInteger, + 'max-monochrome': isValidInteger, + 'resolution': isValidResolution, + 'min-resolution': isValidResolution, + 'max-resolution': isValidResolution, + 'scan': isValidScan, + 'grid': isValidInteger, + 'orientation': isValidOrientation +}; - /* We wrap the entire output in a span so that it displays inline */ - return React.DOM.span(null, - isTooltipAbove && this._renderToolTipDiv(isTooltipAbove), +var _validMediaFeatures = { + 'width': true, + 'min-width': true, + 'max-width': true, + 'height': true, + 'min-height': true, + 'max-height': true, + 'device-width': true, + 'min-device-width': true, + 'max-device-width': true, + 'device-height': true, + 'min-device-height': true, + 'max-device-height': true, + 'aspect-ratio': true, + 'min-aspect-ratio': true, + 'max-aspect-ratio': true, + 'device-aspect-ratio': true, + 'min-device-aspect-ratio': true, + 'max-device-aspect-ratio': true, + 'color': true, + 'min-color': true, + 'max-color': true, + 'color-index': true, + 'min-color-index': true, + 'max-color-index': true, + 'monochrome': true, + 'min-monochrome': true, + 'max-monochrome': true, + 'resolution': true, + 'min-resolution': true, + 'max-resolution': true, + 'scan': true, + 'grid': true, + 'orientation': true +}; - /* We wrap our input in a div so that we can put the tooltip in a - div above/below it */ - React.DOM.div(null, - _.first(this.props.children) - ), +var _validMediaTypes = { + 'all': true, + 'aural': true, + 'braille': true, + 'handheld': true, + 'print': true, + 'projection': true, + 'screen': true, + 'tty': true, + 'tv': true, + 'embossed': true +}; - !isTooltipAbove && this._renderToolTipDiv() - ); - }, +var _validQualifiers = { + 'not': true, + 'only': true +}; - _renderToolTipDiv: function(isTooltipAbove) { - var settings = _.extend({}, - HORIZONTAL_CORNERS[this.props.horizontalPosition], - HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], - VERTICAL_CORNERS[this.props.verticalPosition] - ); +function isValidFeature(feature) { + return !!_validMediaFeatures[feature]; +} - var arrowAbove; - var arrowBelow; +function isValidQualifier(qualifier) { + return !!_validQualifiers[qualifier]; +} - if (isTooltipAbove) { - // We put an absolutely positioned arrow in the correct place - arrowAbove = TooltipArrow( - {verticalDirection:"top", - horizontalDirection:this.props.horizontalAlign, - position:"absolute", - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-this.props.arrowSize + 2, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); +function isValidMediaType(mediaType) { + return !!_validMediaTypes[mediaType]; +} - // And we use a visibility: hidden arrow below to shift up the - // content by the correct amount - arrowBelow = TooltipArrow( - {verticalDirection:"top", - horizontalDirection:this.props.horizontalAlign, - visibility:"hidden", - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-1, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); - } else { - arrowAbove = TooltipArrow( - {verticalDirection:"bottom", - horizontalDirection:this.props.horizontalAlign, - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-1, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); +function isValidQualifiedMediaType(mediaType) { + var terms = mediaType.trim().split(/\s+/); + switch (terms.length) { + case 1: + return isValidMediaType(terms[0]); + case 2: + return isValidQualifier(terms[0]) && isValidMediaType(terms[1]); + default: + return false; + } +} - arrowBelow = null; - } +function isValidExpression(expression) { + if (expression.length < 2) { + return false; + } - /* A positioned div below the input to be the parent for our - tooltip */ - return React.DOM.div( {style:{ - position: "relative", - height: 0, - display: this.props.show ? "block" : "none", - }}, - React.DOM.div( {ref:"tooltipContainer", className:"tooltipContainer", style:{ - position: "absolute", - // height must start out undefined, not null, so that - // we can measure the actual height with jquery. - // This is used to position the tooltip with top: -100% - // when in verticalPosition: "top" mode - height: this.state.height || undefined, - left: settings.targetLeft - }}, - arrowAbove, + // Parentheses are required around expressions + if (expression[0] !== '(' || expression[expression.length - 1] !== ')') { + return false; + } - /* The contents of the tooltip */ - React.DOM.div( {className:this.props.className, - ref:"tooltipContent", - style:{ - position: "relative", - "top": settings["top"], - "left": settings.tooltipLeft, - border: "1px solid " + this.props.borderColor, - "-webkit-box-shadow": "0 1px 3px " + - this.props.borderColor, - "-moz-box-shadow": "0 1px 3px " + - this.props.borderColor, - boxShadow: "0 1px 3px " + - this.props.borderColor, - zIndex: zIndex - 1 - }}, - _.rest(this.props.children) - ), + // Remove parentheses and spacess + expression = expression.substring(1, expression.length - 1); - arrowBelow - ) - ); - }, + // Is there a value to accompany the media feature? + var featureAndValue = expression.split(/\s*:\s*/); + switch (featureAndValue.length) { + case 1: + var feature = featureAndValue[0].trim(); + return isValidFeature(feature); + case 2: + var feature = featureAndValue[0].trim(); + var value = featureAndValue[1].trim(); + return isValidFeature(feature) && + _mediaFeatureValidator[feature](value); + default: + return false; + } +} - componentDidMount: function() { - this._updateHeight(); - }, +function isValidMediaQuery(query) { + var andSplitter = /\s+and\s+/; + var queryTerms = query.split(andSplitter); + return (isValidQualifiedMediaType(queryTerms[0]) || + isValidExpression(queryTerms[0])) && + every(queryTerms.slice(1), isValidExpression); +} - componentDidUpdate: function() { - this._updateHeight(); - }, +function isValidMediaQueryList(mediaQuery) { + mediaQuery = mediaQuery.toLowerCase(); - _updateHeight: function() { - var height = this.refs.tooltipContainer.getDOMNode().offsetHeight; - if (height !== this.state.height) { - this.setState({height:height}); - } + if (mediaQuery.substring(0, 6) !== '@media') { + return false; } -}); - -// Sorry. // Apology-Oriented-Programming -module.exports = Tooltip; -},{"react":115,"underscore":116}],115:[function(require,module,exports){ -/* This note applies to rcss, react, and underscore. - * - * We're faking a node module for this package by just exporting the global. - * There are a few complications which led us to this solution as a temporary - * fix. - * - * - Browserify can slow down a lot when you include the other packages (and - * their dependency graphs). We were also battling general browserify - * slowness at this time - browserify 3.4.0 is "good" but later versions - * (3.53 if I remember correctly) are terribly slow (on the order of 20x - * slower). - * - * - I'm not clear on the details of packaging this so we don't duplicate - * dependencies anywhere. For instance when packaging perseus for webapp we - * need to be careful not to include packages like underscore from our - * dependencies or from the packages we depend on. (note: this is a very good - * opportunity to either explain how existing tools solve the problem or - * create a new tool to solve it) - * - * - Joel (and Jack) - */ -module.exports = window.React; + var commaSplitter = /\s*,\s*/; + var queryList = mediaQuery.substring(7, mediaQuery.length) + .split(commaSplitter); + return every(queryList, isValidMediaQuery); +} -},{}],116:[function(require,module,exports){ -/* This note applies to rcss, react, and underscore. - * - * We're faking a node module for this package by just exporting the global. - * There are a few complications which led us to this solution as a temporary - * fix. - * - * - Browserify can slow down a lot when you include the other packages (and - * their dependency graphs). We were also battling general browserify - * slowness at this time - browserify 3.4.0 is "good" but later versions - * (3.53 if I remember correctly) are terribly slow (on the order of 20x - * slower). - * - * - I'm not clear on the details of packaging this so we don't duplicate - * dependencies anywhere. For instance when packaging perseus for webapp we - * need to be careful not to include packages like underscore from our - * dependencies or from the packages we depend on. (note: this is a very good - * opportunity to either explain how existing tools solve the problem or - * create a new tool to solve it) - * - * - Joel (and Jack) - */ -module.exports = window._; +module.exports = isValidMediaQueryList -},{}],117:[function(require,module,exports){ +},{"lodash.every":24}],47:[function(require,module,exports){ var Widgets = require("./widgets.js"); _.each([ @@ -3729,7 +3589,7 @@ _.each([ Widgets.register(widget.name, _.omit(widget, "name")); }); -},{"./widgets.js":171,"./widgets/categorizer.jsx":172,"./widgets/dropdown.jsx":173,"./widgets/example-graphie-widget.jsx":174,"./widgets/example-widget.jsx":175,"./widgets/expression.jsx":176,"./widgets/iframe.jsx":177,"./widgets/image.jsx":178,"./widgets/input-number.jsx":179,"./widgets/interactive-graph.jsx":180,"./widgets/interactive-number-line.jsx":181,"./widgets/lights-puzzle.jsx":182,"./widgets/matcher.jsx":183,"./widgets/measurer.jsx":184,"./widgets/number-line.jsx":185,"./widgets/numeric-input.jsx":186,"./widgets/orderer.jsx":187,"./widgets/plotter.jsx":188,"./widgets/radio.jsx":189,"./widgets/sorter.jsx":190,"./widgets/table.jsx":191,"./widgets/transformer.jsx":192}],118:[function(require,module,exports){ +},{"./widgets.js":101,"./widgets/categorizer.jsx":102,"./widgets/dropdown.jsx":103,"./widgets/example-graphie-widget.jsx":104,"./widgets/example-widget.jsx":105,"./widgets/expression.jsx":106,"./widgets/iframe.jsx":107,"./widgets/image.jsx":108,"./widgets/input-number.jsx":109,"./widgets/interactive-graph.jsx":110,"./widgets/interactive-number-line.jsx":111,"./widgets/lights-puzzle.jsx":112,"./widgets/matcher.jsx":113,"./widgets/measurer.jsx":114,"./widgets/number-line.jsx":115,"./widgets/numeric-input.jsx":116,"./widgets/orderer.jsx":117,"./widgets/plotter.jsx":118,"./widgets/radio.jsx":119,"./widgets/sorter.jsx":120,"./widgets/table.jsx":121,"./widgets/transformer.jsx":122}],48:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -3800,7 +3660,7 @@ var AnswerAreaEditor = React.createClass({displayName: 'AnswerAreaEditor', module.exports = AnswerAreaEditor; -},{"./editor.jsx":143,"./widgets.js":171,"react":115,"react-components/info-tip":5}],119:[function(require,module,exports){ +},{"./editor.jsx":73,"./widgets.js":101,"react":43,"react-components/info-tip":37}],49:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -4155,7 +4015,7 @@ var AnswerAreaRenderer = React.createClass({displayName: 'AnswerAreaRenderer', module.exports = AnswerAreaRenderer; -},{"./enabled-features.jsx":144,"./perseus-api.jsx":162,"./question-paragraph.jsx":164,"./renderer.jsx":165,"./util.js":168,"./widget-container.jsx":170,"./widgets.js":171,"react":115}],120:[function(require,module,exports){ +},{"./enabled-features.jsx":74,"./perseus-api.jsx":92,"./question-paragraph.jsx":94,"./renderer.jsx":95,"./util.js":98,"./widget-container.jsx":100,"./widgets.js":101,"react":43}],50:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -4343,7 +4203,7 @@ FancySelect.Option = FancyOption; module.exports = FancySelect; -},{"react":115}],121:[function(require,module,exports){ +},{"react":43}],51:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -4799,7 +4659,7 @@ var GraphSettings = React.createClass({displayName: 'GraphSettings', module.exports = GraphSettings; -},{"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../components/range-input.jsx":131,"../mixins/changeable.jsx":159,"../util.js":168,"react":115,"react-components/button-group":3,"react-components/info-tip":5}],122:[function(require,module,exports){ +},{"../components/number-input.jsx":59,"../components/prop-check-box.jsx":60,"../components/range-input.jsx":61,"../mixins/changeable.jsx":89,"../util.js":98,"react":43,"react-components/button-group":35,"react-components/info-tip":37}],52:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -5138,7 +4998,7 @@ var Graph = React.createClass({displayName: 'Graph', module.exports = Graph; -},{"../util.js":168,"react":115}],123:[function(require,module,exports){ +},{"../util.js":98,"react":43}],53:[function(require,module,exports){ /** @jsx React.DOM */var Util = require("../util.js"); var nestedMap = Util.nestedMap; var deepEq = Util.deepEq; @@ -5269,7 +5129,7 @@ module.exports = { createSimpleClass: createSimpleClass }; -},{"../util.js":168}],124:[function(require,module,exports){ +},{"../util.js":98}],54:[function(require,module,exports){ /** @jsx React.DOM */var GraphieClasses = require("./graphie-classes.jsx"); var Interactive2 = require("../interactive2.js"); var InteractiveUtil = require("../interactive2/interactive-util.js"); @@ -5320,7 +5180,7 @@ module.exports = { MovablePoint: MovablePoint }; -},{"../interactive2.js":148,"../interactive2/interactive-util.js":149,"./graphie-classes.jsx":123}],125:[function(require,module,exports){ +},{"../interactive2.js":78,"../interactive2/interactive-util.js":79,"./graphie-classes.jsx":53}],55:[function(require,module,exports){ /** @jsx React.DOM */ var GraphieClasses = require("./graphie-classes.jsx"); @@ -5600,7 +5460,7 @@ _.extend(Graphie, Movables); module.exports = Graphie; -},{"../interactive2/interactive-util.js":149,"../util.js":168,"./graphie-classes.jsx":123,"./graphie-movables.jsx":124}],126:[function(require,module,exports){ +},{"../interactive2/interactive-util.js":79,"../util.js":98,"./graphie-classes.jsx":53,"./graphie-movables.jsx":54}],56:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -5760,7 +5620,7 @@ var InputWithExamples = React.createClass({displayName: 'InputWithExamples', module.exports = InputWithExamples; -},{"../perseus-api.jsx":162,"../renderer.jsx":165,"../util.js":168,"./math-input.jsx":127,"./text-input.jsx":134,"react":115,"react-components/tooltip":114}],127:[function(require,module,exports){ +},{"../perseus-api.jsx":92,"../renderer.jsx":95,"../util.js":98,"./math-input.jsx":57,"./text-input.jsx":64,"react":43,"react-components/tooltip":42}],57:[function(require,module,exports){ /** @jsx React.DOM */ // TODO(alex): Package MathQuill @@ -5999,7 +5859,7 @@ var MathInput = React.createClass({displayName: 'MathInput', module.exports = MathInput; -},{"./tex-buttons.jsx":133,"react":115,"underscore":116}],128:[function(require,module,exports){ +},{"./tex-buttons.jsx":63,"react":43,"underscore":44}],58:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6071,7 +5931,7 @@ var MultiButtonGroup = React.createClass({displayName: 'MultiButtonGroup', module.exports = MultiButtonGroup; -},{"react":115}],129:[function(require,module,exports){ +},{"react":43}],59:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6250,7 +6110,7 @@ var NumberInput = React.createClass({displayName: 'NumberInput', module.exports = NumberInput; -},{"../util.js":168,"react":115}],130:[function(require,module,exports){ +},{"../util.js":98,"react":43}],60:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6312,7 +6172,7 @@ var PropCheckBox = React.createClass({displayName: 'PropCheckBox', module.exports = PropCheckBox; -},{"react":115}],131:[function(require,module,exports){ +},{"react":43}],61:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6371,7 +6231,7 @@ var RangeInput = React.createClass({displayName: 'RangeInput', module.exports = RangeInput; -},{"../components/number-input.jsx":129,"react":115}],132:[function(require,module,exports){ +},{"../components/number-input.jsx":59,"react":43}],62:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6888,7 +6748,7 @@ var Sortable = React.createClass({displayName: 'Sortable', module.exports = Sortable; -},{"../renderer.jsx":165,"../util.js":168,"react":115}],133:[function(require,module,exports){ +},{"../renderer.jsx":95,"../util.js":98,"react":43}],63:[function(require,module,exports){ /** @jsx React.DOM */ var React = require("react"); @@ -7023,7 +6883,7 @@ var TexButtons = React.createClass({displayName: 'TexButtons', module.exports = TexButtons; -},{"react":115,"react-components/tex":113}],134:[function(require,module,exports){ +},{"react":43,"react-components/tex":41}],64:[function(require,module,exports){ /** @jsx React.DOM */ var TextInput = React.createClass({displayName: 'TextInput', @@ -7055,7 +6915,7 @@ var TextInput = React.createClass({displayName: 'TextInput', module.exports = TextInput; -},{}],135:[function(require,module,exports){ +},{}],65:[function(require,module,exports){ /** @jsx React.DOM */ var textWidthCache = {}; @@ -7185,7 +7045,7 @@ var TextListEditor = React.createClass({displayName: 'TextListEditor', module.exports = TextListEditor; -},{}],136:[function(require,module,exports){ +},{}],66:[function(require,module,exports){ /** @jsx React.DOM */ // Responsible for combining the text diffs from text-diff and the widget @@ -7300,7 +7160,7 @@ var RevisionDiff = React.createClass({displayName: 'RevisionDiff', module.exports = RevisionDiff; -},{"./text-diff.jsx":139,"./widget-diff.jsx":141}],137:[function(require,module,exports){ +},{"./text-diff.jsx":69,"./widget-diff.jsx":71}],67:[function(require,module,exports){ /** @jsx React.DOM */// Split a word-wise diff generated by jsdiff into multiple lines, for the // purpose of breaking up the diffs into lines, so that modified lines can be // faintly highlighted @@ -7330,7 +7190,7 @@ var splitDiff = function(diffEntries) { module.exports = splitDiff; -},{}],138:[function(require,module,exports){ +},{}],68:[function(require,module,exports){ /** @jsx React.DOM */var jsdiff = require("../../lib/jsdiff"); var statusFor = function(chunk) { @@ -7400,7 +7260,7 @@ var stringArrayDiff = function(a, b) { module.exports = stringArrayDiff; -},{"../../lib/jsdiff":1}],139:[function(require,module,exports){ +},{"../../lib/jsdiff":1}],69:[function(require,module,exports){ /** @jsx React.DOM */ var diff = require("../../lib/jsdiff"); @@ -7565,7 +7425,7 @@ var TextDiff = React.createClass({displayName: 'TextDiff', module.exports = TextDiff; -},{"../../lib/jsdiff":1,"./split-diff.jsx":137,"./string-array-diff.jsx":138}],140:[function(require,module,exports){ +},{"../../lib/jsdiff":1,"./split-diff.jsx":67,"./string-array-diff.jsx":68}],70:[function(require,module,exports){ /** @jsx React.DOM */var UNCHANGED = "unchanged"; var CHANGED = "changed"; var ADDED = "added"; @@ -7635,7 +7495,7 @@ var performDiff = function(before, after, /* optional */ key) { module.exports = performDiff; -},{}],141:[function(require,module,exports){ +},{}],71:[function(require,module,exports){ /** @jsx React.DOM */ var cx = React.addons.classSet; @@ -7831,7 +7691,7 @@ var WidgetDiff = React.createClass({displayName: 'WidgetDiff', module.exports = WidgetDiff; -},{"./widget-diff-performer.jsx":140}],142:[function(require,module,exports){ +},{"./widget-diff-performer.jsx":70}],72:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8115,7 +7975,7 @@ var EditorPage = React.createClass({displayName: 'EditorPage', module.exports = EditorPage; -},{"./components/prop-check-box.jsx":130,"./enabled-features.jsx":144,"./hint-editor.jsx":145,"./item-editor.jsx":157,"./item-renderer.jsx":158,"./perseus-api.jsx":162,"react":115}],143:[function(require,module,exports){ +},{"./components/prop-check-box.jsx":60,"./enabled-features.jsx":74,"./hint-editor.jsx":75,"./item-editor.jsx":87,"./item-renderer.jsx":88,"./perseus-api.jsx":92,"react":43}],73:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8716,7 +8576,7 @@ var Editor = React.createClass({displayName: 'Editor', module.exports = Editor; -},{"./components/prop-check-box.jsx":130,"./util.js":168,"./widgets.js":171,"react":115,"react-components/drag-target":4}],144:[function(require,module,exports){ +},{"./components/prop-check-box.jsx":60,"./util.js":98,"./widgets.js":101,"react":43,"react-components/drag-target":36}],74:[function(require,module,exports){ /** @jsx React.DOM */var React = require('react'); module.exports = { @@ -8732,7 +8592,7 @@ module.exports = { } }; -},{"react":115}],145:[function(require,module,exports){ +},{"react":43}],75:[function(require,module,exports){ /** @jsx React.DOM */ /* Collection of classes for rendering the hint editor area, @@ -8948,7 +8808,7 @@ var CombinedHintsEditor = React.createClass({displayName: 'CombinedHintsEditor', module.exports = CombinedHintsEditor; -},{"./editor.jsx":143,"./hint-renderer.jsx":146,"react":115,"react-components/info-tip":5}],146:[function(require,module,exports){ +},{"./editor.jsx":73,"./hint-renderer.jsx":76,"react":43,"react-components/info-tip":37}],76:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8976,7 +8836,7 @@ var HintRenderer = React.createClass({displayName: 'HintRenderer', module.exports = HintRenderer; -},{"./renderer.jsx":165,"react":115}],147:[function(require,module,exports){ +},{"./renderer.jsx":95,"react":43}],77:[function(require,module,exports){ var React = require('react'); var init = function(options) { @@ -9017,7 +8877,7 @@ var init = function(options) { module.exports = init; -},{"react":115}],148:[function(require,module,exports){ +},{"react":43}],78:[function(require,module,exports){ var Movable = require("./interactive2/movable.js"); var MovablePoint = require("./interactive2/movable-point.js"); var MovableLine = require("./interactive2/movable-line.js"); @@ -9037,7 +8897,7 @@ var Interactive2 = { module.exports = Interactive2; -},{"./interactive2/movable-line.js":152,"./interactive2/movable-point.js":154,"./interactive2/movable.js":155}],149:[function(require,module,exports){ +},{"./interactive2/movable-line.js":82,"./interactive2/movable-point.js":84,"./interactive2/movable.js":85}],79:[function(require,module,exports){ /** * Utility functions for writing Interactive2 movablethings */ @@ -9115,7 +8975,7 @@ var InteractiveUtil = { module.exports = InteractiveUtil; -},{"./movable-helper-methods.js":150}],150:[function(require,module,exports){ +},{"./movable-helper-methods.js":80}],80:[function(require,module,exports){ /** * MovableThing convenience methods * @@ -9218,7 +9078,7 @@ var MovableHelperMethods = { module.exports = MovableHelperMethods; -},{}],151:[function(require,module,exports){ +},{}],81:[function(require,module,exports){ /** * A library of options to pass to add/draw/remove/constraints */ @@ -9501,7 +9361,7 @@ module.exports = { onMoveEnd: {standard: null}, }; -},{}],152:[function(require,module,exports){ +},{}],82:[function(require,module,exports){ /** * MovableLine */ @@ -9785,7 +9645,7 @@ _.extend(MovableLine.prototype, { module.exports = MovableLine; -},{"./interactive-util.js":149,"./movable-line-options.js":151,"./objective_.js":156}],153:[function(require,module,exports){ +},{"./interactive-util.js":79,"./movable-line-options.js":81,"./objective_.js":86}],83:[function(require,module,exports){ /** * A library of options to pass to add/draw/remove/constraints */ @@ -9930,7 +9790,7 @@ module.exports = { onClick: {standard: null} }; -},{}],154:[function(require,module,exports){ +},{}],84:[function(require,module,exports){ /** * Creates and adds a point to the graph that can be dragged around. * It allows constraints on its movement and draws when moves happen. @@ -10263,7 +10123,7 @@ _.extend(MovablePoint.prototype, { module.exports = MovablePoint; -},{"./interactive-util.js":149,"./movable-point-options.js":153,"./objective_.js":156}],155:[function(require,module,exports){ +},{"./interactive-util.js":79,"./movable-point-options.js":83,"./objective_.js":86}],85:[function(require,module,exports){ /** * Movable * @@ -10528,7 +10388,7 @@ _.extend(Movable.prototype, { module.exports = Movable; -},{"./interactive-util.js":149}],156:[function(require,module,exports){ +},{"./interactive-util.js":79}],86:[function(require,module,exports){ /** * A work-in-progress of _ methods for objects. * That is, they take an object as a parameter, @@ -10557,7 +10417,7 @@ var pluck = exports.pluck = function(table, subKey) { })); }; -},{}],157:[function(require,module,exports){ +},{}],87:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -10666,7 +10526,7 @@ var ItemEditor = React.createClass({displayName: 'ItemEditor', module.exports = ItemEditor; -},{"./answer-area-editor.jsx":118,"./editor.jsx":143,"./version.json":169,"react":115}],158:[function(require,module,exports){ +},{"./answer-area-editor.jsx":48,"./editor.jsx":73,"./version.json":99,"react":43}],88:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -10986,7 +10846,7 @@ var ItemRenderer = React.createClass({displayName: 'ItemRenderer', module.exports = ItemRenderer; -},{"./answer-area-renderer.jsx":119,"./enabled-features.jsx":144,"./hint-renderer.jsx":146,"./perseus-api.jsx":162,"./renderer.jsx":165,"./util.js":168,"react":115}],159:[function(require,module,exports){ +},{"./answer-area-renderer.jsx":49,"./enabled-features.jsx":74,"./hint-renderer.jsx":76,"./perseus-api.jsx":92,"./renderer.jsx":95,"./util.js":98,"react":43}],89:[function(require,module,exports){ /** @jsx React.DOM */ /** * Changeable @@ -11087,7 +10947,7 @@ var Changeable = { module.exports = Changeable; -},{"./widget-prop-blacklist.jsx":161}],160:[function(require,module,exports){ +},{"./widget-prop-blacklist.jsx":91}],90:[function(require,module,exports){ /** @jsx React.DOM */var WIDGET_PROP_BLACKLIST = require("./widget-prop-blacklist.jsx"); var JsonifyProps = { @@ -11099,7 +10959,7 @@ var JsonifyProps = { module.exports = JsonifyProps; -},{"./widget-prop-blacklist.jsx":161}],161:[function(require,module,exports){ +},{"./widget-prop-blacklist.jsx":91}],91:[function(require,module,exports){ /** @jsx React.DOM */module.exports = [ // standard props "added" by react // (technically the renderer still adds them) @@ -11113,7 +10973,7 @@ module.exports = JsonifyProps; "apiOptions" ]; -},{}],162:[function(require,module,exports){ +},{}],92:[function(require,module,exports){ /** @jsx React.DOM *//** * [Most of] the Perseus client API. * @@ -11172,7 +11032,7 @@ module.exports = { }; -},{}],163:[function(require,module,exports){ +},{}],93:[function(require,module,exports){ require("./all-widgets.js"); var version = require("./version.json"); @@ -11192,7 +11052,7 @@ module.exports = { Util: require("./util.js") }; -},{"./all-widgets.js":117,"./answer-area-renderer.jsx":119,"./diffs/revision-diff.jsx":136,"./editor-page.jsx":142,"./editor.jsx":143,"./init.js":147,"./item-renderer.jsx":158,"./perseus-api.jsx":162,"./renderer.jsx":165,"./stateful-editor-page.jsx":166,"./util.js":168,"./version.json":169}],164:[function(require,module,exports){ +},{"./all-widgets.js":47,"./answer-area-renderer.jsx":49,"./diffs/revision-diff.jsx":66,"./editor-page.jsx":72,"./editor.jsx":73,"./init.js":77,"./item-renderer.jsx":88,"./perseus-api.jsx":92,"./renderer.jsx":95,"./stateful-editor-page.jsx":96,"./util.js":98,"./version.json":99}],94:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11208,7 +11068,7 @@ var QuestionParagraph = React.createClass({displayName: 'QuestionParagraph', module.exports = QuestionParagraph; -},{"react":115}],165:[function(require,module,exports){ +},{"react":43}],95:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11843,7 +11703,7 @@ function extractMathAndWidgets(text) { module.exports = Renderer; -},{"./enabled-features.jsx":144,"./perseus-api.jsx":162,"./question-paragraph.jsx":164,"./tex.jsx":167,"./util.js":168,"./widget-container.jsx":170,"./widgets.js":171,"react":115}],166:[function(require,module,exports){ +},{"./enabled-features.jsx":74,"./perseus-api.jsx":92,"./question-paragraph.jsx":94,"./tex.jsx":97,"./util.js":98,"./widget-container.jsx":100,"./widgets.js":101,"react":43}],96:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11886,7 +11746,7 @@ var StatefulEditorPage = React.createClass({displayName: 'StatefulEditorPage', module.exports = StatefulEditorPage; -},{"./editor-page.jsx":142,"react":115}],167:[function(require,module,exports){ +},{"./editor-page.jsx":72,"react":43}],97:[function(require,module,exports){ /** @jsx React.DOM */ /** * For math rendered using MathJax. Use me like 2x + 3. @@ -12039,7 +11899,7 @@ var TeX = React.createClass({displayName: 'TeX', module.exports = TeX; -},{"react":115}],168:[function(require,module,exports){ +},{"react":43}],98:[function(require,module,exports){ var nestedMap = function(children, func, context) { if (_.isArray(children)) { return _.map(children, function(child) { @@ -12062,6 +11922,22 @@ var Util = { message: null }, + asc: function(text) { // 全型轉半型的 function + if (typeof text != "string") { + return text + } + var asciiTable = "!\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; + var big5Table = "%uFF01%u201D%uFF03%uFF04%uFF05%uFF06%u2019%uFF08%uFF09%uFF0A%uFF0B%uFF0C%uFF0D%uFF0E%uFF0F%uFF10%uFF11%uFF12%uFF13%uFF14%uFF15%uFF16%uFF17%uFF18%uFF19%uFF1A%uFF1B%uFF1C%uFF1D%uFF1E%uFF1F%uFF20%uFF21%uFF22%uFF23%uFF24%uFF25%uFF26%uFF27%uFF28%uFF29%uFF2A%uFF2B%uFF2C%uFF2D%uFF2E%uFF2F%uFF30%uFF31%uFF32%uFF33%uFF34%uFF35%uFF36%uFF37%uFF38%uFF39%uFF3A%uFF3B%uFF3C%uFF3D%uFF3E%uFF3F%u2018%uFF41%uFF42%uFF43%uFF44%uFF45%uFF46%uFF47%uFF48%uFF49%uFF4A%uFF4B%uFF4C%uFF4D%uFF4E%uFF4F%uFF50%uFF51%uFF52%uFF53%uFF54%uFF55%uFF56%uFF57%uFF58%uFF59%uFF5A%uFF5B%uFF5C%uFF5D%uFF5E"; + + var result = ""; + for (var i = 0; i < text.length; i++) { + var val = escape(text.charAt(i)); + var j = big5Table.indexOf(val); + result += (((j > -1) && (val.length == 6)) ? asciiTable.charAt(j / 6) : text.charAt(i)); + } + return result; + }, + seededRNG: function(seed) { var randomSeed = seed; @@ -12579,7 +12455,7 @@ Util.random = Util.seededRNG(new Date().getTime() & 0xffffffff); module.exports = Util; -},{}],169:[function(require,module,exports){ +},{}],99:[function(require,module,exports){ module.exports={ "apiVersion": { "major": 1, @@ -12591,7 +12467,7 @@ module.exports={ } } -},{}],170:[function(require,module,exports){ +},{}],100:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -12630,7 +12506,7 @@ var WidgetContainer = React.createClass({displayName: 'WidgetContainer', module.exports = WidgetContainer; -},{"react":115}],171:[function(require,module,exports){ +},{"react":43}],101:[function(require,module,exports){ var widgets = {}; var Widgets = { @@ -12770,7 +12646,7 @@ var Widgets = { module.exports = Widgets; -},{}],172:[function(require,module,exports){ +},{}],102:[function(require,module,exports){ /** @jsx React.DOM */ var Changeable = require("../mixins/changeable.jsx"); @@ -12956,7 +12832,7 @@ module.exports = { }; -},{"../components/text-list-editor.jsx":135,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../renderer.jsx":165,"../util.js":168}],173:[function(require,module,exports){ +},{"../components/text-list-editor.jsx":65,"../mixins/changeable.jsx":89,"../mixins/jsonify-props.jsx":90,"../renderer.jsx":95,"../util.js":98}],103:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -13214,7 +13090,7 @@ module.exports = { hidden: false }; -},{"../components/fancy-select.jsx":120,"../mixins/jsonify-props.jsx":160,"../perseus-api.jsx":162,"../util.js":168,"react":115,"react-components/info-tip":5}],174:[function(require,module,exports){ +},{"../components/fancy-select.jsx":50,"../mixins/jsonify-props.jsx":90,"../perseus-api.jsx":92,"../util.js":98,"react":43,"react-components/info-tip":37}],104:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -13409,7 +13285,7 @@ module.exports = { editor: ExampleGraphieWidgetEditor }; -},{"../components/graphie.jsx":125,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../util.js":168,"react":115}],175:[function(require,module,exports){ +},{"../components/graphie.jsx":55,"../mixins/changeable.jsx":89,"../mixins/jsonify-props.jsx":90,"../util.js":98,"react":43}],105:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -13593,7 +13469,7 @@ module.exports = { editor: ExampleWidgetEditor }; -},{"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"react":115}],176:[function(require,module,exports){ +},{"../mixins/changeable.jsx":89,"../mixins/jsonify-props.jsx":90,"react":43}],106:[function(require,module,exports){ /** @jsx React.DOM */ var React = require("react"); @@ -13614,6 +13490,7 @@ var TexButtons = require("../components/tex-buttons.jsx"); var cx = React.addons.classSet; var EnabledFeatures = require("../enabled-features.jsx"); +var Util = require("../util.js"); var ERROR_MESSAGE = $._("Sorry, I don't understand that!"); @@ -13727,7 +13604,7 @@ var Expression = React.createClass({displayName: 'Expression', MathInput( {ref:"input", value:this.props.value, - onChange:this.change("value"), + onChange:this.handleChange, convertDotToTimes:this.props.times, buttonsVisible:this.props.buttonsVisible || "focused", buttonSets:this.props.buttonSets, @@ -13737,6 +13614,10 @@ var Expression = React.createClass({displayName: 'Expression', ); } }, + + handleChange: function(newValue) { + this.props.onChange({ value: Util.asc(newValue) }); + }, _handleFocus: function() { if (this.props.apiOptions.staticRender) { @@ -14077,7 +13958,7 @@ module.exports = { hidden: false }; -},{"../components/input-with-examples.jsx":126,"../components/math-input.jsx":127,"../components/prop-check-box.jsx":130,"../components/tex-buttons.jsx":133,"../enabled-features.jsx":144,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../perseus-api.jsx":162,"../tex.jsx":167,"react":115,"react-components/info-tip":5,"react-components/tooltip":114}],177:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":56,"../components/math-input.jsx":57,"../components/prop-check-box.jsx":60,"../components/tex-buttons.jsx":63,"../enabled-features.jsx":74,"../mixins/changeable.jsx":89,"../mixins/jsonify-props.jsx":90,"../perseus-api.jsx":92,"../tex.jsx":97,"../util.js":98,"react":43,"react-components/info-tip":37,"react-components/tooltip":42}],107:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -14329,7 +14210,7 @@ module.exports = { editor: IframeEditor }; -},{"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../util.js":168,"react":115,"react-components/blur-input":2}],178:[function(require,module,exports){ +},{"../mixins/changeable.jsx":89,"../mixins/jsonify-props.jsx":90,"../util.js":98,"react":43,"react-components/blur-input":34}],108:[function(require,module,exports){ /** @jsx React.DOM */ var BlurInput = require("react-components/blur-input"); @@ -14664,7 +14545,7 @@ module.exports = { }; -},{"../components/graphie.jsx":125,"../components/range-input.jsx":131,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"react-components/blur-input":2,"react-components/info-tip":5}],179:[function(require,module,exports){ +},{"../components/graphie.jsx":55,"../components/range-input.jsx":61,"../mixins/changeable.jsx":89,"../mixins/jsonify-props.jsx":90,"react-components/blur-input":34,"react-components/info-tip":37}],109:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -14822,7 +14703,7 @@ var InputNumber = React.createClass({displayName: 'InputNumber', }, handleChange: function(newValue) { - this.props.onChange({ currentValue: newValue }); + this.props.onChange({ currentValue: Util.asc(newValue) }); }, focus: function() { @@ -14985,7 +14866,7 @@ module.exports = { transform: propTransform }; -},{"../components/input-with-examples.jsx":126,"../enabled-features.jsx":144,"../perseus-api.jsx":162,"../renderer.jsx":165,"../tex.jsx":167,"../util.js":168,"react":115,"react-components/blur-input":2,"react-components/info-tip":5}],180:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":56,"../enabled-features.jsx":74,"../perseus-api.jsx":92,"../renderer.jsx":95,"../tex.jsx":97,"../util.js":98,"react":43,"react-components/blur-input":34,"react-components/info-tip":37}],110:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -17483,7 +17364,7 @@ module.exports = { hidden: false }; -},{"../components/graph-settings.jsx":121,"../components/graph.jsx":122,"../components/number-input.jsx":129,"../interactive2.js":148,"../util.js":168,"react":115,"react-components/info-tip":5}],181:[function(require,module,exports){ +},{"../components/graph-settings.jsx":51,"../components/graph.jsx":52,"../components/number-input.jsx":59,"../interactive2.js":78,"../util.js":98,"react":43,"react-components/info-tip":37}],111:[function(require,module,exports){ /** @jsx React.DOM */ var InfoTip = require("react-components/info-tip"); @@ -17931,7 +17812,7 @@ module.exports = { editor: InteractiveNumberLineEditor }; -},{"../components/prop-check-box.jsx":130,"../util.js":168,"react-components/info-tip":5}],182:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":60,"../util.js":98,"react-components/info-tip":37}],112:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18393,7 +18274,7 @@ module.exports = { transform: transformProps }; -},{"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"react":115,"react-components/info-tip":5}],183:[function(require,module,exports){ +},{"../components/number-input.jsx":59,"../components/prop-check-box.jsx":60,"../mixins/changeable.jsx":89,"../mixins/jsonify-props.jsx":90,"react":43,"react-components/info-tip":37}],113:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18633,7 +18514,7 @@ module.exports = { hidden: false }; -},{"../components/prop-check-box.jsx":130,"../components/sortable.jsx":132,"../components/text-list-editor.jsx":135,"../renderer.jsx":165,"../util.js":168,"react":115,"react-components/info-tip":5}],184:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":60,"../components/sortable.jsx":62,"../components/text-list-editor.jsx":65,"../renderer.jsx":95,"../util.js":98,"react":43,"react-components/info-tip":37}],114:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18994,7 +18875,7 @@ module.exports = { hidden: false }; -},{"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../components/range-input.jsx":131,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"react":115,"react-components/info-tip":5}],185:[function(require,module,exports){ +},{"../components/number-input.jsx":59,"../components/prop-check-box.jsx":60,"../components/range-input.jsx":61,"../mixins/changeable.jsx":89,"../mixins/jsonify-props.jsx":90,"react":43,"react-components/info-tip":37}],115:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -19845,7 +19726,7 @@ module.exports = { hidden: false }; -},{"../components/graphie.jsx":125,"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../components/range-input.jsx":131,"../interactive2.js":148,"../interactive2/interactive-util.js":149,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../util.js":168,"react":115,"react-components/button-group":3,"react-components/info-tip":5}],186:[function(require,module,exports){ +},{"../components/graphie.jsx":55,"../components/number-input.jsx":59,"../components/prop-check-box.jsx":60,"../components/range-input.jsx":61,"../interactive2.js":78,"../interactive2/interactive-util.js":79,"../mixins/changeable.jsx":89,"../mixins/jsonify-props.jsx":90,"../util.js":98,"react":43,"react-components/button-group":35,"react-components/info-tip":37}],116:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -19861,7 +19742,7 @@ var InputWithExamples = require("../components/input-with-examples.jsx"); var Editor = require("../editor.jsx"); -var firstNumericalParse = require("../util.js").firstNumericalParse; +var Util = require("../util.js"); var answerFormButtons = [ {title: "整數", value: "integer", text: "6"}, @@ -19910,7 +19791,7 @@ var NumericInput = React.createClass({displayName: 'NumericInput', }, handleChange: function(newValue) { - this.props.onChange({ currentValue: newValue }); + this.props.onChange({ currentValue: Util.asc(newValue) }); }, focus: function() { @@ -20145,13 +20026,13 @@ var NumericInputEditor = React.createClass({displayName: 'NumericInputEditor', forms = ["proper", "improper"]; } this.updateAnswer(i, { - value: firstNumericalParse(newValue), + value: Util.firstNumericalParse(newValue), answerForms: forms }); }.bind(this), onChange:function(newValue) { this.updateAnswer(i, { - value: firstNumericalParse(newValue)}); + value: Util.firstNumericalParse(newValue)}); }.bind(this)} ), answer.strict && React.DOM.div( {className:"is-strict-indicator", title:"strictly equivalent to"}, "≡"), @@ -20290,7 +20171,7 @@ module.exports = { hidden: false }; -},{"../components/input-with-examples.jsx":126,"../components/multi-button-group.jsx":128,"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../editor.jsx":143,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../util.js":168,"react":115,"react-components/button-group":3,"react-components/info-tip":5}],187:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":56,"../components/multi-button-group.jsx":58,"../components/number-input.jsx":59,"../components/prop-check-box.jsx":60,"../editor.jsx":73,"../mixins/changeable.jsx":89,"../mixins/jsonify-props.jsx":90,"../util.js":98,"react":43,"react-components/button-group":35,"react-components/info-tip":37}],117:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -20963,7 +20844,7 @@ module.exports = { hidden: false }; -},{"../components/text-list-editor.jsx":135,"../renderer.jsx":165,"../util.js":168,"react":115,"react-components/info-tip":5}],188:[function(require,module,exports){ +},{"../components/text-list-editor.jsx":65,"../renderer.jsx":95,"../util.js":98,"react":43,"react-components/info-tip":37}],118:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -21960,7 +21841,7 @@ module.exports = { hidden: false }; -},{"../components/number-input.jsx":129,"../components/range-input.jsx":131,"../components/text-list-editor.jsx":135,"../util.js":168,"react":115,"react-components/info-tip":5}],189:[function(require,module,exports){ +},{"../components/number-input.jsx":59,"../components/range-input.jsx":61,"../components/text-list-editor.jsx":65,"../util.js":98,"react":43,"react-components/info-tip":37}],119:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22507,7 +22388,7 @@ module.exports = { transform: choiceTransform }; -},{"../components/prop-check-box.jsx":130,"../editor.jsx":143,"../mixins/changeable.jsx":159,"../perseus-api.jsx":162,"../renderer.jsx":165,"../util.js":168,"react":115,"react-components/button-group":3,"react-components/info-tip":5}],190:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":60,"../editor.jsx":73,"../mixins/changeable.jsx":89,"../perseus-api.jsx":92,"../renderer.jsx":95,"../util.js":98,"react":43,"react-components/button-group":35,"react-components/info-tip":37}],120:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22659,7 +22540,7 @@ module.exports = { hidden: false }; -},{"../components/prop-check-box.jsx":130,"../components/sortable.jsx":132,"../components/text-list-editor.jsx":135,"../util.js":168,"react":115,"react-components/info-tip":5}],191:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":60,"../components/sortable.jsx":62,"../components/text-list-editor.jsx":65,"../util.js":98,"react":43,"react-components/info-tip":37}],121:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22979,7 +22860,7 @@ module.exports = { hidden: false }; -},{"../editor.jsx":143,"../renderer.jsx":165,"../util.js":168,"react":115,"react-components/info-tip":5}],192:[function(require,module,exports){ +},{"../editor.jsx":73,"../renderer.jsx":95,"../util.js":98,"react":43,"react-components/info-tip":37}],122:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -25483,5 +25364,5 @@ module.exports = { hidden: false }; -},{"../components/graph-settings.jsx":121,"../components/graph.jsx":122,"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../tex.jsx":167,"../util.js":168,"react":115,"react-components/info-tip":5}]},{},[163])(163) +},{"../components/graph-settings.jsx":51,"../components/graph.jsx":52,"../components/number-input.jsx":59,"../components/prop-check-box.jsx":60,"../tex.jsx":97,"../util.js":98,"react":43,"react-components/info-tip":37}]},{},[93])(93) }); \ No newline at end of file diff --git a/src/util.js b/src/util.js index d18f1e5b2c..b8c11c36f3 100644 --- a/src/util.js +++ b/src/util.js @@ -20,6 +20,22 @@ var Util = { message: null }, + asc: function(text) { // 全型轉半型的 function + if (typeof text != "string") { + return text + } + var asciiTable = "!\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; + var big5Table = "%uFF01%u201D%uFF03%uFF04%uFF05%uFF06%u2019%uFF08%uFF09%uFF0A%uFF0B%uFF0C%uFF0D%uFF0E%uFF0F%uFF10%uFF11%uFF12%uFF13%uFF14%uFF15%uFF16%uFF17%uFF18%uFF19%uFF1A%uFF1B%uFF1C%uFF1D%uFF1E%uFF1F%uFF20%uFF21%uFF22%uFF23%uFF24%uFF25%uFF26%uFF27%uFF28%uFF29%uFF2A%uFF2B%uFF2C%uFF2D%uFF2E%uFF2F%uFF30%uFF31%uFF32%uFF33%uFF34%uFF35%uFF36%uFF37%uFF38%uFF39%uFF3A%uFF3B%uFF3C%uFF3D%uFF3E%uFF3F%u2018%uFF41%uFF42%uFF43%uFF44%uFF45%uFF46%uFF47%uFF48%uFF49%uFF4A%uFF4B%uFF4C%uFF4D%uFF4E%uFF4F%uFF50%uFF51%uFF52%uFF53%uFF54%uFF55%uFF56%uFF57%uFF58%uFF59%uFF5A%uFF5B%uFF5C%uFF5D%uFF5E"; + + var result = ""; + for (var i = 0; i < text.length; i++) { + var val = escape(text.charAt(i)); + var j = big5Table.indexOf(val); + result += (((j > -1) && (val.length == 6)) ? asciiTable.charAt(j / 6) : text.charAt(i)); + } + return result; + }, + seededRNG: function(seed) { var randomSeed = seed; diff --git a/src/widgets/expression.jsx b/src/widgets/expression.jsx index 40e99311f7..6599c210e6 100644 --- a/src/widgets/expression.jsx +++ b/src/widgets/expression.jsx @@ -18,6 +18,7 @@ var TexButtons = require("../components/tex-buttons.jsx"); var cx = React.addons.classSet; var EnabledFeatures = require("../enabled-features.jsx"); +var Util = require("../util.js"); var ERROR_MESSAGE = $._("Sorry, I don't understand that!"); @@ -131,7 +132,7 @@ var Expression = React.createClass({ ; } }, + + handleChange: function(newValue) { + this.props.onChange({ value: Util.asc(newValue) }); + }, _handleFocus: function() { if (this.props.apiOptions.staticRender) { diff --git a/src/widgets/input-number.jsx b/src/widgets/input-number.jsx index 34000a4288..8bc69f8f42 100644 --- a/src/widgets/input-number.jsx +++ b/src/widgets/input-number.jsx @@ -155,7 +155,7 @@ var InputNumber = React.createClass({ }, handleChange: function(newValue) { - this.props.onChange({ currentValue: newValue }); + this.props.onChange({ currentValue: Util.asc(newValue) }); }, focus: function() { diff --git a/src/widgets/numeric-input.jsx b/src/widgets/numeric-input.jsx index 26f374e06b..4346ab3ee4 100644 --- a/src/widgets/numeric-input.jsx +++ b/src/widgets/numeric-input.jsx @@ -13,7 +13,7 @@ var InputWithExamples = require("../components/input-with-examples.jsx"); var Editor = require("../editor.jsx"); -var firstNumericalParse = require("../util.js").firstNumericalParse; +var Util = require("../util.js"); var answerFormButtons = [ {title: "整數", value: "integer", text: "6"}, @@ -62,7 +62,7 @@ var NumericInput = React.createClass({ }, handleChange: function(newValue) { - this.props.onChange({ currentValue: newValue }); + this.props.onChange({ currentValue: Util.asc(newValue) }); }, focus: function() { @@ -297,13 +297,13 @@ var NumericInputEditor = React.createClass({ forms = ["proper", "improper"]; } this.updateAnswer(i, { - value: firstNumericalParse(newValue), + value: Util.firstNumericalParse(newValue), answerForms: forms }); }} onChange={(newValue) => { this.updateAnswer(i, { - value: firstNumericalParse(newValue)}); + value: Util.firstNumericalParse(newValue)}); }} /> {answer.strict &&
} From 496ad8eec36dfab818b6f943a62c7fbe165c08ea Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Wed, 27 Jul 2016 03:32:53 +0000 Subject: [PATCH 096/156] add speaking confidence settings --- src/widgets/speaking-text-input.jsx | 62 +++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 16 deletions(-) diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index 9c9fa159be..3e926b583d 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -90,11 +90,13 @@ var SpeakingBtn = React.createClass({ recognition.lang = 'en-US'; recognition.continuous = false; recognition.interimResults = true; + recognition.maxAlternatives = 20; self.setState({recognizing: false}); self.setState({status: "請按開始"}); recognition.onstart = function() { self.setState({recognizing: true}); self.setState({status: "辨識中"}); + self.props.setValue(''); console.log('recognition start'); }; recognition.onend = function() { @@ -106,9 +108,16 @@ var SpeakingBtn = React.createClass({ self.setState({recognizing: false}); console.log('recognition result'); console.log(event); + var res = ''; for (var i = event.resultIndex; i < event.results.length; i++) { if (event.results[i].isFinal) { - self.props.setValue(event.results[i][0].transcript); + for (var j = 0; j < event.results[i].length; j++) { + if(j!=0){ + res = res + '/'; + } + res = res + event.results[i][j].transcript; + self.props.setValue(res); + } } } } @@ -253,18 +262,26 @@ _.extend(SpeakingTextInput, { }, validate: function(state, rubric) { - var userAns = SpeakingTextInput.parseAnswer(state.value); + console.log(state); var correntAns = SpeakingTextInput.parseAnswer(rubric.correct); - console.log("user"); - console.log(userAns); - console.log("corrent"); - console.log(correntAns); - if (userAns.length == 0) { - return {type: "invalid", message: "看來你什麼都沒念!請重新再唸一次!"}; - } else if (SpeakingTextInput.arrIsEqual(userAns, correntAns)) { - return {type: "points", earned: 1, total: 1, message: null}; + var userAnsList = state.value.split("/"); + var correntIdx = -1; + for (var i = 0, len = userAnsList.length; i < len; i++) { + if(SpeakingTextInput.arrIsEqual(SpeakingTextInput.parseAnswer(userAnsList[i]), correntAns)){ + correntIdx = i; + break; + } + } + console.log(userAnsList); + console.log(correntIdx); + if (state.value == '') { + return {type: 'invalid', message: '看來你什麼都沒念!請重新再唸一次!'}; + } else if (correntIdx == -1) { + return {type: 'points', earned: 0, total: 1, message: null}; + } else if (correntIdx < state.correctIdxLessThen) { + return {type: 'points', earned: 1, total: 1, message: null}; } else { - return {type: "points", earned: 0, total: 1, message: null}; + return {type: 'points', earned: 0, total: 1, message: null}; } } }); @@ -279,19 +296,32 @@ var SpeakingTextInputEditor = React.createClass({ ], getDefaultProps: function() { - return {correct: ""}; + return {correct: "", + correctIdxLessThen: 5}; }, handleAnswerChange: function(event) { this.change({correct: event.target.value}); }, + handleCorrectIdxChange: function(event) { + this.change({correctIdxLessThen: parseInt(event.target.value)}); + }, + render: function() { return
- +
+ +
+
+ +
; }, From 8b7542df949001428bf89daf83f22c7c532b4340 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Wed, 27 Jul 2016 07:27:55 +0000 Subject: [PATCH 097/156] fix ui --- src/widgets/speaking-text-input.jsx | 16 +++++++--------- src/widgets/speaking-voice.jsx | 4 ++-- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index 3e926b583d..05bd842b7b 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -57,14 +57,12 @@ var SpeakingBtn = React.createClass({ render: function() { return (
- {this.state.recognition ? - - : false} - - + {this.state.recognition ? + + : false}
); }, @@ -92,7 +90,7 @@ var SpeakingBtn = React.createClass({ recognition.interimResults = true; recognition.maxAlternatives = 20; self.setState({recognizing: false}); - self.setState({status: "請按開始"}); + self.setState({status: "辨識"}); recognition.onstart = function() { self.setState({recognizing: true}); self.setState({status: "辨識中"}); diff --git a/src/widgets/speaking-voice.jsx b/src/widgets/speaking-voice.jsx index 33380cb6c4..fbf4465c0d 100644 --- a/src/widgets/speaking-voice.jsx +++ b/src/widgets/speaking-voice.jsx @@ -17,6 +17,7 @@ var SpeakingVoice = React.createClass({ componentDidMount: function() { this.responsiveVoice = new ResponsiveVoice; this.responsiveVoice.init(); + console.log(this.responsiveVoice); }, speak: function() { @@ -51,8 +52,7 @@ var SpeakingVoice = React.createClass({ render: function() { return (
- {this.props.voiceText} - +
); }, From 8c5c614f870e3097cf534933281847a590b7162d Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Thu, 28 Jul 2016 03:23:49 +0000 Subject: [PATCH 098/156] fix bug, cleanup code --- src/widgets/speaking-text-input.jsx | 228 +++++++++++----------------- src/widgets/speaking-voice.jsx | 131 +++++----------- 2 files changed, 127 insertions(+), 232 deletions(-) diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index 05bd842b7b..e07bbca25c 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -6,10 +6,7 @@ var JsonifyProps = require("../mixins/jsonify-props.jsx"); var TextInput = React.createClass({ render: function() { - return ; + return ; }, pasteValue: function(e) { @@ -29,13 +26,10 @@ var TextInput = React.createClass({ changeValue: function(e) { // Chrome Speech API - if(e.target.value){ - console.log(e.target.value); + if (e.target.value) { this.props.setValue(e.target.value); - } // iOS Siri Input - else{ - console.log(this.refs.input.value); + } else { this.props.setValue(this.refs.input.value); } }, @@ -45,45 +39,45 @@ var TextInput = React.createClass({ } }); -var StatusSpan = React.createClass({ - render : function() { - return ( - {this.props.text} - ) - } -}); - var SpeakingBtn = React.createClass({ render: function() { return (
- {this.state.recognition ? - - : false} + {this.state.recognition + ? + : }
); }, getInitialState: function() { - return { - recognition: null, - recognizing: false, - status: "", - } + return {recognition: null, recognizing: false, status: ""} }, startRecognize: function() { - if(this.state.recognizing==false){ + if (this.state.recognizing == false) { this.state.recognition.start(); } }, + // prevent trigger checking answer when clicking button + startRecognizeOnClick(e) { + this.startRecognize(); + e.preventDefault(); + return false; + }, + + // ignore clicking event + ignoreOnClick(e) { + e.preventDefault(); + return false; + }, + componentDidMount: function() { var self = this; var os = self.getMobileOperatingSystem(); - if(self.hasSpeechRecognition()){ + if (self.hasSpeechRecognition()) { var recognition = new webkitSpeechRecognition(); recognition.lang = 'en-US'; recognition.continuous = false; @@ -95,22 +89,18 @@ var SpeakingBtn = React.createClass({ self.setState({recognizing: true}); self.setState({status: "辨識中"}); self.props.setValue(''); - console.log('recognition start'); }; recognition.onend = function() { self.setState({recognizing: false}); self.setState({status: "辨識完成"}); - console.log('recognition end'); }; recognition.onresult = function(event) { self.setState({recognizing: false}); - console.log('recognition result'); - console.log(event); var res = ''; for (var i = event.resultIndex; i < event.results.length; i++) { if (event.results[i].isFinal) { for (var j = 0; j < event.results[i].length; j++) { - if(j!=0){ + if (j != 0) { res = res + '/'; } res = res + event.results[i][j].transcript; @@ -120,16 +110,13 @@ var SpeakingBtn = React.createClass({ } } self.setState({recognition: recognition}); - } - else{ - if(os=='iOS'){ - self.setState({status: "請用 Siri 語音輸入"}); - } - else if (os=='Android') { - self.setState({status: "請用 Google 語音輸入"}); - } - else{ - self.setState({status: "請用 Chrome 瀏覽器"}); + } else { + if (os == 'iOS') { + self.setState({status: "點選上面的框框 用Siri語音輸入"}); + } else if (os == 'Android') { + self.setState({status: "點選上面的框框 用Google語音輸入"}); + } else { + self.setState({status: "請切換至Chrome瀏覽器"}); } } }, @@ -154,11 +141,6 @@ var SpeakingBtn = React.createClass({ } }); -/** - * This is the widget's renderer. It shows up in the right column - * in test.html, and is what is visible to users, and where - * users enter their answers. - */ var SpeakingTextInput = React.createClass({ propTypes: { value: React.PropTypes.string @@ -177,12 +159,6 @@ var SpeakingTextInput = React.createClass({ this.change("value")(val); }, - /** - * Changeling creates this.change() to tell our parent to update our props - * - * JsonifyProps creates this.toJSON() which returns the state of the widget - * for checking the answer in simpleValidate - */ mixins: [ Changeable, JsonifyProps ], @@ -196,28 +172,11 @@ var SpeakingTextInput = React.createClass({ ); }, - /** - * Widgets that are focusable should add a focus method that returns - * true if focusing succeeded. The first such widget found will be - * focused on page load. - */ focus: function() { this.refs.input.focus(); return true; }, - /** - * simpleValidate is called for grading. Rubric is the result of calling - * toJSON() on the editor that created this widget. - * - * Should return an object representing the grading result, such as - * { - * type: "points", - * earned: 1, - * total: 1, - * message: null - * } - */ simpleValidate: function(rubric) { return SpeakingTextInput.validate(this.toJSON(), rubric); }, @@ -227,20 +186,11 @@ var SpeakingTextInput = React.createClass({ } }); -/** - * This is the widget's grading function - */ _.extend(SpeakingTextInput, { - /** - * simpleValidate generally defers to this function - * - * state is usually the result of toJSON on the widget - * rubric is the result of calling toJSON() on the editor - */ parseAnswer: function(s) { var arr = s.split(" "); var parsedArr = []; - for (var i=0; i 0) { parsedArr.push(arr[i].toLowerCase()); } @@ -260,79 +210,71 @@ _.extend(SpeakingTextInput, { }, validate: function(state, rubric) { - console.log(state); var correntAns = SpeakingTextInput.parseAnswer(rubric.correct); var userAnsList = state.value.split("/"); var correntIdx = -1; for (var i = 0, len = userAnsList.length; i < len; i++) { - if(SpeakingTextInput.arrIsEqual(SpeakingTextInput.parseAnswer(userAnsList[i]), correntAns)){ + if (SpeakingTextInput.arrIsEqual(SpeakingTextInput.parseAnswer(userAnsList[i]), correntAns)) { correntIdx = i; break; } } - console.log(userAnsList); - console.log(correntIdx); if (state.value == '') { - return {type: 'invalid', message: '看來你什麼都沒念!請重新再唸一次!'}; + return {type: 'invalid', message: '請重新再唸一次!'}; } else if (correntIdx == -1) { return {type: 'points', earned: 0, total: 1, message: null}; } else if (correntIdx < state.correctIdxLessThen) { return {type: 'points', earned: 1, total: 1, message: null}; } else { return {type: 'points', earned: 0, total: 1, message: null}; + }} + }); + + var SpeakingTextInputEditor = React.createClass({ + mixins: [ + Changeable, JsonifyProps + ], + + getDefaultProps: function() { + return {correct: "", correctIdxLessThen: 5}; + }, + + handleAnswerChange: function(event) { + this.change({correct: event.target.value}); + }, + + handleCorrectIdxChange: function(event) { + this.change({ + correctIdxLessThen: parseInt(event.target.value) + }); + }, + + render: function() { + return
+
+ +
+
+ +
+
; + }, + + focus: function() { + this.refs.input.focus(); + return true; } - } -}); - -/** - * This is the widget's editor. This is what shows up on the left side - * of the screen in test.html. Only the question writer sees this. - */ -var SpeakingTextInputEditor = React.createClass({ - mixins: [ - Changeable, JsonifyProps - ], - - getDefaultProps: function() { - return {correct: "", - correctIdxLessThen: 5}; - }, - - handleAnswerChange: function(event) { - this.change({correct: event.target.value}); - }, - - handleCorrectIdxChange: function(event) { - this.change({correctIdxLessThen: parseInt(event.target.value)}); - }, - - render: function() { - return
-
- -
-
- -
-
; - }, - - focus: function() { - this.refs.input.focus(); - return true; - } -}); - -module.exports = { - name: "speaking-text-input", - displayName: "英文口說文字框", - widget: SpeakingTextInput, - editor: SpeakingTextInputEditor, - // transform: propTransform -}; + }); + + module.exports = { + name: "speaking-text-input", + displayName: "英文口說文字框", + widget: SpeakingTextInput, + editor: SpeakingTextInputEditor + }; diff --git a/src/widgets/speaking-voice.jsx b/src/widgets/speaking-voice.jsx index fbf4465c0d..1ef7bec6c9 100644 --- a/src/widgets/speaking-voice.jsx +++ b/src/widgets/speaking-voice.jsx @@ -4,46 +4,27 @@ var React = require('react'); var Changeable = require("../mixins/changeable.jsx"); var JsonifyProps = require("../mixins/jsonify-props.jsx"); var ResponsiveVoice = require('../../lib/responsivevoice.js'); -/** - * This is the widget's renderer. It shows up in the right column - * in test.html, and is what is visible to users, and where - * users enter their answers. - */ + var SpeakingVoice = React.createClass({ - // propTypes: { - // value: React.PropTypes.string - // }, - // componentDidMount: function() { this.responsiveVoice = new ResponsiveVoice; - this.responsiveVoice.init(); - console.log(this.responsiveVoice); + this.responsiveVoice.init(); // must manually init }, speak: function() { - this.responsiveVoice.speak( - this.props.voiceText, - this.props.lang, - { - pitch: parseFloat(this.props.pitch), - rate: parseFloat(this.props.rate), - volume: this.props.volume - } - ); + this.responsiveVoice.speak(this.props.voiceText, this.props.lang, { + pitch: parseFloat(this.props.pitch), + rate: parseFloat(this.props.rate), + volume: this.props.volume + }); }, - // getDefaultProps: function() { - // return {value: ""}; - // }, - - // getInitialState: function() { - // return {r: null} - // }, - // - // setValue: function(val) { - // this.setState({value: val}); - // this.change("value")(val); - // }, + // prevent trigger checking answer when clicking button + speakOnClick: function(e) { + this.speak(); + e.preventDefault(); + return false; + }, mixins: [ Changeable, JsonifyProps @@ -52,40 +33,18 @@ var SpeakingVoice = React.createClass({ render: function() { return (
- +
); }, - /** - * Widgets that are focusable should add a focus method that returns - * true if focusing succeeded. The first such widget found will be - * focused on page load. - */ focus: function() { this.refs.input.focus(); return true; }, - /** - * simpleValidate is called for grading. Rubric is the result of calling - * toJSON() on the editor that created this widget. - * - * Should return an object representing the grading result, such as - * { - * type: "points", - * earned: 1, - * total: 1, - * message: null - * } - */ simpleValidate: function(rubric) { - return { - type: "points", - earned: 1, - total: 1, - message: null - }; + return {type: "points", earned: 1, total: 1, message: null}; }, statics: { @@ -93,46 +52,17 @@ var SpeakingVoice = React.createClass({ } }); -/** - * This is the widget's grading function - */ -_.extend(SpeakingVoice, { - /** - * simpleValidate generally defers to this function - * - * state is usually the result of toJSON on the widget - * rubric is the result of calling toJSON() on the editor - */ - -}); - -/** - * This is the widget's editor. This is what shows up on the left side - * of the screen in test.html. Only the question writer sees this. - */ var SpeakingVoiceEditor = React.createClass({ mixins: [ Changeable, JsonifyProps ], getDefaultProps: function() { - return { - voiceText: "", - pitch: "1.0", - rate: "1.0", - volume: "1.0", - lang: "US English Female" - } + return {voiceText: "", pitch: "1.0", rate: "1.0", volume: "1.0", lang: "US English Female"} }, getInitialState: function() { - return { - voiceText: this.props.voiceText, - pitch: this.props.pitch, - rate: this.props.rate, - volume: this.props.volume, - lang: this.props.lang - } + return {voiceText: this.props.voiceText, pitch: this.props.pitch, rate: this.props.rate, volume: this.props.volume, lang: this.props.lang} }, pitchChange: function(event) { @@ -168,11 +98,19 @@ var SpeakingVoiceEditor = React.createClass({ 速度: @@ -182,9 +120,25 @@ var SpeakingVoiceEditor = React.createClass({ 音調: @@ -212,7 +166,6 @@ module.exports = { name: "speaking-voice", displayName: "Speaking Voice", widget: SpeakingVoice, - // Let's not expose it to all content creators yet hidden: false, editor: SpeakingVoiceEditor }; From 6745f5e11ba5d5c0aad309ff9fb65807ea1e18c0 Mon Sep 17 00:00:00 2001 From: Tiffany Date: Thu, 28 Jul 2016 12:28:39 +0800 Subject: [PATCH 099/156] minion when ans correct in check answer --- src/item-editor.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/item-editor.jsx b/src/item-editor.jsx index adf1cb9d84..7808c8931d 100644 --- a/src/item-editor.jsx +++ b/src/item-editor.jsx @@ -80,7 +80,7 @@ var ItemEditor = React.createClass({ onClick={this.props.onCheckAnswer} value="Check Answer" /> {this.props.wasAnswered && - } {this.props.gradeMessage && {this.props.gradeMessage}} From 27fbe0f9b9515eb7343e6b7cdccf055bb8e3f102 Mon Sep 17 00:00:00 2001 From: Tiffany Date: Thu, 28 Jul 2016 12:52:04 +0800 Subject: [PATCH 100/156] upload pic --- build/perseus-1.js | 6 +++--- images/upload_thumb.png | Bin 0 -> 7309 bytes 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 images/upload_thumb.png diff --git a/build/perseus-1.js b/build/perseus-1.js index b1554248ad..fe73405fa7 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit df5ef5ed6e0a284e64802c45504aafca03d5ae55 -// branch upgrade_expression +// commit 6745f5e11ba5d5c0aad309ff9fb65807ea1e18c0 +// branch perseus_editor_cute_pic (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;oPbIv>O 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 Date: Thu, 28 Jul 2016 14:33:38 +0800 Subject: [PATCH 101/156] rm pic --- images/upload_thumb.png | Bin 7309 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 images/upload_thumb.png diff --git a/images/upload_thumb.png b/images/upload_thumb.png deleted file mode 100644 index ea6251a053729ec8bc78ed5d69d96e72651271e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7309 zcmY*-WmFu@vh5(jU5CKn7TkjS05iA-m%-gNxVuAe_W(hHy9W)ff#3v!dvI>PbIv>O z-d?M^tE+eIUDf}(qg0e2m}qa&0001{EL2ME?@IsIXi<><&U-h|QUCyh#2O4%kp+V( zRa_h`tnJJJ0BF=FEo2RKS>ik`H561<9JqIdd=lQD)`e#KWT5b&cwowkk=yLp(O9CJ`(SeuX ztwa>Z5;FpV4h9qyD#^UFVy`S!Z&|q ztzY$U;zg87d%N|nl%fDY%_tGd6&$4-xT~+)HwdvOO#1^0D!e$Yyi+@dt*lcehMv5= zNwFW*EkdAzd41?_03&pp8-4jVM|?2A#8xz7IKqp0ko*{f2-$>l5Z}ecLb4hfw#;+W z!T&oTCR30oWk`-<;H!R#Q^1tmnoMg$I(%uxXD6n()VB>0qZEq;uld{iwZ>W zDHK`kJvE*QVdT^$znTwfcP^r<^Fwt793Jwe)hm6dKhpK&ph($b|<8cRi5!C z?A8jAU5wuYu^i1(CSeeQez$^aOyitp?i2!X#^jq4vzVukBgVnt)VDqe>W^JUBvHOL zgJTzkH+d7;arM9V<3%fn+sX3y1sA zM}UHjLkCnBky)L{ND^?IODV>r`3-Ye0(kz$KM+-_t~5B4692sYLGN)Z+m04c7l>1W zz_w=2^}PZT>=ufh&sl);go;bN8+U&Xg|rm_4trv)&6VX7=|QZC-ey4zIQyGft;nb0 z5q;&vcFnEar(B1_8f3Yj4wSEHkZ=(qElh=%6Ww|3BzqtE+EtcajXm(#o@U6phiHVU zu5rlmYH$Zb^(e`O(_~2Mv-+6vUV3v-`-6Zo=)h4n!f(fOKrx+?)7C_wQHN1BF1>LvJP zhE5hldJg|Wi6|AUorqXAP-z)RHsVc`flL&Fr-Gyza#Mh22e&FAvW##Wq&W>2A2PQI ze}J^q3u@){?nCDQtOrpcNdT_w^% zNz~#ss8$n^cC~hKT*w3>t|?m*k)afqZ|_4*7zsZ}H>sMsQ6I*77Z+Nw2x2NiTxTR3 zfd)~UMNJ0|jc-Ka4aI8>}qP<5J_2 z&)c-VEhSo52c7sZ7nI+Py^#I@?w zP&79gSu`p%tyEj9&(&0wW}q{A&g~|JCSlwDL-NtjaxQY;ub`Q)0a#dxMBTK=RER$@}UUE8nvPIINkMRE@pR7^VU_uK9P?*Z%Kop&vh>VnjJ z?f2?U3hoIu>4$+?(OF%(oj>fFY?=maOpv~DSRitLC8+{F0+&egzgZ_-kq?7feD&vA z$9LAN614uP?N_E(@>LnBzn1jPpD&HfY8TH`IxFKZ@hs(33&=OfT%}sPdM#Wy?5ym_ z51)|+=%FugEk!S8RW%tL6)hGt$9ohsi~AJcqMrDJ!sFAG$|ePKX$1Y+-3+h|@=gVR z7Pn7j+9)_$@HQlWOcp38FC{Kvm|ZPfD&;G2ETSkkD%q$Gm5C z$A&9<%dRK3$Bu&2png!ApqrqtvzrTnAg{o!0Eu8Jzr9QQR`ns-UT6P(HG1FBuz8_; z#5hC?vgEtuR};{t({A2&;^M%=2W>uZ1a z6Qvl%U&@v?5+h!p^dtKiEfe2i%jn>!YDyJ@SX6UV9YEq}Fp_;6=9Pjzv)eixy>0Lq3!8=1b!@qah zUB}y$=ho)N=JHBA%4-$R#?L1zMh^DxFDt!jxk9*F%(|zdCo0F^PAZK!Oj7Na?2>I) zoj2SuSRPK~h%`W8RE)Tht_H44`&cO8Frll&PV0~M_m$@ruBv8C53<(=+{fHMd>{_N zy5E$~Fl+Q#u5$B&_r)L9(&iUk8Fy7IJM~Tk40y`=A_DhjOP{CJEtQdTM4i7qPRul%S_)0Jva0W0&_+lMwki4g$3g$=ZRho! zsjeYqD`lp_JZ2S`_%m|c0~5@2l*F`7uPxYxpd^0%ZH!LIiBD%c`+;Bir0gui;413W#tG9KYG8KCzIRKXWN6Njsbyz z0r<2;IuSHjU7@u#ptA-cFb#1E>zo{-n)tJ)BzWXBRt@n5KkesC3A{3!yCGnZ6`m3! zPt^v-9h`yYGkPJkh+g2~VQMdRIeTnpUSDxe1is@Cev%;ts0jg#LI(!G*%1*v$AM;! za84{*9%m^ixOo>XS@P4RvTtL0u`k)JSnc#p^+xXgz7VF{w|N8%g z*{Lc21#z<#q1IMZp#(d+m{Y!I<6+~V7Dc0^q!e~Bvk+91lKD^i-<=4xm7ANBAUnIK zrze{yH=Co2B|E2pfB-uO7dsah>t6(`>qiGSV=q<*SDJs5{68Kkb5~OrYbQ5rM+eG( zc#TaQ-Q7f}ss9oB@A!9}Zq^q6U&+DsKW+VOko}(%c1|`9_WyGKO%?tpDyZyYZT?sJ zAAV6z;eR3jPwYQB!tDQu|F2^H-RZxge_Itr6K4PKwTYrB^fTxH09Z}3QW6^4sA1aH zcKZA7B98ffJBi@v7-)16RJEB}`YYj5^KoO{2O(5=AqgU6#x;1>U~2It3h6Cs``{Pb znfXWrWaq?2*=cGH3`9lzVOf}V6Pa8r(fGV%G{HNUR!qySYR3SPjbf{TFWI8t**p7< z`%{rWYp(eO=e@74$LrhRV0fsgaL=0!Yq(n^Usuwah2SGSoIj&nXKFkZ-q^HV*vYs- zMSEVNcs10gD_zPjaaEN)zbn0hXl0)e+yp_bSV5z_f+uvXtK2Hp)@G@1i@w6kQ>(zI z-;)|5r|lKL+dvoaK(qP9ZziJHi??0Rui@^w()A|*2PukJjKjnSTOd9}vkKK9y{!Um zsR_3iHDEQ4i+9Ng!YddfIUBa~`P_gw4hGbH;L&KKXx?{K$C{G2x)h0%K@jotTNV>0 z+g{Pz4+wq~hxurGN;Kgl4A(d53|`+G6}Gm=dz6Rii^d@<35UMq`Lj%Pg}5EFgnOsM zMlE5xqR}$r-}W*|Tm7H$`i{ku++!((Be#-p?NY}_JUw@IM^j!ITCox7Pl*bo9*Sld z%gW0yo|d}9ySx1|va+Oj@P?I|;_ruAoDO$G_@56*Sk^jY3mstR=hhQHYqlRZ{87Yt+MJVPlg}B@}+yO{w5^8HoL{yG!f4VTrUp)%Nt1Z z-)fh!^Jm=T)YMM@-Z+2XqqL23uHcX-{Xj5|@4C=BvK_X@XN_PoehxQ~(es!Vr>JOH zx#%+wo--(qG^l!X&780@IoRIaY3n;l2{)%3_U-1{3W>t&Azt_OzR{q{2EeXGR;dj3 zkrmjCo*!eB-4Wlk@ZRN1e&fOBz;FUprd)W&ZEu&DzvtGX&HKB&m?jh4CS5`bzg=9~ zB2K)Ou}>7!LM6<`NQKzugIzC z4&tV02(pFMUO=(~2t8}1M&F_)>JjOY@y(gDUauE6&{n;m$)40REq$Q#?D!b=G>v$9 z&n7b#W+SD_=D5kg-V=!KXfXIE@0G>DAX}O%jgpuq6$L%Z0cPfgGA9;5m~Qw;Z}>bJ zb9dqSO44mkt>S*CuX_G2Qz6V4$4y614?W;a`pB=>*F}cxy9G$Ac0;^t9ac$u$|9}g z+~O%cA zMoOcJn$%d@It#r8MD-_&(SZQmZN^RFrEyyfp{Kgg8COq)(m`>{W^Xqee^_PN&#z*^ zec5_gc$Kub#WlJc==s)nF<|EzE9$%!2h>vric>@|>}1HUFKWF&@7tg+-~ZJe2G2 zII`UfzRufMJJgu^G{lzPXUE>^2;W@Kop*qEeiHpKeZ?Oq34L#gG6eKG>5=qu*V6ZOgK!JL?-6XkKMSY z$U-;rHf%-eRZ@sCWr7sFHT)xH zY^LYjC1D!IWj6-#oSGWuqcoWahgz_6YKhtNdb=d!4{^%mMa5QyYBv2vt}3PcB_o`? z*F1VL;R;l7{Cv1jUU$X*`uVPdQ;^KXs30KImqZ+?M zNUcu2j&Vd4Iuuun3$*1;SC58I;$z3g2!*`|!zWn~Cn6P;j^;(f$S0e$3v<1JobT)~ zJ!y!TNE{8n{P5b*#|Q~~2758ylL3k?p@}zpp0(2rzd zCq)fuU(mifAmAvf_xJxGGVCS++gM|y{AMK2W-<9{38xyzMP*GOmaf*%01Zj1XUpm7 z4pSBuiV=I>0V~LpYSkEmi&q9Od@3i>Q}dQD@5dkWuCl zGYwjdx}TO9t$>umB%Rd=NIFr(KC>E;kb;Sp7fWY z8smq%JriPo)k6pf_j>Sf+0ii6s2u?XwkFVa5f)wPJ!6Q3fxS-j2_cXVzK5e!%_J1nZ_<3TXmkT-lK8*f4x@Mlx`0p8 z-ld2l<1`m~e+kosnRqA-Z9MxS+=mEh8(M*@a)$?c{BW?bYLm)Av?laqK3G@_;wdP0 zE!o_K8itDNW^?X1oF>Onw0k)bQJ>Wr*|a!$vQ~TP41lxz{r#~GPA=5-P0ds>C zhgEi5SzNlu@b$L^jCn!X+>Ar6w)Ut=Pg6K45gaaND6h``q&mgX-PH>B#tWXMd4~S!$7OHqTh#m(f=sF07I0J%JVzwFD>!~os3h37%>rDO? z%}~p)5Qr;0@F*$CGX#$(t!Ztg|HK=~DBw45{JLrHr>u&mHfW83<^3- zR8-`CM?pG-_{m2hNYwn=sOFAb( zvt_~>C$Lx8>Z+_LosNp`Tiz*Pu5RX6c+qS)E^d?6mUm16yWzPFOQI8G4a|3wDVha_ zHYgc7L`;o{4iFY#^fbhapZ%&63}5%c$oJ=o${aV>)P_$%#_CPw&Z$8kIU^P4!7a5W zU=4dtP~^x}GN}td36rE?_-tmC*(PsD92XHDM%M6d{&PQ^8>W(k@-AnWZeP-8exxfT zUlDjne35ao+@u3?K`$4)-Pk$Pd_2z~A?Z+Nq2?Oy8VaB^C@%NF!f2rffu#Tlrl~O1ABfAT0u_<6M-G*)8=@OE( z@O@abUOxC@Z%R4W`*Kmk@hKHO;yxbyJ0SetAC1_tCrHboD_otTjpAqzRF<4I3+5h% zliqTSnn4*MG0@PDK$>b;_TwkBt>*XFbQ)pS(KlU*VTx1prkzaHFu6>A)2A}glydD% zV|7e>9~%|pYW{R$BoZ@_kQbU%mc3UvRt+@LQ1ulen>m7N7s( z41YmP@=&ZP~q zHS~Ud{mekVt-CAG=IyC~C)n&0iJfVpq=|A`k9;=#WsjPOZ^%svTUiBfHP(xROvWo= z>?gWb(dW1KrS&Z?IktTKoo;tG9Q`AwO1F8Nv;x5MmCIk>9GaRBx428?Fayp Date: Thu, 28 Jul 2016 14:41:08 +0800 Subject: [PATCH 102/156] rename --- build/perseus-1.js | 4 ++-- src/item-editor.jsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index fe73405fa7..e387238020 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,5 +1,5 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 6745f5e11ba5d5c0aad309ff9fb65807ea1e18c0 +// commit ccd614b71bd6a26f4ee36fd031a1ddd3199c69da // branch perseus_editor_cute_pic (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o {this.props.wasAnswered && - } {this.props.gradeMessage && {this.props.gradeMessage}} From 1e02f3e41609efd5d2054398395e84c7ff56ab80 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Thu, 28 Jul 2016 08:50:09 +0000 Subject: [PATCH 103/156] type --- src/widgets/speaking-text-input.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index e07bbca25c..326ffdcf9c 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -62,14 +62,14 @@ var SpeakingBtn = React.createClass({ }, // prevent trigger checking answer when clicking button - startRecognizeOnClick(e) { + startRecognizeOnClick: function(e) { this.startRecognize(); e.preventDefault(); return false; }, // ignore clicking event - ignoreOnClick(e) { + ignoreOnClick: function(e) { e.preventDefault(); return false; }, From 75850f00927e94ff8064183342301cd43199c300 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Thu, 28 Jul 2016 09:01:20 +0000 Subject: [PATCH 104/156] update widgets name --- src/widgets/speaking-text-input.jsx | 2 +- src/widgets/speaking-voice.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index 326ffdcf9c..2d20a73f62 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -274,7 +274,7 @@ _.extend(SpeakingTextInput, { module.exports = { name: "speaking-text-input", - displayName: "英文口說文字框", + displayName: "English Speech Recognition/英文口說辨識", widget: SpeakingTextInput, editor: SpeakingTextInputEditor }; diff --git a/src/widgets/speaking-voice.jsx b/src/widgets/speaking-voice.jsx index 1ef7bec6c9..cbdcb34220 100644 --- a/src/widgets/speaking-voice.jsx +++ b/src/widgets/speaking-voice.jsx @@ -164,7 +164,7 @@ var SpeakingVoiceEditor = React.createClass({ module.exports = { name: "speaking-voice", - displayName: "Speaking Voice", + displayName: "English Text to Speech/英文發音工具", widget: SpeakingVoice, hidden: false, editor: SpeakingVoiceEditor From 37219e7ddfc351f6474bf2c09ce6116636e51e15 Mon Sep 17 00:00:00 2001 From: benny Date: Mon, 1 Aug 2016 10:08:58 +0800 Subject: [PATCH 105/156] random img --- src/item-editor.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/item-editor.jsx b/src/item-editor.jsx index c4904a9916..eafea54e82 100644 --- a/src/item-editor.jsx +++ b/src/item-editor.jsx @@ -16,7 +16,8 @@ var ItemEditor = React.createClass({ return { onChange: () => {}, question: {}, - answerArea: {} + answerArea: {}, + img_src: "/images/face-smiley01.png" }; }, @@ -27,6 +28,7 @@ var ItemEditor = React.createClass({ }, render: function() { + var img_src = Math.random() > 0.05 ? "/images/face-smiley01.png" : "/images/face-smiley02.png"; return
@@ -80,7 +82,7 @@ var ItemEditor = React.createClass({ onClick={this.props.onCheckAnswer} value="Check Answer" /> {this.props.wasAnswered && - } {this.props.gradeMessage && {this.props.gradeMessage}} From 8d64ecbd35ef88f78be6b19e00fe2af894bf45f4 Mon Sep 17 00:00:00 2001 From: benny Date: Mon, 1 Aug 2016 10:10:56 +0800 Subject: [PATCH 106/156] remove redundant props --- src/item-editor.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/item-editor.jsx b/src/item-editor.jsx index eafea54e82..61017fb278 100644 --- a/src/item-editor.jsx +++ b/src/item-editor.jsx @@ -16,8 +16,7 @@ var ItemEditor = React.createClass({ return { onChange: () => {}, question: {}, - answerArea: {}, - img_src: "/images/face-smiley01.png" + answerArea: {} }; }, From 2ad042b9988522b3acce47e959c38f38b03d9ca9 Mon Sep 17 00:00:00 2001 From: Tiffany Date: Mon, 1 Aug 2016 10:17:20 +0800 Subject: [PATCH 107/156] random pic and build --- build/perseus-1.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index e387238020..d276b65503 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,5 +1,5 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit ccd614b71bd6a26f4ee36fd031a1ddd3199c69da +// commit 8d64ecbd35ef88f78be6b19e00fe2af894bf45f4 // branch perseus_editor_cute_pic (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0.05 ? "/images/face-smiley01.png" : "/images/face-smiley02.png"; return React.DOM.div( {className:"perseus-editor-table"}, React.DOM.div( {className:"perseus-editor-row perseus-question-container"}, React.DOM.div( {className:"perseus-editor-left-cell"}, @@ -10640,7 +10641,7 @@ var ItemEditor = React.createClass({displayName: 'ItemEditor', onClick:this.props.onCheckAnswer, value:"Check Answer"} ), this.props.wasAnswered && - React.DOM.img( {src:"/images/face-smiley01.png", + React.DOM.img( {src:img_src, className:"smiley"} ), this.props.gradeMessage && React.DOM.span(null, this.props.gradeMessage) From 73c1a4743aed32fd1cdcc55f6d1fbd335256476a Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Mon, 1 Aug 2016 03:30:36 +0000 Subject: [PATCH 108/156] fix attempt over 500 chars --- build/perseus-1.js | 5482 ++++++++++++++------------- src/widgets/speaking-text-input.jsx | 39 +- 2 files changed, 2965 insertions(+), 2556 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index ba3b88842b..59c462e787 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 5cb0ac79bc81278a0962cc2ede9d0066eca3555b -// branch modify_perseus_css +// commit 75850f00927e94ff8064183342301cd43199c300 +// branch english_speaking_perseus (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;oa.VOICESUPPORT_ATTEMPTLIMIT&&(clearInterval(b),null!=window.speechSynthesis?a.iOS?(a.iOS9?a.systemVoicesReady(a.cache_ios9_voices):a.systemVoicesReady(a.cache_ios_voices),console.log("RV: Voice support ready (cached)")):(console.log("RV: speechSynthesis present but no system voices found"),a.enableFallbackMode()):a.enableFallbackMode()))},100)},100);a.Dispatch("OnLoad")};a.systemVoicesReady=function(b){a.systemvoices=b;a.mapRVs();null!=a.OnVoiceReady&& +a.OnVoiceReady.call();a.Dispatch("OnReady");window.hasOwnProperty("dispatchEvent")&&window.dispatchEvent(new Event("ResponsiveVoice_OnReady"))};a.enableFallbackMode=function(){a.fallbackMode=!0;console.log("RV: Enabling fallback mode");a.mapRVs();null!=a.OnVoiceReady&&a.OnVoiceReady.call();a.Dispatch("OnReady");window.hasOwnProperty("dispatchEvent")&&window.dispatchEvent(new Event("ResponsiveVoice_OnReady"))};a.getVoices=function(){for(var b=[],c=0;ca.CHARACTER_LIMIT){for(var e=b;e.length>a.CHARACTER_LIMIT;){var g= +e.search(/[:!?.;]+/),d="";if(-1==g||g>=a.CHARACTER_LIMIT)g=e.search(/[,]+/);-1==g&&-1==e.search(" ")&&(g=99);if(-1==g||g>=a.CHARACTER_LIMIT)for(var k=e.split(" "),g=0;ga.CHARACTER_LIMIT);g++)d+=(0!=g?" ":"")+k[g];else d=e.substr(0,g+1);e=e.substr(d.length,e.length-d.length);h.push(d)}0=f)){var h=b.split(/\s+/).length,e=(b.match(/[^ ]/igm)||b).length,f=60/a.WORDS_PER_MINUTE*f*1E3*(e/h/5.1)*h;3>h&&(f=4E3);3E3>f&&(f=3E3);a.timeoutId=setTimeout(c,f)}};a.checkAndCancelTimeout=function(){null!=a.timeoutId&&(clearTimeout(a.timeoutId),a.timeoutId=null)};a.speech_timedout=function(){a.cancel();a.cancelled=!1;a.speech_onend()};a.speech_onend=function(){a.checkAndCancelTimeout(); +!0===a.cancelled?a.cancelled=!1:null!=a.msgparameters&&null!=a.msgparameters.onend&&1!=a.msgparameters.onendcalled&&(a.msgparameters.onendcalled=!0,a.msgparameters.onend())};a.speech_onstart=function(){if(!a.onstartFired){a.onstartFired=!0;if(a.iOS||a.is_safari||a.useTimer)a.fallbackMode||a.startTimeout(a.msgtext,a.speech_timedout);a.msgparameters.onendcalled=!1;if(null!=a.msgparameters&&null!=a.msgparameters.onstart)a.msgparameters.onstart()}};a.fallback_startPart=function(){0==a.fallback_part_index&& +a.speech_onstart();a.fallback_audio=a.fallback_parts[a.fallback_part_index];if(null==a.fallback_audio)console.log("RV: Fallback Audio is not available");else{var b=a.fallback_audio;a.fallback_audiopool.push(b);setTimeout(function(){b.playbackRate=a.fallback_playbackrate},50);b.onloadedmetadata=function(){b.play();b.playbackRate=a.fallback_playbackrate};a.fallback_audio.play();a.fallback_audio.addEventListener("ended",a.fallback_finishPart);a.useTimer&&a.startTimeout(a.multipartText[a.fallback_part_index], +a.fallback_finishPart)}};a.fallback_finishPart=function(b){a.checkAndCancelTimeout();a.fallback_part_indexa[e])&&clearTimeout(a[h])},50));return!1};a.AddEventListener=function(b,c){a.hasOwnProperty(b+"_callbacks")||(a[b+"_callbacks"]=[]);a[b+"_callbacks"].push(c)};a.addEventListener=a.AddEventListener;a.clickEvent=function(){if(a.iOS&& +!a.iOS_initialized){console.log("Initializing iOS click event");var b=new SpeechSynthesisUtterance(" ");speechSynthesis.speak(b);a.iOS_initialized=!0}};a.isPlaying=function(){return a.fallbackMode?null!=a.fallback_audio&&!a.fallback_audio.ended&&!a.fallback_audio.paused:speechSynthesis.speaking};a.clearFallbackPool=function(){for(var b=0;b + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license */ -var BlurInput = React.createClass({displayName: 'BlurInput', - propTypes: { - value: React.PropTypes.string.isRequired, - onChange: React.PropTypes.func.isRequired - }, - getInitialState: function() { - return { value: this.props.value }; - }, - render: function() { - return this.transferPropsTo(React.DOM.input( - {type:"text", - value:this.state.value, - onChange:this.handleChange, - onBlur:this.handleBlur} )); - }, - componentWillReceiveProps: function(nextProps) { - this.setState({ value: nextProps.value }); - }, - handleChange: function(e) { - this.setState({ value: e.target.value }); - }, - handleBlur: function(e) { - this.props.onChange(e.target.value); - } -}); - -module.exports = BlurInput; - -},{"react":115}],3:[function(require,module,exports){ -/** @jsx React.DOM */ -var React = require('react'); -var RCSS = require('rcss'); -var _ = require('underscore'); +/** Used to pool arrays and objects used internally */ +var arrayPool = []; -var outerStyle = { - display: 'inline-block', -}; +module.exports = arrayPool; -var buttonStyle = { - backgroundColor: 'white', - border: '1px solid #ccc', - borderBottom: '1px solid #ccc', - borderLeft: '0', - cursor: 'pointer', - margin: '0', - padding: '5px 10px', - position: 'relative', // for hover +},{}],4:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreate = require('lodash._basecreate'), + isObject = require('lodash.isobject'), + setBindData = require('lodash._setbinddata'), + slice = require('lodash._slice'); - ':first-child': { - borderLeft: '1px solid #ccc', - borderTopLeftRadius: '3px', - borderBottomLeftRadius: '3px' - }, +/** + * Used for `Array` method references. + * + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; - ':last-child': { - borderRight: '1px solid #ccc', - borderTopRightRadius: '3px', - borderBottomRightRadius: '3px' - }, +/** Native method shortcuts */ +var push = arrayRef.push; - ':hover': { - backgroundColor: '#ccc' - }, +/** + * The base implementation of `_.bind` that creates the bound function and + * sets its meta data. + * + * @private + * @param {Array} bindData The bind data array. + * @returns {Function} Returns the new bound function. + */ +function baseBind(bindData) { + var func = bindData[0], + partialArgs = bindData[2], + thisArg = bindData[4]; - ':focus': { - zIndex: '2' + function bound() { + // `Function#bind` spec + // http://es5.github.io/#x15.3.4.5 + if (partialArgs) { + // avoid `arguments` object deoptimizations by using `slice` instead + // of `Array.prototype.slice.call` and not assigning `arguments` to a + // variable as a ternary expression + var args = slice(partialArgs); + push.apply(args, arguments); } -}; + // mimic the constructor's `return` behavior + // http://es5.github.io/#x13.2.2 + if (this instanceof bound) { + // ensure `new bound` is an instance of `func` + var thisBinding = baseCreate(func.prototype), + result = func.apply(thisBinding, args || arguments); + return isObject(result) ? result : thisBinding; + } + return func.apply(thisArg, args || arguments); + } + setBindData(bound, bindData); + return bound; +} -var selectedStyle = { - backgroundColor: '#ddd' -}; +module.exports = baseBind; -RCSS.createClass(outerStyle); -RCSS.createClass(buttonStyle); -RCSS.createClass(selectedStyle); +},{"lodash._basecreate":5,"lodash._setbinddata":18,"lodash._slice":20,"lodash.isobject":30}],5:[function(require,module,exports){ +(function (global){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var isNative = require('lodash._isnative'), + isObject = require('lodash.isobject'), + noop = require('lodash.noop'); -/* ButtonGroup is an aesthetically pleasing group of buttons. - * - * The class requires these properties: - * buttons - an array of objects with keys: - * "value": this is the value returned when the button is selected - * "text": this is the text shown on the button - * "title": this is the title-text shown on hover - * onChange - a function that is provided with the updated value - * (which it then is responsible for updating) - * - * The class has these optional properties: - * value - the initial value of the button selected, defaults to null. - * allowEmpty - if false, exactly one button _must_ be selected; otherwise - * it defaults to true and _at most_ one button (0 or 1) may be selected. +/* Native method shortcuts for methods with the same name as other `lodash` methods */ +var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate; + +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. * - * Requires stylesheets/perseus-admin-package/editor.less to look nice. + * @private + * @param {Object} prototype The object to inherit from. + * @returns {Object} Returns the new object. */ +function baseCreate(prototype, properties) { + return isObject(prototype) ? nativeCreate(prototype) : {}; +} +// fallback for browsers without `Object.create` +if (!nativeCreate) { + baseCreate = (function() { + function Object() {} + return function(prototype) { + if (isObject(prototype)) { + Object.prototype = prototype; + var result = new Object; + Object.prototype = null; + } + return result || global.Object(); + }; + }()); +} -var ButtonGroup = React.createClass({displayName: 'ButtonGroup', - propTypes: { - value: React.PropTypes.any, - buttons: React.PropTypes.arrayOf(React.PropTypes.shape({ - value: React.PropTypes.any.isRequired, - text: React.PropTypes.renderable, - title: React.PropTypes.string - })).isRequired, - onChange: React.PropTypes.func.isRequired, - allowEmpty: React.PropTypes.bool - }, +module.exports = baseCreate; - getDefaultProps: function() { - return { - value: null, - allowEmpty: true - }; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"lodash._isnative":13,"lodash.isobject":30,"lodash.noop":32}],6:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var bind = require('lodash.bind'), + identity = require('lodash.identity'), + setBindData = require('lodash._setbinddata'), + support = require('lodash.support'); - render: function() { - var value = this.props.value; - var buttons = _(this.props.buttons).map(function(button, i) { - var maybeSelected = button.value === value ? - selectedStyle.className : - ""; - return React.DOM.button( {title:button.title, - id:"" + i, - ref:"button" + i, - key:"" + i, - className:(buttonStyle.className + " " + maybeSelected), - onClick:this.toggleSelect.bind(this, button.value)}, - button.text || "" + button.value - ); - }.bind(this)); +/** Used to detected named functions */ +var reFuncName = /^\s*function[ \n\r\t]+\w/; - return React.DOM.div( {className:outerStyle.className}, - buttons - ); - }, +/** Used to detect functions containing a `this` reference */ +var reThis = /\bthis\b/; - focus: function() { - this.getDOMNode().focus(); - return true; - }, - - toggleSelect: function(newValue) { - var value = this.props.value; +/** Native method shortcuts */ +var fnToString = Function.prototype.toString; - if (this.props.allowEmpty) { - // Select the new button or unselect if it's already selected - this.props.onChange(value !== newValue ? newValue : null); - } else { - this.props.onChange(newValue); - } +/** + * The base implementation of `_.createCallback` without support for creating + * "_.pluck" or "_.where" style callbacks. + * + * @private + * @param {*} [func=identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of the created callback. + * @param {number} [argCount] The number of arguments the callback accepts. + * @returns {Function} Returns a callback function. + */ +function baseCreateCallback(func, thisArg, argCount) { + if (typeof func != 'function') { + return identity; + } + // exit early for no `thisArg` or already bound by `Function#bind` + if (typeof thisArg == 'undefined' || !('prototype' in func)) { + return func; + } + var bindData = func.__bindData__; + if (typeof bindData == 'undefined') { + if (support.funcNames) { + bindData = !func.name; } -}); - -module.exports = ButtonGroup; + bindData = bindData || !support.funcDecomp; + if (!bindData) { + var source = fnToString.call(func); + if (!support.funcNames) { + bindData = !reFuncName.test(source); + } + if (!bindData) { + // checks if `func` references the `this` keyword and stores the result + bindData = reThis.test(source); + setBindData(func, bindData); + } + } + } + // exit early if there are no `this` references or `func` is bound + if (bindData === false || (bindData !== true && bindData[1] & 1)) { + return func; + } + switch (argCount) { + case 1: return function(value) { + return func.call(thisArg, value); + }; + case 2: return function(a, b) { + return func.call(thisArg, a, b); + }; + case 3: return function(value, index, collection) { + return func.call(thisArg, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(thisArg, accumulator, value, index, collection); + }; + } + return bind(func, thisArg); +} -},{"rcss":6,"react":115,"underscore":116}],4:[function(require,module,exports){ -/** @jsx React.DOM */ +module.exports = baseCreateCallback; -var React = require('react'); +},{"lodash._setbinddata":18,"lodash.bind":22,"lodash.identity":28,"lodash.support":34}],7:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreate = require('lodash._basecreate'), + isObject = require('lodash.isobject'), + setBindData = require('lodash._setbinddata'), + slice = require('lodash._slice'); -/* This component makes its children a drag target. Example: - * - * Drag to me - * - * ... +/** + * Used for `Array` method references. * - * handleDrop: function(e) { - * this.addImages(e.nativeEvent.dataTransfer.files); - * } + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; + +/** Native method shortcuts */ +var push = arrayRef.push; + +/** + * The base implementation of `createWrapper` that creates the wrapper and + * sets its meta data. * - * Now "Drag to me" will be a drag target - when something is dragged over it, - * the element will become partially transparent as a visual indicator that - * it's a target. + * @private + * @param {Array} bindData The bind data array. + * @returns {Function} Returns the new function. */ -// TODO(joel) - indicate before the hover is over the target that it's possible -// to drag into the target. This would (I think) require a high level handler - -// like on Perseus itself, waiting for onDragEnter, then passing down the -// event. Sounds like a pain. Possible workaround - create a div covering the -// entire page... -// -// Other extensions: -// * custom styles for global drag and dragOver -// * only respond to certain types of drags (only images for instance)! -var DragTarget = React.createClass({displayName: 'DragTarget', - propTypes: { - onDrop: React.PropTypes.func.isRequired, - component: React.PropTypes.component, - shouldDragHighlight: React.PropTypes.func - }, - render: function() { - var opacity = this.state.dragHover ? { "opacity": 0.3 } : {}; - var component = this.props.component; +function baseCreateWrapper(bindData) { + var func = bindData[0], + bitmask = bindData[1], + partialArgs = bindData[2], + partialRightArgs = bindData[3], + thisArg = bindData[4], + arity = bindData[5]; - return this.transferPropsTo( - component( {style:opacity, - onDrop:this.handleDrop, - onDragEnd:this.handleDragEnd, - onDragOver:this.handleDragOver, - onDragEnter:this.handleDragEnter, - onDragLeave:this.handleDragLeave}, - this.props.children - ) - ); - }, - getInitialState: function() { - return { dragHover: false }; - }, - getDefaultProps: function() { - return { - component: React.DOM.div, - shouldDragHighlight: function() {return true;} - }; - }, - handleDrop: function(e) { - e.stopPropagation(); - e.preventDefault(); - this.setState({ dragHover: false }); - this.props.onDrop(e); - }, - handleDragEnd: function() { - this.setState({ dragHover: false }); - }, - handleDragOver: function(e) { - e.preventDefault(); - }, - handleDragLeave: function() { - this.setState({ dragHover: false }); - }, - handleDragEnter: function(e) { - this.setState({ dragHover: this.props.shouldDragHighlight(e) }); + var isBind = bitmask & 1, + isBindKey = bitmask & 2, + isCurry = bitmask & 4, + isCurryBound = bitmask & 8, + key = func; + + function bound() { + var thisBinding = isBind ? thisArg : this; + if (partialArgs) { + var args = slice(partialArgs); + push.apply(args, arguments); } -}); + if (partialRightArgs || isCurry) { + args || (args = slice(arguments)); + if (partialRightArgs) { + push.apply(args, partialRightArgs); + } + if (isCurry && args.length < arity) { + bitmask |= 16 & ~32; + return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); + } + } + args || (args = arguments); + if (isBindKey) { + func = thisBinding[key]; + } + if (this instanceof bound) { + thisBinding = baseCreate(func.prototype); + var result = func.apply(thisBinding, args); + return isObject(result) ? result : thisBinding; + } + return func.apply(thisBinding, args); + } + setBindData(bound, bindData); + return bound; +} -module.exports = DragTarget; +module.exports = baseCreateWrapper; -},{"react":115}],5:[function(require,module,exports){ -/** @jsx React.DOM */ +},{"lodash._basecreate":5,"lodash._setbinddata":18,"lodash._slice":20,"lodash.isobject":30}],8:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var forIn = require('lodash.forin'), + getArray = require('lodash._getarray'), + isFunction = require('lodash.isfunction'), + objectTypes = require('lodash._objecttypes'), + releaseArray = require('lodash._releasearray'); -var React = require('react'); -var RCSS = require('rcss'); -var _ = require('underscore'); +/** `Object#toString` result shortcuts */ +var argsClass = '[object Arguments]', + arrayClass = '[object Array]', + boolClass = '[object Boolean]', + dateClass = '[object Date]', + numberClass = '[object Number]', + objectClass = '[object Object]', + regexpClass = '[object RegExp]', + stringClass = '[object String]'; -var colors = { - grayLight: '#aaa', - basicBorderColor: '#ccc', - white: '#fff' -}; +/** Used for native method references */ +var objectProto = Object.prototype; -var infoTip = { - display: 'inline-block', - marginLeft: '5px', - position: 'relative' -}; +/** Used to resolve the internal [[Class]] of values */ +var toString = objectProto.toString; -var infoTipI = { - cursor: 'pointer' -}; - -var infoTipContainer = { - position: 'absolute', - 'top': '-12px', - left: '22px', - zIndex: '1000' -}; - -var triangleBeforeAfter = { - borderBottom: '9px solid transparent', - borderTop: '9px solid transparent', - content: ' ', - height: '0', - position: 'absolute', - 'top': '0', - width: '0' -}; - -var infoTipTriangle = { - height: '10px', - left: '0', - position: 'absolute', - 'top': '8px', - width: '0', - zIndex: '1', +/** Native method shortcuts */ +var hasOwnProperty = objectProto.hasOwnProperty; - ':before': _.extend({}, triangleBeforeAfter, { - borderRight: '9px solid #bbb', - right: '0', - }), +/** + * The base implementation of `_.isEqual`, without support for `thisArg` binding, + * that allows partial "_.where" style comparisons. + * + * @private + * @param {*} a The value to compare. + * @param {*} b The other value to compare. + * @param {Function} [callback] The function to customize comparing values. + * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. + * @param {Array} [stackA=[]] Tracks traversed `a` objects. + * @param {Array} [stackB=[]] Tracks traversed `b` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { + // used to indicate that when comparing objects, `a` has at least the properties of `b` + if (callback) { + var result = callback(a, b); + if (typeof result != 'undefined') { + return !!result; + } + } + // exit early for identical values + if (a === b) { + // treat `+0` vs. `-0` as not equal + return a !== 0 || (1 / a == 1 / b); + } + var type = typeof a, + otherType = typeof b; - ':after': _.extend({}, triangleBeforeAfter, { - borderRight: ("9px solid " + colors.white), - right: '-1px' - }) -}; + // exit early for unlike primitive values + if (a === a && + !(a && objectTypes[type]) && + !(b && objectTypes[otherType])) { + return false; + } + // exit early for `null` and `undefined` avoiding ES3's Function#call behavior + // http://es5.github.io/#x15.3.4.4 + if (a == null || b == null) { + return a === b; + } + // compare [[Class]] names + var className = toString.call(a), + otherClass = toString.call(b); -var basicBorder = { - border: ("1px solid " + colors.basicBorderColor) -}; + if (className == argsClass) { + className = objectClass; + } + if (otherClass == argsClass) { + otherClass = objectClass; + } + if (className != otherClass) { + return false; + } + switch (className) { + case boolClass: + case dateClass: + // coerce dates and booleans to numbers, dates to milliseconds and booleans + // to `1` or `0` treating invalid dates coerced to `NaN` as not equal + return +a == +b; -var boxShadow = function(str) { return { boxShadow: str }; }; + case numberClass: + // treat `NaN` vs. `NaN` as equal + return (a != +a) + ? b != +b + // but treat `+0` vs. `-0` as not equal + : (a == 0 ? (1 / a == 1 / b) : a == +b); -var verticalShadow = RCSS.merge( - basicBorder, - boxShadow(("0 1px 3px " + colors.basicBorderColor)), - { borderBottom: ("1px solid " + colors.grayLight) } -); + case regexpClass: + case stringClass: + // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) + // treat string primitives and their corresponding object instances as equal + return a == String(b); + } + var isArr = className == arrayClass; + if (!isArr) { + // unwrap any `lodash` wrapped values + var aWrapped = hasOwnProperty.call(a, '__wrapped__'), + bWrapped = hasOwnProperty.call(b, '__wrapped__'); -var infoTipContentContainer = RCSS.merge(verticalShadow, { - background: colors.white, - padding: '5px 10px', - width: '240px' -}); + if (aWrapped || bWrapped) { + return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); + } + // exit for functions and DOM nodes + if (className != objectClass) { + return false; + } + // in older versions of Opera, `arguments` objects have `Array` constructors + var ctorA = a.constructor, + ctorB = b.constructor; -RCSS.createClass(infoTip); -RCSS.createClass(infoTipI); -RCSS.createClass(infoTipTriangle); -RCSS.createClass(verticalShadow); -RCSS.createClass(infoTipContainer); -RCSS.createClass(infoTipContentContainer); + // non `Object` object instances with different constructors are not equal + if (ctorA != ctorB && + !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && + ('constructor' in a && 'constructor' in b) + ) { + return false; + } + } + // assume cyclic structures are equal + // the algorithm for detecting cyclic structures is adapted from ES 5.1 + // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) + var initedStack = !stackA; + stackA || (stackA = getArray()); + stackB || (stackB = getArray()); -var questionMark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2N2M3NTAxYS04YmVlLTQ0M2MtYmRiNS04OGM2N2IxN2NhYzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUJCRTk4Qjc4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUJCRTk4QjY4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGE5ZDI0OTMtODk1NC00OGFkLTlhMTgtZDAwM2MwYWNjNDJlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY3Yzc1MDFhLThiZWUtNDQzYy1iZGI1LTg4YzY3YjE3Y2FjMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqm89uYAAADMSURBVHjaXJA9DoJAEIUH1M4TUHIFsCMGen9OwCGw1YRGW2ntKel0exsojHIBC0ouQAyUviFDstmXfNmZeS+zm7XSNCXRFiRgJf0bXIHixpbhGdxBBJYC1w/xaA424MhNEATkui71fU9KqfEU78UbD9PdbJRlOdae55GmhIP+1NV1TcMwkOM41DSNHvRtMhTHMRVFQW3b6mOLgx99kue5GRp/gIOZuZGvNpTNwjD8oliANU+qqqKu6/TQBdymN57AHjzBT+B6Jx79BRgAvc49kQA4yxgAAAAASUVORK5CYII='; // @NoLint + var length = stackA.length; + while (length--) { + if (stackA[length] == a) { + return stackB[length] == b; + } + } + var size = 0; + result = true; -var InfoTip = React.createClass({displayName: 'InfoTip', - getInitialState: function() { - return { - hover: false - }; - }, + // add `a` and `b` to the stack of traversed objects + stackA.push(a); + stackB.push(b); - render: function() { - return React.DOM.div( {className:infoTip.className}, - React.DOM.img( {width:10, - height:10, - src:questionMark, - onMouseEnter:this.handleMouseEnter, - onMouseLeave:this.handleMouseLeave} ), - React.DOM.div( {className:infoTipContainer.className, - style:{display: this.state.hover ? 'block' : 'none'}}, - React.DOM.div( {className:infoTipTriangle.className} ), - /* keep the classes here - used for selectors on KA */ - React.DOM.div( {className:infoTipContentContainer.className}, - this.props.children - ) - ) - ); - }, + // recursively compare objects and arrays (susceptible to call stack limits) + if (isArr) { + // compare lengths to determine if a deep comparison is necessary + length = a.length; + size = b.length; + result = size == length; - handleMouseEnter: function() { - this.setState({hover: true}); - }, + if (result || isWhere) { + // deep compare the contents, ignoring non-numeric properties + while (size--) { + var index = length, + value = b[size]; - handleMouseLeave: function() { - this.setState({hover: false}); + if (isWhere) { + while (index--) { + if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { + break; + } + } + } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { + break; + } + } } -}); - -module.exports = InfoTip; + } + else { + // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` + // which, in this case, is more costly + forIn(b, function(value, key, b) { + if (hasOwnProperty.call(b, key)) { + // count the number of properties. + size++; + // deep compare each property value. + return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); + } + }); -},{"rcss":6,"react":115,"underscore":116}],6:[function(require,module,exports){ -var assign = require('lodash.assign'); + if (result && !isWhere) { + // ensure both objects have the same number of properties + forIn(a, function(value, key, a) { + if (hasOwnProperty.call(a, key)) { + // `size` will be `-1` if `a` has more properties than `b` + return (result = --size > -1); + } + }); + } + } + stackA.pop(); + stackB.pop(); -var styleRuleValidator = require('./styleRuleValidator'); -var styleRuleConverter = require('./styleRuleConverter'); -var mediaQueryValidator = require('valid-media-queries'); + if (initedStack) { + releaseArray(stackA); + releaseArray(stackB); + } + return result; +} -var existingClasses = {}; -var styleTag = createStyleTag(); +module.exports = baseIsEqual; -var classNameId = 0; -var randomSuffix = Math.random().toString(36).slice(-5); - -function generateValidCSSClassName() { - // CSS classNames can't start with a number. - return 'c' + (classNameId++) + '-' + randomSuffix; -} +},{"lodash._getarray":11,"lodash._objecttypes":15,"lodash._releasearray":16,"lodash.forin":26,"lodash.isfunction":29}],9:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseBind = require('lodash._basebind'), + baseCreateWrapper = require('lodash._basecreatewrapper'), + isFunction = require('lodash.isfunction'), + slice = require('lodash._slice'); -function objToCSS(style) { - var serialized = ''; - for (var propName in style) { - // we put that ourselves - if (propName == 'className') continue; +/** + * Used for `Array` method references. + * + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; - var cssPropName = styleRuleConverter.hyphenateProp(propName); - if (!styleRuleValidator.isValidProp(cssPropName)) { - console.warn( - '%s (transformed into %s) is not a valid CSS property name.', propName, cssPropName - ); - continue; - } +/** Native method shortcuts */ +var push = arrayRef.push, + unshift = arrayRef.unshift; - var styleValue = style[propName]; - if (!styleRuleValidator.isValidValue(styleValue)) continue; +/** + * Creates a function that, when called, either curries or invokes `func` + * with an optional `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to reference. + * @param {number} bitmask The bitmask of method flags to compose. + * The bitmask may be composed of the following flags: + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` + * 8 - `_.curry` (bound) + * 16 - `_.partial` + * 32 - `_.partialRight` + * @param {Array} [partialArgs] An array of arguments to prepend to those + * provided to the new function. + * @param {Array} [partialRightArgs] An array of arguments to append to those + * provided to the new function. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new function. + */ +function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { + var isBind = bitmask & 1, + isBindKey = bitmask & 2, + isCurry = bitmask & 4, + isCurryBound = bitmask & 8, + isPartial = bitmask & 16, + isPartialRight = bitmask & 32; - if (styleValue !== null) { - serialized += cssPropName + ':'; - serialized += styleRuleConverter.escapeValueForProp(styleValue, - cssPropName) + ';'; + if (!isBindKey && !isFunction(func)) { + throw new TypeError; + } + if (isPartial && !partialArgs.length) { + bitmask &= ~16; + isPartial = partialArgs = false; + } + if (isPartialRight && !partialRightArgs.length) { + bitmask &= ~32; + isPartialRight = partialRightArgs = false; + } + var bindData = func && func.__bindData__; + if (bindData && bindData !== true) { + // clone `bindData` + bindData = slice(bindData); + if (bindData[2]) { + bindData[2] = slice(bindData[2]); + } + if (bindData[3]) { + bindData[3] = slice(bindData[3]); + } + // set `thisBinding` is not previously bound + if (isBind && !(bindData[1] & 1)) { + bindData[4] = thisArg; + } + // set if previously bound but not currently (subsequent curried functions) + if (!isBind && bindData[1] & 1) { + bitmask |= 8; + } + // set curried arity if not yet set + if (isCurry && !(bindData[1] & 4)) { + bindData[5] = arity; + } + // append partial left arguments + if (isPartial) { + push.apply(bindData[2] || (bindData[2] = []), partialArgs); + } + // append partial right arguments + if (isPartialRight) { + unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); } + // merge flags + bindData[1] |= bitmask; + return createWrapper.apply(null, bindData); } - return serialized || null; -} - -function createStyleTag() { - var tag = document.createElement('style'); - document.getElementsByTagName('head')[0].appendChild(tag); - return tag; + // fast path for `_.bind` + var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; + return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); } -function styleToCSS(style) { - var styleStr = '.' + style.className + '{'; - styleStr += objToCSS(style.value); - styleStr += '}'; +module.exports = createWrapper; - if (style.media) { - if (!mediaQueryValidator(style.media)) { - console.log('%s is not a valid media query.', style.media); - } - styleStr = style.media + '{' + styleStr + '}'; - } +},{"lodash._basebind":4,"lodash._basecreatewrapper":7,"lodash._slice":20,"lodash.isfunction":29}],10:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var htmlEscapes = require('lodash._htmlescapes'); - return styleStr; +/** + * Used by `escape` to convert characters to HTML entities. + * + * @private + * @param {string} match The matched character to escape. + * @returns {string} Returns the escaped character. + */ +function escapeHtmlChar(match) { + return htmlEscapes[match]; } -// TODO: support media queries -function parseStyles(className, styleObj) { - var mainStyle = { - className: className, - value: {} - }; - var styles = [mainStyle]; - - Object.keys(styleObj).forEach(function(k){ - // pseudo-selector, insert a new rule - if (k[0] === ':') { - styles.push({ - className: className+k, - value: styleObj[k] - }); - return; - } else if (k.substring(0, 6) === '@media') { - styles.push({ - className: className, - value: styleObj[k], - media: k - }); - return; - } - - // normal rule, insert into main one - mainStyle.value[k] = styleObj[k]; - }); +module.exports = escapeHtmlChar; - return styles; -} +},{"lodash._htmlescapes":12}],11:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var arrayPool = require('lodash._arraypool'); -function insertStyle(className, styleObj) { - var styles = parseStyles(className, styleObj); - var styleStr = styles.map(styleToCSS).join(''); - styleTag.innerHTML += styleStr; +/** + * Gets an array from the array pool or creates a new one if the pool is empty. + * + * @private + * @returns {Array} The array from the pool. + */ +function getArray() { + return arrayPool.pop() || []; } -var RCSS = { - merge: function(a, b, c, d, e) { - return assign({}, a, b, c, d, e); - }, - - createClass: function(styleObj) { - var styleId = JSON.stringify(styleObj); - var className; +module.exports = getArray; - if (existingClasses[styleId]) { - // already exists, use the existing className - className = existingClasses[styleId]; - } else { - // generate a new class and insert it - className = generateValidCSSClassName(); - existingClasses[styleId] = className; - insertStyle(className, styleObj); - } +},{"lodash._arraypool":3}],12:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ - styleObj.className = className; - return styleObj; - } +/** + * Used to convert characters to HTML entities: + * + * Though the `>` character is escaped for symmetry, characters like `>` and `/` + * don't require escaping in HTML and have no special meaning unless they're part + * of a tag or an unquoted attribute value. + * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") + */ +var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' }; -module.exports = RCSS; +module.exports = htmlEscapes; -},{"./styleRuleConverter":111,"./styleRuleValidator":112,"lodash.assign":7,"valid-media-queries":46}],7:[function(require,module,exports){ +},{}],13:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -916,70 +1163,49 @@ module.exports = RCSS; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreateCallback = require('lodash._basecreatecallback'), - keys = require('lodash.keys'), - objectTypes = require('lodash._objecttypes'); + +/** Used for native method references */ +var objectProto = Object.prototype; + +/** Used to resolve the internal [[Class]] of values */ +var toString = objectProto.toString; + +/** Used to detect if a method is native */ +var reNative = RegExp('^' + + String(toString) + .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + .replace(/toString| for [^\]]+/g, '.*?') + '$' +); /** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources will overwrite property assignments of previous - * sources. If a callback is provided it will be executed to produce the - * assigned values. The callback is bound to `thisArg` and invoked with two - * arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @type Function - * @alias extend - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize assigning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); - * // => { 'name': 'fred', 'employer': 'slate' } - * - * var defaults = _.partialRight(_.assign, function(a, b) { - * return typeof a == 'undefined' ? b : a; - * }); + * Checks if `value` is a native function. * - * var object = { 'name': 'barney' }; - * defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. */ -var assign = function(object, source, guard) { - var index, iterable = object, result = iterable; - if (!iterable) return result; - var args = arguments, - argsIndex = 0, - argsLength = typeof guard == 'number' ? 2 : args.length; - if (argsLength > 3 && typeof args[argsLength - 2] == 'function') { - var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2); - } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') { - callback = args[--argsLength]; - } - while (++argsIndex < argsLength) { - iterable = args[argsIndex]; - if (iterable && objectTypes[typeof iterable]) { - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; +function isNative(value) { + return typeof value == 'function' && reNative.test(value); +} - while (++ownIndex < length) { - index = ownProps[ownIndex]; - result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]; - } - } - } - return result -}; +module.exports = isNative; -module.exports = assign; +},{}],14:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** Used as the max size of the `arrayPool` and `objectPool` */ +var maxPoolSize = 40; + +module.exports = maxPoolSize; -},{"lodash._basecreatecallback":8,"lodash._objecttypes":29,"lodash.keys":30}],8:[function(require,module,exports){ +},{}],15:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -988,80 +1214,64 @@ module.exports = assign; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var bind = require('lodash.bind'), - identity = require('lodash.identity'), - setBindData = require('lodash._setbinddata'), - support = require('lodash.support'); -/** Used to detected named functions */ -var reFuncName = /^\s*function[ \n\r\t]+\w/; +/** Used to determine if values are of the language type Object */ +var objectTypes = { + 'boolean': false, + 'function': true, + 'object': true, + 'number': false, + 'string': false, + 'undefined': false +}; -/** Used to detect functions containing a `this` reference */ -var reThis = /\bthis\b/; +module.exports = objectTypes; -/** Native method shortcuts */ -var fnToString = Function.prototype.toString; +},{}],16:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var arrayPool = require('lodash._arraypool'), + maxPoolSize = require('lodash._maxpoolsize'); /** - * The base implementation of `_.createCallback` without support for creating - * "_.pluck" or "_.where" style callbacks. + * Releases the given array back to the array pool. * * @private - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. + * @param {Array} [array] The array to release. */ -function baseCreateCallback(func, thisArg, argCount) { - if (typeof func != 'function') { - return identity; - } - // exit early for no `thisArg` or already bound by `Function#bind` - if (typeof thisArg == 'undefined' || !('prototype' in func)) { - return func; - } - var bindData = func.__bindData__; - if (typeof bindData == 'undefined') { - if (support.funcNames) { - bindData = !func.name; - } - bindData = bindData || !support.funcDecomp; - if (!bindData) { - var source = fnToString.call(func); - if (!support.funcNames) { - bindData = !reFuncName.test(source); - } - if (!bindData) { - // checks if `func` references the `this` keyword and stores the result - bindData = reThis.test(source); - setBindData(func, bindData); - } - } - } - // exit early if there are no `this` references or `func` is bound - if (bindData === false || (bindData !== true && bindData[1] & 1)) { - return func; - } - switch (argCount) { - case 1: return function(value) { - return func.call(thisArg, value); - }; - case 2: return function(a, b) { - return func.call(thisArg, a, b); - }; - case 3: return function(value, index, collection) { - return func.call(thisArg, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(thisArg, accumulator, value, index, collection); - }; +function releaseArray(array) { + array.length = 0; + if (arrayPool.length < maxPoolSize) { + arrayPool.push(array); } - return bind(func, thisArg); } -module.exports = baseCreateCallback; +module.exports = releaseArray; + +},{"lodash._arraypool":3,"lodash._maxpoolsize":14}],17:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var htmlEscapes = require('lodash._htmlescapes'), + keys = require('lodash.keys'); + +/** Used to match HTML entities and HTML characters */ +var reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); + +module.exports = reUnescapedHtml; -},{"lodash._setbinddata":9,"lodash.bind":12,"lodash.identity":26,"lodash.support":27}],9:[function(require,module,exports){ +},{"lodash._htmlescapes":12,"lodash.keys":31}],18:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1106,7 +1316,7 @@ var setBindData = !defineProperty ? noop : function(func, value) { module.exports = setBindData; -},{"lodash._isnative":10,"lodash.noop":11}],10:[function(require,module,exports){ +},{"lodash._isnative":13,"lodash.noop":32}],19:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1115,34 +1325,38 @@ module.exports = setBindData; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ +var objectTypes = require('lodash._objecttypes'); /** Used for native method references */ var objectProto = Object.prototype; -/** Used to resolve the internal [[Class]] of values */ -var toString = objectProto.toString; - -/** Used to detect if a method is native */ -var reNative = RegExp('^' + - String(toString) - .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - .replace(/toString| for [^\]]+/g, '.*?') + '$' -); +/** Native method shortcuts */ +var hasOwnProperty = objectProto.hasOwnProperty; /** - * Checks if `value` is a native function. + * A fallback implementation of `Object.keys` which produces an array of the + * given object's own enumerable property names. * * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. + * @type Function + * @param {Object} object The object to inspect. + * @returns {Array} Returns an array of property names. */ -function isNative(value) { - return typeof value == 'function' && reNative.test(value); -} +var shimKeys = function(object) { + var index, iterable = object, result = []; + if (!iterable) return result; + if (!(objectTypes[typeof object])) return result; + for (index in iterable) { + if (hasOwnProperty.call(iterable, index)) { + result.push(index); + } + } + return result +}; -module.exports = isNative; +module.exports = shimKeys; -},{}],11:[function(require,module,exports){ +},{"lodash._objecttypes":15}],20:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1153,28 +1367,112 @@ module.exports = isNative; */ /** - * A no-operation function. + * Slices the `collection` from the `start` index up to, but not including, + * the `end` index. * - * @static - * @memberOf _ - * @category Utilities - * @example + * Note: This function is used instead of `Array#slice` to support node lists + * in IE < 9 and to ensure dense arrays are returned. * - * var object = { 'name': 'fred' }; - * _.noop(object) === undefined; - * // => true + * @private + * @param {Array|Object|string} collection The collection to slice. + * @param {number} start The start index. + * @param {number} end The end index. + * @returns {Array} Returns the new array. */ -function noop() { - // no operation performed -} - -module.exports = noop; - -},{}],12:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation +function slice(array, start, end) { + start || (start = 0); + if (typeof end == 'undefined') { + end = array ? array.length : 0; + } + var index = -1, + length = end - start || 0, + result = Array(length < 0 ? 0 : length); + + while (++index < length) { + result[index] = array[start + index]; + } + return result; +} + +module.exports = slice; + +},{}],21:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreateCallback = require('lodash._basecreatecallback'), + keys = require('lodash.keys'), + objectTypes = require('lodash._objecttypes'); + +/** + * Assigns own enumerable properties of source object(s) to the destination + * object. Subsequent sources will overwrite property assignments of previous + * sources. If a callback is provided it will be executed to produce the + * assigned values. The callback is bound to `thisArg` and invoked with two + * arguments; (objectValue, sourceValue). + * + * @static + * @memberOf _ + * @type Function + * @alias extend + * @category Objects + * @param {Object} object The destination object. + * @param {...Object} [source] The source objects. + * @param {Function} [callback] The function to customize assigning values. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns the destination object. + * @example + * + * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); + * // => { 'name': 'fred', 'employer': 'slate' } + * + * var defaults = _.partialRight(_.assign, function(a, b) { + * return typeof a == 'undefined' ? b : a; + * }); + * + * var object = { 'name': 'barney' }; + * defaults(object, { 'name': 'fred', 'employer': 'slate' }); + * // => { 'name': 'barney', 'employer': 'slate' } + */ +var assign = function(object, source, guard) { + var index, iterable = object, result = iterable; + if (!iterable) return result; + var args = arguments, + argsIndex = 0, + argsLength = typeof guard == 'number' ? 2 : args.length; + if (argsLength > 3 && typeof args[argsLength - 2] == 'function') { + var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2); + } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') { + callback = args[--argsLength]; + } + while (++argsIndex < argsLength) { + iterable = args[argsIndex]; + if (iterable && objectTypes[typeof iterable]) { + var ownIndex = -1, + ownProps = objectTypes[typeof iterable] && keys(iterable), + length = ownProps ? ownProps.length : 0; + + while (++ownIndex < length) { + index = ownProps[ownIndex]; + result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]; + } + } + } + return result +}; + +module.exports = assign; + +},{"lodash._basecreatecallback":6,"lodash._objecttypes":15,"lodash.keys":31}],22:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation * Based on Underscore.js 1.5.2 * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license @@ -1212,115 +1510,90 @@ function bind(func, thisArg) { module.exports = bind; -},{"lodash._createwrapper":13,"lodash._slice":25}],13:[function(require,module,exports){ +},{"lodash._createwrapper":9,"lodash._slice":20}],23:[function(require,module,exports){ /** - * Lo-Dash 2.4.1 (Custom Build) + * Lo-Dash 2.4.4 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` * Copyright 2012-2013 The Dojo Foundation * Based on Underscore.js 1.5.2 * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseBind = require('lodash._basebind'), - baseCreateWrapper = require('lodash._basecreatewrapper'), - isFunction = require('lodash.isfunction'), - slice = require('lodash._slice'); +var baseCreateCallback = require('lodash._basecreatecallback'), + baseIsEqual = require('lodash._baseisequal'), + isObject = require('lodash.isobject'), + keys = require('lodash.keys'), + property = require('lodash.property'); /** - * Used for `Array` method references. + * Produces a callback bound to an optional `thisArg`. If `func` is a property + * name the created callback will return the property value for a given element. + * If `func` is an object the created callback will return `true` for elements + * that contain the equivalent object properties, otherwise it will return `false`. * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; - -/** Native method shortcuts */ -var push = arrayRef.push, - unshift = arrayRef.unshift; - -/** - * Creates a function that, when called, either curries or invokes `func` - * with an optional `this` binding and partially applied arguments. + * @static + * @memberOf _ + * @category Utilities + * @param {*} [func=identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of the created callback. + * @param {number} [argCount] The number of arguments the callback accepts. + * @returns {Function} Returns a callback function. + * @example * - * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of method flags to compose. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` - * 8 - `_.curry` (bound) - * 16 - `_.partial` - * 32 - `_.partialRight` - * @param {Array} [partialArgs] An array of arguments to prepend to those - * provided to the new function. - * @param {Array} [partialRightArgs] An array of arguments to append to those - * provided to the new function. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new function. + * var characters = [ + * { 'name': 'barney', 'age': 36 }, + * { 'name': 'fred', 'age': 40 } + * ]; + * + * // wrap to create custom callback shorthands + * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { + * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); + * return !match ? func(callback, thisArg) : function(object) { + * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; + * }; + * }); + * + * _.filter(characters, 'age__gt38'); + * // => [{ 'name': 'fred', 'age': 40 }] */ -function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - isPartial = bitmask & 16, - isPartialRight = bitmask & 32; - - if (!isBindKey && !isFunction(func)) { - throw new TypeError; +function createCallback(func, thisArg, argCount) { + var type = typeof func; + if (func == null || type == 'function') { + return baseCreateCallback(func, thisArg, argCount); } - if (isPartial && !partialArgs.length) { - bitmask &= ~16; - isPartial = partialArgs = false; + // handle "_.pluck" style callback shorthands + if (type != 'object') { + return property(func); } - if (isPartialRight && !partialRightArgs.length) { - bitmask &= ~32; - isPartialRight = partialRightArgs = false; + var props = keys(func), + key = props[0], + a = func[key]; + + // handle "_.where" style callback shorthands + if (props.length == 1 && a === a && !isObject(a)) { + // fast path the common case of providing an object with a single + // property containing a primitive value + return function(object) { + var b = object[key]; + return a === b && (a !== 0 || (1 / a == 1 / b)); + }; } - var bindData = func && func.__bindData__; - if (bindData && bindData !== true) { - // clone `bindData` - bindData = slice(bindData); - if (bindData[2]) { - bindData[2] = slice(bindData[2]); - } - if (bindData[3]) { - bindData[3] = slice(bindData[3]); - } - // set `thisBinding` is not previously bound - if (isBind && !(bindData[1] & 1)) { - bindData[4] = thisArg; - } - // set if previously bound but not currently (subsequent curried functions) - if (!isBind && bindData[1] & 1) { - bitmask |= 8; - } - // set curried arity if not yet set - if (isCurry && !(bindData[1] & 4)) { - bindData[5] = arity; - } - // append partial left arguments - if (isPartial) { - push.apply(bindData[2] || (bindData[2] = []), partialArgs); - } - // append partial right arguments - if (isPartialRight) { - unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); + return function(object) { + var length = props.length, + result = false; + + while (length--) { + if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { + break; + } } - // merge flags - bindData[1] |= bitmask; - return createWrapper.apply(null, bindData); - } - // fast path for `_.bind` - var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; - return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); + return result; + }; } -module.exports = createWrapper; +module.exports = createCallback; -},{"lodash._basebind":14,"lodash._basecreatewrapper":19,"lodash._slice":25,"lodash.isfunction":24}],14:[function(require,module,exports){ +},{"lodash._basecreatecallback":6,"lodash._baseisequal":8,"lodash.isobject":30,"lodash.keys":31,"lodash.property":33}],24:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1329,63 +1602,31 @@ module.exports = createWrapper; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreate = require('lodash._basecreate'), - isObject = require('lodash.isobject'), - setBindData = require('lodash._setbinddata'), - slice = require('lodash._slice'); +var escapeHtmlChar = require('lodash._escapehtmlchar'), + keys = require('lodash.keys'), + reUnescapedHtml = require('lodash._reunescapedhtml'); /** - * Used for `Array` method references. + * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their + * corresponding HTML entities. * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; - -/** Native method shortcuts */ -var push = arrayRef.push; - -/** - * The base implementation of `_.bind` that creates the bound function and - * sets its meta data. + * @static + * @memberOf _ + * @category Utilities + * @param {string} string The string to escape. + * @returns {string} Returns the escaped string. + * @example * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new bound function. + * _.escape('Fred, Wilma, & Pebbles'); + * // => 'Fred, Wilma, & Pebbles' */ -function baseBind(bindData) { - var func = bindData[0], - partialArgs = bindData[2], - thisArg = bindData[4]; - - function bound() { - // `Function#bind` spec - // http://es5.github.io/#x15.3.4.5 - if (partialArgs) { - // avoid `arguments` object deoptimizations by using `slice` instead - // of `Array.prototype.slice.call` and not assigning `arguments` to a - // variable as a ternary expression - var args = slice(partialArgs); - push.apply(args, arguments); - } - // mimic the constructor's `return` behavior - // http://es5.github.io/#x13.2.2 - if (this instanceof bound) { - // ensure `new bound` is an instance of `func` - var thisBinding = baseCreate(func.prototype), - result = func.apply(thisBinding, args || arguments); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisArg, args || arguments); - } - setBindData(bound, bindData); - return bound; +function escape(string) { + return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); } -module.exports = baseBind; +module.exports = escape; -},{"lodash._basecreate":15,"lodash._setbinddata":9,"lodash._slice":25,"lodash.isobject":18}],15:[function(require,module,exports){ -(function (global){ +},{"lodash._escapehtmlchar":10,"lodash._reunescapedhtml":17,"lodash.keys":31}],25:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1394,47 +1635,74 @@ module.exports = baseBind; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var isNative = require('lodash._isnative'), - isObject = require('lodash.isobject'), - noop = require('lodash.noop'); - -/* Native method shortcuts for methods with the same name as other `lodash` methods */ -var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate; +var createCallback = require('lodash.createcallback'), + forOwn = require('lodash.forown'); /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. + * Checks if the given callback returns truey value for **all** elements of + * a collection. The callback is bound to `thisArg` and invoked with three + * arguments; (value, index|key, collection). * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. + * If a property name is provided for `callback` the created "_.pluck" style + * callback will return the property value of the given element. + * + * If an object is provided for `callback` the created "_.where" style callback + * will return `true` for elements that have the properties of the given object, + * else `false`. + * + * @static + * @memberOf _ + * @alias all + * @category Collections + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [callback=identity] The function called + * per iteration. If a property name or object is provided it will be used + * to create a "_.pluck" or "_.where" style callback, respectively. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {boolean} Returns `true` if all elements passed the callback check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes']); + * // => false + * + * var characters = [ + * { 'name': 'barney', 'age': 36 }, + * { 'name': 'fred', 'age': 40 } + * ]; + * + * // using "_.pluck" callback shorthand + * _.every(characters, 'age'); + * // => true + * + * // using "_.where" callback shorthand + * _.every(characters, { 'age': 36 }); + * // => false */ -function baseCreate(prototype, properties) { - return isObject(prototype) ? nativeCreate(prototype) : {}; -} -// fallback for browsers without `Object.create` -if (!nativeCreate) { - baseCreate = (function() { - function Object() {} - return function(prototype) { - if (isObject(prototype)) { - Object.prototype = prototype; - var result = new Object; - Object.prototype = null; +function every(collection, callback, thisArg) { + var result = true; + callback = createCallback(callback, thisArg, 3); + + var index = -1, + length = collection ? collection.length : 0; + + if (typeof length == 'number') { + while (++index < length) { + if (!(result = !!callback(collection[index], index, collection))) { + break; } - return result || global.Object(); - }; - }()); + } + } else { + forOwn(collection, function(value, index, collection) { + return (result = !!callback(value, index, collection)); + }); + } + return result; } -module.exports = baseCreate; +module.exports = every; -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"lodash._isnative":16,"lodash.isobject":18,"lodash.noop":17}],16:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],17:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],18:[function(require,module,exports){ +},{"lodash.createcallback":23,"lodash.forown":27}],26:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1443,39 +1711,54 @@ arguments[4][11][0].apply(exports,arguments) * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var objectTypes = require('lodash._objecttypes'); +var baseCreateCallback = require('lodash._basecreatecallback'), + objectTypes = require('lodash._objecttypes'); /** - * Checks if `value` is the language type of Object. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * Iterates over own and inherited enumerable properties of an object, + * executing the callback for each property. The callback is bound to `thisArg` + * and invoked with three arguments; (value, key, object). Callbacks may exit + * iteration early by explicitly returning `false`. * * @static * @memberOf _ + * @type Function * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an object, else `false`. + * @param {Object} object The object to iterate over. + * @param {Function} [callback=identity] The function called per iteration. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns `object`. * @example * - * _.isObject({}); - * // => true + * function Shape() { + * this.x = 0; + * this.y = 0; + * } * - * _.isObject([1, 2, 3]); - * // => true + * Shape.prototype.move = function(x, y) { + * this.x += x; + * this.y += y; + * }; * - * _.isObject(1); - * // => false + * _.forIn(new Shape, function(value, key) { + * console.log(key); + * }); + * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) */ -function isObject(value) { - // check if the value is the ECMAScript language type of Object - // http://es5.github.io/#x8 - // and avoid a V8 bug - // http://code.google.com/p/v8/issues/detail?id=2291 - return !!(value && objectTypes[typeof value]); -} +var forIn = function(collection, callback, thisArg) { + var index, iterable = collection, result = iterable; + if (!iterable) return result; + if (!objectTypes[typeof iterable]) return result; + callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); + for (index in iterable) { + if (callback(iterable[index], index, collection) === false) return result; + } + return result +}; -module.exports = isObject; +module.exports = forIn; -},{"lodash._objecttypes":29}],19:[function(require,module,exports){ +},{"lodash._basecreatecallback":6,"lodash._objecttypes":15}],27:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1484,86 +1767,80 @@ module.exports = isObject; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreate = require('lodash._basecreate'), - isObject = require('lodash.isobject'), - setBindData = require('lodash._setbinddata'), - slice = require('lodash._slice'); +var baseCreateCallback = require('lodash._basecreatecallback'), + keys = require('lodash.keys'), + objectTypes = require('lodash._objecttypes'); /** - * Used for `Array` method references. + * Iterates over own enumerable properties of an object, executing the callback + * for each property. The callback is bound to `thisArg` and invoked with three + * arguments; (value, key, object). Callbacks may exit iteration early by + * explicitly returning `false`. * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. + * @static + * @memberOf _ + * @type Function + * @category Objects + * @param {Object} object The object to iterate over. + * @param {Function} [callback=identity] The function called per iteration. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns `object`. + * @example + * + * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { + * console.log(key); + * }); + * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) */ -var arrayRef = []; +var forOwn = function(collection, callback, thisArg) { + var index, iterable = collection, result = iterable; + if (!iterable) return result; + if (!objectTypes[typeof iterable]) return result; + callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); + var ownIndex = -1, + ownProps = objectTypes[typeof iterable] && keys(iterable), + length = ownProps ? ownProps.length : 0; -/** Native method shortcuts */ -var push = arrayRef.push; + while (++ownIndex < length) { + index = ownProps[ownIndex]; + if (callback(iterable[index], index, collection) === false) return result; + } + return result +}; +module.exports = forOwn; + +},{"lodash._basecreatecallback":6,"lodash._objecttypes":15,"lodash.keys":31}],28:[function(require,module,exports){ /** - * The base implementation of `createWrapper` that creates the wrapper and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new function. + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license */ -function baseCreateWrapper(bindData) { - var func = bindData[0], - bitmask = bindData[1], - partialArgs = bindData[2], - partialRightArgs = bindData[3], - thisArg = bindData[4], - arity = bindData[5]; - - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - key = func; - function bound() { - var thisBinding = isBind ? thisArg : this; - if (partialArgs) { - var args = slice(partialArgs); - push.apply(args, arguments); - } - if (partialRightArgs || isCurry) { - args || (args = slice(arguments)); - if (partialRightArgs) { - push.apply(args, partialRightArgs); - } - if (isCurry && args.length < arity) { - bitmask |= 16 & ~32; - return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); - } - } - args || (args = arguments); - if (isBindKey) { - func = thisBinding[key]; - } - if (this instanceof bound) { - thisBinding = baseCreate(func.prototype); - var result = func.apply(thisBinding, args); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisBinding, args); - } - setBindData(bound, bindData); - return bound; +/** + * This method returns the first argument provided to it. + * + * @static + * @memberOf _ + * @category Utilities + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'name': 'fred' }; + * _.identity(object) === object; + * // => true + */ +function identity(value) { + return value; } -module.exports = baseCreateWrapper; +module.exports = identity; -},{"lodash._basecreate":20,"lodash._setbinddata":9,"lodash._slice":25,"lodash.isobject":23}],20:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._isnative":21,"lodash.isobject":23,"lodash.noop":22}],21:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],22:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],23:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":29}],24:[function(require,module,exports){ +},{}],29:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1592,47 +1869,7 @@ function isFunction(value) { module.exports = isFunction; -},{}],25:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** - * Slices the `collection` from the `start` index up to, but not including, - * the `end` index. - * - * Note: This function is used instead of `Array#slice` to support node lists - * in IE < 9 and to ensure dense arrays are returned. - * - * @private - * @param {Array|Object|string} collection The collection to slice. - * @param {number} start The start index. - * @param {number} end The end index. - * @returns {Array} Returns the new array. - */ -function slice(array, start, end) { - start || (start = 0); - if (typeof end == 'undefined') { - end = array ? array.length : 0; - } - var index = -1, - length = end - start || 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = array[start + index]; - } - return result; -} - -module.exports = slice; - -},{}],26:[function(require,module,exports){ +},{}],30:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1641,96 +1878,39 @@ module.exports = slice; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ +var objectTypes = require('lodash._objecttypes'); /** - * This method returns the first argument provided to it. + * Checks if `value` is the language type of Object. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ - * @category Utilities - * @param {*} value Any value. - * @returns {*} Returns `value`. + * @category Objects + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if the `value` is an object, else `false`. * @example * - * var object = { 'name': 'fred' }; - * _.identity(object) === object; + * _.isObject({}); * // => true - */ -function identity(value) { - return value; -} - -module.exports = identity; - -},{}],27:[function(require,module,exports){ -(function (global){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var isNative = require('lodash._isnative'); - -/** Used to detect functions containing a `this` reference */ -var reThis = /\bthis\b/; - -/** - * An object used to flag environments features. - * - * @static - * @memberOf _ - * @type Object - */ -var support = {}; - -/** - * Detect if functions can be decompiled by `Function#toString` - * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps). * - * @memberOf _.support - * @type boolean - */ -support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; }); - -/** - * Detect if `Function#name` is supported (all but IE). + * _.isObject([1, 2, 3]); + * // => true * - * @memberOf _.support - * @type boolean - */ -support.funcNames = typeof Function.name == 'string'; - -module.exports = support; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"lodash._isnative":28}],28:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],29:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + * _.isObject(1); + * // => false */ +function isObject(value) { + // check if the value is the ECMAScript language type of Object + // http://es5.github.io/#x8 + // and avoid a V8 bug + // http://code.google.com/p/v8/issues/detail?id=2291 + return !!(value && objectTypes[typeof value]); +} -/** Used to determine if values are of the language type Object */ -var objectTypes = { - 'boolean': false, - 'function': true, - 'object': true, - 'number': false, - 'string': false, - 'undefined': false -}; - -module.exports = objectTypes; +module.exports = isObject; -},{}],30:[function(require,module,exports){ +},{"lodash._objecttypes":15}],31:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1768,9 +1948,7 @@ var keys = !nativeKeys ? shimKeys : function(object) { module.exports = keys; -},{"lodash._isnative":31,"lodash._shimkeys":32,"lodash.isobject":33}],31:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],32:[function(require,module,exports){ +},{"lodash._isnative":13,"lodash._shimkeys":19,"lodash.isobject":30}],32:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1779,40 +1957,26 @@ arguments[4][10][0].apply(exports,arguments) * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var objectTypes = require('lodash._objecttypes'); - -/** Used for native method references */ -var objectProto = Object.prototype; - -/** Native method shortcuts */ -var hasOwnProperty = objectProto.hasOwnProperty; /** - * A fallback implementation of `Object.keys` which produces an array of the - * given object's own enumerable property names. + * A no-operation function. * - * @private - * @type Function - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. + * @static + * @memberOf _ + * @category Utilities + * @example + * + * var object = { 'name': 'fred' }; + * _.noop(object) === undefined; + * // => true */ -var shimKeys = function(object) { - var index, iterable = object, result = []; - if (!iterable) return result; - if (!(objectTypes[typeof object])) return result; - for (index in iterable) { - if (hasOwnProperty.call(iterable, index)) { - result.push(index); - } - } - return result -}; +function noop() { + // no operation performed +} -module.exports = shimKeys; +module.exports = noop; -},{"lodash._objecttypes":29}],33:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":29}],34:[function(require,module,exports){ +},{}],33:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1821,31 +1985,41 @@ arguments[4][18][0].apply(exports,arguments) * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var escapeHtmlChar = require('lodash._escapehtmlchar'), - keys = require('lodash.keys'), - reUnescapedHtml = require('lodash._reunescapedhtml'); /** - * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their - * corresponding HTML entities. + * Creates a "_.pluck" style function, which returns the `key` value of a + * given object. * * @static * @memberOf _ * @category Utilities - * @param {string} string The string to escape. - * @returns {string} Returns the escaped string. + * @param {string} key The name of the property to retrieve. + * @returns {Function} Returns the new function. * @example * - * _.escape('Fred, Wilma, & Pebbles'); - * // => 'Fred, Wilma, & Pebbles' + * var characters = [ + * { 'name': 'fred', 'age': 40 }, + * { 'name': 'barney', 'age': 36 } + * ]; + * + * var getName = _.property('name'); + * + * _.map(characters, getName); + * // => ['barney', 'fred'] + * + * _.sortBy(characters, getName); + * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] */ -function escape(string) { - return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); +function property(key) { + return function(object) { + return object[key]; + }; } -module.exports = escape; +module.exports = property; -},{"lodash._escapehtmlchar":35,"lodash._reunescapedhtml":37,"lodash.keys":39}],35:[function(require,module,exports){ +},{}],34:[function(require,module,exports){ +(function (global){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1854,1247 +2028,544 @@ module.exports = escape; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var htmlEscapes = require('lodash._htmlescapes'); +var isNative = require('lodash._isnative'); + +/** Used to detect functions containing a `this` reference */ +var reThis = /\bthis\b/; /** - * Used by `escape` to convert characters to HTML entities. + * An object used to flag environments features. * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. + * @static + * @memberOf _ + * @type Object */ -function escapeHtmlChar(match) { - return htmlEscapes[match]; -} - -module.exports = escapeHtmlChar; +var support = {}; -},{"lodash._htmlescapes":36}],36:[function(require,module,exports){ /** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + * Detect if functions can be decompiled by `Function#toString` + * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps). + * + * @memberOf _.support + * @type boolean */ +support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; }); /** - * Used to convert characters to HTML entities: + * Detect if `Function#name` is supported (all but IE). * - * Though the `>` character is escaped for symmetry, characters like `>` and `/` - * don't require escaping in HTML and have no special meaning unless they're part - * of a tag or an unquoted attribute value. - * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") + * @memberOf _.support + * @type boolean */ -var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' +support.funcNames = typeof Function.name == 'string'; + +module.exports = support; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"lodash._isnative":13}],35:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require("react"); + +/* You know when you want to propagate input to a parent... + * but then that parent does something with the input... + * then changing the props of the input... + * on every keystroke... + * so if some input is invalid or incomplete... + * the input gets reset or otherwise effed... + * + * This is the solution. + * + * Enough melodrama. Its an input that only sends changes + * to its parent on blur. + */ +var BlurInput = React.createClass({displayName: 'BlurInput', + propTypes: { + value: React.PropTypes.string.isRequired, + onChange: React.PropTypes.func.isRequired + }, + getInitialState: function() { + return { value: this.props.value }; + }, + render: function() { + return this.transferPropsTo(React.DOM.input( + {type:"text", + value:this.state.value, + onChange:this.handleChange, + onBlur:this.handleBlur} )); + }, + componentWillReceiveProps: function(nextProps) { + this.setState({ value: nextProps.value }); + }, + handleChange: function(e) { + this.setState({ value: e.target.value }); + }, + handleBlur: function(e) { + this.props.onChange(e.target.value); + } +}); + +module.exports = BlurInput; + +},{"react":44}],36:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require('react'); +var RCSS = require('rcss'); +var _ = require('underscore'); + +var outerStyle = { + display: 'inline-block', }; -module.exports = htmlEscapes; +var buttonStyle = { + backgroundColor: 'white', + border: '1px solid #ccc', + borderBottom: '1px solid #ccc', + borderLeft: '0', + cursor: 'pointer', + margin: '0', + padding: '5px 10px', + position: 'relative', // for hover -},{}],37:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + ':first-child': { + borderLeft: '1px solid #ccc', + borderTopLeftRadius: '3px', + borderBottomLeftRadius: '3px' + }, + + ':last-child': { + borderRight: '1px solid #ccc', + borderTopRightRadius: '3px', + borderBottomRightRadius: '3px' + }, + + ':hover': { + backgroundColor: '#ccc' + }, + + ':focus': { + zIndex: '2' + } +}; + +var selectedStyle = { + backgroundColor: '#ddd' +}; + +RCSS.createClass(outerStyle); +RCSS.createClass(buttonStyle); +RCSS.createClass(selectedStyle); + +/* ButtonGroup is an aesthetically pleasing group of buttons. + * + * The class requires these properties: + * buttons - an array of objects with keys: + * "value": this is the value returned when the button is selected + * "text": this is the text shown on the button + * "title": this is the title-text shown on hover + * onChange - a function that is provided with the updated value + * (which it then is responsible for updating) + * + * The class has these optional properties: + * value - the initial value of the button selected, defaults to null. + * allowEmpty - if false, exactly one button _must_ be selected; otherwise + * it defaults to true and _at most_ one button (0 or 1) may be selected. + * + * Requires stylesheets/perseus-admin-package/editor.less to look nice. */ -var htmlEscapes = require('lodash._htmlescapes'), - keys = require('lodash.keys'); -/** Used to match HTML entities and HTML characters */ -var reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); +var ButtonGroup = React.createClass({displayName: 'ButtonGroup', + propTypes: { + value: React.PropTypes.any, + buttons: React.PropTypes.arrayOf(React.PropTypes.shape({ + value: React.PropTypes.any.isRequired, + text: React.PropTypes.renderable, + title: React.PropTypes.string + })).isRequired, + onChange: React.PropTypes.func.isRequired, + allowEmpty: React.PropTypes.bool + }, -module.exports = reUnescapedHtml; + getDefaultProps: function() { + return { + value: null, + allowEmpty: true + }; + }, -},{"lodash._htmlescapes":38,"lodash.keys":39}],38:[function(require,module,exports){ -arguments[4][36][0].apply(exports,arguments) -},{"dup":36}],39:[function(require,module,exports){ -arguments[4][30][0].apply(exports,arguments) -},{"dup":30,"lodash._isnative":40,"lodash._shimkeys":41,"lodash.isobject":43}],40:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],41:[function(require,module,exports){ -arguments[4][32][0].apply(exports,arguments) -},{"dup":32,"lodash._objecttypes":42}],42:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29}],43:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":44}],44:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29}],45:[function(require,module,exports){ -var _validCSSProps = { - 'alignment-adjust': true, - 'alignment-baseline': true, - 'animation': true, - 'animation-delay': true, - 'animation-direction': true, - 'animation-duration': true, - 'animation-iteration-count': true, - 'animation-name': true, - 'animation-play-state': true, - 'animation-timing-function': true, - 'appearance': true, - 'backface-visibility': true, - 'background': true, - 'background-attachment': true, - 'background-clip': true, - 'background-color': true, - 'background-image': true, - 'background-origin': true, - 'background-position': true, - 'background-repeat': true, - 'background-size': true, - 'baseline-shift': true, - 'bookmark-label': true, - 'bookmark-level': true, - 'bookmark-target': true, - 'border': true, - 'border-bottom': true, - 'border-bottom-color': true, - 'border-bottom-left-radius': true, - 'border-bottom-right-radius': true, - 'border-bottom-style': true, - 'border-bottom-width': true, - 'border-collapse': true, - 'border-color': true, - 'border-image': true, - 'border-image-outset': true, - 'border-image-repeat': true, - 'border-image-slice': true, - 'border-image-source': true, - 'border-image-width': true, - 'border-left': true, - 'border-left-color': true, - 'border-left-style': true, - 'border-left-width': true, - 'border-radius': true, - 'border-right': true, - 'border-right-color': true, - 'border-right-style': true, - 'border-right-width': true, - 'border-spacing': true, - 'border-style': true, - 'border-top': true, - 'border-top-color': true, - 'border-top-left-radius': true, - 'border-top-right-radius': true, - 'border-top-style': true, - 'border-top-width': true, - 'border-width': true, - 'bottom': true, - 'box-align': true, - 'box-decoration-break': true, - 'box-direction': true, - 'box-flex': true, - 'box-flex-group': true, - 'box-lines': true, - 'box-ordinal-group': true, - 'box-orient': true, - 'box-pack': true, - 'box-shadow': true, - 'box-sizing': true, - 'caption-side': true, - 'clear': true, - 'clip': true, - 'color': true, - 'color-profile': true, - 'column-count': true, - 'column-fill': true, - 'column-gap': true, - 'column-rule': true, - 'column-rule-color': true, - 'column-rule-style': true, - 'column-rule-width': true, - 'column-span': true, - 'column-width': true, - 'columns': true, - 'content': true, - 'counter-increment': true, - 'counter-reset': true, - 'crop': true, - 'cursor': true, - 'direction': true, - 'display': true, - 'dominant-baseline': true, - 'drop-initial-after-adjust': true, - 'drop-initial-after-align': true, - 'drop-initial-before-adjust': true, - 'drop-initial-before-align': true, - 'drop-initial-size': true, - 'drop-initial-value': true, - 'empty-cells': true, - 'fit': true, - 'fit-position': true, - 'float': true, - 'float-offset': true, - 'font': true, - 'font-family': true, - 'font-size': true, - 'font-size-adjust': true, - 'font-stretch': true, - 'font-style': true, - 'font-variant': true, - 'font-weight': true, - 'grid-columns': true, - 'grid-rows': true, - 'hanging-punctuation': true, - 'height': true, - 'hyphenate-after': true, - 'hyphenate-before': true, - 'hyphenate-character': true, - 'hyphenate-lines': true, - 'hyphenate-resource': true, - 'hyphens': true, - 'icon': true, - 'image-orientation': true, - 'image-resolution': true, - 'inline-box-align': true, - 'left': true, - 'letter-spacing': true, - 'line-height': true, - 'line-stacking': true, - 'line-stacking-ruby': true, - 'line-stacking-shift': true, - 'line-stacking-strategy': true, - 'list-style': true, - 'list-style-image': true, - 'list-style-position': true, - 'list-style-type': true, - 'margin': true, - 'margin-bottom': true, - 'margin-left': true, - 'margin-right': true, - 'margin-top': true, - 'mark': true, - 'mark-after': true, - 'mark-before': true, - 'marks': true, - 'marquee-direction': true, - 'marquee-play-count': true, - 'marquee-speed': true, - 'marquee-style': true, - 'max-height': true, - 'max-width': true, - 'min-height': true, - 'min-width': true, - 'move-to': true, - 'nav-down': true, - 'nav-index': true, - 'nav-left': true, - 'nav-right': true, - 'nav-up': true, - 'opacity': true, - 'orphans': true, - 'outline': true, - 'outline-color': true, - 'outline-offset': true, - 'outline-style': true, - 'outline-width': true, - 'overflow': true, - 'overflow-style': true, - 'overflow-x': true, - 'overflow-y': true, - 'padding': true, - 'padding-bottom': true, - 'padding-left': true, - 'padding-right': true, - 'padding-top': true, - 'page': true, - 'page-break-after': true, - 'page-break-before': true, - 'page-break-inside': true, - 'page-policy': true, - 'perspective': true, - 'perspective-origin': true, - 'phonemes': true, - 'position': true, - 'punctuation-trim': true, - 'quotes': true, - 'rendering-intent': true, - 'resize': true, - 'rest': true, - 'rest-after': true, - 'rest-before': true, - 'right': true, - 'rotation': true, - 'rotation-point': true, - 'ruby-align': true, - 'ruby-overhang': true, - 'ruby-position': true, - 'ruby-span': true, - 'size': true, - 'string-set': true, - 'table-layout': true, - 'target': true, - 'target-name': true, - 'target-new': true, - 'target-position': true, - 'text-align': true, - 'text-align-last': true, - 'text-decoration': true, - 'text-height': true, - 'text-indent': true, - 'text-justify': true, - 'text-outline': true, - 'text-overflow': true, - 'text-shadow': true, - 'text-transform': true, - 'text-wrap': true, - 'top': true, - 'transform': true, - 'transform-origin': true, - 'transform-style': true, - 'transition': true, - 'transition-delay': true, - 'transition-duration': true, - 'transition-property': true, - 'transition-timing-function': true, - 'unicode-bidi': true, - 'user-select': true, - 'vertical-align': true, - 'visibility': true, - 'voice-balance': true, - 'voice-duration': true, - 'voice-pitch': true, - 'voice-pitch-range': true, - 'voice-rate': true, - 'voice-stress': true, - 'voice-volume': true, - 'white-space': true, - 'widows': true, - 'width': true, - 'word-break': true, - 'word-spacing': true, - 'word-wrap': true, - 'z-index': true -} - -var vendorPrefixRegEx = /^-.+-/; - -module.exports = function(prop) { - if (prop[0] === '-') { - return !!_validCSSProps[prop.replace(vendorPrefixRegEx, '')]; - } - return !!_validCSSProps[prop]; -}; - -},{}],46:[function(require,module,exports){ -var every = require('lodash.every'); - -function isValidRatio(ratio) { - var re = /\d+\/\d+/; - return !!ratio.match(re); -} - -function isValidInteger(integer) { - var re = /\d+/; - return !!integer.match(re); -} - -function isValidLength(length) { - var re = /\d+(?:ex|em|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc)?$/; - return !!length.match(re); -} - -function isValidOrientation(orientation) { - return orientation === 'landscape' || orientation === 'portrait'; -} - -function isValidScan(scan) { - return scan === 'progressive' || scan === 'interlace'; -} - -function isValidResolution(resolution) { - var re = /(?:\+|-)?(?:\d+|\d*\.\d+)(?:e\d+)?(?:dpi|dpcm|dppx)$/; - return !!resolution.match(re); -} - -function isValidValue(value) { - return value != null && typeof value !== 'boolean' && value !== ''; -} - -var _mediaFeatureValidator = { - 'width': isValidLength, - 'min-width': isValidLength, - 'max-width': isValidLength, - 'height': isValidLength, - 'min-height': isValidLength, - 'max-height': isValidLength, - 'device-width': isValidLength, - 'min-device-width': isValidLength, - 'max-device-width': isValidLength, - 'device-height': isValidLength, - 'min-device-height': isValidLength, - 'max-device-height': isValidLength, - 'aspect-ratio': isValidRatio, - 'min-aspect-ratio': isValidRatio, - 'max-aspect-ratio': isValidRatio, - 'device-aspect-ratio': isValidRatio, - 'min-device-aspect-ratio': isValidRatio, - 'max-device-aspect-ratio': isValidRatio, - 'color': isValidValue, - 'min-color': isValidValue, - 'max-color': isValidValue, - 'color-index': isValidInteger, - 'min-color-index': isValidInteger, - 'max-color-index': isValidInteger, - 'monochrome': isValidInteger, - 'min-monochrome': isValidInteger, - 'max-monochrome': isValidInteger, - 'resolution': isValidResolution, - 'min-resolution': isValidResolution, - 'max-resolution': isValidResolution, - 'scan': isValidScan, - 'grid': isValidInteger, - 'orientation': isValidOrientation -}; - -var _validMediaFeatures = { - 'width': true, - 'min-width': true, - 'max-width': true, - 'height': true, - 'min-height': true, - 'max-height': true, - 'device-width': true, - 'min-device-width': true, - 'max-device-width': true, - 'device-height': true, - 'min-device-height': true, - 'max-device-height': true, - 'aspect-ratio': true, - 'min-aspect-ratio': true, - 'max-aspect-ratio': true, - 'device-aspect-ratio': true, - 'min-device-aspect-ratio': true, - 'max-device-aspect-ratio': true, - 'color': true, - 'min-color': true, - 'max-color': true, - 'color-index': true, - 'min-color-index': true, - 'max-color-index': true, - 'monochrome': true, - 'min-monochrome': true, - 'max-monochrome': true, - 'resolution': true, - 'min-resolution': true, - 'max-resolution': true, - 'scan': true, - 'grid': true, - 'orientation': true -}; - -var _validMediaTypes = { - 'all': true, - 'aural': true, - 'braille': true, - 'handheld': true, - 'print': true, - 'projection': true, - 'screen': true, - 'tty': true, - 'tv': true, - 'embossed': true -}; - -var _validQualifiers = { - 'not': true, - 'only': true -}; - -function isValidFeature(feature) { - return !!_validMediaFeatures[feature]; -} - -function isValidQualifier(qualifier) { - return !!_validQualifiers[qualifier]; -} - -function isValidMediaType(mediaType) { - return !!_validMediaTypes[mediaType]; -} - -function isValidQualifiedMediaType(mediaType) { - var terms = mediaType.trim().split(/\s+/); - switch (terms.length) { - case 1: - return isValidMediaType(terms[0]); - case 2: - return isValidQualifier(terms[0]) && isValidMediaType(terms[1]); - default: - return false; - } -} - -function isValidExpression(expression) { - if (expression.length < 2) { - return false; - } - - // Parentheses are required around expressions - if (expression[0] !== '(' || expression[expression.length - 1] !== ')') { - return false; - } - - // Remove parentheses and spacess - expression = expression.substring(1, expression.length - 1); - - // Is there a value to accompany the media feature? - var featureAndValue = expression.split(/\s*:\s*/); - switch (featureAndValue.length) { - case 1: - var feature = featureAndValue[0].trim(); - return isValidFeature(feature); - case 2: - var feature = featureAndValue[0].trim(); - var value = featureAndValue[1].trim(); - return isValidFeature(feature) && - _mediaFeatureValidator[feature](value); - default: - return false; - } -} - -function isValidMediaQuery(query) { - var andSplitter = /\s+and\s+/; - var queryTerms = query.split(andSplitter); - return (isValidQualifiedMediaType(queryTerms[0]) || - isValidExpression(queryTerms[0])) && - every(queryTerms.slice(1), isValidExpression); -} - -function isValidMediaQueryList(mediaQuery) { - mediaQuery = mediaQuery.toLowerCase(); - - if (mediaQuery.substring(0, 6) !== '@media') { - return false; - } - - var commaSplitter = /\s*,\s*/; - var queryList = mediaQuery.substring(7, mediaQuery.length) - .split(commaSplitter); - return every(queryList, isValidMediaQuery); -} - -module.exports = isValidMediaQueryList - -},{"lodash.every":47}],47:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var createCallback = require('lodash.createcallback'), - forOwn = require('lodash.forown'); - -/** - * Checks if the given callback returns truey value for **all** elements of - * a collection. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if all elements passed the callback check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes']); - * // => false - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.every(characters, 'age'); - * // => true - * - * // using "_.where" callback shorthand - * _.every(characters, { 'age': 36 }); - * // => false - */ -function every(collection, callback, thisArg) { - var result = true; - callback = createCallback(callback, thisArg, 3); + render: function() { + var value = this.props.value; + var buttons = _(this.props.buttons).map(function(button, i) { + var maybeSelected = button.value === value ? + selectedStyle.className : + ""; + return React.DOM.button( {title:button.title, + id:"" + i, + ref:"button" + i, + key:"" + i, + className:(buttonStyle.className + " " + maybeSelected), + onClick:this.toggleSelect.bind(this, button.value)}, + button.text || "" + button.value + ); + }.bind(this)); - var index = -1, - length = collection ? collection.length : 0; + return React.DOM.div( {className:outerStyle.className}, + buttons + ); + }, - if (typeof length == 'number') { - while (++index < length) { - if (!(result = !!callback(collection[index], index, collection))) { - break; - } + focus: function() { + this.getDOMNode().focus(); + return true; + }, + + toggleSelect: function(newValue) { + var value = this.props.value; + + if (this.props.allowEmpty) { + // Select the new button or unselect if it's already selected + this.props.onChange(value !== newValue ? newValue : null); + } else { + this.props.onChange(newValue); + } } - } else { - forOwn(collection, function(value, index, collection) { - return (result = !!callback(value, index, collection)); - }); - } - return result; -} +}); -module.exports = every; +module.exports = ButtonGroup; -},{"lodash.createcallback":48,"lodash.forown":84}],48:[function(require,module,exports){ -/** - * Lo-Dash 2.4.4 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - baseIsEqual = require('lodash._baseisequal'), - isObject = require('lodash.isobject'), - keys = require('lodash.keys'), - property = require('lodash.property'); +},{"rcss":39,"react":44,"underscore":45}],37:[function(require,module,exports){ +/** @jsx React.DOM */ -/** - * Produces a callback bound to an optional `thisArg`. If `func` is a property - * name the created callback will return the property value for a given element. - * If `func` is an object the created callback will return `true` for elements - * that contain the equivalent object properties, otherwise it will return `false`. +var React = require('react'); + +/* This component makes its children a drag target. Example: * - * @static - * @memberOf _ - * @category Utilities - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - * @example + * Drag to me * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; + * ... * - * // wrap to create custom callback shorthands - * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { - * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); - * return !match ? func(callback, thisArg) : function(object) { - * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; - * }; - * }); + * handleDrop: function(e) { + * this.addImages(e.nativeEvent.dataTransfer.files); + * } * - * _.filter(characters, 'age__gt38'); - * // => [{ 'name': 'fred', 'age': 40 }] + * Now "Drag to me" will be a drag target - when something is dragged over it, + * the element will become partially transparent as a visual indicator that + * it's a target. */ -function createCallback(func, thisArg, argCount) { - var type = typeof func; - if (func == null || type == 'function') { - return baseCreateCallback(func, thisArg, argCount); - } - // handle "_.pluck" style callback shorthands - if (type != 'object') { - return property(func); - } - var props = keys(func), - key = props[0], - a = func[key]; - - // handle "_.where" style callback shorthands - if (props.length == 1 && a === a && !isObject(a)) { - // fast path the common case of providing an object with a single - // property containing a primitive value - return function(object) { - var b = object[key]; - return a === b && (a !== 0 || (1 / a == 1 / b)); - }; - } - return function(object) { - var length = props.length, - result = false; +// TODO(joel) - indicate before the hover is over the target that it's possible +// to drag into the target. This would (I think) require a high level handler - +// like on Perseus itself, waiting for onDragEnter, then passing down the +// event. Sounds like a pain. Possible workaround - create a div covering the +// entire page... +// +// Other extensions: +// * custom styles for global drag and dragOver +// * only respond to certain types of drags (only images for instance)! +var DragTarget = React.createClass({displayName: 'DragTarget', + propTypes: { + onDrop: React.PropTypes.func.isRequired, + component: React.PropTypes.component, + shouldDragHighlight: React.PropTypes.func + }, + render: function() { + var opacity = this.state.dragHover ? { "opacity": 0.3 } : {}; + var component = this.props.component; - while (length--) { - if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { - break; - } + return this.transferPropsTo( + component( {style:opacity, + onDrop:this.handleDrop, + onDragEnd:this.handleDragEnd, + onDragOver:this.handleDragOver, + onDragEnter:this.handleDragEnter, + onDragLeave:this.handleDragLeave}, + this.props.children + ) + ); + }, + getInitialState: function() { + return { dragHover: false }; + }, + getDefaultProps: function() { + return { + component: React.DOM.div, + shouldDragHighlight: function() {return true;} + }; + }, + handleDrop: function(e) { + e.stopPropagation(); + e.preventDefault(); + this.setState({ dragHover: false }); + this.props.onDrop(e); + }, + handleDragEnd: function() { + this.setState({ dragHover: false }); + }, + handleDragOver: function(e) { + e.preventDefault(); + }, + handleDragLeave: function() { + this.setState({ dragHover: false }); + }, + handleDragEnter: function(e) { + this.setState({ dragHover: this.props.shouldDragHighlight(e) }); } - return result; - }; -} - -module.exports = createCallback; +}); -},{"lodash._basecreatecallback":49,"lodash._baseisequal":68,"lodash.isobject":77,"lodash.keys":79,"lodash.property":83}],49:[function(require,module,exports){ -arguments[4][8][0].apply(exports,arguments) -},{"dup":8,"lodash._setbinddata":50,"lodash.bind":53,"lodash.identity":65,"lodash.support":66}],50:[function(require,module,exports){ -arguments[4][9][0].apply(exports,arguments) -},{"dup":9,"lodash._isnative":51,"lodash.noop":52}],51:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],52:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],53:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12,"lodash._createwrapper":54,"lodash._slice":64}],54:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13,"lodash._basebind":55,"lodash._basecreatewrapper":59,"lodash._slice":64,"lodash.isfunction":63}],55:[function(require,module,exports){ -arguments[4][14][0].apply(exports,arguments) -},{"dup":14,"lodash._basecreate":56,"lodash._setbinddata":50,"lodash._slice":64,"lodash.isobject":77}],56:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._isnative":57,"lodash.isobject":77,"lodash.noop":58}],57:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],58:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],59:[function(require,module,exports){ -arguments[4][19][0].apply(exports,arguments) -},{"dup":19,"lodash._basecreate":60,"lodash._setbinddata":50,"lodash._slice":64,"lodash.isobject":77}],60:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._isnative":61,"lodash.isobject":77,"lodash.noop":62}],61:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],62:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],63:[function(require,module,exports){ -arguments[4][24][0].apply(exports,arguments) -},{"dup":24}],64:[function(require,module,exports){ -arguments[4][25][0].apply(exports,arguments) -},{"dup":25}],65:[function(require,module,exports){ -arguments[4][26][0].apply(exports,arguments) -},{"dup":26}],66:[function(require,module,exports){ -arguments[4][27][0].apply(exports,arguments) -},{"dup":27,"lodash._isnative":67}],67:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],68:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var forIn = require('lodash.forin'), - getArray = require('lodash._getarray'), - isFunction = require('lodash.isfunction'), - objectTypes = require('lodash._objecttypes'), - releaseArray = require('lodash._releasearray'); +module.exports = DragTarget; -/** `Object#toString` result shortcuts */ -var argsClass = '[object Arguments]', - arrayClass = '[object Array]', - boolClass = '[object Boolean]', - dateClass = '[object Date]', - numberClass = '[object Number]', - objectClass = '[object Object]', - regexpClass = '[object RegExp]', - stringClass = '[object String]'; +},{"react":44}],38:[function(require,module,exports){ +/** @jsx React.DOM */ -/** Used for native method references */ -var objectProto = Object.prototype; +var React = require('react'); +var RCSS = require('rcss'); +var _ = require('underscore'); -/** Used to resolve the internal [[Class]] of values */ -var toString = objectProto.toString; +var colors = { + grayLight: '#aaa', + basicBorderColor: '#ccc', + white: '#fff' +}; -/** Native method shortcuts */ -var hasOwnProperty = objectProto.hasOwnProperty; +var infoTip = { + display: 'inline-block', + marginLeft: '5px', + position: 'relative' +}; -/** - * The base implementation of `_.isEqual`, without support for `thisArg` binding, - * that allows partial "_.where" style comparisons. - * - * @private - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. - * @param {Array} [stackA=[]] Tracks traversed `a` objects. - * @param {Array} [stackB=[]] Tracks traversed `b` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { - // used to indicate that when comparing objects, `a` has at least the properties of `b` - if (callback) { - var result = callback(a, b); - if (typeof result != 'undefined') { - return !!result; - } - } - // exit early for identical values - if (a === b) { - // treat `+0` vs. `-0` as not equal - return a !== 0 || (1 / a == 1 / b); - } - var type = typeof a, - otherType = typeof b; +var infoTipI = { + cursor: 'pointer' +}; - // exit early for unlike primitive values - if (a === a && - !(a && objectTypes[type]) && - !(b && objectTypes[otherType])) { - return false; - } - // exit early for `null` and `undefined` avoiding ES3's Function#call behavior - // http://es5.github.io/#x15.3.4.4 - if (a == null || b == null) { - return a === b; - } - // compare [[Class]] names - var className = toString.call(a), - otherClass = toString.call(b); +var infoTipContainer = { + position: 'absolute', + 'top': '-12px', + left: '22px', + zIndex: '1000' +}; - if (className == argsClass) { - className = objectClass; - } - if (otherClass == argsClass) { - otherClass = objectClass; - } - if (className != otherClass) { - return false; - } - switch (className) { - case boolClass: - case dateClass: - // coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0` treating invalid dates coerced to `NaN` as not equal - return +a == +b; +var triangleBeforeAfter = { + borderBottom: '9px solid transparent', + borderTop: '9px solid transparent', + content: ' ', + height: '0', + position: 'absolute', + 'top': '0', + width: '0' +}; - case numberClass: - // treat `NaN` vs. `NaN` as equal - return (a != +a) - ? b != +b - // but treat `+0` vs. `-0` as not equal - : (a == 0 ? (1 / a == 1 / b) : a == +b); +var infoTipTriangle = { + height: '10px', + left: '0', + position: 'absolute', + 'top': '8px', + width: '0', + zIndex: '1', - case regexpClass: - case stringClass: - // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) - // treat string primitives and their corresponding object instances as equal - return a == String(b); - } - var isArr = className == arrayClass; - if (!isArr) { - // unwrap any `lodash` wrapped values - var aWrapped = hasOwnProperty.call(a, '__wrapped__'), - bWrapped = hasOwnProperty.call(b, '__wrapped__'); + ':before': _.extend({}, triangleBeforeAfter, { + borderRight: '9px solid #bbb', + right: '0', + }), - if (aWrapped || bWrapped) { - return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); - } - // exit for functions and DOM nodes - if (className != objectClass) { - return false; - } - // in older versions of Opera, `arguments` objects have `Array` constructors - var ctorA = a.constructor, - ctorB = b.constructor; + ':after': _.extend({}, triangleBeforeAfter, { + borderRight: ("9px solid " + colors.white), + right: '-1px' + }) +}; - // non `Object` object instances with different constructors are not equal - if (ctorA != ctorB && - !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && - ('constructor' in a && 'constructor' in b) - ) { - return false; - } - } - // assume cyclic structures are equal - // the algorithm for detecting cyclic structures is adapted from ES 5.1 - // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); +var basicBorder = { + border: ("1px solid " + colors.basicBorderColor) +}; - var length = stackA.length; - while (length--) { - if (stackA[length] == a) { - return stackB[length] == b; - } - } - var size = 0; - result = true; +var boxShadow = function(str) { return { boxShadow: str }; }; - // add `a` and `b` to the stack of traversed objects - stackA.push(a); - stackB.push(b); +var verticalShadow = RCSS.merge( + basicBorder, + boxShadow(("0 1px 3px " + colors.basicBorderColor)), + { borderBottom: ("1px solid " + colors.grayLight) } +); - // recursively compare objects and arrays (susceptible to call stack limits) - if (isArr) { - // compare lengths to determine if a deep comparison is necessary - length = a.length; - size = b.length; - result = size == length; +var infoTipContentContainer = RCSS.merge(verticalShadow, { + background: colors.white, + padding: '5px 10px', + width: '240px' +}); - if (result || isWhere) { - // deep compare the contents, ignoring non-numeric properties - while (size--) { - var index = length, - value = b[size]; +RCSS.createClass(infoTip); +RCSS.createClass(infoTipI); +RCSS.createClass(infoTipTriangle); +RCSS.createClass(verticalShadow); +RCSS.createClass(infoTipContainer); +RCSS.createClass(infoTipContentContainer); - if (isWhere) { - while (index--) { - if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } - } - else { - // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` - // which, in this case, is more costly - forIn(b, function(value, key, b) { - if (hasOwnProperty.call(b, key)) { - // count the number of properties. - size++; - // deep compare each property value. - return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); - } - }); +var questionMark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2N2M3NTAxYS04YmVlLTQ0M2MtYmRiNS04OGM2N2IxN2NhYzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUJCRTk4Qjc4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUJCRTk4QjY4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGE5ZDI0OTMtODk1NC00OGFkLTlhMTgtZDAwM2MwYWNjNDJlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY3Yzc1MDFhLThiZWUtNDQzYy1iZGI1LTg4YzY3YjE3Y2FjMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqm89uYAAADMSURBVHjaXJA9DoJAEIUH1M4TUHIFsCMGen9OwCGw1YRGW2ntKel0exsojHIBC0ouQAyUviFDstmXfNmZeS+zm7XSNCXRFiRgJf0bXIHixpbhGdxBBJYC1w/xaA424MhNEATkui71fU9KqfEU78UbD9PdbJRlOdae55GmhIP+1NV1TcMwkOM41DSNHvRtMhTHMRVFQW3b6mOLgx99kue5GRp/gIOZuZGvNpTNwjD8oliANU+qqqKu6/TQBdymN57AHjzBT+B6Jx79BRgAvc49kQA4yxgAAAAASUVORK5CYII='; // @NoLint - if (result && !isWhere) { - // ensure both objects have the same number of properties - forIn(a, function(value, key, a) { - if (hasOwnProperty.call(a, key)) { - // `size` will be `-1` if `a` has more properties than `b` - return (result = --size > -1); - } - }); - } - } - stackA.pop(); - stackB.pop(); +var InfoTip = React.createClass({displayName: 'InfoTip', + getInitialState: function() { + return { + hover: false + }; + }, - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; -} + render: function() { + return React.DOM.div( {className:infoTip.className}, + React.DOM.img( {width:10, + height:10, + src:questionMark, + onMouseEnter:this.handleMouseEnter, + onMouseLeave:this.handleMouseLeave} ), + React.DOM.div( {className:infoTipContainer.className, + style:{display: this.state.hover ? 'block' : 'none'}}, + React.DOM.div( {className:infoTipTriangle.className} ), + /* keep the classes here - used for selectors on KA */ + React.DOM.div( {className:infoTipContentContainer.className}, + this.props.children + ) + ) + ); + }, -module.exports = baseIsEqual; + handleMouseEnter: function() { + this.setState({hover: true}); + }, -},{"lodash._getarray":69,"lodash._objecttypes":71,"lodash._releasearray":72,"lodash.forin":75,"lodash.isfunction":76}],69:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var arrayPool = require('lodash._arraypool'); + handleMouseLeave: function() { + this.setState({hover: false}); + } +}); -/** - * Gets an array from the array pool or creates a new one if the pool is empty. - * - * @private - * @returns {Array} The array from the pool. - */ -function getArray() { - return arrayPool.pop() || []; -} +module.exports = InfoTip; -module.exports = getArray; +},{"rcss":39,"react":44,"underscore":45}],39:[function(require,module,exports){ +var assign = require('lodash.assign'); -},{"lodash._arraypool":70}],70:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ +var styleRuleValidator = require('./styleRuleValidator'); +var styleRuleConverter = require('./styleRuleConverter'); +var mediaQueryValidator = require('valid-media-queries'); + +var existingClasses = {}; +var styleTag = createStyleTag(); + +var classNameId = 0; +var randomSuffix = Math.random().toString(36).slice(-5); -/** Used to pool arrays and objects used internally */ -var arrayPool = []; +function generateValidCSSClassName() { + // CSS classNames can't start with a number. + return 'c' + (classNameId++) + '-' + randomSuffix; +} -module.exports = arrayPool; +function objToCSS(style) { + var serialized = ''; + for (var propName in style) { + // we put that ourselves + if (propName == 'className') continue; -},{}],71:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29}],72:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var arrayPool = require('lodash._arraypool'), - maxPoolSize = require('lodash._maxpoolsize'); + var cssPropName = styleRuleConverter.hyphenateProp(propName); + if (!styleRuleValidator.isValidProp(cssPropName)) { + console.warn( + '%s (transformed into %s) is not a valid CSS property name.', propName, cssPropName + ); + continue; + } -/** - * Releases the given array back to the array pool. - * - * @private - * @param {Array} [array] The array to release. - */ -function releaseArray(array) { - array.length = 0; - if (arrayPool.length < maxPoolSize) { - arrayPool.push(array); + var styleValue = style[propName]; + if (!styleRuleValidator.isValidValue(styleValue)) continue; + + if (styleValue !== null) { + serialized += cssPropName + ':'; + serialized += styleRuleConverter.escapeValueForProp(styleValue, + cssPropName) + ';'; + } } + return serialized || null; } -module.exports = releaseArray; +function createStyleTag() { + var tag = document.createElement('style'); + document.getElementsByTagName('head')[0].appendChild(tag); + return tag; +} -},{"lodash._arraypool":73,"lodash._maxpoolsize":74}],73:[function(require,module,exports){ -arguments[4][70][0].apply(exports,arguments) -},{"dup":70}],74:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ +function styleToCSS(style) { + var styleStr = '.' + style.className + '{'; + styleStr += objToCSS(style.value); + styleStr += '}'; -/** Used as the max size of the `arrayPool` and `objectPool` */ -var maxPoolSize = 40; + if (style.media) { + if (!mediaQueryValidator(style.media)) { + console.log('%s is not a valid media query.', style.media); + } + styleStr = style.media + '{' + styleStr + '}'; + } -module.exports = maxPoolSize; + return styleStr; +} -},{}],75:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - objectTypes = require('lodash._objecttypes'); +// TODO: support media queries +function parseStyles(className, styleObj) { + var mainStyle = { + className: className, + value: {} + }; + var styles = [mainStyle]; -/** - * Iterates over own and inherited enumerable properties of an object, - * executing the callback for each property. The callback is bound to `thisArg` - * and invoked with three arguments; (value, key, object). Callbacks may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; - * - * _.forIn(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) - */ -var forIn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - for (index in iterable) { - if (callback(iterable[index], index, collection) === false) return result; + Object.keys(styleObj).forEach(function(k){ + // pseudo-selector, insert a new rule + if (k[0] === ':') { + styles.push({ + className: className+k, + value: styleObj[k] + }); + return; + } else if (k.substring(0, 6) === '@media') { + styles.push({ + className: className, + value: styleObj[k], + media: k + }); + return; } - return result -}; - -module.exports = forIn; -},{"lodash._basecreatecallback":49,"lodash._objecttypes":71}],76:[function(require,module,exports){ -arguments[4][24][0].apply(exports,arguments) -},{"dup":24}],77:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":78}],78:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29}],79:[function(require,module,exports){ -arguments[4][30][0].apply(exports,arguments) -},{"dup":30,"lodash._isnative":80,"lodash._shimkeys":81,"lodash.isobject":77}],80:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],81:[function(require,module,exports){ -arguments[4][32][0].apply(exports,arguments) -},{"dup":32,"lodash._objecttypes":82}],82:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29}],83:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ + // normal rule, insert into main one + mainStyle.value[k] = styleObj[k]; + }); -/** - * Creates a "_.pluck" style function, which returns the `key` value of a - * given object. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} key The name of the property to retrieve. - * @returns {Function} Returns the new function. - * @example - * - * var characters = [ - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 36 } - * ]; - * - * var getName = _.property('name'); - * - * _.map(characters, getName); - * // => ['barney', 'fred'] - * - * _.sortBy(characters, getName); - * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] - */ -function property(key) { - return function(object) { - return object[key]; - }; + return styles; } -module.exports = property; +function insertStyle(className, styleObj) { + var styles = parseStyles(className, styleObj); + var styleStr = styles.map(styleToCSS).join(''); + styleTag.innerHTML += styleStr; +} -},{}],84:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - keys = require('lodash.keys'), - objectTypes = require('lodash._objecttypes'); +var RCSS = { + merge: function(a, b, c, d, e) { + return assign({}, a, b, c, d, e); + }, -/** - * Iterates over own enumerable properties of an object, executing the callback - * for each property. The callback is bound to `thisArg` and invoked with three - * arguments; (value, key, object). Callbacks may exit iteration early by - * explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) - */ -var forOwn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; + createClass: function(styleObj) { + var styleId = JSON.stringify(styleObj); + var className; - while (++ownIndex < length) { - index = ownProps[ownIndex]; - if (callback(iterable[index], index, collection) === false) return result; + if (existingClasses[styleId]) { + // already exists, use the existing className + className = existingClasses[styleId]; + } else { + // generate a new class and insert it + className = generateValidCSSClassName(); + existingClasses[styleId] = className; + insertStyle(className, styleObj); } - return result + + styleObj.className = className; + return styleObj; + } }; -module.exports = forOwn; +module.exports = RCSS; -},{"lodash._basecreatecallback":85,"lodash._objecttypes":106,"lodash.keys":107}],85:[function(require,module,exports){ -arguments[4][8][0].apply(exports,arguments) -},{"dup":8,"lodash._setbinddata":86,"lodash.bind":89,"lodash.identity":103,"lodash.support":104}],86:[function(require,module,exports){ -arguments[4][9][0].apply(exports,arguments) -},{"dup":9,"lodash._isnative":87,"lodash.noop":88}],87:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],88:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],89:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12,"lodash._createwrapper":90,"lodash._slice":102}],90:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13,"lodash._basebind":91,"lodash._basecreatewrapper":96,"lodash._slice":102,"lodash.isfunction":101}],91:[function(require,module,exports){ -arguments[4][14][0].apply(exports,arguments) -},{"dup":14,"lodash._basecreate":92,"lodash._setbinddata":86,"lodash._slice":102,"lodash.isobject":95}],92:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._isnative":93,"lodash.isobject":95,"lodash.noop":94}],93:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],94:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],95:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":106}],96:[function(require,module,exports){ -arguments[4][19][0].apply(exports,arguments) -},{"dup":19,"lodash._basecreate":97,"lodash._setbinddata":86,"lodash._slice":102,"lodash.isobject":100}],97:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._isnative":98,"lodash.isobject":100,"lodash.noop":99}],98:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],99:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],100:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":106}],101:[function(require,module,exports){ -arguments[4][24][0].apply(exports,arguments) -},{"dup":24}],102:[function(require,module,exports){ -arguments[4][25][0].apply(exports,arguments) -},{"dup":25}],103:[function(require,module,exports){ -arguments[4][26][0].apply(exports,arguments) -},{"dup":26}],104:[function(require,module,exports){ -arguments[4][27][0].apply(exports,arguments) -},{"dup":27,"lodash._isnative":105}],105:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],106:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29}],107:[function(require,module,exports){ -arguments[4][30][0].apply(exports,arguments) -},{"dup":30,"lodash._isnative":108,"lodash._shimkeys":109,"lodash.isobject":110}],108:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],109:[function(require,module,exports){ -arguments[4][32][0].apply(exports,arguments) -},{"dup":32,"lodash._objecttypes":106}],110:[function(require,module,exports){ -arguments[4][18][0].apply(exports,arguments) -},{"dup":18,"lodash._objecttypes":106}],111:[function(require,module,exports){ +},{"./styleRuleConverter":40,"./styleRuleValidator":41,"lodash.assign":21,"valid-media-queries":47}],40:[function(require,module,exports){ var escape = require('lodash.escape'); var _uppercasePattern = /([A-Z])/g; @@ -3116,7 +2587,7 @@ module.exports = { escapeValueForProp: escapeValueForProp }; -},{"lodash.escape":34}],112:[function(require,module,exports){ +},{"lodash.escape":24}],41:[function(require,module,exports){ var isValidCSSProps = require('valid-css-props'); function isValidProp(prop) { @@ -3132,7 +2603,7 @@ module.exports = { isValidValue: isValidValue }; -},{"valid-css-props":45}],113:[function(require,module,exports){ +},{"valid-css-props":46}],42:[function(require,module,exports){ /** @jsx React.DOM */ /** * For math rendered using KaTex and/or MathJax. Use me like 2x + 3. @@ -3281,7 +2752,7 @@ var TeX = React.createClass({displayName: 'TeX', module.exports = TeX; -},{"react":115}],114:[function(require,module,exports){ +},{"react":44}],43:[function(require,module,exports){ /** @jsx React.DOM */ var React = require("react"); @@ -3377,330 +2848,788 @@ var Triangle = React.createClass({displayName: 'Triangle', } }); -var TooltipArrow = React.createClass({displayName: 'TooltipArrow', - propTypes: { - position: React.PropTypes.string, - visibility: React.PropTypes.string, - left: React.PropTypes.number, - "top": React.PropTypes.number, - color: React.PropTypes.string.isRequired, // a css color - border: React.PropTypes.string.isRequired, // a css color - width: React.PropTypes.number.isRequired, - height: React.PropTypes.number.isRequired, - horizontalDirection: React.PropTypes.oneOf( - ["left", "right"] - ).isRequired, - verticalDirection: React.PropTypes.oneOf( - ["top", "bottom"] - ).isRequired +var TooltipArrow = React.createClass({displayName: 'TooltipArrow', + propTypes: { + position: React.PropTypes.string, + visibility: React.PropTypes.string, + left: React.PropTypes.number, + "top": React.PropTypes.number, + color: React.PropTypes.string.isRequired, // a css color + border: React.PropTypes.string.isRequired, // a css color + width: React.PropTypes.number.isRequired, + height: React.PropTypes.number.isRequired, + horizontalDirection: React.PropTypes.oneOf( + ["left", "right"] + ).isRequired, + verticalDirection: React.PropTypes.oneOf( + ["top", "bottom"] + ).isRequired + }, + + getDefaultProps: function() { + return { + position: "relative", + visibility: "visible", + left: 0, + "top": 0 + }; + }, + + // TODO(jack): Think about adding a box-shadow to the triangle here + // See http://css-tricks.com/triangle-with-shadow/ + render: function() { + var isRight = (this.props.horizontalDirection === "right"); + var isTop = (this.props.verticalDirection === "top"); + + var frontTopOffset = isTop ? 0 : 1; + var borderTopOffset = isTop ? 0 : -1; + + return React.DOM.div( {style:{ + display: "block", + position: this.props.position, + visibility: this.props.visibility, + left: this.props.left, + "top": this.props["top"], + width: this.props.width + 2, + height: this.props.height + 1, + marginTop: -1, + marginBottom: -2, + zIndex: zIndex + }}, + /* The background triangle used to create the effect of a + border around the foreground triangle*/ + Triangle( + {horizontalDirection:this.props.horizontalDirection, + verticalDirection:this.props.verticalDirection, + color:this.props.border, + left:0, + top:borderTopOffset, + width:this.props.width + 2, // one extra for the diagonal + height:this.props.height + 2} ), + /* The foreground triangle covers all but the left/right edges + of the background triangle */ + Triangle( + {horizontalDirection:this.props.horizontalDirection, + verticalDirection:this.props.verticalDirection, + color:this.props.color, + left:1, + top:frontTopOffset, + width:this.props.width, + height:this.props.height} ) + ); + } +}); + +var VERTICAL_CORNERS = { + "top": { + "top": "-100%" + }, + bottom: { + "top": 0 + } +}; + +var HORIZONTAL_CORNERS = { + left: { + targetLeft: 0, + }, + + right: { + targetLeft: "100%", + } +}; + +var HORIZONTAL_ALIGNMNENTS = { + left: { + tooltipLeft: 0, + arrowLeft: function(arrowSize) {return 0;} + }, + right: { + tooltipLeft: "-100%", + arrowLeft: function(arrowSize) {return -arrowSize - 2;} + } +}; + + +var Tooltip = React.createClass({displayName: 'Tooltip', + propTypes: { + show: React.PropTypes.bool.isRequired, + className: React.PropTypes.string, + arrowSize: React.PropTypes.number, + borderColor: React.PropTypes.string, + verticalPosition: React.PropTypes.oneOf( + _.keys(VERTICAL_CORNERS) + ), + horizontalPosition: React.PropTypes.oneOf( + _.keys(HORIZONTAL_CORNERS) + ), + horizontalAlign: React.PropTypes.oneOf( + _.keys(HORIZONTAL_ALIGNMNENTS) + ), + children: React.PropTypes.arrayOf( + React.PropTypes.component + ).isRequired + }, + + getDefaultProps: function() { + return { + className: "", + arrowSize: 10, + borderColor: "#ccc", + verticalPosition: "bottom", + horizontalPosition: "left", + horizontalAlign: "left" + }; + }, + + getInitialState: function() { + return { + height: null // used for offsetting "top" positioned tooltips + }; + }, + + componentWillReceiveProps: function() { + // If the contents have changed, reset our measure of the height + this.setState({height: null}); + }, + + render: function() { + var isTooltipAbove = this.props.verticalPosition === "top"; + + /* We wrap the entire output in a span so that it displays inline */ + return React.DOM.span(null, + isTooltipAbove && this._renderToolTipDiv(isTooltipAbove), + + /* We wrap our input in a div so that we can put the tooltip in a + div above/below it */ + React.DOM.div(null, + _.first(this.props.children) + ), + + !isTooltipAbove && this._renderToolTipDiv() + ); + }, + + _renderToolTipDiv: function(isTooltipAbove) { + var settings = _.extend({}, + HORIZONTAL_CORNERS[this.props.horizontalPosition], + HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], + VERTICAL_CORNERS[this.props.verticalPosition] + ); + + var arrowAbove; + var arrowBelow; + + if (isTooltipAbove) { + // We put an absolutely positioned arrow in the correct place + arrowAbove = TooltipArrow( + {verticalDirection:"top", + horizontalDirection:this.props.horizontalAlign, + position:"absolute", + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-this.props.arrowSize + 2, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); + + // And we use a visibility: hidden arrow below to shift up the + // content by the correct amount + arrowBelow = TooltipArrow( + {verticalDirection:"top", + horizontalDirection:this.props.horizontalAlign, + visibility:"hidden", + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-1, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); + } else { + arrowAbove = TooltipArrow( + {verticalDirection:"bottom", + horizontalDirection:this.props.horizontalAlign, + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-1, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); + + arrowBelow = null; + } + + /* A positioned div below the input to be the parent for our + tooltip */ + return React.DOM.div( {style:{ + position: "relative", + height: 0, + display: this.props.show ? "block" : "none", + }}, + React.DOM.div( {ref:"tooltipContainer", className:"tooltipContainer", style:{ + position: "absolute", + // height must start out undefined, not null, so that + // we can measure the actual height with jquery. + // This is used to position the tooltip with top: -100% + // when in verticalPosition: "top" mode + height: this.state.height || undefined, + left: settings.targetLeft + }}, + arrowAbove, + + /* The contents of the tooltip */ + React.DOM.div( {className:this.props.className, + ref:"tooltipContent", + style:{ + position: "relative", + "top": settings["top"], + "left": settings.tooltipLeft, + border: "1px solid " + this.props.borderColor, + "-webkit-box-shadow": "0 1px 3px " + + this.props.borderColor, + "-moz-box-shadow": "0 1px 3px " + + this.props.borderColor, + boxShadow: "0 1px 3px " + + this.props.borderColor, + zIndex: zIndex - 1 + }}, + _.rest(this.props.children) + ), + + arrowBelow + ) + ); }, - getDefaultProps: function() { - return { - position: "relative", - visibility: "visible", - left: 0, - "top": 0 - }; + componentDidMount: function() { + this._updateHeight(); }, - // TODO(jack): Think about adding a box-shadow to the triangle here - // See http://css-tricks.com/triangle-with-shadow/ - render: function() { - var isRight = (this.props.horizontalDirection === "right"); - var isTop = (this.props.verticalDirection === "top"); - - var frontTopOffset = isTop ? 0 : 1; - var borderTopOffset = isTop ? 0 : -1; + componentDidUpdate: function() { + this._updateHeight(); + }, - return React.DOM.div( {style:{ - display: "block", - position: this.props.position, - visibility: this.props.visibility, - left: this.props.left, - "top": this.props["top"], - width: this.props.width + 2, - height: this.props.height + 1, - marginTop: -1, - marginBottom: -2, - zIndex: zIndex - }}, - /* The background triangle used to create the effect of a - border around the foreground triangle*/ - Triangle( - {horizontalDirection:this.props.horizontalDirection, - verticalDirection:this.props.verticalDirection, - color:this.props.border, - left:0, - top:borderTopOffset, - width:this.props.width + 2, // one extra for the diagonal - height:this.props.height + 2} ), - /* The foreground triangle covers all but the left/right edges - of the background triangle */ - Triangle( - {horizontalDirection:this.props.horizontalDirection, - verticalDirection:this.props.verticalDirection, - color:this.props.color, - left:1, - top:frontTopOffset, - width:this.props.width, - height:this.props.height} ) - ); + _updateHeight: function() { + var height = this.refs.tooltipContainer.getDOMNode().offsetHeight; + if (height !== this.state.height) { + this.setState({height:height}); + } } }); -var VERTICAL_CORNERS = { - "top": { - "top": "-100%" - }, - bottom: { - "top": 0 - } -}; +// Sorry. // Apology-Oriented-Programming +module.exports = Tooltip; -var HORIZONTAL_CORNERS = { - left: { - targetLeft: 0, - }, +},{"react":44,"underscore":45}],44:[function(require,module,exports){ +/* This note applies to rcss, react, and underscore. + * + * We're faking a node module for this package by just exporting the global. + * There are a few complications which led us to this solution as a temporary + * fix. + * + * - Browserify can slow down a lot when you include the other packages (and + * their dependency graphs). We were also battling general browserify + * slowness at this time - browserify 3.4.0 is "good" but later versions + * (3.53 if I remember correctly) are terribly slow (on the order of 20x + * slower). + * + * - I'm not clear on the details of packaging this so we don't duplicate + * dependencies anywhere. For instance when packaging perseus for webapp we + * need to be careful not to include packages like underscore from our + * dependencies or from the packages we depend on. (note: this is a very good + * opportunity to either explain how existing tools solve the problem or + * create a new tool to solve it) + * + * - Joel (and Jack) + */ +module.exports = window.React; + +},{}],45:[function(require,module,exports){ +/* This note applies to rcss, react, and underscore. + * + * We're faking a node module for this package by just exporting the global. + * There are a few complications which led us to this solution as a temporary + * fix. + * + * - Browserify can slow down a lot when you include the other packages (and + * their dependency graphs). We were also battling general browserify + * slowness at this time - browserify 3.4.0 is "good" but later versions + * (3.53 if I remember correctly) are terribly slow (on the order of 20x + * slower). + * + * - I'm not clear on the details of packaging this so we don't duplicate + * dependencies anywhere. For instance when packaging perseus for webapp we + * need to be careful not to include packages like underscore from our + * dependencies or from the packages we depend on. (note: this is a very good + * opportunity to either explain how existing tools solve the problem or + * create a new tool to solve it) + * + * - Joel (and Jack) + */ +module.exports = window._; + +},{}],46:[function(require,module,exports){ +var _validCSSProps = { + 'alignment-adjust': true, + 'alignment-baseline': true, + 'animation': true, + 'animation-delay': true, + 'animation-direction': true, + 'animation-duration': true, + 'animation-iteration-count': true, + 'animation-name': true, + 'animation-play-state': true, + 'animation-timing-function': true, + 'appearance': true, + 'backface-visibility': true, + 'background': true, + 'background-attachment': true, + 'background-clip': true, + 'background-color': true, + 'background-image': true, + 'background-origin': true, + 'background-position': true, + 'background-repeat': true, + 'background-size': true, + 'baseline-shift': true, + 'bookmark-label': true, + 'bookmark-level': true, + 'bookmark-target': true, + 'border': true, + 'border-bottom': true, + 'border-bottom-color': true, + 'border-bottom-left-radius': true, + 'border-bottom-right-radius': true, + 'border-bottom-style': true, + 'border-bottom-width': true, + 'border-collapse': true, + 'border-color': true, + 'border-image': true, + 'border-image-outset': true, + 'border-image-repeat': true, + 'border-image-slice': true, + 'border-image-source': true, + 'border-image-width': true, + 'border-left': true, + 'border-left-color': true, + 'border-left-style': true, + 'border-left-width': true, + 'border-radius': true, + 'border-right': true, + 'border-right-color': true, + 'border-right-style': true, + 'border-right-width': true, + 'border-spacing': true, + 'border-style': true, + 'border-top': true, + 'border-top-color': true, + 'border-top-left-radius': true, + 'border-top-right-radius': true, + 'border-top-style': true, + 'border-top-width': true, + 'border-width': true, + 'bottom': true, + 'box-align': true, + 'box-decoration-break': true, + 'box-direction': true, + 'box-flex': true, + 'box-flex-group': true, + 'box-lines': true, + 'box-ordinal-group': true, + 'box-orient': true, + 'box-pack': true, + 'box-shadow': true, + 'box-sizing': true, + 'caption-side': true, + 'clear': true, + 'clip': true, + 'color': true, + 'color-profile': true, + 'column-count': true, + 'column-fill': true, + 'column-gap': true, + 'column-rule': true, + 'column-rule-color': true, + 'column-rule-style': true, + 'column-rule-width': true, + 'column-span': true, + 'column-width': true, + 'columns': true, + 'content': true, + 'counter-increment': true, + 'counter-reset': true, + 'crop': true, + 'cursor': true, + 'direction': true, + 'display': true, + 'dominant-baseline': true, + 'drop-initial-after-adjust': true, + 'drop-initial-after-align': true, + 'drop-initial-before-adjust': true, + 'drop-initial-before-align': true, + 'drop-initial-size': true, + 'drop-initial-value': true, + 'empty-cells': true, + 'fit': true, + 'fit-position': true, + 'float': true, + 'float-offset': true, + 'font': true, + 'font-family': true, + 'font-size': true, + 'font-size-adjust': true, + 'font-stretch': true, + 'font-style': true, + 'font-variant': true, + 'font-weight': true, + 'grid-columns': true, + 'grid-rows': true, + 'hanging-punctuation': true, + 'height': true, + 'hyphenate-after': true, + 'hyphenate-before': true, + 'hyphenate-character': true, + 'hyphenate-lines': true, + 'hyphenate-resource': true, + 'hyphens': true, + 'icon': true, + 'image-orientation': true, + 'image-resolution': true, + 'inline-box-align': true, + 'left': true, + 'letter-spacing': true, + 'line-height': true, + 'line-stacking': true, + 'line-stacking-ruby': true, + 'line-stacking-shift': true, + 'line-stacking-strategy': true, + 'list-style': true, + 'list-style-image': true, + 'list-style-position': true, + 'list-style-type': true, + 'margin': true, + 'margin-bottom': true, + 'margin-left': true, + 'margin-right': true, + 'margin-top': true, + 'mark': true, + 'mark-after': true, + 'mark-before': true, + 'marks': true, + 'marquee-direction': true, + 'marquee-play-count': true, + 'marquee-speed': true, + 'marquee-style': true, + 'max-height': true, + 'max-width': true, + 'min-height': true, + 'min-width': true, + 'move-to': true, + 'nav-down': true, + 'nav-index': true, + 'nav-left': true, + 'nav-right': true, + 'nav-up': true, + 'opacity': true, + 'orphans': true, + 'outline': true, + 'outline-color': true, + 'outline-offset': true, + 'outline-style': true, + 'outline-width': true, + 'overflow': true, + 'overflow-style': true, + 'overflow-x': true, + 'overflow-y': true, + 'padding': true, + 'padding-bottom': true, + 'padding-left': true, + 'padding-right': true, + 'padding-top': true, + 'page': true, + 'page-break-after': true, + 'page-break-before': true, + 'page-break-inside': true, + 'page-policy': true, + 'perspective': true, + 'perspective-origin': true, + 'phonemes': true, + 'position': true, + 'punctuation-trim': true, + 'quotes': true, + 'rendering-intent': true, + 'resize': true, + 'rest': true, + 'rest-after': true, + 'rest-before': true, + 'right': true, + 'rotation': true, + 'rotation-point': true, + 'ruby-align': true, + 'ruby-overhang': true, + 'ruby-position': true, + 'ruby-span': true, + 'size': true, + 'string-set': true, + 'table-layout': true, + 'target': true, + 'target-name': true, + 'target-new': true, + 'target-position': true, + 'text-align': true, + 'text-align-last': true, + 'text-decoration': true, + 'text-height': true, + 'text-indent': true, + 'text-justify': true, + 'text-outline': true, + 'text-overflow': true, + 'text-shadow': true, + 'text-transform': true, + 'text-wrap': true, + 'top': true, + 'transform': true, + 'transform-origin': true, + 'transform-style': true, + 'transition': true, + 'transition-delay': true, + 'transition-duration': true, + 'transition-property': true, + 'transition-timing-function': true, + 'unicode-bidi': true, + 'user-select': true, + 'vertical-align': true, + 'visibility': true, + 'voice-balance': true, + 'voice-duration': true, + 'voice-pitch': true, + 'voice-pitch-range': true, + 'voice-rate': true, + 'voice-stress': true, + 'voice-volume': true, + 'white-space': true, + 'widows': true, + 'width': true, + 'word-break': true, + 'word-spacing': true, + 'word-wrap': true, + 'z-index': true +} - right: { - targetLeft: "100%", - } -}; +var vendorPrefixRegEx = /^-.+-/; -var HORIZONTAL_ALIGNMNENTS = { - left: { - tooltipLeft: 0, - arrowLeft: function(arrowSize) {return 0;} - }, - right: { - tooltipLeft: "-100%", - arrowLeft: function(arrowSize) {return -arrowSize - 2;} - } +module.exports = function(prop) { + if (prop[0] === '-') { + return !!_validCSSProps[prop.replace(vendorPrefixRegEx, '')]; + } + return !!_validCSSProps[prop]; }; +},{}],47:[function(require,module,exports){ +var every = require('lodash.every'); -var Tooltip = React.createClass({displayName: 'Tooltip', - propTypes: { - show: React.PropTypes.bool.isRequired, - className: React.PropTypes.string, - arrowSize: React.PropTypes.number, - borderColor: React.PropTypes.string, - verticalPosition: React.PropTypes.oneOf( - _.keys(VERTICAL_CORNERS) - ), - horizontalPosition: React.PropTypes.oneOf( - _.keys(HORIZONTAL_CORNERS) - ), - horizontalAlign: React.PropTypes.oneOf( - _.keys(HORIZONTAL_ALIGNMNENTS) - ), - children: React.PropTypes.arrayOf( - React.PropTypes.component - ).isRequired - }, +function isValidRatio(ratio) { + var re = /\d+\/\d+/; + return !!ratio.match(re); +} - getDefaultProps: function() { - return { - className: "", - arrowSize: 10, - borderColor: "#ccc", - verticalPosition: "bottom", - horizontalPosition: "left", - horizontalAlign: "left" - }; - }, +function isValidInteger(integer) { + var re = /\d+/; + return !!integer.match(re); +} - getInitialState: function() { - return { - height: null // used for offsetting "top" positioned tooltips - }; - }, +function isValidLength(length) { + var re = /\d+(?:ex|em|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc)?$/; + return !!length.match(re); +} - componentWillReceiveProps: function() { - // If the contents have changed, reset our measure of the height - this.setState({height: null}); - }, +function isValidOrientation(orientation) { + return orientation === 'landscape' || orientation === 'portrait'; +} - render: function() { - var isTooltipAbove = this.props.verticalPosition === "top"; +function isValidScan(scan) { + return scan === 'progressive' || scan === 'interlace'; +} - /* We wrap the entire output in a span so that it displays inline */ - return React.DOM.span(null, - isTooltipAbove && this._renderToolTipDiv(isTooltipAbove), +function isValidResolution(resolution) { + var re = /(?:\+|-)?(?:\d+|\d*\.\d+)(?:e\d+)?(?:dpi|dpcm|dppx)$/; + return !!resolution.match(re); +} - /* We wrap our input in a div so that we can put the tooltip in a - div above/below it */ - React.DOM.div(null, - _.first(this.props.children) - ), +function isValidValue(value) { + return value != null && typeof value !== 'boolean' && value !== ''; +} - !isTooltipAbove && this._renderToolTipDiv() - ); - }, +var _mediaFeatureValidator = { + 'width': isValidLength, + 'min-width': isValidLength, + 'max-width': isValidLength, + 'height': isValidLength, + 'min-height': isValidLength, + 'max-height': isValidLength, + 'device-width': isValidLength, + 'min-device-width': isValidLength, + 'max-device-width': isValidLength, + 'device-height': isValidLength, + 'min-device-height': isValidLength, + 'max-device-height': isValidLength, + 'aspect-ratio': isValidRatio, + 'min-aspect-ratio': isValidRatio, + 'max-aspect-ratio': isValidRatio, + 'device-aspect-ratio': isValidRatio, + 'min-device-aspect-ratio': isValidRatio, + 'max-device-aspect-ratio': isValidRatio, + 'color': isValidValue, + 'min-color': isValidValue, + 'max-color': isValidValue, + 'color-index': isValidInteger, + 'min-color-index': isValidInteger, + 'max-color-index': isValidInteger, + 'monochrome': isValidInteger, + 'min-monochrome': isValidInteger, + 'max-monochrome': isValidInteger, + 'resolution': isValidResolution, + 'min-resolution': isValidResolution, + 'max-resolution': isValidResolution, + 'scan': isValidScan, + 'grid': isValidInteger, + 'orientation': isValidOrientation +}; - _renderToolTipDiv: function(isTooltipAbove) { - var settings = _.extend({}, - HORIZONTAL_CORNERS[this.props.horizontalPosition], - HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], - VERTICAL_CORNERS[this.props.verticalPosition] - ); +var _validMediaFeatures = { + 'width': true, + 'min-width': true, + 'max-width': true, + 'height': true, + 'min-height': true, + 'max-height': true, + 'device-width': true, + 'min-device-width': true, + 'max-device-width': true, + 'device-height': true, + 'min-device-height': true, + 'max-device-height': true, + 'aspect-ratio': true, + 'min-aspect-ratio': true, + 'max-aspect-ratio': true, + 'device-aspect-ratio': true, + 'min-device-aspect-ratio': true, + 'max-device-aspect-ratio': true, + 'color': true, + 'min-color': true, + 'max-color': true, + 'color-index': true, + 'min-color-index': true, + 'max-color-index': true, + 'monochrome': true, + 'min-monochrome': true, + 'max-monochrome': true, + 'resolution': true, + 'min-resolution': true, + 'max-resolution': true, + 'scan': true, + 'grid': true, + 'orientation': true +}; - var arrowAbove; - var arrowBelow; +var _validMediaTypes = { + 'all': true, + 'aural': true, + 'braille': true, + 'handheld': true, + 'print': true, + 'projection': true, + 'screen': true, + 'tty': true, + 'tv': true, + 'embossed': true +}; - if (isTooltipAbove) { - // We put an absolutely positioned arrow in the correct place - arrowAbove = TooltipArrow( - {verticalDirection:"top", - horizontalDirection:this.props.horizontalAlign, - position:"absolute", - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-this.props.arrowSize + 2, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); +var _validQualifiers = { + 'not': true, + 'only': true +}; - // And we use a visibility: hidden arrow below to shift up the - // content by the correct amount - arrowBelow = TooltipArrow( - {verticalDirection:"top", - horizontalDirection:this.props.horizontalAlign, - visibility:"hidden", - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-1, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); - } else { - arrowAbove = TooltipArrow( - {verticalDirection:"bottom", - horizontalDirection:this.props.horizontalAlign, - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-1, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); +function isValidFeature(feature) { + return !!_validMediaFeatures[feature]; +} - arrowBelow = null; - } +function isValidQualifier(qualifier) { + return !!_validQualifiers[qualifier]; +} - /* A positioned div below the input to be the parent for our - tooltip */ - return React.DOM.div( {style:{ - position: "relative", - height: 0, - display: this.props.show ? "block" : "none", - }}, - React.DOM.div( {ref:"tooltipContainer", className:"tooltipContainer", style:{ - position: "absolute", - // height must start out undefined, not null, so that - // we can measure the actual height with jquery. - // This is used to position the tooltip with top: -100% - // when in verticalPosition: "top" mode - height: this.state.height || undefined, - left: settings.targetLeft - }}, - arrowAbove, +function isValidMediaType(mediaType) { + return !!_validMediaTypes[mediaType]; +} - /* The contents of the tooltip */ - React.DOM.div( {className:this.props.className, - ref:"tooltipContent", - style:{ - position: "relative", - "top": settings["top"], - "left": settings.tooltipLeft, - border: "1px solid " + this.props.borderColor, - "-webkit-box-shadow": "0 1px 3px " + - this.props.borderColor, - "-moz-box-shadow": "0 1px 3px " + - this.props.borderColor, - boxShadow: "0 1px 3px " + - this.props.borderColor, - zIndex: zIndex - 1 - }}, - _.rest(this.props.children) - ), +function isValidQualifiedMediaType(mediaType) { + var terms = mediaType.trim().split(/\s+/); + switch (terms.length) { + case 1: + return isValidMediaType(terms[0]); + case 2: + return isValidQualifier(terms[0]) && isValidMediaType(terms[1]); + default: + return false; + } +} - arrowBelow - ) - ); - }, +function isValidExpression(expression) { + if (expression.length < 2) { + return false; + } - componentDidMount: function() { - this._updateHeight(); - }, + // Parentheses are required around expressions + if (expression[0] !== '(' || expression[expression.length - 1] !== ')') { + return false; + } - componentDidUpdate: function() { - this._updateHeight(); - }, + // Remove parentheses and spacess + expression = expression.substring(1, expression.length - 1); - _updateHeight: function() { - var height = this.refs.tooltipContainer.getDOMNode().offsetHeight; - if (height !== this.state.height) { - this.setState({height:height}); - } + // Is there a value to accompany the media feature? + var featureAndValue = expression.split(/\s*:\s*/); + switch (featureAndValue.length) { + case 1: + var feature = featureAndValue[0].trim(); + return isValidFeature(feature); + case 2: + var feature = featureAndValue[0].trim(); + var value = featureAndValue[1].trim(); + return isValidFeature(feature) && + _mediaFeatureValidator[feature](value); + default: + return false; } -}); +} -// Sorry. // Apology-Oriented-Programming -module.exports = Tooltip; +function isValidMediaQuery(query) { + var andSplitter = /\s+and\s+/; + var queryTerms = query.split(andSplitter); + return (isValidQualifiedMediaType(queryTerms[0]) || + isValidExpression(queryTerms[0])) && + every(queryTerms.slice(1), isValidExpression); +} -},{"react":115,"underscore":116}],115:[function(require,module,exports){ -/* This note applies to rcss, react, and underscore. - * - * We're faking a node module for this package by just exporting the global. - * There are a few complications which led us to this solution as a temporary - * fix. - * - * - Browserify can slow down a lot when you include the other packages (and - * their dependency graphs). We were also battling general browserify - * slowness at this time - browserify 3.4.0 is "good" but later versions - * (3.53 if I remember correctly) are terribly slow (on the order of 20x - * slower). - * - * - I'm not clear on the details of packaging this so we don't duplicate - * dependencies anywhere. For instance when packaging perseus for webapp we - * need to be careful not to include packages like underscore from our - * dependencies or from the packages we depend on. (note: this is a very good - * opportunity to either explain how existing tools solve the problem or - * create a new tool to solve it) - * - * - Joel (and Jack) - */ -module.exports = window.React; +function isValidMediaQueryList(mediaQuery) { + mediaQuery = mediaQuery.toLowerCase(); -},{}],116:[function(require,module,exports){ -/* This note applies to rcss, react, and underscore. - * - * We're faking a node module for this package by just exporting the global. - * There are a few complications which led us to this solution as a temporary - * fix. - * - * - Browserify can slow down a lot when you include the other packages (and - * their dependency graphs). We were also battling general browserify - * slowness at this time - browserify 3.4.0 is "good" but later versions - * (3.53 if I remember correctly) are terribly slow (on the order of 20x - * slower). - * - * - I'm not clear on the details of packaging this so we don't duplicate - * dependencies anywhere. For instance when packaging perseus for webapp we - * need to be careful not to include packages like underscore from our - * dependencies or from the packages we depend on. (note: this is a very good - * opportunity to either explain how existing tools solve the problem or - * create a new tool to solve it) - * - * - Joel (and Jack) - */ -module.exports = window._; + if (mediaQuery.substring(0, 6) !== '@media') { + return false; + } + + var commaSplitter = /\s*,\s*/; + var queryList = mediaQuery.substring(7, mediaQuery.length) + .split(commaSplitter); + return every(queryList, isValidMediaQuery); +} + +module.exports = isValidMediaQueryList -},{}],117:[function(require,module,exports){ +},{"lodash.every":25}],48:[function(require,module,exports){ var Widgets = require("./widgets.js"); _.each([ @@ -3724,12 +3653,14 @@ _.each([ require("./widgets/sorter.jsx"), require("./widgets/table.jsx"), require("./widgets/transformer.jsx"), - require("./widgets/image.jsx") + require("./widgets/image.jsx"), + require("./widgets/speaking-text-input.jsx"), + require("./widgets/speaking-voice.jsx") ], function(widget) { Widgets.register(widget.name, _.omit(widget, "name")); }); -},{"./widgets.js":171,"./widgets/categorizer.jsx":172,"./widgets/dropdown.jsx":173,"./widgets/example-graphie-widget.jsx":174,"./widgets/example-widget.jsx":175,"./widgets/expression.jsx":176,"./widgets/iframe.jsx":177,"./widgets/image.jsx":178,"./widgets/input-number.jsx":179,"./widgets/interactive-graph.jsx":180,"./widgets/interactive-number-line.jsx":181,"./widgets/lights-puzzle.jsx":182,"./widgets/matcher.jsx":183,"./widgets/measurer.jsx":184,"./widgets/number-line.jsx":185,"./widgets/numeric-input.jsx":186,"./widgets/orderer.jsx":187,"./widgets/plotter.jsx":188,"./widgets/radio.jsx":189,"./widgets/sorter.jsx":190,"./widgets/table.jsx":191,"./widgets/transformer.jsx":192}],118:[function(require,module,exports){ +},{"./widgets.js":102,"./widgets/categorizer.jsx":103,"./widgets/dropdown.jsx":104,"./widgets/example-graphie-widget.jsx":105,"./widgets/example-widget.jsx":106,"./widgets/expression.jsx":107,"./widgets/iframe.jsx":108,"./widgets/image.jsx":109,"./widgets/input-number.jsx":110,"./widgets/interactive-graph.jsx":111,"./widgets/interactive-number-line.jsx":112,"./widgets/lights-puzzle.jsx":113,"./widgets/matcher.jsx":114,"./widgets/measurer.jsx":115,"./widgets/number-line.jsx":116,"./widgets/numeric-input.jsx":117,"./widgets/orderer.jsx":118,"./widgets/plotter.jsx":119,"./widgets/radio.jsx":120,"./widgets/sorter.jsx":121,"./widgets/speaking-text-input.jsx":122,"./widgets/speaking-voice.jsx":123,"./widgets/table.jsx":124,"./widgets/transformer.jsx":125}],49:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -3800,7 +3731,7 @@ var AnswerAreaEditor = React.createClass({displayName: 'AnswerAreaEditor', module.exports = AnswerAreaEditor; -},{"./editor.jsx":143,"./widgets.js":171,"react":115,"react-components/info-tip":5}],119:[function(require,module,exports){ +},{"./editor.jsx":74,"./widgets.js":102,"react":44,"react-components/info-tip":38}],50:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -4155,7 +4086,7 @@ var AnswerAreaRenderer = React.createClass({displayName: 'AnswerAreaRenderer', module.exports = AnswerAreaRenderer; -},{"./enabled-features.jsx":144,"./perseus-api.jsx":162,"./question-paragraph.jsx":164,"./renderer.jsx":165,"./util.js":168,"./widget-container.jsx":170,"./widgets.js":171,"react":115}],120:[function(require,module,exports){ +},{"./enabled-features.jsx":75,"./perseus-api.jsx":93,"./question-paragraph.jsx":95,"./renderer.jsx":96,"./util.js":99,"./widget-container.jsx":101,"./widgets.js":102,"react":44}],51:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -4343,7 +4274,7 @@ FancySelect.Option = FancyOption; module.exports = FancySelect; -},{"react":115}],121:[function(require,module,exports){ +},{"react":44}],52:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -4799,7 +4730,7 @@ var GraphSettings = React.createClass({displayName: 'GraphSettings', module.exports = GraphSettings; -},{"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../components/range-input.jsx":131,"../mixins/changeable.jsx":159,"../util.js":168,"react":115,"react-components/button-group":3,"react-components/info-tip":5}],122:[function(require,module,exports){ +},{"../components/number-input.jsx":60,"../components/prop-check-box.jsx":61,"../components/range-input.jsx":62,"../mixins/changeable.jsx":90,"../util.js":99,"react":44,"react-components/button-group":36,"react-components/info-tip":38}],53:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -5138,7 +5069,7 @@ var Graph = React.createClass({displayName: 'Graph', module.exports = Graph; -},{"../util.js":168,"react":115}],123:[function(require,module,exports){ +},{"../util.js":99,"react":44}],54:[function(require,module,exports){ /** @jsx React.DOM */var Util = require("../util.js"); var nestedMap = Util.nestedMap; var deepEq = Util.deepEq; @@ -5269,7 +5200,7 @@ module.exports = { createSimpleClass: createSimpleClass }; -},{"../util.js":168}],124:[function(require,module,exports){ +},{"../util.js":99}],55:[function(require,module,exports){ /** @jsx React.DOM */var GraphieClasses = require("./graphie-classes.jsx"); var Interactive2 = require("../interactive2.js"); var InteractiveUtil = require("../interactive2/interactive-util.js"); @@ -5320,7 +5251,7 @@ module.exports = { MovablePoint: MovablePoint }; -},{"../interactive2.js":148,"../interactive2/interactive-util.js":149,"./graphie-classes.jsx":123}],125:[function(require,module,exports){ +},{"../interactive2.js":79,"../interactive2/interactive-util.js":80,"./graphie-classes.jsx":54}],56:[function(require,module,exports){ /** @jsx React.DOM */ var GraphieClasses = require("./graphie-classes.jsx"); @@ -5600,7 +5531,7 @@ _.extend(Graphie, Movables); module.exports = Graphie; -},{"../interactive2/interactive-util.js":149,"../util.js":168,"./graphie-classes.jsx":123,"./graphie-movables.jsx":124}],126:[function(require,module,exports){ +},{"../interactive2/interactive-util.js":80,"../util.js":99,"./graphie-classes.jsx":54,"./graphie-movables.jsx":55}],57:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -5760,7 +5691,7 @@ var InputWithExamples = React.createClass({displayName: 'InputWithExamples', module.exports = InputWithExamples; -},{"../perseus-api.jsx":162,"../renderer.jsx":165,"../util.js":168,"./math-input.jsx":127,"./text-input.jsx":134,"react":115,"react-components/tooltip":114}],127:[function(require,module,exports){ +},{"../perseus-api.jsx":93,"../renderer.jsx":96,"../util.js":99,"./math-input.jsx":58,"./text-input.jsx":65,"react":44,"react-components/tooltip":43}],58:[function(require,module,exports){ /** @jsx React.DOM */ // TODO(alex): Package MathQuill @@ -5999,7 +5930,7 @@ var MathInput = React.createClass({displayName: 'MathInput', module.exports = MathInput; -},{"./tex-buttons.jsx":133,"react":115,"underscore":116}],128:[function(require,module,exports){ +},{"./tex-buttons.jsx":64,"react":44,"underscore":45}],59:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6071,7 +6002,7 @@ var MultiButtonGroup = React.createClass({displayName: 'MultiButtonGroup', module.exports = MultiButtonGroup; -},{"react":115}],129:[function(require,module,exports){ +},{"react":44}],60:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6250,7 +6181,7 @@ var NumberInput = React.createClass({displayName: 'NumberInput', module.exports = NumberInput; -},{"../util.js":168,"react":115}],130:[function(require,module,exports){ +},{"../util.js":99,"react":44}],61:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6312,7 +6243,7 @@ var PropCheckBox = React.createClass({displayName: 'PropCheckBox', module.exports = PropCheckBox; -},{"react":115}],131:[function(require,module,exports){ +},{"react":44}],62:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6371,7 +6302,7 @@ var RangeInput = React.createClass({displayName: 'RangeInput', module.exports = RangeInput; -},{"../components/number-input.jsx":129,"react":115}],132:[function(require,module,exports){ +},{"../components/number-input.jsx":60,"react":44}],63:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6888,7 +6819,7 @@ var Sortable = React.createClass({displayName: 'Sortable', module.exports = Sortable; -},{"../renderer.jsx":165,"../util.js":168,"react":115}],133:[function(require,module,exports){ +},{"../renderer.jsx":96,"../util.js":99,"react":44}],64:[function(require,module,exports){ /** @jsx React.DOM */ var React = require("react"); @@ -7010,7 +6941,7 @@ var TexButtons = React.createClass({displayName: 'TexButtons', module.exports = TexButtons; -},{"react":115,"react-components/tex":113}],134:[function(require,module,exports){ +},{"react":44,"react-components/tex":42}],65:[function(require,module,exports){ /** @jsx React.DOM */ var TextInput = React.createClass({displayName: 'TextInput', @@ -7042,7 +6973,7 @@ var TextInput = React.createClass({displayName: 'TextInput', module.exports = TextInput; -},{}],135:[function(require,module,exports){ +},{}],66:[function(require,module,exports){ /** @jsx React.DOM */ var textWidthCache = {}; @@ -7172,7 +7103,7 @@ var TextListEditor = React.createClass({displayName: 'TextListEditor', module.exports = TextListEditor; -},{}],136:[function(require,module,exports){ +},{}],67:[function(require,module,exports){ /** @jsx React.DOM */ // Responsible for combining the text diffs from text-diff and the widget @@ -7287,7 +7218,7 @@ var RevisionDiff = React.createClass({displayName: 'RevisionDiff', module.exports = RevisionDiff; -},{"./text-diff.jsx":139,"./widget-diff.jsx":141}],137:[function(require,module,exports){ +},{"./text-diff.jsx":70,"./widget-diff.jsx":72}],68:[function(require,module,exports){ /** @jsx React.DOM */// Split a word-wise diff generated by jsdiff into multiple lines, for the // purpose of breaking up the diffs into lines, so that modified lines can be // faintly highlighted @@ -7317,7 +7248,7 @@ var splitDiff = function(diffEntries) { module.exports = splitDiff; -},{}],138:[function(require,module,exports){ +},{}],69:[function(require,module,exports){ /** @jsx React.DOM */var jsdiff = require("../../lib/jsdiff"); var statusFor = function(chunk) { @@ -7387,7 +7318,7 @@ var stringArrayDiff = function(a, b) { module.exports = stringArrayDiff; -},{"../../lib/jsdiff":1}],139:[function(require,module,exports){ +},{"../../lib/jsdiff":1}],70:[function(require,module,exports){ /** @jsx React.DOM */ var diff = require("../../lib/jsdiff"); @@ -7552,7 +7483,7 @@ var TextDiff = React.createClass({displayName: 'TextDiff', module.exports = TextDiff; -},{"../../lib/jsdiff":1,"./split-diff.jsx":137,"./string-array-diff.jsx":138}],140:[function(require,module,exports){ +},{"../../lib/jsdiff":1,"./split-diff.jsx":68,"./string-array-diff.jsx":69}],71:[function(require,module,exports){ /** @jsx React.DOM */var UNCHANGED = "unchanged"; var CHANGED = "changed"; var ADDED = "added"; @@ -7622,7 +7553,7 @@ var performDiff = function(before, after, /* optional */ key) { module.exports = performDiff; -},{}],141:[function(require,module,exports){ +},{}],72:[function(require,module,exports){ /** @jsx React.DOM */ var cx = React.addons.classSet; @@ -7818,7 +7749,7 @@ var WidgetDiff = React.createClass({displayName: 'WidgetDiff', module.exports = WidgetDiff; -},{"./widget-diff-performer.jsx":140}],142:[function(require,module,exports){ +},{"./widget-diff-performer.jsx":71}],73:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8102,7 +8033,7 @@ var EditorPage = React.createClass({displayName: 'EditorPage', module.exports = EditorPage; -},{"./components/prop-check-box.jsx":130,"./enabled-features.jsx":144,"./hint-editor.jsx":145,"./item-editor.jsx":157,"./item-renderer.jsx":158,"./perseus-api.jsx":162,"react":115}],143:[function(require,module,exports){ +},{"./components/prop-check-box.jsx":61,"./enabled-features.jsx":75,"./hint-editor.jsx":76,"./item-editor.jsx":88,"./item-renderer.jsx":89,"./perseus-api.jsx":93,"react":44}],74:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8115,11 +8046,12 @@ var DragTarget = require("react-components/drag-target"); var rWidgetSplit = /(\[\[\u2603 [a-z-]+ [0-9]+\]\])/g; // widgets junyi can use now: -var widgetsInEditor = ['image', 'categorizer', 'dropdown', 'expression', - 'input-number', 'interactive-graph', 'interactive-number-line', - 'lights-puzzle', 'measurer', 'number-line', - 'iframe', 'numeric-input', 'plotter', - 'radio', 'sorter', 'table', 'transformer', 'matcher']; +var widgetsInEditor = ['image', 'categorizer', 'dropdown', 'expression', + 'input-number', 'interactive-graph', 'interactive-number-line', + 'lights-puzzle', 'measurer', 'number-line', + 'iframe', 'numeric-input', 'plotter', + 'radio', 'sorter', 'table', 'transformer', 'matcher', + 'speaking-text-input', 'speaking-voice']; var WidgetSelect = React.createClass({displayName: 'WidgetSelect', handleChange: function(e) { @@ -8703,7 +8635,7 @@ var Editor = React.createClass({displayName: 'Editor', module.exports = Editor; -},{"./components/prop-check-box.jsx":130,"./util.js":168,"./widgets.js":171,"react":115,"react-components/drag-target":4}],144:[function(require,module,exports){ +},{"./components/prop-check-box.jsx":61,"./util.js":99,"./widgets.js":102,"react":44,"react-components/drag-target":37}],75:[function(require,module,exports){ /** @jsx React.DOM */var React = require('react'); module.exports = { @@ -8719,7 +8651,7 @@ module.exports = { } }; -},{"react":115}],145:[function(require,module,exports){ +},{"react":44}],76:[function(require,module,exports){ /** @jsx React.DOM */ /* Collection of classes for rendering the hint editor area, @@ -8935,7 +8867,7 @@ var CombinedHintsEditor = React.createClass({displayName: 'CombinedHintsEditor', module.exports = CombinedHintsEditor; -},{"./editor.jsx":143,"./hint-renderer.jsx":146,"react":115,"react-components/info-tip":5}],146:[function(require,module,exports){ +},{"./editor.jsx":74,"./hint-renderer.jsx":77,"react":44,"react-components/info-tip":38}],77:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8963,7 +8895,7 @@ var HintRenderer = React.createClass({displayName: 'HintRenderer', module.exports = HintRenderer; -},{"./renderer.jsx":165,"react":115}],147:[function(require,module,exports){ +},{"./renderer.jsx":96,"react":44}],78:[function(require,module,exports){ var React = require('react'); var init = function(options) { @@ -9004,7 +8936,7 @@ var init = function(options) { module.exports = init; -},{"react":115}],148:[function(require,module,exports){ +},{"react":44}],79:[function(require,module,exports){ var Movable = require("./interactive2/movable.js"); var MovablePoint = require("./interactive2/movable-point.js"); var MovableLine = require("./interactive2/movable-line.js"); @@ -9024,7 +8956,7 @@ var Interactive2 = { module.exports = Interactive2; -},{"./interactive2/movable-line.js":152,"./interactive2/movable-point.js":154,"./interactive2/movable.js":155}],149:[function(require,module,exports){ +},{"./interactive2/movable-line.js":83,"./interactive2/movable-point.js":85,"./interactive2/movable.js":86}],80:[function(require,module,exports){ /** * Utility functions for writing Interactive2 movablethings */ @@ -9102,7 +9034,7 @@ var InteractiveUtil = { module.exports = InteractiveUtil; -},{"./movable-helper-methods.js":150}],150:[function(require,module,exports){ +},{"./movable-helper-methods.js":81}],81:[function(require,module,exports){ /** * MovableThing convenience methods * @@ -9205,7 +9137,7 @@ var MovableHelperMethods = { module.exports = MovableHelperMethods; -},{}],151:[function(require,module,exports){ +},{}],82:[function(require,module,exports){ /** * A library of options to pass to add/draw/remove/constraints */ @@ -9488,7 +9420,7 @@ module.exports = { onMoveEnd: {standard: null}, }; -},{}],152:[function(require,module,exports){ +},{}],83:[function(require,module,exports){ /** * MovableLine */ @@ -9772,7 +9704,7 @@ _.extend(MovableLine.prototype, { module.exports = MovableLine; -},{"./interactive-util.js":149,"./movable-line-options.js":151,"./objective_.js":156}],153:[function(require,module,exports){ +},{"./interactive-util.js":80,"./movable-line-options.js":82,"./objective_.js":87}],84:[function(require,module,exports){ /** * A library of options to pass to add/draw/remove/constraints */ @@ -9917,7 +9849,7 @@ module.exports = { onClick: {standard: null} }; -},{}],154:[function(require,module,exports){ +},{}],85:[function(require,module,exports){ /** * Creates and adds a point to the graph that can be dragged around. * It allows constraints on its movement and draws when moves happen. @@ -10250,7 +10182,7 @@ _.extend(MovablePoint.prototype, { module.exports = MovablePoint; -},{"./interactive-util.js":149,"./movable-point-options.js":153,"./objective_.js":156}],155:[function(require,module,exports){ +},{"./interactive-util.js":80,"./movable-point-options.js":84,"./objective_.js":87}],86:[function(require,module,exports){ /** * Movable * @@ -10515,7 +10447,7 @@ _.extend(Movable.prototype, { module.exports = Movable; -},{"./interactive-util.js":149}],156:[function(require,module,exports){ +},{"./interactive-util.js":80}],87:[function(require,module,exports){ /** * A work-in-progress of _ methods for objects. * That is, they take an object as a parameter, @@ -10544,7 +10476,7 @@ var pluck = exports.pluck = function(table, subKey) { })); }; -},{}],157:[function(require,module,exports){ +},{}],88:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -10653,7 +10585,7 @@ var ItemEditor = React.createClass({displayName: 'ItemEditor', module.exports = ItemEditor; -},{"./answer-area-editor.jsx":118,"./editor.jsx":143,"./version.json":169,"react":115}],158:[function(require,module,exports){ +},{"./answer-area-editor.jsx":49,"./editor.jsx":74,"./version.json":100,"react":44}],89:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -10973,7 +10905,7 @@ var ItemRenderer = React.createClass({displayName: 'ItemRenderer', module.exports = ItemRenderer; -},{"./answer-area-renderer.jsx":119,"./enabled-features.jsx":144,"./hint-renderer.jsx":146,"./perseus-api.jsx":162,"./renderer.jsx":165,"./util.js":168,"react":115}],159:[function(require,module,exports){ +},{"./answer-area-renderer.jsx":50,"./enabled-features.jsx":75,"./hint-renderer.jsx":77,"./perseus-api.jsx":93,"./renderer.jsx":96,"./util.js":99,"react":44}],90:[function(require,module,exports){ /** @jsx React.DOM */ /** * Changeable @@ -11074,7 +11006,7 @@ var Changeable = { module.exports = Changeable; -},{"./widget-prop-blacklist.jsx":161}],160:[function(require,module,exports){ +},{"./widget-prop-blacklist.jsx":92}],91:[function(require,module,exports){ /** @jsx React.DOM */var WIDGET_PROP_BLACKLIST = require("./widget-prop-blacklist.jsx"); var JsonifyProps = { @@ -11086,7 +11018,7 @@ var JsonifyProps = { module.exports = JsonifyProps; -},{"./widget-prop-blacklist.jsx":161}],161:[function(require,module,exports){ +},{"./widget-prop-blacklist.jsx":92}],92:[function(require,module,exports){ /** @jsx React.DOM */module.exports = [ // standard props "added" by react // (technically the renderer still adds them) @@ -11100,7 +11032,7 @@ module.exports = JsonifyProps; "apiOptions" ]; -},{}],162:[function(require,module,exports){ +},{}],93:[function(require,module,exports){ /** @jsx React.DOM *//** * [Most of] the Perseus client API. * @@ -11159,7 +11091,7 @@ module.exports = { }; -},{}],163:[function(require,module,exports){ +},{}],94:[function(require,module,exports){ require("./all-widgets.js"); var version = require("./version.json"); @@ -11179,7 +11111,7 @@ module.exports = { Util: require("./util.js") }; -},{"./all-widgets.js":117,"./answer-area-renderer.jsx":119,"./diffs/revision-diff.jsx":136,"./editor-page.jsx":142,"./editor.jsx":143,"./init.js":147,"./item-renderer.jsx":158,"./perseus-api.jsx":162,"./renderer.jsx":165,"./stateful-editor-page.jsx":166,"./util.js":168,"./version.json":169}],164:[function(require,module,exports){ +},{"./all-widgets.js":48,"./answer-area-renderer.jsx":50,"./diffs/revision-diff.jsx":67,"./editor-page.jsx":73,"./editor.jsx":74,"./init.js":78,"./item-renderer.jsx":89,"./perseus-api.jsx":93,"./renderer.jsx":96,"./stateful-editor-page.jsx":97,"./util.js":99,"./version.json":100}],95:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11195,7 +11127,7 @@ var QuestionParagraph = React.createClass({displayName: 'QuestionParagraph', module.exports = QuestionParagraph; -},{"react":115}],165:[function(require,module,exports){ +},{"react":44}],96:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11830,7 +11762,7 @@ function extractMathAndWidgets(text) { module.exports = Renderer; -},{"./enabled-features.jsx":144,"./perseus-api.jsx":162,"./question-paragraph.jsx":164,"./tex.jsx":167,"./util.js":168,"./widget-container.jsx":170,"./widgets.js":171,"react":115}],166:[function(require,module,exports){ +},{"./enabled-features.jsx":75,"./perseus-api.jsx":93,"./question-paragraph.jsx":95,"./tex.jsx":98,"./util.js":99,"./widget-container.jsx":101,"./widgets.js":102,"react":44}],97:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11873,7 +11805,7 @@ var StatefulEditorPage = React.createClass({displayName: 'StatefulEditorPage', module.exports = StatefulEditorPage; -},{"./editor-page.jsx":142,"react":115}],167:[function(require,module,exports){ +},{"./editor-page.jsx":73,"react":44}],98:[function(require,module,exports){ /** @jsx React.DOM */ /** * For math rendered using MathJax. Use me like 2x + 3. @@ -12026,7 +11958,7 @@ var TeX = React.createClass({displayName: 'TeX', module.exports = TeX; -},{"react":115}],168:[function(require,module,exports){ +},{"react":44}],99:[function(require,module,exports){ var nestedMap = function(children, func, context) { if (_.isArray(children)) { return _.map(children, function(child) { @@ -12566,7 +12498,7 @@ Util.random = Util.seededRNG(new Date().getTime() & 0xffffffff); module.exports = Util; -},{}],169:[function(require,module,exports){ +},{}],100:[function(require,module,exports){ module.exports={ "apiVersion": { "major": 1, @@ -12578,7 +12510,7 @@ module.exports={ } } -},{}],170:[function(require,module,exports){ +},{}],101:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -12617,7 +12549,7 @@ var WidgetContainer = React.createClass({displayName: 'WidgetContainer', module.exports = WidgetContainer; -},{"react":115}],171:[function(require,module,exports){ +},{"react":44}],102:[function(require,module,exports){ var widgets = {}; var Widgets = { @@ -12757,7 +12689,7 @@ var Widgets = { module.exports = Widgets; -},{}],172:[function(require,module,exports){ +},{}],103:[function(require,module,exports){ /** @jsx React.DOM */ var Changeable = require("../mixins/changeable.jsx"); @@ -12943,7 +12875,7 @@ module.exports = { }; -},{"../components/text-list-editor.jsx":135,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../renderer.jsx":165,"../util.js":168}],173:[function(require,module,exports){ +},{"../components/text-list-editor.jsx":66,"../mixins/changeable.jsx":90,"../mixins/jsonify-props.jsx":91,"../renderer.jsx":96,"../util.js":99}],104:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -13201,7 +13133,7 @@ module.exports = { hidden: false }; -},{"../components/fancy-select.jsx":120,"../mixins/jsonify-props.jsx":160,"../perseus-api.jsx":162,"../util.js":168,"react":115,"react-components/info-tip":5}],174:[function(require,module,exports){ +},{"../components/fancy-select.jsx":51,"../mixins/jsonify-props.jsx":91,"../perseus-api.jsx":93,"../util.js":99,"react":44,"react-components/info-tip":38}],105:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -13396,7 +13328,7 @@ module.exports = { editor: ExampleGraphieWidgetEditor }; -},{"../components/graphie.jsx":125,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../util.js":168,"react":115}],175:[function(require,module,exports){ +},{"../components/graphie.jsx":56,"../mixins/changeable.jsx":90,"../mixins/jsonify-props.jsx":91,"../util.js":99,"react":44}],106:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -13580,7 +13512,7 @@ module.exports = { editor: ExampleWidgetEditor }; -},{"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"react":115}],176:[function(require,module,exports){ +},{"../mixins/changeable.jsx":90,"../mixins/jsonify-props.jsx":91,"react":44}],107:[function(require,module,exports){ /** @jsx React.DOM */ var React = require("react"); @@ -13988,7 +13920,7 @@ module.exports = { hidden: false }; -},{"../components/input-with-examples.jsx":126,"../components/math-input.jsx":127,"../components/prop-check-box.jsx":130,"../components/tex-buttons.jsx":133,"../enabled-features.jsx":144,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../perseus-api.jsx":162,"../tex.jsx":167,"react":115,"react-components/info-tip":5,"react-components/tooltip":114}],177:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":57,"../components/math-input.jsx":58,"../components/prop-check-box.jsx":61,"../components/tex-buttons.jsx":64,"../enabled-features.jsx":75,"../mixins/changeable.jsx":90,"../mixins/jsonify-props.jsx":91,"../perseus-api.jsx":93,"../tex.jsx":98,"react":44,"react-components/info-tip":38,"react-components/tooltip":43}],108:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -14239,7 +14171,7 @@ module.exports = { editor: IframeEditor }; -},{"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../util.js":168,"react":115,"react-components/blur-input":2}],178:[function(require,module,exports){ +},{"../mixins/changeable.jsx":90,"../mixins/jsonify-props.jsx":91,"../util.js":99,"react":44,"react-components/blur-input":35}],109:[function(require,module,exports){ /** @jsx React.DOM */ var BlurInput = require("react-components/blur-input"); @@ -14574,7 +14506,7 @@ module.exports = { }; -},{"../components/graphie.jsx":125,"../components/range-input.jsx":131,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"react-components/blur-input":2,"react-components/info-tip":5}],179:[function(require,module,exports){ +},{"../components/graphie.jsx":56,"../components/range-input.jsx":62,"../mixins/changeable.jsx":90,"../mixins/jsonify-props.jsx":91,"react-components/blur-input":35,"react-components/info-tip":38}],110:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -14895,7 +14827,7 @@ module.exports = { transform: propTransform }; -},{"../components/input-with-examples.jsx":126,"../enabled-features.jsx":144,"../perseus-api.jsx":162,"../renderer.jsx":165,"../tex.jsx":167,"../util.js":168,"react":115,"react-components/blur-input":2,"react-components/info-tip":5}],180:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":57,"../enabled-features.jsx":75,"../perseus-api.jsx":93,"../renderer.jsx":96,"../tex.jsx":98,"../util.js":99,"react":44,"react-components/blur-input":35,"react-components/info-tip":38}],111:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -17393,7 +17325,7 @@ module.exports = { hidden: false }; -},{"../components/graph-settings.jsx":121,"../components/graph.jsx":122,"../components/number-input.jsx":129,"../interactive2.js":148,"../util.js":168,"react":115,"react-components/info-tip":5}],181:[function(require,module,exports){ +},{"../components/graph-settings.jsx":52,"../components/graph.jsx":53,"../components/number-input.jsx":60,"../interactive2.js":79,"../util.js":99,"react":44,"react-components/info-tip":38}],112:[function(require,module,exports){ /** @jsx React.DOM */ var InfoTip = require("react-components/info-tip"); @@ -17841,7 +17773,7 @@ module.exports = { editor: InteractiveNumberLineEditor }; -},{"../components/prop-check-box.jsx":130,"../util.js":168,"react-components/info-tip":5}],182:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":61,"../util.js":99,"react-components/info-tip":38}],113:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18303,7 +18235,7 @@ module.exports = { transform: transformProps }; -},{"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"react":115,"react-components/info-tip":5}],183:[function(require,module,exports){ +},{"../components/number-input.jsx":60,"../components/prop-check-box.jsx":61,"../mixins/changeable.jsx":90,"../mixins/jsonify-props.jsx":91,"react":44,"react-components/info-tip":38}],114:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18543,7 +18475,7 @@ module.exports = { hidden: false }; -},{"../components/prop-check-box.jsx":130,"../components/sortable.jsx":132,"../components/text-list-editor.jsx":135,"../renderer.jsx":165,"../util.js":168,"react":115,"react-components/info-tip":5}],184:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":61,"../components/sortable.jsx":63,"../components/text-list-editor.jsx":66,"../renderer.jsx":96,"../util.js":99,"react":44,"react-components/info-tip":38}],115:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18904,7 +18836,7 @@ module.exports = { hidden: false }; -},{"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../components/range-input.jsx":131,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"react":115,"react-components/info-tip":5}],185:[function(require,module,exports){ +},{"../components/number-input.jsx":60,"../components/prop-check-box.jsx":61,"../components/range-input.jsx":62,"../mixins/changeable.jsx":90,"../mixins/jsonify-props.jsx":91,"react":44,"react-components/info-tip":38}],116:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -19755,7 +19687,7 @@ module.exports = { hidden: false }; -},{"../components/graphie.jsx":125,"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../components/range-input.jsx":131,"../interactive2.js":148,"../interactive2/interactive-util.js":149,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../util.js":168,"react":115,"react-components/button-group":3,"react-components/info-tip":5}],186:[function(require,module,exports){ +},{"../components/graphie.jsx":56,"../components/number-input.jsx":60,"../components/prop-check-box.jsx":61,"../components/range-input.jsx":62,"../interactive2.js":79,"../interactive2/interactive-util.js":80,"../mixins/changeable.jsx":90,"../mixins/jsonify-props.jsx":91,"../util.js":99,"react":44,"react-components/button-group":36,"react-components/info-tip":38}],117:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -20200,7 +20132,7 @@ module.exports = { hidden: false }; -},{"../components/input-with-examples.jsx":126,"../components/multi-button-group.jsx":128,"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../editor.jsx":143,"../mixins/changeable.jsx":159,"../mixins/jsonify-props.jsx":160,"../util.js":168,"react":115,"react-components/button-group":3,"react-components/info-tip":5}],187:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":57,"../components/multi-button-group.jsx":59,"../components/number-input.jsx":60,"../components/prop-check-box.jsx":61,"../editor.jsx":74,"../mixins/changeable.jsx":90,"../mixins/jsonify-props.jsx":91,"../util.js":99,"react":44,"react-components/button-group":36,"react-components/info-tip":38}],118:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -20873,7 +20805,7 @@ module.exports = { hidden: false }; -},{"../components/text-list-editor.jsx":135,"../renderer.jsx":165,"../util.js":168,"react":115,"react-components/info-tip":5}],188:[function(require,module,exports){ +},{"../components/text-list-editor.jsx":66,"../renderer.jsx":96,"../util.js":99,"react":44,"react-components/info-tip":38}],119:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -21870,7 +21802,7 @@ module.exports = { hidden: false }; -},{"../components/number-input.jsx":129,"../components/range-input.jsx":131,"../components/text-list-editor.jsx":135,"../util.js":168,"react":115,"react-components/info-tip":5}],189:[function(require,module,exports){ +},{"../components/number-input.jsx":60,"../components/range-input.jsx":62,"../components/text-list-editor.jsx":66,"../util.js":99,"react":44,"react-components/info-tip":38}],120:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22417,7 +22349,7 @@ module.exports = { transform: choiceTransform }; -},{"../components/prop-check-box.jsx":130,"../editor.jsx":143,"../mixins/changeable.jsx":159,"../perseus-api.jsx":162,"../renderer.jsx":165,"../util.js":168,"react":115,"react-components/button-group":3,"react-components/info-tip":5}],190:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":61,"../editor.jsx":74,"../mixins/changeable.jsx":90,"../perseus-api.jsx":93,"../renderer.jsx":96,"../util.js":99,"react":44,"react-components/button-group":36,"react-components/info-tip":38}],121:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22569,7 +22501,473 @@ module.exports = { hidden: false }; -},{"../components/prop-check-box.jsx":130,"../components/sortable.jsx":132,"../components/text-list-editor.jsx":135,"../util.js":168,"react":115,"react-components/info-tip":5}],191:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":61,"../components/sortable.jsx":63,"../components/text-list-editor.jsx":66,"../util.js":99,"react":44,"react-components/info-tip":38}],122:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require('react'); +var Changeable = require("../mixins/changeable.jsx"); +var JsonifyProps = require("../mixins/jsonify-props.jsx"); + +var TextInput = React.createClass({displayName: 'TextInput', + render: function() { + return React.DOM.input( {ref:"input", value:this.props.value || "", onChange:this.changeValue, onPaste:this.pasteValue, onKeyPress:this.keypressValue}); + }, + + pasteValue: function(e) { + e.preventDefault(); + return false; + }, + + keypressValue: function(e) { + e.preventDefault(); + return false; + }, + + focus: function() { + this.refs.input.focus(); + return true; + }, + + changeValue: function(e) { + // Chrome Speech API + if (e.target.value) { + this.props.setValue(e.target.value); + // iOS Siri Input + } else { + this.props.setValue(this.refs.input.value); + } + }, + + statics: { + displayMode: "inline-block" + } +}); + +var SpeakingBtn = React.createClass({displayName: 'SpeakingBtn', + render: function() { + return ( + React.DOM.div(null, + this.state.recognition + ? React.DOM.button( {ref:"btn_speaking", onClick:this.startRecognizeOnClick, className:"simple-button orange"}, this.state.status + ) + : React.DOM.button( {ref:"btn_speaking", onClick:this.ignoreOnClick, className:"simple-button orange"}, this.state.status + ) + ) + ); + }, + getInitialState: function() { + return {recognition: null, recognizing: false, status: ""} + }, + + startRecognize: function() { + if (this.state.recognizing == false) { + this.state.recognition.start(); + } + }, + + // prevent trigger checking answer when clicking button + startRecognizeOnClick: function(e) { + this.startRecognize(); + e.preventDefault(); + return false; + }, + + // ignore clicking event + ignoreOnClick: function(e) { + e.preventDefault(); + return false; + }, + + componentDidMount: function() { + var self = this; + var os = self.getMobileOperatingSystem(); + if (self.hasSpeechRecognition()) { + var recognition = new webkitSpeechRecognition(); + recognition.lang = 'en-US'; + recognition.continuous = false; + recognition.interimResults = true; + recognition.maxAlternatives = 20; + self.setState({recognizing: false}); + self.setState({status: "辨識"}); + recognition.onstart = function() { + self.setState({recognizing: true}); + self.setState({status: "辨識中"}); + self.props.setValue(''); + }; + recognition.onend = function() { + self.setState({recognizing: false}); + self.setState({status: "辨識完成"}); + }; + recognition.onresult = function(event) { + self.setState({recognizing: false}); + var res = ''; + for (var i = event.resultIndex; i < event.results.length; i++) { + if (event.results[i].isFinal) { + for (var j = 0; j < event.results[i].length; j++) { + if (j != 0) { + res = res + '/'; + } + res = res + event.results[i][j].transcript; + self.props.setValue(res); + } + } + } + } + self.setState({recognition: recognition}); + } else { + if (os == 'iOS') { + self.setState({status: "點選上面的框框 用Siri語音輸入"}); + } else if (os == 'Android') { + self.setState({status: "點選上面的框框 用Google語音輸入"}); + } else { + self.setState({status: "請切換至Chrome瀏覽器"}); + } + } + }, + + getMobileOperatingSystem: function() { + var userAgent = navigator.userAgent || navigator.vendor || window.opera; + if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) { + return 'iOS'; + } else if (userAgent.match(/Android/i)) { + return 'Android'; + } else { + return userAgent; + } + }, + + hasSpeechRecognition: function() { + return ('webkitSpeechRecognition' in window); + }, + + statics: { + displayMode: "inline-block" + } +}); + +var SpeakingTextInput = React.createClass({displayName: 'SpeakingTextInput', + propTypes: { + value: React.PropTypes.string + }, + + getDefaultProps: function() { + return {value: ""}; + }, + + getInitialState: function() { + return {value: this.props.value} + }, + + // compare answer when setting value to prevent generate long atempt dict + setValue: function(val) { + var correntAns = SpeakingTextInput.parseAnswer(this.props.correct); + var userAnsList = val.split("/"); + var correntIdx = -1; + for (var i = 0, len = userAnsList.length; i < len; i++) { + if (SpeakingTextInput.arrIsEqual(SpeakingTextInput.parseAnswer(userAnsList[i]), correntAns)) { + correntIdx = i; + break; + } + } + // if the answer is wrong, set value to the first answer + if(correntIdx == -1 || correntIdx >= this.props.correctIdxLessThen){ + this.setState({value: userAnsList[0]}); + this.change("value")(userAnsList[0]); + } + // else set value to the correct answer + else{ + this.setState({value: this.props.correct}); + this.change("value")(this.props.correct); + } + }, + + mixins: [ + Changeable, JsonifyProps + ], + + render: function() { + return ( + React.DOM.div(null, + TextInput( {ref:"input", value:this.state.value, setValue:this.setValue}), + SpeakingBtn( {ref:"btn_speaking", setValue:this.setValue}) + ) + ); + }, + + focus: function() { + this.refs.input.focus(); + return true; + }, + + simpleValidate: function(rubric) { + return SpeakingTextInput.validate(this.toJSON(), rubric); + }, + + statics: { + displayMode: "inline-block" + } +}); + +_.extend(SpeakingTextInput, { + parseAnswer: function(s) { + var arr = s.split(" "); + var parsedArr = []; + for (var i = 0; i < arr.length; i++) { + if (arr[i].length > 0) { + parsedArr.push(arr[i].toLowerCase()); + } + } + return parsedArr; + }, + + arrIsEqual: function(arr1, arr2) { + if (arr1.length !== arr2.length) + return false; + for (var i = 0, len = arr1.length; i < len; i++) { + if (arr1[i] !== arr2[i]) { + return false; + } + } + return true; + }, + + validate: function(state, rubric) { + var correct = SpeakingTextInput.arrIsEqual( + SpeakingTextInput.parseAnswer(rubric.correct), + SpeakingTextInput.parseAnswer(state.value) + ); + if (state.value == '') { + return {type: 'invalid', message: '請重新再唸一次!'}; + } else if (correct) { + return {type: 'points', earned: 1, total: 1, message: null}; + } else { + return {type: 'points', earned: 0, total: 1, message: null}; + }} + }); + + var SpeakingTextInputEditor = React.createClass({displayName: 'SpeakingTextInputEditor', + mixins: [ + Changeable, JsonifyProps + ], + + getDefaultProps: function() { + return {correct: "", correctIdxLessThen: 5}; + }, + + handleAnswerChange: function(event) { + this.change({correct: event.target.value}); + }, + + handleCorrectIdxChange: function(event) { + this.change({ + correctIdxLessThen: parseInt(event.target.value) + }); + }, + + render: function() { + return React.DOM.div(null, + React.DOM.div(null, + React.DOM.label(null, + "正確答案:", + React.DOM.input( {value:this.props.correct, onChange:this.handleAnswerChange, ref:"input"}) + ) + ), + React.DOM.div(null, + React.DOM.label(null, + "精準度 (1-20):", + React.DOM.input( {value:this.props.correctIdxLessThen, onChange:this.handleCorrectIdxChange, type:"integer", ref:"input"}) + ) + ) + ); + }, + + focus: function() { + this.refs.input.focus(); + return true; + } + }); + + module.exports = { + name: "speaking-text-input", + displayName: "English Speech Recognition/英文口說辨識", + widget: SpeakingTextInput, + editor: SpeakingTextInputEditor + }; + +},{"../mixins/changeable.jsx":90,"../mixins/jsonify-props.jsx":91,"react":44}],123:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require('react'); +var Changeable = require("../mixins/changeable.jsx"); +var JsonifyProps = require("../mixins/jsonify-props.jsx"); +var ResponsiveVoice = require('../../lib/responsivevoice.js'); + +var SpeakingVoice = React.createClass({displayName: 'SpeakingVoice', + componentDidMount: function() { + this.responsiveVoice = new ResponsiveVoice; + this.responsiveVoice.init(); // must manually init + }, + + speak: function() { + this.responsiveVoice.speak(this.props.voiceText, this.props.lang, { + pitch: parseFloat(this.props.pitch), + rate: parseFloat(this.props.rate), + volume: this.props.volume + }); + }, + + // prevent trigger checking answer when clicking button + speakOnClick: function(e) { + this.speak(); + e.preventDefault(); + return false; + }, + + mixins: [ + Changeable, JsonifyProps + ], + + render: function() { + return ( + React.DOM.div(null, + React.DOM.button( {className:"simple-button green", onClick:this.speakOnClick}, "發聲") + ) + ); + }, + + focus: function() { + this.refs.input.focus(); + return true; + }, + + simpleValidate: function(rubric) { + return {type: "points", earned: 1, total: 1, message: null}; + }, + + statics: { + displayMode: "inline-block" + } +}); + +var SpeakingVoiceEditor = React.createClass({displayName: 'SpeakingVoiceEditor', + mixins: [ + Changeable, JsonifyProps + ], + + getDefaultProps: function() { + return {voiceText: "", pitch: "1.0", rate: "1.0", volume: "1.0", lang: "US English Female"} + }, + + getInitialState: function() { + return {voiceText: this.props.voiceText, pitch: this.props.pitch, rate: this.props.rate, volume: this.props.volume, lang: this.props.lang} + }, + + pitchChange: function(event) { + this.change({pitch: event.target.value}); + this.setState({pitch: event.target.value}); + }, + + voiceTextChange: function(event) { + this.change({voiceText: event.target.value}); + this.setState({voiceText: event.target.value}); + }, + + rateChange: function(event) { + this.change({rate: event.target.value}); + this.setState({rate: event.target.value}); + }, + + langChange: function(event) { + this.change({lang: event.target.value}); + this.setState({lang: event.target.value}); + }, + + render: function() { + return React.DOM.div(null, + React.DOM.div(null, + React.DOM.label(null, + "內容:", + React.DOM.input( {value:this.state.voiceText, onChange:this.voiceTextChange, defaultValue:this.state.voiceText, ref:"input"}) + ) + ), + React.DOM.div(null, + React.DOM.label(null, + "速度:", + React.DOM.select( {value:this.state.rate, defaultValue:this.state.rate, onChange:this.rateChange}, + React.DOM.option( {value:"0.1"}, "0.1"), + React.DOM.option( {value:"0.2"}, "0.2"), + React.DOM.option( {value:"0.3"}, "0.3"), + React.DOM.option( {value:"0.4"}, "0.4"), + React.DOM.option( {value:"0.5"}, "0.5"), + React.DOM.option( {value:"0.6"}, "0.6"), + React.DOM.option( {value:"0.7"}, "0.7"), + React.DOM.option( {value:"0.8"}, "0.8"), + React.DOM.option( {value:"0.9"}, "0.9"), + React.DOM.option( {value:"1.0"}, "1.0"), + React.DOM.option( {value:"1.1"}, "1.1"), + React.DOM.option( {value:"1.2"}, "1.2"), + React.DOM.option( {value:"1.3"}, "1.3"), + React.DOM.option( {value:"1.4"}, "1.4"), + React.DOM.option( {value:"1.5"}, "1.5") + ) + ) + ), + React.DOM.div(null, + React.DOM.label(null, + "音調:", + React.DOM.select( {value:this.state.pitch, defaultValue:this.state.pitch, onChange:this.pitchChange}, + React.DOM.option( {value:"0"}, "0"), + React.DOM.option( {value:"0.1"}, "0.1"), + React.DOM.option( {value:"0.2"}, "0.2"), + React.DOM.option( {value:"0.3"}, "0.3"), + React.DOM.option( {value:"0.4"}, "0.4"), + React.DOM.option( {value:"0.5"}, "0.5"), + React.DOM.option( {value:"0.6"}, "0.6"), + React.DOM.option( {value:"0.7"}, "0.7"), + React.DOM.option( {value:"0.8"}, "0.8"), + React.DOM.option( {value:"0.9"}, "0.9"), + React.DOM.option( {value:"1.0"}, "1.0"), + React.DOM.option( {value:"1.1"}, "1.1"), + React.DOM.option( {value:"1.2"}, "1.2"), + React.DOM.option( {value:"1.3"}, "1.3"), + React.DOM.option( {value:"1.4"}, "1.4"), + React.DOM.option( {value:"1.5"}, "1.5"), + React.DOM.option( {value:"1.6"}, "1.6"), + React.DOM.option( {value:"1.7"}, "1.7"), + React.DOM.option( {value:"1.8"}, "1.8"), + React.DOM.option( {value:"1.9"}, "1.9"), + React.DOM.option( {value:"2"}, "2") + ) + ) + ), + React.DOM.div(null, + React.DOM.label(null, + "語言:", + React.DOM.select( {value:this.state.lang, defaultValue:this.state.lang, onChange:this.langChange}, + React.DOM.option( {value:"UK English Female"}, "UK English Female"), + React.DOM.option( {value:"UK English Male"}, "UK English Male"), + React.DOM.option( {value:"US English Female"}, "US English Female") + ) + ) + ) + ); + }, + + focus: function() { + this.refs.input.focus(); + return true; + } +}); + +module.exports = { + name: "speaking-voice", + displayName: "English Text to Speech/英文發音工具", + widget: SpeakingVoice, + hidden: false, + editor: SpeakingVoiceEditor +}; + +},{"../../lib/responsivevoice.js":2,"../mixins/changeable.jsx":90,"../mixins/jsonify-props.jsx":91,"react":44}],124:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22889,7 +23287,7 @@ module.exports = { hidden: false }; -},{"../editor.jsx":143,"../renderer.jsx":165,"../util.js":168,"react":115,"react-components/info-tip":5}],192:[function(require,module,exports){ +},{"../editor.jsx":74,"../renderer.jsx":96,"../util.js":99,"react":44,"react-components/info-tip":38}],125:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -25393,5 +25791,5 @@ module.exports = { hidden: false }; -},{"../components/graph-settings.jsx":121,"../components/graph.jsx":122,"../components/number-input.jsx":129,"../components/prop-check-box.jsx":130,"../tex.jsx":167,"../util.js":168,"react":115,"react-components/info-tip":5}]},{},[163])(163) +},{"../components/graph-settings.jsx":52,"../components/graph.jsx":53,"../components/number-input.jsx":60,"../components/prop-check-box.jsx":61,"../tex.jsx":98,"../util.js":99,"react":44,"react-components/info-tip":38}]},{},[94])(94) }); \ No newline at end of file diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index 2d20a73f62..45e1084f9a 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -154,9 +154,27 @@ var SpeakingTextInput = React.createClass({ return {value: this.props.value} }, + // compare answer when setting value to prevent generate long atempt dict setValue: function(val) { - this.setState({value: val}); - this.change("value")(val); + var correntAns = SpeakingTextInput.parseAnswer(this.props.correct); + var userAnsList = val.split("/"); + var correntIdx = -1; + for (var i = 0, len = userAnsList.length; i < len; i++) { + if (SpeakingTextInput.arrIsEqual(SpeakingTextInput.parseAnswer(userAnsList[i]), correntAns)) { + correntIdx = i; + break; + } + } + // if the answer is wrong, set value to the first answer + if(correntIdx == -1 || correntIdx >= this.props.correctIdxLessThen){ + this.setState({value: userAnsList[0]}); + this.change("value")(userAnsList[0]); + } + // else set value to the correct answer + else{ + this.setState({value: this.props.correct}); + this.change("value")(this.props.correct); + } }, mixins: [ @@ -210,20 +228,13 @@ _.extend(SpeakingTextInput, { }, validate: function(state, rubric) { - var correntAns = SpeakingTextInput.parseAnswer(rubric.correct); - var userAnsList = state.value.split("/"); - var correntIdx = -1; - for (var i = 0, len = userAnsList.length; i < len; i++) { - if (SpeakingTextInput.arrIsEqual(SpeakingTextInput.parseAnswer(userAnsList[i]), correntAns)) { - correntIdx = i; - break; - } - } + var correct = SpeakingTextInput.arrIsEqual( + SpeakingTextInput.parseAnswer(rubric.correct), + SpeakingTextInput.parseAnswer(state.value) + ); if (state.value == '') { return {type: 'invalid', message: '請重新再唸一次!'}; - } else if (correntIdx == -1) { - return {type: 'points', earned: 0, total: 1, message: null}; - } else if (correntIdx < state.correctIdxLessThen) { + } else if (correct) { return {type: 'points', earned: 1, total: 1, message: null}; } else { return {type: 'points', earned: 0, total: 1, message: null}; From d231d6efaf9dfd50d50c0dc224da642006c5171e Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Mon, 1 Aug 2016 04:11:10 +0000 Subject: [PATCH 109/156] fix some ux stuff --- build/perseus-1.js | 13 +++++++------ src/widgets/speaking-text-input.jsx | 11 ++++++----- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index 59c462e787..24dea157f7 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,5 +1,5 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 75850f00927e94ff8064183342301cd43199c300 +// commit 73c1a4743aed32fd1cdcc55f6d1fbd335256476a // branch english_speaking_perseus (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o{this.state.status} - : }
); @@ -69,7 +69,8 @@ var SpeakingBtn = React.createClass({ }, // ignore clicking event - ignoreOnClick: function(e) { + resetOnClick: function(e) { + this.props.setValue(''); e.preventDefault(); return false; }, @@ -92,7 +93,7 @@ var SpeakingBtn = React.createClass({ }; recognition.onend = function() { self.setState({recognizing: false}); - self.setState({status: "辨識完成"}); + self.setState({status: "重新辨識"}); }; recognition.onresult = function(event) { self.setState({recognizing: false}); @@ -112,9 +113,9 @@ var SpeakingBtn = React.createClass({ self.setState({recognition: recognition}); } else { if (os == 'iOS') { - self.setState({status: "點選上面的框框 用Siri語音輸入"}); + self.setState({status: "點選上面的框框 用Siri語音輸入/清除"}); } else if (os == 'Android') { - self.setState({status: "點選上面的框框 用Google語音輸入"}); + self.setState({status: "點選上面的框框 用Google語音輸入/清除"}); } else { self.setState({status: "請切換至Chrome瀏覽器"}); } From 038b93a015d9f128087c4a986564fd411dcc0cd0 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Mon, 1 Aug 2016 07:08:56 +0000 Subject: [PATCH 110/156] move recognition to this instead of state --- src/widgets/speaking-text-input.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index 0a80ed9f56..30fe4f6b09 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -43,7 +43,7 @@ var SpeakingBtn = React.createClass({ render: function() { return (
- {this.state.recognition + {this.recognition ? : - : }
); @@ -185,17 +174,12 @@ var SpeakingTextInput = React.createClass({ render: function() { return (
- - + +
); }, - focus: function() { - this.refs.input.focus(); - return true; - }, - simpleValidate: function(rubric) { return SpeakingTextInput.validate(this.toJSON(), rubric); }, @@ -266,22 +250,17 @@ _.extend(SpeakingTextInput, {
; }, - - focus: function() { - this.refs.input.focus(); - return true; - } }); module.exports = { diff --git a/src/widgets/speaking-voice.jsx b/src/widgets/speaking-voice.jsx index cbdcb34220..3988f816e9 100644 --- a/src/widgets/speaking-voice.jsx +++ b/src/widgets/speaking-voice.jsx @@ -38,11 +38,6 @@ var SpeakingVoice = React.createClass({ ); }, - focus: function() { - this.refs.input.focus(); - return true; - }, - simpleValidate: function(rubric) { return {type: "points", earned: 1, total: 1, message: null}; }, @@ -90,7 +85,7 @@ var SpeakingVoiceEditor = React.createClass({
@@ -154,11 +149,6 @@ var SpeakingVoiceEditor = React.createClass({
; - }, - - focus: function() { - this.refs.input.focus(); - return true; } }); From 1fe75c52f9c7af5a4da66b8f3915e0df70d867ad Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Mon, 1 Aug 2016 08:16:43 +0000 Subject: [PATCH 112/156] alter componentDidMount -> componentWillMount to prevent rendering bug --- src/widgets/speaking-text-input.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index 18a60be62e..2c235fdddc 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -64,7 +64,7 @@ var SpeakingBtn = React.createClass({ return false; }, - componentDidMount: function() { + componentWillMount: function() { var self = this; var os = self.getMobileOperatingSystem(); if (self.hasSpeechRecognition()) { From 8a3d6108986125acaee8baf19fa058e32d02613c Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Wed, 3 Aug 2016 03:42:00 +0000 Subject: [PATCH 113/156] fix ui --- package.json | 6 +++- src/widgets/speaking-text-input.jsx | 45 +++++++++++++++++++++++------ src/widgets/speaking-voice.jsx | 7 ++++- 3 files changed, 47 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 872f9651dc..4379c48135 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "react-components": "0.1.1", "react-tools": "0.10.0", "reactiscriptsixify": "~0.8.2", - "requirejs": "~2.1.11" + "requirejs": "~2.1.11", + "classnames": "2.2.5" }, "repository": { "type": "git", @@ -35,5 +36,8 @@ "unmockedModulePathPatterns": [ "" ] + }, + "dependencies": { + "classnames": "^2.2.5" } } diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index 2c235fdddc..8615240c01 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -3,10 +3,15 @@ var React = require('react'); var Changeable = require("../mixins/changeable.jsx"); var JsonifyProps = require("../mixins/jsonify-props.jsx"); +var classNames = require('classnames'); + +var textInputStyle = { + marginBottom: 10 +}; var TextInput = React.createClass({ render: function() { - return ; + return ; }, pasteValue: function(e) { @@ -28,18 +33,43 @@ var TextInput = React.createClass({ } }); +var infoStyle = { + background: "#3498DB !important", + color: "#fff !important", + textShadow: "0px 0px #fff !important", + marginLeft: 10 +} + +var iconButtonStyle = { + width: "60px", + lineHeight: 2, +} + var SpeakingBtn = React.createClass({ render: function() { + var btnIconCLass = classNames({ + 'fa fa-2x': true, + 'fa-microphone': !this.state.recognizing, + 'fa fa-spinner fa-spin fa-fw': this.state.recognizing + }); return (
{this.recognition - ? - : } + :
+ + {this.state.status} +
+ }
); }, + // + getInitialState: function() { return {recognizing: false, status: ""} }, @@ -74,15 +104,12 @@ var SpeakingBtn = React.createClass({ recognition.interimResults = true; recognition.maxAlternatives = 20; self.setState({recognizing: false}); - self.setState({status: "辨識"}); recognition.onstart = function() { self.setState({recognizing: true}); - self.setState({status: "辨識中"}); self.props.setValue(''); }; recognition.onend = function() { self.setState({recognizing: false}); - self.setState({status: "重新辨識"}); }; recognition.onresult = function(event) { self.setState({recognizing: false}); @@ -102,9 +129,9 @@ var SpeakingBtn = React.createClass({ self.recognition = recognition; } else { if (os == 'iOS') { - self.setState({status: "點選上面的框框 用Siri語音輸入/清除"}); + self.setState({status: "點選上面的框框 用Siri語音輸入"}); } else if (os == 'Android') { - self.setState({status: "點選上面的框框 用Google語音輸入/清除"}); + self.setState({status: "點選上面的框框 用Google語音輸入"}); } else { self.setState({status: "請切換至Chrome瀏覽器"}); } diff --git a/src/widgets/speaking-voice.jsx b/src/widgets/speaking-voice.jsx index 3988f816e9..9336218d36 100644 --- a/src/widgets/speaking-voice.jsx +++ b/src/widgets/speaking-voice.jsx @@ -5,6 +5,11 @@ var Changeable = require("../mixins/changeable.jsx"); var JsonifyProps = require("../mixins/jsonify-props.jsx"); var ResponsiveVoice = require('../../lib/responsivevoice.js'); +var iconButtonStyle = { + width: "60px", + lineHeight: 2, +} + var SpeakingVoice = React.createClass({ componentDidMount: function() { this.responsiveVoice = new ResponsiveVoice; @@ -33,7 +38,7 @@ var SpeakingVoice = React.createClass({ render: function() { return (
- +
); }, From d41b89fcaca275db0684bdf8f0400e2b6bf3569c Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Wed, 3 Aug 2016 08:23:08 +0000 Subject: [PATCH 114/156] fix bugs --- src/widgets/speaking-text-input.jsx | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index 8615240c01..e4fa48a992 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -25,7 +25,13 @@ var TextInput = React.createClass({ }, changeValue: function(e) { - this.props.setValue(this.refs.input.value); + // Chrome Speech API + if (e.target.value) { + this.props.setValue(e.target.value); + // iOS Siri Input + } else { + this.props.setValue(this.refs.input.value); + } }, statics: { @@ -37,7 +43,17 @@ var infoStyle = { background: "#3498DB !important", color: "#fff !important", textShadow: "0px 0px #fff !important", - marginLeft: 10 + marginLeft: 10, + border: '1px solid #ccc', + borderBottom: '1px solid #bbb', + borderRadius: '5px', + backgroundRepeat: 'repeat-x', + cursor: 'pointer !important', + fontFamily: 'inherit', + lineHeight: '22px', + padding: '5px 10px', + position: 'relative', + textDecoration: 'none !important' } var iconButtonStyle = { @@ -60,9 +76,9 @@ var SpeakingBtn = React.createClass({ :
- {this.state.status} + {this.state.status}
}
@@ -173,6 +189,7 @@ var SpeakingTextInput = React.createClass({ // compare answer when setting value to prevent generate long atempt dict setValue: function(val) { + val = val || ''; var correntAns = SpeakingTextInput.parseAnswer(this.props.correct); var userAnsList = val.split("/"); var correntIdx = -1; From 9e74dfd5e4b62ddd313f2f92f992c6385273ae36 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Wed, 3 Aug 2016 09:03:27 +0000 Subject: [PATCH 115/156] add stop function --- src/widgets/speaking-text-input.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index e4fa48a992..1a43420785 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -94,6 +94,9 @@ var SpeakingBtn = React.createClass({ if (this.state.recognizing == false) { this.recognition.start(); } + else{ + this.recognition.stop(); + } }, // prevent trigger checking answer when clicking button @@ -128,7 +131,6 @@ var SpeakingBtn = React.createClass({ self.setState({recognizing: false}); }; recognition.onresult = function(event) { - self.setState({recognizing: false}); var res = ''; for (var i = event.resultIndex; i < event.results.length; i++) { if (event.results[i].isFinal) { From 8c2e3005c0106944ba689c361cb80363dabe5f89 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Thu, 4 Aug 2016 03:08:36 +0000 Subject: [PATCH 116/156] add css --- src/widgets/speaking-text-input.jsx | 12 +++++++++--- src/widgets/speaking-voice.jsx | 7 ++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index 1a43420785..d52b86fb61 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -6,7 +6,8 @@ var JsonifyProps = require("../mixins/jsonify-props.jsx"); var classNames = require('classnames'); var textInputStyle = { - marginBottom: 10 + marginTop: "5px", + marginBottom: "5px", }; var TextInput = React.createClass({ @@ -61,6 +62,11 @@ var iconButtonStyle = { lineHeight: 2, } +var buttonStyle = { + marginTop: "5px", + marginBottom: "5px", +} + var SpeakingBtn = React.createClass({ render: function() { var btnIconCLass = classNames({ @@ -71,11 +77,11 @@ var SpeakingBtn = React.createClass({ return (
{this.recognition - ? :
- {this.state.status} diff --git a/src/widgets/speaking-voice.jsx b/src/widgets/speaking-voice.jsx index 9336218d36..af685f6305 100644 --- a/src/widgets/speaking-voice.jsx +++ b/src/widgets/speaking-voice.jsx @@ -10,6 +10,11 @@ var iconButtonStyle = { lineHeight: 2, } +var buttonStyle = { + marginTop: "5px", + marginBottom: "5px", +} + var SpeakingVoice = React.createClass({ componentDidMount: function() { this.responsiveVoice = new ResponsiveVoice; @@ -38,7 +43,7 @@ var SpeakingVoice = React.createClass({ render: function() { return (
- +
); }, From e7fc422f7066af2bf5f2755b1c112cda22f88a0e Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Thu, 4 Aug 2016 04:34:15 +0000 Subject: [PATCH 117/156] fix css --- src/widgets/speaking-text-input.jsx | 21 ++++++++++++++------- src/widgets/speaking-voice.jsx | 4 ++-- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/widgets/speaking-text-input.jsx b/src/widgets/speaking-text-input.jsx index d52b86fb61..8409e9c070 100644 --- a/src/widgets/speaking-text-input.jsx +++ b/src/widgets/speaking-text-input.jsx @@ -6,8 +6,12 @@ var JsonifyProps = require("../mixins/jsonify-props.jsx"); var classNames = require('classnames'); var textInputStyle = { - marginTop: "5px", - marginBottom: "5px", + fontSize: "25px", + marginRight: "5px", + paddingTop: "15px", + paddingBottom: "15px", + marginTop: "15px", + marginBottom: "15px", }; var TextInput = React.createClass({ @@ -58,13 +62,16 @@ var infoStyle = { } var iconButtonStyle = { - width: "60px", - lineHeight: 2, + width: "45px", + lineHeight: 1.5, } var buttonStyle = { - marginTop: "5px", - marginBottom: "5px", + +} + +var inlineStyle = { + display: 'inline-block' } var SpeakingBtn = React.createClass({ @@ -75,7 +82,7 @@ var SpeakingBtn = React.createClass({ 'fa fa-spinner fa-spin fa-fw': this.state.recognizing }); return ( -
+
{this.recognition ?
; - } - - var valid = this.isValid(); - return
-
-
- {' '}invalid number line configuration{' '} -
- {inequalityControls} -
; - }, - - handleReverse: function() { - this.props.onChange({rel: reverseRel[this.props.rel]}); - }, - - handleToggleStrict: function() { - this.props.onChange({rel: toggleStrictRel[this.props.rel]}); - }, - - componentDidMount: function() { - this.addGraphie(); - }, - - componentDidUpdate: function() { - // Use jQuery to remove so event handlers don't leak - var node = this.refs.graphieDiv.getDOMNode(); - $(node).children().remove(); - - this.addGraphie(); - }, - - _label: function(value) { - var graphie = this.graphie; - var labelStyle = this.props.labelStyle; - - // TODO(jack): Find out if any exercises have "decimal ticks" set, - // and if so, re-save them and remove this check. - if (labelStyle === "decimal" || labelStyle === "decimal ticks") { - graphie.label([value, -0.53], value, "center"); - } else if (labelStyle === "improper") { - var frac = KhanUtil.toFraction(value); - graphie.label([value, -0.53], - formatImproper(frac[0], frac[1]), "center"); - } else if (labelStyle === "mixed") { - var frac = KhanUtil.toFraction(value); - graphie.label([value, -0.53], - formatMixed(frac[0], frac[1]), "center"); - } - }, - - addGraphie: function() { - var self = this; - var graphie = this.graphie = KhanUtil.createGraphie( - this.refs.graphieDiv.getDOMNode()); - // Ensure a sane configuration to avoid infinite loops - if (!this.isValid()) { - return; - } - - var range = this.props.range; - var tickStep = this.props.tickStep; - var scale = 400 / (range[1] - range[0]); - - graphie.init({ - range: [[range[0] - 30 / scale, - range[1] + 30 / scale], - [-1, 1]], - scale: [scale, 40] - }); - graphie.addMouseLayer({ - allowScratchpad: true - }); - - // Line - - graphie.line([range[0] - (25 / scale), 0], - [range[1] + (25 / scale), 0], { - arrows: "->" - }); - graphie.line([range[1] + (25 / scale), 0], - [range[0] - (25 / scale), 0], { - arrows: "->" - }); - - // Ticks - var labelStyle = this.props.labelStyle; - for (var x = Math.ceil(range[0] / tickStep) * tickStep; x <= range[1]; - x += tickStep) { - graphie.line([x, -0.2], [x, 0.2]); - - // TODO(jack): Find out if any exercises have "decimal ticks" set, - // and if so, re-save them and remove this check. - if (this.props.labelTicks || labelStyle === "decimal ticks") { - this._label(x); - } - } - - graphie.style({ - stroke: KhanUtil.INTERACTIVE, - strokeWidth: 3.5 - }, function() { - graphie.line([range[0], -0.2], [range[0], 0.2]); - graphie.line([range[1], -0.2], [range[1], 0.2]); - if (range[0] < 0 && 0 < range[1]) { - graphie.line([0, -0.2], [0, 0.2]); - } - }); - - graphie.style({color: KhanUtil.INTERACTIVE}, function() { - self._label(range[0]); - self._label(range[1]); - if (range[0] < 0 && 0 < range[1] && !self.props.labelTicks) { - graphie.label([0, -0.53], "0", "center"); - } - }); - - // Point - - var isInequality = this.props.isInequality; - var rel = this.props.rel; - - var pointSize; - var pointStyle; - var highlightStyle; - if (isInequality && (rel === "lt" || rel === "gt")) { - pointSize = 5; - pointStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil._BACKGROUND, - "stroke-width": 3 - }; - highlightStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil._BACKGROUND, - "stroke-width": 4 - }; - } else { - pointSize = 4; - pointStyle = highlightStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil.INTERACTING - }; - } - - var x = Math.min(Math.max(range[0], this.props.pointX), range[1]); - var point = this.point = graphie.addMovablePoint({ - pointSize: pointSize, - coord: [x, 0], - snapX: this.props.tickStep / this.props.snapDivisions, - constraints: { - constrainY: true - }, - normalStyle: pointStyle, - highlightStyle: highlightStyle - }); - point.onMove = function(x, y) { - x = Math.min(Math.max(range[0], x), range[1]); - updateInequality(x, y); - return [x, y]; - }; - point.onMoveEnd = (x, y) => { - this.props.onChange({pointX: x}); - }; - - // Inequality line - - var inequalityLine; - updateInequality(x, 0); - - function updateInequality(px, py) { - if (inequalityLine) { - inequalityLine.remove(); - inequalityLine = null; - } - if (isInequality) { - var end; - if (rel === "ge" || rel === "gt") { - end = [range[1] + (26 / scale), 0]; - } else { - end = [range[0] - (26 / scale), 0]; - } - inequalityLine = graphie.line( - [px, py], - end, - { - arrows: "->", - stroke: KhanUtil.INTERACTIVE, - strokeWidth: 3.5 - } - ); - point.toFront(); - } - } - }, - - toJSON: function() { - return { - pointX: this.props.pointX, - rel: this.props.isInequality ? this.props.rel : "eq" - }; - }, - - simpleValidate: function(rubric) { - return InteractiveNumberLine.validate(this.toJSON(), rubric); - }, - - focus: $.noop, - - statics: { - displayMode: "block" - } -}); - - -_.extend(InteractiveNumberLine, { - validate: function(state, rubric) { - var range = rubric.range; - var start = Math.min(Math.max(range[0], 0), range[1]); - var startRel = rubric.isInequality ? "ge" : "eq"; - var correctRel = rubric.correctRel || "eq"; - - if (eq(state.pointX, rubric.correctX || 0) && - correctRel === state.rel) { - return { - type: "points", - earned: 1, - total: 1, - message: null - }; - } else if (state.pointX === start && state.rel === startRel) { - // We're where we started. - return { - type: "invalid", - message: null - }; - } else { - return { - type: "points", - earned: 0, - total: 1, - message: null - }; - } - } -}); - - -var InteractiveNumberLineEditor = React.createClass({ - getDefaultProps: function() { - return { - range: [0, 10], - labelStyle: "decimal", - labelTicks: false, - tickStep: 1, - snapDivisions: 4, - correctRel: "eq", - correctX: 0 - }; - }, - - render: function() { - return
-
- - -

利用下方的「標籤格式」來改變最大與最小 x 的標籤顯示格式。

-

- - {' '}正確答案:{' '} - - -

-
- - -

每一個刻度都會標上刻度線。

-

- - -

確保分割數量足夠讓使用者回答問題,即答案會落在某分割的位置。

-
-
; - }, - - onRangeBlur: function(i, e) { - var x = Util.firstNumericalParse(e.target.value) || 0; - e.target.value = x; - - var range = this.props.range.slice(); - range[i] = x; - this.props.onChange({range: range}); - }, - - onChange: function(key, e) { - var opts = {}; - opts[key] = e.target.value; - this.props.onChange(opts); - }, - - onNumBlur: function(key, e) { - var x = Util.firstNumericalParse(e.target.value) || 0; - e.target.value = x; - - var opts = {}; - opts[key] = x; - this.props.onChange(opts); - }, - - toJSON: function() { - return { - range: this.props.range, - labelStyle: this.props.labelStyle, - labelTicks: this.props.labelTicks, - tickStep: this.props.tickStep, - snapDivisions: this.props.snapDivisions, - correctRel: this.props.correctRel, - isInequality: this.props.correctRel !== "eq", - correctX: this.props.correctX - }; - } -}); - -module.exports = { - name: "interactive-number-line", - displayName: "Interactive-number-line/互動式數線", - hidden: false, - widget: InteractiveNumberLine, - editor: InteractiveNumberLineEditor -}; +/** @jsx React.DOM */ + +var InfoTip = require("react-components/info-tip"); +var PropCheckBox = require("../components/prop-check-box.jsx"); +var Util = require("../util.js"); + +function eq(x, y) { + return Math.abs(x - y) < 1e-9; +} + +var reverseRel = { + ge: "le", + gt: "lt", + le: "ge", + lt: "gt" +}; + +var toggleStrictRel = { + ge: "gt", + gt: "ge", + le: "lt", + lt: "le" +}; + +function formatImproper(n, d) { + if (d === 1) { + return "" + n; + } else { + return n + "/" + d; + } +} + +function formatMixed(n, d) { + if (n < 0) { + return "-" + formatMixed(-n, d); + } + var w = Math.floor(n / d); + if (w === 0) { + return formatImproper(n, d); + } else if (n - w * d === 0) { + return "" + w; + } else { + return w + "\\:" + formatImproper(n - w * d, d); + } +} + +var InteractiveNumberLine = React.createClass({ + getDefaultProps: function() { + return { + labelStyle: "decimal", + labelTicks: false, + isInequality: false, + pointX: 0, + rel: "ge" + }; + }, + + isValid: function() { + return this.props.range[0] < this.props.range[1] && + 0 < this.props.tickStep && + 0 < this.props.snapDivisions; + }, + + render: function() { + var inequalityControls; + if (this.props.isInequality) { + inequalityControls =
+ + +
; + } + + var valid = this.isValid(); + return
+
+
+ {' '}invalid number line configuration{' '} +
+ {inequalityControls} +
; + }, + + handleReverse: function() { + this.props.onChange({rel: reverseRel[this.props.rel]}); + }, + + handleToggleStrict: function() { + this.props.onChange({rel: toggleStrictRel[this.props.rel]}); + }, + + componentDidMount: function() { + this.addGraphie(); + }, + + componentDidUpdate: function() { + // Use jQuery to remove so event handlers don't leak + var node = this.refs.graphieDiv.getDOMNode(); + $(node).children().remove(); + + this.addGraphie(); + }, + + _label: function(value) { + var graphie = this.graphie; + var labelStyle = this.props.labelStyle; + + // TODO(jack): Find out if any exercises have "decimal ticks" set, + // and if so, re-save them and remove this check. + if (labelStyle === "decimal" || labelStyle === "decimal ticks") { + graphie.label([value, -0.53], value, "center"); + } else if (labelStyle === "improper") { + var frac = KhanUtil.toFraction(value); + graphie.label([value, -0.53], + formatImproper(frac[0], frac[1]), "center"); + } else if (labelStyle === "mixed") { + var frac = KhanUtil.toFraction(value); + graphie.label([value, -0.53], + formatMixed(frac[0], frac[1]), "center"); + } + }, + + addGraphie: function() { + var self = this; + var graphie = this.graphie = KhanUtil.createGraphie( + this.refs.graphieDiv.getDOMNode()); + // Ensure a sane configuration to avoid infinite loops + if (!this.isValid()) { + return; + } + + var range = this.props.range; + var tickStep = this.props.tickStep; + var scale = 400 / (range[1] - range[0]); + + graphie.init({ + range: [[range[0] - 30 / scale, + range[1] + 30 / scale], + [-1, 1]], + scale: [scale, 40] + }); + graphie.addMouseLayer({ + allowScratchpad: true + }); + + // Line + + graphie.line([range[0] - (25 / scale), 0], + [range[1] + (25 / scale), 0], { + arrows: "->" + }); + graphie.line([range[1] + (25 / scale), 0], + [range[0] - (25 / scale), 0], { + arrows: "->" + }); + + // Ticks + var labelStyle = this.props.labelStyle; + for (var x = Math.ceil(range[0] / tickStep) * tickStep; x <= range[1]; + x += tickStep) { + graphie.line([x, -0.2], [x, 0.2]); + + // TODO(jack): Find out if any exercises have "decimal ticks" set, + // and if so, re-save them and remove this check. + if (this.props.labelTicks || labelStyle === "decimal ticks") { + this._label(x); + } + } + + graphie.style({ + stroke: KhanUtil.INTERACTIVE, + strokeWidth: 3.5 + }, function() { + graphie.line([range[0], -0.2], [range[0], 0.2]); + graphie.line([range[1], -0.2], [range[1], 0.2]); + if (range[0] < 0 && 0 < range[1]) { + graphie.line([0, -0.2], [0, 0.2]); + } + }); + + graphie.style({color: KhanUtil.INTERACTIVE}, function() { + self._label(range[0]); + self._label(range[1]); + if (range[0] < 0 && 0 < range[1] && !self.props.labelTicks) { + graphie.label([0, -0.53], "0", "center"); + } + }); + + // Point + + var isInequality = this.props.isInequality; + var rel = this.props.rel; + + var pointSize; + var pointStyle; + var highlightStyle; + if (isInequality && (rel === "lt" || rel === "gt")) { + pointSize = 5; + pointStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil._BACKGROUND, + "stroke-width": 3 + }; + highlightStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil._BACKGROUND, + "stroke-width": 4 + }; + } else { + pointSize = 4; + pointStyle = highlightStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil.INTERACTING + }; + } + + var x = Math.min(Math.max(range[0], this.props.pointX), range[1]); + var point = this.point = graphie.addMovablePoint({ + pointSize: pointSize, + coord: [x, 0], + snapX: this.props.tickStep / this.props.snapDivisions, + constraints: { + constrainY: true + }, + normalStyle: pointStyle, + highlightStyle: highlightStyle + }); + point.onMove = function(x, y) { + x = Math.min(Math.max(range[0], x), range[1]); + updateInequality(x, y); + return [x, y]; + }; + point.onMoveEnd = (x, y) => { + this.props.onChange({pointX: x}); + }; + + // Inequality line + + var inequalityLine; + updateInequality(x, 0); + + function updateInequality(px, py) { + if (inequalityLine) { + inequalityLine.remove(); + inequalityLine = null; + } + if (isInequality) { + var end; + if (rel === "ge" || rel === "gt") { + end = [range[1] + (26 / scale), 0]; + } else { + end = [range[0] - (26 / scale), 0]; + } + inequalityLine = graphie.line( + [px, py], + end, + { + arrows: "->", + stroke: KhanUtil.INTERACTIVE, + strokeWidth: 3.5 + } + ); + point.toFront(); + } + } + }, + + toJSON: function() { + return { + pointX: this.props.pointX, + rel: this.props.isInequality ? this.props.rel : "eq" + }; + }, + + simpleValidate: function(rubric) { + return InteractiveNumberLine.validate(this.toJSON(), rubric); + }, + + focus: $.noop, + + statics: { + displayMode: "block" + } +}); + + +_.extend(InteractiveNumberLine, { + validate: function(state, rubric) { + var range = rubric.range; + var start = Math.min(Math.max(range[0], 0), range[1]); + var startRel = rubric.isInequality ? "ge" : "eq"; + var correctRel = rubric.correctRel || "eq"; + + if (eq(state.pointX, rubric.correctX || 0) && + correctRel === state.rel) { + return { + type: "points", + earned: 1, + total: 1, + message: null + }; + } else if (state.pointX === start && state.rel === startRel) { + // We're where we started. + return { + type: "invalid", + message: null + }; + } else { + return { + type: "points", + earned: 0, + total: 1, + message: null + }; + } + } +}); + + +var InteractiveNumberLineEditor = React.createClass({ + getDefaultProps: function() { + return { + range: [0, 10], + labelStyle: "decimal", + labelTicks: false, + tickStep: 1, + snapDivisions: 4, + correctRel: "eq", + correctX: 0 + }; + }, + + render: function() { + return
+
+ + +

利用下方的「標籤格式」來改變最大與最小 x 的標籤顯示格式。

+

+ + {' '}正確答案:{' '} + + +

+
+ + +

每一個刻度都會標上刻度線。

+

+ + +

確保分割數量足夠讓使用者回答問題,即答案會落在某分割的位置。

+
+
; + }, + + onRangeBlur: function(i, e) { + var x = Util.firstNumericalParse(e.target.value) || 0; + e.target.value = x; + + var range = this.props.range.slice(); + range[i] = x; + this.props.onChange({range: range}); + }, + + onChange: function(key, e) { + var opts = {}; + opts[key] = e.target.value; + this.props.onChange(opts); + }, + + onNumBlur: function(key, e) { + var x = Util.firstNumericalParse(e.target.value) || 0; + e.target.value = x; + + var opts = {}; + opts[key] = x; + this.props.onChange(opts); + }, + + toJSON: function() { + return { + range: this.props.range, + labelStyle: this.props.labelStyle, + labelTicks: this.props.labelTicks, + tickStep: this.props.tickStep, + snapDivisions: this.props.snapDivisions, + correctRel: this.props.correctRel, + isInequality: this.props.correctRel !== "eq", + correctX: this.props.correctX + }; + } +}); + +module.exports = { + name: "interactive-number-line", + displayName: "Interactive-number-line/互動式數線", + hidden: false, + widget: InteractiveNumberLine, + editor: InteractiveNumberLineEditor +}; From 64eee35d5c128bae96b05216f62fae947a620601 Mon Sep 17 00:00:00 2001 From: Giddy Lin Date: Wed, 17 Aug 2016 17:19:25 +0800 Subject: [PATCH 120/156] change defaultValue to value --- src/components/graph-settings.jsx | 2 +- src/widgets/measurer.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/graph-settings.jsx b/src/components/graph-settings.jsx index 6a1a05c64c..dc432b6319 100644 --- a/src/components/graph-settings.jsx +++ b/src/components/graph-settings.jsx @@ -123,7 +123,7 @@ var GraphSettings = React.createClass({ diff --git a/src/widgets/measurer.jsx b/src/widgets/measurer.jsx index 2dd745a3ea..cc232a51cb 100644 --- a/src/widgets/measurer.jsx +++ b/src/widgets/measurer.jsx @@ -208,7 +208,7 @@ var MeasurerEditor = React.createClass({

插入圖片的連結網址。例如,先將圖片上傳至 http://imgur.com ,再分享其圖片網址 (Direct Link)。

From 4687141ae2b3649dccaafb8ec87513b0bd9018d0 Mon Sep 17 00:00:00 2001 From: Giddy Lin Date: Wed, 17 Aug 2016 17:47:04 +0800 Subject: [PATCH 121/156] fix input --- src/components/graph-settings.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/graph-settings.jsx b/src/components/graph-settings.jsx index dc432b6319..050b6b5282 100644 --- a/src/components/graph-settings.jsx +++ b/src/components/graph-settings.jsx @@ -124,6 +124,7 @@ var GraphSettings = React.createClass({ className="graph-settings-background-url" ref="bg-url" value={this.props.backgroundImage.url} + onChange={this.changeBackgroundUrl} onKeyPress={this.changeBackgroundUrl} onBlur={this.changeBackgroundUrl} /> From 36fd8a7f7f124040a27e30bcbe020319ff1a01dd Mon Sep 17 00:00:00 2001 From: Giddy Lin Date: Thu, 18 Aug 2016 12:47:36 +0800 Subject: [PATCH 122/156] blurinput --- src/components/graph-settings.jsx | 56 ++++++++++++++----------------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/src/components/graph-settings.jsx b/src/components/graph-settings.jsx index 050b6b5282..9eecffcaa8 100644 --- a/src/components/graph-settings.jsx +++ b/src/components/graph-settings.jsx @@ -9,6 +9,7 @@ var NumberInput = require("../components/number-input.jsx"); var PropCheckBox = require("../components/prop-check-box.jsx"); var RangeInput = require("../components/range-input.jsx"); var Util = require("../util.js"); +var BlurInput = require("react-components/blur-input"); var defaultBoxSize = 400; var defaultBackgroundImage = { @@ -120,13 +121,8 @@ var GraphSettings = React.createClass({
背景圖:
Url:{' '} - +

請在圖形中增加圖片,或於欄中輸入圖片連結。

@@ -402,36 +398,34 @@ var GraphSettings = React.createClass({ } }, + setUrl: function(url, width, height) { + var image = _.clone(this.props.backgroundImage); + image.url = url; + image.width = width; + image.height = height; + this.props.onChange({ + backgroundImage: image, + markings: url ? "none" : "graph" + }); + }, + changeBackgroundUrl: function(e) { - var self = this; + //var self = this; // Only continue on blur or "enter" - if (e.type === "keypress" && e.keyCode !== 13) { - return; - } + //if (e.type === "keypress" && e.keyCode !== 13) { + // return; + //} - var url = self.refs["bg-url"].getDOMNode().value; - var setUrl = function() { - var image = _.clone(self.props.backgroundImage); - image.url = url; - image.width = img.width; - image.height = img.height; - self.props.onChange({ - backgroundImage: image, - markings: url ? "none" : "graph" - }); - }; + var url = e; if (url) { - var img = new Image(); - img.onload = setUrl; - img.src = url; + if(this.props.backgroundImage.url != url){ + var img = new Image(); + img.onload = function() {return this.setUrl(url, img.width, img.height);}.bind(this); + img.src = url; + } } else { - var img = { - url: url, - width: 0, - height: 0 - }; - setUrl(); + this.setUrl(url,0,0); } }, From b4ca9091626c637bbe18e307b3ef5af91896d2e7 Mon Sep 17 00:00:00 2001 From: Giddy Lin Date: Thu, 18 Aug 2016 15:21:23 +0800 Subject: [PATCH 123/156] check --- src/components/graph-settings.jsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/components/graph-settings.jsx b/src/components/graph-settings.jsx index 9eecffcaa8..6501c23e1b 100644 --- a/src/components/graph-settings.jsx +++ b/src/components/graph-settings.jsx @@ -410,13 +410,6 @@ var GraphSettings = React.createClass({ }, changeBackgroundUrl: function(e) { - //var self = this; - - // Only continue on blur or "enter" - //if (e.type === "keypress" && e.keyCode !== 13) { - // return; - //} - var url = e; if (url) { if(this.props.backgroundImage.url != url){ From d8c0ab972998a901bf64c9f195d72eb1004e0751 Mon Sep 17 00:00:00 2001 From: Giddy Lin Date: Thu, 18 Aug 2016 15:50:23 +0800 Subject: [PATCH 124/156] check --- src/components/graph-settings.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/graph-settings.jsx b/src/components/graph-settings.jsx index 6501c23e1b..25f1583789 100644 --- a/src/components/graph-settings.jsx +++ b/src/components/graph-settings.jsx @@ -122,7 +122,8 @@ var GraphSettings = React.createClass({
背景圖:
Url:{' '} + onChange={this.changeBackgroundUrl} + className="graph-settings-background-url"/>

請在圖形中增加圖片,或於欄中輸入圖片連結。

From e9357b7d3abacc7197311855eb29616d3d2e18c5 Mon Sep 17 00:00:00 2001 From: Giddy Lin Date: Thu, 18 Aug 2016 16:51:24 +0800 Subject: [PATCH 125/156] check --- src/components/graph-settings.jsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/graph-settings.jsx b/src/components/graph-settings.jsx index 25f1583789..2ba60b6d96 100644 --- a/src/components/graph-settings.jsx +++ b/src/components/graph-settings.jsx @@ -122,8 +122,7 @@ var GraphSettings = React.createClass({
背景圖:
Url:{' '} + onChange={this.changeBackgroundUrl}/>

請在圖形中增加圖片,或於欄中輸入圖片連結。

@@ -410,8 +409,7 @@ var GraphSettings = React.createClass({ }); }, - changeBackgroundUrl: function(e) { - var url = e; + changeBackgroundUrl: function(url) { if (url) { if(this.props.backgroundImage.url != url){ var img = new Image(); From 64d3f68527d2e233ac1dfa65f84cf2f7d0470119 Mon Sep 17 00:00:00 2001 From: Giddy Lin Date: Tue, 23 Aug 2016 13:05:54 +0800 Subject: [PATCH 126/156] make build --- build/perseus-1.js | 953 ++++++++++++++++++++++----------------------- 1 file changed, 470 insertions(+), 483 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index 80f9e8f75b..2083f96f89 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit f2f5cb831440770927e0ee231221119fe0854ca4 -// branch translate_0815 +// commit e9357b7d3abacc7197311855eb29616d3d2e18c5 +// branch widget-imgurl-renew-when-save (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o" - }); - graphie.line([range[1] + (25 / scale), 0], - [range[0] - (25 / scale), 0], { - arrows: "->" - }); - - // Ticks - var labelStyle = this.props.labelStyle; - for (var x = Math.ceil(range[0] / tickStep) * tickStep; x <= range[1]; - x += tickStep) { - graphie.line([x, -0.2], [x, 0.2]); - - // TODO(jack): Find out if any exercises have "decimal ticks" set, - // and if so, re-save them and remove this check. - if (this.props.labelTicks || labelStyle === "decimal ticks") { - this._label(x); - } - } - - graphie.style({ - stroke: KhanUtil.INTERACTIVE, - strokeWidth: 3.5 - }, function() { - graphie.line([range[0], -0.2], [range[0], 0.2]); - graphie.line([range[1], -0.2], [range[1], 0.2]); - if (range[0] < 0 && 0 < range[1]) { - graphie.line([0, -0.2], [0, 0.2]); - } - }); - - graphie.style({color: KhanUtil.INTERACTIVE}, function() { - self._label(range[0]); - self._label(range[1]); - if (range[0] < 0 && 0 < range[1] && !self.props.labelTicks) { - graphie.label([0, -0.53], "0", "center"); - } - }); - - // Point - - var isInequality = this.props.isInequality; - var rel = this.props.rel; - - var pointSize; - var pointStyle; - var highlightStyle; - if (isInequality && (rel === "lt" || rel === "gt")) { - pointSize = 5; - pointStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil._BACKGROUND, - "stroke-width": 3 - }; - highlightStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil._BACKGROUND, - "stroke-width": 4 - }; - } else { - pointSize = 4; - pointStyle = highlightStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil.INTERACTING - }; - } - - var x = Math.min(Math.max(range[0], this.props.pointX), range[1]); - var point = this.point = graphie.addMovablePoint({ - pointSize: pointSize, - coord: [x, 0], - snapX: this.props.tickStep / this.props.snapDivisions, - constraints: { - constrainY: true - }, - normalStyle: pointStyle, - highlightStyle: highlightStyle - }); - point.onMove = function(x, y) { - x = Math.min(Math.max(range[0], x), range[1]); - updateInequality(x, y); - return [x, y]; - }; - point.onMoveEnd = function(x, y) { - this.props.onChange({pointX: x}); - }.bind(this); - - // Inequality line - - var inequalityLine; - updateInequality(x, 0); - - function updateInequality(px, py) { - if (inequalityLine) { - inequalityLine.remove(); - inequalityLine = null; - } - if (isInequality) { - var end; - if (rel === "ge" || rel === "gt") { - end = [range[1] + (26 / scale), 0]; - } else { - end = [range[0] - (26 / scale), 0]; - } - inequalityLine = graphie.line( - [px, py], - end, - { - arrows: "->", - stroke: KhanUtil.INTERACTIVE, - strokeWidth: 3.5 - } - ); - point.toFront(); - } - } - }, - - toJSON: function() { - return { - pointX: this.props.pointX, - rel: this.props.isInequality ? this.props.rel : "eq" - }; - }, - - simpleValidate: function(rubric) { - return InteractiveNumberLine.validate(this.toJSON(), rubric); - }, - - focus: $.noop, - - statics: { - displayMode: "block" - } -}); - - -_.extend(InteractiveNumberLine, { - validate: function(state, rubric) { - var range = rubric.range; - var start = Math.min(Math.max(range[0], 0), range[1]); - var startRel = rubric.isInequality ? "ge" : "eq"; - var correctRel = rubric.correctRel || "eq"; - - if (eq(state.pointX, rubric.correctX || 0) && - correctRel === state.rel) { - return { - type: "points", - earned: 1, - total: 1, - message: null - }; - } else if (state.pointX === start && state.rel === startRel) { - // We're where we started. - return { - type: "invalid", - message: null - }; - } else { - return { - type: "points", - earned: 0, - total: 1, - message: null - }; - } - } -}); - - -var InteractiveNumberLineEditor = React.createClass({displayName: 'InteractiveNumberLineEditor', - getDefaultProps: function() { - return { - range: [0, 10], - labelStyle: "decimal", - labelTicks: false, - tickStep: 1, - snapDivisions: 4, - correctRel: "eq", - correctX: 0 - }; - }, - - render: function() { - return React.DOM.div(null, - React.DOM.label(null, - ' ',"最小 x: ", React.DOM.input( {defaultValue:'' + this.props.range[0], - onBlur:this.onRangeBlur.bind(this, 0)} ) - ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"最大 x: ", React.DOM.input( {defaultValue:'' + this.props.range[1], - onBlur:this.onRangeBlur.bind(this, 1)} ) - ), - InfoTip(null, - React.DOM.p(null, "利用下方的「標籤格式」來改變最大與最小 x 的標籤顯示格式。") - ),React.DOM.br(null ), - React.DOM.span(null, - ' ',"正確答案:",' ', - React.DOM.select( {value:this.props.correctRel, - onChange:this.onChange.bind(this, "correctRel")}, - React.DOM.optgroup( {label:"等式"}, - React.DOM.option( {value:"eq"}, "x =") - ), - React.DOM.optgroup( {label:"不等式"}, - React.DOM.option( {value:"lt"}, "x <"), - React.DOM.option( {value:"gt"}, "x >"), - React.DOM.option( {value:"le"}, "x ≤"), - React.DOM.option( {value:"ge"}, "x ≥") - ) - ), - React.DOM.input( {defaultValue:'' + this.props.correctX, - onBlur:this.onNumBlur.bind(this, "correctX")} ) - ),React.DOM.br(null ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"標籤格式:",' ', - React.DOM.select( {value:this.props.labelStyle, - onChange:this.onChange.bind(this, "labelStyle")}, - React.DOM.option( {value:"decimal"}, "小數"), - React.DOM.option( {value:"improper"}, "假分數"), - React.DOM.option( {value:"mixed"}, "帶分數") - ), - PropCheckBox( - {label:"顯示刻度代表的數字", - labelTicks:this.props.labelTicks, - onChange:this.props.onChange} ) - ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"每一刻度之間距離: ", React.DOM.input( {defaultValue:'' + this.props.tickStep, - onBlur:this.onNumBlur.bind(this, "tickStep")} ) - ), - InfoTip(null, - React.DOM.p(null, "每一個刻度都會標上刻度線。") - ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"刻度之間的分割數量:",' ', - React.DOM.input( {defaultValue:'' + this.props.snapDivisions, - onBlur:this.onNumBlur.bind(this, "snapDivisions")} ) - ), - InfoTip(null, - React.DOM.p(null, "確保分割數量足夠讓使用者回答問題,即答案會落在某分割的位置。") - ) - ); - }, - - onRangeBlur: function(i, e) { - var x = Util.firstNumericalParse(e.target.value) || 0; - e.target.value = x; - - var range = this.props.range.slice(); - range[i] = x; - this.props.onChange({range: range}); - }, - - onChange: function(key, e) { - var opts = {}; - opts[key] = e.target.value; - this.props.onChange(opts); - }, - - onNumBlur: function(key, e) { - var x = Util.firstNumericalParse(e.target.value) || 0; - e.target.value = x; - - var opts = {}; - opts[key] = x; - this.props.onChange(opts); - }, - - toJSON: function() { - return { - range: this.props.range, - labelStyle: this.props.labelStyle, - labelTicks: this.props.labelTicks, - tickStep: this.props.tickStep, - snapDivisions: this.props.snapDivisions, - correctRel: this.props.correctRel, - isInequality: this.props.correctRel !== "eq", - correctX: this.props.correctX - }; - } -}); - -module.exports = { - name: "interactive-number-line", - displayName: "Interactive-number-line/互動式數線", - hidden: false, - widget: InteractiveNumberLine, - editor: InteractiveNumberLineEditor -}; +/** @jsx React.DOM */ + +var InfoTip = require("react-components/info-tip"); +var PropCheckBox = require("../components/prop-check-box.jsx"); +var Util = require("../util.js"); + +function eq(x, y) { + return Math.abs(x - y) < 1e-9; +} + +var reverseRel = { + ge: "le", + gt: "lt", + le: "ge", + lt: "gt" +}; + +var toggleStrictRel = { + ge: "gt", + gt: "ge", + le: "lt", + lt: "le" +}; + +function formatImproper(n, d) { + if (d === 1) { + return "" + n; + } else { + return n + "/" + d; + } +} + +function formatMixed(n, d) { + if (n < 0) { + return "-" + formatMixed(-n, d); + } + var w = Math.floor(n / d); + if (w === 0) { + return formatImproper(n, d); + } else if (n - w * d === 0) { + return "" + w; + } else { + return w + "\\:" + formatImproper(n - w * d, d); + } +} + +var InteractiveNumberLine = React.createClass({displayName: 'InteractiveNumberLine', + getDefaultProps: function() { + return { + labelStyle: "decimal", + labelTicks: false, + isInequality: false, + pointX: 0, + rel: "ge" + }; + }, + + isValid: function() { + return this.props.range[0] < this.props.range[1] && + 0 < this.props.tickStep && + 0 < this.props.snapDivisions; + }, + + render: function() { + var inequalityControls; + if (this.props.isInequality) { + inequalityControls = React.DOM.div(null, + React.DOM.input( {type:"button", value:"換方向", + onClick:this.handleReverse} ), + React.DOM.input( {type:"button", + value: + this.props.rel === "le" || this.props.rel === "ge" ? + "改為空心圓" : + "改為實心圓", + + onClick:this.handleToggleStrict} ) + ); + } + + var valid = this.isValid(); + return React.DOM.div( {className:"perseus-widget " + + "perseus-widget-interactive-number-line"}, + React.DOM.div( {style:{display: valid ? "" : "none"}, + className:"graphie above-scratchpad", ref:"graphieDiv"} ), + React.DOM.div( {style:{display: valid ? "none" : ""}}, + ' ',"invalid number line configuration",' ' + ), + inequalityControls + ); + }, + + handleReverse: function() { + this.props.onChange({rel: reverseRel[this.props.rel]}); + }, + + handleToggleStrict: function() { + this.props.onChange({rel: toggleStrictRel[this.props.rel]}); + }, + + componentDidMount: function() { + this.addGraphie(); + }, + + componentDidUpdate: function() { + // Use jQuery to remove so event handlers don't leak + var node = this.refs.graphieDiv.getDOMNode(); + $(node).children().remove(); + + this.addGraphie(); + }, + + _label: function(value) { + var graphie = this.graphie; + var labelStyle = this.props.labelStyle; + + // TODO(jack): Find out if any exercises have "decimal ticks" set, + // and if so, re-save them and remove this check. + if (labelStyle === "decimal" || labelStyle === "decimal ticks") { + graphie.label([value, -0.53], value, "center"); + } else if (labelStyle === "improper") { + var frac = KhanUtil.toFraction(value); + graphie.label([value, -0.53], + formatImproper(frac[0], frac[1]), "center"); + } else if (labelStyle === "mixed") { + var frac = KhanUtil.toFraction(value); + graphie.label([value, -0.53], + formatMixed(frac[0], frac[1]), "center"); + } + }, + + addGraphie: function() { + var self = this; + var graphie = this.graphie = KhanUtil.createGraphie( + this.refs.graphieDiv.getDOMNode()); + // Ensure a sane configuration to avoid infinite loops + if (!this.isValid()) { + return; + } + + var range = this.props.range; + var tickStep = this.props.tickStep; + var scale = 400 / (range[1] - range[0]); + + graphie.init({ + range: [[range[0] - 30 / scale, + range[1] + 30 / scale], + [-1, 1]], + scale: [scale, 40] + }); + graphie.addMouseLayer({ + allowScratchpad: true + }); + + // Line + + graphie.line([range[0] - (25 / scale), 0], + [range[1] + (25 / scale), 0], { + arrows: "->" + }); + graphie.line([range[1] + (25 / scale), 0], + [range[0] - (25 / scale), 0], { + arrows: "->" + }); + + // Ticks + var labelStyle = this.props.labelStyle; + for (var x = Math.ceil(range[0] / tickStep) * tickStep; x <= range[1]; + x += tickStep) { + graphie.line([x, -0.2], [x, 0.2]); + + // TODO(jack): Find out if any exercises have "decimal ticks" set, + // and if so, re-save them and remove this check. + if (this.props.labelTicks || labelStyle === "decimal ticks") { + this._label(x); + } + } + + graphie.style({ + stroke: KhanUtil.INTERACTIVE, + strokeWidth: 3.5 + }, function() { + graphie.line([range[0], -0.2], [range[0], 0.2]); + graphie.line([range[1], -0.2], [range[1], 0.2]); + if (range[0] < 0 && 0 < range[1]) { + graphie.line([0, -0.2], [0, 0.2]); + } + }); + + graphie.style({color: KhanUtil.INTERACTIVE}, function() { + self._label(range[0]); + self._label(range[1]); + if (range[0] < 0 && 0 < range[1] && !self.props.labelTicks) { + graphie.label([0, -0.53], "0", "center"); + } + }); + + // Point + + var isInequality = this.props.isInequality; + var rel = this.props.rel; + + var pointSize; + var pointStyle; + var highlightStyle; + if (isInequality && (rel === "lt" || rel === "gt")) { + pointSize = 5; + pointStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil._BACKGROUND, + "stroke-width": 3 + }; + highlightStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil._BACKGROUND, + "stroke-width": 4 + }; + } else { + pointSize = 4; + pointStyle = highlightStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil.INTERACTING + }; + } + + var x = Math.min(Math.max(range[0], this.props.pointX), range[1]); + var point = this.point = graphie.addMovablePoint({ + pointSize: pointSize, + coord: [x, 0], + snapX: this.props.tickStep / this.props.snapDivisions, + constraints: { + constrainY: true + }, + normalStyle: pointStyle, + highlightStyle: highlightStyle + }); + point.onMove = function(x, y) { + x = Math.min(Math.max(range[0], x), range[1]); + updateInequality(x, y); + return [x, y]; + }; + point.onMoveEnd = function(x, y) { + this.props.onChange({pointX: x}); + }.bind(this); + + // Inequality line + + var inequalityLine; + updateInequality(x, 0); + + function updateInequality(px, py) { + if (inequalityLine) { + inequalityLine.remove(); + inequalityLine = null; + } + if (isInequality) { + var end; + if (rel === "ge" || rel === "gt") { + end = [range[1] + (26 / scale), 0]; + } else { + end = [range[0] - (26 / scale), 0]; + } + inequalityLine = graphie.line( + [px, py], + end, + { + arrows: "->", + stroke: KhanUtil.INTERACTIVE, + strokeWidth: 3.5 + } + ); + point.toFront(); + } + } + }, + + toJSON: function() { + return { + pointX: this.props.pointX, + rel: this.props.isInequality ? this.props.rel : "eq" + }; + }, + + simpleValidate: function(rubric) { + return InteractiveNumberLine.validate(this.toJSON(), rubric); + }, + + focus: $.noop, + + statics: { + displayMode: "block" + } +}); + + +_.extend(InteractiveNumberLine, { + validate: function(state, rubric) { + var range = rubric.range; + var start = Math.min(Math.max(range[0], 0), range[1]); + var startRel = rubric.isInequality ? "ge" : "eq"; + var correctRel = rubric.correctRel || "eq"; + + if (eq(state.pointX, rubric.correctX || 0) && + correctRel === state.rel) { + return { + type: "points", + earned: 1, + total: 1, + message: null + }; + } else if (state.pointX === start && state.rel === startRel) { + // We're where we started. + return { + type: "invalid", + message: null + }; + } else { + return { + type: "points", + earned: 0, + total: 1, + message: null + }; + } + } +}); + + +var InteractiveNumberLineEditor = React.createClass({displayName: 'InteractiveNumberLineEditor', + getDefaultProps: function() { + return { + range: [0, 10], + labelStyle: "decimal", + labelTicks: false, + tickStep: 1, + snapDivisions: 4, + correctRel: "eq", + correctX: 0 + }; + }, + + render: function() { + return React.DOM.div(null, + React.DOM.label(null, + ' ',"最小 x: ", React.DOM.input( {defaultValue:'' + this.props.range[0], + onBlur:this.onRangeBlur.bind(this, 0)} ) + ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"最大 x: ", React.DOM.input( {defaultValue:'' + this.props.range[1], + onBlur:this.onRangeBlur.bind(this, 1)} ) + ), + InfoTip(null, + React.DOM.p(null, "利用下方的「標籤格式」來改變最大與最小 x 的標籤顯示格式。") + ),React.DOM.br(null ), + React.DOM.span(null, + ' ',"正確答案:",' ', + React.DOM.select( {value:this.props.correctRel, + onChange:this.onChange.bind(this, "correctRel")}, + React.DOM.optgroup( {label:"等式"}, + React.DOM.option( {value:"eq"}, "x =") + ), + React.DOM.optgroup( {label:"不等式"}, + React.DOM.option( {value:"lt"}, "x <"), + React.DOM.option( {value:"gt"}, "x >"), + React.DOM.option( {value:"le"}, "x ≤"), + React.DOM.option( {value:"ge"}, "x ≥") + ) + ), + React.DOM.input( {defaultValue:'' + this.props.correctX, + onBlur:this.onNumBlur.bind(this, "correctX")} ) + ),React.DOM.br(null ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"標籤格式:",' ', + React.DOM.select( {value:this.props.labelStyle, + onChange:this.onChange.bind(this, "labelStyle")}, + React.DOM.option( {value:"decimal"}, "小數"), + React.DOM.option( {value:"improper"}, "假分數"), + React.DOM.option( {value:"mixed"}, "帶分數") + ), + PropCheckBox( + {label:"顯示刻度代表的數字", + labelTicks:this.props.labelTicks, + onChange:this.props.onChange} ) + ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"每一刻度之間距離: ", React.DOM.input( {defaultValue:'' + this.props.tickStep, + onBlur:this.onNumBlur.bind(this, "tickStep")} ) + ), + InfoTip(null, + React.DOM.p(null, "每一個刻度都會標上刻度線。") + ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"刻度之間的分割數量:",' ', + React.DOM.input( {defaultValue:'' + this.props.snapDivisions, + onBlur:this.onNumBlur.bind(this, "snapDivisions")} ) + ), + InfoTip(null, + React.DOM.p(null, "確保分割數量足夠讓使用者回答問題,即答案會落在某分割的位置。") + ) + ); + }, + + onRangeBlur: function(i, e) { + var x = Util.firstNumericalParse(e.target.value) || 0; + e.target.value = x; + + var range = this.props.range.slice(); + range[i] = x; + this.props.onChange({range: range}); + }, + + onChange: function(key, e) { + var opts = {}; + opts[key] = e.target.value; + this.props.onChange(opts); + }, + + onNumBlur: function(key, e) { + var x = Util.firstNumericalParse(e.target.value) || 0; + e.target.value = x; + + var opts = {}; + opts[key] = x; + this.props.onChange(opts); + }, + + toJSON: function() { + return { + range: this.props.range, + labelStyle: this.props.labelStyle, + labelTicks: this.props.labelTicks, + tickStep: this.props.tickStep, + snapDivisions: this.props.snapDivisions, + correctRel: this.props.correctRel, + isInequality: this.props.correctRel !== "eq", + correctX: this.props.correctX + }; + } +}); + +module.exports = { + name: "interactive-number-line", + displayName: "Interactive-number-line/互動式數線", + hidden: false, + widget: InteractiveNumberLine, + editor: InteractiveNumberLineEditor +}; },{"../components/prop-check-box.jsx":62,"../util.js":100,"react-components/info-tip":39}],114:[function(require,module,exports){ /** @jsx React.DOM */ @@ -18848,7 +18835,7 @@ var MeasurerEditor = React.createClass({displayName: 'MeasurerEditor', React.DOM.input( {type:"text", className:"perseus-widget-measurer-url", ref:"image-url", - defaultValue:image.url, + value:image.url, onChange:this._changeUrl} ), InfoTip(null, React.DOM.p(null, "插入圖片的連結網址。例如,先將圖片上傳至 http://imgur.com ,再分享其圖片網址 (Direct Link)。 " ) From 0e2cadbd72bc4b88ccef0d27f22ec7e8ba3827da Mon Sep 17 00:00:00 2001 From: Ins Huang Date: Wed, 24 Aug 2016 22:23:50 +0800 Subject: [PATCH 127/156] Change expression style --- build/perseus-1.css | 2 ++ build/perseus-1.js | 4 ++-- stylesheets/exercise-content-package/perseus.less | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/build/perseus-1.css b/build/perseus-1.css index 56e8ad160a..80b0c5080d 100644 --- a/build/perseus-1.css +++ b/build/perseus-1.css @@ -1133,6 +1133,8 @@ body.mobile .perseus-widget-radio input[type=checkbox]:checked:before { background: #fff; font-size: 18px; min-width: 100px; + position: relative; + z-index: 3; } .perseus-math-input.mq-editable-field.mq-math-mode > .mq-root-block { border-color: #a4a4a4; diff --git a/build/perseus-1.js b/build/perseus-1.js index 2083f96f89..cf99910f54 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit e9357b7d3abacc7197311855eb29616d3d2e18c5 -// branch widget-imgurl-renew-when-save +// commit 086d968f1cb5f30fe4af216312ad4a669acd1721 +// branch expression-style (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o .mq-root-block { // Mimic native text input w/o using -moz/-webkit-apperance: textfield // border-color: rgb(78, 187, 212); From dd64ccf80d5c5b279a7f3ed7b4b38f917c6cbab4 Mon Sep 17 00:00:00 2001 From: 98Chamberlain Date: Fri, 26 Aug 2016 17:44:33 +0800 Subject: [PATCH 128/156] first build --- build/perseus-1.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index cf99910f54..440b14245a 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 086d968f1cb5f30fe4af216312ad4a669acd1721 -// branch expression-style +// commit 736fd4f76358b7502996ccdd07f47e5f6bfac960 +// branch master (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o Date: Fri, 26 Aug 2016 18:16:21 +0800 Subject: [PATCH 129/156] translate the lower vs upper case --- lib/kas.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/kas.js b/lib/kas.js index 54b9e65d49..8585d29926 100644 --- a/lib/kas.js +++ b/lib/kas.js @@ -3547,7 +3547,7 @@ KAS.compare = function(expr1, expr2, options) { if (!vars.equal) { var message = null; if (vars.equalIgnoringCase) { - message = "Some of your variables are in the wrong case (upper vs. lower)."; + message = "你的答案其實很接近了!請將字母換成正確的大小寫噢!"; } return {equal: false, message: message}; } From 6c263ca1fa519f1f167c720f3300667d9ff37f82 Mon Sep 17 00:00:00 2001 From: 98Chamberlain Date: Fri, 26 Aug 2016 18:25:37 +0800 Subject: [PATCH 130/156] translate the input-number widget --- src/widgets/input-number.jsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/widgets/input-number.jsx b/src/widgets/input-number.jsx index 8bc69f8f42..f02d7e451b 100644 --- a/src/widgets/input-number.jsx +++ b/src/widgets/input-number.jsx @@ -51,29 +51,29 @@ var formExamples = { "integer": function(options) { return $._("an integer, like $6$"); }, "proper": function(options) { if (options.simplify === "optional") { - return $._("a *proper* fraction, like $1/2$ or $6/10$"); + return $._("*真* 分數, 例 $1/2$ or $6/10$"); } else { - return $._("a *simplified proper* fraction, like $3/5$"); + return $._("最簡真* 分數, 例 $3/5$"); } }, "improper": function(options) { if (options.simplify === "optional") { - return $._("an *improper* fraction, like $10/7$ or $14/8$"); + return $._("*假* 分數, 例 $10/7$ or $14/8$"); } else { - return $._("a *simplified improper* fraction, like $7/4$"); + return $._("*最簡假* 分數, 例 $7/4$"); } }, "mixed": function(options) { - return $._("a mixed number, like $1\\ 3/4$"); + return $._("帶分數, 例 $1\\ 3/4$"); }, "decimal": function(options) { - return $._("an *exact* decimal, like $0.75$"); + return $._("*精確的* 小數, 例 $0.75$"); }, "percent": function(options) { return $._("a percent, like $12.34\\%$"); }, "pi": function(options) { - return $._("a multiple of pi, like $12\\ \\text{pi}$ or " + + return $._("pi 的倍數, 例 $12\\ \\text{pi}$ or " + "$2/3\\ \\text{pi}$"); } }; From 1bf365d6021da4d4d756862ad96b6942774c1ef0 Mon Sep 17 00:00:00 2001 From: 98Chamberlain Date: Wed, 31 Aug 2016 09:54:39 +0800 Subject: [PATCH 131/156] translate make build --- build/perseus-1.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index 440b14245a..3ce07ae67a 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 736fd4f76358b7502996ccdd07f47e5f6bfac960 -// branch master +// commit 6c263ca1fa519f1f167c720f3300667d9ff37f82 +// branch translate20160826 (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o Date: Thu, 1 Sep 2016 12:27:27 +0800 Subject: [PATCH 132/156] change math input buttons relative --- build/perseus-1.css | 4 ++-- build/perseus-1.js | 8 ++++---- src/components/math-input.jsx | 4 ++-- stylesheets/exercise-content-package/perseus.less | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/build/perseus-1.css b/build/perseus-1.css index 80b0c5080d..353ea4cf32 100644 --- a/build/perseus-1.css +++ b/build/perseus-1.css @@ -1159,9 +1159,9 @@ body.mobile .perseus-widget-radio input[type=checkbox]:checked:before { padding: 2px; width: 280px; } -.math-input-buttons.absolute { +.math-input-buttons.relative { left: -2px; - position: absolute; + position: relative; top: -3px; z-index: 5; width: 360px; diff --git a/build/perseus-1.js b/build/perseus-1.js index cf99910f54..371a5b396e 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 086d968f1cb5f30fe4af216312ad4a669acd1721 -// branch expression-style +// commit 736fd4f76358b7502996ccdd07f47e5f6bfac960 +// branch HEAD (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o; } diff --git a/stylesheets/exercise-content-package/perseus.less b/stylesheets/exercise-content-package/perseus.less index 717dde2664..f09fa68faa 100644 --- a/stylesheets/exercise-content-package/perseus.less +++ b/stylesheets/exercise-content-package/perseus.less @@ -447,9 +447,9 @@ padding: 2px; width: 280px; - &.absolute { + &.relative { left: -2px; - position: absolute; + position: relative; top: -3px; z-index: @zIndexCalculator; width: 360px; From 966eb85a31cb06d32cdd032957e66caf7d4af949 Mon Sep 17 00:00:00 2001 From: 98Chamberlain Date: Thu, 1 Sep 2016 18:36:54 +0800 Subject: [PATCH 133/156] fix two translation error --- src/widgets/input-number.jsx | 10 +++++----- src/widgets/numeric-input.jsx | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/widgets/input-number.jsx b/src/widgets/input-number.jsx index f02d7e451b..134005a36a 100644 --- a/src/widgets/input-number.jsx +++ b/src/widgets/input-number.jsx @@ -51,23 +51,23 @@ var formExamples = { "integer": function(options) { return $._("an integer, like $6$"); }, "proper": function(options) { if (options.simplify === "optional") { - return $._("*真* 分數, 例 $1/2$ or $6/10$"); + return $._("真分數, 例 $1/2$ or $6/10$"); } else { - return $._("最簡真* 分數, 例 $3/5$"); + return $._("最簡真分數, 例 $3/5$"); } }, "improper": function(options) { if (options.simplify === "optional") { - return $._("*假* 分數, 例 $10/7$ or $14/8$"); + return $._("假分數, 例 $10/7$ or $14/8$"); } else { - return $._("*最簡假* 分數, 例 $7/4$"); + return $._("最簡假分數, 例 $7/4$"); } }, "mixed": function(options) { return $._("帶分數, 例 $1\\ 3/4$"); }, "decimal": function(options) { - return $._("*精確的* 小數, 例 $0.75$"); + return $._("精確的小數, 例 $0.75$"); }, "percent": function(options) { return $._("a percent, like $12.34\\%$"); diff --git a/src/widgets/numeric-input.jsx b/src/widgets/numeric-input.jsx index 4346ab3ee4..d5d9d4f5cc 100644 --- a/src/widgets/numeric-input.jsx +++ b/src/widgets/numeric-input.jsx @@ -28,13 +28,13 @@ var answerFormButtons = [ var formExamples = { "integer": (options) => $._("整數, 例 $6$"), "proper": (options) => options.simplify === "optional" ? - $._("*真* 分數, 例 $1/2$ or $6/10$") : - $._("最簡真* 分數, 例 $3/5$"), + $._("真分數, 例 $1/2$ or $6/10$") : + $._("最簡真分數, 例 $3/5$"), "improper": (options) => options.simplify === "optional" ? - $._("*假* 分數, 例 $10/7$ or $14/8$") : - $._("*最簡假* 分數, 例 $7/4$"), + $._("假分數, 例 $10/7$ or $14/8$") : + $._("最簡假分數, 例 $7/4$"), "mixed": () => $._("帶分數, 例 $1\\ 3/4$"), - "decimal": () => $._("*精確的* 小數, 例 $0.75$"), + "decimal": () => $._("精確的小數, 例 $0.75$"), "pi": () => $._("pi 的倍數, 例 $12\\ \\text{pi}$ or " + "$2/3\\ \\text{pi}$") }; From 9562635f98ff7a41a660eacb0489ddf2fe95ae05 Mon Sep 17 00:00:00 2001 From: AntaiLi Date: Mon, 5 Sep 2016 15:51:17 +0800 Subject: [PATCH 134/156] change perseus radio button display: block to inline-block --- build/perseus-1.js | 5444 +++++++++++++++++++++-------------------- src/widgets/radio.jsx | 2 +- 2 files changed, 2793 insertions(+), 2653 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index cf99910f54..b92f032511 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 086d968f1cb5f30fe4af216312ad4a669acd1721 -// branch expression-style +// commit a01b79a4e474549c093511ca7fae498991ab18ee +// branch perseus-radio-reduce-blank (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license +/** @jsx React.DOM */ + +var React = require("react"); + +/* You know when you want to propagate input to a parent... + * but then that parent does something with the input... + * then changing the props of the input... + * on every keystroke... + * so if some input is invalid or incomplete... + * the input gets reset or otherwise effed... + * + * This is the solution. + * + * Enough melodrama. Its an input that only sends changes + * to its parent on blur. */ +var BlurInput = React.createClass({displayName: 'BlurInput', + propTypes: { + value: React.PropTypes.string.isRequired, + onChange: React.PropTypes.func.isRequired + }, + getInitialState: function() { + return { value: this.props.value }; + }, + render: function() { + return this.transferPropsTo(React.DOM.input( + {type:"text", + value:this.state.value, + onChange:this.handleChange, + onBlur:this.handleBlur} )); + }, + componentWillReceiveProps: function(nextProps) { + this.setState({ value: nextProps.value }); + }, + handleChange: function(e) { + this.setState({ value: e.target.value }); + }, + handleBlur: function(e) { + this.props.onChange(e.target.value); + } +}); -/** Used to pool arrays and objects used internally */ -var arrayPool = []; +module.exports = BlurInput; -module.exports = arrayPool; +},{"react":117}],5:[function(require,module,exports){ +/** @jsx React.DOM */ -},{}],5:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreate = require('lodash._basecreate'), - isObject = require('lodash.isobject'), - setBindData = require('lodash._setbinddata'), - slice = require('lodash._slice'); +var React = require('react'); +var RCSS = require('rcss'); +var _ = require('underscore'); -/** - * Used for `Array` method references. - * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; +var outerStyle = { + display: 'inline-block', +}; -/** Native method shortcuts */ -var push = arrayRef.push; +var buttonStyle = { + backgroundColor: 'white', + border: '1px solid #ccc', + borderBottom: '1px solid #ccc', + borderLeft: '0', + cursor: 'pointer', + margin: '0', + padding: '5px 10px', + position: 'relative', // for hover -/** - * The base implementation of `_.bind` that creates the bound function and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new bound function. - */ -function baseBind(bindData) { - var func = bindData[0], - partialArgs = bindData[2], - thisArg = bindData[4]; + ':first-child': { + borderLeft: '1px solid #ccc', + borderTopLeftRadius: '3px', + borderBottomLeftRadius: '3px' + }, - function bound() { - // `Function#bind` spec - // http://es5.github.io/#x15.3.4.5 - if (partialArgs) { - // avoid `arguments` object deoptimizations by using `slice` instead - // of `Array.prototype.slice.call` and not assigning `arguments` to a - // variable as a ternary expression - var args = slice(partialArgs); - push.apply(args, arguments); - } - // mimic the constructor's `return` behavior - // http://es5.github.io/#x13.2.2 - if (this instanceof bound) { - // ensure `new bound` is an instance of `func` - var thisBinding = baseCreate(func.prototype), - result = func.apply(thisBinding, args || arguments); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisArg, args || arguments); - } - setBindData(bound, bindData); - return bound; -} + ':last-child': { + borderRight: '1px solid #ccc', + borderTopRightRadius: '3px', + borderBottomRightRadius: '3px' + }, -module.exports = baseBind; + ':hover': { + backgroundColor: '#ccc' + }, -},{"lodash._basecreate":6,"lodash._setbinddata":19,"lodash._slice":21,"lodash.isobject":31}],6:[function(require,module,exports){ -(function (global){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var isNative = require('lodash._isnative'), - isObject = require('lodash.isobject'), - noop = require('lodash.noop'); + ':focus': { + zIndex: '2' + } +}; -/* Native method shortcuts for methods with the same name as other `lodash` methods */ -var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate; +var selectedStyle = { + backgroundColor: '#ddd' +}; -/** - * The base implementation of `_.create` without support for assigning - * properties to the created object. +RCSS.createClass(outerStyle); +RCSS.createClass(buttonStyle); +RCSS.createClass(selectedStyle); + +/* ButtonGroup is an aesthetically pleasing group of buttons. * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. + * The class requires these properties: + * buttons - an array of objects with keys: + * "value": this is the value returned when the button is selected + * "text": this is the text shown on the button + * "title": this is the title-text shown on hover + * onChange - a function that is provided with the updated value + * (which it then is responsible for updating) + * + * The class has these optional properties: + * value - the initial value of the button selected, defaults to null. + * allowEmpty - if false, exactly one button _must_ be selected; otherwise + * it defaults to true and _at most_ one button (0 or 1) may be selected. + * + * Requires stylesheets/perseus-admin-package/editor.less to look nice. */ -function baseCreate(prototype, properties) { - return isObject(prototype) ? nativeCreate(prototype) : {}; -} -// fallback for browsers without `Object.create` -if (!nativeCreate) { - baseCreate = (function() { - function Object() {} - return function(prototype) { - if (isObject(prototype)) { - Object.prototype = prototype; - var result = new Object; - Object.prototype = null; - } - return result || global.Object(); - }; - }()); -} -module.exports = baseCreate; +var ButtonGroup = React.createClass({displayName: 'ButtonGroup', + propTypes: { + value: React.PropTypes.any, + buttons: React.PropTypes.arrayOf(React.PropTypes.shape({ + value: React.PropTypes.any.isRequired, + text: React.PropTypes.renderable, + title: React.PropTypes.string + })).isRequired, + onChange: React.PropTypes.func.isRequired, + allowEmpty: React.PropTypes.bool + }, -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"lodash._isnative":14,"lodash.isobject":31,"lodash.noop":33}],7:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var bind = require('lodash.bind'), - identity = require('lodash.identity'), - setBindData = require('lodash._setbinddata'), - support = require('lodash.support'); + getDefaultProps: function() { + return { + value: null, + allowEmpty: true + }; + }, -/** Used to detected named functions */ -var reFuncName = /^\s*function[ \n\r\t]+\w/; + render: function() { + var value = this.props.value; + var buttons = _(this.props.buttons).map(function(button, i) { + var maybeSelected = button.value === value ? + selectedStyle.className : + ""; + return React.DOM.button( {title:button.title, + id:"" + i, + ref:"button" + i, + key:"" + i, + className:(buttonStyle.className + " " + maybeSelected), + onClick:this.toggleSelect.bind(this, button.value)}, + button.text || "" + button.value + ); + }.bind(this)); -/** Used to detect functions containing a `this` reference */ -var reThis = /\bthis\b/; + return React.DOM.div( {className:outerStyle.className}, + buttons + ); + }, -/** Native method shortcuts */ -var fnToString = Function.prototype.toString; + focus: function() { + this.getDOMNode().focus(); + return true; + }, -/** - * The base implementation of `_.createCallback` without support for creating - * "_.pluck" or "_.where" style callbacks. - * - * @private - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - */ -function baseCreateCallback(func, thisArg, argCount) { - if (typeof func != 'function') { - return identity; - } - // exit early for no `thisArg` or already bound by `Function#bind` - if (typeof thisArg == 'undefined' || !('prototype' in func)) { - return func; - } - var bindData = func.__bindData__; - if (typeof bindData == 'undefined') { - if (support.funcNames) { - bindData = !func.name; - } - bindData = bindData || !support.funcDecomp; - if (!bindData) { - var source = fnToString.call(func); - if (!support.funcNames) { - bindData = !reFuncName.test(source); - } - if (!bindData) { - // checks if `func` references the `this` keyword and stores the result - bindData = reThis.test(source); - setBindData(func, bindData); - } - } - } - // exit early if there are no `this` references or `func` is bound - if (bindData === false || (bindData !== true && bindData[1] & 1)) { - return func; - } - switch (argCount) { - case 1: return function(value) { - return func.call(thisArg, value); - }; - case 2: return function(a, b) { - return func.call(thisArg, a, b); - }; - case 3: return function(value, index, collection) { - return func.call(thisArg, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(thisArg, accumulator, value, index, collection); - }; - } - return bind(func, thisArg); -} + toggleSelect: function(newValue) { + var value = this.props.value; -module.exports = baseCreateCallback; + if (this.props.allowEmpty) { + // Select the new button or unselect if it's already selected + this.props.onChange(value !== newValue ? newValue : null); + } else { + this.props.onChange(newValue); + } + } +}); -},{"lodash._setbinddata":19,"lodash.bind":23,"lodash.identity":29,"lodash.support":35}],8:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreate = require('lodash._basecreate'), - isObject = require('lodash.isobject'), - setBindData = require('lodash._setbinddata'), - slice = require('lodash._slice'); +module.exports = ButtonGroup; -/** - * Used for `Array` method references. - * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; +},{"rcss":8,"react":117,"underscore":118}],6:[function(require,module,exports){ +/** @jsx React.DOM */ -/** Native method shortcuts */ -var push = arrayRef.push; +var React = require('react'); -/** - * The base implementation of `createWrapper` that creates the wrapper and - * sets its meta data. +/* This component makes its children a drag target. Example: * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new function. + * Drag to me + * + * ... + * + * handleDrop: function(e) { + * this.addImages(e.nativeEvent.dataTransfer.files); + * } + * + * Now "Drag to me" will be a drag target - when something is dragged over it, + * the element will become partially transparent as a visual indicator that + * it's a target. */ -function baseCreateWrapper(bindData) { - var func = bindData[0], - bitmask = bindData[1], - partialArgs = bindData[2], - partialRightArgs = bindData[3], - thisArg = bindData[4], - arity = bindData[5]; - - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - key = func; +// TODO(joel) - indicate before the hover is over the target that it's possible +// to drag into the target. This would (I think) require a high level handler - +// like on Perseus itself, waiting for onDragEnter, then passing down the +// event. Sounds like a pain. Possible workaround - create a div covering the +// entire page... +// +// Other extensions: +// * custom styles for global drag and dragOver +// * only respond to certain types of drags (only images for instance)! +var DragTarget = React.createClass({displayName: 'DragTarget', + propTypes: { + onDrop: React.PropTypes.func.isRequired, + component: React.PropTypes.component, + shouldDragHighlight: React.PropTypes.func + }, + render: function() { + var opacity = this.state.dragHover ? { "opacity": 0.3 } : {}; + var component = this.props.component; - function bound() { - var thisBinding = isBind ? thisArg : this; - if (partialArgs) { - var args = slice(partialArgs); - push.apply(args, arguments); - } - if (partialRightArgs || isCurry) { - args || (args = slice(arguments)); - if (partialRightArgs) { - push.apply(args, partialRightArgs); - } - if (isCurry && args.length < arity) { - bitmask |= 16 & ~32; - return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); - } - } - args || (args = arguments); - if (isBindKey) { - func = thisBinding[key]; - } - if (this instanceof bound) { - thisBinding = baseCreate(func.prototype); - var result = func.apply(thisBinding, args); - return isObject(result) ? result : thisBinding; + return this.transferPropsTo( + component( {style:opacity, + onDrop:this.handleDrop, + onDragEnd:this.handleDragEnd, + onDragOver:this.handleDragOver, + onDragEnter:this.handleDragEnter, + onDragLeave:this.handleDragLeave}, + this.props.children + ) + ); + }, + getInitialState: function() { + return { dragHover: false }; + }, + getDefaultProps: function() { + return { + component: React.DOM.div, + shouldDragHighlight: function() {return true;} + }; + }, + handleDrop: function(e) { + e.stopPropagation(); + e.preventDefault(); + this.setState({ dragHover: false }); + this.props.onDrop(e); + }, + handleDragEnd: function() { + this.setState({ dragHover: false }); + }, + handleDragOver: function(e) { + e.preventDefault(); + }, + handleDragLeave: function() { + this.setState({ dragHover: false }); + }, + handleDragEnter: function(e) { + this.setState({ dragHover: this.props.shouldDragHighlight(e) }); } - return func.apply(thisBinding, args); - } - setBindData(bound, bindData); - return bound; -} - -module.exports = baseCreateWrapper; +}); -},{"lodash._basecreate":6,"lodash._setbinddata":19,"lodash._slice":21,"lodash.isobject":31}],9:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var forIn = require('lodash.forin'), - getArray = require('lodash._getarray'), - isFunction = require('lodash.isfunction'), - objectTypes = require('lodash._objecttypes'), - releaseArray = require('lodash._releasearray'); +module.exports = DragTarget; -/** `Object#toString` result shortcuts */ -var argsClass = '[object Arguments]', - arrayClass = '[object Array]', - boolClass = '[object Boolean]', - dateClass = '[object Date]', - numberClass = '[object Number]', - objectClass = '[object Object]', - regexpClass = '[object RegExp]', - stringClass = '[object String]'; +},{"react":117}],7:[function(require,module,exports){ +/** @jsx React.DOM */ -/** Used for native method references */ -var objectProto = Object.prototype; +var React = require('react'); +var RCSS = require('rcss'); +var _ = require('underscore'); -/** Used to resolve the internal [[Class]] of values */ -var toString = objectProto.toString; +var colors = { + grayLight: '#aaa', + basicBorderColor: '#ccc', + white: '#fff' +}; -/** Native method shortcuts */ -var hasOwnProperty = objectProto.hasOwnProperty; +var infoTip = { + display: 'inline-block', + marginLeft: '5px', + position: 'relative' +}; -/** - * The base implementation of `_.isEqual`, without support for `thisArg` binding, - * that allows partial "_.where" style comparisons. - * - * @private - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. - * @param {Array} [stackA=[]] Tracks traversed `a` objects. - * @param {Array} [stackB=[]] Tracks traversed `b` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { - // used to indicate that when comparing objects, `a` has at least the properties of `b` - if (callback) { - var result = callback(a, b); - if (typeof result != 'undefined') { - return !!result; - } - } - // exit early for identical values - if (a === b) { - // treat `+0` vs. `-0` as not equal - return a !== 0 || (1 / a == 1 / b); - } - var type = typeof a, - otherType = typeof b; +var infoTipI = { + cursor: 'pointer' +}; - // exit early for unlike primitive values - if (a === a && - !(a && objectTypes[type]) && - !(b && objectTypes[otherType])) { - return false; - } - // exit early for `null` and `undefined` avoiding ES3's Function#call behavior - // http://es5.github.io/#x15.3.4.4 - if (a == null || b == null) { - return a === b; - } - // compare [[Class]] names - var className = toString.call(a), - otherClass = toString.call(b); +var infoTipContainer = { + position: 'absolute', + 'top': '-12px', + left: '22px', + zIndex: '1000' +}; - if (className == argsClass) { - className = objectClass; - } - if (otherClass == argsClass) { - otherClass = objectClass; - } - if (className != otherClass) { - return false; - } - switch (className) { - case boolClass: - case dateClass: - // coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0` treating invalid dates coerced to `NaN` as not equal - return +a == +b; +var triangleBeforeAfter = { + borderBottom: '9px solid transparent', + borderTop: '9px solid transparent', + content: ' ', + height: '0', + position: 'absolute', + 'top': '0', + width: '0' +}; - case numberClass: - // treat `NaN` vs. `NaN` as equal - return (a != +a) - ? b != +b - // but treat `+0` vs. `-0` as not equal - : (a == 0 ? (1 / a == 1 / b) : a == +b); +var infoTipTriangle = { + height: '10px', + left: '0', + position: 'absolute', + 'top': '8px', + width: '0', + zIndex: '1', - case regexpClass: - case stringClass: - // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) - // treat string primitives and their corresponding object instances as equal - return a == String(b); - } - var isArr = className == arrayClass; - if (!isArr) { - // unwrap any `lodash` wrapped values - var aWrapped = hasOwnProperty.call(a, '__wrapped__'), - bWrapped = hasOwnProperty.call(b, '__wrapped__'); + ':before': _.extend({}, triangleBeforeAfter, { + borderRight: '9px solid #bbb', + right: '0', + }), - if (aWrapped || bWrapped) { - return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); - } - // exit for functions and DOM nodes - if (className != objectClass) { - return false; - } - // in older versions of Opera, `arguments` objects have `Array` constructors - var ctorA = a.constructor, - ctorB = b.constructor; + ':after': _.extend({}, triangleBeforeAfter, { + borderRight: ("9px solid " + colors.white), + right: '-1px' + }) +}; - // non `Object` object instances with different constructors are not equal - if (ctorA != ctorB && - !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && - ('constructor' in a && 'constructor' in b) - ) { - return false; - } - } - // assume cyclic structures are equal - // the algorithm for detecting cyclic structures is adapted from ES 5.1 - // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); +var basicBorder = { + border: ("1px solid " + colors.basicBorderColor) +}; - var length = stackA.length; - while (length--) { - if (stackA[length] == a) { - return stackB[length] == b; - } - } - var size = 0; - result = true; +var boxShadow = function(str) { return { boxShadow: str }; }; - // add `a` and `b` to the stack of traversed objects - stackA.push(a); - stackB.push(b); +var verticalShadow = RCSS.merge( + basicBorder, + boxShadow(("0 1px 3px " + colors.basicBorderColor)), + { borderBottom: ("1px solid " + colors.grayLight) } +); - // recursively compare objects and arrays (susceptible to call stack limits) - if (isArr) { - // compare lengths to determine if a deep comparison is necessary - length = a.length; - size = b.length; - result = size == length; +var infoTipContentContainer = RCSS.merge(verticalShadow, { + background: colors.white, + padding: '5px 10px', + width: '240px' +}); - if (result || isWhere) { - // deep compare the contents, ignoring non-numeric properties - while (size--) { - var index = length, - value = b[size]; +RCSS.createClass(infoTip); +RCSS.createClass(infoTipI); +RCSS.createClass(infoTipTriangle); +RCSS.createClass(verticalShadow); +RCSS.createClass(infoTipContainer); +RCSS.createClass(infoTipContentContainer); - if (isWhere) { - while (index--) { - if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } - } - else { - // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` - // which, in this case, is more costly - forIn(b, function(value, key, b) { - if (hasOwnProperty.call(b, key)) { - // count the number of properties. - size++; - // deep compare each property value. - return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); - } - }); +var questionMark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2N2M3NTAxYS04YmVlLTQ0M2MtYmRiNS04OGM2N2IxN2NhYzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUJCRTk4Qjc4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUJCRTk4QjY4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGE5ZDI0OTMtODk1NC00OGFkLTlhMTgtZDAwM2MwYWNjNDJlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY3Yzc1MDFhLThiZWUtNDQzYy1iZGI1LTg4YzY3YjE3Y2FjMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqm89uYAAADMSURBVHjaXJA9DoJAEIUH1M4TUHIFsCMGen9OwCGw1YRGW2ntKel0exsojHIBC0ouQAyUviFDstmXfNmZeS+zm7XSNCXRFiRgJf0bXIHixpbhGdxBBJYC1w/xaA424MhNEATkui71fU9KqfEU78UbD9PdbJRlOdae55GmhIP+1NV1TcMwkOM41DSNHvRtMhTHMRVFQW3b6mOLgx99kue5GRp/gIOZuZGvNpTNwjD8oliANU+qqqKu6/TQBdymN57AHjzBT+B6Jx79BRgAvc49kQA4yxgAAAAASUVORK5CYII='; // @NoLint - if (result && !isWhere) { - // ensure both objects have the same number of properties - forIn(a, function(value, key, a) { - if (hasOwnProperty.call(a, key)) { - // `size` will be `-1` if `a` has more properties than `b` - return (result = --size > -1); - } - }); +var InfoTip = React.createClass({displayName: 'InfoTip', + getInitialState: function() { + return { + hover: false + }; + }, + + render: function() { + return React.DOM.div( {className:infoTip.className}, + React.DOM.img( {width:10, + height:10, + src:questionMark, + onMouseEnter:this.handleMouseEnter, + onMouseLeave:this.handleMouseLeave} ), + React.DOM.div( {className:infoTipContainer.className, + style:{display: this.state.hover ? 'block' : 'none'}}, + React.DOM.div( {className:infoTipTriangle.className} ), + /* keep the classes here - used for selectors on KA */ + React.DOM.div( {className:infoTipContentContainer.className}, + this.props.children + ) + ) + ); + }, + + handleMouseEnter: function() { + this.setState({hover: true}); + }, + + handleMouseLeave: function() { + this.setState({hover: false}); } - } - stackA.pop(); - stackB.pop(); +}); - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; -} +module.exports = InfoTip; -module.exports = baseIsEqual; +},{"rcss":8,"react":117,"underscore":118}],8:[function(require,module,exports){ +var assign = require('lodash.assign'); -},{"lodash._getarray":12,"lodash._objecttypes":16,"lodash._releasearray":17,"lodash.forin":27,"lodash.isfunction":30}],10:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseBind = require('lodash._basebind'), - baseCreateWrapper = require('lodash._basecreatewrapper'), - isFunction = require('lodash.isfunction'), - slice = require('lodash._slice'); +var styleRuleValidator = require('./styleRuleValidator'); +var styleRuleConverter = require('./styleRuleConverter'); +var mediaQueryValidator = require('valid-media-queries'); -/** - * Used for `Array` method references. - * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; +var existingClasses = {}; +var styleTag = createStyleTag(); -/** Native method shortcuts */ -var push = arrayRef.push, - unshift = arrayRef.unshift; +var classNameId = 0; +var randomSuffix = Math.random().toString(36).slice(-5); -/** - * Creates a function that, when called, either curries or invokes `func` - * with an optional `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of method flags to compose. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` - * 8 - `_.curry` (bound) - * 16 - `_.partial` - * 32 - `_.partialRight` - * @param {Array} [partialArgs] An array of arguments to prepend to those - * provided to the new function. - * @param {Array} [partialRightArgs] An array of arguments to append to those - * provided to the new function. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new function. - */ -function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - isPartial = bitmask & 16, - isPartialRight = bitmask & 32; +function generateValidCSSClassName() { + // CSS classNames can't start with a number. + return 'c' + (classNameId++) + '-' + randomSuffix; +} - if (!isBindKey && !isFunction(func)) { - throw new TypeError; - } - if (isPartial && !partialArgs.length) { - bitmask &= ~16; - isPartial = partialArgs = false; - } - if (isPartialRight && !partialRightArgs.length) { - bitmask &= ~32; - isPartialRight = partialRightArgs = false; - } - var bindData = func && func.__bindData__; - if (bindData && bindData !== true) { - // clone `bindData` - bindData = slice(bindData); - if (bindData[2]) { - bindData[2] = slice(bindData[2]); - } - if (bindData[3]) { - bindData[3] = slice(bindData[3]); - } - // set `thisBinding` is not previously bound - if (isBind && !(bindData[1] & 1)) { - bindData[4] = thisArg; - } - // set if previously bound but not currently (subsequent curried functions) - if (!isBind && bindData[1] & 1) { - bitmask |= 8; - } - // set curried arity if not yet set - if (isCurry && !(bindData[1] & 4)) { - bindData[5] = arity; - } - // append partial left arguments - if (isPartial) { - push.apply(bindData[2] || (bindData[2] = []), partialArgs); +function objToCSS(style) { + var serialized = ''; + for (var propName in style) { + // we put that ourselves + if (propName == 'className') continue; + + var cssPropName = styleRuleConverter.hyphenateProp(propName); + if (!styleRuleValidator.isValidProp(cssPropName)) { + console.warn( + '%s (transformed into %s) is not a valid CSS property name.', propName, cssPropName + ); + continue; } - // append partial right arguments - if (isPartialRight) { - unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); + + var styleValue = style[propName]; + if (!styleRuleValidator.isValidValue(styleValue)) continue; + + if (styleValue !== null) { + serialized += cssPropName + ':'; + serialized += styleRuleConverter.escapeValueForProp(styleValue, + cssPropName) + ';'; } - // merge flags - bindData[1] |= bitmask; - return createWrapper.apply(null, bindData); } - // fast path for `_.bind` - var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; - return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); + return serialized || null; } -module.exports = createWrapper; +function createStyleTag() { + var tag = document.createElement('style'); + document.getElementsByTagName('head')[0].appendChild(tag); + return tag; +} -},{"lodash._basebind":5,"lodash._basecreatewrapper":8,"lodash._slice":21,"lodash.isfunction":30}],11:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var htmlEscapes = require('lodash._htmlescapes'); +function styleToCSS(style) { + var styleStr = '.' + style.className + '{'; + styleStr += objToCSS(style.value); + styleStr += '}'; -/** - * Used by `escape` to convert characters to HTML entities. - * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. - */ -function escapeHtmlChar(match) { - return htmlEscapes[match]; + if (style.media) { + if (!mediaQueryValidator(style.media)) { + console.log('%s is not a valid media query.', style.media); + } + styleStr = style.media + '{' + styleStr + '}'; + } + + return styleStr; } -module.exports = escapeHtmlChar; +// TODO: support media queries +function parseStyles(className, styleObj) { + var mainStyle = { + className: className, + value: {} + }; + var styles = [mainStyle]; -},{"lodash._htmlescapes":13}],12:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var arrayPool = require('lodash._arraypool'); + Object.keys(styleObj).forEach(function(k){ + // pseudo-selector, insert a new rule + if (k[0] === ':') { + styles.push({ + className: className+k, + value: styleObj[k] + }); + return; + } else if (k.substring(0, 6) === '@media') { + styles.push({ + className: className, + value: styleObj[k], + media: k + }); + return; + } -/** - * Gets an array from the array pool or creates a new one if the pool is empty. - * - * @private - * @returns {Array} The array from the pool. - */ -function getArray() { - return arrayPool.pop() || []; + // normal rule, insert into main one + mainStyle.value[k] = styleObj[k]; + }); + + return styles; } -module.exports = getArray; +function insertStyle(className, styleObj) { + var styles = parseStyles(className, styleObj); + var styleStr = styles.map(styleToCSS).join(''); + styleTag.innerHTML += styleStr; +} -},{"lodash._arraypool":4}],13:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ +var RCSS = { + merge: function(a, b, c, d, e) { + return assign({}, a, b, c, d, e); + }, -/** - * Used to convert characters to HTML entities: - * - * Though the `>` character is escaped for symmetry, characters like `>` and `/` - * don't require escaping in HTML and have no special meaning unless they're part - * of a tag or an unquoted attribute value. - * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") - */ -var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' + createClass: function(styleObj) { + var styleId = JSON.stringify(styleObj); + var className; + + if (existingClasses[styleId]) { + // already exists, use the existing className + className = existingClasses[styleId]; + } else { + // generate a new class and insert it + className = generateValidCSSClassName(); + existingClasses[styleId] = className; + insertStyle(className, styleObj); + } + + styleObj.className = className; + return styleObj; + } }; -module.exports = htmlEscapes; +module.exports = RCSS; -},{}],14:[function(require,module,exports){ +},{"./styleRuleConverter":113,"./styleRuleValidator":114,"lodash.assign":9,"valid-media-queries":48}],9:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1213,49 +1035,70 @@ module.exports = htmlEscapes; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ - -/** Used for native method references */ -var objectProto = Object.prototype; - -/** Used to resolve the internal [[Class]] of values */ -var toString = objectProto.toString; - -/** Used to detect if a method is native */ -var reNative = RegExp('^' + - String(toString) - .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - .replace(/toString| for [^\]]+/g, '.*?') + '$' -); +var baseCreateCallback = require('lodash._basecreatecallback'), + keys = require('lodash.keys'), + objectTypes = require('lodash._objecttypes'); /** - * Checks if `value` is a native function. + * Assigns own enumerable properties of source object(s) to the destination + * object. Subsequent sources will overwrite property assignments of previous + * sources. If a callback is provided it will be executed to produce the + * assigned values. The callback is bound to `thisArg` and invoked with two + * arguments; (objectValue, sourceValue). * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. - */ -function isNative(value) { - return typeof value == 'function' && reNative.test(value); -} - -module.exports = isNative; - -},{}],15:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + * @static + * @memberOf _ + * @type Function + * @alias extend + * @category Objects + * @param {Object} object The destination object. + * @param {...Object} [source] The source objects. + * @param {Function} [callback] The function to customize assigning values. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns the destination object. + * @example + * + * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); + * // => { 'name': 'fred', 'employer': 'slate' } + * + * var defaults = _.partialRight(_.assign, function(a, b) { + * return typeof a == 'undefined' ? b : a; + * }); + * + * var object = { 'name': 'barney' }; + * defaults(object, { 'name': 'fred', 'employer': 'slate' }); + * // => { 'name': 'barney', 'employer': 'slate' } */ +var assign = function(object, source, guard) { + var index, iterable = object, result = iterable; + if (!iterable) return result; + var args = arguments, + argsIndex = 0, + argsLength = typeof guard == 'number' ? 2 : args.length; + if (argsLength > 3 && typeof args[argsLength - 2] == 'function') { + var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2); + } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') { + callback = args[--argsLength]; + } + while (++argsIndex < argsLength) { + iterable = args[argsIndex]; + if (iterable && objectTypes[typeof iterable]) { + var ownIndex = -1, + ownProps = objectTypes[typeof iterable] && keys(iterable), + length = ownProps ? ownProps.length : 0; -/** Used as the max size of the `arrayPool` and `objectPool` */ -var maxPoolSize = 40; + while (++ownIndex < length) { + index = ownProps[ownIndex]; + result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]; + } + } + } + return result +}; -module.exports = maxPoolSize; +module.exports = assign; -},{}],16:[function(require,module,exports){ +},{"lodash._basecreatecallback":10,"lodash._objecttypes":31,"lodash.keys":32}],10:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1264,64 +1107,80 @@ module.exports = maxPoolSize; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ +var bind = require('lodash.bind'), + identity = require('lodash.identity'), + setBindData = require('lodash._setbinddata'), + support = require('lodash.support'); -/** Used to determine if values are of the language type Object */ -var objectTypes = { - 'boolean': false, - 'function': true, - 'object': true, - 'number': false, - 'string': false, - 'undefined': false -}; +/** Used to detected named functions */ +var reFuncName = /^\s*function[ \n\r\t]+\w/; -module.exports = objectTypes; +/** Used to detect functions containing a `this` reference */ +var reThis = /\bthis\b/; -},{}],17:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var arrayPool = require('lodash._arraypool'), - maxPoolSize = require('lodash._maxpoolsize'); +/** Native method shortcuts */ +var fnToString = Function.prototype.toString; /** - * Releases the given array back to the array pool. + * The base implementation of `_.createCallback` without support for creating + * "_.pluck" or "_.where" style callbacks. * * @private - * @param {Array} [array] The array to release. + * @param {*} [func=identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of the created callback. + * @param {number} [argCount] The number of arguments the callback accepts. + * @returns {Function} Returns a callback function. */ -function releaseArray(array) { - array.length = 0; - if (arrayPool.length < maxPoolSize) { - arrayPool.push(array); +function baseCreateCallback(func, thisArg, argCount) { + if (typeof func != 'function') { + return identity; + } + // exit early for no `thisArg` or already bound by `Function#bind` + if (typeof thisArg == 'undefined' || !('prototype' in func)) { + return func; + } + var bindData = func.__bindData__; + if (typeof bindData == 'undefined') { + if (support.funcNames) { + bindData = !func.name; + } + bindData = bindData || !support.funcDecomp; + if (!bindData) { + var source = fnToString.call(func); + if (!support.funcNames) { + bindData = !reFuncName.test(source); + } + if (!bindData) { + // checks if `func` references the `this` keyword and stores the result + bindData = reThis.test(source); + setBindData(func, bindData); + } + } + } + // exit early if there are no `this` references or `func` is bound + if (bindData === false || (bindData !== true && bindData[1] & 1)) { + return func; + } + switch (argCount) { + case 1: return function(value) { + return func.call(thisArg, value); + }; + case 2: return function(a, b) { + return func.call(thisArg, a, b); + }; + case 3: return function(value, index, collection) { + return func.call(thisArg, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(thisArg, accumulator, value, index, collection); + }; } + return bind(func, thisArg); } -module.exports = releaseArray; - -},{"lodash._arraypool":4,"lodash._maxpoolsize":15}],18:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var htmlEscapes = require('lodash._htmlescapes'), - keys = require('lodash.keys'); - -/** Used to match HTML entities and HTML characters */ -var reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); - -module.exports = reUnescapedHtml; +module.exports = baseCreateCallback; -},{"lodash._htmlescapes":13,"lodash.keys":32}],19:[function(require,module,exports){ +},{"lodash._setbinddata":11,"lodash.bind":14,"lodash.identity":28,"lodash.support":29}],11:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1366,7 +1225,7 @@ var setBindData = !defineProperty ? noop : function(func, value) { module.exports = setBindData; -},{"lodash._isnative":14,"lodash.noop":33}],20:[function(require,module,exports){ +},{"lodash._isnative":12,"lodash.noop":13}],12:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1375,38 +1234,34 @@ module.exports = setBindData; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var objectTypes = require('lodash._objecttypes'); /** Used for native method references */ var objectProto = Object.prototype; -/** Native method shortcuts */ -var hasOwnProperty = objectProto.hasOwnProperty; +/** Used to resolve the internal [[Class]] of values */ +var toString = objectProto.toString; + +/** Used to detect if a method is native */ +var reNative = RegExp('^' + + String(toString) + .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + .replace(/toString| for [^\]]+/g, '.*?') + '$' +); /** - * A fallback implementation of `Object.keys` which produces an array of the - * given object's own enumerable property names. + * Checks if `value` is a native function. * * @private - * @type Function - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. */ -var shimKeys = function(object) { - var index, iterable = object, result = []; - if (!iterable) return result; - if (!(objectTypes[typeof object])) return result; - for (index in iterable) { - if (hasOwnProperty.call(iterable, index)) { - result.push(index); - } - } - return result -}; +function isNative(value) { + return typeof value == 'function' && reNative.test(value); +} -module.exports = shimKeys; +module.exports = isNative; -},{"lodash._objecttypes":16}],21:[function(require,module,exports){ +},{}],13:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1417,108 +1272,24 @@ module.exports = shimKeys; */ /** - * Slices the `collection` from the `start` index up to, but not including, - * the `end` index. + * A no-operation function. * - * Note: This function is used instead of `Array#slice` to support node lists - * in IE < 9 and to ensure dense arrays are returned. + * @static + * @memberOf _ + * @category Utilities + * @example * - * @private - * @param {Array|Object|string} collection The collection to slice. - * @param {number} start The start index. - * @param {number} end The end index. - * @returns {Array} Returns the new array. + * var object = { 'name': 'fred' }; + * _.noop(object) === undefined; + * // => true */ -function slice(array, start, end) { - start || (start = 0); - if (typeof end == 'undefined') { - end = array ? array.length : 0; - } - var index = -1, - length = end - start || 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = array[start + index]; - } - return result; +function noop() { + // no operation performed } -module.exports = slice; - -},{}],22:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - keys = require('lodash.keys'), - objectTypes = require('lodash._objecttypes'); - -/** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources will overwrite property assignments of previous - * sources. If a callback is provided it will be executed to produce the - * assigned values. The callback is bound to `thisArg` and invoked with two - * arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @type Function - * @alias extend - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize assigning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); - * // => { 'name': 'fred', 'employer': 'slate' } - * - * var defaults = _.partialRight(_.assign, function(a, b) { - * return typeof a == 'undefined' ? b : a; - * }); - * - * var object = { 'name': 'barney' }; - * defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } - */ -var assign = function(object, source, guard) { - var index, iterable = object, result = iterable; - if (!iterable) return result; - var args = arguments, - argsIndex = 0, - argsLength = typeof guard == 'number' ? 2 : args.length; - if (argsLength > 3 && typeof args[argsLength - 2] == 'function') { - var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2); - } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') { - callback = args[--argsLength]; - } - while (++argsIndex < argsLength) { - iterable = args[argsIndex]; - if (iterable && objectTypes[typeof iterable]) { - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; - - while (++ownIndex < length) { - index = ownProps[ownIndex]; - result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]; - } - } - } - return result -}; - -module.exports = assign; +module.exports = noop; -},{"lodash._basecreatecallback":7,"lodash._objecttypes":16,"lodash.keys":32}],23:[function(require,module,exports){ +},{}],14:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1560,90 +1331,115 @@ function bind(func, thisArg) { module.exports = bind; -},{"lodash._createwrapper":10,"lodash._slice":21}],24:[function(require,module,exports){ +},{"lodash._createwrapper":15,"lodash._slice":27}],15:[function(require,module,exports){ /** - * Lo-Dash 2.4.4 (Custom Build) + * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` * Copyright 2012-2013 The Dojo Foundation * Based on Underscore.js 1.5.2 * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreateCallback = require('lodash._basecreatecallback'), - baseIsEqual = require('lodash._baseisequal'), - isObject = require('lodash.isobject'), - keys = require('lodash.keys'), - property = require('lodash.property'); +var baseBind = require('lodash._basebind'), + baseCreateWrapper = require('lodash._basecreatewrapper'), + isFunction = require('lodash.isfunction'), + slice = require('lodash._slice'); /** - * Produces a callback bound to an optional `thisArg`. If `func` is a property - * name the created callback will return the property value for a given element. - * If `func` is an object the created callback will return `true` for elements - * that contain the equivalent object properties, otherwise it will return `false`. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; + * Used for `Array` method references. * - * // wrap to create custom callback shorthands - * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { - * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); - * return !match ? func(callback, thisArg) : function(object) { - * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; - * }; - * }); + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; + +/** Native method shortcuts */ +var push = arrayRef.push, + unshift = arrayRef.unshift; + +/** + * Creates a function that, when called, either curries or invokes `func` + * with an optional `this` binding and partially applied arguments. * - * _.filter(characters, 'age__gt38'); - * // => [{ 'name': 'fred', 'age': 40 }] + * @private + * @param {Function|string} func The function or method name to reference. + * @param {number} bitmask The bitmask of method flags to compose. + * The bitmask may be composed of the following flags: + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` + * 8 - `_.curry` (bound) + * 16 - `_.partial` + * 32 - `_.partialRight` + * @param {Array} [partialArgs] An array of arguments to prepend to those + * provided to the new function. + * @param {Array} [partialRightArgs] An array of arguments to append to those + * provided to the new function. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new function. */ -function createCallback(func, thisArg, argCount) { - var type = typeof func; - if (func == null || type == 'function') { - return baseCreateCallback(func, thisArg, argCount); +function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { + var isBind = bitmask & 1, + isBindKey = bitmask & 2, + isCurry = bitmask & 4, + isCurryBound = bitmask & 8, + isPartial = bitmask & 16, + isPartialRight = bitmask & 32; + + if (!isBindKey && !isFunction(func)) { + throw new TypeError; } - // handle "_.pluck" style callback shorthands - if (type != 'object') { - return property(func); + if (isPartial && !partialArgs.length) { + bitmask &= ~16; + isPartial = partialArgs = false; } - var props = keys(func), - key = props[0], - a = func[key]; - - // handle "_.where" style callback shorthands - if (props.length == 1 && a === a && !isObject(a)) { - // fast path the common case of providing an object with a single - // property containing a primitive value - return function(object) { - var b = object[key]; - return a === b && (a !== 0 || (1 / a == 1 / b)); - }; + if (isPartialRight && !partialRightArgs.length) { + bitmask &= ~32; + isPartialRight = partialRightArgs = false; } - return function(object) { - var length = props.length, - result = false; - - while (length--) { - if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { - break; - } + var bindData = func && func.__bindData__; + if (bindData && bindData !== true) { + // clone `bindData` + bindData = slice(bindData); + if (bindData[2]) { + bindData[2] = slice(bindData[2]); } - return result; - }; + if (bindData[3]) { + bindData[3] = slice(bindData[3]); + } + // set `thisBinding` is not previously bound + if (isBind && !(bindData[1] & 1)) { + bindData[4] = thisArg; + } + // set if previously bound but not currently (subsequent curried functions) + if (!isBind && bindData[1] & 1) { + bitmask |= 8; + } + // set curried arity if not yet set + if (isCurry && !(bindData[1] & 4)) { + bindData[5] = arity; + } + // append partial left arguments + if (isPartial) { + push.apply(bindData[2] || (bindData[2] = []), partialArgs); + } + // append partial right arguments + if (isPartialRight) { + unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); + } + // merge flags + bindData[1] |= bitmask; + return createWrapper.apply(null, bindData); + } + // fast path for `_.bind` + var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; + return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); } -module.exports = createCallback; +module.exports = createWrapper; -},{"lodash._basecreatecallback":7,"lodash._baseisequal":9,"lodash.isobject":31,"lodash.keys":32,"lodash.property":34}],25:[function(require,module,exports){ +},{"lodash._basebind":16,"lodash._basecreatewrapper":21,"lodash._slice":27,"lodash.isfunction":26}],16:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1652,107 +1448,63 @@ module.exports = createCallback; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var escapeHtmlChar = require('lodash._escapehtmlchar'), - keys = require('lodash.keys'), - reUnescapedHtml = require('lodash._reunescapedhtml'); +var baseCreate = require('lodash._basecreate'), + isObject = require('lodash.isobject'), + setBindData = require('lodash._setbinddata'), + slice = require('lodash._slice'); /** - * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their - * corresponding HTML entities. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} string The string to escape. - * @returns {string} Returns the escaped string. - * @example + * Used for `Array` method references. * - * _.escape('Fred, Wilma, & Pebbles'); - * // => 'Fred, Wilma, & Pebbles' + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. */ -function escape(string) { - return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); -} +var arrayRef = []; -module.exports = escape; - -},{"lodash._escapehtmlchar":11,"lodash._reunescapedhtml":18,"lodash.keys":32}],26:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var createCallback = require('lodash.createcallback'), - forOwn = require('lodash.forown'); +/** Native method shortcuts */ +var push = arrayRef.push; /** - * Checks if the given callback returns truey value for **all** elements of - * a collection. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if all elements passed the callback check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes']); - * // => false - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.every(characters, 'age'); - * // => true + * The base implementation of `_.bind` that creates the bound function and + * sets its meta data. * - * // using "_.where" callback shorthand - * _.every(characters, { 'age': 36 }); - * // => false + * @private + * @param {Array} bindData The bind data array. + * @returns {Function} Returns the new bound function. */ -function every(collection, callback, thisArg) { - var result = true; - callback = createCallback(callback, thisArg, 3); - - var index = -1, - length = collection ? collection.length : 0; +function baseBind(bindData) { + var func = bindData[0], + partialArgs = bindData[2], + thisArg = bindData[4]; - if (typeof length == 'number') { - while (++index < length) { - if (!(result = !!callback(collection[index], index, collection))) { - break; - } + function bound() { + // `Function#bind` spec + // http://es5.github.io/#x15.3.4.5 + if (partialArgs) { + // avoid `arguments` object deoptimizations by using `slice` instead + // of `Array.prototype.slice.call` and not assigning `arguments` to a + // variable as a ternary expression + var args = slice(partialArgs); + push.apply(args, arguments); } - } else { - forOwn(collection, function(value, index, collection) { - return (result = !!callback(value, index, collection)); - }); + // mimic the constructor's `return` behavior + // http://es5.github.io/#x13.2.2 + if (this instanceof bound) { + // ensure `new bound` is an instance of `func` + var thisBinding = baseCreate(func.prototype), + result = func.apply(thisBinding, args || arguments); + return isObject(result) ? result : thisBinding; + } + return func.apply(thisArg, args || arguments); } - return result; + setBindData(bound, bindData); + return bound; } -module.exports = every; +module.exports = baseBind; -},{"lodash.createcallback":24,"lodash.forown":28}],27:[function(require,module,exports){ +},{"lodash._basecreate":17,"lodash._setbinddata":11,"lodash._slice":27,"lodash.isobject":20}],17:[function(require,module,exports){ +(function (global){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1761,54 +1513,47 @@ module.exports = every; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreateCallback = require('lodash._basecreatecallback'), - objectTypes = require('lodash._objecttypes'); +var isNative = require('lodash._isnative'), + isObject = require('lodash.isobject'), + noop = require('lodash.noop'); + +/* Native method shortcuts for methods with the same name as other `lodash` methods */ +var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate; /** - * Iterates over own and inherited enumerable properties of an object, - * executing the callback for each property. The callback is bound to `thisArg` - * and invoked with three arguments; (value, key, object). Callbacks may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; + * The base implementation of `_.create` without support for assigning + * properties to the created object. * - * _.forIn(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) + * @private + * @param {Object} prototype The object to inherit from. + * @returns {Object} Returns the new object. */ -var forIn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - for (index in iterable) { - if (callback(iterable[index], index, collection) === false) return result; - } - return result -}; +function baseCreate(prototype, properties) { + return isObject(prototype) ? nativeCreate(prototype) : {}; +} +// fallback for browsers without `Object.create` +if (!nativeCreate) { + baseCreate = (function() { + function Object() {} + return function(prototype) { + if (isObject(prototype)) { + Object.prototype = prototype; + var result = new Object; + Object.prototype = null; + } + return result || global.Object(); + }; + }()); +} -module.exports = forIn; +module.exports = baseCreate; -},{"lodash._basecreatecallback":7,"lodash._objecttypes":16}],28:[function(require,module,exports){ +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"lodash._isnative":18,"lodash.isobject":20,"lodash.noop":19}],18:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],19:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],20:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1817,50 +1562,39 @@ module.exports = forIn; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreateCallback = require('lodash._basecreatecallback'), - keys = require('lodash.keys'), - objectTypes = require('lodash._objecttypes'); +var objectTypes = require('lodash._objecttypes'); /** - * Iterates over own enumerable properties of an object, executing the callback - * for each property. The callback is bound to `thisArg` and invoked with three - * arguments; (value, key, object). Callbacks may exit iteration early by - * explicitly returning `false`. + * Checks if `value` is the language type of Object. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ - * @type Function * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if the `value` is an object, else `false`. * @example * - * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(1); + * // => false */ -var forOwn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; - - while (++ownIndex < length) { - index = ownProps[ownIndex]; - if (callback(iterable[index], index, collection) === false) return result; - } - return result -}; +function isObject(value) { + // check if the value is the ECMAScript language type of Object + // http://es5.github.io/#x8 + // and avoid a V8 bug + // http://code.google.com/p/v8/issues/detail?id=2291 + return !!(value && objectTypes[typeof value]); +} -module.exports = forOwn; +module.exports = isObject; -},{"lodash._basecreatecallback":7,"lodash._objecttypes":16,"lodash.keys":32}],29:[function(require,module,exports){ +},{"lodash._objecttypes":31}],21:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1869,57 +1603,86 @@ module.exports = forOwn; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ +var baseCreate = require('lodash._basecreate'), + isObject = require('lodash.isobject'), + setBindData = require('lodash._setbinddata'), + slice = require('lodash._slice'); /** - * This method returns the first argument provided to it. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example + * Used for `Array` method references. * - * var object = { 'name': 'fred' }; - * _.identity(object) === object; - * // => true + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. */ -function identity(value) { - return value; -} +var arrayRef = []; -module.exports = identity; +/** Native method shortcuts */ +var push = arrayRef.push; -},{}],30:[function(require,module,exports){ /** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** - * Checks if `value` is a function. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a function, else `false`. - * @example + * The base implementation of `createWrapper` that creates the wrapper and + * sets its meta data. * - * _.isFunction(_); - * // => true + * @private + * @param {Array} bindData The bind data array. + * @returns {Function} Returns the new function. */ -function isFunction(value) { - return typeof value == 'function'; +function baseCreateWrapper(bindData) { + var func = bindData[0], + bitmask = bindData[1], + partialArgs = bindData[2], + partialRightArgs = bindData[3], + thisArg = bindData[4], + arity = bindData[5]; + + var isBind = bitmask & 1, + isBindKey = bitmask & 2, + isCurry = bitmask & 4, + isCurryBound = bitmask & 8, + key = func; + + function bound() { + var thisBinding = isBind ? thisArg : this; + if (partialArgs) { + var args = slice(partialArgs); + push.apply(args, arguments); + } + if (partialRightArgs || isCurry) { + args || (args = slice(arguments)); + if (partialRightArgs) { + push.apply(args, partialRightArgs); + } + if (isCurry && args.length < arity) { + bitmask |= 16 & ~32; + return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); + } + } + args || (args = arguments); + if (isBindKey) { + func = thisBinding[key]; + } + if (this instanceof bound) { + thisBinding = baseCreate(func.prototype); + var result = func.apply(thisBinding, args); + return isObject(result) ? result : thisBinding; + } + return func.apply(thisBinding, args); + } + setBindData(bound, bindData); + return bound; } -module.exports = isFunction; +module.exports = baseCreateWrapper; -},{}],31:[function(require,module,exports){ +},{"lodash._basecreate":22,"lodash._setbinddata":11,"lodash._slice":27,"lodash.isobject":25}],22:[function(require,module,exports){ +arguments[4][17][0].apply(exports,arguments) +},{"dup":17,"lodash._isnative":23,"lodash.isobject":25,"lodash.noop":24}],23:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],24:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],25:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":31}],26:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1928,39 +1691,27 @@ module.exports = isFunction; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var objectTypes = require('lodash._objecttypes'); /** - * Checks if `value` is the language type of Object. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * Checks if `value` is a function. * * @static * @memberOf _ * @category Objects * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an object, else `false`. + * @returns {boolean} Returns `true` if the `value` is a function, else `false`. * @example * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); + * _.isFunction(_); * // => true - * - * _.isObject(1); - * // => false */ -function isObject(value) { - // check if the value is the ECMAScript language type of Object - // http://es5.github.io/#x8 - // and avoid a V8 bug - // http://code.google.com/p/v8/issues/detail?id=2291 - return !!(value && objectTypes[typeof value]); +function isFunction(value) { + return typeof value == 'function'; } -module.exports = isObject; +module.exports = isFunction; -},{"lodash._objecttypes":16}],32:[function(require,module,exports){ +},{}],27:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1969,64 +1720,38 @@ module.exports = isObject; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var isNative = require('lodash._isnative'), - isObject = require('lodash.isobject'), - shimKeys = require('lodash._shimkeys'); - -/* Native method shortcuts for methods with the same name as other `lodash` methods */ -var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys; /** - * Creates an array composed of the own enumerable property names of an object. + * Slices the `collection` from the `start` index up to, but not including, + * the `end` index. * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. - * @example + * Note: This function is used instead of `Array#slice` to support node lists + * in IE < 9 and to ensure dense arrays are returned. * - * _.keys({ 'one': 1, 'two': 2, 'three': 3 }); - * // => ['one', 'two', 'three'] (property order is not guaranteed across environments) + * @private + * @param {Array|Object|string} collection The collection to slice. + * @param {number} start The start index. + * @param {number} end The end index. + * @returns {Array} Returns the new array. */ -var keys = !nativeKeys ? shimKeys : function(object) { - if (!isObject(object)) { - return []; +function slice(array, start, end) { + start || (start = 0); + if (typeof end == 'undefined') { + end = array ? array.length : 0; } - return nativeKeys(object); -}; - -module.exports = keys; - -},{"lodash._isnative":14,"lodash._shimkeys":20,"lodash.isobject":31}],33:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ + var index = -1, + length = end - start || 0, + result = Array(length < 0 ? 0 : length); -/** - * A no-operation function. - * - * @static - * @memberOf _ - * @category Utilities - * @example - * - * var object = { 'name': 'fred' }; - * _.noop(object) === undefined; - * // => true - */ -function noop() { - // no operation performed + while (++index < length) { + result[index] = array[start + index]; + } + return result; } -module.exports = noop; +module.exports = slice; -},{}],34:[function(require,module,exports){ +},{}],28:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -2037,38 +1762,26 @@ module.exports = noop; */ /** - * Creates a "_.pluck" style function, which returns the `key` value of a - * given object. + * This method returns the first argument provided to it. * * @static * @memberOf _ * @category Utilities - * @param {string} key The name of the property to retrieve. - * @returns {Function} Returns the new function. + * @param {*} value Any value. + * @returns {*} Returns `value`. * @example * - * var characters = [ - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 36 } - * ]; - * - * var getName = _.property('name'); - * - * _.map(characters, getName); - * // => ['barney', 'fred'] - * - * _.sortBy(characters, getName); - * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] + * var object = { 'name': 'fred' }; + * _.identity(object) === object; + * // => true */ -function property(key) { - return function(object) { - return object[key]; - }; +function identity(value) { + return value; } -module.exports = property; +module.exports = identity; -},{}],35:[function(require,module,exports){ +},{}],29:[function(require,module,exports){ (function (global){ /** * Lo-Dash 2.4.1 (Custom Build) @@ -2112,1574 +1825,2001 @@ support.funcNames = typeof Function.name == 'string'; module.exports = support; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"lodash._isnative":14}],36:[function(require,module,exports){ -/** @jsx React.DOM */ +},{"lodash._isnative":30}],30:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],31:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ -var React = require("react"); +/** Used to determine if values are of the language type Object */ +var objectTypes = { + 'boolean': false, + 'function': true, + 'object': true, + 'number': false, + 'string': false, + 'undefined': false +}; -/* You know when you want to propagate input to a parent... - * but then that parent does something with the input... - * then changing the props of the input... - * on every keystroke... - * so if some input is invalid or incomplete... - * the input gets reset or otherwise effed... - * - * This is the solution. - * - * Enough melodrama. Its an input that only sends changes - * to its parent on blur. +module.exports = objectTypes; + +},{}],32:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license */ -var BlurInput = React.createClass({displayName: 'BlurInput', - propTypes: { - value: React.PropTypes.string.isRequired, - onChange: React.PropTypes.func.isRequired - }, - getInitialState: function() { - return { value: this.props.value }; - }, - render: function() { - return this.transferPropsTo(React.DOM.input( - {type:"text", - value:this.state.value, - onChange:this.handleChange, - onBlur:this.handleBlur} )); - }, - componentWillReceiveProps: function(nextProps) { - this.setState({ value: nextProps.value }); - }, - handleChange: function(e) { - this.setState({ value: e.target.value }); - }, - handleBlur: function(e) { - this.props.onChange(e.target.value); - } -}); +var isNative = require('lodash._isnative'), + isObject = require('lodash.isobject'), + shimKeys = require('lodash._shimkeys'); -module.exports = BlurInput; +/* Native method shortcuts for methods with the same name as other `lodash` methods */ +var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys; -},{"react":45}],37:[function(require,module,exports){ -/** @jsx React.DOM */ - -var React = require('react'); -var RCSS = require('rcss'); -var _ = require('underscore'); - -var outerStyle = { - display: 'inline-block', +/** + * Creates an array composed of the own enumerable property names of an object. + * + * @static + * @memberOf _ + * @category Objects + * @param {Object} object The object to inspect. + * @returns {Array} Returns an array of property names. + * @example + * + * _.keys({ 'one': 1, 'two': 2, 'three': 3 }); + * // => ['one', 'two', 'three'] (property order is not guaranteed across environments) + */ +var keys = !nativeKeys ? shimKeys : function(object) { + if (!isObject(object)) { + return []; + } + return nativeKeys(object); }; -var buttonStyle = { - backgroundColor: 'white', - border: '1px solid #ccc', - borderBottom: '1px solid #ccc', - borderLeft: '0', - cursor: 'pointer', - margin: '0', - padding: '5px 10px', - position: 'relative', // for hover +module.exports = keys; - ':first-child': { - borderLeft: '1px solid #ccc', - borderTopLeftRadius: '3px', - borderBottomLeftRadius: '3px' - }, +},{"lodash._isnative":33,"lodash._shimkeys":34,"lodash.isobject":35}],33:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],34:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var objectTypes = require('lodash._objecttypes'); - ':last-child': { - borderRight: '1px solid #ccc', - borderTopRightRadius: '3px', - borderBottomRightRadius: '3px' - }, +/** Used for native method references */ +var objectProto = Object.prototype; - ':hover': { - backgroundColor: '#ccc' - }, +/** Native method shortcuts */ +var hasOwnProperty = objectProto.hasOwnProperty; - ':focus': { - zIndex: '2' +/** + * A fallback implementation of `Object.keys` which produces an array of the + * given object's own enumerable property names. + * + * @private + * @type Function + * @param {Object} object The object to inspect. + * @returns {Array} Returns an array of property names. + */ +var shimKeys = function(object) { + var index, iterable = object, result = []; + if (!iterable) return result; + if (!(objectTypes[typeof object])) return result; + for (index in iterable) { + if (hasOwnProperty.call(iterable, index)) { + result.push(index); + } } + return result }; -var selectedStyle = { - backgroundColor: '#ddd' -}; +module.exports = shimKeys; -RCSS.createClass(outerStyle); -RCSS.createClass(buttonStyle); -RCSS.createClass(selectedStyle); +},{"lodash._objecttypes":31}],35:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":31}],36:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var escapeHtmlChar = require('lodash._escapehtmlchar'), + keys = require('lodash.keys'), + reUnescapedHtml = require('lodash._reunescapedhtml'); -/* ButtonGroup is an aesthetically pleasing group of buttons. - * - * The class requires these properties: - * buttons - an array of objects with keys: - * "value": this is the value returned when the button is selected - * "text": this is the text shown on the button - * "title": this is the title-text shown on hover - * onChange - a function that is provided with the updated value - * (which it then is responsible for updating) +/** + * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their + * corresponding HTML entities. * - * The class has these optional properties: - * value - the initial value of the button selected, defaults to null. - * allowEmpty - if false, exactly one button _must_ be selected; otherwise - * it defaults to true and _at most_ one button (0 or 1) may be selected. + * @static + * @memberOf _ + * @category Utilities + * @param {string} string The string to escape. + * @returns {string} Returns the escaped string. + * @example * - * Requires stylesheets/perseus-admin-package/editor.less to look nice. + * _.escape('Fred, Wilma, & Pebbles'); + * // => 'Fred, Wilma, & Pebbles' */ +function escape(string) { + return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); +} -var ButtonGroup = React.createClass({displayName: 'ButtonGroup', - propTypes: { - value: React.PropTypes.any, - buttons: React.PropTypes.arrayOf(React.PropTypes.shape({ - value: React.PropTypes.any.isRequired, - text: React.PropTypes.renderable, - title: React.PropTypes.string - })).isRequired, - onChange: React.PropTypes.func.isRequired, - allowEmpty: React.PropTypes.bool - }, +module.exports = escape; - getDefaultProps: function() { - return { - value: null, - allowEmpty: true - }; - }, +},{"lodash._escapehtmlchar":37,"lodash._reunescapedhtml":39,"lodash.keys":41}],37:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var htmlEscapes = require('lodash._htmlescapes'); - render: function() { - var value = this.props.value; - var buttons = _(this.props.buttons).map(function(button, i) { - var maybeSelected = button.value === value ? - selectedStyle.className : - ""; - return React.DOM.button( {title:button.title, - id:"" + i, - ref:"button" + i, - key:"" + i, - className:(buttonStyle.className + " " + maybeSelected), - onClick:this.toggleSelect.bind(this, button.value)}, - button.text || "" + button.value - ); - }.bind(this)); +/** + * Used by `escape` to convert characters to HTML entities. + * + * @private + * @param {string} match The matched character to escape. + * @returns {string} Returns the escaped character. + */ +function escapeHtmlChar(match) { + return htmlEscapes[match]; +} - return React.DOM.div( {className:outerStyle.className}, - buttons - ); - }, +module.exports = escapeHtmlChar; - focus: function() { - this.getDOMNode().focus(); - return true; - }, +},{"lodash._htmlescapes":38}],38:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ - toggleSelect: function(newValue) { - var value = this.props.value; +/** + * Used to convert characters to HTML entities: + * + * Though the `>` character is escaped for symmetry, characters like `>` and `/` + * don't require escaping in HTML and have no special meaning unless they're part + * of a tag or an unquoted attribute value. + * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") + */ +var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' +}; - if (this.props.allowEmpty) { - // Select the new button or unselect if it's already selected - this.props.onChange(value !== newValue ? newValue : null); - } else { - this.props.onChange(newValue); - } - } -}); +module.exports = htmlEscapes; -module.exports = ButtonGroup; +},{}],39:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var htmlEscapes = require('lodash._htmlescapes'), + keys = require('lodash.keys'); -},{"rcss":40,"react":45,"underscore":46}],38:[function(require,module,exports){ -/** @jsx React.DOM */ +/** Used to match HTML entities and HTML characters */ +var reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); -var React = require('react'); +module.exports = reUnescapedHtml; -/* This component makes its children a drag target. Example: - * - * Drag to me - * - * ... - * - * handleDrop: function(e) { - * this.addImages(e.nativeEvent.dataTransfer.files); - * } - * - * Now "Drag to me" will be a drag target - when something is dragged over it, - * the element will become partially transparent as a visual indicator that - * it's a target. - */ -// TODO(joel) - indicate before the hover is over the target that it's possible -// to drag into the target. This would (I think) require a high level handler - -// like on Perseus itself, waiting for onDragEnter, then passing down the -// event. Sounds like a pain. Possible workaround - create a div covering the -// entire page... -// -// Other extensions: -// * custom styles for global drag and dragOver -// * only respond to certain types of drags (only images for instance)! -var DragTarget = React.createClass({displayName: 'DragTarget', - propTypes: { - onDrop: React.PropTypes.func.isRequired, - component: React.PropTypes.component, - shouldDragHighlight: React.PropTypes.func - }, - render: function() { - var opacity = this.state.dragHover ? { "opacity": 0.3 } : {}; - var component = this.props.component; - - return this.transferPropsTo( - component( {style:opacity, - onDrop:this.handleDrop, - onDragEnd:this.handleDragEnd, - onDragOver:this.handleDragOver, - onDragEnter:this.handleDragEnter, - onDragLeave:this.handleDragLeave}, - this.props.children - ) - ); - }, - getInitialState: function() { - return { dragHover: false }; - }, - getDefaultProps: function() { - return { - component: React.DOM.div, - shouldDragHighlight: function() {return true;} - }; - }, - handleDrop: function(e) { - e.stopPropagation(); - e.preventDefault(); - this.setState({ dragHover: false }); - this.props.onDrop(e); - }, - handleDragEnd: function() { - this.setState({ dragHover: false }); - }, - handleDragOver: function(e) { - e.preventDefault(); - }, - handleDragLeave: function() { - this.setState({ dragHover: false }); - }, - handleDragEnter: function(e) { - this.setState({ dragHover: this.props.shouldDragHighlight(e) }); - } -}); - -module.exports = DragTarget; - -},{"react":45}],39:[function(require,module,exports){ -/** @jsx React.DOM */ - -var React = require('react'); -var RCSS = require('rcss'); -var _ = require('underscore'); - -var colors = { - grayLight: '#aaa', - basicBorderColor: '#ccc', - white: '#fff' -}; - -var infoTip = { - display: 'inline-block', - marginLeft: '5px', - position: 'relative' -}; - -var infoTipI = { - cursor: 'pointer' -}; - -var infoTipContainer = { - position: 'absolute', - 'top': '-12px', - left: '22px', - zIndex: '1000' -}; - -var triangleBeforeAfter = { - borderBottom: '9px solid transparent', - borderTop: '9px solid transparent', - content: ' ', - height: '0', - position: 'absolute', - 'top': '0', - width: '0' -}; - -var infoTipTriangle = { - height: '10px', - left: '0', - position: 'absolute', - 'top': '8px', - width: '0', - zIndex: '1', - - ':before': _.extend({}, triangleBeforeAfter, { - borderRight: '9px solid #bbb', - right: '0', - }), - - ':after': _.extend({}, triangleBeforeAfter, { - borderRight: ("9px solid " + colors.white), - right: '-1px' - }) -}; - -var basicBorder = { - border: ("1px solid " + colors.basicBorderColor) -}; - -var boxShadow = function(str) { return { boxShadow: str }; }; - -var verticalShadow = RCSS.merge( - basicBorder, - boxShadow(("0 1px 3px " + colors.basicBorderColor)), - { borderBottom: ("1px solid " + colors.grayLight) } -); - -var infoTipContentContainer = RCSS.merge(verticalShadow, { - background: colors.white, - padding: '5px 10px', - width: '240px' -}); - -RCSS.createClass(infoTip); -RCSS.createClass(infoTipI); -RCSS.createClass(infoTipTriangle); -RCSS.createClass(verticalShadow); -RCSS.createClass(infoTipContainer); -RCSS.createClass(infoTipContentContainer); - -var questionMark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2N2M3NTAxYS04YmVlLTQ0M2MtYmRiNS04OGM2N2IxN2NhYzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUJCRTk4Qjc4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUJCRTk4QjY4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGE5ZDI0OTMtODk1NC00OGFkLTlhMTgtZDAwM2MwYWNjNDJlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY3Yzc1MDFhLThiZWUtNDQzYy1iZGI1LTg4YzY3YjE3Y2FjMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqm89uYAAADMSURBVHjaXJA9DoJAEIUH1M4TUHIFsCMGen9OwCGw1YRGW2ntKel0exsojHIBC0ouQAyUviFDstmXfNmZeS+zm7XSNCXRFiRgJf0bXIHixpbhGdxBBJYC1w/xaA424MhNEATkui71fU9KqfEU78UbD9PdbJRlOdae55GmhIP+1NV1TcMwkOM41DSNHvRtMhTHMRVFQW3b6mOLgx99kue5GRp/gIOZuZGvNpTNwjD8oliANU+qqqKu6/TQBdymN57AHjzBT+B6Jx79BRgAvc49kQA4yxgAAAAASUVORK5CYII='; // @NoLint - -var InfoTip = React.createClass({displayName: 'InfoTip', - getInitialState: function() { - return { - hover: false - }; - }, - - render: function() { - return React.DOM.div( {className:infoTip.className}, - React.DOM.img( {width:10, - height:10, - src:questionMark, - onMouseEnter:this.handleMouseEnter, - onMouseLeave:this.handleMouseLeave} ), - React.DOM.div( {className:infoTipContainer.className, - style:{display: this.state.hover ? 'block' : 'none'}}, - React.DOM.div( {className:infoTipTriangle.className} ), - /* keep the classes here - used for selectors on KA */ - React.DOM.div( {className:infoTipContentContainer.className}, - this.props.children - ) - ) - ); - }, - - handleMouseEnter: function() { - this.setState({hover: true}); - }, - - handleMouseLeave: function() { - this.setState({hover: false}); - } -}); - -module.exports = InfoTip; - -},{"rcss":40,"react":45,"underscore":46}],40:[function(require,module,exports){ -var assign = require('lodash.assign'); - -var styleRuleValidator = require('./styleRuleValidator'); -var styleRuleConverter = require('./styleRuleConverter'); -var mediaQueryValidator = require('valid-media-queries'); - -var existingClasses = {}; -var styleTag = createStyleTag(); - -var classNameId = 0; -var randomSuffix = Math.random().toString(36).slice(-5); - -function generateValidCSSClassName() { - // CSS classNames can't start with a number. - return 'c' + (classNameId++) + '-' + randomSuffix; -} - -function objToCSS(style) { - var serialized = ''; - for (var propName in style) { - // we put that ourselves - if (propName == 'className') continue; - - var cssPropName = styleRuleConverter.hyphenateProp(propName); - if (!styleRuleValidator.isValidProp(cssPropName)) { - console.warn( - '%s (transformed into %s) is not a valid CSS property name.', propName, cssPropName - ); - continue; - } - - var styleValue = style[propName]; - if (!styleRuleValidator.isValidValue(styleValue)) continue; - - if (styleValue !== null) { - serialized += cssPropName + ':'; - serialized += styleRuleConverter.escapeValueForProp(styleValue, - cssPropName) + ';'; - } - } - return serialized || null; -} - -function createStyleTag() { - var tag = document.createElement('style'); - document.getElementsByTagName('head')[0].appendChild(tag); - return tag; +},{"lodash._htmlescapes":40,"lodash.keys":41}],40:[function(require,module,exports){ +arguments[4][38][0].apply(exports,arguments) +},{"dup":38}],41:[function(require,module,exports){ +arguments[4][32][0].apply(exports,arguments) +},{"dup":32,"lodash._isnative":42,"lodash._shimkeys":43,"lodash.isobject":45}],42:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],43:[function(require,module,exports){ +arguments[4][34][0].apply(exports,arguments) +},{"dup":34,"lodash._objecttypes":44}],44:[function(require,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"dup":31}],45:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":46}],46:[function(require,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"dup":31}],47:[function(require,module,exports){ +var _validCSSProps = { + 'alignment-adjust': true, + 'alignment-baseline': true, + 'animation': true, + 'animation-delay': true, + 'animation-direction': true, + 'animation-duration': true, + 'animation-iteration-count': true, + 'animation-name': true, + 'animation-play-state': true, + 'animation-timing-function': true, + 'appearance': true, + 'backface-visibility': true, + 'background': true, + 'background-attachment': true, + 'background-clip': true, + 'background-color': true, + 'background-image': true, + 'background-origin': true, + 'background-position': true, + 'background-repeat': true, + 'background-size': true, + 'baseline-shift': true, + 'bookmark-label': true, + 'bookmark-level': true, + 'bookmark-target': true, + 'border': true, + 'border-bottom': true, + 'border-bottom-color': true, + 'border-bottom-left-radius': true, + 'border-bottom-right-radius': true, + 'border-bottom-style': true, + 'border-bottom-width': true, + 'border-collapse': true, + 'border-color': true, + 'border-image': true, + 'border-image-outset': true, + 'border-image-repeat': true, + 'border-image-slice': true, + 'border-image-source': true, + 'border-image-width': true, + 'border-left': true, + 'border-left-color': true, + 'border-left-style': true, + 'border-left-width': true, + 'border-radius': true, + 'border-right': true, + 'border-right-color': true, + 'border-right-style': true, + 'border-right-width': true, + 'border-spacing': true, + 'border-style': true, + 'border-top': true, + 'border-top-color': true, + 'border-top-left-radius': true, + 'border-top-right-radius': true, + 'border-top-style': true, + 'border-top-width': true, + 'border-width': true, + 'bottom': true, + 'box-align': true, + 'box-decoration-break': true, + 'box-direction': true, + 'box-flex': true, + 'box-flex-group': true, + 'box-lines': true, + 'box-ordinal-group': true, + 'box-orient': true, + 'box-pack': true, + 'box-shadow': true, + 'box-sizing': true, + 'caption-side': true, + 'clear': true, + 'clip': true, + 'color': true, + 'color-profile': true, + 'column-count': true, + 'column-fill': true, + 'column-gap': true, + 'column-rule': true, + 'column-rule-color': true, + 'column-rule-style': true, + 'column-rule-width': true, + 'column-span': true, + 'column-width': true, + 'columns': true, + 'content': true, + 'counter-increment': true, + 'counter-reset': true, + 'crop': true, + 'cursor': true, + 'direction': true, + 'display': true, + 'dominant-baseline': true, + 'drop-initial-after-adjust': true, + 'drop-initial-after-align': true, + 'drop-initial-before-adjust': true, + 'drop-initial-before-align': true, + 'drop-initial-size': true, + 'drop-initial-value': true, + 'empty-cells': true, + 'fit': true, + 'fit-position': true, + 'float': true, + 'float-offset': true, + 'font': true, + 'font-family': true, + 'font-size': true, + 'font-size-adjust': true, + 'font-stretch': true, + 'font-style': true, + 'font-variant': true, + 'font-weight': true, + 'grid-columns': true, + 'grid-rows': true, + 'hanging-punctuation': true, + 'height': true, + 'hyphenate-after': true, + 'hyphenate-before': true, + 'hyphenate-character': true, + 'hyphenate-lines': true, + 'hyphenate-resource': true, + 'hyphens': true, + 'icon': true, + 'image-orientation': true, + 'image-resolution': true, + 'inline-box-align': true, + 'left': true, + 'letter-spacing': true, + 'line-height': true, + 'line-stacking': true, + 'line-stacking-ruby': true, + 'line-stacking-shift': true, + 'line-stacking-strategy': true, + 'list-style': true, + 'list-style-image': true, + 'list-style-position': true, + 'list-style-type': true, + 'margin': true, + 'margin-bottom': true, + 'margin-left': true, + 'margin-right': true, + 'margin-top': true, + 'mark': true, + 'mark-after': true, + 'mark-before': true, + 'marks': true, + 'marquee-direction': true, + 'marquee-play-count': true, + 'marquee-speed': true, + 'marquee-style': true, + 'max-height': true, + 'max-width': true, + 'min-height': true, + 'min-width': true, + 'move-to': true, + 'nav-down': true, + 'nav-index': true, + 'nav-left': true, + 'nav-right': true, + 'nav-up': true, + 'opacity': true, + 'orphans': true, + 'outline': true, + 'outline-color': true, + 'outline-offset': true, + 'outline-style': true, + 'outline-width': true, + 'overflow': true, + 'overflow-style': true, + 'overflow-x': true, + 'overflow-y': true, + 'padding': true, + 'padding-bottom': true, + 'padding-left': true, + 'padding-right': true, + 'padding-top': true, + 'page': true, + 'page-break-after': true, + 'page-break-before': true, + 'page-break-inside': true, + 'page-policy': true, + 'perspective': true, + 'perspective-origin': true, + 'phonemes': true, + 'position': true, + 'punctuation-trim': true, + 'quotes': true, + 'rendering-intent': true, + 'resize': true, + 'rest': true, + 'rest-after': true, + 'rest-before': true, + 'right': true, + 'rotation': true, + 'rotation-point': true, + 'ruby-align': true, + 'ruby-overhang': true, + 'ruby-position': true, + 'ruby-span': true, + 'size': true, + 'string-set': true, + 'table-layout': true, + 'target': true, + 'target-name': true, + 'target-new': true, + 'target-position': true, + 'text-align': true, + 'text-align-last': true, + 'text-decoration': true, + 'text-height': true, + 'text-indent': true, + 'text-justify': true, + 'text-outline': true, + 'text-overflow': true, + 'text-shadow': true, + 'text-transform': true, + 'text-wrap': true, + 'top': true, + 'transform': true, + 'transform-origin': true, + 'transform-style': true, + 'transition': true, + 'transition-delay': true, + 'transition-duration': true, + 'transition-property': true, + 'transition-timing-function': true, + 'unicode-bidi': true, + 'user-select': true, + 'vertical-align': true, + 'visibility': true, + 'voice-balance': true, + 'voice-duration': true, + 'voice-pitch': true, + 'voice-pitch-range': true, + 'voice-rate': true, + 'voice-stress': true, + 'voice-volume': true, + 'white-space': true, + 'widows': true, + 'width': true, + 'word-break': true, + 'word-spacing': true, + 'word-wrap': true, + 'z-index': true } -function styleToCSS(style) { - var styleStr = '.' + style.className + '{'; - styleStr += objToCSS(style.value); - styleStr += '}'; +var vendorPrefixRegEx = /^-.+-/; - if (style.media) { - if (!mediaQueryValidator(style.media)) { - console.log('%s is not a valid media query.', style.media); - } - styleStr = style.media + '{' + styleStr + '}'; +module.exports = function(prop) { + if (prop[0] === '-') { + return !!_validCSSProps[prop.replace(vendorPrefixRegEx, '')]; } + return !!_validCSSProps[prop]; +}; - return styleStr; -} - -// TODO: support media queries -function parseStyles(className, styleObj) { - var mainStyle = { - className: className, - value: {} - }; - var styles = [mainStyle]; - - Object.keys(styleObj).forEach(function(k){ - // pseudo-selector, insert a new rule - if (k[0] === ':') { - styles.push({ - className: className+k, - value: styleObj[k] - }); - return; - } else if (k.substring(0, 6) === '@media') { - styles.push({ - className: className, - value: styleObj[k], - media: k - }); - return; - } - - // normal rule, insert into main one - mainStyle.value[k] = styleObj[k]; - }); +},{}],48:[function(require,module,exports){ +var every = require('lodash.every'); - return styles; +function isValidRatio(ratio) { + var re = /\d+\/\d+/; + return !!ratio.match(re); } -function insertStyle(className, styleObj) { - var styles = parseStyles(className, styleObj); - var styleStr = styles.map(styleToCSS).join(''); - styleTag.innerHTML += styleStr; +function isValidInteger(integer) { + var re = /\d+/; + return !!integer.match(re); } -var RCSS = { - merge: function(a, b, c, d, e) { - return assign({}, a, b, c, d, e); - }, - - createClass: function(styleObj) { - var styleId = JSON.stringify(styleObj); - var className; - - if (existingClasses[styleId]) { - // already exists, use the existing className - className = existingClasses[styleId]; - } else { - // generate a new class and insert it - className = generateValidCSSClassName(); - existingClasses[styleId] = className; - insertStyle(className, styleObj); - } - - styleObj.className = className; - return styleObj; - } -}; - -module.exports = RCSS; - -},{"./styleRuleConverter":41,"./styleRuleValidator":42,"lodash.assign":22,"valid-media-queries":48}],41:[function(require,module,exports){ -var escape = require('lodash.escape'); - -var _uppercasePattern = /([A-Z])/g; - -function hyphenateProp(string) { - return string.replace(_uppercasePattern, '-$1').toLowerCase(); +function isValidLength(length) { + var re = /\d+(?:ex|em|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc)?$/; + return !!length.match(re); } -function escapeValueForProp(value, prop) { - // 'content' is a special property that must be quoted - if (prop === 'content') { - return '"' + value + '"'; - } - return escape(value); +function isValidOrientation(orientation) { + return orientation === 'landscape' || orientation === 'portrait'; } -module.exports = { - hyphenateProp: hyphenateProp, - escapeValueForProp: escapeValueForProp -}; - -},{"lodash.escape":25}],42:[function(require,module,exports){ -var isValidCSSProps = require('valid-css-props'); +function isValidScan(scan) { + return scan === 'progressive' || scan === 'interlace'; +} -function isValidProp(prop) { - return isValidCSSProps(prop); +function isValidResolution(resolution) { + var re = /(?:\+|-)?(?:\d+|\d*\.\d+)(?:e\d+)?(?:dpi|dpcm|dppx)$/; + return !!resolution.match(re); } function isValidValue(value) { return value != null && typeof value !== 'boolean' && value !== ''; } -module.exports = { - isValidProp: isValidProp, - isValidValue: isValidValue +var _mediaFeatureValidator = { + 'width': isValidLength, + 'min-width': isValidLength, + 'max-width': isValidLength, + 'height': isValidLength, + 'min-height': isValidLength, + 'max-height': isValidLength, + 'device-width': isValidLength, + 'min-device-width': isValidLength, + 'max-device-width': isValidLength, + 'device-height': isValidLength, + 'min-device-height': isValidLength, + 'max-device-height': isValidLength, + 'aspect-ratio': isValidRatio, + 'min-aspect-ratio': isValidRatio, + 'max-aspect-ratio': isValidRatio, + 'device-aspect-ratio': isValidRatio, + 'min-device-aspect-ratio': isValidRatio, + 'max-device-aspect-ratio': isValidRatio, + 'color': isValidValue, + 'min-color': isValidValue, + 'max-color': isValidValue, + 'color-index': isValidInteger, + 'min-color-index': isValidInteger, + 'max-color-index': isValidInteger, + 'monochrome': isValidInteger, + 'min-monochrome': isValidInteger, + 'max-monochrome': isValidInteger, + 'resolution': isValidResolution, + 'min-resolution': isValidResolution, + 'max-resolution': isValidResolution, + 'scan': isValidScan, + 'grid': isValidInteger, + 'orientation': isValidOrientation }; -},{"valid-css-props":47}],43:[function(require,module,exports){ -/** @jsx React.DOM */ -/** - * For math rendered using KaTex and/or MathJax. Use me like 2x + 3. - */ -// TODO(joel) - require MathJax / katex so they don't have to be global +var _validMediaFeatures = { + 'width': true, + 'min-width': true, + 'max-width': true, + 'height': true, + 'min-height': true, + 'max-height': true, + 'device-width': true, + 'min-device-width': true, + 'max-device-width': true, + 'device-height': true, + 'min-device-height': true, + 'max-device-height': true, + 'aspect-ratio': true, + 'min-aspect-ratio': true, + 'max-aspect-ratio': true, + 'device-aspect-ratio': true, + 'min-device-aspect-ratio': true, + 'max-device-aspect-ratio': true, + 'color': true, + 'min-color': true, + 'max-color': true, + 'color-index': true, + 'min-color-index': true, + 'max-color-index': true, + 'monochrome': true, + 'min-monochrome': true, + 'max-monochrome': true, + 'resolution': true, + 'min-resolution': true, + 'max-resolution': true, + 'scan': true, + 'grid': true, + 'orientation': true +}; -var React = require('react'); +var _validMediaTypes = { + 'all': true, + 'aural': true, + 'braille': true, + 'handheld': true, + 'print': true, + 'projection': true, + 'screen': true, + 'tty': true, + 'tv': true, + 'embossed': true +}; -var pendingScripts = []; -var needsProcess = false; -var timeout = null; +var _validQualifiers = { + 'not': true, + 'only': true +}; -function process(script, callback) { - pendingScripts.push(script); - if (!needsProcess) { - needsProcess = true; - timeout = setTimeout(doProcess, 0, callback); - } +function isValidFeature(feature) { + return !!_validMediaFeatures[feature]; } -function doProcess(callback) { - MathJax.Hub.Queue(function() { - var oldElementScripts = MathJax.Hub.elementScripts; - MathJax.Hub.elementScripts = function(element) { - var scripts = pendingScripts; - pendingScripts = []; - needsProcess = false; - return scripts; - }; - - try { - return MathJax.Hub.Process(null, callback); - } catch (e) { - // IE8 requires `catch` in order to use `finally` - throw e; - } finally { - MathJax.Hub.elementScripts = oldElementScripts; - } - }); +function isValidQualifier(qualifier) { + return !!_validQualifiers[qualifier]; } -var TeX = React.createClass({displayName: 'TeX', - getDefaultProps: function() { - return { - // Called after math is rendered or re-rendered - onRender: function() {} - }; - }, +function isValidMediaType(mediaType) { + return !!_validMediaTypes[mediaType]; +} - render: function() { - return React.DOM.span( {style:this.props.style}, - React.DOM.span( {ref:"mathjax"} ), - React.DOM.span( {ref:"katex"} ) - ); - }, +function isValidQualifiedMediaType(mediaType) { + var terms = mediaType.trim().split(/\s+/); + switch (terms.length) { + case 1: + return isValidMediaType(terms[0]); + case 2: + return isValidQualifier(terms[0]) && isValidMediaType(terms[1]); + default: + return false; + } +} - componentDidMount: function() { - var text = this.props.children; - var onRender = this.props.onRender; +function isValidExpression(expression) { + if (expression.length < 2) { + return false; + } - try { - var katexHolder = this.refs.katex.getDOMNode(); - katex.process(text, katexHolder); - onRender(); - return; - } catch (e) { - /* jshint -W103 */ - if (e.__proto__ !== katex.ParseError.prototype) { - /* jshint +W103 */ - throw e; - } - } + // Parentheses are required around expressions + if (expression[0] !== '(' || expression[expression.length - 1] !== ')') { + return false; + } - this.setScriptText(text); - process(this.script, onRender); - }, + // Remove parentheses and spacess + expression = expression.substring(1, expression.length - 1); - componentDidUpdate: function(prevProps, prevState) { - var oldText = prevProps.children; - var newText = this.props.children; - var onRender = this.props.onRender; + // Is there a value to accompany the media feature? + var featureAndValue = expression.split(/\s*:\s*/); + switch (featureAndValue.length) { + case 1: + var feature = featureAndValue[0].trim(); + return isValidFeature(feature); + case 2: + var feature = featureAndValue[0].trim(); + var value = featureAndValue[1].trim(); + return isValidFeature(feature) && + _mediaFeatureValidator[feature](value); + default: + return false; + } +} - if (oldText !== newText) { - try { - var katexHolder = this.refs.katex.getDOMNode(); - katex.process(newText, katexHolder); - if (this.script) { - var jax = MathJax.Hub.getJaxFor(this.script); - if (jax) { - jax.Remove(); - } - } - onRender(); - return; - } catch (e) { - /* jshint -W103 */ - if (e.__proto__ !== katex.ParseError.prototype) { - /* jshint +W103 */ - throw e; - } - } +function isValidMediaQuery(query) { + var andSplitter = /\s+and\s+/; + var queryTerms = query.split(andSplitter); + return (isValidQualifiedMediaType(queryTerms[0]) || + isValidExpression(queryTerms[0])) && + every(queryTerms.slice(1), isValidExpression); +} - $(this.refs.katex.getDOMNode()).empty(); +function isValidMediaQueryList(mediaQuery) { + mediaQuery = mediaQuery.toLowerCase(); - if (this.script) { - var component = this; - MathJax.Hub.Queue(function() { - var jax = MathJax.Hub.getJaxFor(component.script); - if (jax) { - return jax.Text(newText, onRender); - } else { - component.setScriptText(newText); - process(component.script, onRender); - } - }); - } else { - this.setScriptText(newText); - process(this.script, onRender); - } - } - }, + if (mediaQuery.substring(0, 6) !== '@media') { + return false; + } - setScriptText: function(text) { - if (!this.script) { - this.script = document.createElement("script"); - this.script.type = "math/tex"; - this.refs.mathjax.getDOMNode().appendChild(this.script); - } - if ("text" in this.script) { - // IE8, etc - this.script.text = text; - } else { - this.script.textContent = text; - } - }, + var commaSplitter = /\s*,\s*/; + var queryList = mediaQuery.substring(7, mediaQuery.length) + .split(commaSplitter); + return every(queryList, isValidMediaQuery); +} - componentWillUnmount: function() { - if (this.script) { - var jax = MathJax.Hub.getJaxFor(this.script); - if (jax) { - jax.Remove(); - } - } - } -}); +module.exports = isValidMediaQueryList -module.exports = TeX; +},{"lodash.every":49}],49:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var createCallback = require('lodash.createcallback'), + forOwn = require('lodash.forown'); -},{"react":45}],44:[function(require,module,exports){ -/** @jsx React.DOM */ +/** + * Checks if the given callback returns truey value for **all** elements of + * a collection. The callback is bound to `thisArg` and invoked with three + * arguments; (value, index|key, collection). + * + * If a property name is provided for `callback` the created "_.pluck" style + * callback will return the property value of the given element. + * + * If an object is provided for `callback` the created "_.where" style callback + * will return `true` for elements that have the properties of the given object, + * else `false`. + * + * @static + * @memberOf _ + * @alias all + * @category Collections + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [callback=identity] The function called + * per iteration. If a property name or object is provided it will be used + * to create a "_.pluck" or "_.where" style callback, respectively. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {boolean} Returns `true` if all elements passed the callback check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes']); + * // => false + * + * var characters = [ + * { 'name': 'barney', 'age': 36 }, + * { 'name': 'fred', 'age': 40 } + * ]; + * + * // using "_.pluck" callback shorthand + * _.every(characters, 'age'); + * // => true + * + * // using "_.where" callback shorthand + * _.every(characters, { 'age': 36 }); + * // => false + */ +function every(collection, callback, thisArg) { + var result = true; + callback = createCallback(callback, thisArg, 3); -var React = require("react"); -var _ = require("underscore"); + var index = -1, + length = collection ? collection.length : 0; -// TODO(joel/jack) fix z-index issues https://s3.amazonaws.com/uploads.hipchat.com/6574/29028/yOApjwmgiMhEZYJ/Screen%20Shot%202014-05-30%20at%203.34.18%20PM.png -// z-index: 3 on perseus-formats-tooltip seemed to work + if (typeof length == 'number') { + while (++index < length) { + if (!(result = !!callback(collection[index], index, collection))) { + break; + } + } + } else { + forOwn(collection, function(value, index, collection) { + return (result = !!callback(value, index, collection)); + }); + } + return result; +} +module.exports = every; + +},{"lodash.createcallback":50,"lodash.forown":86}],50:[function(require,module,exports){ /** - * A generic tooltip library for React.js + * Lo-Dash 2.4.4 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreateCallback = require('lodash._basecreatecallback'), + baseIsEqual = require('lodash._baseisequal'), + isObject = require('lodash.isobject'), + keys = require('lodash.keys'), + property = require('lodash.property'); + +/** + * Produces a callback bound to an optional `thisArg`. If `func` is a property + * name the created callback will return the property value for a given element. + * If `func` is an object the created callback will return `true` for elements + * that contain the equivalent object properties, otherwise it will return `false`. * - * This should eventually end up in react-components + * @static + * @memberOf _ + * @category Utilities + * @param {*} [func=identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of the created callback. + * @param {number} [argCount] The number of arguments the callback accepts. + * @returns {Function} Returns a callback function. + * @example * - * Interface: ({a, b} means one of a or b) - * var Tooltip = require("./tooltip.jsx"); - * - * - * - * - * + * var characters = [ + * { 'name': 'barney', 'age': 36 }, + * { 'name': 'fred', 'age': 40 } + * ]; * - * To show/hide the tooltip, the parent component should call the - * .show() and .hide() methods of the tooltip when appropriate. - * (These are usually set up as handlers of events on the target element.) + * // wrap to create custom callback shorthands + * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { + * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); + * return !match ? func(callback, thisArg) : function(object) { + * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; + * }; + * }); * - * Notes: - * className should not specify a border; that is handled by borderColor - * so that the arrow and tooltip match + * _.filter(characters, 'age__gt38'); + * // => [{ 'name': 'fred', 'age': 40 }] */ +function createCallback(func, thisArg, argCount) { + var type = typeof func; + if (func == null || type == 'function') { + return baseCreateCallback(func, thisArg, argCount); + } + // handle "_.pluck" style callback shorthands + if (type != 'object') { + return property(func); + } + var props = keys(func), + key = props[0], + a = func[key]; -// __,,--``\\ -// _,,-''`` \\ , -// '----------_.------'-.___|\__ -// _.--''`` `)__ )__ @\__ -// ( .. ''---/___,,E/__,E'------` -// `-''`'' -// Here be dragons. - -var zIndex = 10; - -var Triangle = React.createClass({displayName: 'Triangle', - propTypes: { - color: React.PropTypes.string.isRequired, - left: React.PropTypes.number.isRequired, - "top": React.PropTypes.number.isRequired, - width: React.PropTypes.number.isRequired, - height: React.PropTypes.number.isRequired, - horizontalDirection: React.PropTypes.oneOf( - ["left", "right"] - ).isRequired, - verticalDirection: React.PropTypes.oneOf( - ["top", "bottom"] - ).isRequired, - }, - - render: function() { - var borderLeft, borderRight, borderTop, borderBottom; + // handle "_.where" style callback shorthands + if (props.length == 1 && a === a && !isObject(a)) { + // fast path the common case of providing an object with a single + // property containing a primitive value + return function(object) { + var b = object[key]; + return a === b && (a !== 0 || (1 / a == 1 / b)); + }; + } + return function(object) { + var length = props.length, + result = false; - var hBorder = (this.props.width + "px solid transparent"); - if (this.props.horizontalDirection === "right") { - borderLeft = hBorder; - } else { - borderRight = hBorder; - } + while (length--) { + if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { + break; + } + } + return result; + }; +} - var vBorder = (this.props.height + "px solid " + this.props.color); - if (this.props.verticalDirection === "top") { - borderTop = vBorder; - } else { - borderBottom = vBorder; - } +module.exports = createCallback; - return React.DOM.div( {style:{ - display: "block", - height: 0, - width: 0, - position: "absolute", - left: this.props.left, - "top": this.props["top"], - borderLeft: borderLeft, - borderRight: borderRight, - borderTop: borderTop, - borderBottom: borderBottom - }} ); - } -}); +},{"lodash._basecreatecallback":51,"lodash._baseisequal":70,"lodash.isobject":79,"lodash.keys":81,"lodash.property":85}],51:[function(require,module,exports){ +arguments[4][10][0].apply(exports,arguments) +},{"dup":10,"lodash._setbinddata":52,"lodash.bind":55,"lodash.identity":67,"lodash.support":68}],52:[function(require,module,exports){ +arguments[4][11][0].apply(exports,arguments) +},{"dup":11,"lodash._isnative":53,"lodash.noop":54}],53:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],54:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],55:[function(require,module,exports){ +arguments[4][14][0].apply(exports,arguments) +},{"dup":14,"lodash._createwrapper":56,"lodash._slice":66}],56:[function(require,module,exports){ +arguments[4][15][0].apply(exports,arguments) +},{"dup":15,"lodash._basebind":57,"lodash._basecreatewrapper":61,"lodash._slice":66,"lodash.isfunction":65}],57:[function(require,module,exports){ +arguments[4][16][0].apply(exports,arguments) +},{"dup":16,"lodash._basecreate":58,"lodash._setbinddata":52,"lodash._slice":66,"lodash.isobject":79}],58:[function(require,module,exports){ +arguments[4][17][0].apply(exports,arguments) +},{"dup":17,"lodash._isnative":59,"lodash.isobject":79,"lodash.noop":60}],59:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],60:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],61:[function(require,module,exports){ +arguments[4][21][0].apply(exports,arguments) +},{"dup":21,"lodash._basecreate":62,"lodash._setbinddata":52,"lodash._slice":66,"lodash.isobject":79}],62:[function(require,module,exports){ +arguments[4][17][0].apply(exports,arguments) +},{"dup":17,"lodash._isnative":63,"lodash.isobject":79,"lodash.noop":64}],63:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],64:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],65:[function(require,module,exports){ +arguments[4][26][0].apply(exports,arguments) +},{"dup":26}],66:[function(require,module,exports){ +arguments[4][27][0].apply(exports,arguments) +},{"dup":27}],67:[function(require,module,exports){ +arguments[4][28][0].apply(exports,arguments) +},{"dup":28}],68:[function(require,module,exports){ +arguments[4][29][0].apply(exports,arguments) +},{"dup":29,"lodash._isnative":69}],69:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],70:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var forIn = require('lodash.forin'), + getArray = require('lodash._getarray'), + isFunction = require('lodash.isfunction'), + objectTypes = require('lodash._objecttypes'), + releaseArray = require('lodash._releasearray'); -var TooltipArrow = React.createClass({displayName: 'TooltipArrow', - propTypes: { - position: React.PropTypes.string, - visibility: React.PropTypes.string, - left: React.PropTypes.number, - "top": React.PropTypes.number, - color: React.PropTypes.string.isRequired, // a css color - border: React.PropTypes.string.isRequired, // a css color - width: React.PropTypes.number.isRequired, - height: React.PropTypes.number.isRequired, - horizontalDirection: React.PropTypes.oneOf( - ["left", "right"] - ).isRequired, - verticalDirection: React.PropTypes.oneOf( - ["top", "bottom"] - ).isRequired - }, +/** `Object#toString` result shortcuts */ +var argsClass = '[object Arguments]', + arrayClass = '[object Array]', + boolClass = '[object Boolean]', + dateClass = '[object Date]', + numberClass = '[object Number]', + objectClass = '[object Object]', + regexpClass = '[object RegExp]', + stringClass = '[object String]'; - getDefaultProps: function() { - return { - position: "relative", - visibility: "visible", - left: 0, - "top": 0 - }; - }, +/** Used for native method references */ +var objectProto = Object.prototype; - // TODO(jack): Think about adding a box-shadow to the triangle here - // See http://css-tricks.com/triangle-with-shadow/ - render: function() { - var isRight = (this.props.horizontalDirection === "right"); - var isTop = (this.props.verticalDirection === "top"); +/** Used to resolve the internal [[Class]] of values */ +var toString = objectProto.toString; - var frontTopOffset = isTop ? 0 : 1; - var borderTopOffset = isTop ? 0 : -1; +/** Native method shortcuts */ +var hasOwnProperty = objectProto.hasOwnProperty; - return React.DOM.div( {style:{ - display: "block", - position: this.props.position, - visibility: this.props.visibility, - left: this.props.left, - "top": this.props["top"], - width: this.props.width + 2, - height: this.props.height + 1, - marginTop: -1, - marginBottom: -2, - zIndex: zIndex - }}, - /* The background triangle used to create the effect of a - border around the foreground triangle*/ - Triangle( - {horizontalDirection:this.props.horizontalDirection, - verticalDirection:this.props.verticalDirection, - color:this.props.border, - left:0, - top:borderTopOffset, - width:this.props.width + 2, // one extra for the diagonal - height:this.props.height + 2} ), - /* The foreground triangle covers all but the left/right edges - of the background triangle */ - Triangle( - {horizontalDirection:this.props.horizontalDirection, - verticalDirection:this.props.verticalDirection, - color:this.props.color, - left:1, - top:frontTopOffset, - width:this.props.width, - height:this.props.height} ) - ); +/** + * The base implementation of `_.isEqual`, without support for `thisArg` binding, + * that allows partial "_.where" style comparisons. + * + * @private + * @param {*} a The value to compare. + * @param {*} b The other value to compare. + * @param {Function} [callback] The function to customize comparing values. + * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. + * @param {Array} [stackA=[]] Tracks traversed `a` objects. + * @param {Array} [stackB=[]] Tracks traversed `b` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { + // used to indicate that when comparing objects, `a` has at least the properties of `b` + if (callback) { + var result = callback(a, b); + if (typeof result != 'undefined') { + return !!result; } -}); + } + // exit early for identical values + if (a === b) { + // treat `+0` vs. `-0` as not equal + return a !== 0 || (1 / a == 1 / b); + } + var type = typeof a, + otherType = typeof b; + + // exit early for unlike primitive values + if (a === a && + !(a && objectTypes[type]) && + !(b && objectTypes[otherType])) { + return false; + } + // exit early for `null` and `undefined` avoiding ES3's Function#call behavior + // http://es5.github.io/#x15.3.4.4 + if (a == null || b == null) { + return a === b; + } + // compare [[Class]] names + var className = toString.call(a), + otherClass = toString.call(b); -var VERTICAL_CORNERS = { - "top": { - "top": "-100%" - }, - bottom: { - "top": 0 - } -}; + if (className == argsClass) { + className = objectClass; + } + if (otherClass == argsClass) { + otherClass = objectClass; + } + if (className != otherClass) { + return false; + } + switch (className) { + case boolClass: + case dateClass: + // coerce dates and booleans to numbers, dates to milliseconds and booleans + // to `1` or `0` treating invalid dates coerced to `NaN` as not equal + return +a == +b; -var HORIZONTAL_CORNERS = { - left: { - targetLeft: 0, - }, + case numberClass: + // treat `NaN` vs. `NaN` as equal + return (a != +a) + ? b != +b + // but treat `+0` vs. `-0` as not equal + : (a == 0 ? (1 / a == 1 / b) : a == +b); - right: { - targetLeft: "100%", - } -}; + case regexpClass: + case stringClass: + // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) + // treat string primitives and their corresponding object instances as equal + return a == String(b); + } + var isArr = className == arrayClass; + if (!isArr) { + // unwrap any `lodash` wrapped values + var aWrapped = hasOwnProperty.call(a, '__wrapped__'), + bWrapped = hasOwnProperty.call(b, '__wrapped__'); -var HORIZONTAL_ALIGNMNENTS = { - left: { - tooltipLeft: 0, - arrowLeft: function(arrowSize) {return 0;} - }, - right: { - tooltipLeft: "-100%", - arrowLeft: function(arrowSize) {return -arrowSize - 2;} + if (aWrapped || bWrapped) { + return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); } -}; - - -var Tooltip = React.createClass({displayName: 'Tooltip', - propTypes: { - show: React.PropTypes.bool.isRequired, - className: React.PropTypes.string, - arrowSize: React.PropTypes.number, - borderColor: React.PropTypes.string, - verticalPosition: React.PropTypes.oneOf( - _.keys(VERTICAL_CORNERS) - ), - horizontalPosition: React.PropTypes.oneOf( - _.keys(HORIZONTAL_CORNERS) - ), - horizontalAlign: React.PropTypes.oneOf( - _.keys(HORIZONTAL_ALIGNMNENTS) - ), - children: React.PropTypes.arrayOf( - React.PropTypes.component - ).isRequired - }, + // exit for functions and DOM nodes + if (className != objectClass) { + return false; + } + // in older versions of Opera, `arguments` objects have `Array` constructors + var ctorA = a.constructor, + ctorB = b.constructor; - getDefaultProps: function() { - return { - className: "", - arrowSize: 10, - borderColor: "#ccc", - verticalPosition: "bottom", - horizontalPosition: "left", - horizontalAlign: "left" - }; - }, + // non `Object` object instances with different constructors are not equal + if (ctorA != ctorB && + !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && + ('constructor' in a && 'constructor' in b) + ) { + return false; + } + } + // assume cyclic structures are equal + // the algorithm for detecting cyclic structures is adapted from ES 5.1 + // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) + var initedStack = !stackA; + stackA || (stackA = getArray()); + stackB || (stackB = getArray()); - getInitialState: function() { - return { - height: null // used for offsetting "top" positioned tooltips - }; - }, + var length = stackA.length; + while (length--) { + if (stackA[length] == a) { + return stackB[length] == b; + } + } + var size = 0; + result = true; - componentWillReceiveProps: function() { - // If the contents have changed, reset our measure of the height - this.setState({height: null}); - }, + // add `a` and `b` to the stack of traversed objects + stackA.push(a); + stackB.push(b); - render: function() { - var isTooltipAbove = this.props.verticalPosition === "top"; + // recursively compare objects and arrays (susceptible to call stack limits) + if (isArr) { + // compare lengths to determine if a deep comparison is necessary + length = a.length; + size = b.length; + result = size == length; - /* We wrap the entire output in a span so that it displays inline */ - return React.DOM.span(null, - isTooltipAbove && this._renderToolTipDiv(isTooltipAbove), + if (result || isWhere) { + // deep compare the contents, ignoring non-numeric properties + while (size--) { + var index = length, + value = b[size]; - /* We wrap our input in a div so that we can put the tooltip in a - div above/below it */ - React.DOM.div(null, - _.first(this.props.children) - ), + if (isWhere) { + while (index--) { + if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { + break; + } + } + } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { + break; + } + } + } + } + else { + // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` + // which, in this case, is more costly + forIn(b, function(value, key, b) { + if (hasOwnProperty.call(b, key)) { + // count the number of properties. + size++; + // deep compare each property value. + return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); + } + }); - !isTooltipAbove && this._renderToolTipDiv() - ); - }, + if (result && !isWhere) { + // ensure both objects have the same number of properties + forIn(a, function(value, key, a) { + if (hasOwnProperty.call(a, key)) { + // `size` will be `-1` if `a` has more properties than `b` + return (result = --size > -1); + } + }); + } + } + stackA.pop(); + stackB.pop(); - _renderToolTipDiv: function(isTooltipAbove) { - var settings = _.extend({}, - HORIZONTAL_CORNERS[this.props.horizontalPosition], - HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], - VERTICAL_CORNERS[this.props.verticalPosition] - ); + if (initedStack) { + releaseArray(stackA); + releaseArray(stackB); + } + return result; +} - var arrowAbove; - var arrowBelow; +module.exports = baseIsEqual; - if (isTooltipAbove) { - // We put an absolutely positioned arrow in the correct place - arrowAbove = TooltipArrow( - {verticalDirection:"top", - horizontalDirection:this.props.horizontalAlign, - position:"absolute", - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-this.props.arrowSize + 2, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); +},{"lodash._getarray":71,"lodash._objecttypes":73,"lodash._releasearray":74,"lodash.forin":77,"lodash.isfunction":78}],71:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var arrayPool = require('lodash._arraypool'); - // And we use a visibility: hidden arrow below to shift up the - // content by the correct amount - arrowBelow = TooltipArrow( - {verticalDirection:"top", - horizontalDirection:this.props.horizontalAlign, - visibility:"hidden", - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-1, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); - } else { - arrowAbove = TooltipArrow( - {verticalDirection:"bottom", - horizontalDirection:this.props.horizontalAlign, - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-1, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); +/** + * Gets an array from the array pool or creates a new one if the pool is empty. + * + * @private + * @returns {Array} The array from the pool. + */ +function getArray() { + return arrayPool.pop() || []; +} - arrowBelow = null; - } +module.exports = getArray; - /* A positioned div below the input to be the parent for our - tooltip */ - return React.DOM.div( {style:{ - position: "relative", - height: 0, - display: this.props.show ? "block" : "none", - }}, - React.DOM.div( {ref:"tooltipContainer", className:"tooltipContainer", style:{ - position: "absolute", - // height must start out undefined, not null, so that - // we can measure the actual height with jquery. - // This is used to position the tooltip with top: -100% - // when in verticalPosition: "top" mode - height: this.state.height || undefined, - left: settings.targetLeft - }}, - arrowAbove, +},{"lodash._arraypool":72}],72:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ - /* The contents of the tooltip */ - React.DOM.div( {className:this.props.className, - ref:"tooltipContent", - style:{ - position: "relative", - "top": settings["top"], - "left": settings.tooltipLeft, - border: "1px solid " + this.props.borderColor, - "-webkit-box-shadow": "0 1px 3px " + - this.props.borderColor, - "-moz-box-shadow": "0 1px 3px " + - this.props.borderColor, - boxShadow: "0 1px 3px " + - this.props.borderColor, - zIndex: zIndex - 1 - }}, - _.rest(this.props.children) - ), +/** Used to pool arrays and objects used internally */ +var arrayPool = []; - arrowBelow - ) - ); - }, +module.exports = arrayPool; - componentDidMount: function() { - this._updateHeight(); - }, +},{}],73:[function(require,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"dup":31}],74:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var arrayPool = require('lodash._arraypool'), + maxPoolSize = require('lodash._maxpoolsize'); - componentDidUpdate: function() { - this._updateHeight(); - }, +/** + * Releases the given array back to the array pool. + * + * @private + * @param {Array} [array] The array to release. + */ +function releaseArray(array) { + array.length = 0; + if (arrayPool.length < maxPoolSize) { + arrayPool.push(array); + } +} - _updateHeight: function() { - var height = this.refs.tooltipContainer.getDOMNode().offsetHeight; - if (height !== this.state.height) { - this.setState({height:height}); - } - } -}); +module.exports = releaseArray; -// Sorry. // Apology-Oriented-Programming -module.exports = Tooltip; +},{"lodash._arraypool":75,"lodash._maxpoolsize":76}],75:[function(require,module,exports){ +arguments[4][72][0].apply(exports,arguments) +},{"dup":72}],76:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ -},{"react":45,"underscore":46}],45:[function(require,module,exports){ -/* This note applies to rcss, react, and underscore. +/** Used as the max size of the `arrayPool` and `objectPool` */ +var maxPoolSize = 40; + +module.exports = maxPoolSize; + +},{}],77:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreateCallback = require('lodash._basecreatecallback'), + objectTypes = require('lodash._objecttypes'); + +/** + * Iterates over own and inherited enumerable properties of an object, + * executing the callback for each property. The callback is bound to `thisArg` + * and invoked with three arguments; (value, key, object). Callbacks may exit + * iteration early by explicitly returning `false`. * - * We're faking a node module for this package by just exporting the global. - * There are a few complications which led us to this solution as a temporary - * fix. + * @static + * @memberOf _ + * @type Function + * @category Objects + * @param {Object} object The object to iterate over. + * @param {Function} [callback=identity] The function called per iteration. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns `object`. + * @example * - * - Browserify can slow down a lot when you include the other packages (and - * their dependency graphs). We were also battling general browserify - * slowness at this time - browserify 3.4.0 is "good" but later versions - * (3.53 if I remember correctly) are terribly slow (on the order of 20x - * slower). + * function Shape() { + * this.x = 0; + * this.y = 0; + * } * - * - I'm not clear on the details of packaging this so we don't duplicate - * dependencies anywhere. For instance when packaging perseus for webapp we - * need to be careful not to include packages like underscore from our - * dependencies or from the packages we depend on. (note: this is a very good - * opportunity to either explain how existing tools solve the problem or - * create a new tool to solve it) + * Shape.prototype.move = function(x, y) { + * this.x += x; + * this.y += y; + * }; * - * - Joel (and Jack) + * _.forIn(new Shape, function(value, key) { + * console.log(key); + * }); + * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) */ -module.exports = window.React; +var forIn = function(collection, callback, thisArg) { + var index, iterable = collection, result = iterable; + if (!iterable) return result; + if (!objectTypes[typeof iterable]) return result; + callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); + for (index in iterable) { + if (callback(iterable[index], index, collection) === false) return result; + } + return result +}; -},{}],46:[function(require,module,exports){ -/* This note applies to rcss, react, and underscore. +module.exports = forIn; + +},{"lodash._basecreatecallback":51,"lodash._objecttypes":73}],78:[function(require,module,exports){ +arguments[4][26][0].apply(exports,arguments) +},{"dup":26}],79:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":80}],80:[function(require,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"dup":31}],81:[function(require,module,exports){ +arguments[4][32][0].apply(exports,arguments) +},{"dup":32,"lodash._isnative":82,"lodash._shimkeys":83,"lodash.isobject":79}],82:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],83:[function(require,module,exports){ +arguments[4][34][0].apply(exports,arguments) +},{"dup":34,"lodash._objecttypes":84}],84:[function(require,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"dup":31}],85:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** + * Creates a "_.pluck" style function, which returns the `key` value of a + * given object. * - * We're faking a node module for this package by just exporting the global. - * There are a few complications which led us to this solution as a temporary - * fix. + * @static + * @memberOf _ + * @category Utilities + * @param {string} key The name of the property to retrieve. + * @returns {Function} Returns the new function. + * @example * - * - Browserify can slow down a lot when you include the other packages (and - * their dependency graphs). We were also battling general browserify - * slowness at this time - browserify 3.4.0 is "good" but later versions - * (3.53 if I remember correctly) are terribly slow (on the order of 20x - * slower). + * var characters = [ + * { 'name': 'fred', 'age': 40 }, + * { 'name': 'barney', 'age': 36 } + * ]; * - * - I'm not clear on the details of packaging this so we don't duplicate - * dependencies anywhere. For instance when packaging perseus for webapp we - * need to be careful not to include packages like underscore from our - * dependencies or from the packages we depend on. (note: this is a very good - * opportunity to either explain how existing tools solve the problem or - * create a new tool to solve it) + * var getName = _.property('name'); + * + * _.map(characters, getName); + * // => ['barney', 'fred'] + * + * _.sortBy(characters, getName); + * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] + */ +function property(key) { + return function(object) { + return object[key]; + }; +} + +module.exports = property; + +},{}],86:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreateCallback = require('lodash._basecreatecallback'), + keys = require('lodash.keys'), + objectTypes = require('lodash._objecttypes'); + +/** + * Iterates over own enumerable properties of an object, executing the callback + * for each property. The callback is bound to `thisArg` and invoked with three + * arguments; (value, key, object). Callbacks may exit iteration early by + * explicitly returning `false`. + * + * @static + * @memberOf _ + * @type Function + * @category Objects + * @param {Object} object The object to iterate over. + * @param {Function} [callback=identity] The function called per iteration. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns `object`. + * @example * - * - Joel (and Jack) + * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { + * console.log(key); + * }); + * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) */ -module.exports = window._; - -},{}],47:[function(require,module,exports){ -var _validCSSProps = { - 'alignment-adjust': true, - 'alignment-baseline': true, - 'animation': true, - 'animation-delay': true, - 'animation-direction': true, - 'animation-duration': true, - 'animation-iteration-count': true, - 'animation-name': true, - 'animation-play-state': true, - 'animation-timing-function': true, - 'appearance': true, - 'backface-visibility': true, - 'background': true, - 'background-attachment': true, - 'background-clip': true, - 'background-color': true, - 'background-image': true, - 'background-origin': true, - 'background-position': true, - 'background-repeat': true, - 'background-size': true, - 'baseline-shift': true, - 'bookmark-label': true, - 'bookmark-level': true, - 'bookmark-target': true, - 'border': true, - 'border-bottom': true, - 'border-bottom-color': true, - 'border-bottom-left-radius': true, - 'border-bottom-right-radius': true, - 'border-bottom-style': true, - 'border-bottom-width': true, - 'border-collapse': true, - 'border-color': true, - 'border-image': true, - 'border-image-outset': true, - 'border-image-repeat': true, - 'border-image-slice': true, - 'border-image-source': true, - 'border-image-width': true, - 'border-left': true, - 'border-left-color': true, - 'border-left-style': true, - 'border-left-width': true, - 'border-radius': true, - 'border-right': true, - 'border-right-color': true, - 'border-right-style': true, - 'border-right-width': true, - 'border-spacing': true, - 'border-style': true, - 'border-top': true, - 'border-top-color': true, - 'border-top-left-radius': true, - 'border-top-right-radius': true, - 'border-top-style': true, - 'border-top-width': true, - 'border-width': true, - 'bottom': true, - 'box-align': true, - 'box-decoration-break': true, - 'box-direction': true, - 'box-flex': true, - 'box-flex-group': true, - 'box-lines': true, - 'box-ordinal-group': true, - 'box-orient': true, - 'box-pack': true, - 'box-shadow': true, - 'box-sizing': true, - 'caption-side': true, - 'clear': true, - 'clip': true, - 'color': true, - 'color-profile': true, - 'column-count': true, - 'column-fill': true, - 'column-gap': true, - 'column-rule': true, - 'column-rule-color': true, - 'column-rule-style': true, - 'column-rule-width': true, - 'column-span': true, - 'column-width': true, - 'columns': true, - 'content': true, - 'counter-increment': true, - 'counter-reset': true, - 'crop': true, - 'cursor': true, - 'direction': true, - 'display': true, - 'dominant-baseline': true, - 'drop-initial-after-adjust': true, - 'drop-initial-after-align': true, - 'drop-initial-before-adjust': true, - 'drop-initial-before-align': true, - 'drop-initial-size': true, - 'drop-initial-value': true, - 'empty-cells': true, - 'fit': true, - 'fit-position': true, - 'float': true, - 'float-offset': true, - 'font': true, - 'font-family': true, - 'font-size': true, - 'font-size-adjust': true, - 'font-stretch': true, - 'font-style': true, - 'font-variant': true, - 'font-weight': true, - 'grid-columns': true, - 'grid-rows': true, - 'hanging-punctuation': true, - 'height': true, - 'hyphenate-after': true, - 'hyphenate-before': true, - 'hyphenate-character': true, - 'hyphenate-lines': true, - 'hyphenate-resource': true, - 'hyphens': true, - 'icon': true, - 'image-orientation': true, - 'image-resolution': true, - 'inline-box-align': true, - 'left': true, - 'letter-spacing': true, - 'line-height': true, - 'line-stacking': true, - 'line-stacking-ruby': true, - 'line-stacking-shift': true, - 'line-stacking-strategy': true, - 'list-style': true, - 'list-style-image': true, - 'list-style-position': true, - 'list-style-type': true, - 'margin': true, - 'margin-bottom': true, - 'margin-left': true, - 'margin-right': true, - 'margin-top': true, - 'mark': true, - 'mark-after': true, - 'mark-before': true, - 'marks': true, - 'marquee-direction': true, - 'marquee-play-count': true, - 'marquee-speed': true, - 'marquee-style': true, - 'max-height': true, - 'max-width': true, - 'min-height': true, - 'min-width': true, - 'move-to': true, - 'nav-down': true, - 'nav-index': true, - 'nav-left': true, - 'nav-right': true, - 'nav-up': true, - 'opacity': true, - 'orphans': true, - 'outline': true, - 'outline-color': true, - 'outline-offset': true, - 'outline-style': true, - 'outline-width': true, - 'overflow': true, - 'overflow-style': true, - 'overflow-x': true, - 'overflow-y': true, - 'padding': true, - 'padding-bottom': true, - 'padding-left': true, - 'padding-right': true, - 'padding-top': true, - 'page': true, - 'page-break-after': true, - 'page-break-before': true, - 'page-break-inside': true, - 'page-policy': true, - 'perspective': true, - 'perspective-origin': true, - 'phonemes': true, - 'position': true, - 'punctuation-trim': true, - 'quotes': true, - 'rendering-intent': true, - 'resize': true, - 'rest': true, - 'rest-after': true, - 'rest-before': true, - 'right': true, - 'rotation': true, - 'rotation-point': true, - 'ruby-align': true, - 'ruby-overhang': true, - 'ruby-position': true, - 'ruby-span': true, - 'size': true, - 'string-set': true, - 'table-layout': true, - 'target': true, - 'target-name': true, - 'target-new': true, - 'target-position': true, - 'text-align': true, - 'text-align-last': true, - 'text-decoration': true, - 'text-height': true, - 'text-indent': true, - 'text-justify': true, - 'text-outline': true, - 'text-overflow': true, - 'text-shadow': true, - 'text-transform': true, - 'text-wrap': true, - 'top': true, - 'transform': true, - 'transform-origin': true, - 'transform-style': true, - 'transition': true, - 'transition-delay': true, - 'transition-duration': true, - 'transition-property': true, - 'transition-timing-function': true, - 'unicode-bidi': true, - 'user-select': true, - 'vertical-align': true, - 'visibility': true, - 'voice-balance': true, - 'voice-duration': true, - 'voice-pitch': true, - 'voice-pitch-range': true, - 'voice-rate': true, - 'voice-stress': true, - 'voice-volume': true, - 'white-space': true, - 'widows': true, - 'width': true, - 'word-break': true, - 'word-spacing': true, - 'word-wrap': true, - 'z-index': true +var forOwn = function(collection, callback, thisArg) { + var index, iterable = collection, result = iterable; + if (!iterable) return result; + if (!objectTypes[typeof iterable]) return result; + callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); + var ownIndex = -1, + ownProps = objectTypes[typeof iterable] && keys(iterable), + length = ownProps ? ownProps.length : 0; + + while (++ownIndex < length) { + index = ownProps[ownIndex]; + if (callback(iterable[index], index, collection) === false) return result; + } + return result +}; + +module.exports = forOwn; + +},{"lodash._basecreatecallback":87,"lodash._objecttypes":108,"lodash.keys":109}],87:[function(require,module,exports){ +arguments[4][10][0].apply(exports,arguments) +},{"dup":10,"lodash._setbinddata":88,"lodash.bind":91,"lodash.identity":105,"lodash.support":106}],88:[function(require,module,exports){ +arguments[4][11][0].apply(exports,arguments) +},{"dup":11,"lodash._isnative":89,"lodash.noop":90}],89:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],90:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],91:[function(require,module,exports){ +arguments[4][14][0].apply(exports,arguments) +},{"dup":14,"lodash._createwrapper":92,"lodash._slice":104}],92:[function(require,module,exports){ +arguments[4][15][0].apply(exports,arguments) +},{"dup":15,"lodash._basebind":93,"lodash._basecreatewrapper":98,"lodash._slice":104,"lodash.isfunction":103}],93:[function(require,module,exports){ +arguments[4][16][0].apply(exports,arguments) +},{"dup":16,"lodash._basecreate":94,"lodash._setbinddata":88,"lodash._slice":104,"lodash.isobject":97}],94:[function(require,module,exports){ +arguments[4][17][0].apply(exports,arguments) +},{"dup":17,"lodash._isnative":95,"lodash.isobject":97,"lodash.noop":96}],95:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],96:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],97:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":108}],98:[function(require,module,exports){ +arguments[4][21][0].apply(exports,arguments) +},{"dup":21,"lodash._basecreate":99,"lodash._setbinddata":88,"lodash._slice":104,"lodash.isobject":102}],99:[function(require,module,exports){ +arguments[4][17][0].apply(exports,arguments) +},{"dup":17,"lodash._isnative":100,"lodash.isobject":102,"lodash.noop":101}],100:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],101:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],102:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":108}],103:[function(require,module,exports){ +arguments[4][26][0].apply(exports,arguments) +},{"dup":26}],104:[function(require,module,exports){ +arguments[4][27][0].apply(exports,arguments) +},{"dup":27}],105:[function(require,module,exports){ +arguments[4][28][0].apply(exports,arguments) +},{"dup":28}],106:[function(require,module,exports){ +arguments[4][29][0].apply(exports,arguments) +},{"dup":29,"lodash._isnative":107}],107:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],108:[function(require,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"dup":31}],109:[function(require,module,exports){ +arguments[4][32][0].apply(exports,arguments) +},{"dup":32,"lodash._isnative":110,"lodash._shimkeys":111,"lodash.isobject":112}],110:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],111:[function(require,module,exports){ +arguments[4][34][0].apply(exports,arguments) +},{"dup":34,"lodash._objecttypes":108}],112:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":108}],113:[function(require,module,exports){ +var escape = require('lodash.escape'); + +var _uppercasePattern = /([A-Z])/g; + +function hyphenateProp(string) { + return string.replace(_uppercasePattern, '-$1').toLowerCase(); +} + +function escapeValueForProp(value, prop) { + // 'content' is a special property that must be quoted + if (prop === 'content') { + return '"' + value + '"'; + } + return escape(value); +} + +module.exports = { + hyphenateProp: hyphenateProp, + escapeValueForProp: escapeValueForProp +}; + +},{"lodash.escape":36}],114:[function(require,module,exports){ +var isValidCSSProps = require('valid-css-props'); + +function isValidProp(prop) { + return isValidCSSProps(prop); +} + +function isValidValue(value) { + return value != null && typeof value !== 'boolean' && value !== ''; +} + +module.exports = { + isValidProp: isValidProp, + isValidValue: isValidValue +}; + +},{"valid-css-props":47}],115:[function(require,module,exports){ +/** @jsx React.DOM */ +/** + * For math rendered using KaTex and/or MathJax. Use me like 2x + 3. + */ +// TODO(joel) - require MathJax / katex so they don't have to be global + +var React = require('react'); + +var pendingScripts = []; +var needsProcess = false; +var timeout = null; + +function process(script, callback) { + pendingScripts.push(script); + if (!needsProcess) { + needsProcess = true; + timeout = setTimeout(doProcess, 0, callback); + } +} + +function doProcess(callback) { + MathJax.Hub.Queue(function() { + var oldElementScripts = MathJax.Hub.elementScripts; + MathJax.Hub.elementScripts = function(element) { + var scripts = pendingScripts; + pendingScripts = []; + needsProcess = false; + return scripts; + }; + + try { + return MathJax.Hub.Process(null, callback); + } catch (e) { + // IE8 requires `catch` in order to use `finally` + throw e; + } finally { + MathJax.Hub.elementScripts = oldElementScripts; + } + }); } -var vendorPrefixRegEx = /^-.+-/; +var TeX = React.createClass({displayName: 'TeX', + getDefaultProps: function() { + return { + // Called after math is rendered or re-rendered + onRender: function() {} + }; + }, + + render: function() { + return React.DOM.span( {style:this.props.style}, + React.DOM.span( {ref:"mathjax"} ), + React.DOM.span( {ref:"katex"} ) + ); + }, + + componentDidMount: function() { + var text = this.props.children; + var onRender = this.props.onRender; + + try { + var katexHolder = this.refs.katex.getDOMNode(); + katex.process(text, katexHolder); + onRender(); + return; + } catch (e) { + /* jshint -W103 */ + if (e.__proto__ !== katex.ParseError.prototype) { + /* jshint +W103 */ + throw e; + } + } + + this.setScriptText(text); + process(this.script, onRender); + }, + + componentDidUpdate: function(prevProps, prevState) { + var oldText = prevProps.children; + var newText = this.props.children; + var onRender = this.props.onRender; + + if (oldText !== newText) { + try { + var katexHolder = this.refs.katex.getDOMNode(); + katex.process(newText, katexHolder); + if (this.script) { + var jax = MathJax.Hub.getJaxFor(this.script); + if (jax) { + jax.Remove(); + } + } + onRender(); + return; + } catch (e) { + /* jshint -W103 */ + if (e.__proto__ !== katex.ParseError.prototype) { + /* jshint +W103 */ + throw e; + } + } + + $(this.refs.katex.getDOMNode()).empty(); + + if (this.script) { + var component = this; + MathJax.Hub.Queue(function() { + var jax = MathJax.Hub.getJaxFor(component.script); + if (jax) { + return jax.Text(newText, onRender); + } else { + component.setScriptText(newText); + process(component.script, onRender); + } + }); + } else { + this.setScriptText(newText); + process(this.script, onRender); + } + } + }, + + setScriptText: function(text) { + if (!this.script) { + this.script = document.createElement("script"); + this.script.type = "math/tex"; + this.refs.mathjax.getDOMNode().appendChild(this.script); + } + if ("text" in this.script) { + // IE8, etc + this.script.text = text; + } else { + this.script.textContent = text; + } + }, + + componentWillUnmount: function() { + if (this.script) { + var jax = MathJax.Hub.getJaxFor(this.script); + if (jax) { + jax.Remove(); + } + } + } +}); + +module.exports = TeX; + +},{"react":117}],116:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require("react"); +var _ = require("underscore"); + +// TODO(joel/jack) fix z-index issues https://s3.amazonaws.com/uploads.hipchat.com/6574/29028/yOApjwmgiMhEZYJ/Screen%20Shot%202014-05-30%20at%203.34.18%20PM.png +// z-index: 3 on perseus-formats-tooltip seemed to work + +/** + * A generic tooltip library for React.js + * + * This should eventually end up in react-components + * + * Interface: ({a, b} means one of a or b) + * var Tooltip = require("./tooltip.jsx"); + * + * + * + * + * + * + * To show/hide the tooltip, the parent component should call the + * .show() and .hide() methods of the tooltip when appropriate. + * (These are usually set up as handlers of events on the target element.) + * + * Notes: + * className should not specify a border; that is handled by borderColor + * so that the arrow and tooltip match + */ + +// __,,--``\\ +// _,,-''`` \\ , +// '----------_.------'-.___|\__ +// _.--''`` `)__ )__ @\__ +// ( .. ''---/___,,E/__,E'------` +// `-''`'' +// Here be dragons. + +var zIndex = 10; + +var Triangle = React.createClass({displayName: 'Triangle', + propTypes: { + color: React.PropTypes.string.isRequired, + left: React.PropTypes.number.isRequired, + "top": React.PropTypes.number.isRequired, + width: React.PropTypes.number.isRequired, + height: React.PropTypes.number.isRequired, + horizontalDirection: React.PropTypes.oneOf( + ["left", "right"] + ).isRequired, + verticalDirection: React.PropTypes.oneOf( + ["top", "bottom"] + ).isRequired, + }, + + render: function() { + var borderLeft, borderRight, borderTop, borderBottom; -module.exports = function(prop) { - if (prop[0] === '-') { - return !!_validCSSProps[prop.replace(vendorPrefixRegEx, '')]; - } - return !!_validCSSProps[prop]; -}; + var hBorder = (this.props.width + "px solid transparent"); + if (this.props.horizontalDirection === "right") { + borderLeft = hBorder; + } else { + borderRight = hBorder; + } -},{}],48:[function(require,module,exports){ -var every = require('lodash.every'); + var vBorder = (this.props.height + "px solid " + this.props.color); + if (this.props.verticalDirection === "top") { + borderTop = vBorder; + } else { + borderBottom = vBorder; + } -function isValidRatio(ratio) { - var re = /\d+\/\d+/; - return !!ratio.match(re); -} + return React.DOM.div( {style:{ + display: "block", + height: 0, + width: 0, + position: "absolute", + left: this.props.left, + "top": this.props["top"], + borderLeft: borderLeft, + borderRight: borderRight, + borderTop: borderTop, + borderBottom: borderBottom + }} ); + } +}); -function isValidInteger(integer) { - var re = /\d+/; - return !!integer.match(re); -} +var TooltipArrow = React.createClass({displayName: 'TooltipArrow', + propTypes: { + position: React.PropTypes.string, + visibility: React.PropTypes.string, + left: React.PropTypes.number, + "top": React.PropTypes.number, + color: React.PropTypes.string.isRequired, // a css color + border: React.PropTypes.string.isRequired, // a css color + width: React.PropTypes.number.isRequired, + height: React.PropTypes.number.isRequired, + horizontalDirection: React.PropTypes.oneOf( + ["left", "right"] + ).isRequired, + verticalDirection: React.PropTypes.oneOf( + ["top", "bottom"] + ).isRequired + }, -function isValidLength(length) { - var re = /\d+(?:ex|em|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc)?$/; - return !!length.match(re); -} + getDefaultProps: function() { + return { + position: "relative", + visibility: "visible", + left: 0, + "top": 0 + }; + }, -function isValidOrientation(orientation) { - return orientation === 'landscape' || orientation === 'portrait'; -} + // TODO(jack): Think about adding a box-shadow to the triangle here + // See http://css-tricks.com/triangle-with-shadow/ + render: function() { + var isRight = (this.props.horizontalDirection === "right"); + var isTop = (this.props.verticalDirection === "top"); -function isValidScan(scan) { - return scan === 'progressive' || scan === 'interlace'; -} + var frontTopOffset = isTop ? 0 : 1; + var borderTopOffset = isTop ? 0 : -1; -function isValidResolution(resolution) { - var re = /(?:\+|-)?(?:\d+|\d*\.\d+)(?:e\d+)?(?:dpi|dpcm|dppx)$/; - return !!resolution.match(re); -} + return React.DOM.div( {style:{ + display: "block", + position: this.props.position, + visibility: this.props.visibility, + left: this.props.left, + "top": this.props["top"], + width: this.props.width + 2, + height: this.props.height + 1, + marginTop: -1, + marginBottom: -2, + zIndex: zIndex + }}, + /* The background triangle used to create the effect of a + border around the foreground triangle*/ + Triangle( + {horizontalDirection:this.props.horizontalDirection, + verticalDirection:this.props.verticalDirection, + color:this.props.border, + left:0, + top:borderTopOffset, + width:this.props.width + 2, // one extra for the diagonal + height:this.props.height + 2} ), + /* The foreground triangle covers all but the left/right edges + of the background triangle */ + Triangle( + {horizontalDirection:this.props.horizontalDirection, + verticalDirection:this.props.verticalDirection, + color:this.props.color, + left:1, + top:frontTopOffset, + width:this.props.width, + height:this.props.height} ) + ); + } +}); -function isValidValue(value) { - return value != null && typeof value !== 'boolean' && value !== ''; -} +var VERTICAL_CORNERS = { + "top": { + "top": "-100%" + }, + bottom: { + "top": 0 + } +}; -var _mediaFeatureValidator = { - 'width': isValidLength, - 'min-width': isValidLength, - 'max-width': isValidLength, - 'height': isValidLength, - 'min-height': isValidLength, - 'max-height': isValidLength, - 'device-width': isValidLength, - 'min-device-width': isValidLength, - 'max-device-width': isValidLength, - 'device-height': isValidLength, - 'min-device-height': isValidLength, - 'max-device-height': isValidLength, - 'aspect-ratio': isValidRatio, - 'min-aspect-ratio': isValidRatio, - 'max-aspect-ratio': isValidRatio, - 'device-aspect-ratio': isValidRatio, - 'min-device-aspect-ratio': isValidRatio, - 'max-device-aspect-ratio': isValidRatio, - 'color': isValidValue, - 'min-color': isValidValue, - 'max-color': isValidValue, - 'color-index': isValidInteger, - 'min-color-index': isValidInteger, - 'max-color-index': isValidInteger, - 'monochrome': isValidInteger, - 'min-monochrome': isValidInteger, - 'max-monochrome': isValidInteger, - 'resolution': isValidResolution, - 'min-resolution': isValidResolution, - 'max-resolution': isValidResolution, - 'scan': isValidScan, - 'grid': isValidInteger, - 'orientation': isValidOrientation +var HORIZONTAL_CORNERS = { + left: { + targetLeft: 0, + }, + + right: { + targetLeft: "100%", + } }; -var _validMediaFeatures = { - 'width': true, - 'min-width': true, - 'max-width': true, - 'height': true, - 'min-height': true, - 'max-height': true, - 'device-width': true, - 'min-device-width': true, - 'max-device-width': true, - 'device-height': true, - 'min-device-height': true, - 'max-device-height': true, - 'aspect-ratio': true, - 'min-aspect-ratio': true, - 'max-aspect-ratio': true, - 'device-aspect-ratio': true, - 'min-device-aspect-ratio': true, - 'max-device-aspect-ratio': true, - 'color': true, - 'min-color': true, - 'max-color': true, - 'color-index': true, - 'min-color-index': true, - 'max-color-index': true, - 'monochrome': true, - 'min-monochrome': true, - 'max-monochrome': true, - 'resolution': true, - 'min-resolution': true, - 'max-resolution': true, - 'scan': true, - 'grid': true, - 'orientation': true +var HORIZONTAL_ALIGNMNENTS = { + left: { + tooltipLeft: 0, + arrowLeft: function(arrowSize) {return 0;} + }, + right: { + tooltipLeft: "-100%", + arrowLeft: function(arrowSize) {return -arrowSize - 2;} + } }; -var _validMediaTypes = { - 'all': true, - 'aural': true, - 'braille': true, - 'handheld': true, - 'print': true, - 'projection': true, - 'screen': true, - 'tty': true, - 'tv': true, - 'embossed': true -}; -var _validQualifiers = { - 'not': true, - 'only': true -}; +var Tooltip = React.createClass({displayName: 'Tooltip', + propTypes: { + show: React.PropTypes.bool.isRequired, + className: React.PropTypes.string, + arrowSize: React.PropTypes.number, + borderColor: React.PropTypes.string, + verticalPosition: React.PropTypes.oneOf( + _.keys(VERTICAL_CORNERS) + ), + horizontalPosition: React.PropTypes.oneOf( + _.keys(HORIZONTAL_CORNERS) + ), + horizontalAlign: React.PropTypes.oneOf( + _.keys(HORIZONTAL_ALIGNMNENTS) + ), + children: React.PropTypes.arrayOf( + React.PropTypes.component + ).isRequired + }, + + getDefaultProps: function() { + return { + className: "", + arrowSize: 10, + borderColor: "#ccc", + verticalPosition: "bottom", + horizontalPosition: "left", + horizontalAlign: "left" + }; + }, + + getInitialState: function() { + return { + height: null // used for offsetting "top" positioned tooltips + }; + }, + + componentWillReceiveProps: function() { + // If the contents have changed, reset our measure of the height + this.setState({height: null}); + }, -function isValidFeature(feature) { - return !!_validMediaFeatures[feature]; -} + render: function() { + var isTooltipAbove = this.props.verticalPosition === "top"; -function isValidQualifier(qualifier) { - return !!_validQualifiers[qualifier]; -} + /* We wrap the entire output in a span so that it displays inline */ + return React.DOM.span(null, + isTooltipAbove && this._renderToolTipDiv(isTooltipAbove), -function isValidMediaType(mediaType) { - return !!_validMediaTypes[mediaType]; -} + /* We wrap our input in a div so that we can put the tooltip in a + div above/below it */ + React.DOM.div(null, + _.first(this.props.children) + ), -function isValidQualifiedMediaType(mediaType) { - var terms = mediaType.trim().split(/\s+/); - switch (terms.length) { - case 1: - return isValidMediaType(terms[0]); - case 2: - return isValidQualifier(terms[0]) && isValidMediaType(terms[1]); - default: - return false; - } -} + !isTooltipAbove && this._renderToolTipDiv() + ); + }, -function isValidExpression(expression) { - if (expression.length < 2) { - return false; - } + _renderToolTipDiv: function(isTooltipAbove) { + var settings = _.extend({}, + HORIZONTAL_CORNERS[this.props.horizontalPosition], + HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], + VERTICAL_CORNERS[this.props.verticalPosition] + ); - // Parentheses are required around expressions - if (expression[0] !== '(' || expression[expression.length - 1] !== ')') { - return false; - } + var arrowAbove; + var arrowBelow; - // Remove parentheses and spacess - expression = expression.substring(1, expression.length - 1); + if (isTooltipAbove) { + // We put an absolutely positioned arrow in the correct place + arrowAbove = TooltipArrow( + {verticalDirection:"top", + horizontalDirection:this.props.horizontalAlign, + position:"absolute", + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-this.props.arrowSize + 2, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); - // Is there a value to accompany the media feature? - var featureAndValue = expression.split(/\s*:\s*/); - switch (featureAndValue.length) { - case 1: - var feature = featureAndValue[0].trim(); - return isValidFeature(feature); - case 2: - var feature = featureAndValue[0].trim(); - var value = featureAndValue[1].trim(); - return isValidFeature(feature) && - _mediaFeatureValidator[feature](value); - default: - return false; - } -} + // And we use a visibility: hidden arrow below to shift up the + // content by the correct amount + arrowBelow = TooltipArrow( + {verticalDirection:"top", + horizontalDirection:this.props.horizontalAlign, + visibility:"hidden", + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-1, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); + } else { + arrowAbove = TooltipArrow( + {verticalDirection:"bottom", + horizontalDirection:this.props.horizontalAlign, + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-1, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); -function isValidMediaQuery(query) { - var andSplitter = /\s+and\s+/; - var queryTerms = query.split(andSplitter); - return (isValidQualifiedMediaType(queryTerms[0]) || - isValidExpression(queryTerms[0])) && - every(queryTerms.slice(1), isValidExpression); -} + arrowBelow = null; + } -function isValidMediaQueryList(mediaQuery) { - mediaQuery = mediaQuery.toLowerCase(); + /* A positioned div below the input to be the parent for our + tooltip */ + return React.DOM.div( {style:{ + position: "relative", + height: 0, + display: this.props.show ? "block" : "none", + }}, + React.DOM.div( {ref:"tooltipContainer", className:"tooltipContainer", style:{ + position: "absolute", + // height must start out undefined, not null, so that + // we can measure the actual height with jquery. + // This is used to position the tooltip with top: -100% + // when in verticalPosition: "top" mode + height: this.state.height || undefined, + left: settings.targetLeft + }}, + arrowAbove, - if (mediaQuery.substring(0, 6) !== '@media') { - return false; + /* The contents of the tooltip */ + React.DOM.div( {className:this.props.className, + ref:"tooltipContent", + style:{ + position: "relative", + "top": settings["top"], + "left": settings.tooltipLeft, + border: "1px solid " + this.props.borderColor, + "-webkit-box-shadow": "0 1px 3px " + + this.props.borderColor, + "-moz-box-shadow": "0 1px 3px " + + this.props.borderColor, + boxShadow: "0 1px 3px " + + this.props.borderColor, + zIndex: zIndex - 1 + }}, + _.rest(this.props.children) + ), + + arrowBelow + ) + ); + }, + + componentDidMount: function() { + this._updateHeight(); + }, + + componentDidUpdate: function() { + this._updateHeight(); + }, + + _updateHeight: function() { + var height = this.refs.tooltipContainer.getDOMNode().offsetHeight; + if (height !== this.state.height) { + this.setState({height:height}); + } } +}); - var commaSplitter = /\s*,\s*/; - var queryList = mediaQuery.substring(7, mediaQuery.length) - .split(commaSplitter); - return every(queryList, isValidMediaQuery); -} +// Sorry. // Apology-Oriented-Programming +module.exports = Tooltip; -module.exports = isValidMediaQueryList +},{"react":117,"underscore":118}],117:[function(require,module,exports){ +/* This note applies to rcss, react, and underscore. + * + * We're faking a node module for this package by just exporting the global. + * There are a few complications which led us to this solution as a temporary + * fix. + * + * - Browserify can slow down a lot when you include the other packages (and + * their dependency graphs). We were also battling general browserify + * slowness at this time - browserify 3.4.0 is "good" but later versions + * (3.53 if I remember correctly) are terribly slow (on the order of 20x + * slower). + * + * - I'm not clear on the details of packaging this so we don't duplicate + * dependencies anywhere. For instance when packaging perseus for webapp we + * need to be careful not to include packages like underscore from our + * dependencies or from the packages we depend on. (note: this is a very good + * opportunity to either explain how existing tools solve the problem or + * create a new tool to solve it) + * + * - Joel (and Jack) + */ +module.exports = window.React; + +},{}],118:[function(require,module,exports){ +/* This note applies to rcss, react, and underscore. + * + * We're faking a node module for this package by just exporting the global. + * There are a few complications which led us to this solution as a temporary + * fix. + * + * - Browserify can slow down a lot when you include the other packages (and + * their dependency graphs). We were also battling general browserify + * slowness at this time - browserify 3.4.0 is "good" but later versions + * (3.53 if I remember correctly) are terribly slow (on the order of 20x + * slower). + * + * - I'm not clear on the details of packaging this so we don't duplicate + * dependencies anywhere. For instance when packaging perseus for webapp we + * need to be careful not to include packages like underscore from our + * dependencies or from the packages we depend on. (note: this is a very good + * opportunity to either explain how existing tools solve the problem or + * create a new tool to solve it) + * + * - Joel (and Jack) + */ +module.exports = window._; -},{"lodash.every":26}],49:[function(require,module,exports){ +},{}],119:[function(require,module,exports){ var Widgets = require("./widgets.js"); _.each([ @@ -3710,7 +3850,7 @@ _.each([ Widgets.register(widget.name, _.omit(widget, "name")); }); -},{"./widgets.js":103,"./widgets/categorizer.jsx":104,"./widgets/dropdown.jsx":105,"./widgets/example-graphie-widget.jsx":106,"./widgets/example-widget.jsx":107,"./widgets/expression.jsx":108,"./widgets/iframe.jsx":109,"./widgets/image.jsx":110,"./widgets/input-number.jsx":111,"./widgets/interactive-graph.jsx":112,"./widgets/interactive-number-line.jsx":113,"./widgets/lights-puzzle.jsx":114,"./widgets/matcher.jsx":115,"./widgets/measurer.jsx":116,"./widgets/number-line.jsx":117,"./widgets/numeric-input.jsx":118,"./widgets/orderer.jsx":119,"./widgets/plotter.jsx":120,"./widgets/radio.jsx":121,"./widgets/sorter.jsx":122,"./widgets/speaking-text-input.jsx":123,"./widgets/speaking-voice.jsx":124,"./widgets/table.jsx":125,"./widgets/transformer.jsx":126}],50:[function(require,module,exports){ +},{"./widgets.js":173,"./widgets/categorizer.jsx":174,"./widgets/dropdown.jsx":175,"./widgets/example-graphie-widget.jsx":176,"./widgets/example-widget.jsx":177,"./widgets/expression.jsx":178,"./widgets/iframe.jsx":179,"./widgets/image.jsx":180,"./widgets/input-number.jsx":181,"./widgets/interactive-graph.jsx":182,"./widgets/interactive-number-line.jsx":183,"./widgets/lights-puzzle.jsx":184,"./widgets/matcher.jsx":185,"./widgets/measurer.jsx":186,"./widgets/number-line.jsx":187,"./widgets/numeric-input.jsx":188,"./widgets/orderer.jsx":189,"./widgets/plotter.jsx":190,"./widgets/radio.jsx":191,"./widgets/sorter.jsx":192,"./widgets/speaking-text-input.jsx":193,"./widgets/speaking-voice.jsx":194,"./widgets/table.jsx":195,"./widgets/transformer.jsx":196}],120:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -3781,7 +3921,7 @@ var AnswerAreaEditor = React.createClass({displayName: 'AnswerAreaEditor', module.exports = AnswerAreaEditor; -},{"./editor.jsx":75,"./widgets.js":103,"react":45,"react-components/info-tip":39}],51:[function(require,module,exports){ +},{"./editor.jsx":145,"./widgets.js":173,"react":117,"react-components/info-tip":7}],121:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -4136,7 +4276,7 @@ var AnswerAreaRenderer = React.createClass({displayName: 'AnswerAreaRenderer', module.exports = AnswerAreaRenderer; -},{"./enabled-features.jsx":76,"./perseus-api.jsx":94,"./question-paragraph.jsx":96,"./renderer.jsx":97,"./util.js":100,"./widget-container.jsx":102,"./widgets.js":103,"react":45}],52:[function(require,module,exports){ +},{"./enabled-features.jsx":146,"./perseus-api.jsx":164,"./question-paragraph.jsx":166,"./renderer.jsx":167,"./util.js":170,"./widget-container.jsx":172,"./widgets.js":173,"react":117}],122:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -4324,7 +4464,7 @@ FancySelect.Option = FancyOption; module.exports = FancySelect; -},{"react":45}],53:[function(require,module,exports){ +},{"react":117}],123:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -4767,7 +4907,7 @@ var GraphSettings = React.createClass({displayName: 'GraphSettings', module.exports = GraphSettings; -},{"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../components/range-input.jsx":63,"../mixins/changeable.jsx":91,"../util.js":100,"react":45,"react-components/blur-input":36,"react-components/button-group":37,"react-components/info-tip":39}],54:[function(require,module,exports){ +},{"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../components/range-input.jsx":133,"../mixins/changeable.jsx":161,"../util.js":170,"react":117,"react-components/blur-input":4,"react-components/button-group":5,"react-components/info-tip":7}],124:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -5106,7 +5246,7 @@ var Graph = React.createClass({displayName: 'Graph', module.exports = Graph; -},{"../util.js":100,"react":45}],55:[function(require,module,exports){ +},{"../util.js":170,"react":117}],125:[function(require,module,exports){ /** @jsx React.DOM */var Util = require("../util.js"); var nestedMap = Util.nestedMap; var deepEq = Util.deepEq; @@ -5237,7 +5377,7 @@ module.exports = { createSimpleClass: createSimpleClass }; -},{"../util.js":100}],56:[function(require,module,exports){ +},{"../util.js":170}],126:[function(require,module,exports){ /** @jsx React.DOM */var GraphieClasses = require("./graphie-classes.jsx"); var Interactive2 = require("../interactive2.js"); var InteractiveUtil = require("../interactive2/interactive-util.js"); @@ -5288,7 +5428,7 @@ module.exports = { MovablePoint: MovablePoint }; -},{"../interactive2.js":80,"../interactive2/interactive-util.js":81,"./graphie-classes.jsx":55}],57:[function(require,module,exports){ +},{"../interactive2.js":150,"../interactive2/interactive-util.js":151,"./graphie-classes.jsx":125}],127:[function(require,module,exports){ /** @jsx React.DOM */ var GraphieClasses = require("./graphie-classes.jsx"); @@ -5568,7 +5708,7 @@ _.extend(Graphie, Movables); module.exports = Graphie; -},{"../interactive2/interactive-util.js":81,"../util.js":100,"./graphie-classes.jsx":55,"./graphie-movables.jsx":56}],58:[function(require,module,exports){ +},{"../interactive2/interactive-util.js":151,"../util.js":170,"./graphie-classes.jsx":125,"./graphie-movables.jsx":126}],128:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -5728,7 +5868,7 @@ var InputWithExamples = React.createClass({displayName: 'InputWithExamples', module.exports = InputWithExamples; -},{"../perseus-api.jsx":94,"../renderer.jsx":97,"../util.js":100,"./math-input.jsx":59,"./text-input.jsx":66,"react":45,"react-components/tooltip":44}],59:[function(require,module,exports){ +},{"../perseus-api.jsx":164,"../renderer.jsx":167,"../util.js":170,"./math-input.jsx":129,"./text-input.jsx":136,"react":117,"react-components/tooltip":116}],129:[function(require,module,exports){ /** @jsx React.DOM */ // TODO(alex): Package MathQuill @@ -5967,7 +6107,7 @@ var MathInput = React.createClass({displayName: 'MathInput', module.exports = MathInput; -},{"./tex-buttons.jsx":65,"react":45,"underscore":46}],60:[function(require,module,exports){ +},{"./tex-buttons.jsx":135,"react":117,"underscore":118}],130:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6039,7 +6179,7 @@ var MultiButtonGroup = React.createClass({displayName: 'MultiButtonGroup', module.exports = MultiButtonGroup; -},{"react":45}],61:[function(require,module,exports){ +},{"react":117}],131:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6218,7 +6358,7 @@ var NumberInput = React.createClass({displayName: 'NumberInput', module.exports = NumberInput; -},{"../util.js":100,"react":45}],62:[function(require,module,exports){ +},{"../util.js":170,"react":117}],132:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6280,7 +6420,7 @@ var PropCheckBox = React.createClass({displayName: 'PropCheckBox', module.exports = PropCheckBox; -},{"react":45}],63:[function(require,module,exports){ +},{"react":117}],133:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6339,7 +6479,7 @@ var RangeInput = React.createClass({displayName: 'RangeInput', module.exports = RangeInput; -},{"../components/number-input.jsx":61,"react":45}],64:[function(require,module,exports){ +},{"../components/number-input.jsx":131,"react":117}],134:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6856,7 +6996,7 @@ var Sortable = React.createClass({displayName: 'Sortable', module.exports = Sortable; -},{"../renderer.jsx":97,"../util.js":100,"react":45}],65:[function(require,module,exports){ +},{"../renderer.jsx":167,"../util.js":170,"react":117}],135:[function(require,module,exports){ /** @jsx React.DOM */ var React = require("react"); @@ -6991,7 +7131,7 @@ var TexButtons = React.createClass({displayName: 'TexButtons', module.exports = TexButtons; -},{"react":45,"react-components/tex":43}],66:[function(require,module,exports){ +},{"react":117,"react-components/tex":115}],136:[function(require,module,exports){ /** @jsx React.DOM */ var TextInput = React.createClass({displayName: 'TextInput', @@ -7023,7 +7163,7 @@ var TextInput = React.createClass({displayName: 'TextInput', module.exports = TextInput; -},{}],67:[function(require,module,exports){ +},{}],137:[function(require,module,exports){ /** @jsx React.DOM */ var textWidthCache = {}; @@ -7153,7 +7293,7 @@ var TextListEditor = React.createClass({displayName: 'TextListEditor', module.exports = TextListEditor; -},{}],68:[function(require,module,exports){ +},{}],138:[function(require,module,exports){ /** @jsx React.DOM */ // Responsible for combining the text diffs from text-diff and the widget @@ -7268,7 +7408,7 @@ var RevisionDiff = React.createClass({displayName: 'RevisionDiff', module.exports = RevisionDiff; -},{"./text-diff.jsx":71,"./widget-diff.jsx":73}],69:[function(require,module,exports){ +},{"./text-diff.jsx":141,"./widget-diff.jsx":143}],139:[function(require,module,exports){ /** @jsx React.DOM */// Split a word-wise diff generated by jsdiff into multiple lines, for the // purpose of breaking up the diffs into lines, so that modified lines can be // faintly highlighted @@ -7298,7 +7438,7 @@ var splitDiff = function(diffEntries) { module.exports = splitDiff; -},{}],70:[function(require,module,exports){ +},{}],140:[function(require,module,exports){ /** @jsx React.DOM */var jsdiff = require("../../lib/jsdiff"); var statusFor = function(chunk) { @@ -7368,7 +7508,7 @@ var stringArrayDiff = function(a, b) { module.exports = stringArrayDiff; -},{"../../lib/jsdiff":1}],71:[function(require,module,exports){ +},{"../../lib/jsdiff":1}],141:[function(require,module,exports){ /** @jsx React.DOM */ var diff = require("../../lib/jsdiff"); @@ -7533,7 +7673,7 @@ var TextDiff = React.createClass({displayName: 'TextDiff', module.exports = TextDiff; -},{"../../lib/jsdiff":1,"./split-diff.jsx":69,"./string-array-diff.jsx":70}],72:[function(require,module,exports){ +},{"../../lib/jsdiff":1,"./split-diff.jsx":139,"./string-array-diff.jsx":140}],142:[function(require,module,exports){ /** @jsx React.DOM */var UNCHANGED = "unchanged"; var CHANGED = "changed"; var ADDED = "added"; @@ -7603,7 +7743,7 @@ var performDiff = function(before, after, /* optional */ key) { module.exports = performDiff; -},{}],73:[function(require,module,exports){ +},{}],143:[function(require,module,exports){ /** @jsx React.DOM */ var cx = React.addons.classSet; @@ -7799,7 +7939,7 @@ var WidgetDiff = React.createClass({displayName: 'WidgetDiff', module.exports = WidgetDiff; -},{"./widget-diff-performer.jsx":72}],74:[function(require,module,exports){ +},{"./widget-diff-performer.jsx":142}],144:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8083,7 +8223,7 @@ var EditorPage = React.createClass({displayName: 'EditorPage', module.exports = EditorPage; -},{"./components/prop-check-box.jsx":62,"./enabled-features.jsx":76,"./hint-editor.jsx":77,"./item-editor.jsx":89,"./item-renderer.jsx":90,"./perseus-api.jsx":94,"react":45}],75:[function(require,module,exports){ +},{"./components/prop-check-box.jsx":132,"./enabled-features.jsx":146,"./hint-editor.jsx":147,"./item-editor.jsx":159,"./item-renderer.jsx":160,"./perseus-api.jsx":164,"react":117}],145:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8685,7 +8825,7 @@ var Editor = React.createClass({displayName: 'Editor', module.exports = Editor; -},{"./components/prop-check-box.jsx":62,"./util.js":100,"./widgets.js":103,"react":45,"react-components/drag-target":38}],76:[function(require,module,exports){ +},{"./components/prop-check-box.jsx":132,"./util.js":170,"./widgets.js":173,"react":117,"react-components/drag-target":6}],146:[function(require,module,exports){ /** @jsx React.DOM */var React = require('react'); module.exports = { @@ -8701,7 +8841,7 @@ module.exports = { } }; -},{"react":45}],77:[function(require,module,exports){ +},{"react":117}],147:[function(require,module,exports){ /** @jsx React.DOM */ /* Collection of classes for rendering the hint editor area, @@ -8917,7 +9057,7 @@ var CombinedHintsEditor = React.createClass({displayName: 'CombinedHintsEditor', module.exports = CombinedHintsEditor; -},{"./editor.jsx":75,"./hint-renderer.jsx":78,"react":45,"react-components/info-tip":39}],78:[function(require,module,exports){ +},{"./editor.jsx":145,"./hint-renderer.jsx":148,"react":117,"react-components/info-tip":7}],148:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8945,7 +9085,7 @@ var HintRenderer = React.createClass({displayName: 'HintRenderer', module.exports = HintRenderer; -},{"./renderer.jsx":97,"react":45}],79:[function(require,module,exports){ +},{"./renderer.jsx":167,"react":117}],149:[function(require,module,exports){ var React = require('react'); var init = function(options) { @@ -8986,7 +9126,7 @@ var init = function(options) { module.exports = init; -},{"react":45}],80:[function(require,module,exports){ +},{"react":117}],150:[function(require,module,exports){ var Movable = require("./interactive2/movable.js"); var MovablePoint = require("./interactive2/movable-point.js"); var MovableLine = require("./interactive2/movable-line.js"); @@ -9006,7 +9146,7 @@ var Interactive2 = { module.exports = Interactive2; -},{"./interactive2/movable-line.js":84,"./interactive2/movable-point.js":86,"./interactive2/movable.js":87}],81:[function(require,module,exports){ +},{"./interactive2/movable-line.js":154,"./interactive2/movable-point.js":156,"./interactive2/movable.js":157}],151:[function(require,module,exports){ /** * Utility functions for writing Interactive2 movablethings */ @@ -9084,7 +9224,7 @@ var InteractiveUtil = { module.exports = InteractiveUtil; -},{"./movable-helper-methods.js":82}],82:[function(require,module,exports){ +},{"./movable-helper-methods.js":152}],152:[function(require,module,exports){ /** * MovableThing convenience methods * @@ -9187,7 +9327,7 @@ var MovableHelperMethods = { module.exports = MovableHelperMethods; -},{}],83:[function(require,module,exports){ +},{}],153:[function(require,module,exports){ /** * A library of options to pass to add/draw/remove/constraints */ @@ -9470,7 +9610,7 @@ module.exports = { onMoveEnd: {standard: null}, }; -},{}],84:[function(require,module,exports){ +},{}],154:[function(require,module,exports){ /** * MovableLine */ @@ -9754,7 +9894,7 @@ _.extend(MovableLine.prototype, { module.exports = MovableLine; -},{"./interactive-util.js":81,"./movable-line-options.js":83,"./objective_.js":88}],85:[function(require,module,exports){ +},{"./interactive-util.js":151,"./movable-line-options.js":153,"./objective_.js":158}],155:[function(require,module,exports){ /** * A library of options to pass to add/draw/remove/constraints */ @@ -9899,7 +10039,7 @@ module.exports = { onClick: {standard: null} }; -},{}],86:[function(require,module,exports){ +},{}],156:[function(require,module,exports){ /** * Creates and adds a point to the graph that can be dragged around. * It allows constraints on its movement and draws when moves happen. @@ -10232,7 +10372,7 @@ _.extend(MovablePoint.prototype, { module.exports = MovablePoint; -},{"./interactive-util.js":81,"./movable-point-options.js":85,"./objective_.js":88}],87:[function(require,module,exports){ +},{"./interactive-util.js":151,"./movable-point-options.js":155,"./objective_.js":158}],157:[function(require,module,exports){ /** * Movable * @@ -10497,7 +10637,7 @@ _.extend(Movable.prototype, { module.exports = Movable; -},{"./interactive-util.js":81}],88:[function(require,module,exports){ +},{"./interactive-util.js":151}],158:[function(require,module,exports){ /** * A work-in-progress of _ methods for objects. * That is, they take an object as a parameter, @@ -10526,7 +10666,7 @@ var pluck = exports.pluck = function(table, subKey) { })); }; -},{}],89:[function(require,module,exports){ +},{}],159:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -10636,7 +10776,7 @@ var ItemEditor = React.createClass({displayName: 'ItemEditor', module.exports = ItemEditor; -},{"./answer-area-editor.jsx":50,"./editor.jsx":75,"./version.json":101,"react":45}],90:[function(require,module,exports){ +},{"./answer-area-editor.jsx":120,"./editor.jsx":145,"./version.json":171,"react":117}],160:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -10956,7 +11096,7 @@ var ItemRenderer = React.createClass({displayName: 'ItemRenderer', module.exports = ItemRenderer; -},{"./answer-area-renderer.jsx":51,"./enabled-features.jsx":76,"./hint-renderer.jsx":78,"./perseus-api.jsx":94,"./renderer.jsx":97,"./util.js":100,"react":45}],91:[function(require,module,exports){ +},{"./answer-area-renderer.jsx":121,"./enabled-features.jsx":146,"./hint-renderer.jsx":148,"./perseus-api.jsx":164,"./renderer.jsx":167,"./util.js":170,"react":117}],161:[function(require,module,exports){ /** @jsx React.DOM */ /** * Changeable @@ -11057,7 +11197,7 @@ var Changeable = { module.exports = Changeable; -},{"./widget-prop-blacklist.jsx":93}],92:[function(require,module,exports){ +},{"./widget-prop-blacklist.jsx":163}],162:[function(require,module,exports){ /** @jsx React.DOM */var WIDGET_PROP_BLACKLIST = require("./widget-prop-blacklist.jsx"); var JsonifyProps = { @@ -11069,7 +11209,7 @@ var JsonifyProps = { module.exports = JsonifyProps; -},{"./widget-prop-blacklist.jsx":93}],93:[function(require,module,exports){ +},{"./widget-prop-blacklist.jsx":163}],163:[function(require,module,exports){ /** @jsx React.DOM */module.exports = [ // standard props "added" by react // (technically the renderer still adds them) @@ -11083,7 +11223,7 @@ module.exports = JsonifyProps; "apiOptions" ]; -},{}],94:[function(require,module,exports){ +},{}],164:[function(require,module,exports){ /** @jsx React.DOM *//** * [Most of] the Perseus client API. * @@ -11142,7 +11282,7 @@ module.exports = { }; -},{}],95:[function(require,module,exports){ +},{}],165:[function(require,module,exports){ require("./all-widgets.js"); var version = require("./version.json"); @@ -11162,7 +11302,7 @@ module.exports = { Util: require("./util.js") }; -},{"./all-widgets.js":49,"./answer-area-renderer.jsx":51,"./diffs/revision-diff.jsx":68,"./editor-page.jsx":74,"./editor.jsx":75,"./init.js":79,"./item-renderer.jsx":90,"./perseus-api.jsx":94,"./renderer.jsx":97,"./stateful-editor-page.jsx":98,"./util.js":100,"./version.json":101}],96:[function(require,module,exports){ +},{"./all-widgets.js":119,"./answer-area-renderer.jsx":121,"./diffs/revision-diff.jsx":138,"./editor-page.jsx":144,"./editor.jsx":145,"./init.js":149,"./item-renderer.jsx":160,"./perseus-api.jsx":164,"./renderer.jsx":167,"./stateful-editor-page.jsx":168,"./util.js":170,"./version.json":171}],166:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11178,7 +11318,7 @@ var QuestionParagraph = React.createClass({displayName: 'QuestionParagraph', module.exports = QuestionParagraph; -},{"react":45}],97:[function(require,module,exports){ +},{"react":117}],167:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11813,7 +11953,7 @@ function extractMathAndWidgets(text) { module.exports = Renderer; -},{"./enabled-features.jsx":76,"./perseus-api.jsx":94,"./question-paragraph.jsx":96,"./tex.jsx":99,"./util.js":100,"./widget-container.jsx":102,"./widgets.js":103,"react":45}],98:[function(require,module,exports){ +},{"./enabled-features.jsx":146,"./perseus-api.jsx":164,"./question-paragraph.jsx":166,"./tex.jsx":169,"./util.js":170,"./widget-container.jsx":172,"./widgets.js":173,"react":117}],168:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11856,7 +11996,7 @@ var StatefulEditorPage = React.createClass({displayName: 'StatefulEditorPage', module.exports = StatefulEditorPage; -},{"./editor-page.jsx":74,"react":45}],99:[function(require,module,exports){ +},{"./editor-page.jsx":144,"react":117}],169:[function(require,module,exports){ /** @jsx React.DOM */ /** * For math rendered using MathJax. Use me like 2x + 3. @@ -12009,7 +12149,7 @@ var TeX = React.createClass({displayName: 'TeX', module.exports = TeX; -},{"react":45}],100:[function(require,module,exports){ +},{"react":117}],170:[function(require,module,exports){ var nestedMap = function(children, func, context) { if (_.isArray(children)) { return _.map(children, function(child) { @@ -12565,7 +12705,7 @@ Util.random = Util.seededRNG(new Date().getTime() & 0xffffffff); module.exports = Util; -},{}],101:[function(require,module,exports){ +},{}],171:[function(require,module,exports){ module.exports={ "apiVersion": { "major": 1, @@ -12577,7 +12717,7 @@ module.exports={ } } -},{}],102:[function(require,module,exports){ +},{}],172:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -12616,7 +12756,7 @@ var WidgetContainer = React.createClass({displayName: 'WidgetContainer', module.exports = WidgetContainer; -},{"react":45}],103:[function(require,module,exports){ +},{"react":117}],173:[function(require,module,exports){ var widgets = {}; var Widgets = { @@ -12756,7 +12896,7 @@ var Widgets = { module.exports = Widgets; -},{}],104:[function(require,module,exports){ +},{}],174:[function(require,module,exports){ /** @jsx React.DOM */ var Changeable = require("../mixins/changeable.jsx"); @@ -12942,7 +13082,7 @@ module.exports = { }; -},{"../components/text-list-editor.jsx":67,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../renderer.jsx":97,"../util.js":100}],105:[function(require,module,exports){ +},{"../components/text-list-editor.jsx":137,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../renderer.jsx":167,"../util.js":170}],175:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -13200,7 +13340,7 @@ module.exports = { hidden: false }; -},{"../components/fancy-select.jsx":52,"../mixins/jsonify-props.jsx":92,"../perseus-api.jsx":94,"../util.js":100,"react":45,"react-components/info-tip":39}],106:[function(require,module,exports){ +},{"../components/fancy-select.jsx":122,"../mixins/jsonify-props.jsx":162,"../perseus-api.jsx":164,"../util.js":170,"react":117,"react-components/info-tip":7}],176:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -13395,7 +13535,7 @@ module.exports = { editor: ExampleGraphieWidgetEditor }; -},{"../components/graphie.jsx":57,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45}],107:[function(require,module,exports){ +},{"../components/graphie.jsx":127,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117}],177:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -13579,7 +13719,7 @@ module.exports = { editor: ExampleWidgetEditor }; -},{"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45}],108:[function(require,module,exports){ +},{"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117}],178:[function(require,module,exports){ /** @jsx React.DOM */ var React = require("react"); @@ -14068,7 +14208,7 @@ module.exports = { hidden: false }; -},{"../components/input-with-examples.jsx":58,"../components/math-input.jsx":59,"../components/prop-check-box.jsx":62,"../components/tex-buttons.jsx":65,"../enabled-features.jsx":76,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../perseus-api.jsx":94,"../tex.jsx":99,"../util.js":100,"react":45,"react-components/info-tip":39,"react-components/tooltip":44}],109:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":128,"../components/math-input.jsx":129,"../components/prop-check-box.jsx":132,"../components/tex-buttons.jsx":135,"../enabled-features.jsx":146,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../perseus-api.jsx":164,"../tex.jsx":169,"../util.js":170,"react":117,"react-components/info-tip":7,"react-components/tooltip":116}],179:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -14320,7 +14460,7 @@ module.exports = { editor: IframeEditor }; -},{"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45,"react-components/blur-input":36}],110:[function(require,module,exports){ +},{"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117,"react-components/blur-input":4}],180:[function(require,module,exports){ /** @jsx React.DOM */ var BlurInput = require("react-components/blur-input"); @@ -14655,7 +14795,7 @@ module.exports = { }; -},{"../components/graphie.jsx":57,"../components/range-input.jsx":63,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react-components/blur-input":36,"react-components/info-tip":39}],111:[function(require,module,exports){ +},{"../components/graphie.jsx":127,"../components/range-input.jsx":133,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react-components/blur-input":4,"react-components/info-tip":7}],181:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -14976,7 +15116,7 @@ module.exports = { transform: propTransform }; -},{"../components/input-with-examples.jsx":58,"../enabled-features.jsx":76,"../perseus-api.jsx":94,"../renderer.jsx":97,"../tex.jsx":99,"../util.js":100,"react":45,"react-components/blur-input":36,"react-components/info-tip":39}],112:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":128,"../enabled-features.jsx":146,"../perseus-api.jsx":164,"../renderer.jsx":167,"../tex.jsx":169,"../util.js":170,"react":117,"react-components/blur-input":4,"react-components/info-tip":7}],182:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -17474,7 +17614,7 @@ module.exports = { hidden: false }; -},{"../components/graph-settings.jsx":53,"../components/graph.jsx":54,"../components/number-input.jsx":61,"../interactive2.js":80,"../util.js":100,"react":45,"react-components/info-tip":39}],113:[function(require,module,exports){ +},{"../components/graph-settings.jsx":123,"../components/graph.jsx":124,"../components/number-input.jsx":131,"../interactive2.js":150,"../util.js":170,"react":117,"react-components/info-tip":7}],183:[function(require,module,exports){ /** @jsx React.DOM */ var InfoTip = require("react-components/info-tip"); @@ -17922,7 +18062,7 @@ module.exports = { editor: InteractiveNumberLineEditor }; -},{"../components/prop-check-box.jsx":62,"../util.js":100,"react-components/info-tip":39}],114:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":132,"../util.js":170,"react-components/info-tip":7}],184:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18384,7 +18524,7 @@ module.exports = { transform: transformProps }; -},{"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45,"react-components/info-tip":39}],115:[function(require,module,exports){ +},{"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117,"react-components/info-tip":7}],185:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18624,7 +18764,7 @@ module.exports = { hidden: false }; -},{"../components/prop-check-box.jsx":62,"../components/sortable.jsx":64,"../components/text-list-editor.jsx":67,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/info-tip":39}],116:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":132,"../components/sortable.jsx":134,"../components/text-list-editor.jsx":137,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/info-tip":7}],186:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18985,7 +19125,7 @@ module.exports = { hidden: false }; -},{"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../components/range-input.jsx":63,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45,"react-components/info-tip":39}],117:[function(require,module,exports){ +},{"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../components/range-input.jsx":133,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117,"react-components/info-tip":7}],187:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -19836,7 +19976,7 @@ module.exports = { hidden: false }; -},{"../components/graphie.jsx":57,"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../components/range-input.jsx":63,"../interactive2.js":80,"../interactive2/interactive-util.js":81,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45,"react-components/button-group":37,"react-components/info-tip":39}],118:[function(require,module,exports){ +},{"../components/graphie.jsx":127,"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../components/range-input.jsx":133,"../interactive2.js":150,"../interactive2/interactive-util.js":151,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117,"react-components/button-group":5,"react-components/info-tip":7}],188:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -20281,7 +20421,7 @@ module.exports = { hidden: false }; -},{"../components/input-with-examples.jsx":58,"../components/multi-button-group.jsx":60,"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../editor.jsx":75,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45,"react-components/button-group":37,"react-components/info-tip":39}],119:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":128,"../components/multi-button-group.jsx":130,"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../editor.jsx":145,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117,"react-components/button-group":5,"react-components/info-tip":7}],189:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -20954,7 +21094,7 @@ module.exports = { hidden: false }; -},{"../components/text-list-editor.jsx":67,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/info-tip":39}],120:[function(require,module,exports){ +},{"../components/text-list-editor.jsx":137,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/info-tip":7}],190:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -21951,7 +22091,7 @@ module.exports = { hidden: false }; -},{"../components/number-input.jsx":61,"../components/range-input.jsx":63,"../components/text-list-editor.jsx":67,"../util.js":100,"react":45,"react-components/info-tip":39}],121:[function(require,module,exports){ +},{"../components/number-input.jsx":131,"../components/range-input.jsx":133,"../components/text-list-editor.jsx":137,"../util.js":170,"react":117,"react-components/info-tip":7}],191:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22206,7 +22346,7 @@ var Radio = React.createClass({displayName: 'Radio', }, statics: { - displayMode: "block" + displayMode: "inline-block" } }); @@ -22498,7 +22638,7 @@ module.exports = { transform: choiceTransform }; -},{"../components/prop-check-box.jsx":62,"../editor.jsx":75,"../mixins/changeable.jsx":91,"../perseus-api.jsx":94,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/button-group":37,"react-components/info-tip":39}],122:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":132,"../editor.jsx":145,"../mixins/changeable.jsx":161,"../perseus-api.jsx":164,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/button-group":5,"react-components/info-tip":7}],192:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22650,7 +22790,7 @@ module.exports = { hidden: false }; -},{"../components/prop-check-box.jsx":62,"../components/sortable.jsx":64,"../components/text-list-editor.jsx":67,"../util.js":100,"react":45,"react-components/info-tip":39}],123:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":132,"../components/sortable.jsx":134,"../components/text-list-editor.jsx":137,"../util.js":170,"react":117,"react-components/info-tip":7}],193:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22982,7 +23122,7 @@ _.extend(SpeakingTextInput, { editor: SpeakingTextInputEditor }; -},{"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"classnames":3,"react":45}],124:[function(require,module,exports){ +},{"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"classnames":3,"react":117}],194:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -23155,7 +23295,7 @@ module.exports = { editor: SpeakingVoiceEditor }; -},{"../../lib/responsivevoice.js":2,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45}],125:[function(require,module,exports){ +},{"../../lib/responsivevoice.js":2,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117}],195:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -23475,7 +23615,7 @@ module.exports = { hidden: false }; -},{"../editor.jsx":75,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/info-tip":39}],126:[function(require,module,exports){ +},{"../editor.jsx":145,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/info-tip":7}],196:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -25979,5 +26119,5 @@ module.exports = { hidden: false }; -},{"../components/graph-settings.jsx":53,"../components/graph.jsx":54,"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../tex.jsx":99,"../util.js":100,"react":45,"react-components/info-tip":39}]},{},[95])(95) +},{"../components/graph-settings.jsx":123,"../components/graph.jsx":124,"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../tex.jsx":169,"../util.js":170,"react":117,"react-components/info-tip":7}]},{},[165])(165) }); \ No newline at end of file diff --git a/src/widgets/radio.jsx b/src/widgets/radio.jsx index 01e83ffe11..e142d2d045 100644 --- a/src/widgets/radio.jsx +++ b/src/widgets/radio.jsx @@ -252,7 +252,7 @@ var Radio = React.createClass({ }, statics: { - displayMode: "block" + displayMode: "inline-block" } }); From 11958faaecbf09ec866ef1de382782852f99dfdc Mon Sep 17 00:00:00 2001 From: Giddy Lin Date: Thu, 8 Sep 2016 16:45:47 +0800 Subject: [PATCH 135/156] dynamic button div height --- build/perseus-1.js | 10 ++++++---- src/components/math-input.jsx | 6 ++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index cf99910f54..b17b829ae2 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 086d968f1cb5f30fe4af216312ad4a669acd1721 -// branch expression-style +// commit 736fd4f76358b7502996ccdd07f47e5f6bfac960 +// branch fix-expression-button (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o; + button_height = (6 + 58 * this.props.buttonSets.length).toString() + "px"; } return
@@ -46,7 +48,7 @@ var MathInput = React.createClass({ onFocus={this.handleFocus} onBlur={this.handleBlur} />
-
+
{buttons}
; From cdaeb2152ee5bc2c4a4b5a846a16e08f7b13007c Mon Sep 17 00:00:00 2001 From: Giddy Lin Date: Fri, 9 Sep 2016 10:46:44 +0800 Subject: [PATCH 136/156] change back to absolute --- build/perseus-1.css | 4 ++-- build/perseus-1.js | 4 ++-- src/components/math-input.jsx | 2 +- stylesheets/exercise-content-package/perseus.less | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/build/perseus-1.css b/build/perseus-1.css index 353ea4cf32..80b0c5080d 100644 --- a/build/perseus-1.css +++ b/build/perseus-1.css @@ -1159,9 +1159,9 @@ body.mobile .perseus-widget-radio input[type=checkbox]:checked:before { padding: 2px; width: 280px; } -.math-input-buttons.relative { +.math-input-buttons.absolute { left: -2px; - position: relative; + position: absolute; top: -3px; z-index: 5; width: 360px; diff --git a/build/perseus-1.js b/build/perseus-1.js index a3aa3c92a8..4bb7f206de 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,5 +1,5 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 11958faaecbf09ec866ef1de382782852f99dfdc +// commit 649852b0a215ecc530a677a5537c803022e214fb // branch fix-expression-button (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o; diff --git a/stylesheets/exercise-content-package/perseus.less b/stylesheets/exercise-content-package/perseus.less index f09fa68faa..717dde2664 100644 --- a/stylesheets/exercise-content-package/perseus.less +++ b/stylesheets/exercise-content-package/perseus.less @@ -447,9 +447,9 @@ padding: 2px; width: 280px; - &.relative { + &.absolute { left: -2px; - position: relative; + position: absolute; top: -3px; z-index: @zIndexCalculator; width: 360px; From 00cb98746d0ec82583cf7246e2d5f9e5d64b0630 Mon Sep 17 00:00:00 2001 From: AntaiLi Date: Fri, 9 Sep 2016 16:16:44 +0800 Subject: [PATCH 137/156] let mixed number rational can compare with fake rational --- lib/kas.js | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/lib/kas.js b/lib/kas.js index 54b9e65d49..5312fcfe00 100644 --- a/lib/kas.js +++ b/lib/kas.js @@ -979,6 +979,30 @@ _.extend(Expr.prototype, { return this.equals(this.simplify()); }, + isMixedNumberRational: function() { + //判斷是否為帶分數 + if (this.terms.length !== 2){ + return false; + } + var left = this.terms[0]; + var right = this.terms[1]; + if(left instanceof Int && right instanceof Rational){ + return true; + }else { + return false; + } + }, + + getMixedNumberRationalVal: function() { + // for mixed number Rational: 1 1/2 = 1+1/2 , -1 1/2 = -1-1/2 + var left = this.terms[0]; + var right = this.terms[1]; + if (left.n < 0){ + return left.n - right.n/right.d; + } + return left.n + right.n/right.d; + }, + // return the child nodes of this node exprArgs: function() { return _.filter(this.args(), function(arg) { @@ -1131,6 +1155,16 @@ _.extend(Expr.prototype, { // a canonical commutative form // should only be done after compare() returns true to avoid false positives sameForm: function(other) { + // for fake Rational and mixed number Rational compare + if (this instanceof Rational && other instanceof Mul){ + if(other.isMixedNumberRational()){ + return true; + } + }else if(this instanceof Mul && other instanceof Rational){ + if(this.isMixedNumberRational()){ + return true; + } + } return this.strip().equals(other.strip()); }, @@ -1443,7 +1477,13 @@ _.extend(Mul.prototype, { func: Mul, eval: function(vars) { - return _.reduce(this.terms, function(memo, term) { return memo * term.eval(vars); }, 1); + if(this.isMixedNumberRational()){ + return this.getMixedNumberRationalVal(); + } + + return _.reduce(this.terms, function(memo, term) { + return memo * term.eval(vars); + }, 1); }, print: function() { From 71aa0c95411553cbfa96fde2b772d5ea12f7ba32 Mon Sep 17 00:00:00 2001 From: AntaiLi Date: Fri, 9 Sep 2016 17:05:57 +0800 Subject: [PATCH 138/156] restore code that the answer must the same form --- lib/kas.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/lib/kas.js b/lib/kas.js index 5312fcfe00..c0e6cf5931 100644 --- a/lib/kas.js +++ b/lib/kas.js @@ -1156,15 +1156,6 @@ _.extend(Expr.prototype, { // should only be done after compare() returns true to avoid false positives sameForm: function(other) { // for fake Rational and mixed number Rational compare - if (this instanceof Rational && other instanceof Mul){ - if(other.isMixedNumberRational()){ - return true; - } - }else if(this instanceof Mul && other instanceof Rational){ - if(this.isMixedNumberRational()){ - return true; - } - } return this.strip().equals(other.strip()); }, From 1d7f38e628d25927e9b901607535c843580d1aa0 Mon Sep 17 00:00:00 2001 From: AntaiLi Date: Fri, 9 Sep 2016 17:08:35 +0800 Subject: [PATCH 139/156] clean code --- lib/kas.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/kas.js b/lib/kas.js index c0e6cf5931..af48f0a5a6 100644 --- a/lib/kas.js +++ b/lib/kas.js @@ -1155,7 +1155,6 @@ _.extend(Expr.prototype, { // a canonical commutative form // should only be done after compare() returns true to avoid false positives sameForm: function(other) { - // for fake Rational and mixed number Rational compare return this.strip().equals(other.strip()); }, From 77ba64245bc31ad3e2f0c6c0cf37225e41eca5c2 Mon Sep 17 00:00:00 2001 From: 98Chamberlain Date: Fri, 9 Sep 2016 20:48:44 +0800 Subject: [PATCH 140/156] fix two translation problem --- src/widgets/input-number.jsx | 10 +++++----- src/widgets/numeric-input.jsx | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/widgets/input-number.jsx b/src/widgets/input-number.jsx index f02d7e451b..134005a36a 100644 --- a/src/widgets/input-number.jsx +++ b/src/widgets/input-number.jsx @@ -51,23 +51,23 @@ var formExamples = { "integer": function(options) { return $._("an integer, like $6$"); }, "proper": function(options) { if (options.simplify === "optional") { - return $._("*真* 分數, 例 $1/2$ or $6/10$"); + return $._("真分數, 例 $1/2$ or $6/10$"); } else { - return $._("最簡真* 分數, 例 $3/5$"); + return $._("最簡真分數, 例 $3/5$"); } }, "improper": function(options) { if (options.simplify === "optional") { - return $._("*假* 分數, 例 $10/7$ or $14/8$"); + return $._("假分數, 例 $10/7$ or $14/8$"); } else { - return $._("*最簡假* 分數, 例 $7/4$"); + return $._("最簡假分數, 例 $7/4$"); } }, "mixed": function(options) { return $._("帶分數, 例 $1\\ 3/4$"); }, "decimal": function(options) { - return $._("*精確的* 小數, 例 $0.75$"); + return $._("精確的小數, 例 $0.75$"); }, "percent": function(options) { return $._("a percent, like $12.34\\%$"); diff --git a/src/widgets/numeric-input.jsx b/src/widgets/numeric-input.jsx index 4346ab3ee4..d5d9d4f5cc 100644 --- a/src/widgets/numeric-input.jsx +++ b/src/widgets/numeric-input.jsx @@ -28,13 +28,13 @@ var answerFormButtons = [ var formExamples = { "integer": (options) => $._("整數, 例 $6$"), "proper": (options) => options.simplify === "optional" ? - $._("*真* 分數, 例 $1/2$ or $6/10$") : - $._("最簡真* 分數, 例 $3/5$"), + $._("真分數, 例 $1/2$ or $6/10$") : + $._("最簡真分數, 例 $3/5$"), "improper": (options) => options.simplify === "optional" ? - $._("*假* 分數, 例 $10/7$ or $14/8$") : - $._("*最簡假* 分數, 例 $7/4$"), + $._("假分數, 例 $10/7$ or $14/8$") : + $._("最簡假分數, 例 $7/4$"), "mixed": () => $._("帶分數, 例 $1\\ 3/4$"), - "decimal": () => $._("*精確的* 小數, 例 $0.75$"), + "decimal": () => $._("精確的小數, 例 $0.75$"), "pi": () => $._("pi 的倍數, 例 $12\\ \\text{pi}$ or " + "$2/3\\ \\text{pi}$") }; From 494b6881d36103827205f9ec51dbc184d7e5b4b1 Mon Sep 17 00:00:00 2001 From: 98Chamberlain Date: Fri, 9 Sep 2016 22:39:42 +0800 Subject: [PATCH 141/156] second build for translation work --- build/perseus-1.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index 3ce07ae67a..654334019b 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,5 +1,5 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 6c263ca1fa519f1f167c720f3300667d9ff37f82 +// commit e19dd01657685396dd79c6e615c55d6eec972a4c // branch translate20160826 (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o Date: Thu, 20 Oct 2016 12:28:27 +0800 Subject: [PATCH 142/156] add toJSON() for Expression --- build/perseus-1.js | 6344 ++++++++++++++++++------------------ src/widgets/expression.jsx | 6 +- 2 files changed, 3249 insertions(+), 3101 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index 6122e33300..5ba52d2a4e 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit e19dd01657685396dd79c6e615c55d6eec972a4c -// branch translate20160826 +// commit 65af56486a5b7a5703309f7e0bb70991d9226e32 +// branch master (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license +/** @jsx React.DOM */ + +var React = require("react"); + +/* You know when you want to propagate input to a parent... + * but then that parent does something with the input... + * then changing the props of the input... + * on every keystroke... + * so if some input is invalid or incomplete... + * the input gets reset or otherwise effed... + * + * This is the solution. + * + * Enough melodrama. Its an input that only sends changes + * to its parent on blur. */ +var BlurInput = React.createClass({displayName: 'BlurInput', + propTypes: { + value: React.PropTypes.string.isRequired, + onChange: React.PropTypes.func.isRequired + }, + getInitialState: function() { + return { value: this.props.value }; + }, + render: function() { + return this.transferPropsTo(React.DOM.input( + {type:"text", + value:this.state.value, + onChange:this.handleChange, + onBlur:this.handleBlur} )); + }, + componentWillReceiveProps: function(nextProps) { + this.setState({ value: nextProps.value }); + }, + handleChange: function(e) { + this.setState({ value: e.target.value }); + }, + handleBlur: function(e) { + this.props.onChange(e.target.value); + } +}); -/** Used to pool arrays and objects used internally */ -var arrayPool = []; +module.exports = BlurInput; -module.exports = arrayPool; +},{"react":117}],5:[function(require,module,exports){ +/** @jsx React.DOM */ -},{}],5:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreate = require('lodash._basecreate'), - isObject = require('lodash.isobject'), - setBindData = require('lodash._setbinddata'), - slice = require('lodash._slice'); +var React = require('react'); +var RCSS = require('rcss'); +var _ = require('underscore'); -/** - * Used for `Array` method references. - * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; +var outerStyle = { + display: 'inline-block', +}; -/** Native method shortcuts */ -var push = arrayRef.push; +var buttonStyle = { + backgroundColor: 'white', + border: '1px solid #ccc', + borderBottom: '1px solid #ccc', + borderLeft: '0', + cursor: 'pointer', + margin: '0', + padding: '5px 10px', + position: 'relative', // for hover -/** - * The base implementation of `_.bind` that creates the bound function and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new bound function. - */ -function baseBind(bindData) { - var func = bindData[0], - partialArgs = bindData[2], - thisArg = bindData[4]; + ':first-child': { + borderLeft: '1px solid #ccc', + borderTopLeftRadius: '3px', + borderBottomLeftRadius: '3px' + }, - function bound() { - // `Function#bind` spec - // http://es5.github.io/#x15.3.4.5 - if (partialArgs) { - // avoid `arguments` object deoptimizations by using `slice` instead - // of `Array.prototype.slice.call` and not assigning `arguments` to a - // variable as a ternary expression - var args = slice(partialArgs); - push.apply(args, arguments); - } - // mimic the constructor's `return` behavior - // http://es5.github.io/#x13.2.2 - if (this instanceof bound) { - // ensure `new bound` is an instance of `func` - var thisBinding = baseCreate(func.prototype), - result = func.apply(thisBinding, args || arguments); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisArg, args || arguments); - } - setBindData(bound, bindData); - return bound; -} + ':last-child': { + borderRight: '1px solid #ccc', + borderTopRightRadius: '3px', + borderBottomRightRadius: '3px' + }, -module.exports = baseBind; + ':hover': { + backgroundColor: '#ccc' + }, -},{"lodash._basecreate":6,"lodash._setbinddata":19,"lodash._slice":21,"lodash.isobject":31}],6:[function(require,module,exports){ -(function (global){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var isNative = require('lodash._isnative'), - isObject = require('lodash.isobject'), - noop = require('lodash.noop'); + ':focus': { + zIndex: '2' + } +}; -/* Native method shortcuts for methods with the same name as other `lodash` methods */ -var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate; +var selectedStyle = { + backgroundColor: '#ddd' +}; -/** - * The base implementation of `_.create` without support for assigning - * properties to the created object. +RCSS.createClass(outerStyle); +RCSS.createClass(buttonStyle); +RCSS.createClass(selectedStyle); + +/* ButtonGroup is an aesthetically pleasing group of buttons. * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. + * The class requires these properties: + * buttons - an array of objects with keys: + * "value": this is the value returned when the button is selected + * "text": this is the text shown on the button + * "title": this is the title-text shown on hover + * onChange - a function that is provided with the updated value + * (which it then is responsible for updating) + * + * The class has these optional properties: + * value - the initial value of the button selected, defaults to null. + * allowEmpty - if false, exactly one button _must_ be selected; otherwise + * it defaults to true and _at most_ one button (0 or 1) may be selected. + * + * Requires stylesheets/perseus-admin-package/editor.less to look nice. */ -function baseCreate(prototype, properties) { - return isObject(prototype) ? nativeCreate(prototype) : {}; -} -// fallback for browsers without `Object.create` -if (!nativeCreate) { - baseCreate = (function() { - function Object() {} - return function(prototype) { - if (isObject(prototype)) { - Object.prototype = prototype; - var result = new Object; - Object.prototype = null; - } - return result || global.Object(); - }; - }()); -} -module.exports = baseCreate; +var ButtonGroup = React.createClass({displayName: 'ButtonGroup', + propTypes: { + value: React.PropTypes.any, + buttons: React.PropTypes.arrayOf(React.PropTypes.shape({ + value: React.PropTypes.any.isRequired, + text: React.PropTypes.renderable, + title: React.PropTypes.string + })).isRequired, + onChange: React.PropTypes.func.isRequired, + allowEmpty: React.PropTypes.bool + }, -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"lodash._isnative":14,"lodash.isobject":31,"lodash.noop":33}],7:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var bind = require('lodash.bind'), - identity = require('lodash.identity'), - setBindData = require('lodash._setbinddata'), - support = require('lodash.support'); + getDefaultProps: function() { + return { + value: null, + allowEmpty: true + }; + }, -/** Used to detected named functions */ -var reFuncName = /^\s*function[ \n\r\t]+\w/; + render: function() { + var value = this.props.value; + var buttons = _(this.props.buttons).map(function(button, i) { + var maybeSelected = button.value === value ? + selectedStyle.className : + ""; + return React.DOM.button( {title:button.title, + id:"" + i, + ref:"button" + i, + key:"" + i, + className:(buttonStyle.className + " " + maybeSelected), + onClick:this.toggleSelect.bind(this, button.value)}, + button.text || "" + button.value + ); + }.bind(this)); -/** Used to detect functions containing a `this` reference */ -var reThis = /\bthis\b/; + return React.DOM.div( {className:outerStyle.className}, + buttons + ); + }, -/** Native method shortcuts */ -var fnToString = Function.prototype.toString; + focus: function() { + this.getDOMNode().focus(); + return true; + }, -/** - * The base implementation of `_.createCallback` without support for creating - * "_.pluck" or "_.where" style callbacks. - * - * @private - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - */ -function baseCreateCallback(func, thisArg, argCount) { - if (typeof func != 'function') { - return identity; - } - // exit early for no `thisArg` or already bound by `Function#bind` - if (typeof thisArg == 'undefined' || !('prototype' in func)) { - return func; - } - var bindData = func.__bindData__; - if (typeof bindData == 'undefined') { - if (support.funcNames) { - bindData = !func.name; - } - bindData = bindData || !support.funcDecomp; - if (!bindData) { - var source = fnToString.call(func); - if (!support.funcNames) { - bindData = !reFuncName.test(source); - } - if (!bindData) { - // checks if `func` references the `this` keyword and stores the result - bindData = reThis.test(source); - setBindData(func, bindData); - } - } - } - // exit early if there are no `this` references or `func` is bound - if (bindData === false || (bindData !== true && bindData[1] & 1)) { - return func; - } - switch (argCount) { - case 1: return function(value) { - return func.call(thisArg, value); - }; - case 2: return function(a, b) { - return func.call(thisArg, a, b); - }; - case 3: return function(value, index, collection) { - return func.call(thisArg, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(thisArg, accumulator, value, index, collection); - }; - } - return bind(func, thisArg); -} + toggleSelect: function(newValue) { + var value = this.props.value; -module.exports = baseCreateCallback; + if (this.props.allowEmpty) { + // Select the new button or unselect if it's already selected + this.props.onChange(value !== newValue ? newValue : null); + } else { + this.props.onChange(newValue); + } + } +}); -},{"lodash._setbinddata":19,"lodash.bind":23,"lodash.identity":29,"lodash.support":35}],8:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreate = require('lodash._basecreate'), - isObject = require('lodash.isobject'), - setBindData = require('lodash._setbinddata'), - slice = require('lodash._slice'); +module.exports = ButtonGroup; -/** - * Used for `Array` method references. - * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; +},{"rcss":8,"react":117,"underscore":118}],6:[function(require,module,exports){ +/** @jsx React.DOM */ -/** Native method shortcuts */ -var push = arrayRef.push; +var React = require('react'); -/** - * The base implementation of `createWrapper` that creates the wrapper and - * sets its meta data. +/* This component makes its children a drag target. Example: * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new function. + * Drag to me + * + * ... + * + * handleDrop: function(e) { + * this.addImages(e.nativeEvent.dataTransfer.files); + * } + * + * Now "Drag to me" will be a drag target - when something is dragged over it, + * the element will become partially transparent as a visual indicator that + * it's a target. */ -function baseCreateWrapper(bindData) { - var func = bindData[0], - bitmask = bindData[1], - partialArgs = bindData[2], - partialRightArgs = bindData[3], - thisArg = bindData[4], - arity = bindData[5]; - - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - key = func; +// TODO(joel) - indicate before the hover is over the target that it's possible +// to drag into the target. This would (I think) require a high level handler - +// like on Perseus itself, waiting for onDragEnter, then passing down the +// event. Sounds like a pain. Possible workaround - create a div covering the +// entire page... +// +// Other extensions: +// * custom styles for global drag and dragOver +// * only respond to certain types of drags (only images for instance)! +var DragTarget = React.createClass({displayName: 'DragTarget', + propTypes: { + onDrop: React.PropTypes.func.isRequired, + component: React.PropTypes.component, + shouldDragHighlight: React.PropTypes.func + }, + render: function() { + var opacity = this.state.dragHover ? { "opacity": 0.3 } : {}; + var component = this.props.component; - function bound() { - var thisBinding = isBind ? thisArg : this; - if (partialArgs) { - var args = slice(partialArgs); - push.apply(args, arguments); - } - if (partialRightArgs || isCurry) { - args || (args = slice(arguments)); - if (partialRightArgs) { - push.apply(args, partialRightArgs); - } - if (isCurry && args.length < arity) { - bitmask |= 16 & ~32; - return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); - } - } - args || (args = arguments); - if (isBindKey) { - func = thisBinding[key]; - } - if (this instanceof bound) { - thisBinding = baseCreate(func.prototype); - var result = func.apply(thisBinding, args); - return isObject(result) ? result : thisBinding; + return this.transferPropsTo( + component( {style:opacity, + onDrop:this.handleDrop, + onDragEnd:this.handleDragEnd, + onDragOver:this.handleDragOver, + onDragEnter:this.handleDragEnter, + onDragLeave:this.handleDragLeave}, + this.props.children + ) + ); + }, + getInitialState: function() { + return { dragHover: false }; + }, + getDefaultProps: function() { + return { + component: React.DOM.div, + shouldDragHighlight: function() {return true;} + }; + }, + handleDrop: function(e) { + e.stopPropagation(); + e.preventDefault(); + this.setState({ dragHover: false }); + this.props.onDrop(e); + }, + handleDragEnd: function() { + this.setState({ dragHover: false }); + }, + handleDragOver: function(e) { + e.preventDefault(); + }, + handleDragLeave: function() { + this.setState({ dragHover: false }); + }, + handleDragEnter: function(e) { + this.setState({ dragHover: this.props.shouldDragHighlight(e) }); } - return func.apply(thisBinding, args); - } - setBindData(bound, bindData); - return bound; -} - -module.exports = baseCreateWrapper; +}); -},{"lodash._basecreate":6,"lodash._setbinddata":19,"lodash._slice":21,"lodash.isobject":31}],9:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var forIn = require('lodash.forin'), - getArray = require('lodash._getarray'), - isFunction = require('lodash.isfunction'), - objectTypes = require('lodash._objecttypes'), - releaseArray = require('lodash._releasearray'); +module.exports = DragTarget; -/** `Object#toString` result shortcuts */ -var argsClass = '[object Arguments]', - arrayClass = '[object Array]', - boolClass = '[object Boolean]', - dateClass = '[object Date]', - numberClass = '[object Number]', - objectClass = '[object Object]', - regexpClass = '[object RegExp]', - stringClass = '[object String]'; +},{"react":117}],7:[function(require,module,exports){ +/** @jsx React.DOM */ -/** Used for native method references */ -var objectProto = Object.prototype; +var React = require('react'); +var RCSS = require('rcss'); +var _ = require('underscore'); -/** Used to resolve the internal [[Class]] of values */ -var toString = objectProto.toString; +var colors = { + grayLight: '#aaa', + basicBorderColor: '#ccc', + white: '#fff' +}; -/** Native method shortcuts */ -var hasOwnProperty = objectProto.hasOwnProperty; +var infoTip = { + display: 'inline-block', + marginLeft: '5px', + position: 'relative' +}; -/** - * The base implementation of `_.isEqual`, without support for `thisArg` binding, - * that allows partial "_.where" style comparisons. - * - * @private - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. - * @param {Array} [stackA=[]] Tracks traversed `a` objects. - * @param {Array} [stackB=[]] Tracks traversed `b` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { - // used to indicate that when comparing objects, `a` has at least the properties of `b` - if (callback) { - var result = callback(a, b); - if (typeof result != 'undefined') { - return !!result; - } - } - // exit early for identical values - if (a === b) { - // treat `+0` vs. `-0` as not equal - return a !== 0 || (1 / a == 1 / b); - } - var type = typeof a, - otherType = typeof b; +var infoTipI = { + cursor: 'pointer' +}; - // exit early for unlike primitive values - if (a === a && - !(a && objectTypes[type]) && - !(b && objectTypes[otherType])) { - return false; - } - // exit early for `null` and `undefined` avoiding ES3's Function#call behavior - // http://es5.github.io/#x15.3.4.4 - if (a == null || b == null) { - return a === b; - } - // compare [[Class]] names - var className = toString.call(a), - otherClass = toString.call(b); +var infoTipContainer = { + position: 'absolute', + 'top': '-12px', + left: '22px', + zIndex: '1000' +}; - if (className == argsClass) { - className = objectClass; - } - if (otherClass == argsClass) { - otherClass = objectClass; - } - if (className != otherClass) { - return false; - } - switch (className) { - case boolClass: - case dateClass: - // coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0` treating invalid dates coerced to `NaN` as not equal - return +a == +b; +var triangleBeforeAfter = { + borderBottom: '9px solid transparent', + borderTop: '9px solid transparent', + content: ' ', + height: '0', + position: 'absolute', + 'top': '0', + width: '0' +}; - case numberClass: - // treat `NaN` vs. `NaN` as equal - return (a != +a) - ? b != +b - // but treat `+0` vs. `-0` as not equal - : (a == 0 ? (1 / a == 1 / b) : a == +b); +var infoTipTriangle = { + height: '10px', + left: '0', + position: 'absolute', + 'top': '8px', + width: '0', + zIndex: '1', - case regexpClass: - case stringClass: - // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) - // treat string primitives and their corresponding object instances as equal - return a == String(b); - } - var isArr = className == arrayClass; - if (!isArr) { - // unwrap any `lodash` wrapped values - var aWrapped = hasOwnProperty.call(a, '__wrapped__'), - bWrapped = hasOwnProperty.call(b, '__wrapped__'); + ':before': _.extend({}, triangleBeforeAfter, { + borderRight: '9px solid #bbb', + right: '0', + }), - if (aWrapped || bWrapped) { - return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); - } - // exit for functions and DOM nodes - if (className != objectClass) { - return false; - } - // in older versions of Opera, `arguments` objects have `Array` constructors - var ctorA = a.constructor, - ctorB = b.constructor; + ':after': _.extend({}, triangleBeforeAfter, { + borderRight: ("9px solid " + colors.white), + right: '-1px' + }) +}; - // non `Object` object instances with different constructors are not equal - if (ctorA != ctorB && - !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && - ('constructor' in a && 'constructor' in b) - ) { - return false; - } - } - // assume cyclic structures are equal - // the algorithm for detecting cyclic structures is adapted from ES 5.1 - // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); +var basicBorder = { + border: ("1px solid " + colors.basicBorderColor) +}; - var length = stackA.length; - while (length--) { - if (stackA[length] == a) { - return stackB[length] == b; - } - } - var size = 0; - result = true; +var boxShadow = function(str) { return { boxShadow: str }; }; - // add `a` and `b` to the stack of traversed objects - stackA.push(a); - stackB.push(b); +var verticalShadow = RCSS.merge( + basicBorder, + boxShadow(("0 1px 3px " + colors.basicBorderColor)), + { borderBottom: ("1px solid " + colors.grayLight) } +); - // recursively compare objects and arrays (susceptible to call stack limits) - if (isArr) { - // compare lengths to determine if a deep comparison is necessary - length = a.length; - size = b.length; - result = size == length; +var infoTipContentContainer = RCSS.merge(verticalShadow, { + background: colors.white, + padding: '5px 10px', + width: '240px' +}); - if (result || isWhere) { - // deep compare the contents, ignoring non-numeric properties - while (size--) { - var index = length, - value = b[size]; +RCSS.createClass(infoTip); +RCSS.createClass(infoTipI); +RCSS.createClass(infoTipTriangle); +RCSS.createClass(verticalShadow); +RCSS.createClass(infoTipContainer); +RCSS.createClass(infoTipContentContainer); - if (isWhere) { - while (index--) { - if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } - } - else { - // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` - // which, in this case, is more costly - forIn(b, function(value, key, b) { - if (hasOwnProperty.call(b, key)) { - // count the number of properties. - size++; - // deep compare each property value. - return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); - } - }); +var questionMark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2N2M3NTAxYS04YmVlLTQ0M2MtYmRiNS04OGM2N2IxN2NhYzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUJCRTk4Qjc4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUJCRTk4QjY4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGE5ZDI0OTMtODk1NC00OGFkLTlhMTgtZDAwM2MwYWNjNDJlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY3Yzc1MDFhLThiZWUtNDQzYy1iZGI1LTg4YzY3YjE3Y2FjMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqm89uYAAADMSURBVHjaXJA9DoJAEIUH1M4TUHIFsCMGen9OwCGw1YRGW2ntKel0exsojHIBC0ouQAyUviFDstmXfNmZeS+zm7XSNCXRFiRgJf0bXIHixpbhGdxBBJYC1w/xaA424MhNEATkui71fU9KqfEU78UbD9PdbJRlOdae55GmhIP+1NV1TcMwkOM41DSNHvRtMhTHMRVFQW3b6mOLgx99kue5GRp/gIOZuZGvNpTNwjD8oliANU+qqqKu6/TQBdymN57AHjzBT+B6Jx79BRgAvc49kQA4yxgAAAAASUVORK5CYII='; // @NoLint - if (result && !isWhere) { - // ensure both objects have the same number of properties - forIn(a, function(value, key, a) { - if (hasOwnProperty.call(a, key)) { - // `size` will be `-1` if `a` has more properties than `b` - return (result = --size > -1); - } - }); +var InfoTip = React.createClass({displayName: 'InfoTip', + getInitialState: function() { + return { + hover: false + }; + }, + + render: function() { + return React.DOM.div( {className:infoTip.className}, + React.DOM.img( {width:10, + height:10, + src:questionMark, + onMouseEnter:this.handleMouseEnter, + onMouseLeave:this.handleMouseLeave} ), + React.DOM.div( {className:infoTipContainer.className, + style:{display: this.state.hover ? 'block' : 'none'}}, + React.DOM.div( {className:infoTipTriangle.className} ), + /* keep the classes here - used for selectors on KA */ + React.DOM.div( {className:infoTipContentContainer.className}, + this.props.children + ) + ) + ); + }, + + handleMouseEnter: function() { + this.setState({hover: true}); + }, + + handleMouseLeave: function() { + this.setState({hover: false}); } - } - stackA.pop(); - stackB.pop(); +}); - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; -} +module.exports = InfoTip; -module.exports = baseIsEqual; +},{"rcss":8,"react":117,"underscore":118}],8:[function(require,module,exports){ +var assign = require('lodash.assign'); -},{"lodash._getarray":12,"lodash._objecttypes":16,"lodash._releasearray":17,"lodash.forin":27,"lodash.isfunction":30}],10:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseBind = require('lodash._basebind'), - baseCreateWrapper = require('lodash._basecreatewrapper'), - isFunction = require('lodash.isfunction'), - slice = require('lodash._slice'); +var styleRuleValidator = require('./styleRuleValidator'); +var styleRuleConverter = require('./styleRuleConverter'); +var mediaQueryValidator = require('valid-media-queries'); -/** - * Used for `Array` method references. - * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; +var existingClasses = {}; +var styleTag = createStyleTag(); -/** Native method shortcuts */ -var push = arrayRef.push, - unshift = arrayRef.unshift; +var classNameId = 0; +var randomSuffix = Math.random().toString(36).slice(-5); -/** - * Creates a function that, when called, either curries or invokes `func` - * with an optional `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of method flags to compose. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` - * 8 - `_.curry` (bound) - * 16 - `_.partial` - * 32 - `_.partialRight` - * @param {Array} [partialArgs] An array of arguments to prepend to those - * provided to the new function. - * @param {Array} [partialRightArgs] An array of arguments to append to those - * provided to the new function. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new function. - */ -function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - isPartial = bitmask & 16, - isPartialRight = bitmask & 32; +function generateValidCSSClassName() { + // CSS classNames can't start with a number. + return 'c' + (classNameId++) + '-' + randomSuffix; +} - if (!isBindKey && !isFunction(func)) { - throw new TypeError; - } - if (isPartial && !partialArgs.length) { - bitmask &= ~16; - isPartial = partialArgs = false; - } - if (isPartialRight && !partialRightArgs.length) { - bitmask &= ~32; - isPartialRight = partialRightArgs = false; - } - var bindData = func && func.__bindData__; - if (bindData && bindData !== true) { - // clone `bindData` - bindData = slice(bindData); - if (bindData[2]) { - bindData[2] = slice(bindData[2]); - } - if (bindData[3]) { - bindData[3] = slice(bindData[3]); - } - // set `thisBinding` is not previously bound - if (isBind && !(bindData[1] & 1)) { - bindData[4] = thisArg; - } - // set if previously bound but not currently (subsequent curried functions) - if (!isBind && bindData[1] & 1) { - bitmask |= 8; - } - // set curried arity if not yet set - if (isCurry && !(bindData[1] & 4)) { - bindData[5] = arity; - } - // append partial left arguments - if (isPartial) { - push.apply(bindData[2] || (bindData[2] = []), partialArgs); +function objToCSS(style) { + var serialized = ''; + for (var propName in style) { + // we put that ourselves + if (propName == 'className') continue; + + var cssPropName = styleRuleConverter.hyphenateProp(propName); + if (!styleRuleValidator.isValidProp(cssPropName)) { + console.warn( + '%s (transformed into %s) is not a valid CSS property name.', propName, cssPropName + ); + continue; } - // append partial right arguments - if (isPartialRight) { - unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); + + var styleValue = style[propName]; + if (!styleRuleValidator.isValidValue(styleValue)) continue; + + if (styleValue !== null) { + serialized += cssPropName + ':'; + serialized += styleRuleConverter.escapeValueForProp(styleValue, + cssPropName) + ';'; } - // merge flags - bindData[1] |= bitmask; - return createWrapper.apply(null, bindData); } - // fast path for `_.bind` - var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; - return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); + return serialized || null; } -module.exports = createWrapper; +function createStyleTag() { + var tag = document.createElement('style'); + document.getElementsByTagName('head')[0].appendChild(tag); + return tag; +} -},{"lodash._basebind":5,"lodash._basecreatewrapper":8,"lodash._slice":21,"lodash.isfunction":30}],11:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var htmlEscapes = require('lodash._htmlescapes'); +function styleToCSS(style) { + var styleStr = '.' + style.className + '{'; + styleStr += objToCSS(style.value); + styleStr += '}'; -/** - * Used by `escape` to convert characters to HTML entities. - * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. - */ -function escapeHtmlChar(match) { - return htmlEscapes[match]; + if (style.media) { + if (!mediaQueryValidator(style.media)) { + console.log('%s is not a valid media query.', style.media); + } + styleStr = style.media + '{' + styleStr + '}'; + } + + return styleStr; } -module.exports = escapeHtmlChar; +// TODO: support media queries +function parseStyles(className, styleObj) { + var mainStyle = { + className: className, + value: {} + }; + var styles = [mainStyle]; -},{"lodash._htmlescapes":13}],12:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var arrayPool = require('lodash._arraypool'); + Object.keys(styleObj).forEach(function(k){ + // pseudo-selector, insert a new rule + if (k[0] === ':') { + styles.push({ + className: className+k, + value: styleObj[k] + }); + return; + } else if (k.substring(0, 6) === '@media') { + styles.push({ + className: className, + value: styleObj[k], + media: k + }); + return; + } -/** - * Gets an array from the array pool or creates a new one if the pool is empty. - * - * @private - * @returns {Array} The array from the pool. - */ -function getArray() { - return arrayPool.pop() || []; + // normal rule, insert into main one + mainStyle.value[k] = styleObj[k]; + }); + + return styles; } -module.exports = getArray; +function insertStyle(className, styleObj) { + var styles = parseStyles(className, styleObj); + var styleStr = styles.map(styleToCSS).join(''); + styleTag.innerHTML += styleStr; +} -},{"lodash._arraypool":4}],13:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ +var RCSS = { + merge: function(a, b, c, d, e) { + return assign({}, a, b, c, d, e); + }, -/** - * Used to convert characters to HTML entities: - * - * Though the `>` character is escaped for symmetry, characters like `>` and `/` - * don't require escaping in HTML and have no special meaning unless they're part - * of a tag or an unquoted attribute value. - * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") - */ -var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' + createClass: function(styleObj) { + var styleId = JSON.stringify(styleObj); + var className; + + if (existingClasses[styleId]) { + // already exists, use the existing className + className = existingClasses[styleId]; + } else { + // generate a new class and insert it + className = generateValidCSSClassName(); + existingClasses[styleId] = className; + insertStyle(className, styleObj); + } + + styleObj.className = className; + return styleObj; + } }; -module.exports = htmlEscapes; +module.exports = RCSS; -},{}],14:[function(require,module,exports){ +},{"./styleRuleConverter":113,"./styleRuleValidator":114,"lodash.assign":9,"valid-media-queries":48}],9:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1213,49 +1035,70 @@ module.exports = htmlEscapes; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ - -/** Used for native method references */ -var objectProto = Object.prototype; - -/** Used to resolve the internal [[Class]] of values */ -var toString = objectProto.toString; - -/** Used to detect if a method is native */ -var reNative = RegExp('^' + - String(toString) - .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - .replace(/toString| for [^\]]+/g, '.*?') + '$' -); +var baseCreateCallback = require('lodash._basecreatecallback'), + keys = require('lodash.keys'), + objectTypes = require('lodash._objecttypes'); /** - * Checks if `value` is a native function. + * Assigns own enumerable properties of source object(s) to the destination + * object. Subsequent sources will overwrite property assignments of previous + * sources. If a callback is provided it will be executed to produce the + * assigned values. The callback is bound to `thisArg` and invoked with two + * arguments; (objectValue, sourceValue). * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. - */ -function isNative(value) { - return typeof value == 'function' && reNative.test(value); -} - -module.exports = isNative; - -},{}],15:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + * @static + * @memberOf _ + * @type Function + * @alias extend + * @category Objects + * @param {Object} object The destination object. + * @param {...Object} [source] The source objects. + * @param {Function} [callback] The function to customize assigning values. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns the destination object. + * @example + * + * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); + * // => { 'name': 'fred', 'employer': 'slate' } + * + * var defaults = _.partialRight(_.assign, function(a, b) { + * return typeof a == 'undefined' ? b : a; + * }); + * + * var object = { 'name': 'barney' }; + * defaults(object, { 'name': 'fred', 'employer': 'slate' }); + * // => { 'name': 'barney', 'employer': 'slate' } */ +var assign = function(object, source, guard) { + var index, iterable = object, result = iterable; + if (!iterable) return result; + var args = arguments, + argsIndex = 0, + argsLength = typeof guard == 'number' ? 2 : args.length; + if (argsLength > 3 && typeof args[argsLength - 2] == 'function') { + var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2); + } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') { + callback = args[--argsLength]; + } + while (++argsIndex < argsLength) { + iterable = args[argsIndex]; + if (iterable && objectTypes[typeof iterable]) { + var ownIndex = -1, + ownProps = objectTypes[typeof iterable] && keys(iterable), + length = ownProps ? ownProps.length : 0; -/** Used as the max size of the `arrayPool` and `objectPool` */ -var maxPoolSize = 40; + while (++ownIndex < length) { + index = ownProps[ownIndex]; + result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]; + } + } + } + return result +}; -module.exports = maxPoolSize; +module.exports = assign; -},{}],16:[function(require,module,exports){ +},{"lodash._basecreatecallback":10,"lodash._objecttypes":31,"lodash.keys":32}],10:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1264,64 +1107,80 @@ module.exports = maxPoolSize; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ +var bind = require('lodash.bind'), + identity = require('lodash.identity'), + setBindData = require('lodash._setbinddata'), + support = require('lodash.support'); -/** Used to determine if values are of the language type Object */ -var objectTypes = { - 'boolean': false, - 'function': true, - 'object': true, - 'number': false, - 'string': false, - 'undefined': false -}; +/** Used to detected named functions */ +var reFuncName = /^\s*function[ \n\r\t]+\w/; -module.exports = objectTypes; +/** Used to detect functions containing a `this` reference */ +var reThis = /\bthis\b/; -},{}],17:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var arrayPool = require('lodash._arraypool'), - maxPoolSize = require('lodash._maxpoolsize'); +/** Native method shortcuts */ +var fnToString = Function.prototype.toString; /** - * Releases the given array back to the array pool. + * The base implementation of `_.createCallback` without support for creating + * "_.pluck" or "_.where" style callbacks. * * @private - * @param {Array} [array] The array to release. + * @param {*} [func=identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of the created callback. + * @param {number} [argCount] The number of arguments the callback accepts. + * @returns {Function} Returns a callback function. */ -function releaseArray(array) { - array.length = 0; - if (arrayPool.length < maxPoolSize) { - arrayPool.push(array); +function baseCreateCallback(func, thisArg, argCount) { + if (typeof func != 'function') { + return identity; + } + // exit early for no `thisArg` or already bound by `Function#bind` + if (typeof thisArg == 'undefined' || !('prototype' in func)) { + return func; + } + var bindData = func.__bindData__; + if (typeof bindData == 'undefined') { + if (support.funcNames) { + bindData = !func.name; + } + bindData = bindData || !support.funcDecomp; + if (!bindData) { + var source = fnToString.call(func); + if (!support.funcNames) { + bindData = !reFuncName.test(source); + } + if (!bindData) { + // checks if `func` references the `this` keyword and stores the result + bindData = reThis.test(source); + setBindData(func, bindData); + } + } + } + // exit early if there are no `this` references or `func` is bound + if (bindData === false || (bindData !== true && bindData[1] & 1)) { + return func; + } + switch (argCount) { + case 1: return function(value) { + return func.call(thisArg, value); + }; + case 2: return function(a, b) { + return func.call(thisArg, a, b); + }; + case 3: return function(value, index, collection) { + return func.call(thisArg, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(thisArg, accumulator, value, index, collection); + }; } + return bind(func, thisArg); } -module.exports = releaseArray; - -},{"lodash._arraypool":4,"lodash._maxpoolsize":15}],18:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var htmlEscapes = require('lodash._htmlescapes'), - keys = require('lodash.keys'); - -/** Used to match HTML entities and HTML characters */ -var reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); - -module.exports = reUnescapedHtml; +module.exports = baseCreateCallback; -},{"lodash._htmlescapes":13,"lodash.keys":32}],19:[function(require,module,exports){ +},{"lodash._setbinddata":11,"lodash.bind":14,"lodash.identity":28,"lodash.support":29}],11:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1366,7 +1225,7 @@ var setBindData = !defineProperty ? noop : function(func, value) { module.exports = setBindData; -},{"lodash._isnative":14,"lodash.noop":33}],20:[function(require,module,exports){ +},{"lodash._isnative":12,"lodash.noop":13}],12:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1375,38 +1234,34 @@ module.exports = setBindData; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var objectTypes = require('lodash._objecttypes'); /** Used for native method references */ var objectProto = Object.prototype; -/** Native method shortcuts */ -var hasOwnProperty = objectProto.hasOwnProperty; +/** Used to resolve the internal [[Class]] of values */ +var toString = objectProto.toString; + +/** Used to detect if a method is native */ +var reNative = RegExp('^' + + String(toString) + .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + .replace(/toString| for [^\]]+/g, '.*?') + '$' +); /** - * A fallback implementation of `Object.keys` which produces an array of the - * given object's own enumerable property names. + * Checks if `value` is a native function. * * @private - * @type Function - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. */ -var shimKeys = function(object) { - var index, iterable = object, result = []; - if (!iterable) return result; - if (!(objectTypes[typeof object])) return result; - for (index in iterable) { - if (hasOwnProperty.call(iterable, index)) { - result.push(index); - } - } - return result -}; +function isNative(value) { + return typeof value == 'function' && reNative.test(value); +} -module.exports = shimKeys; +module.exports = isNative; -},{"lodash._objecttypes":16}],21:[function(require,module,exports){ +},{}],13:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1417,108 +1272,24 @@ module.exports = shimKeys; */ /** - * Slices the `collection` from the `start` index up to, but not including, - * the `end` index. + * A no-operation function. * - * Note: This function is used instead of `Array#slice` to support node lists - * in IE < 9 and to ensure dense arrays are returned. + * @static + * @memberOf _ + * @category Utilities + * @example * - * @private - * @param {Array|Object|string} collection The collection to slice. - * @param {number} start The start index. - * @param {number} end The end index. - * @returns {Array} Returns the new array. + * var object = { 'name': 'fred' }; + * _.noop(object) === undefined; + * // => true */ -function slice(array, start, end) { - start || (start = 0); - if (typeof end == 'undefined') { - end = array ? array.length : 0; - } - var index = -1, - length = end - start || 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = array[start + index]; - } - return result; +function noop() { + // no operation performed } -module.exports = slice; - -},{}],22:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - keys = require('lodash.keys'), - objectTypes = require('lodash._objecttypes'); - -/** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources will overwrite property assignments of previous - * sources. If a callback is provided it will be executed to produce the - * assigned values. The callback is bound to `thisArg` and invoked with two - * arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @type Function - * @alias extend - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize assigning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); - * // => { 'name': 'fred', 'employer': 'slate' } - * - * var defaults = _.partialRight(_.assign, function(a, b) { - * return typeof a == 'undefined' ? b : a; - * }); - * - * var object = { 'name': 'barney' }; - * defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } - */ -var assign = function(object, source, guard) { - var index, iterable = object, result = iterable; - if (!iterable) return result; - var args = arguments, - argsIndex = 0, - argsLength = typeof guard == 'number' ? 2 : args.length; - if (argsLength > 3 && typeof args[argsLength - 2] == 'function') { - var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2); - } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') { - callback = args[--argsLength]; - } - while (++argsIndex < argsLength) { - iterable = args[argsIndex]; - if (iterable && objectTypes[typeof iterable]) { - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; - - while (++ownIndex < length) { - index = ownProps[ownIndex]; - result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]; - } - } - } - return result -}; - -module.exports = assign; +module.exports = noop; -},{"lodash._basecreatecallback":7,"lodash._objecttypes":16,"lodash.keys":32}],23:[function(require,module,exports){ +},{}],14:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1560,90 +1331,115 @@ function bind(func, thisArg) { module.exports = bind; -},{"lodash._createwrapper":10,"lodash._slice":21}],24:[function(require,module,exports){ +},{"lodash._createwrapper":15,"lodash._slice":27}],15:[function(require,module,exports){ /** - * Lo-Dash 2.4.4 (Custom Build) + * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` * Copyright 2012-2013 The Dojo Foundation * Based on Underscore.js 1.5.2 * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreateCallback = require('lodash._basecreatecallback'), - baseIsEqual = require('lodash._baseisequal'), - isObject = require('lodash.isobject'), - keys = require('lodash.keys'), - property = require('lodash.property'); +var baseBind = require('lodash._basebind'), + baseCreateWrapper = require('lodash._basecreatewrapper'), + isFunction = require('lodash.isfunction'), + slice = require('lodash._slice'); /** - * Produces a callback bound to an optional `thisArg`. If `func` is a property - * name the created callback will return the property value for a given element. - * If `func` is an object the created callback will return `true` for elements - * that contain the equivalent object properties, otherwise it will return `false`. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; + * Used for `Array` method references. * - * // wrap to create custom callback shorthands - * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { - * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); - * return !match ? func(callback, thisArg) : function(object) { - * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; - * }; - * }); + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; + +/** Native method shortcuts */ +var push = arrayRef.push, + unshift = arrayRef.unshift; + +/** + * Creates a function that, when called, either curries or invokes `func` + * with an optional `this` binding and partially applied arguments. * - * _.filter(characters, 'age__gt38'); - * // => [{ 'name': 'fred', 'age': 40 }] + * @private + * @param {Function|string} func The function or method name to reference. + * @param {number} bitmask The bitmask of method flags to compose. + * The bitmask may be composed of the following flags: + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` + * 8 - `_.curry` (bound) + * 16 - `_.partial` + * 32 - `_.partialRight` + * @param {Array} [partialArgs] An array of arguments to prepend to those + * provided to the new function. + * @param {Array} [partialRightArgs] An array of arguments to append to those + * provided to the new function. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new function. */ -function createCallback(func, thisArg, argCount) { - var type = typeof func; - if (func == null || type == 'function') { - return baseCreateCallback(func, thisArg, argCount); +function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { + var isBind = bitmask & 1, + isBindKey = bitmask & 2, + isCurry = bitmask & 4, + isCurryBound = bitmask & 8, + isPartial = bitmask & 16, + isPartialRight = bitmask & 32; + + if (!isBindKey && !isFunction(func)) { + throw new TypeError; } - // handle "_.pluck" style callback shorthands - if (type != 'object') { - return property(func); + if (isPartial && !partialArgs.length) { + bitmask &= ~16; + isPartial = partialArgs = false; } - var props = keys(func), - key = props[0], - a = func[key]; - - // handle "_.where" style callback shorthands - if (props.length == 1 && a === a && !isObject(a)) { - // fast path the common case of providing an object with a single - // property containing a primitive value - return function(object) { - var b = object[key]; - return a === b && (a !== 0 || (1 / a == 1 / b)); - }; + if (isPartialRight && !partialRightArgs.length) { + bitmask &= ~32; + isPartialRight = partialRightArgs = false; } - return function(object) { - var length = props.length, - result = false; - - while (length--) { - if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { - break; - } + var bindData = func && func.__bindData__; + if (bindData && bindData !== true) { + // clone `bindData` + bindData = slice(bindData); + if (bindData[2]) { + bindData[2] = slice(bindData[2]); } - return result; - }; + if (bindData[3]) { + bindData[3] = slice(bindData[3]); + } + // set `thisBinding` is not previously bound + if (isBind && !(bindData[1] & 1)) { + bindData[4] = thisArg; + } + // set if previously bound but not currently (subsequent curried functions) + if (!isBind && bindData[1] & 1) { + bitmask |= 8; + } + // set curried arity if not yet set + if (isCurry && !(bindData[1] & 4)) { + bindData[5] = arity; + } + // append partial left arguments + if (isPartial) { + push.apply(bindData[2] || (bindData[2] = []), partialArgs); + } + // append partial right arguments + if (isPartialRight) { + unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); + } + // merge flags + bindData[1] |= bitmask; + return createWrapper.apply(null, bindData); + } + // fast path for `_.bind` + var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; + return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); } -module.exports = createCallback; +module.exports = createWrapper; -},{"lodash._basecreatecallback":7,"lodash._baseisequal":9,"lodash.isobject":31,"lodash.keys":32,"lodash.property":34}],25:[function(require,module,exports){ +},{"lodash._basebind":16,"lodash._basecreatewrapper":21,"lodash._slice":27,"lodash.isfunction":26}],16:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1652,107 +1448,63 @@ module.exports = createCallback; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var escapeHtmlChar = require('lodash._escapehtmlchar'), - keys = require('lodash.keys'), - reUnescapedHtml = require('lodash._reunescapedhtml'); +var baseCreate = require('lodash._basecreate'), + isObject = require('lodash.isobject'), + setBindData = require('lodash._setbinddata'), + slice = require('lodash._slice'); /** - * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their - * corresponding HTML entities. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} string The string to escape. - * @returns {string} Returns the escaped string. - * @example + * Used for `Array` method references. * - * _.escape('Fred, Wilma, & Pebbles'); - * // => 'Fred, Wilma, & Pebbles' + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. */ -function escape(string) { - return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); -} +var arrayRef = []; -module.exports = escape; - -},{"lodash._escapehtmlchar":11,"lodash._reunescapedhtml":18,"lodash.keys":32}],26:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var createCallback = require('lodash.createcallback'), - forOwn = require('lodash.forown'); +/** Native method shortcuts */ +var push = arrayRef.push; /** - * Checks if the given callback returns truey value for **all** elements of - * a collection. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if all elements passed the callback check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes']); - * // => false - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.every(characters, 'age'); - * // => true + * The base implementation of `_.bind` that creates the bound function and + * sets its meta data. * - * // using "_.where" callback shorthand - * _.every(characters, { 'age': 36 }); - * // => false + * @private + * @param {Array} bindData The bind data array. + * @returns {Function} Returns the new bound function. */ -function every(collection, callback, thisArg) { - var result = true; - callback = createCallback(callback, thisArg, 3); - - var index = -1, - length = collection ? collection.length : 0; +function baseBind(bindData) { + var func = bindData[0], + partialArgs = bindData[2], + thisArg = bindData[4]; - if (typeof length == 'number') { - while (++index < length) { - if (!(result = !!callback(collection[index], index, collection))) { - break; - } + function bound() { + // `Function#bind` spec + // http://es5.github.io/#x15.3.4.5 + if (partialArgs) { + // avoid `arguments` object deoptimizations by using `slice` instead + // of `Array.prototype.slice.call` and not assigning `arguments` to a + // variable as a ternary expression + var args = slice(partialArgs); + push.apply(args, arguments); } - } else { - forOwn(collection, function(value, index, collection) { - return (result = !!callback(value, index, collection)); - }); + // mimic the constructor's `return` behavior + // http://es5.github.io/#x13.2.2 + if (this instanceof bound) { + // ensure `new bound` is an instance of `func` + var thisBinding = baseCreate(func.prototype), + result = func.apply(thisBinding, args || arguments); + return isObject(result) ? result : thisBinding; + } + return func.apply(thisArg, args || arguments); } - return result; + setBindData(bound, bindData); + return bound; } -module.exports = every; +module.exports = baseBind; -},{"lodash.createcallback":24,"lodash.forown":28}],27:[function(require,module,exports){ +},{"lodash._basecreate":17,"lodash._setbinddata":11,"lodash._slice":27,"lodash.isobject":20}],17:[function(require,module,exports){ +(function (global){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1761,54 +1513,47 @@ module.exports = every; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreateCallback = require('lodash._basecreatecallback'), - objectTypes = require('lodash._objecttypes'); +var isNative = require('lodash._isnative'), + isObject = require('lodash.isobject'), + noop = require('lodash.noop'); + +/* Native method shortcuts for methods with the same name as other `lodash` methods */ +var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate; /** - * Iterates over own and inherited enumerable properties of an object, - * executing the callback for each property. The callback is bound to `thisArg` - * and invoked with three arguments; (value, key, object). Callbacks may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; + * The base implementation of `_.create` without support for assigning + * properties to the created object. * - * _.forIn(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) + * @private + * @param {Object} prototype The object to inherit from. + * @returns {Object} Returns the new object. */ -var forIn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - for (index in iterable) { - if (callback(iterable[index], index, collection) === false) return result; - } - return result -}; +function baseCreate(prototype, properties) { + return isObject(prototype) ? nativeCreate(prototype) : {}; +} +// fallback for browsers without `Object.create` +if (!nativeCreate) { + baseCreate = (function() { + function Object() {} + return function(prototype) { + if (isObject(prototype)) { + Object.prototype = prototype; + var result = new Object; + Object.prototype = null; + } + return result || global.Object(); + }; + }()); +} -module.exports = forIn; +module.exports = baseCreate; -},{"lodash._basecreatecallback":7,"lodash._objecttypes":16}],28:[function(require,module,exports){ +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"lodash._isnative":18,"lodash.isobject":20,"lodash.noop":19}],18:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],19:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],20:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1817,50 +1562,39 @@ module.exports = forIn; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreateCallback = require('lodash._basecreatecallback'), - keys = require('lodash.keys'), - objectTypes = require('lodash._objecttypes'); +var objectTypes = require('lodash._objecttypes'); /** - * Iterates over own enumerable properties of an object, executing the callback - * for each property. The callback is bound to `thisArg` and invoked with three - * arguments; (value, key, object). Callbacks may exit iteration early by - * explicitly returning `false`. + * Checks if `value` is the language type of Object. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ - * @type Function * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if the `value` is an object, else `false`. * @example * - * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(1); + * // => false */ -var forOwn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; - - while (++ownIndex < length) { - index = ownProps[ownIndex]; - if (callback(iterable[index], index, collection) === false) return result; - } - return result -}; +function isObject(value) { + // check if the value is the ECMAScript language type of Object + // http://es5.github.io/#x8 + // and avoid a V8 bug + // http://code.google.com/p/v8/issues/detail?id=2291 + return !!(value && objectTypes[typeof value]); +} -module.exports = forOwn; +module.exports = isObject; -},{"lodash._basecreatecallback":7,"lodash._objecttypes":16,"lodash.keys":32}],29:[function(require,module,exports){ +},{"lodash._objecttypes":31}],21:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1869,57 +1603,86 @@ module.exports = forOwn; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ +var baseCreate = require('lodash._basecreate'), + isObject = require('lodash.isobject'), + setBindData = require('lodash._setbinddata'), + slice = require('lodash._slice'); /** - * This method returns the first argument provided to it. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example + * Used for `Array` method references. * - * var object = { 'name': 'fred' }; - * _.identity(object) === object; - * // => true + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. */ -function identity(value) { - return value; -} +var arrayRef = []; -module.exports = identity; +/** Native method shortcuts */ +var push = arrayRef.push; -},{}],30:[function(require,module,exports){ /** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** - * Checks if `value` is a function. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a function, else `false`. - * @example + * The base implementation of `createWrapper` that creates the wrapper and + * sets its meta data. * - * _.isFunction(_); - * // => true + * @private + * @param {Array} bindData The bind data array. + * @returns {Function} Returns the new function. */ -function isFunction(value) { - return typeof value == 'function'; +function baseCreateWrapper(bindData) { + var func = bindData[0], + bitmask = bindData[1], + partialArgs = bindData[2], + partialRightArgs = bindData[3], + thisArg = bindData[4], + arity = bindData[5]; + + var isBind = bitmask & 1, + isBindKey = bitmask & 2, + isCurry = bitmask & 4, + isCurryBound = bitmask & 8, + key = func; + + function bound() { + var thisBinding = isBind ? thisArg : this; + if (partialArgs) { + var args = slice(partialArgs); + push.apply(args, arguments); + } + if (partialRightArgs || isCurry) { + args || (args = slice(arguments)); + if (partialRightArgs) { + push.apply(args, partialRightArgs); + } + if (isCurry && args.length < arity) { + bitmask |= 16 & ~32; + return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); + } + } + args || (args = arguments); + if (isBindKey) { + func = thisBinding[key]; + } + if (this instanceof bound) { + thisBinding = baseCreate(func.prototype); + var result = func.apply(thisBinding, args); + return isObject(result) ? result : thisBinding; + } + return func.apply(thisBinding, args); + } + setBindData(bound, bindData); + return bound; } -module.exports = isFunction; +module.exports = baseCreateWrapper; -},{}],31:[function(require,module,exports){ +},{"lodash._basecreate":22,"lodash._setbinddata":11,"lodash._slice":27,"lodash.isobject":25}],22:[function(require,module,exports){ +arguments[4][17][0].apply(exports,arguments) +},{"dup":17,"lodash._isnative":23,"lodash.isobject":25,"lodash.noop":24}],23:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],24:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],25:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":31}],26:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1928,39 +1691,27 @@ module.exports = isFunction; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var objectTypes = require('lodash._objecttypes'); /** - * Checks if `value` is the language type of Object. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * Checks if `value` is a function. * * @static * @memberOf _ * @category Objects * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an object, else `false`. + * @returns {boolean} Returns `true` if the `value` is a function, else `false`. * @example * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); + * _.isFunction(_); * // => true - * - * _.isObject(1); - * // => false */ -function isObject(value) { - // check if the value is the ECMAScript language type of Object - // http://es5.github.io/#x8 - // and avoid a V8 bug - // http://code.google.com/p/v8/issues/detail?id=2291 - return !!(value && objectTypes[typeof value]); +function isFunction(value) { + return typeof value == 'function'; } -module.exports = isObject; +module.exports = isFunction; -},{"lodash._objecttypes":16}],32:[function(require,module,exports){ +},{}],27:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1969,64 +1720,38 @@ module.exports = isObject; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var isNative = require('lodash._isnative'), - isObject = require('lodash.isobject'), - shimKeys = require('lodash._shimkeys'); - -/* Native method shortcuts for methods with the same name as other `lodash` methods */ -var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys; /** - * Creates an array composed of the own enumerable property names of an object. + * Slices the `collection` from the `start` index up to, but not including, + * the `end` index. * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. - * @example + * Note: This function is used instead of `Array#slice` to support node lists + * in IE < 9 and to ensure dense arrays are returned. * - * _.keys({ 'one': 1, 'two': 2, 'three': 3 }); - * // => ['one', 'two', 'three'] (property order is not guaranteed across environments) + * @private + * @param {Array|Object|string} collection The collection to slice. + * @param {number} start The start index. + * @param {number} end The end index. + * @returns {Array} Returns the new array. */ -var keys = !nativeKeys ? shimKeys : function(object) { - if (!isObject(object)) { - return []; +function slice(array, start, end) { + start || (start = 0); + if (typeof end == 'undefined') { + end = array ? array.length : 0; } - return nativeKeys(object); -}; - -module.exports = keys; - -},{"lodash._isnative":14,"lodash._shimkeys":20,"lodash.isobject":31}],33:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ + var index = -1, + length = end - start || 0, + result = Array(length < 0 ? 0 : length); -/** - * A no-operation function. - * - * @static - * @memberOf _ - * @category Utilities - * @example - * - * var object = { 'name': 'fred' }; - * _.noop(object) === undefined; - * // => true - */ -function noop() { - // no operation performed + while (++index < length) { + result[index] = array[start + index]; + } + return result; } -module.exports = noop; +module.exports = slice; -},{}],34:[function(require,module,exports){ +},{}],28:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -2037,38 +1762,26 @@ module.exports = noop; */ /** - * Creates a "_.pluck" style function, which returns the `key` value of a - * given object. + * This method returns the first argument provided to it. * * @static * @memberOf _ * @category Utilities - * @param {string} key The name of the property to retrieve. - * @returns {Function} Returns the new function. + * @param {*} value Any value. + * @returns {*} Returns `value`. * @example * - * var characters = [ - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 36 } - * ]; - * - * var getName = _.property('name'); - * - * _.map(characters, getName); - * // => ['barney', 'fred'] - * - * _.sortBy(characters, getName); - * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] + * var object = { 'name': 'fred' }; + * _.identity(object) === object; + * // => true */ -function property(key) { - return function(object) { - return object[key]; - }; +function identity(value) { + return value; } -module.exports = property; +module.exports = identity; -},{}],35:[function(require,module,exports){ +},{}],29:[function(require,module,exports){ (function (global){ /** * Lo-Dash 2.4.1 (Custom Build) @@ -2112,1574 +1825,2001 @@ support.funcNames = typeof Function.name == 'string'; module.exports = support; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"lodash._isnative":14}],36:[function(require,module,exports){ -/** @jsx React.DOM */ +},{"lodash._isnative":30}],30:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],31:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ -var React = require("react"); +/** Used to determine if values are of the language type Object */ +var objectTypes = { + 'boolean': false, + 'function': true, + 'object': true, + 'number': false, + 'string': false, + 'undefined': false +}; -/* You know when you want to propagate input to a parent... - * but then that parent does something with the input... - * then changing the props of the input... - * on every keystroke... - * so if some input is invalid or incomplete... - * the input gets reset or otherwise effed... - * - * This is the solution. - * - * Enough melodrama. Its an input that only sends changes - * to its parent on blur. +module.exports = objectTypes; + +},{}],32:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license */ -var BlurInput = React.createClass({displayName: 'BlurInput', - propTypes: { - value: React.PropTypes.string.isRequired, - onChange: React.PropTypes.func.isRequired - }, - getInitialState: function() { - return { value: this.props.value }; - }, - render: function() { - return this.transferPropsTo(React.DOM.input( - {type:"text", - value:this.state.value, - onChange:this.handleChange, - onBlur:this.handleBlur} )); - }, - componentWillReceiveProps: function(nextProps) { - this.setState({ value: nextProps.value }); - }, - handleChange: function(e) { - this.setState({ value: e.target.value }); - }, - handleBlur: function(e) { - this.props.onChange(e.target.value); - } -}); +var isNative = require('lodash._isnative'), + isObject = require('lodash.isobject'), + shimKeys = require('lodash._shimkeys'); -module.exports = BlurInput; +/* Native method shortcuts for methods with the same name as other `lodash` methods */ +var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys; -},{"react":45}],37:[function(require,module,exports){ -/** @jsx React.DOM */ - -var React = require('react'); -var RCSS = require('rcss'); -var _ = require('underscore'); - -var outerStyle = { - display: 'inline-block', +/** + * Creates an array composed of the own enumerable property names of an object. + * + * @static + * @memberOf _ + * @category Objects + * @param {Object} object The object to inspect. + * @returns {Array} Returns an array of property names. + * @example + * + * _.keys({ 'one': 1, 'two': 2, 'three': 3 }); + * // => ['one', 'two', 'three'] (property order is not guaranteed across environments) + */ +var keys = !nativeKeys ? shimKeys : function(object) { + if (!isObject(object)) { + return []; + } + return nativeKeys(object); }; -var buttonStyle = { - backgroundColor: 'white', - border: '1px solid #ccc', - borderBottom: '1px solid #ccc', - borderLeft: '0', - cursor: 'pointer', - margin: '0', - padding: '5px 10px', - position: 'relative', // for hover +module.exports = keys; - ':first-child': { - borderLeft: '1px solid #ccc', - borderTopLeftRadius: '3px', - borderBottomLeftRadius: '3px' - }, +},{"lodash._isnative":33,"lodash._shimkeys":34,"lodash.isobject":35}],33:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],34:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var objectTypes = require('lodash._objecttypes'); - ':last-child': { - borderRight: '1px solid #ccc', - borderTopRightRadius: '3px', - borderBottomRightRadius: '3px' - }, +/** Used for native method references */ +var objectProto = Object.prototype; - ':hover': { - backgroundColor: '#ccc' - }, +/** Native method shortcuts */ +var hasOwnProperty = objectProto.hasOwnProperty; - ':focus': { - zIndex: '2' +/** + * A fallback implementation of `Object.keys` which produces an array of the + * given object's own enumerable property names. + * + * @private + * @type Function + * @param {Object} object The object to inspect. + * @returns {Array} Returns an array of property names. + */ +var shimKeys = function(object) { + var index, iterable = object, result = []; + if (!iterable) return result; + if (!(objectTypes[typeof object])) return result; + for (index in iterable) { + if (hasOwnProperty.call(iterable, index)) { + result.push(index); + } } + return result }; -var selectedStyle = { - backgroundColor: '#ddd' -}; +module.exports = shimKeys; -RCSS.createClass(outerStyle); -RCSS.createClass(buttonStyle); -RCSS.createClass(selectedStyle); +},{"lodash._objecttypes":31}],35:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":31}],36:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var escapeHtmlChar = require('lodash._escapehtmlchar'), + keys = require('lodash.keys'), + reUnescapedHtml = require('lodash._reunescapedhtml'); -/* ButtonGroup is an aesthetically pleasing group of buttons. - * - * The class requires these properties: - * buttons - an array of objects with keys: - * "value": this is the value returned when the button is selected - * "text": this is the text shown on the button - * "title": this is the title-text shown on hover - * onChange - a function that is provided with the updated value - * (which it then is responsible for updating) +/** + * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their + * corresponding HTML entities. * - * The class has these optional properties: - * value - the initial value of the button selected, defaults to null. - * allowEmpty - if false, exactly one button _must_ be selected; otherwise - * it defaults to true and _at most_ one button (0 or 1) may be selected. + * @static + * @memberOf _ + * @category Utilities + * @param {string} string The string to escape. + * @returns {string} Returns the escaped string. + * @example * - * Requires stylesheets/perseus-admin-package/editor.less to look nice. + * _.escape('Fred, Wilma, & Pebbles'); + * // => 'Fred, Wilma, & Pebbles' */ +function escape(string) { + return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); +} -var ButtonGroup = React.createClass({displayName: 'ButtonGroup', - propTypes: { - value: React.PropTypes.any, - buttons: React.PropTypes.arrayOf(React.PropTypes.shape({ - value: React.PropTypes.any.isRequired, - text: React.PropTypes.renderable, - title: React.PropTypes.string - })).isRequired, - onChange: React.PropTypes.func.isRequired, - allowEmpty: React.PropTypes.bool - }, +module.exports = escape; - getDefaultProps: function() { - return { - value: null, - allowEmpty: true - }; - }, +},{"lodash._escapehtmlchar":37,"lodash._reunescapedhtml":39,"lodash.keys":41}],37:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var htmlEscapes = require('lodash._htmlescapes'); - render: function() { - var value = this.props.value; - var buttons = _(this.props.buttons).map(function(button, i) { - var maybeSelected = button.value === value ? - selectedStyle.className : - ""; - return React.DOM.button( {title:button.title, - id:"" + i, - ref:"button" + i, - key:"" + i, - className:(buttonStyle.className + " " + maybeSelected), - onClick:this.toggleSelect.bind(this, button.value)}, - button.text || "" + button.value - ); - }.bind(this)); +/** + * Used by `escape` to convert characters to HTML entities. + * + * @private + * @param {string} match The matched character to escape. + * @returns {string} Returns the escaped character. + */ +function escapeHtmlChar(match) { + return htmlEscapes[match]; +} - return React.DOM.div( {className:outerStyle.className}, - buttons - ); - }, +module.exports = escapeHtmlChar; - focus: function() { - this.getDOMNode().focus(); - return true; - }, +},{"lodash._htmlescapes":38}],38:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ - toggleSelect: function(newValue) { - var value = this.props.value; +/** + * Used to convert characters to HTML entities: + * + * Though the `>` character is escaped for symmetry, characters like `>` and `/` + * don't require escaping in HTML and have no special meaning unless they're part + * of a tag or an unquoted attribute value. + * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") + */ +var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' +}; - if (this.props.allowEmpty) { - // Select the new button or unselect if it's already selected - this.props.onChange(value !== newValue ? newValue : null); - } else { - this.props.onChange(newValue); - } - } -}); +module.exports = htmlEscapes; -module.exports = ButtonGroup; +},{}],39:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var htmlEscapes = require('lodash._htmlescapes'), + keys = require('lodash.keys'); -},{"rcss":40,"react":45,"underscore":46}],38:[function(require,module,exports){ -/** @jsx React.DOM */ +/** Used to match HTML entities and HTML characters */ +var reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); -var React = require('react'); +module.exports = reUnescapedHtml; -/* This component makes its children a drag target. Example: - * - * Drag to me - * - * ... - * - * handleDrop: function(e) { - * this.addImages(e.nativeEvent.dataTransfer.files); - * } - * - * Now "Drag to me" will be a drag target - when something is dragged over it, - * the element will become partially transparent as a visual indicator that - * it's a target. - */ -// TODO(joel) - indicate before the hover is over the target that it's possible -// to drag into the target. This would (I think) require a high level handler - -// like on Perseus itself, waiting for onDragEnter, then passing down the -// event. Sounds like a pain. Possible workaround - create a div covering the -// entire page... -// -// Other extensions: -// * custom styles for global drag and dragOver -// * only respond to certain types of drags (only images for instance)! -var DragTarget = React.createClass({displayName: 'DragTarget', - propTypes: { - onDrop: React.PropTypes.func.isRequired, - component: React.PropTypes.component, - shouldDragHighlight: React.PropTypes.func - }, - render: function() { - var opacity = this.state.dragHover ? { "opacity": 0.3 } : {}; - var component = this.props.component; - - return this.transferPropsTo( - component( {style:opacity, - onDrop:this.handleDrop, - onDragEnd:this.handleDragEnd, - onDragOver:this.handleDragOver, - onDragEnter:this.handleDragEnter, - onDragLeave:this.handleDragLeave}, - this.props.children - ) - ); - }, - getInitialState: function() { - return { dragHover: false }; - }, - getDefaultProps: function() { - return { - component: React.DOM.div, - shouldDragHighlight: function() {return true;} - }; - }, - handleDrop: function(e) { - e.stopPropagation(); - e.preventDefault(); - this.setState({ dragHover: false }); - this.props.onDrop(e); - }, - handleDragEnd: function() { - this.setState({ dragHover: false }); - }, - handleDragOver: function(e) { - e.preventDefault(); - }, - handleDragLeave: function() { - this.setState({ dragHover: false }); - }, - handleDragEnter: function(e) { - this.setState({ dragHover: this.props.shouldDragHighlight(e) }); - } -}); - -module.exports = DragTarget; - -},{"react":45}],39:[function(require,module,exports){ -/** @jsx React.DOM */ - -var React = require('react'); -var RCSS = require('rcss'); -var _ = require('underscore'); - -var colors = { - grayLight: '#aaa', - basicBorderColor: '#ccc', - white: '#fff' -}; - -var infoTip = { - display: 'inline-block', - marginLeft: '5px', - position: 'relative' -}; - -var infoTipI = { - cursor: 'pointer' -}; - -var infoTipContainer = { - position: 'absolute', - 'top': '-12px', - left: '22px', - zIndex: '1000' -}; - -var triangleBeforeAfter = { - borderBottom: '9px solid transparent', - borderTop: '9px solid transparent', - content: ' ', - height: '0', - position: 'absolute', - 'top': '0', - width: '0' -}; - -var infoTipTriangle = { - height: '10px', - left: '0', - position: 'absolute', - 'top': '8px', - width: '0', - zIndex: '1', - - ':before': _.extend({}, triangleBeforeAfter, { - borderRight: '9px solid #bbb', - right: '0', - }), - - ':after': _.extend({}, triangleBeforeAfter, { - borderRight: ("9px solid " + colors.white), - right: '-1px' - }) -}; - -var basicBorder = { - border: ("1px solid " + colors.basicBorderColor) -}; - -var boxShadow = function(str) { return { boxShadow: str }; }; - -var verticalShadow = RCSS.merge( - basicBorder, - boxShadow(("0 1px 3px " + colors.basicBorderColor)), - { borderBottom: ("1px solid " + colors.grayLight) } -); - -var infoTipContentContainer = RCSS.merge(verticalShadow, { - background: colors.white, - padding: '5px 10px', - width: '240px' -}); - -RCSS.createClass(infoTip); -RCSS.createClass(infoTipI); -RCSS.createClass(infoTipTriangle); -RCSS.createClass(verticalShadow); -RCSS.createClass(infoTipContainer); -RCSS.createClass(infoTipContentContainer); - -var questionMark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2N2M3NTAxYS04YmVlLTQ0M2MtYmRiNS04OGM2N2IxN2NhYzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUJCRTk4Qjc4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUJCRTk4QjY4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGE5ZDI0OTMtODk1NC00OGFkLTlhMTgtZDAwM2MwYWNjNDJlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY3Yzc1MDFhLThiZWUtNDQzYy1iZGI1LTg4YzY3YjE3Y2FjMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqm89uYAAADMSURBVHjaXJA9DoJAEIUH1M4TUHIFsCMGen9OwCGw1YRGW2ntKel0exsojHIBC0ouQAyUviFDstmXfNmZeS+zm7XSNCXRFiRgJf0bXIHixpbhGdxBBJYC1w/xaA424MhNEATkui71fU9KqfEU78UbD9PdbJRlOdae55GmhIP+1NV1TcMwkOM41DSNHvRtMhTHMRVFQW3b6mOLgx99kue5GRp/gIOZuZGvNpTNwjD8oliANU+qqqKu6/TQBdymN57AHjzBT+B6Jx79BRgAvc49kQA4yxgAAAAASUVORK5CYII='; // @NoLint - -var InfoTip = React.createClass({displayName: 'InfoTip', - getInitialState: function() { - return { - hover: false - }; - }, - - render: function() { - return React.DOM.div( {className:infoTip.className}, - React.DOM.img( {width:10, - height:10, - src:questionMark, - onMouseEnter:this.handleMouseEnter, - onMouseLeave:this.handleMouseLeave} ), - React.DOM.div( {className:infoTipContainer.className, - style:{display: this.state.hover ? 'block' : 'none'}}, - React.DOM.div( {className:infoTipTriangle.className} ), - /* keep the classes here - used for selectors on KA */ - React.DOM.div( {className:infoTipContentContainer.className}, - this.props.children - ) - ) - ); - }, - - handleMouseEnter: function() { - this.setState({hover: true}); - }, - - handleMouseLeave: function() { - this.setState({hover: false}); - } -}); - -module.exports = InfoTip; - -},{"rcss":40,"react":45,"underscore":46}],40:[function(require,module,exports){ -var assign = require('lodash.assign'); - -var styleRuleValidator = require('./styleRuleValidator'); -var styleRuleConverter = require('./styleRuleConverter'); -var mediaQueryValidator = require('valid-media-queries'); - -var existingClasses = {}; -var styleTag = createStyleTag(); - -var classNameId = 0; -var randomSuffix = Math.random().toString(36).slice(-5); - -function generateValidCSSClassName() { - // CSS classNames can't start with a number. - return 'c' + (classNameId++) + '-' + randomSuffix; -} - -function objToCSS(style) { - var serialized = ''; - for (var propName in style) { - // we put that ourselves - if (propName == 'className') continue; - - var cssPropName = styleRuleConverter.hyphenateProp(propName); - if (!styleRuleValidator.isValidProp(cssPropName)) { - console.warn( - '%s (transformed into %s) is not a valid CSS property name.', propName, cssPropName - ); - continue; - } - - var styleValue = style[propName]; - if (!styleRuleValidator.isValidValue(styleValue)) continue; - - if (styleValue !== null) { - serialized += cssPropName + ':'; - serialized += styleRuleConverter.escapeValueForProp(styleValue, - cssPropName) + ';'; - } - } - return serialized || null; -} - -function createStyleTag() { - var tag = document.createElement('style'); - document.getElementsByTagName('head')[0].appendChild(tag); - return tag; +},{"lodash._htmlescapes":40,"lodash.keys":41}],40:[function(require,module,exports){ +arguments[4][38][0].apply(exports,arguments) +},{"dup":38}],41:[function(require,module,exports){ +arguments[4][32][0].apply(exports,arguments) +},{"dup":32,"lodash._isnative":42,"lodash._shimkeys":43,"lodash.isobject":45}],42:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],43:[function(require,module,exports){ +arguments[4][34][0].apply(exports,arguments) +},{"dup":34,"lodash._objecttypes":44}],44:[function(require,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"dup":31}],45:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":46}],46:[function(require,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"dup":31}],47:[function(require,module,exports){ +var _validCSSProps = { + 'alignment-adjust': true, + 'alignment-baseline': true, + 'animation': true, + 'animation-delay': true, + 'animation-direction': true, + 'animation-duration': true, + 'animation-iteration-count': true, + 'animation-name': true, + 'animation-play-state': true, + 'animation-timing-function': true, + 'appearance': true, + 'backface-visibility': true, + 'background': true, + 'background-attachment': true, + 'background-clip': true, + 'background-color': true, + 'background-image': true, + 'background-origin': true, + 'background-position': true, + 'background-repeat': true, + 'background-size': true, + 'baseline-shift': true, + 'bookmark-label': true, + 'bookmark-level': true, + 'bookmark-target': true, + 'border': true, + 'border-bottom': true, + 'border-bottom-color': true, + 'border-bottom-left-radius': true, + 'border-bottom-right-radius': true, + 'border-bottom-style': true, + 'border-bottom-width': true, + 'border-collapse': true, + 'border-color': true, + 'border-image': true, + 'border-image-outset': true, + 'border-image-repeat': true, + 'border-image-slice': true, + 'border-image-source': true, + 'border-image-width': true, + 'border-left': true, + 'border-left-color': true, + 'border-left-style': true, + 'border-left-width': true, + 'border-radius': true, + 'border-right': true, + 'border-right-color': true, + 'border-right-style': true, + 'border-right-width': true, + 'border-spacing': true, + 'border-style': true, + 'border-top': true, + 'border-top-color': true, + 'border-top-left-radius': true, + 'border-top-right-radius': true, + 'border-top-style': true, + 'border-top-width': true, + 'border-width': true, + 'bottom': true, + 'box-align': true, + 'box-decoration-break': true, + 'box-direction': true, + 'box-flex': true, + 'box-flex-group': true, + 'box-lines': true, + 'box-ordinal-group': true, + 'box-orient': true, + 'box-pack': true, + 'box-shadow': true, + 'box-sizing': true, + 'caption-side': true, + 'clear': true, + 'clip': true, + 'color': true, + 'color-profile': true, + 'column-count': true, + 'column-fill': true, + 'column-gap': true, + 'column-rule': true, + 'column-rule-color': true, + 'column-rule-style': true, + 'column-rule-width': true, + 'column-span': true, + 'column-width': true, + 'columns': true, + 'content': true, + 'counter-increment': true, + 'counter-reset': true, + 'crop': true, + 'cursor': true, + 'direction': true, + 'display': true, + 'dominant-baseline': true, + 'drop-initial-after-adjust': true, + 'drop-initial-after-align': true, + 'drop-initial-before-adjust': true, + 'drop-initial-before-align': true, + 'drop-initial-size': true, + 'drop-initial-value': true, + 'empty-cells': true, + 'fit': true, + 'fit-position': true, + 'float': true, + 'float-offset': true, + 'font': true, + 'font-family': true, + 'font-size': true, + 'font-size-adjust': true, + 'font-stretch': true, + 'font-style': true, + 'font-variant': true, + 'font-weight': true, + 'grid-columns': true, + 'grid-rows': true, + 'hanging-punctuation': true, + 'height': true, + 'hyphenate-after': true, + 'hyphenate-before': true, + 'hyphenate-character': true, + 'hyphenate-lines': true, + 'hyphenate-resource': true, + 'hyphens': true, + 'icon': true, + 'image-orientation': true, + 'image-resolution': true, + 'inline-box-align': true, + 'left': true, + 'letter-spacing': true, + 'line-height': true, + 'line-stacking': true, + 'line-stacking-ruby': true, + 'line-stacking-shift': true, + 'line-stacking-strategy': true, + 'list-style': true, + 'list-style-image': true, + 'list-style-position': true, + 'list-style-type': true, + 'margin': true, + 'margin-bottom': true, + 'margin-left': true, + 'margin-right': true, + 'margin-top': true, + 'mark': true, + 'mark-after': true, + 'mark-before': true, + 'marks': true, + 'marquee-direction': true, + 'marquee-play-count': true, + 'marquee-speed': true, + 'marquee-style': true, + 'max-height': true, + 'max-width': true, + 'min-height': true, + 'min-width': true, + 'move-to': true, + 'nav-down': true, + 'nav-index': true, + 'nav-left': true, + 'nav-right': true, + 'nav-up': true, + 'opacity': true, + 'orphans': true, + 'outline': true, + 'outline-color': true, + 'outline-offset': true, + 'outline-style': true, + 'outline-width': true, + 'overflow': true, + 'overflow-style': true, + 'overflow-x': true, + 'overflow-y': true, + 'padding': true, + 'padding-bottom': true, + 'padding-left': true, + 'padding-right': true, + 'padding-top': true, + 'page': true, + 'page-break-after': true, + 'page-break-before': true, + 'page-break-inside': true, + 'page-policy': true, + 'perspective': true, + 'perspective-origin': true, + 'phonemes': true, + 'position': true, + 'punctuation-trim': true, + 'quotes': true, + 'rendering-intent': true, + 'resize': true, + 'rest': true, + 'rest-after': true, + 'rest-before': true, + 'right': true, + 'rotation': true, + 'rotation-point': true, + 'ruby-align': true, + 'ruby-overhang': true, + 'ruby-position': true, + 'ruby-span': true, + 'size': true, + 'string-set': true, + 'table-layout': true, + 'target': true, + 'target-name': true, + 'target-new': true, + 'target-position': true, + 'text-align': true, + 'text-align-last': true, + 'text-decoration': true, + 'text-height': true, + 'text-indent': true, + 'text-justify': true, + 'text-outline': true, + 'text-overflow': true, + 'text-shadow': true, + 'text-transform': true, + 'text-wrap': true, + 'top': true, + 'transform': true, + 'transform-origin': true, + 'transform-style': true, + 'transition': true, + 'transition-delay': true, + 'transition-duration': true, + 'transition-property': true, + 'transition-timing-function': true, + 'unicode-bidi': true, + 'user-select': true, + 'vertical-align': true, + 'visibility': true, + 'voice-balance': true, + 'voice-duration': true, + 'voice-pitch': true, + 'voice-pitch-range': true, + 'voice-rate': true, + 'voice-stress': true, + 'voice-volume': true, + 'white-space': true, + 'widows': true, + 'width': true, + 'word-break': true, + 'word-spacing': true, + 'word-wrap': true, + 'z-index': true } -function styleToCSS(style) { - var styleStr = '.' + style.className + '{'; - styleStr += objToCSS(style.value); - styleStr += '}'; +var vendorPrefixRegEx = /^-.+-/; - if (style.media) { - if (!mediaQueryValidator(style.media)) { - console.log('%s is not a valid media query.', style.media); - } - styleStr = style.media + '{' + styleStr + '}'; +module.exports = function(prop) { + if (prop[0] === '-') { + return !!_validCSSProps[prop.replace(vendorPrefixRegEx, '')]; } + return !!_validCSSProps[prop]; +}; - return styleStr; -} - -// TODO: support media queries -function parseStyles(className, styleObj) { - var mainStyle = { - className: className, - value: {} - }; - var styles = [mainStyle]; - - Object.keys(styleObj).forEach(function(k){ - // pseudo-selector, insert a new rule - if (k[0] === ':') { - styles.push({ - className: className+k, - value: styleObj[k] - }); - return; - } else if (k.substring(0, 6) === '@media') { - styles.push({ - className: className, - value: styleObj[k], - media: k - }); - return; - } - - // normal rule, insert into main one - mainStyle.value[k] = styleObj[k]; - }); +},{}],48:[function(require,module,exports){ +var every = require('lodash.every'); - return styles; +function isValidRatio(ratio) { + var re = /\d+\/\d+/; + return !!ratio.match(re); } -function insertStyle(className, styleObj) { - var styles = parseStyles(className, styleObj); - var styleStr = styles.map(styleToCSS).join(''); - styleTag.innerHTML += styleStr; +function isValidInteger(integer) { + var re = /\d+/; + return !!integer.match(re); } -var RCSS = { - merge: function(a, b, c, d, e) { - return assign({}, a, b, c, d, e); - }, - - createClass: function(styleObj) { - var styleId = JSON.stringify(styleObj); - var className; - - if (existingClasses[styleId]) { - // already exists, use the existing className - className = existingClasses[styleId]; - } else { - // generate a new class and insert it - className = generateValidCSSClassName(); - existingClasses[styleId] = className; - insertStyle(className, styleObj); - } - - styleObj.className = className; - return styleObj; - } -}; - -module.exports = RCSS; - -},{"./styleRuleConverter":41,"./styleRuleValidator":42,"lodash.assign":22,"valid-media-queries":48}],41:[function(require,module,exports){ -var escape = require('lodash.escape'); - -var _uppercasePattern = /([A-Z])/g; - -function hyphenateProp(string) { - return string.replace(_uppercasePattern, '-$1').toLowerCase(); +function isValidLength(length) { + var re = /\d+(?:ex|em|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc)?$/; + return !!length.match(re); } -function escapeValueForProp(value, prop) { - // 'content' is a special property that must be quoted - if (prop === 'content') { - return '"' + value + '"'; - } - return escape(value); +function isValidOrientation(orientation) { + return orientation === 'landscape' || orientation === 'portrait'; } -module.exports = { - hyphenateProp: hyphenateProp, - escapeValueForProp: escapeValueForProp -}; - -},{"lodash.escape":25}],42:[function(require,module,exports){ -var isValidCSSProps = require('valid-css-props'); +function isValidScan(scan) { + return scan === 'progressive' || scan === 'interlace'; +} -function isValidProp(prop) { - return isValidCSSProps(prop); +function isValidResolution(resolution) { + var re = /(?:\+|-)?(?:\d+|\d*\.\d+)(?:e\d+)?(?:dpi|dpcm|dppx)$/; + return !!resolution.match(re); } function isValidValue(value) { return value != null && typeof value !== 'boolean' && value !== ''; } -module.exports = { - isValidProp: isValidProp, - isValidValue: isValidValue +var _mediaFeatureValidator = { + 'width': isValidLength, + 'min-width': isValidLength, + 'max-width': isValidLength, + 'height': isValidLength, + 'min-height': isValidLength, + 'max-height': isValidLength, + 'device-width': isValidLength, + 'min-device-width': isValidLength, + 'max-device-width': isValidLength, + 'device-height': isValidLength, + 'min-device-height': isValidLength, + 'max-device-height': isValidLength, + 'aspect-ratio': isValidRatio, + 'min-aspect-ratio': isValidRatio, + 'max-aspect-ratio': isValidRatio, + 'device-aspect-ratio': isValidRatio, + 'min-device-aspect-ratio': isValidRatio, + 'max-device-aspect-ratio': isValidRatio, + 'color': isValidValue, + 'min-color': isValidValue, + 'max-color': isValidValue, + 'color-index': isValidInteger, + 'min-color-index': isValidInteger, + 'max-color-index': isValidInteger, + 'monochrome': isValidInteger, + 'min-monochrome': isValidInteger, + 'max-monochrome': isValidInteger, + 'resolution': isValidResolution, + 'min-resolution': isValidResolution, + 'max-resolution': isValidResolution, + 'scan': isValidScan, + 'grid': isValidInteger, + 'orientation': isValidOrientation }; -},{"valid-css-props":47}],43:[function(require,module,exports){ -/** @jsx React.DOM */ -/** - * For math rendered using KaTex and/or MathJax. Use me like 2x + 3. - */ -// TODO(joel) - require MathJax / katex so they don't have to be global +var _validMediaFeatures = { + 'width': true, + 'min-width': true, + 'max-width': true, + 'height': true, + 'min-height': true, + 'max-height': true, + 'device-width': true, + 'min-device-width': true, + 'max-device-width': true, + 'device-height': true, + 'min-device-height': true, + 'max-device-height': true, + 'aspect-ratio': true, + 'min-aspect-ratio': true, + 'max-aspect-ratio': true, + 'device-aspect-ratio': true, + 'min-device-aspect-ratio': true, + 'max-device-aspect-ratio': true, + 'color': true, + 'min-color': true, + 'max-color': true, + 'color-index': true, + 'min-color-index': true, + 'max-color-index': true, + 'monochrome': true, + 'min-monochrome': true, + 'max-monochrome': true, + 'resolution': true, + 'min-resolution': true, + 'max-resolution': true, + 'scan': true, + 'grid': true, + 'orientation': true +}; -var React = require('react'); +var _validMediaTypes = { + 'all': true, + 'aural': true, + 'braille': true, + 'handheld': true, + 'print': true, + 'projection': true, + 'screen': true, + 'tty': true, + 'tv': true, + 'embossed': true +}; -var pendingScripts = []; -var needsProcess = false; -var timeout = null; +var _validQualifiers = { + 'not': true, + 'only': true +}; -function process(script, callback) { - pendingScripts.push(script); - if (!needsProcess) { - needsProcess = true; - timeout = setTimeout(doProcess, 0, callback); +function isValidFeature(feature) { + return !!_validMediaFeatures[feature]; +} + +function isValidQualifier(qualifier) { + return !!_validQualifiers[qualifier]; +} + +function isValidMediaType(mediaType) { + return !!_validMediaTypes[mediaType]; +} + +function isValidQualifiedMediaType(mediaType) { + var terms = mediaType.trim().split(/\s+/); + switch (terms.length) { + case 1: + return isValidMediaType(terms[0]); + case 2: + return isValidQualifier(terms[0]) && isValidMediaType(terms[1]); + default: + return false; } } -function doProcess(callback) { - MathJax.Hub.Queue(function() { - var oldElementScripts = MathJax.Hub.elementScripts; - MathJax.Hub.elementScripts = function(element) { - var scripts = pendingScripts; - pendingScripts = []; - needsProcess = false; - return scripts; - }; +function isValidExpression(expression) { + if (expression.length < 2) { + return false; + } - try { - return MathJax.Hub.Process(null, callback); - } catch (e) { - // IE8 requires `catch` in order to use `finally` - throw e; - } finally { - MathJax.Hub.elementScripts = oldElementScripts; - } - }); -} + // Parentheses are required around expressions + if (expression[0] !== '(' || expression[expression.length - 1] !== ')') { + return false; + } -var TeX = React.createClass({displayName: 'TeX', - getDefaultProps: function() { - return { - // Called after math is rendered or re-rendered - onRender: function() {} - }; - }, + // Remove parentheses and spacess + expression = expression.substring(1, expression.length - 1); - render: function() { - return React.DOM.span( {style:this.props.style}, - React.DOM.span( {ref:"mathjax"} ), - React.DOM.span( {ref:"katex"} ) - ); - }, + // Is there a value to accompany the media feature? + var featureAndValue = expression.split(/\s*:\s*/); + switch (featureAndValue.length) { + case 1: + var feature = featureAndValue[0].trim(); + return isValidFeature(feature); + case 2: + var feature = featureAndValue[0].trim(); + var value = featureAndValue[1].trim(); + return isValidFeature(feature) && + _mediaFeatureValidator[feature](value); + default: + return false; + } +} - componentDidMount: function() { - var text = this.props.children; - var onRender = this.props.onRender; +function isValidMediaQuery(query) { + var andSplitter = /\s+and\s+/; + var queryTerms = query.split(andSplitter); + return (isValidQualifiedMediaType(queryTerms[0]) || + isValidExpression(queryTerms[0])) && + every(queryTerms.slice(1), isValidExpression); +} - try { - var katexHolder = this.refs.katex.getDOMNode(); - katex.process(text, katexHolder); - onRender(); - return; - } catch (e) { - /* jshint -W103 */ - if (e.__proto__ !== katex.ParseError.prototype) { - /* jshint +W103 */ - throw e; - } - } +function isValidMediaQueryList(mediaQuery) { + mediaQuery = mediaQuery.toLowerCase(); - this.setScriptText(text); - process(this.script, onRender); - }, + if (mediaQuery.substring(0, 6) !== '@media') { + return false; + } - componentDidUpdate: function(prevProps, prevState) { - var oldText = prevProps.children; - var newText = this.props.children; - var onRender = this.props.onRender; + var commaSplitter = /\s*,\s*/; + var queryList = mediaQuery.substring(7, mediaQuery.length) + .split(commaSplitter); + return every(queryList, isValidMediaQuery); +} - if (oldText !== newText) { - try { - var katexHolder = this.refs.katex.getDOMNode(); - katex.process(newText, katexHolder); - if (this.script) { - var jax = MathJax.Hub.getJaxFor(this.script); - if (jax) { - jax.Remove(); - } - } - onRender(); - return; - } catch (e) { - /* jshint -W103 */ - if (e.__proto__ !== katex.ParseError.prototype) { - /* jshint +W103 */ - throw e; - } - } +module.exports = isValidMediaQueryList - $(this.refs.katex.getDOMNode()).empty(); +},{"lodash.every":49}],49:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var createCallback = require('lodash.createcallback'), + forOwn = require('lodash.forown'); - if (this.script) { - var component = this; - MathJax.Hub.Queue(function() { - var jax = MathJax.Hub.getJaxFor(component.script); - if (jax) { - return jax.Text(newText, onRender); - } else { - component.setScriptText(newText); - process(component.script, onRender); - } - }); - } else { - this.setScriptText(newText); - process(this.script, onRender); - } - } - }, +/** + * Checks if the given callback returns truey value for **all** elements of + * a collection. The callback is bound to `thisArg` and invoked with three + * arguments; (value, index|key, collection). + * + * If a property name is provided for `callback` the created "_.pluck" style + * callback will return the property value of the given element. + * + * If an object is provided for `callback` the created "_.where" style callback + * will return `true` for elements that have the properties of the given object, + * else `false`. + * + * @static + * @memberOf _ + * @alias all + * @category Collections + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [callback=identity] The function called + * per iteration. If a property name or object is provided it will be used + * to create a "_.pluck" or "_.where" style callback, respectively. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {boolean} Returns `true` if all elements passed the callback check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes']); + * // => false + * + * var characters = [ + * { 'name': 'barney', 'age': 36 }, + * { 'name': 'fred', 'age': 40 } + * ]; + * + * // using "_.pluck" callback shorthand + * _.every(characters, 'age'); + * // => true + * + * // using "_.where" callback shorthand + * _.every(characters, { 'age': 36 }); + * // => false + */ +function every(collection, callback, thisArg) { + var result = true; + callback = createCallback(callback, thisArg, 3); - setScriptText: function(text) { - if (!this.script) { - this.script = document.createElement("script"); - this.script.type = "math/tex"; - this.refs.mathjax.getDOMNode().appendChild(this.script); - } - if ("text" in this.script) { - // IE8, etc - this.script.text = text; - } else { - this.script.textContent = text; - } - }, + var index = -1, + length = collection ? collection.length : 0; - componentWillUnmount: function() { - if (this.script) { - var jax = MathJax.Hub.getJaxFor(this.script); - if (jax) { - jax.Remove(); - } - } + if (typeof length == 'number') { + while (++index < length) { + if (!(result = !!callback(collection[index], index, collection))) { + break; + } } -}); - -module.exports = TeX; - -},{"react":45}],44:[function(require,module,exports){ -/** @jsx React.DOM */ + } else { + forOwn(collection, function(value, index, collection) { + return (result = !!callback(value, index, collection)); + }); + } + return result; +} -var React = require("react"); -var _ = require("underscore"); +module.exports = every; -// TODO(joel/jack) fix z-index issues https://s3.amazonaws.com/uploads.hipchat.com/6574/29028/yOApjwmgiMhEZYJ/Screen%20Shot%202014-05-30%20at%203.34.18%20PM.png -// z-index: 3 on perseus-formats-tooltip seemed to work +},{"lodash.createcallback":50,"lodash.forown":86}],50:[function(require,module,exports){ +/** + * Lo-Dash 2.4.4 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreateCallback = require('lodash._basecreatecallback'), + baseIsEqual = require('lodash._baseisequal'), + isObject = require('lodash.isobject'), + keys = require('lodash.keys'), + property = require('lodash.property'); /** - * A generic tooltip library for React.js + * Produces a callback bound to an optional `thisArg`. If `func` is a property + * name the created callback will return the property value for a given element. + * If `func` is an object the created callback will return `true` for elements + * that contain the equivalent object properties, otherwise it will return `false`. * - * This should eventually end up in react-components + * @static + * @memberOf _ + * @category Utilities + * @param {*} [func=identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of the created callback. + * @param {number} [argCount] The number of arguments the callback accepts. + * @returns {Function} Returns a callback function. + * @example * - * Interface: ({a, b} means one of a or b) - * var Tooltip = require("./tooltip.jsx"); - * - * - * - * - * + * var characters = [ + * { 'name': 'barney', 'age': 36 }, + * { 'name': 'fred', 'age': 40 } + * ]; * - * To show/hide the tooltip, the parent component should call the - * .show() and .hide() methods of the tooltip when appropriate. - * (These are usually set up as handlers of events on the target element.) + * // wrap to create custom callback shorthands + * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { + * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); + * return !match ? func(callback, thisArg) : function(object) { + * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; + * }; + * }); * - * Notes: - * className should not specify a border; that is handled by borderColor - * so that the arrow and tooltip match + * _.filter(characters, 'age__gt38'); + * // => [{ 'name': 'fred', 'age': 40 }] */ +function createCallback(func, thisArg, argCount) { + var type = typeof func; + if (func == null || type == 'function') { + return baseCreateCallback(func, thisArg, argCount); + } + // handle "_.pluck" style callback shorthands + if (type != 'object') { + return property(func); + } + var props = keys(func), + key = props[0], + a = func[key]; -// __,,--``\\ -// _,,-''`` \\ , -// '----------_.------'-.___|\__ -// _.--''`` `)__ )__ @\__ -// ( .. ''---/___,,E/__,E'------` -// `-''`'' -// Here be dragons. - -var zIndex = 10; - -var Triangle = React.createClass({displayName: 'Triangle', - propTypes: { - color: React.PropTypes.string.isRequired, - left: React.PropTypes.number.isRequired, - "top": React.PropTypes.number.isRequired, - width: React.PropTypes.number.isRequired, - height: React.PropTypes.number.isRequired, - horizontalDirection: React.PropTypes.oneOf( - ["left", "right"] - ).isRequired, - verticalDirection: React.PropTypes.oneOf( - ["top", "bottom"] - ).isRequired, - }, - - render: function() { - var borderLeft, borderRight, borderTop, borderBottom; + // handle "_.where" style callback shorthands + if (props.length == 1 && a === a && !isObject(a)) { + // fast path the common case of providing an object with a single + // property containing a primitive value + return function(object) { + var b = object[key]; + return a === b && (a !== 0 || (1 / a == 1 / b)); + }; + } + return function(object) { + var length = props.length, + result = false; - var hBorder = (this.props.width + "px solid transparent"); - if (this.props.horizontalDirection === "right") { - borderLeft = hBorder; - } else { - borderRight = hBorder; - } + while (length--) { + if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { + break; + } + } + return result; + }; +} - var vBorder = (this.props.height + "px solid " + this.props.color); - if (this.props.verticalDirection === "top") { - borderTop = vBorder; - } else { - borderBottom = vBorder; - } +module.exports = createCallback; - return React.DOM.div( {style:{ - display: "block", - height: 0, - width: 0, - position: "absolute", - left: this.props.left, - "top": this.props["top"], - borderLeft: borderLeft, - borderRight: borderRight, - borderTop: borderTop, - borderBottom: borderBottom - }} ); - } -}); +},{"lodash._basecreatecallback":51,"lodash._baseisequal":70,"lodash.isobject":79,"lodash.keys":81,"lodash.property":85}],51:[function(require,module,exports){ +arguments[4][10][0].apply(exports,arguments) +},{"dup":10,"lodash._setbinddata":52,"lodash.bind":55,"lodash.identity":67,"lodash.support":68}],52:[function(require,module,exports){ +arguments[4][11][0].apply(exports,arguments) +},{"dup":11,"lodash._isnative":53,"lodash.noop":54}],53:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],54:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],55:[function(require,module,exports){ +arguments[4][14][0].apply(exports,arguments) +},{"dup":14,"lodash._createwrapper":56,"lodash._slice":66}],56:[function(require,module,exports){ +arguments[4][15][0].apply(exports,arguments) +},{"dup":15,"lodash._basebind":57,"lodash._basecreatewrapper":61,"lodash._slice":66,"lodash.isfunction":65}],57:[function(require,module,exports){ +arguments[4][16][0].apply(exports,arguments) +},{"dup":16,"lodash._basecreate":58,"lodash._setbinddata":52,"lodash._slice":66,"lodash.isobject":79}],58:[function(require,module,exports){ +arguments[4][17][0].apply(exports,arguments) +},{"dup":17,"lodash._isnative":59,"lodash.isobject":79,"lodash.noop":60}],59:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],60:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],61:[function(require,module,exports){ +arguments[4][21][0].apply(exports,arguments) +},{"dup":21,"lodash._basecreate":62,"lodash._setbinddata":52,"lodash._slice":66,"lodash.isobject":79}],62:[function(require,module,exports){ +arguments[4][17][0].apply(exports,arguments) +},{"dup":17,"lodash._isnative":63,"lodash.isobject":79,"lodash.noop":64}],63:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],64:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],65:[function(require,module,exports){ +arguments[4][26][0].apply(exports,arguments) +},{"dup":26}],66:[function(require,module,exports){ +arguments[4][27][0].apply(exports,arguments) +},{"dup":27}],67:[function(require,module,exports){ +arguments[4][28][0].apply(exports,arguments) +},{"dup":28}],68:[function(require,module,exports){ +arguments[4][29][0].apply(exports,arguments) +},{"dup":29,"lodash._isnative":69}],69:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],70:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var forIn = require('lodash.forin'), + getArray = require('lodash._getarray'), + isFunction = require('lodash.isfunction'), + objectTypes = require('lodash._objecttypes'), + releaseArray = require('lodash._releasearray'); -var TooltipArrow = React.createClass({displayName: 'TooltipArrow', - propTypes: { - position: React.PropTypes.string, - visibility: React.PropTypes.string, - left: React.PropTypes.number, - "top": React.PropTypes.number, - color: React.PropTypes.string.isRequired, // a css color - border: React.PropTypes.string.isRequired, // a css color - width: React.PropTypes.number.isRequired, - height: React.PropTypes.number.isRequired, - horizontalDirection: React.PropTypes.oneOf( - ["left", "right"] - ).isRequired, - verticalDirection: React.PropTypes.oneOf( - ["top", "bottom"] - ).isRequired - }, +/** `Object#toString` result shortcuts */ +var argsClass = '[object Arguments]', + arrayClass = '[object Array]', + boolClass = '[object Boolean]', + dateClass = '[object Date]', + numberClass = '[object Number]', + objectClass = '[object Object]', + regexpClass = '[object RegExp]', + stringClass = '[object String]'; - getDefaultProps: function() { - return { - position: "relative", - visibility: "visible", - left: 0, - "top": 0 - }; - }, +/** Used for native method references */ +var objectProto = Object.prototype; - // TODO(jack): Think about adding a box-shadow to the triangle here - // See http://css-tricks.com/triangle-with-shadow/ - render: function() { - var isRight = (this.props.horizontalDirection === "right"); - var isTop = (this.props.verticalDirection === "top"); +/** Used to resolve the internal [[Class]] of values */ +var toString = objectProto.toString; - var frontTopOffset = isTop ? 0 : 1; - var borderTopOffset = isTop ? 0 : -1; +/** Native method shortcuts */ +var hasOwnProperty = objectProto.hasOwnProperty; - return React.DOM.div( {style:{ - display: "block", - position: this.props.position, - visibility: this.props.visibility, - left: this.props.left, - "top": this.props["top"], - width: this.props.width + 2, - height: this.props.height + 1, - marginTop: -1, - marginBottom: -2, - zIndex: zIndex - }}, - /* The background triangle used to create the effect of a - border around the foreground triangle*/ - Triangle( - {horizontalDirection:this.props.horizontalDirection, - verticalDirection:this.props.verticalDirection, - color:this.props.border, - left:0, - top:borderTopOffset, - width:this.props.width + 2, // one extra for the diagonal - height:this.props.height + 2} ), - /* The foreground triangle covers all but the left/right edges - of the background triangle */ - Triangle( - {horizontalDirection:this.props.horizontalDirection, - verticalDirection:this.props.verticalDirection, - color:this.props.color, - left:1, - top:frontTopOffset, - width:this.props.width, - height:this.props.height} ) - ); +/** + * The base implementation of `_.isEqual`, without support for `thisArg` binding, + * that allows partial "_.where" style comparisons. + * + * @private + * @param {*} a The value to compare. + * @param {*} b The other value to compare. + * @param {Function} [callback] The function to customize comparing values. + * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. + * @param {Array} [stackA=[]] Tracks traversed `a` objects. + * @param {Array} [stackB=[]] Tracks traversed `b` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { + // used to indicate that when comparing objects, `a` has at least the properties of `b` + if (callback) { + var result = callback(a, b); + if (typeof result != 'undefined') { + return !!result; } -}); + } + // exit early for identical values + if (a === b) { + // treat `+0` vs. `-0` as not equal + return a !== 0 || (1 / a == 1 / b); + } + var type = typeof a, + otherType = typeof b; + + // exit early for unlike primitive values + if (a === a && + !(a && objectTypes[type]) && + !(b && objectTypes[otherType])) { + return false; + } + // exit early for `null` and `undefined` avoiding ES3's Function#call behavior + // http://es5.github.io/#x15.3.4.4 + if (a == null || b == null) { + return a === b; + } + // compare [[Class]] names + var className = toString.call(a), + otherClass = toString.call(b); -var VERTICAL_CORNERS = { - "top": { - "top": "-100%" - }, - bottom: { - "top": 0 - } -}; + if (className == argsClass) { + className = objectClass; + } + if (otherClass == argsClass) { + otherClass = objectClass; + } + if (className != otherClass) { + return false; + } + switch (className) { + case boolClass: + case dateClass: + // coerce dates and booleans to numbers, dates to milliseconds and booleans + // to `1` or `0` treating invalid dates coerced to `NaN` as not equal + return +a == +b; -var HORIZONTAL_CORNERS = { - left: { - targetLeft: 0, - }, + case numberClass: + // treat `NaN` vs. `NaN` as equal + return (a != +a) + ? b != +b + // but treat `+0` vs. `-0` as not equal + : (a == 0 ? (1 / a == 1 / b) : a == +b); - right: { - targetLeft: "100%", - } -}; + case regexpClass: + case stringClass: + // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) + // treat string primitives and their corresponding object instances as equal + return a == String(b); + } + var isArr = className == arrayClass; + if (!isArr) { + // unwrap any `lodash` wrapped values + var aWrapped = hasOwnProperty.call(a, '__wrapped__'), + bWrapped = hasOwnProperty.call(b, '__wrapped__'); -var HORIZONTAL_ALIGNMNENTS = { - left: { - tooltipLeft: 0, - arrowLeft: function(arrowSize) {return 0;} - }, - right: { - tooltipLeft: "-100%", - arrowLeft: function(arrowSize) {return -arrowSize - 2;} + if (aWrapped || bWrapped) { + return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); } -}; - - -var Tooltip = React.createClass({displayName: 'Tooltip', - propTypes: { - show: React.PropTypes.bool.isRequired, - className: React.PropTypes.string, - arrowSize: React.PropTypes.number, - borderColor: React.PropTypes.string, - verticalPosition: React.PropTypes.oneOf( - _.keys(VERTICAL_CORNERS) - ), - horizontalPosition: React.PropTypes.oneOf( - _.keys(HORIZONTAL_CORNERS) - ), - horizontalAlign: React.PropTypes.oneOf( - _.keys(HORIZONTAL_ALIGNMNENTS) - ), - children: React.PropTypes.arrayOf( - React.PropTypes.component - ).isRequired - }, + // exit for functions and DOM nodes + if (className != objectClass) { + return false; + } + // in older versions of Opera, `arguments` objects have `Array` constructors + var ctorA = a.constructor, + ctorB = b.constructor; - getDefaultProps: function() { - return { - className: "", - arrowSize: 10, - borderColor: "#ccc", - verticalPosition: "bottom", - horizontalPosition: "left", - horizontalAlign: "left" - }; - }, + // non `Object` object instances with different constructors are not equal + if (ctorA != ctorB && + !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && + ('constructor' in a && 'constructor' in b) + ) { + return false; + } + } + // assume cyclic structures are equal + // the algorithm for detecting cyclic structures is adapted from ES 5.1 + // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) + var initedStack = !stackA; + stackA || (stackA = getArray()); + stackB || (stackB = getArray()); - getInitialState: function() { - return { - height: null // used for offsetting "top" positioned tooltips - }; - }, + var length = stackA.length; + while (length--) { + if (stackA[length] == a) { + return stackB[length] == b; + } + } + var size = 0; + result = true; - componentWillReceiveProps: function() { - // If the contents have changed, reset our measure of the height - this.setState({height: null}); - }, + // add `a` and `b` to the stack of traversed objects + stackA.push(a); + stackB.push(b); - render: function() { - var isTooltipAbove = this.props.verticalPosition === "top"; + // recursively compare objects and arrays (susceptible to call stack limits) + if (isArr) { + // compare lengths to determine if a deep comparison is necessary + length = a.length; + size = b.length; + result = size == length; - /* We wrap the entire output in a span so that it displays inline */ - return React.DOM.span(null, - isTooltipAbove && this._renderToolTipDiv(isTooltipAbove), + if (result || isWhere) { + // deep compare the contents, ignoring non-numeric properties + while (size--) { + var index = length, + value = b[size]; - /* We wrap our input in a div so that we can put the tooltip in a - div above/below it */ - React.DOM.div(null, - _.first(this.props.children) - ), + if (isWhere) { + while (index--) { + if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { + break; + } + } + } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { + break; + } + } + } + } + else { + // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` + // which, in this case, is more costly + forIn(b, function(value, key, b) { + if (hasOwnProperty.call(b, key)) { + // count the number of properties. + size++; + // deep compare each property value. + return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); + } + }); - !isTooltipAbove && this._renderToolTipDiv() - ); - }, + if (result && !isWhere) { + // ensure both objects have the same number of properties + forIn(a, function(value, key, a) { + if (hasOwnProperty.call(a, key)) { + // `size` will be `-1` if `a` has more properties than `b` + return (result = --size > -1); + } + }); + } + } + stackA.pop(); + stackB.pop(); - _renderToolTipDiv: function(isTooltipAbove) { - var settings = _.extend({}, - HORIZONTAL_CORNERS[this.props.horizontalPosition], - HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], - VERTICAL_CORNERS[this.props.verticalPosition] - ); + if (initedStack) { + releaseArray(stackA); + releaseArray(stackB); + } + return result; +} - var arrowAbove; - var arrowBelow; +module.exports = baseIsEqual; - if (isTooltipAbove) { - // We put an absolutely positioned arrow in the correct place - arrowAbove = TooltipArrow( - {verticalDirection:"top", - horizontalDirection:this.props.horizontalAlign, - position:"absolute", - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-this.props.arrowSize + 2, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); +},{"lodash._getarray":71,"lodash._objecttypes":73,"lodash._releasearray":74,"lodash.forin":77,"lodash.isfunction":78}],71:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var arrayPool = require('lodash._arraypool'); - // And we use a visibility: hidden arrow below to shift up the - // content by the correct amount - arrowBelow = TooltipArrow( - {verticalDirection:"top", - horizontalDirection:this.props.horizontalAlign, - visibility:"hidden", - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-1, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); - } else { - arrowAbove = TooltipArrow( - {verticalDirection:"bottom", - horizontalDirection:this.props.horizontalAlign, - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-1, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); +/** + * Gets an array from the array pool or creates a new one if the pool is empty. + * + * @private + * @returns {Array} The array from the pool. + */ +function getArray() { + return arrayPool.pop() || []; +} - arrowBelow = null; - } +module.exports = getArray; - /* A positioned div below the input to be the parent for our - tooltip */ - return React.DOM.div( {style:{ - position: "relative", - height: 0, - display: this.props.show ? "block" : "none", - }}, - React.DOM.div( {ref:"tooltipContainer", className:"tooltipContainer", style:{ - position: "absolute", - // height must start out undefined, not null, so that - // we can measure the actual height with jquery. - // This is used to position the tooltip with top: -100% - // when in verticalPosition: "top" mode - height: this.state.height || undefined, - left: settings.targetLeft - }}, - arrowAbove, +},{"lodash._arraypool":72}],72:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ - /* The contents of the tooltip */ - React.DOM.div( {className:this.props.className, - ref:"tooltipContent", - style:{ - position: "relative", - "top": settings["top"], - "left": settings.tooltipLeft, - border: "1px solid " + this.props.borderColor, - "-webkit-box-shadow": "0 1px 3px " + - this.props.borderColor, - "-moz-box-shadow": "0 1px 3px " + - this.props.borderColor, - boxShadow: "0 1px 3px " + - this.props.borderColor, - zIndex: zIndex - 1 - }}, - _.rest(this.props.children) - ), +/** Used to pool arrays and objects used internally */ +var arrayPool = []; - arrowBelow - ) - ); - }, +module.exports = arrayPool; - componentDidMount: function() { - this._updateHeight(); - }, +},{}],73:[function(require,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"dup":31}],74:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var arrayPool = require('lodash._arraypool'), + maxPoolSize = require('lodash._maxpoolsize'); - componentDidUpdate: function() { - this._updateHeight(); - }, +/** + * Releases the given array back to the array pool. + * + * @private + * @param {Array} [array] The array to release. + */ +function releaseArray(array) { + array.length = 0; + if (arrayPool.length < maxPoolSize) { + arrayPool.push(array); + } +} - _updateHeight: function() { - var height = this.refs.tooltipContainer.getDOMNode().offsetHeight; - if (height !== this.state.height) { - this.setState({height:height}); - } - } -}); +module.exports = releaseArray; -// Sorry. // Apology-Oriented-Programming -module.exports = Tooltip; +},{"lodash._arraypool":75,"lodash._maxpoolsize":76}],75:[function(require,module,exports){ +arguments[4][72][0].apply(exports,arguments) +},{"dup":72}],76:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ -},{"react":45,"underscore":46}],45:[function(require,module,exports){ -/* This note applies to rcss, react, and underscore. +/** Used as the max size of the `arrayPool` and `objectPool` */ +var maxPoolSize = 40; + +module.exports = maxPoolSize; + +},{}],77:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreateCallback = require('lodash._basecreatecallback'), + objectTypes = require('lodash._objecttypes'); + +/** + * Iterates over own and inherited enumerable properties of an object, + * executing the callback for each property. The callback is bound to `thisArg` + * and invoked with three arguments; (value, key, object). Callbacks may exit + * iteration early by explicitly returning `false`. * - * We're faking a node module for this package by just exporting the global. - * There are a few complications which led us to this solution as a temporary - * fix. + * @static + * @memberOf _ + * @type Function + * @category Objects + * @param {Object} object The object to iterate over. + * @param {Function} [callback=identity] The function called per iteration. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns `object`. + * @example * - * - Browserify can slow down a lot when you include the other packages (and - * their dependency graphs). We were also battling general browserify - * slowness at this time - browserify 3.4.0 is "good" but later versions - * (3.53 if I remember correctly) are terribly slow (on the order of 20x - * slower). + * function Shape() { + * this.x = 0; + * this.y = 0; + * } * - * - I'm not clear on the details of packaging this so we don't duplicate - * dependencies anywhere. For instance when packaging perseus for webapp we - * need to be careful not to include packages like underscore from our - * dependencies or from the packages we depend on. (note: this is a very good - * opportunity to either explain how existing tools solve the problem or - * create a new tool to solve it) + * Shape.prototype.move = function(x, y) { + * this.x += x; + * this.y += y; + * }; * - * - Joel (and Jack) + * _.forIn(new Shape, function(value, key) { + * console.log(key); + * }); + * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) */ -module.exports = window.React; +var forIn = function(collection, callback, thisArg) { + var index, iterable = collection, result = iterable; + if (!iterable) return result; + if (!objectTypes[typeof iterable]) return result; + callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); + for (index in iterable) { + if (callback(iterable[index], index, collection) === false) return result; + } + return result +}; -},{}],46:[function(require,module,exports){ -/* This note applies to rcss, react, and underscore. +module.exports = forIn; + +},{"lodash._basecreatecallback":51,"lodash._objecttypes":73}],78:[function(require,module,exports){ +arguments[4][26][0].apply(exports,arguments) +},{"dup":26}],79:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":80}],80:[function(require,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"dup":31}],81:[function(require,module,exports){ +arguments[4][32][0].apply(exports,arguments) +},{"dup":32,"lodash._isnative":82,"lodash._shimkeys":83,"lodash.isobject":79}],82:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],83:[function(require,module,exports){ +arguments[4][34][0].apply(exports,arguments) +},{"dup":34,"lodash._objecttypes":84}],84:[function(require,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"dup":31}],85:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** + * Creates a "_.pluck" style function, which returns the `key` value of a + * given object. * - * We're faking a node module for this package by just exporting the global. - * There are a few complications which led us to this solution as a temporary - * fix. + * @static + * @memberOf _ + * @category Utilities + * @param {string} key The name of the property to retrieve. + * @returns {Function} Returns the new function. + * @example * - * - Browserify can slow down a lot when you include the other packages (and - * their dependency graphs). We were also battling general browserify - * slowness at this time - browserify 3.4.0 is "good" but later versions - * (3.53 if I remember correctly) are terribly slow (on the order of 20x - * slower). + * var characters = [ + * { 'name': 'fred', 'age': 40 }, + * { 'name': 'barney', 'age': 36 } + * ]; * - * - I'm not clear on the details of packaging this so we don't duplicate - * dependencies anywhere. For instance when packaging perseus for webapp we - * need to be careful not to include packages like underscore from our - * dependencies or from the packages we depend on. (note: this is a very good - * opportunity to either explain how existing tools solve the problem or - * create a new tool to solve it) + * var getName = _.property('name'); + * + * _.map(characters, getName); + * // => ['barney', 'fred'] + * + * _.sortBy(characters, getName); + * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] + */ +function property(key) { + return function(object) { + return object[key]; + }; +} + +module.exports = property; + +},{}],86:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreateCallback = require('lodash._basecreatecallback'), + keys = require('lodash.keys'), + objectTypes = require('lodash._objecttypes'); + +/** + * Iterates over own enumerable properties of an object, executing the callback + * for each property. The callback is bound to `thisArg` and invoked with three + * arguments; (value, key, object). Callbacks may exit iteration early by + * explicitly returning `false`. + * + * @static + * @memberOf _ + * @type Function + * @category Objects + * @param {Object} object The object to iterate over. + * @param {Function} [callback=identity] The function called per iteration. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns `object`. + * @example * - * - Joel (and Jack) - */ -module.exports = window._; - -},{}],47:[function(require,module,exports){ -var _validCSSProps = { - 'alignment-adjust': true, - 'alignment-baseline': true, - 'animation': true, - 'animation-delay': true, - 'animation-direction': true, - 'animation-duration': true, - 'animation-iteration-count': true, - 'animation-name': true, - 'animation-play-state': true, - 'animation-timing-function': true, - 'appearance': true, - 'backface-visibility': true, - 'background': true, - 'background-attachment': true, - 'background-clip': true, - 'background-color': true, - 'background-image': true, - 'background-origin': true, - 'background-position': true, - 'background-repeat': true, - 'background-size': true, - 'baseline-shift': true, - 'bookmark-label': true, - 'bookmark-level': true, - 'bookmark-target': true, - 'border': true, - 'border-bottom': true, - 'border-bottom-color': true, - 'border-bottom-left-radius': true, - 'border-bottom-right-radius': true, - 'border-bottom-style': true, - 'border-bottom-width': true, - 'border-collapse': true, - 'border-color': true, - 'border-image': true, - 'border-image-outset': true, - 'border-image-repeat': true, - 'border-image-slice': true, - 'border-image-source': true, - 'border-image-width': true, - 'border-left': true, - 'border-left-color': true, - 'border-left-style': true, - 'border-left-width': true, - 'border-radius': true, - 'border-right': true, - 'border-right-color': true, - 'border-right-style': true, - 'border-right-width': true, - 'border-spacing': true, - 'border-style': true, - 'border-top': true, - 'border-top-color': true, - 'border-top-left-radius': true, - 'border-top-right-radius': true, - 'border-top-style': true, - 'border-top-width': true, - 'border-width': true, - 'bottom': true, - 'box-align': true, - 'box-decoration-break': true, - 'box-direction': true, - 'box-flex': true, - 'box-flex-group': true, - 'box-lines': true, - 'box-ordinal-group': true, - 'box-orient': true, - 'box-pack': true, - 'box-shadow': true, - 'box-sizing': true, - 'caption-side': true, - 'clear': true, - 'clip': true, - 'color': true, - 'color-profile': true, - 'column-count': true, - 'column-fill': true, - 'column-gap': true, - 'column-rule': true, - 'column-rule-color': true, - 'column-rule-style': true, - 'column-rule-width': true, - 'column-span': true, - 'column-width': true, - 'columns': true, - 'content': true, - 'counter-increment': true, - 'counter-reset': true, - 'crop': true, - 'cursor': true, - 'direction': true, - 'display': true, - 'dominant-baseline': true, - 'drop-initial-after-adjust': true, - 'drop-initial-after-align': true, - 'drop-initial-before-adjust': true, - 'drop-initial-before-align': true, - 'drop-initial-size': true, - 'drop-initial-value': true, - 'empty-cells': true, - 'fit': true, - 'fit-position': true, - 'float': true, - 'float-offset': true, - 'font': true, - 'font-family': true, - 'font-size': true, - 'font-size-adjust': true, - 'font-stretch': true, - 'font-style': true, - 'font-variant': true, - 'font-weight': true, - 'grid-columns': true, - 'grid-rows': true, - 'hanging-punctuation': true, - 'height': true, - 'hyphenate-after': true, - 'hyphenate-before': true, - 'hyphenate-character': true, - 'hyphenate-lines': true, - 'hyphenate-resource': true, - 'hyphens': true, - 'icon': true, - 'image-orientation': true, - 'image-resolution': true, - 'inline-box-align': true, - 'left': true, - 'letter-spacing': true, - 'line-height': true, - 'line-stacking': true, - 'line-stacking-ruby': true, - 'line-stacking-shift': true, - 'line-stacking-strategy': true, - 'list-style': true, - 'list-style-image': true, - 'list-style-position': true, - 'list-style-type': true, - 'margin': true, - 'margin-bottom': true, - 'margin-left': true, - 'margin-right': true, - 'margin-top': true, - 'mark': true, - 'mark-after': true, - 'mark-before': true, - 'marks': true, - 'marquee-direction': true, - 'marquee-play-count': true, - 'marquee-speed': true, - 'marquee-style': true, - 'max-height': true, - 'max-width': true, - 'min-height': true, - 'min-width': true, - 'move-to': true, - 'nav-down': true, - 'nav-index': true, - 'nav-left': true, - 'nav-right': true, - 'nav-up': true, - 'opacity': true, - 'orphans': true, - 'outline': true, - 'outline-color': true, - 'outline-offset': true, - 'outline-style': true, - 'outline-width': true, - 'overflow': true, - 'overflow-style': true, - 'overflow-x': true, - 'overflow-y': true, - 'padding': true, - 'padding-bottom': true, - 'padding-left': true, - 'padding-right': true, - 'padding-top': true, - 'page': true, - 'page-break-after': true, - 'page-break-before': true, - 'page-break-inside': true, - 'page-policy': true, - 'perspective': true, - 'perspective-origin': true, - 'phonemes': true, - 'position': true, - 'punctuation-trim': true, - 'quotes': true, - 'rendering-intent': true, - 'resize': true, - 'rest': true, - 'rest-after': true, - 'rest-before': true, - 'right': true, - 'rotation': true, - 'rotation-point': true, - 'ruby-align': true, - 'ruby-overhang': true, - 'ruby-position': true, - 'ruby-span': true, - 'size': true, - 'string-set': true, - 'table-layout': true, - 'target': true, - 'target-name': true, - 'target-new': true, - 'target-position': true, - 'text-align': true, - 'text-align-last': true, - 'text-decoration': true, - 'text-height': true, - 'text-indent': true, - 'text-justify': true, - 'text-outline': true, - 'text-overflow': true, - 'text-shadow': true, - 'text-transform': true, - 'text-wrap': true, - 'top': true, - 'transform': true, - 'transform-origin': true, - 'transform-style': true, - 'transition': true, - 'transition-delay': true, - 'transition-duration': true, - 'transition-property': true, - 'transition-timing-function': true, - 'unicode-bidi': true, - 'user-select': true, - 'vertical-align': true, - 'visibility': true, - 'voice-balance': true, - 'voice-duration': true, - 'voice-pitch': true, - 'voice-pitch-range': true, - 'voice-rate': true, - 'voice-stress': true, - 'voice-volume': true, - 'white-space': true, - 'widows': true, - 'width': true, - 'word-break': true, - 'word-spacing': true, - 'word-wrap': true, - 'z-index': true + * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { + * console.log(key); + * }); + * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) + */ +var forOwn = function(collection, callback, thisArg) { + var index, iterable = collection, result = iterable; + if (!iterable) return result; + if (!objectTypes[typeof iterable]) return result; + callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); + var ownIndex = -1, + ownProps = objectTypes[typeof iterable] && keys(iterable), + length = ownProps ? ownProps.length : 0; + + while (++ownIndex < length) { + index = ownProps[ownIndex]; + if (callback(iterable[index], index, collection) === false) return result; + } + return result +}; + +module.exports = forOwn; + +},{"lodash._basecreatecallback":87,"lodash._objecttypes":108,"lodash.keys":109}],87:[function(require,module,exports){ +arguments[4][10][0].apply(exports,arguments) +},{"dup":10,"lodash._setbinddata":88,"lodash.bind":91,"lodash.identity":105,"lodash.support":106}],88:[function(require,module,exports){ +arguments[4][11][0].apply(exports,arguments) +},{"dup":11,"lodash._isnative":89,"lodash.noop":90}],89:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],90:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],91:[function(require,module,exports){ +arguments[4][14][0].apply(exports,arguments) +},{"dup":14,"lodash._createwrapper":92,"lodash._slice":104}],92:[function(require,module,exports){ +arguments[4][15][0].apply(exports,arguments) +},{"dup":15,"lodash._basebind":93,"lodash._basecreatewrapper":98,"lodash._slice":104,"lodash.isfunction":103}],93:[function(require,module,exports){ +arguments[4][16][0].apply(exports,arguments) +},{"dup":16,"lodash._basecreate":94,"lodash._setbinddata":88,"lodash._slice":104,"lodash.isobject":97}],94:[function(require,module,exports){ +arguments[4][17][0].apply(exports,arguments) +},{"dup":17,"lodash._isnative":95,"lodash.isobject":97,"lodash.noop":96}],95:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],96:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],97:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":108}],98:[function(require,module,exports){ +arguments[4][21][0].apply(exports,arguments) +},{"dup":21,"lodash._basecreate":99,"lodash._setbinddata":88,"lodash._slice":104,"lodash.isobject":102}],99:[function(require,module,exports){ +arguments[4][17][0].apply(exports,arguments) +},{"dup":17,"lodash._isnative":100,"lodash.isobject":102,"lodash.noop":101}],100:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],101:[function(require,module,exports){ +arguments[4][13][0].apply(exports,arguments) +},{"dup":13}],102:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":108}],103:[function(require,module,exports){ +arguments[4][26][0].apply(exports,arguments) +},{"dup":26}],104:[function(require,module,exports){ +arguments[4][27][0].apply(exports,arguments) +},{"dup":27}],105:[function(require,module,exports){ +arguments[4][28][0].apply(exports,arguments) +},{"dup":28}],106:[function(require,module,exports){ +arguments[4][29][0].apply(exports,arguments) +},{"dup":29,"lodash._isnative":107}],107:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],108:[function(require,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"dup":31}],109:[function(require,module,exports){ +arguments[4][32][0].apply(exports,arguments) +},{"dup":32,"lodash._isnative":110,"lodash._shimkeys":111,"lodash.isobject":112}],110:[function(require,module,exports){ +arguments[4][12][0].apply(exports,arguments) +},{"dup":12}],111:[function(require,module,exports){ +arguments[4][34][0].apply(exports,arguments) +},{"dup":34,"lodash._objecttypes":108}],112:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"lodash._objecttypes":108}],113:[function(require,module,exports){ +var escape = require('lodash.escape'); + +var _uppercasePattern = /([A-Z])/g; + +function hyphenateProp(string) { + return string.replace(_uppercasePattern, '-$1').toLowerCase(); +} + +function escapeValueForProp(value, prop) { + // 'content' is a special property that must be quoted + if (prop === 'content') { + return '"' + value + '"'; + } + return escape(value); +} + +module.exports = { + hyphenateProp: hyphenateProp, + escapeValueForProp: escapeValueForProp +}; + +},{"lodash.escape":36}],114:[function(require,module,exports){ +var isValidCSSProps = require('valid-css-props'); + +function isValidProp(prop) { + return isValidCSSProps(prop); +} + +function isValidValue(value) { + return value != null && typeof value !== 'boolean' && value !== ''; +} + +module.exports = { + isValidProp: isValidProp, + isValidValue: isValidValue +}; + +},{"valid-css-props":47}],115:[function(require,module,exports){ +/** @jsx React.DOM */ +/** + * For math rendered using KaTex and/or MathJax. Use me like 2x + 3. + */ +// TODO(joel) - require MathJax / katex so they don't have to be global + +var React = require('react'); + +var pendingScripts = []; +var needsProcess = false; +var timeout = null; + +function process(script, callback) { + pendingScripts.push(script); + if (!needsProcess) { + needsProcess = true; + timeout = setTimeout(doProcess, 0, callback); + } +} + +function doProcess(callback) { + MathJax.Hub.Queue(function() { + var oldElementScripts = MathJax.Hub.elementScripts; + MathJax.Hub.elementScripts = function(element) { + var scripts = pendingScripts; + pendingScripts = []; + needsProcess = false; + return scripts; + }; + + try { + return MathJax.Hub.Process(null, callback); + } catch (e) { + // IE8 requires `catch` in order to use `finally` + throw e; + } finally { + MathJax.Hub.elementScripts = oldElementScripts; + } + }); } -var vendorPrefixRegEx = /^-.+-/; +var TeX = React.createClass({displayName: 'TeX', + getDefaultProps: function() { + return { + // Called after math is rendered or re-rendered + onRender: function() {} + }; + }, + + render: function() { + return React.DOM.span( {style:this.props.style}, + React.DOM.span( {ref:"mathjax"} ), + React.DOM.span( {ref:"katex"} ) + ); + }, + + componentDidMount: function() { + var text = this.props.children; + var onRender = this.props.onRender; + + try { + var katexHolder = this.refs.katex.getDOMNode(); + katex.process(text, katexHolder); + onRender(); + return; + } catch (e) { + /* jshint -W103 */ + if (e.__proto__ !== katex.ParseError.prototype) { + /* jshint +W103 */ + throw e; + } + } + + this.setScriptText(text); + process(this.script, onRender); + }, + + componentDidUpdate: function(prevProps, prevState) { + var oldText = prevProps.children; + var newText = this.props.children; + var onRender = this.props.onRender; + + if (oldText !== newText) { + try { + var katexHolder = this.refs.katex.getDOMNode(); + katex.process(newText, katexHolder); + if (this.script) { + var jax = MathJax.Hub.getJaxFor(this.script); + if (jax) { + jax.Remove(); + } + } + onRender(); + return; + } catch (e) { + /* jshint -W103 */ + if (e.__proto__ !== katex.ParseError.prototype) { + /* jshint +W103 */ + throw e; + } + } + + $(this.refs.katex.getDOMNode()).empty(); + + if (this.script) { + var component = this; + MathJax.Hub.Queue(function() { + var jax = MathJax.Hub.getJaxFor(component.script); + if (jax) { + return jax.Text(newText, onRender); + } else { + component.setScriptText(newText); + process(component.script, onRender); + } + }); + } else { + this.setScriptText(newText); + process(this.script, onRender); + } + } + }, + + setScriptText: function(text) { + if (!this.script) { + this.script = document.createElement("script"); + this.script.type = "math/tex"; + this.refs.mathjax.getDOMNode().appendChild(this.script); + } + if ("text" in this.script) { + // IE8, etc + this.script.text = text; + } else { + this.script.textContent = text; + } + }, + + componentWillUnmount: function() { + if (this.script) { + var jax = MathJax.Hub.getJaxFor(this.script); + if (jax) { + jax.Remove(); + } + } + } +}); + +module.exports = TeX; + +},{"react":117}],116:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require("react"); +var _ = require("underscore"); + +// TODO(joel/jack) fix z-index issues https://s3.amazonaws.com/uploads.hipchat.com/6574/29028/yOApjwmgiMhEZYJ/Screen%20Shot%202014-05-30%20at%203.34.18%20PM.png +// z-index: 3 on perseus-formats-tooltip seemed to work + +/** + * A generic tooltip library for React.js + * + * This should eventually end up in react-components + * + * Interface: ({a, b} means one of a or b) + * var Tooltip = require("./tooltip.jsx"); + * + * + * + * + * + * + * To show/hide the tooltip, the parent component should call the + * .show() and .hide() methods of the tooltip when appropriate. + * (These are usually set up as handlers of events on the target element.) + * + * Notes: + * className should not specify a border; that is handled by borderColor + * so that the arrow and tooltip match + */ + +// __,,--``\\ +// _,,-''`` \\ , +// '----------_.------'-.___|\__ +// _.--''`` `)__ )__ @\__ +// ( .. ''---/___,,E/__,E'------` +// `-''`'' +// Here be dragons. + +var zIndex = 10; + +var Triangle = React.createClass({displayName: 'Triangle', + propTypes: { + color: React.PropTypes.string.isRequired, + left: React.PropTypes.number.isRequired, + "top": React.PropTypes.number.isRequired, + width: React.PropTypes.number.isRequired, + height: React.PropTypes.number.isRequired, + horizontalDirection: React.PropTypes.oneOf( + ["left", "right"] + ).isRequired, + verticalDirection: React.PropTypes.oneOf( + ["top", "bottom"] + ).isRequired, + }, + + render: function() { + var borderLeft, borderRight, borderTop, borderBottom; -module.exports = function(prop) { - if (prop[0] === '-') { - return !!_validCSSProps[prop.replace(vendorPrefixRegEx, '')]; - } - return !!_validCSSProps[prop]; -}; + var hBorder = (this.props.width + "px solid transparent"); + if (this.props.horizontalDirection === "right") { + borderLeft = hBorder; + } else { + borderRight = hBorder; + } -},{}],48:[function(require,module,exports){ -var every = require('lodash.every'); + var vBorder = (this.props.height + "px solid " + this.props.color); + if (this.props.verticalDirection === "top") { + borderTop = vBorder; + } else { + borderBottom = vBorder; + } -function isValidRatio(ratio) { - var re = /\d+\/\d+/; - return !!ratio.match(re); -} + return React.DOM.div( {style:{ + display: "block", + height: 0, + width: 0, + position: "absolute", + left: this.props.left, + "top": this.props["top"], + borderLeft: borderLeft, + borderRight: borderRight, + borderTop: borderTop, + borderBottom: borderBottom + }} ); + } +}); -function isValidInteger(integer) { - var re = /\d+/; - return !!integer.match(re); -} +var TooltipArrow = React.createClass({displayName: 'TooltipArrow', + propTypes: { + position: React.PropTypes.string, + visibility: React.PropTypes.string, + left: React.PropTypes.number, + "top": React.PropTypes.number, + color: React.PropTypes.string.isRequired, // a css color + border: React.PropTypes.string.isRequired, // a css color + width: React.PropTypes.number.isRequired, + height: React.PropTypes.number.isRequired, + horizontalDirection: React.PropTypes.oneOf( + ["left", "right"] + ).isRequired, + verticalDirection: React.PropTypes.oneOf( + ["top", "bottom"] + ).isRequired + }, -function isValidLength(length) { - var re = /\d+(?:ex|em|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc)?$/; - return !!length.match(re); -} + getDefaultProps: function() { + return { + position: "relative", + visibility: "visible", + left: 0, + "top": 0 + }; + }, -function isValidOrientation(orientation) { - return orientation === 'landscape' || orientation === 'portrait'; -} + // TODO(jack): Think about adding a box-shadow to the triangle here + // See http://css-tricks.com/triangle-with-shadow/ + render: function() { + var isRight = (this.props.horizontalDirection === "right"); + var isTop = (this.props.verticalDirection === "top"); -function isValidScan(scan) { - return scan === 'progressive' || scan === 'interlace'; -} + var frontTopOffset = isTop ? 0 : 1; + var borderTopOffset = isTop ? 0 : -1; -function isValidResolution(resolution) { - var re = /(?:\+|-)?(?:\d+|\d*\.\d+)(?:e\d+)?(?:dpi|dpcm|dppx)$/; - return !!resolution.match(re); -} + return React.DOM.div( {style:{ + display: "block", + position: this.props.position, + visibility: this.props.visibility, + left: this.props.left, + "top": this.props["top"], + width: this.props.width + 2, + height: this.props.height + 1, + marginTop: -1, + marginBottom: -2, + zIndex: zIndex + }}, + /* The background triangle used to create the effect of a + border around the foreground triangle*/ + Triangle( + {horizontalDirection:this.props.horizontalDirection, + verticalDirection:this.props.verticalDirection, + color:this.props.border, + left:0, + top:borderTopOffset, + width:this.props.width + 2, // one extra for the diagonal + height:this.props.height + 2} ), + /* The foreground triangle covers all but the left/right edges + of the background triangle */ + Triangle( + {horizontalDirection:this.props.horizontalDirection, + verticalDirection:this.props.verticalDirection, + color:this.props.color, + left:1, + top:frontTopOffset, + width:this.props.width, + height:this.props.height} ) + ); + } +}); -function isValidValue(value) { - return value != null && typeof value !== 'boolean' && value !== ''; -} +var VERTICAL_CORNERS = { + "top": { + "top": "-100%" + }, + bottom: { + "top": 0 + } +}; -var _mediaFeatureValidator = { - 'width': isValidLength, - 'min-width': isValidLength, - 'max-width': isValidLength, - 'height': isValidLength, - 'min-height': isValidLength, - 'max-height': isValidLength, - 'device-width': isValidLength, - 'min-device-width': isValidLength, - 'max-device-width': isValidLength, - 'device-height': isValidLength, - 'min-device-height': isValidLength, - 'max-device-height': isValidLength, - 'aspect-ratio': isValidRatio, - 'min-aspect-ratio': isValidRatio, - 'max-aspect-ratio': isValidRatio, - 'device-aspect-ratio': isValidRatio, - 'min-device-aspect-ratio': isValidRatio, - 'max-device-aspect-ratio': isValidRatio, - 'color': isValidValue, - 'min-color': isValidValue, - 'max-color': isValidValue, - 'color-index': isValidInteger, - 'min-color-index': isValidInteger, - 'max-color-index': isValidInteger, - 'monochrome': isValidInteger, - 'min-monochrome': isValidInteger, - 'max-monochrome': isValidInteger, - 'resolution': isValidResolution, - 'min-resolution': isValidResolution, - 'max-resolution': isValidResolution, - 'scan': isValidScan, - 'grid': isValidInteger, - 'orientation': isValidOrientation +var HORIZONTAL_CORNERS = { + left: { + targetLeft: 0, + }, + + right: { + targetLeft: "100%", + } }; -var _validMediaFeatures = { - 'width': true, - 'min-width': true, - 'max-width': true, - 'height': true, - 'min-height': true, - 'max-height': true, - 'device-width': true, - 'min-device-width': true, - 'max-device-width': true, - 'device-height': true, - 'min-device-height': true, - 'max-device-height': true, - 'aspect-ratio': true, - 'min-aspect-ratio': true, - 'max-aspect-ratio': true, - 'device-aspect-ratio': true, - 'min-device-aspect-ratio': true, - 'max-device-aspect-ratio': true, - 'color': true, - 'min-color': true, - 'max-color': true, - 'color-index': true, - 'min-color-index': true, - 'max-color-index': true, - 'monochrome': true, - 'min-monochrome': true, - 'max-monochrome': true, - 'resolution': true, - 'min-resolution': true, - 'max-resolution': true, - 'scan': true, - 'grid': true, - 'orientation': true +var HORIZONTAL_ALIGNMNENTS = { + left: { + tooltipLeft: 0, + arrowLeft: function(arrowSize) {return 0;} + }, + right: { + tooltipLeft: "-100%", + arrowLeft: function(arrowSize) {return -arrowSize - 2;} + } }; -var _validMediaTypes = { - 'all': true, - 'aural': true, - 'braille': true, - 'handheld': true, - 'print': true, - 'projection': true, - 'screen': true, - 'tty': true, - 'tv': true, - 'embossed': true -}; -var _validQualifiers = { - 'not': true, - 'only': true -}; +var Tooltip = React.createClass({displayName: 'Tooltip', + propTypes: { + show: React.PropTypes.bool.isRequired, + className: React.PropTypes.string, + arrowSize: React.PropTypes.number, + borderColor: React.PropTypes.string, + verticalPosition: React.PropTypes.oneOf( + _.keys(VERTICAL_CORNERS) + ), + horizontalPosition: React.PropTypes.oneOf( + _.keys(HORIZONTAL_CORNERS) + ), + horizontalAlign: React.PropTypes.oneOf( + _.keys(HORIZONTAL_ALIGNMNENTS) + ), + children: React.PropTypes.arrayOf( + React.PropTypes.component + ).isRequired + }, + + getDefaultProps: function() { + return { + className: "", + arrowSize: 10, + borderColor: "#ccc", + verticalPosition: "bottom", + horizontalPosition: "left", + horizontalAlign: "left" + }; + }, + + getInitialState: function() { + return { + height: null // used for offsetting "top" positioned tooltips + }; + }, + + componentWillReceiveProps: function() { + // If the contents have changed, reset our measure of the height + this.setState({height: null}); + }, -function isValidFeature(feature) { - return !!_validMediaFeatures[feature]; -} + render: function() { + var isTooltipAbove = this.props.verticalPosition === "top"; -function isValidQualifier(qualifier) { - return !!_validQualifiers[qualifier]; -} + /* We wrap the entire output in a span so that it displays inline */ + return React.DOM.span(null, + isTooltipAbove && this._renderToolTipDiv(isTooltipAbove), -function isValidMediaType(mediaType) { - return !!_validMediaTypes[mediaType]; -} + /* We wrap our input in a div so that we can put the tooltip in a + div above/below it */ + React.DOM.div(null, + _.first(this.props.children) + ), -function isValidQualifiedMediaType(mediaType) { - var terms = mediaType.trim().split(/\s+/); - switch (terms.length) { - case 1: - return isValidMediaType(terms[0]); - case 2: - return isValidQualifier(terms[0]) && isValidMediaType(terms[1]); - default: - return false; - } -} + !isTooltipAbove && this._renderToolTipDiv() + ); + }, -function isValidExpression(expression) { - if (expression.length < 2) { - return false; - } + _renderToolTipDiv: function(isTooltipAbove) { + var settings = _.extend({}, + HORIZONTAL_CORNERS[this.props.horizontalPosition], + HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], + VERTICAL_CORNERS[this.props.verticalPosition] + ); - // Parentheses are required around expressions - if (expression[0] !== '(' || expression[expression.length - 1] !== ')') { - return false; - } + var arrowAbove; + var arrowBelow; - // Remove parentheses and spacess - expression = expression.substring(1, expression.length - 1); + if (isTooltipAbove) { + // We put an absolutely positioned arrow in the correct place + arrowAbove = TooltipArrow( + {verticalDirection:"top", + horizontalDirection:this.props.horizontalAlign, + position:"absolute", + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-this.props.arrowSize + 2, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); - // Is there a value to accompany the media feature? - var featureAndValue = expression.split(/\s*:\s*/); - switch (featureAndValue.length) { - case 1: - var feature = featureAndValue[0].trim(); - return isValidFeature(feature); - case 2: - var feature = featureAndValue[0].trim(); - var value = featureAndValue[1].trim(); - return isValidFeature(feature) && - _mediaFeatureValidator[feature](value); - default: - return false; - } -} + // And we use a visibility: hidden arrow below to shift up the + // content by the correct amount + arrowBelow = TooltipArrow( + {verticalDirection:"top", + horizontalDirection:this.props.horizontalAlign, + visibility:"hidden", + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-1, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); + } else { + arrowAbove = TooltipArrow( + {verticalDirection:"bottom", + horizontalDirection:this.props.horizontalAlign, + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-1, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); -function isValidMediaQuery(query) { - var andSplitter = /\s+and\s+/; - var queryTerms = query.split(andSplitter); - return (isValidQualifiedMediaType(queryTerms[0]) || - isValidExpression(queryTerms[0])) && - every(queryTerms.slice(1), isValidExpression); -} + arrowBelow = null; + } -function isValidMediaQueryList(mediaQuery) { - mediaQuery = mediaQuery.toLowerCase(); + /* A positioned div below the input to be the parent for our + tooltip */ + return React.DOM.div( {style:{ + position: "relative", + height: 0, + display: this.props.show ? "block" : "none", + }}, + React.DOM.div( {ref:"tooltipContainer", className:"tooltipContainer", style:{ + position: "absolute", + // height must start out undefined, not null, so that + // we can measure the actual height with jquery. + // This is used to position the tooltip with top: -100% + // when in verticalPosition: "top" mode + height: this.state.height || undefined, + left: settings.targetLeft + }}, + arrowAbove, - if (mediaQuery.substring(0, 6) !== '@media') { - return false; + /* The contents of the tooltip */ + React.DOM.div( {className:this.props.className, + ref:"tooltipContent", + style:{ + position: "relative", + "top": settings["top"], + "left": settings.tooltipLeft, + border: "1px solid " + this.props.borderColor, + "-webkit-box-shadow": "0 1px 3px " + + this.props.borderColor, + "-moz-box-shadow": "0 1px 3px " + + this.props.borderColor, + boxShadow: "0 1px 3px " + + this.props.borderColor, + zIndex: zIndex - 1 + }}, + _.rest(this.props.children) + ), + + arrowBelow + ) + ); + }, + + componentDidMount: function() { + this._updateHeight(); + }, + + componentDidUpdate: function() { + this._updateHeight(); + }, + + _updateHeight: function() { + var height = this.refs.tooltipContainer.getDOMNode().offsetHeight; + if (height !== this.state.height) { + this.setState({height:height}); + } } +}); - var commaSplitter = /\s*,\s*/; - var queryList = mediaQuery.substring(7, mediaQuery.length) - .split(commaSplitter); - return every(queryList, isValidMediaQuery); -} +// Sorry. // Apology-Oriented-Programming +module.exports = Tooltip; -module.exports = isValidMediaQueryList +},{"react":117,"underscore":118}],117:[function(require,module,exports){ +/* This note applies to rcss, react, and underscore. + * + * We're faking a node module for this package by just exporting the global. + * There are a few complications which led us to this solution as a temporary + * fix. + * + * - Browserify can slow down a lot when you include the other packages (and + * their dependency graphs). We were also battling general browserify + * slowness at this time - browserify 3.4.0 is "good" but later versions + * (3.53 if I remember correctly) are terribly slow (on the order of 20x + * slower). + * + * - I'm not clear on the details of packaging this so we don't duplicate + * dependencies anywhere. For instance when packaging perseus for webapp we + * need to be careful not to include packages like underscore from our + * dependencies or from the packages we depend on. (note: this is a very good + * opportunity to either explain how existing tools solve the problem or + * create a new tool to solve it) + * + * - Joel (and Jack) + */ +module.exports = window.React; + +},{}],118:[function(require,module,exports){ +/* This note applies to rcss, react, and underscore. + * + * We're faking a node module for this package by just exporting the global. + * There are a few complications which led us to this solution as a temporary + * fix. + * + * - Browserify can slow down a lot when you include the other packages (and + * their dependency graphs). We were also battling general browserify + * slowness at this time - browserify 3.4.0 is "good" but later versions + * (3.53 if I remember correctly) are terribly slow (on the order of 20x + * slower). + * + * - I'm not clear on the details of packaging this so we don't duplicate + * dependencies anywhere. For instance when packaging perseus for webapp we + * need to be careful not to include packages like underscore from our + * dependencies or from the packages we depend on. (note: this is a very good + * opportunity to either explain how existing tools solve the problem or + * create a new tool to solve it) + * + * - Joel (and Jack) + */ +module.exports = window._; -},{"lodash.every":26}],49:[function(require,module,exports){ +},{}],119:[function(require,module,exports){ var Widgets = require("./widgets.js"); _.each([ @@ -3710,7 +3850,7 @@ _.each([ Widgets.register(widget.name, _.omit(widget, "name")); }); -},{"./widgets.js":103,"./widgets/categorizer.jsx":104,"./widgets/dropdown.jsx":105,"./widgets/example-graphie-widget.jsx":106,"./widgets/example-widget.jsx":107,"./widgets/expression.jsx":108,"./widgets/iframe.jsx":109,"./widgets/image.jsx":110,"./widgets/input-number.jsx":111,"./widgets/interactive-graph.jsx":112,"./widgets/interactive-number-line.jsx":113,"./widgets/lights-puzzle.jsx":114,"./widgets/matcher.jsx":115,"./widgets/measurer.jsx":116,"./widgets/number-line.jsx":117,"./widgets/numeric-input.jsx":118,"./widgets/orderer.jsx":119,"./widgets/plotter.jsx":120,"./widgets/radio.jsx":121,"./widgets/sorter.jsx":122,"./widgets/speaking-text-input.jsx":123,"./widgets/speaking-voice.jsx":124,"./widgets/table.jsx":125,"./widgets/transformer.jsx":126}],50:[function(require,module,exports){ +},{"./widgets.js":173,"./widgets/categorizer.jsx":174,"./widgets/dropdown.jsx":175,"./widgets/example-graphie-widget.jsx":176,"./widgets/example-widget.jsx":177,"./widgets/expression.jsx":178,"./widgets/iframe.jsx":179,"./widgets/image.jsx":180,"./widgets/input-number.jsx":181,"./widgets/interactive-graph.jsx":182,"./widgets/interactive-number-line.jsx":183,"./widgets/lights-puzzle.jsx":184,"./widgets/matcher.jsx":185,"./widgets/measurer.jsx":186,"./widgets/number-line.jsx":187,"./widgets/numeric-input.jsx":188,"./widgets/orderer.jsx":189,"./widgets/plotter.jsx":190,"./widgets/radio.jsx":191,"./widgets/sorter.jsx":192,"./widgets/speaking-text-input.jsx":193,"./widgets/speaking-voice.jsx":194,"./widgets/table.jsx":195,"./widgets/transformer.jsx":196}],120:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -3781,7 +3921,7 @@ var AnswerAreaEditor = React.createClass({displayName: 'AnswerAreaEditor', module.exports = AnswerAreaEditor; -},{"./editor.jsx":75,"./widgets.js":103,"react":45,"react-components/info-tip":39}],51:[function(require,module,exports){ +},{"./editor.jsx":145,"./widgets.js":173,"react":117,"react-components/info-tip":7}],121:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -4136,7 +4276,7 @@ var AnswerAreaRenderer = React.createClass({displayName: 'AnswerAreaRenderer', module.exports = AnswerAreaRenderer; -},{"./enabled-features.jsx":76,"./perseus-api.jsx":94,"./question-paragraph.jsx":96,"./renderer.jsx":97,"./util.js":100,"./widget-container.jsx":102,"./widgets.js":103,"react":45}],52:[function(require,module,exports){ +},{"./enabled-features.jsx":146,"./perseus-api.jsx":164,"./question-paragraph.jsx":166,"./renderer.jsx":167,"./util.js":170,"./widget-container.jsx":172,"./widgets.js":173,"react":117}],122:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -4324,7 +4464,7 @@ FancySelect.Option = FancyOption; module.exports = FancySelect; -},{"react":45}],53:[function(require,module,exports){ +},{"react":117}],123:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -4767,7 +4907,7 @@ var GraphSettings = React.createClass({displayName: 'GraphSettings', module.exports = GraphSettings; -},{"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../components/range-input.jsx":63,"../mixins/changeable.jsx":91,"../util.js":100,"react":45,"react-components/blur-input":36,"react-components/button-group":37,"react-components/info-tip":39}],54:[function(require,module,exports){ +},{"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../components/range-input.jsx":133,"../mixins/changeable.jsx":161,"../util.js":170,"react":117,"react-components/blur-input":4,"react-components/button-group":5,"react-components/info-tip":7}],124:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -5106,7 +5246,7 @@ var Graph = React.createClass({displayName: 'Graph', module.exports = Graph; -},{"../util.js":100,"react":45}],55:[function(require,module,exports){ +},{"../util.js":170,"react":117}],125:[function(require,module,exports){ /** @jsx React.DOM */var Util = require("../util.js"); var nestedMap = Util.nestedMap; var deepEq = Util.deepEq; @@ -5237,7 +5377,7 @@ module.exports = { createSimpleClass: createSimpleClass }; -},{"../util.js":100}],56:[function(require,module,exports){ +},{"../util.js":170}],126:[function(require,module,exports){ /** @jsx React.DOM */var GraphieClasses = require("./graphie-classes.jsx"); var Interactive2 = require("../interactive2.js"); var InteractiveUtil = require("../interactive2/interactive-util.js"); @@ -5288,7 +5428,7 @@ module.exports = { MovablePoint: MovablePoint }; -},{"../interactive2.js":80,"../interactive2/interactive-util.js":81,"./graphie-classes.jsx":55}],57:[function(require,module,exports){ +},{"../interactive2.js":150,"../interactive2/interactive-util.js":151,"./graphie-classes.jsx":125}],127:[function(require,module,exports){ /** @jsx React.DOM */ var GraphieClasses = require("./graphie-classes.jsx"); @@ -5568,7 +5708,7 @@ _.extend(Graphie, Movables); module.exports = Graphie; -},{"../interactive2/interactive-util.js":81,"../util.js":100,"./graphie-classes.jsx":55,"./graphie-movables.jsx":56}],58:[function(require,module,exports){ +},{"../interactive2/interactive-util.js":151,"../util.js":170,"./graphie-classes.jsx":125,"./graphie-movables.jsx":126}],128:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -5728,7 +5868,7 @@ var InputWithExamples = React.createClass({displayName: 'InputWithExamples', module.exports = InputWithExamples; -},{"../perseus-api.jsx":94,"../renderer.jsx":97,"../util.js":100,"./math-input.jsx":59,"./text-input.jsx":66,"react":45,"react-components/tooltip":44}],59:[function(require,module,exports){ +},{"../perseus-api.jsx":164,"../renderer.jsx":167,"../util.js":170,"./math-input.jsx":129,"./text-input.jsx":136,"react":117,"react-components/tooltip":116}],129:[function(require,module,exports){ /** @jsx React.DOM */ // TODO(alex): Package MathQuill @@ -5969,7 +6109,7 @@ var MathInput = React.createClass({displayName: 'MathInput', module.exports = MathInput; -},{"./tex-buttons.jsx":65,"react":45,"underscore":46}],60:[function(require,module,exports){ +},{"./tex-buttons.jsx":135,"react":117,"underscore":118}],130:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6041,7 +6181,7 @@ var MultiButtonGroup = React.createClass({displayName: 'MultiButtonGroup', module.exports = MultiButtonGroup; -},{"react":45}],61:[function(require,module,exports){ +},{"react":117}],131:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6220,7 +6360,7 @@ var NumberInput = React.createClass({displayName: 'NumberInput', module.exports = NumberInput; -},{"../util.js":100,"react":45}],62:[function(require,module,exports){ +},{"../util.js":170,"react":117}],132:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6282,7 +6422,7 @@ var PropCheckBox = React.createClass({displayName: 'PropCheckBox', module.exports = PropCheckBox; -},{"react":45}],63:[function(require,module,exports){ +},{"react":117}],133:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6341,7 +6481,7 @@ var RangeInput = React.createClass({displayName: 'RangeInput', module.exports = RangeInput; -},{"../components/number-input.jsx":61,"react":45}],64:[function(require,module,exports){ +},{"../components/number-input.jsx":131,"react":117}],134:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6858,7 +6998,7 @@ var Sortable = React.createClass({displayName: 'Sortable', module.exports = Sortable; -},{"../renderer.jsx":97,"../util.js":100,"react":45}],65:[function(require,module,exports){ +},{"../renderer.jsx":167,"../util.js":170,"react":117}],135:[function(require,module,exports){ /** @jsx React.DOM */ var React = require("react"); @@ -6993,7 +7133,7 @@ var TexButtons = React.createClass({displayName: 'TexButtons', module.exports = TexButtons; -},{"react":45,"react-components/tex":43}],66:[function(require,module,exports){ +},{"react":117,"react-components/tex":115}],136:[function(require,module,exports){ /** @jsx React.DOM */ var TextInput = React.createClass({displayName: 'TextInput', @@ -7025,7 +7165,7 @@ var TextInput = React.createClass({displayName: 'TextInput', module.exports = TextInput; -},{}],67:[function(require,module,exports){ +},{}],137:[function(require,module,exports){ /** @jsx React.DOM */ var textWidthCache = {}; @@ -7155,7 +7295,7 @@ var TextListEditor = React.createClass({displayName: 'TextListEditor', module.exports = TextListEditor; -},{}],68:[function(require,module,exports){ +},{}],138:[function(require,module,exports){ /** @jsx React.DOM */ // Responsible for combining the text diffs from text-diff and the widget @@ -7270,7 +7410,7 @@ var RevisionDiff = React.createClass({displayName: 'RevisionDiff', module.exports = RevisionDiff; -},{"./text-diff.jsx":71,"./widget-diff.jsx":73}],69:[function(require,module,exports){ +},{"./text-diff.jsx":141,"./widget-diff.jsx":143}],139:[function(require,module,exports){ /** @jsx React.DOM */// Split a word-wise diff generated by jsdiff into multiple lines, for the // purpose of breaking up the diffs into lines, so that modified lines can be // faintly highlighted @@ -7300,7 +7440,7 @@ var splitDiff = function(diffEntries) { module.exports = splitDiff; -},{}],70:[function(require,module,exports){ +},{}],140:[function(require,module,exports){ /** @jsx React.DOM */var jsdiff = require("../../lib/jsdiff"); var statusFor = function(chunk) { @@ -7370,7 +7510,7 @@ var stringArrayDiff = function(a, b) { module.exports = stringArrayDiff; -},{"../../lib/jsdiff":1}],71:[function(require,module,exports){ +},{"../../lib/jsdiff":1}],141:[function(require,module,exports){ /** @jsx React.DOM */ var diff = require("../../lib/jsdiff"); @@ -7535,7 +7675,7 @@ var TextDiff = React.createClass({displayName: 'TextDiff', module.exports = TextDiff; -},{"../../lib/jsdiff":1,"./split-diff.jsx":69,"./string-array-diff.jsx":70}],72:[function(require,module,exports){ +},{"../../lib/jsdiff":1,"./split-diff.jsx":139,"./string-array-diff.jsx":140}],142:[function(require,module,exports){ /** @jsx React.DOM */var UNCHANGED = "unchanged"; var CHANGED = "changed"; var ADDED = "added"; @@ -7605,7 +7745,7 @@ var performDiff = function(before, after, /* optional */ key) { module.exports = performDiff; -},{}],73:[function(require,module,exports){ +},{}],143:[function(require,module,exports){ /** @jsx React.DOM */ var cx = React.addons.classSet; @@ -7801,7 +7941,7 @@ var WidgetDiff = React.createClass({displayName: 'WidgetDiff', module.exports = WidgetDiff; -},{"./widget-diff-performer.jsx":72}],74:[function(require,module,exports){ +},{"./widget-diff-performer.jsx":142}],144:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8085,7 +8225,7 @@ var EditorPage = React.createClass({displayName: 'EditorPage', module.exports = EditorPage; -},{"./components/prop-check-box.jsx":62,"./enabled-features.jsx":76,"./hint-editor.jsx":77,"./item-editor.jsx":89,"./item-renderer.jsx":90,"./perseus-api.jsx":94,"react":45}],75:[function(require,module,exports){ +},{"./components/prop-check-box.jsx":132,"./enabled-features.jsx":146,"./hint-editor.jsx":147,"./item-editor.jsx":159,"./item-renderer.jsx":160,"./perseus-api.jsx":164,"react":117}],145:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8687,7 +8827,7 @@ var Editor = React.createClass({displayName: 'Editor', module.exports = Editor; -},{"./components/prop-check-box.jsx":62,"./util.js":100,"./widgets.js":103,"react":45,"react-components/drag-target":38}],76:[function(require,module,exports){ +},{"./components/prop-check-box.jsx":132,"./util.js":170,"./widgets.js":173,"react":117,"react-components/drag-target":6}],146:[function(require,module,exports){ /** @jsx React.DOM */var React = require('react'); module.exports = { @@ -8703,7 +8843,7 @@ module.exports = { } }; -},{"react":45}],77:[function(require,module,exports){ +},{"react":117}],147:[function(require,module,exports){ /** @jsx React.DOM */ /* Collection of classes for rendering the hint editor area, @@ -8919,7 +9059,7 @@ var CombinedHintsEditor = React.createClass({displayName: 'CombinedHintsEditor', module.exports = CombinedHintsEditor; -},{"./editor.jsx":75,"./hint-renderer.jsx":78,"react":45,"react-components/info-tip":39}],78:[function(require,module,exports){ +},{"./editor.jsx":145,"./hint-renderer.jsx":148,"react":117,"react-components/info-tip":7}],148:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8947,7 +9087,7 @@ var HintRenderer = React.createClass({displayName: 'HintRenderer', module.exports = HintRenderer; -},{"./renderer.jsx":97,"react":45}],79:[function(require,module,exports){ +},{"./renderer.jsx":167,"react":117}],149:[function(require,module,exports){ var React = require('react'); var init = function(options) { @@ -8988,7 +9128,7 @@ var init = function(options) { module.exports = init; -},{"react":45}],80:[function(require,module,exports){ +},{"react":117}],150:[function(require,module,exports){ var Movable = require("./interactive2/movable.js"); var MovablePoint = require("./interactive2/movable-point.js"); var MovableLine = require("./interactive2/movable-line.js"); @@ -9008,7 +9148,7 @@ var Interactive2 = { module.exports = Interactive2; -},{"./interactive2/movable-line.js":84,"./interactive2/movable-point.js":86,"./interactive2/movable.js":87}],81:[function(require,module,exports){ +},{"./interactive2/movable-line.js":154,"./interactive2/movable-point.js":156,"./interactive2/movable.js":157}],151:[function(require,module,exports){ /** * Utility functions for writing Interactive2 movablethings */ @@ -9086,7 +9226,7 @@ var InteractiveUtil = { module.exports = InteractiveUtil; -},{"./movable-helper-methods.js":82}],82:[function(require,module,exports){ +},{"./movable-helper-methods.js":152}],152:[function(require,module,exports){ /** * MovableThing convenience methods * @@ -9189,7 +9329,7 @@ var MovableHelperMethods = { module.exports = MovableHelperMethods; -},{}],83:[function(require,module,exports){ +},{}],153:[function(require,module,exports){ /** * A library of options to pass to add/draw/remove/constraints */ @@ -9472,7 +9612,7 @@ module.exports = { onMoveEnd: {standard: null}, }; -},{}],84:[function(require,module,exports){ +},{}],154:[function(require,module,exports){ /** * MovableLine */ @@ -9756,7 +9896,7 @@ _.extend(MovableLine.prototype, { module.exports = MovableLine; -},{"./interactive-util.js":81,"./movable-line-options.js":83,"./objective_.js":88}],85:[function(require,module,exports){ +},{"./interactive-util.js":151,"./movable-line-options.js":153,"./objective_.js":158}],155:[function(require,module,exports){ /** * A library of options to pass to add/draw/remove/constraints */ @@ -9901,7 +10041,7 @@ module.exports = { onClick: {standard: null} }; -},{}],86:[function(require,module,exports){ +},{}],156:[function(require,module,exports){ /** * Creates and adds a point to the graph that can be dragged around. * It allows constraints on its movement and draws when moves happen. @@ -10234,7 +10374,7 @@ _.extend(MovablePoint.prototype, { module.exports = MovablePoint; -},{"./interactive-util.js":81,"./movable-point-options.js":85,"./objective_.js":88}],87:[function(require,module,exports){ +},{"./interactive-util.js":151,"./movable-point-options.js":155,"./objective_.js":158}],157:[function(require,module,exports){ /** * Movable * @@ -10499,7 +10639,7 @@ _.extend(Movable.prototype, { module.exports = Movable; -},{"./interactive-util.js":81}],88:[function(require,module,exports){ +},{"./interactive-util.js":151}],158:[function(require,module,exports){ /** * A work-in-progress of _ methods for objects. * That is, they take an object as a parameter, @@ -10528,7 +10668,7 @@ var pluck = exports.pluck = function(table, subKey) { })); }; -},{}],89:[function(require,module,exports){ +},{}],159:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -10638,7 +10778,7 @@ var ItemEditor = React.createClass({displayName: 'ItemEditor', module.exports = ItemEditor; -},{"./answer-area-editor.jsx":50,"./editor.jsx":75,"./version.json":101,"react":45}],90:[function(require,module,exports){ +},{"./answer-area-editor.jsx":120,"./editor.jsx":145,"./version.json":171,"react":117}],160:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -10958,7 +11098,7 @@ var ItemRenderer = React.createClass({displayName: 'ItemRenderer', module.exports = ItemRenderer; -},{"./answer-area-renderer.jsx":51,"./enabled-features.jsx":76,"./hint-renderer.jsx":78,"./perseus-api.jsx":94,"./renderer.jsx":97,"./util.js":100,"react":45}],91:[function(require,module,exports){ +},{"./answer-area-renderer.jsx":121,"./enabled-features.jsx":146,"./hint-renderer.jsx":148,"./perseus-api.jsx":164,"./renderer.jsx":167,"./util.js":170,"react":117}],161:[function(require,module,exports){ /** @jsx React.DOM */ /** * Changeable @@ -11059,7 +11199,7 @@ var Changeable = { module.exports = Changeable; -},{"./widget-prop-blacklist.jsx":93}],92:[function(require,module,exports){ +},{"./widget-prop-blacklist.jsx":163}],162:[function(require,module,exports){ /** @jsx React.DOM */var WIDGET_PROP_BLACKLIST = require("./widget-prop-blacklist.jsx"); var JsonifyProps = { @@ -11071,7 +11211,7 @@ var JsonifyProps = { module.exports = JsonifyProps; -},{"./widget-prop-blacklist.jsx":93}],93:[function(require,module,exports){ +},{"./widget-prop-blacklist.jsx":163}],163:[function(require,module,exports){ /** @jsx React.DOM */module.exports = [ // standard props "added" by react // (technically the renderer still adds them) @@ -11085,7 +11225,7 @@ module.exports = JsonifyProps; "apiOptions" ]; -},{}],94:[function(require,module,exports){ +},{}],164:[function(require,module,exports){ /** @jsx React.DOM *//** * [Most of] the Perseus client API. * @@ -11144,7 +11284,7 @@ module.exports = { }; -},{}],95:[function(require,module,exports){ +},{}],165:[function(require,module,exports){ require("./all-widgets.js"); var version = require("./version.json"); @@ -11164,7 +11304,7 @@ module.exports = { Util: require("./util.js") }; -},{"./all-widgets.js":49,"./answer-area-renderer.jsx":51,"./diffs/revision-diff.jsx":68,"./editor-page.jsx":74,"./editor.jsx":75,"./init.js":79,"./item-renderer.jsx":90,"./perseus-api.jsx":94,"./renderer.jsx":97,"./stateful-editor-page.jsx":98,"./util.js":100,"./version.json":101}],96:[function(require,module,exports){ +},{"./all-widgets.js":119,"./answer-area-renderer.jsx":121,"./diffs/revision-diff.jsx":138,"./editor-page.jsx":144,"./editor.jsx":145,"./init.js":149,"./item-renderer.jsx":160,"./perseus-api.jsx":164,"./renderer.jsx":167,"./stateful-editor-page.jsx":168,"./util.js":170,"./version.json":171}],166:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11180,7 +11320,7 @@ var QuestionParagraph = React.createClass({displayName: 'QuestionParagraph', module.exports = QuestionParagraph; -},{"react":45}],97:[function(require,module,exports){ +},{"react":117}],167:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11815,7 +11955,7 @@ function extractMathAndWidgets(text) { module.exports = Renderer; -},{"./enabled-features.jsx":76,"./perseus-api.jsx":94,"./question-paragraph.jsx":96,"./tex.jsx":99,"./util.js":100,"./widget-container.jsx":102,"./widgets.js":103,"react":45}],98:[function(require,module,exports){ +},{"./enabled-features.jsx":146,"./perseus-api.jsx":164,"./question-paragraph.jsx":166,"./tex.jsx":169,"./util.js":170,"./widget-container.jsx":172,"./widgets.js":173,"react":117}],168:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11858,7 +11998,7 @@ var StatefulEditorPage = React.createClass({displayName: 'StatefulEditorPage', module.exports = StatefulEditorPage; -},{"./editor-page.jsx":74,"react":45}],99:[function(require,module,exports){ +},{"./editor-page.jsx":144,"react":117}],169:[function(require,module,exports){ /** @jsx React.DOM */ /** * For math rendered using MathJax. Use me like 2x + 3. @@ -12011,7 +12151,7 @@ var TeX = React.createClass({displayName: 'TeX', module.exports = TeX; -},{"react":45}],100:[function(require,module,exports){ +},{"react":117}],170:[function(require,module,exports){ var nestedMap = function(children, func, context) { if (_.isArray(children)) { return _.map(children, function(child) { @@ -12567,7 +12707,7 @@ Util.random = Util.seededRNG(new Date().getTime() & 0xffffffff); module.exports = Util; -},{}],101:[function(require,module,exports){ +},{}],171:[function(require,module,exports){ module.exports={ "apiVersion": { "major": 1, @@ -12579,7 +12719,7 @@ module.exports={ } } -},{}],102:[function(require,module,exports){ +},{}],172:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -12618,7 +12758,7 @@ var WidgetContainer = React.createClass({displayName: 'WidgetContainer', module.exports = WidgetContainer; -},{"react":45}],103:[function(require,module,exports){ +},{"react":117}],173:[function(require,module,exports){ var widgets = {}; var Widgets = { @@ -12758,7 +12898,7 @@ var Widgets = { module.exports = Widgets; -},{}],104:[function(require,module,exports){ +},{}],174:[function(require,module,exports){ /** @jsx React.DOM */ var Changeable = require("../mixins/changeable.jsx"); @@ -12944,7 +13084,7 @@ module.exports = { }; -},{"../components/text-list-editor.jsx":67,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../renderer.jsx":97,"../util.js":100}],105:[function(require,module,exports){ +},{"../components/text-list-editor.jsx":137,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../renderer.jsx":167,"../util.js":170}],175:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -13202,7 +13342,7 @@ module.exports = { hidden: false }; -},{"../components/fancy-select.jsx":52,"../mixins/jsonify-props.jsx":92,"../perseus-api.jsx":94,"../util.js":100,"react":45,"react-components/info-tip":39}],106:[function(require,module,exports){ +},{"../components/fancy-select.jsx":122,"../mixins/jsonify-props.jsx":162,"../perseus-api.jsx":164,"../util.js":170,"react":117,"react-components/info-tip":7}],176:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -13397,7 +13537,7 @@ module.exports = { editor: ExampleGraphieWidgetEditor }; -},{"../components/graphie.jsx":57,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45}],107:[function(require,module,exports){ +},{"../components/graphie.jsx":127,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117}],177:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -13581,7 +13721,7 @@ module.exports = { editor: ExampleWidgetEditor }; -},{"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45}],108:[function(require,module,exports){ +},{"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117}],178:[function(require,module,exports){ /** @jsx React.DOM */ var React = require("react"); @@ -13608,7 +13748,7 @@ var ERROR_MESSAGE = $._("Sorry, I don't understand that!"); // The new, MathQuill input expression widget var Expression = React.createClass({displayName: 'Expression', - mixins: [Changeable, JsonifyProps], + mixins: [Changeable], propTypes: { value: React.PropTypes.string, @@ -13792,6 +13932,10 @@ var Expression = React.createClass({displayName: 'Expression', return Expression.validate(this.toJSON(), rubric, onInputError); }, + toJSON: function(skipValidation) { + return {value: this.props.value}; + }, + statics: { displayMode: "inline-block" } @@ -14070,7 +14214,7 @@ module.exports = { hidden: false }; -},{"../components/input-with-examples.jsx":58,"../components/math-input.jsx":59,"../components/prop-check-box.jsx":62,"../components/tex-buttons.jsx":65,"../enabled-features.jsx":76,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../perseus-api.jsx":94,"../tex.jsx":99,"../util.js":100,"react":45,"react-components/info-tip":39,"react-components/tooltip":44}],109:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":128,"../components/math-input.jsx":129,"../components/prop-check-box.jsx":132,"../components/tex-buttons.jsx":135,"../enabled-features.jsx":146,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../perseus-api.jsx":164,"../tex.jsx":169,"../util.js":170,"react":117,"react-components/info-tip":7,"react-components/tooltip":116}],179:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -14322,7 +14466,7 @@ module.exports = { editor: IframeEditor }; -},{"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45,"react-components/blur-input":36}],110:[function(require,module,exports){ +},{"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117,"react-components/blur-input":4}],180:[function(require,module,exports){ /** @jsx React.DOM */ var BlurInput = require("react-components/blur-input"); @@ -14657,7 +14801,7 @@ module.exports = { }; -},{"../components/graphie.jsx":57,"../components/range-input.jsx":63,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react-components/blur-input":36,"react-components/info-tip":39}],111:[function(require,module,exports){ +},{"../components/graphie.jsx":127,"../components/range-input.jsx":133,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react-components/blur-input":4,"react-components/info-tip":7}],181:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -14978,7 +15122,7 @@ module.exports = { transform: propTransform }; -},{"../components/input-with-examples.jsx":58,"../enabled-features.jsx":76,"../perseus-api.jsx":94,"../renderer.jsx":97,"../tex.jsx":99,"../util.js":100,"react":45,"react-components/blur-input":36,"react-components/info-tip":39}],112:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":128,"../enabled-features.jsx":146,"../perseus-api.jsx":164,"../renderer.jsx":167,"../tex.jsx":169,"../util.js":170,"react":117,"react-components/blur-input":4,"react-components/info-tip":7}],182:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -17476,455 +17620,455 @@ module.exports = { hidden: false }; -},{"../components/graph-settings.jsx":53,"../components/graph.jsx":54,"../components/number-input.jsx":61,"../interactive2.js":80,"../util.js":100,"react":45,"react-components/info-tip":39}],113:[function(require,module,exports){ -/** @jsx React.DOM */ - -var InfoTip = require("react-components/info-tip"); -var PropCheckBox = require("../components/prop-check-box.jsx"); -var Util = require("../util.js"); - -function eq(x, y) { - return Math.abs(x - y) < 1e-9; -} - -var reverseRel = { - ge: "le", - gt: "lt", - le: "ge", - lt: "gt" -}; - -var toggleStrictRel = { - ge: "gt", - gt: "ge", - le: "lt", - lt: "le" -}; - -function formatImproper(n, d) { - if (d === 1) { - return "" + n; - } else { - return n + "/" + d; - } -} - -function formatMixed(n, d) { - if (n < 0) { - return "-" + formatMixed(-n, d); - } - var w = Math.floor(n / d); - if (w === 0) { - return formatImproper(n, d); - } else if (n - w * d === 0) { - return "" + w; - } else { - return w + "\\:" + formatImproper(n - w * d, d); - } -} - -var InteractiveNumberLine = React.createClass({displayName: 'InteractiveNumberLine', - getDefaultProps: function() { - return { - labelStyle: "decimal", - labelTicks: false, - isInequality: false, - pointX: 0, - rel: "ge" - }; - }, - - isValid: function() { - return this.props.range[0] < this.props.range[1] && - 0 < this.props.tickStep && - 0 < this.props.snapDivisions; - }, - - render: function() { - var inequalityControls; - if (this.props.isInequality) { - inequalityControls = React.DOM.div(null, - React.DOM.input( {type:"button", value:"換方向", - onClick:this.handleReverse} ), - React.DOM.input( {type:"button", - value: - this.props.rel === "le" || this.props.rel === "ge" ? - "改為空心圓" : - "改為實心圓", - - onClick:this.handleToggleStrict} ) - ); - } - - var valid = this.isValid(); - return React.DOM.div( {className:"perseus-widget " + - "perseus-widget-interactive-number-line"}, - React.DOM.div( {style:{display: valid ? "" : "none"}, - className:"graphie above-scratchpad", ref:"graphieDiv"} ), - React.DOM.div( {style:{display: valid ? "none" : ""}}, - ' ',"invalid number line configuration",' ' - ), - inequalityControls - ); - }, - - handleReverse: function() { - this.props.onChange({rel: reverseRel[this.props.rel]}); - }, - - handleToggleStrict: function() { - this.props.onChange({rel: toggleStrictRel[this.props.rel]}); - }, - - componentDidMount: function() { - this.addGraphie(); - }, - - componentDidUpdate: function() { - // Use jQuery to remove so event handlers don't leak - var node = this.refs.graphieDiv.getDOMNode(); - $(node).children().remove(); - - this.addGraphie(); - }, - - _label: function(value) { - var graphie = this.graphie; - var labelStyle = this.props.labelStyle; - - // TODO(jack): Find out if any exercises have "decimal ticks" set, - // and if so, re-save them and remove this check. - if (labelStyle === "decimal" || labelStyle === "decimal ticks") { - graphie.label([value, -0.53], value, "center"); - } else if (labelStyle === "improper") { - var frac = KhanUtil.toFraction(value); - graphie.label([value, -0.53], - formatImproper(frac[0], frac[1]), "center"); - } else if (labelStyle === "mixed") { - var frac = KhanUtil.toFraction(value); - graphie.label([value, -0.53], - formatMixed(frac[0], frac[1]), "center"); - } - }, - - addGraphie: function() { - var self = this; - var graphie = this.graphie = KhanUtil.createGraphie( - this.refs.graphieDiv.getDOMNode()); - // Ensure a sane configuration to avoid infinite loops - if (!this.isValid()) { - return; - } - - var range = this.props.range; - var tickStep = this.props.tickStep; - var scale = 400 / (range[1] - range[0]); - - graphie.init({ - range: [[range[0] - 30 / scale, - range[1] + 30 / scale], - [-1, 1]], - scale: [scale, 40] - }); - graphie.addMouseLayer({ - allowScratchpad: true - }); - - // Line - - graphie.line([range[0] - (25 / scale), 0], - [range[1] + (25 / scale), 0], { - arrows: "->" - }); - graphie.line([range[1] + (25 / scale), 0], - [range[0] - (25 / scale), 0], { - arrows: "->" - }); - - // Ticks - var labelStyle = this.props.labelStyle; - for (var x = Math.ceil(range[0] / tickStep) * tickStep; x <= range[1]; - x += tickStep) { - graphie.line([x, -0.2], [x, 0.2]); - - // TODO(jack): Find out if any exercises have "decimal ticks" set, - // and if so, re-save them and remove this check. - if (this.props.labelTicks || labelStyle === "decimal ticks") { - this._label(x); - } - } - - graphie.style({ - stroke: KhanUtil.INTERACTIVE, - strokeWidth: 3.5 - }, function() { - graphie.line([range[0], -0.2], [range[0], 0.2]); - graphie.line([range[1], -0.2], [range[1], 0.2]); - if (range[0] < 0 && 0 < range[1]) { - graphie.line([0, -0.2], [0, 0.2]); - } - }); - - graphie.style({color: KhanUtil.INTERACTIVE}, function() { - self._label(range[0]); - self._label(range[1]); - if (range[0] < 0 && 0 < range[1] && !self.props.labelTicks) { - graphie.label([0, -0.53], "0", "center"); - } - }); - - // Point - - var isInequality = this.props.isInequality; - var rel = this.props.rel; - - var pointSize; - var pointStyle; - var highlightStyle; - if (isInequality && (rel === "lt" || rel === "gt")) { - pointSize = 5; - pointStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil._BACKGROUND, - "stroke-width": 3 - }; - highlightStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil._BACKGROUND, - "stroke-width": 4 - }; - } else { - pointSize = 4; - pointStyle = highlightStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil.INTERACTING - }; - } - - var x = Math.min(Math.max(range[0], this.props.pointX), range[1]); - var point = this.point = graphie.addMovablePoint({ - pointSize: pointSize, - coord: [x, 0], - snapX: this.props.tickStep / this.props.snapDivisions, - constraints: { - constrainY: true - }, - normalStyle: pointStyle, - highlightStyle: highlightStyle - }); - point.onMove = function(x, y) { - x = Math.min(Math.max(range[0], x), range[1]); - updateInequality(x, y); - return [x, y]; - }; - point.onMoveEnd = function(x, y) { - this.props.onChange({pointX: x}); - }.bind(this); - - // Inequality line - - var inequalityLine; - updateInequality(x, 0); - - function updateInequality(px, py) { - if (inequalityLine) { - inequalityLine.remove(); - inequalityLine = null; - } - if (isInequality) { - var end; - if (rel === "ge" || rel === "gt") { - end = [range[1] + (26 / scale), 0]; - } else { - end = [range[0] - (26 / scale), 0]; - } - inequalityLine = graphie.line( - [px, py], - end, - { - arrows: "->", - stroke: KhanUtil.INTERACTIVE, - strokeWidth: 3.5 - } - ); - point.toFront(); - } - } - }, - - toJSON: function() { - return { - pointX: this.props.pointX, - rel: this.props.isInequality ? this.props.rel : "eq" - }; - }, - - simpleValidate: function(rubric) { - return InteractiveNumberLine.validate(this.toJSON(), rubric); - }, - - focus: $.noop, - - statics: { - displayMode: "block" - } -}); - - -_.extend(InteractiveNumberLine, { - validate: function(state, rubric) { - var range = rubric.range; - var start = Math.min(Math.max(range[0], 0), range[1]); - var startRel = rubric.isInequality ? "ge" : "eq"; - var correctRel = rubric.correctRel || "eq"; - - if (eq(state.pointX, rubric.correctX || 0) && - correctRel === state.rel) { - return { - type: "points", - earned: 1, - total: 1, - message: null - }; - } else if (state.pointX === start && state.rel === startRel) { - // We're where we started. - return { - type: "invalid", - message: null - }; - } else { - return { - type: "points", - earned: 0, - total: 1, - message: null - }; - } - } -}); - - -var InteractiveNumberLineEditor = React.createClass({displayName: 'InteractiveNumberLineEditor', - getDefaultProps: function() { - return { - range: [0, 10], - labelStyle: "decimal", - labelTicks: false, - tickStep: 1, - snapDivisions: 4, - correctRel: "eq", - correctX: 0 - }; - }, - - render: function() { - return React.DOM.div(null, - React.DOM.label(null, - ' ',"最小 x: ", React.DOM.input( {defaultValue:'' + this.props.range[0], - onBlur:this.onRangeBlur.bind(this, 0)} ) - ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"最大 x: ", React.DOM.input( {defaultValue:'' + this.props.range[1], - onBlur:this.onRangeBlur.bind(this, 1)} ) - ), - InfoTip(null, - React.DOM.p(null, "利用下方的「標籤格式」來改變最大與最小 x 的標籤顯示格式。") - ),React.DOM.br(null ), - React.DOM.span(null, - ' ',"正確答案:",' ', - React.DOM.select( {value:this.props.correctRel, - onChange:this.onChange.bind(this, "correctRel")}, - React.DOM.optgroup( {label:"等式"}, - React.DOM.option( {value:"eq"}, "x =") - ), - React.DOM.optgroup( {label:"不等式"}, - React.DOM.option( {value:"lt"}, "x <"), - React.DOM.option( {value:"gt"}, "x >"), - React.DOM.option( {value:"le"}, "x ≤"), - React.DOM.option( {value:"ge"}, "x ≥") - ) - ), - React.DOM.input( {defaultValue:'' + this.props.correctX, - onBlur:this.onNumBlur.bind(this, "correctX")} ) - ),React.DOM.br(null ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"標籤格式:",' ', - React.DOM.select( {value:this.props.labelStyle, - onChange:this.onChange.bind(this, "labelStyle")}, - React.DOM.option( {value:"decimal"}, "小數"), - React.DOM.option( {value:"improper"}, "假分數"), - React.DOM.option( {value:"mixed"}, "帶分數") - ), - PropCheckBox( - {label:"顯示刻度代表的數字", - labelTicks:this.props.labelTicks, - onChange:this.props.onChange} ) - ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"每一刻度之間距離: ", React.DOM.input( {defaultValue:'' + this.props.tickStep, - onBlur:this.onNumBlur.bind(this, "tickStep")} ) - ), - InfoTip(null, - React.DOM.p(null, "每一個刻度都會標上刻度線。") - ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"刻度之間的分割數量:",' ', - React.DOM.input( {defaultValue:'' + this.props.snapDivisions, - onBlur:this.onNumBlur.bind(this, "snapDivisions")} ) - ), - InfoTip(null, - React.DOM.p(null, "確保分割數量足夠讓使用者回答問題,即答案會落在某分割的位置。") - ) - ); - }, - - onRangeBlur: function(i, e) { - var x = Util.firstNumericalParse(e.target.value) || 0; - e.target.value = x; - - var range = this.props.range.slice(); - range[i] = x; - this.props.onChange({range: range}); - }, - - onChange: function(key, e) { - var opts = {}; - opts[key] = e.target.value; - this.props.onChange(opts); - }, - - onNumBlur: function(key, e) { - var x = Util.firstNumericalParse(e.target.value) || 0; - e.target.value = x; - - var opts = {}; - opts[key] = x; - this.props.onChange(opts); - }, - - toJSON: function() { - return { - range: this.props.range, - labelStyle: this.props.labelStyle, - labelTicks: this.props.labelTicks, - tickStep: this.props.tickStep, - snapDivisions: this.props.snapDivisions, - correctRel: this.props.correctRel, - isInequality: this.props.correctRel !== "eq", - correctX: this.props.correctX - }; - } -}); - -module.exports = { - name: "interactive-number-line", - displayName: "Interactive-number-line/互動式數線", - hidden: false, - widget: InteractiveNumberLine, - editor: InteractiveNumberLineEditor -}; - -},{"../components/prop-check-box.jsx":62,"../util.js":100,"react-components/info-tip":39}],114:[function(require,module,exports){ +},{"../components/graph-settings.jsx":123,"../components/graph.jsx":124,"../components/number-input.jsx":131,"../interactive2.js":150,"../util.js":170,"react":117,"react-components/info-tip":7}],183:[function(require,module,exports){ +/** @jsx React.DOM */ + +var InfoTip = require("react-components/info-tip"); +var PropCheckBox = require("../components/prop-check-box.jsx"); +var Util = require("../util.js"); + +function eq(x, y) { + return Math.abs(x - y) < 1e-9; +} + +var reverseRel = { + ge: "le", + gt: "lt", + le: "ge", + lt: "gt" +}; + +var toggleStrictRel = { + ge: "gt", + gt: "ge", + le: "lt", + lt: "le" +}; + +function formatImproper(n, d) { + if (d === 1) { + return "" + n; + } else { + return n + "/" + d; + } +} + +function formatMixed(n, d) { + if (n < 0) { + return "-" + formatMixed(-n, d); + } + var w = Math.floor(n / d); + if (w === 0) { + return formatImproper(n, d); + } else if (n - w * d === 0) { + return "" + w; + } else { + return w + "\\:" + formatImproper(n - w * d, d); + } +} + +var InteractiveNumberLine = React.createClass({displayName: 'InteractiveNumberLine', + getDefaultProps: function() { + return { + labelStyle: "decimal", + labelTicks: false, + isInequality: false, + pointX: 0, + rel: "ge" + }; + }, + + isValid: function() { + return this.props.range[0] < this.props.range[1] && + 0 < this.props.tickStep && + 0 < this.props.snapDivisions; + }, + + render: function() { + var inequalityControls; + if (this.props.isInequality) { + inequalityControls = React.DOM.div(null, + React.DOM.input( {type:"button", value:"換方向", + onClick:this.handleReverse} ), + React.DOM.input( {type:"button", + value: + this.props.rel === "le" || this.props.rel === "ge" ? + "改為空心圓" : + "改為實心圓", + + onClick:this.handleToggleStrict} ) + ); + } + + var valid = this.isValid(); + return React.DOM.div( {className:"perseus-widget " + + "perseus-widget-interactive-number-line"}, + React.DOM.div( {style:{display: valid ? "" : "none"}, + className:"graphie above-scratchpad", ref:"graphieDiv"} ), + React.DOM.div( {style:{display: valid ? "none" : ""}}, + ' ',"invalid number line configuration",' ' + ), + inequalityControls + ); + }, + + handleReverse: function() { + this.props.onChange({rel: reverseRel[this.props.rel]}); + }, + + handleToggleStrict: function() { + this.props.onChange({rel: toggleStrictRel[this.props.rel]}); + }, + + componentDidMount: function() { + this.addGraphie(); + }, + + componentDidUpdate: function() { + // Use jQuery to remove so event handlers don't leak + var node = this.refs.graphieDiv.getDOMNode(); + $(node).children().remove(); + + this.addGraphie(); + }, + + _label: function(value) { + var graphie = this.graphie; + var labelStyle = this.props.labelStyle; + + // TODO(jack): Find out if any exercises have "decimal ticks" set, + // and if so, re-save them and remove this check. + if (labelStyle === "decimal" || labelStyle === "decimal ticks") { + graphie.label([value, -0.53], value, "center"); + } else if (labelStyle === "improper") { + var frac = KhanUtil.toFraction(value); + graphie.label([value, -0.53], + formatImproper(frac[0], frac[1]), "center"); + } else if (labelStyle === "mixed") { + var frac = KhanUtil.toFraction(value); + graphie.label([value, -0.53], + formatMixed(frac[0], frac[1]), "center"); + } + }, + + addGraphie: function() { + var self = this; + var graphie = this.graphie = KhanUtil.createGraphie( + this.refs.graphieDiv.getDOMNode()); + // Ensure a sane configuration to avoid infinite loops + if (!this.isValid()) { + return; + } + + var range = this.props.range; + var tickStep = this.props.tickStep; + var scale = 400 / (range[1] - range[0]); + + graphie.init({ + range: [[range[0] - 30 / scale, + range[1] + 30 / scale], + [-1, 1]], + scale: [scale, 40] + }); + graphie.addMouseLayer({ + allowScratchpad: true + }); + + // Line + + graphie.line([range[0] - (25 / scale), 0], + [range[1] + (25 / scale), 0], { + arrows: "->" + }); + graphie.line([range[1] + (25 / scale), 0], + [range[0] - (25 / scale), 0], { + arrows: "->" + }); + + // Ticks + var labelStyle = this.props.labelStyle; + for (var x = Math.ceil(range[0] / tickStep) * tickStep; x <= range[1]; + x += tickStep) { + graphie.line([x, -0.2], [x, 0.2]); + + // TODO(jack): Find out if any exercises have "decimal ticks" set, + // and if so, re-save them and remove this check. + if (this.props.labelTicks || labelStyle === "decimal ticks") { + this._label(x); + } + } + + graphie.style({ + stroke: KhanUtil.INTERACTIVE, + strokeWidth: 3.5 + }, function() { + graphie.line([range[0], -0.2], [range[0], 0.2]); + graphie.line([range[1], -0.2], [range[1], 0.2]); + if (range[0] < 0 && 0 < range[1]) { + graphie.line([0, -0.2], [0, 0.2]); + } + }); + + graphie.style({color: KhanUtil.INTERACTIVE}, function() { + self._label(range[0]); + self._label(range[1]); + if (range[0] < 0 && 0 < range[1] && !self.props.labelTicks) { + graphie.label([0, -0.53], "0", "center"); + } + }); + + // Point + + var isInequality = this.props.isInequality; + var rel = this.props.rel; + + var pointSize; + var pointStyle; + var highlightStyle; + if (isInequality && (rel === "lt" || rel === "gt")) { + pointSize = 5; + pointStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil._BACKGROUND, + "stroke-width": 3 + }; + highlightStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil._BACKGROUND, + "stroke-width": 4 + }; + } else { + pointSize = 4; + pointStyle = highlightStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil.INTERACTING + }; + } + + var x = Math.min(Math.max(range[0], this.props.pointX), range[1]); + var point = this.point = graphie.addMovablePoint({ + pointSize: pointSize, + coord: [x, 0], + snapX: this.props.tickStep / this.props.snapDivisions, + constraints: { + constrainY: true + }, + normalStyle: pointStyle, + highlightStyle: highlightStyle + }); + point.onMove = function(x, y) { + x = Math.min(Math.max(range[0], x), range[1]); + updateInequality(x, y); + return [x, y]; + }; + point.onMoveEnd = function(x, y) { + this.props.onChange({pointX: x}); + }.bind(this); + + // Inequality line + + var inequalityLine; + updateInequality(x, 0); + + function updateInequality(px, py) { + if (inequalityLine) { + inequalityLine.remove(); + inequalityLine = null; + } + if (isInequality) { + var end; + if (rel === "ge" || rel === "gt") { + end = [range[1] + (26 / scale), 0]; + } else { + end = [range[0] - (26 / scale), 0]; + } + inequalityLine = graphie.line( + [px, py], + end, + { + arrows: "->", + stroke: KhanUtil.INTERACTIVE, + strokeWidth: 3.5 + } + ); + point.toFront(); + } + } + }, + + toJSON: function() { + return { + pointX: this.props.pointX, + rel: this.props.isInequality ? this.props.rel : "eq" + }; + }, + + simpleValidate: function(rubric) { + return InteractiveNumberLine.validate(this.toJSON(), rubric); + }, + + focus: $.noop, + + statics: { + displayMode: "block" + } +}); + + +_.extend(InteractiveNumberLine, { + validate: function(state, rubric) { + var range = rubric.range; + var start = Math.min(Math.max(range[0], 0), range[1]); + var startRel = rubric.isInequality ? "ge" : "eq"; + var correctRel = rubric.correctRel || "eq"; + + if (eq(state.pointX, rubric.correctX || 0) && + correctRel === state.rel) { + return { + type: "points", + earned: 1, + total: 1, + message: null + }; + } else if (state.pointX === start && state.rel === startRel) { + // We're where we started. + return { + type: "invalid", + message: null + }; + } else { + return { + type: "points", + earned: 0, + total: 1, + message: null + }; + } + } +}); + + +var InteractiveNumberLineEditor = React.createClass({displayName: 'InteractiveNumberLineEditor', + getDefaultProps: function() { + return { + range: [0, 10], + labelStyle: "decimal", + labelTicks: false, + tickStep: 1, + snapDivisions: 4, + correctRel: "eq", + correctX: 0 + }; + }, + + render: function() { + return React.DOM.div(null, + React.DOM.label(null, + ' ',"最小 x: ", React.DOM.input( {defaultValue:'' + this.props.range[0], + onBlur:this.onRangeBlur.bind(this, 0)} ) + ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"最大 x: ", React.DOM.input( {defaultValue:'' + this.props.range[1], + onBlur:this.onRangeBlur.bind(this, 1)} ) + ), + InfoTip(null, + React.DOM.p(null, "利用下方的「標籤格式」來改變最大與最小 x 的標籤顯示格式。") + ),React.DOM.br(null ), + React.DOM.span(null, + ' ',"正確答案:",' ', + React.DOM.select( {value:this.props.correctRel, + onChange:this.onChange.bind(this, "correctRel")}, + React.DOM.optgroup( {label:"等式"}, + React.DOM.option( {value:"eq"}, "x =") + ), + React.DOM.optgroup( {label:"不等式"}, + React.DOM.option( {value:"lt"}, "x <"), + React.DOM.option( {value:"gt"}, "x >"), + React.DOM.option( {value:"le"}, "x ≤"), + React.DOM.option( {value:"ge"}, "x ≥") + ) + ), + React.DOM.input( {defaultValue:'' + this.props.correctX, + onBlur:this.onNumBlur.bind(this, "correctX")} ) + ),React.DOM.br(null ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"標籤格式:",' ', + React.DOM.select( {value:this.props.labelStyle, + onChange:this.onChange.bind(this, "labelStyle")}, + React.DOM.option( {value:"decimal"}, "小數"), + React.DOM.option( {value:"improper"}, "假分數"), + React.DOM.option( {value:"mixed"}, "帶分數") + ), + PropCheckBox( + {label:"顯示刻度代表的數字", + labelTicks:this.props.labelTicks, + onChange:this.props.onChange} ) + ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"每一刻度之間距離: ", React.DOM.input( {defaultValue:'' + this.props.tickStep, + onBlur:this.onNumBlur.bind(this, "tickStep")} ) + ), + InfoTip(null, + React.DOM.p(null, "每一個刻度都會標上刻度線。") + ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"刻度之間的分割數量:",' ', + React.DOM.input( {defaultValue:'' + this.props.snapDivisions, + onBlur:this.onNumBlur.bind(this, "snapDivisions")} ) + ), + InfoTip(null, + React.DOM.p(null, "確保分割數量足夠讓使用者回答問題,即答案會落在某分割的位置。") + ) + ); + }, + + onRangeBlur: function(i, e) { + var x = Util.firstNumericalParse(e.target.value) || 0; + e.target.value = x; + + var range = this.props.range.slice(); + range[i] = x; + this.props.onChange({range: range}); + }, + + onChange: function(key, e) { + var opts = {}; + opts[key] = e.target.value; + this.props.onChange(opts); + }, + + onNumBlur: function(key, e) { + var x = Util.firstNumericalParse(e.target.value) || 0; + e.target.value = x; + + var opts = {}; + opts[key] = x; + this.props.onChange(opts); + }, + + toJSON: function() { + return { + range: this.props.range, + labelStyle: this.props.labelStyle, + labelTicks: this.props.labelTicks, + tickStep: this.props.tickStep, + snapDivisions: this.props.snapDivisions, + correctRel: this.props.correctRel, + isInequality: this.props.correctRel !== "eq", + correctX: this.props.correctX + }; + } +}); + +module.exports = { + name: "interactive-number-line", + displayName: "Interactive-number-line/互動式數線", + hidden: false, + widget: InteractiveNumberLine, + editor: InteractiveNumberLineEditor +}; + +},{"../components/prop-check-box.jsx":132,"../util.js":170,"react-components/info-tip":7}],184:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18386,7 +18530,7 @@ module.exports = { transform: transformProps }; -},{"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45,"react-components/info-tip":39}],115:[function(require,module,exports){ +},{"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117,"react-components/info-tip":7}],185:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18626,7 +18770,7 @@ module.exports = { hidden: false }; -},{"../components/prop-check-box.jsx":62,"../components/sortable.jsx":64,"../components/text-list-editor.jsx":67,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/info-tip":39}],116:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":132,"../components/sortable.jsx":134,"../components/text-list-editor.jsx":137,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/info-tip":7}],186:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18987,7 +19131,7 @@ module.exports = { hidden: false }; -},{"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../components/range-input.jsx":63,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45,"react-components/info-tip":39}],117:[function(require,module,exports){ +},{"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../components/range-input.jsx":133,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117,"react-components/info-tip":7}],187:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -19838,7 +19982,7 @@ module.exports = { hidden: false }; -},{"../components/graphie.jsx":57,"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../components/range-input.jsx":63,"../interactive2.js":80,"../interactive2/interactive-util.js":81,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45,"react-components/button-group":37,"react-components/info-tip":39}],118:[function(require,module,exports){ +},{"../components/graphie.jsx":127,"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../components/range-input.jsx":133,"../interactive2.js":150,"../interactive2/interactive-util.js":151,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117,"react-components/button-group":5,"react-components/info-tip":7}],188:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -20283,7 +20427,7 @@ module.exports = { hidden: false }; -},{"../components/input-with-examples.jsx":58,"../components/multi-button-group.jsx":60,"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../editor.jsx":75,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45,"react-components/button-group":37,"react-components/info-tip":39}],119:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":128,"../components/multi-button-group.jsx":130,"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../editor.jsx":145,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117,"react-components/button-group":5,"react-components/info-tip":7}],189:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -20956,7 +21100,7 @@ module.exports = { hidden: false }; -},{"../components/text-list-editor.jsx":67,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/info-tip":39}],120:[function(require,module,exports){ +},{"../components/text-list-editor.jsx":137,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/info-tip":7}],190:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -21953,7 +22097,7 @@ module.exports = { hidden: false }; -},{"../components/number-input.jsx":61,"../components/range-input.jsx":63,"../components/text-list-editor.jsx":67,"../util.js":100,"react":45,"react-components/info-tip":39}],121:[function(require,module,exports){ +},{"../components/number-input.jsx":131,"../components/range-input.jsx":133,"../components/text-list-editor.jsx":137,"../util.js":170,"react":117,"react-components/info-tip":7}],191:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22500,7 +22644,7 @@ module.exports = { transform: choiceTransform }; -},{"../components/prop-check-box.jsx":62,"../editor.jsx":75,"../mixins/changeable.jsx":91,"../perseus-api.jsx":94,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/button-group":37,"react-components/info-tip":39}],122:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":132,"../editor.jsx":145,"../mixins/changeable.jsx":161,"../perseus-api.jsx":164,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/button-group":5,"react-components/info-tip":7}],192:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22652,7 +22796,7 @@ module.exports = { hidden: false }; -},{"../components/prop-check-box.jsx":62,"../components/sortable.jsx":64,"../components/text-list-editor.jsx":67,"../util.js":100,"react":45,"react-components/info-tip":39}],123:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":132,"../components/sortable.jsx":134,"../components/text-list-editor.jsx":137,"../util.js":170,"react":117,"react-components/info-tip":7}],193:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22984,7 +23128,7 @@ _.extend(SpeakingTextInput, { editor: SpeakingTextInputEditor }; -},{"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"classnames":3,"react":45}],124:[function(require,module,exports){ +},{"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"classnames":3,"react":117}],194:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -23157,7 +23301,7 @@ module.exports = { editor: SpeakingVoiceEditor }; -},{"../../lib/responsivevoice.js":2,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45}],125:[function(require,module,exports){ +},{"../../lib/responsivevoice.js":2,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117}],195:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -23477,7 +23621,7 @@ module.exports = { hidden: false }; -},{"../editor.jsx":75,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/info-tip":39}],126:[function(require,module,exports){ +},{"../editor.jsx":145,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/info-tip":7}],196:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -25981,5 +26125,5 @@ module.exports = { hidden: false }; -},{"../components/graph-settings.jsx":53,"../components/graph.jsx":54,"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../tex.jsx":99,"../util.js":100,"react":45,"react-components/info-tip":39}]},{},[95])(95) +},{"../components/graph-settings.jsx":123,"../components/graph.jsx":124,"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../tex.jsx":169,"../util.js":170,"react":117,"react-components/info-tip":7}]},{},[165])(165) }); \ No newline at end of file diff --git a/src/widgets/expression.jsx b/src/widgets/expression.jsx index 6599c210e6..cea57b67d1 100644 --- a/src/widgets/expression.jsx +++ b/src/widgets/expression.jsx @@ -24,7 +24,7 @@ var ERROR_MESSAGE = $._("Sorry, I don't understand that!"); // The new, MathQuill input expression widget var Expression = React.createClass({ - mixins: [Changeable, JsonifyProps], + mixins: [Changeable], propTypes: { value: React.PropTypes.string, @@ -208,6 +208,10 @@ var Expression = React.createClass({ return Expression.validate(this.toJSON(), rubric, onInputError); }, + toJSON: function(skipValidation) { + return {value: this.props.value}; + }, + statics: { displayMode: "inline-block" } From b05492d1ddd02f37bd77c73416ddf9b30bc28785 Mon Sep 17 00:00:00 2001 From: Ins Huang Date: Wed, 11 Jan 2017 16:05:37 +0800 Subject: [PATCH 143/156] Enable setting answer of all widgets from renderer --- src/item-renderer.jsx | 4 ++++ src/renderer.jsx | 9 +++++++++ src/widgets/numeric-input.jsx | 4 ++++ src/widgets/radio.jsx | 4 ++++ 4 files changed, 21 insertions(+) diff --git a/src/item-renderer.jsx b/src/item-renderer.jsx index 084e45738e..09742ea541 100644 --- a/src/item-renderer.jsx +++ b/src/item-renderer.jsx @@ -269,6 +269,10 @@ var ItemRenderer = React.createClass({ return this.props.item.hints.length; }, + applyAnswers: function(answerData) { + this.questionRenderer.applyAnswers(answerData); + }, + scoreInput: function() { var qGuessAndScore = this.questionRenderer.guessAndScore(); var aGuessAndScore = this.answerAreaRenderer.guessAndScore(); diff --git a/src/renderer.jsx b/src/renderer.jsx index 4cf6873f7e..08d95f2e4f 100644 --- a/src/renderer.jsx +++ b/src/renderer.jsx @@ -514,6 +514,15 @@ var Renderer = React.createClass({ }, () => focus); }, + applyAnswers: function(answerData) { + _.map(this.widgetIds, function(id) { + if (id.indexOf('lights-puzzle') > -1 || id.indexOf('transformer') > -1 || id.indexOf('image') > -1) { + return 'no save ' + id +' widget' + } + return this.refs[id].setAnswerFromJSON(answerData[0]); + }, this); + }, + guessAndScore: function() { var widgetProps = this.props.widgets; var onInputError = this.props.apiOptions.onInputError || diff --git a/src/widgets/numeric-input.jsx b/src/widgets/numeric-input.jsx index d5d9d4f5cc..3db1df9a2f 100644 --- a/src/widgets/numeric-input.jsx +++ b/src/widgets/numeric-input.jsx @@ -74,6 +74,10 @@ var NumericInput = React.createClass({ return {currentValue: this.props.currentValue}; }, + setAnswerFromJSON: function(answerData) { + this.props.onChange(answerData[0]); + }, + simpleValidate: function(rubric) { return NumericInput.validate(this.toJSON(), rubric); }, diff --git a/src/widgets/radio.jsx b/src/widgets/radio.jsx index e142d2d045..612a59934f 100644 --- a/src/widgets/radio.jsx +++ b/src/widgets/radio.jsx @@ -203,6 +203,10 @@ var Radio = React.createClass({ }); }, + setAnswerFromJSON: function(answerData) { + this.props.onChange(answerData[0]); + }, + toJSON: function(skipValidation) { // Return checked inputs in the form {values: [bool]}. (Dear future // timeline implementers: this used to be {value: i} before multiple From 92d6f2139c3677a1d570afef932155e4e8d730c9 Mon Sep 17 00:00:00 2001 From: Justin Hsiao Date: Mon, 23 Jan 2017 16:06:44 +0800 Subject: [PATCH 144/156] expand math-input widget downward-left if the input is on the right side --- build/perseus-1.js | 6262 ++++++++++++++++----------------- src/components/math-input.jsx | 9 +- src/widgets/expression.jsx | 11 +- 3 files changed, 3085 insertions(+), 3197 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index 5ba52d2a4e..801955d423 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 65af56486a5b7a5703309f7e0bb70991d9226e32 -// branch master +// commit b5078899120db2a9d4e11ea50a3db19bbb8db03a +// branch HEAD (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license */ -var BlurInput = React.createClass({displayName: 'BlurInput', - propTypes: { - value: React.PropTypes.string.isRequired, - onChange: React.PropTypes.func.isRequired - }, - getInitialState: function() { - return { value: this.props.value }; - }, - render: function() { - return this.transferPropsTo(React.DOM.input( - {type:"text", - value:this.state.value, - onChange:this.handleChange, - onBlur:this.handleBlur} )); - }, - componentWillReceiveProps: function(nextProps) { - this.setState({ value: nextProps.value }); - }, - handleChange: function(e) { - this.setState({ value: e.target.value }); - }, - handleBlur: function(e) { - this.props.onChange(e.target.value); - } -}); - -module.exports = BlurInput; - -},{"react":117}],5:[function(require,module,exports){ -/** @jsx React.DOM */ -var React = require('react'); -var RCSS = require('rcss'); -var _ = require('underscore'); +/** Used to pool arrays and objects used internally */ +var arrayPool = []; -var outerStyle = { - display: 'inline-block', -}; +module.exports = arrayPool; -var buttonStyle = { - backgroundColor: 'white', - border: '1px solid #ccc', - borderBottom: '1px solid #ccc', - borderLeft: '0', - cursor: 'pointer', - margin: '0', - padding: '5px 10px', - position: 'relative', // for hover +},{}],5:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreate = require('lodash._basecreate'), + isObject = require('lodash.isobject'), + setBindData = require('lodash._setbinddata'), + slice = require('lodash._slice'); - ':first-child': { - borderLeft: '1px solid #ccc', - borderTopLeftRadius: '3px', - borderBottomLeftRadius: '3px' - }, +/** + * Used for `Array` method references. + * + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; - ':last-child': { - borderRight: '1px solid #ccc', - borderTopRightRadius: '3px', - borderBottomRightRadius: '3px' - }, +/** Native method shortcuts */ +var push = arrayRef.push; - ':hover': { - backgroundColor: '#ccc' - }, +/** + * The base implementation of `_.bind` that creates the bound function and + * sets its meta data. + * + * @private + * @param {Array} bindData The bind data array. + * @returns {Function} Returns the new bound function. + */ +function baseBind(bindData) { + var func = bindData[0], + partialArgs = bindData[2], + thisArg = bindData[4]; - ':focus': { - zIndex: '2' + function bound() { + // `Function#bind` spec + // http://es5.github.io/#x15.3.4.5 + if (partialArgs) { + // avoid `arguments` object deoptimizations by using `slice` instead + // of `Array.prototype.slice.call` and not assigning `arguments` to a + // variable as a ternary expression + var args = slice(partialArgs); + push.apply(args, arguments); } -}; + // mimic the constructor's `return` behavior + // http://es5.github.io/#x13.2.2 + if (this instanceof bound) { + // ensure `new bound` is an instance of `func` + var thisBinding = baseCreate(func.prototype), + result = func.apply(thisBinding, args || arguments); + return isObject(result) ? result : thisBinding; + } + return func.apply(thisArg, args || arguments); + } + setBindData(bound, bindData); + return bound; +} -var selectedStyle = { - backgroundColor: '#ddd' -}; +module.exports = baseBind; -RCSS.createClass(outerStyle); -RCSS.createClass(buttonStyle); -RCSS.createClass(selectedStyle); +},{"lodash._basecreate":6,"lodash._setbinddata":19,"lodash._slice":21,"lodash.isobject":31}],6:[function(require,module,exports){ +(function (global){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var isNative = require('lodash._isnative'), + isObject = require('lodash.isobject'), + noop = require('lodash.noop'); -/* ButtonGroup is an aesthetically pleasing group of buttons. - * - * The class requires these properties: - * buttons - an array of objects with keys: - * "value": this is the value returned when the button is selected - * "text": this is the text shown on the button - * "title": this is the title-text shown on hover - * onChange - a function that is provided with the updated value - * (which it then is responsible for updating) - * - * The class has these optional properties: - * value - the initial value of the button selected, defaults to null. - * allowEmpty - if false, exactly one button _must_ be selected; otherwise - * it defaults to true and _at most_ one button (0 or 1) may be selected. +/* Native method shortcuts for methods with the same name as other `lodash` methods */ +var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate; + +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. * - * Requires stylesheets/perseus-admin-package/editor.less to look nice. + * @private + * @param {Object} prototype The object to inherit from. + * @returns {Object} Returns the new object. */ +function baseCreate(prototype, properties) { + return isObject(prototype) ? nativeCreate(prototype) : {}; +} +// fallback for browsers without `Object.create` +if (!nativeCreate) { + baseCreate = (function() { + function Object() {} + return function(prototype) { + if (isObject(prototype)) { + Object.prototype = prototype; + var result = new Object; + Object.prototype = null; + } + return result || global.Object(); + }; + }()); +} -var ButtonGroup = React.createClass({displayName: 'ButtonGroup', - propTypes: { - value: React.PropTypes.any, - buttons: React.PropTypes.arrayOf(React.PropTypes.shape({ - value: React.PropTypes.any.isRequired, - text: React.PropTypes.renderable, - title: React.PropTypes.string - })).isRequired, - onChange: React.PropTypes.func.isRequired, - allowEmpty: React.PropTypes.bool - }, +module.exports = baseCreate; - getDefaultProps: function() { - return { - value: null, - allowEmpty: true - }; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"lodash._isnative":14,"lodash.isobject":31,"lodash.noop":33}],7:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var bind = require('lodash.bind'), + identity = require('lodash.identity'), + setBindData = require('lodash._setbinddata'), + support = require('lodash.support'); - render: function() { - var value = this.props.value; - var buttons = _(this.props.buttons).map(function(button, i) { - var maybeSelected = button.value === value ? - selectedStyle.className : - ""; - return React.DOM.button( {title:button.title, - id:"" + i, - ref:"button" + i, - key:"" + i, - className:(buttonStyle.className + " " + maybeSelected), - onClick:this.toggleSelect.bind(this, button.value)}, - button.text || "" + button.value - ); - }.bind(this)); +/** Used to detected named functions */ +var reFuncName = /^\s*function[ \n\r\t]+\w/; - return React.DOM.div( {className:outerStyle.className}, - buttons - ); - }, +/** Used to detect functions containing a `this` reference */ +var reThis = /\bthis\b/; - focus: function() { - this.getDOMNode().focus(); - return true; - }, - - toggleSelect: function(newValue) { - var value = this.props.value; +/** Native method shortcuts */ +var fnToString = Function.prototype.toString; - if (this.props.allowEmpty) { - // Select the new button or unselect if it's already selected - this.props.onChange(value !== newValue ? newValue : null); - } else { - this.props.onChange(newValue); - } +/** + * The base implementation of `_.createCallback` without support for creating + * "_.pluck" or "_.where" style callbacks. + * + * @private + * @param {*} [func=identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of the created callback. + * @param {number} [argCount] The number of arguments the callback accepts. + * @returns {Function} Returns a callback function. + */ +function baseCreateCallback(func, thisArg, argCount) { + if (typeof func != 'function') { + return identity; + } + // exit early for no `thisArg` or already bound by `Function#bind` + if (typeof thisArg == 'undefined' || !('prototype' in func)) { + return func; + } + var bindData = func.__bindData__; + if (typeof bindData == 'undefined') { + if (support.funcNames) { + bindData = !func.name; } -}); - -module.exports = ButtonGroup; + bindData = bindData || !support.funcDecomp; + if (!bindData) { + var source = fnToString.call(func); + if (!support.funcNames) { + bindData = !reFuncName.test(source); + } + if (!bindData) { + // checks if `func` references the `this` keyword and stores the result + bindData = reThis.test(source); + setBindData(func, bindData); + } + } + } + // exit early if there are no `this` references or `func` is bound + if (bindData === false || (bindData !== true && bindData[1] & 1)) { + return func; + } + switch (argCount) { + case 1: return function(value) { + return func.call(thisArg, value); + }; + case 2: return function(a, b) { + return func.call(thisArg, a, b); + }; + case 3: return function(value, index, collection) { + return func.call(thisArg, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(thisArg, accumulator, value, index, collection); + }; + } + return bind(func, thisArg); +} -},{"rcss":8,"react":117,"underscore":118}],6:[function(require,module,exports){ -/** @jsx React.DOM */ +module.exports = baseCreateCallback; -var React = require('react'); +},{"lodash._setbinddata":19,"lodash.bind":23,"lodash.identity":29,"lodash.support":35}],8:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreate = require('lodash._basecreate'), + isObject = require('lodash.isobject'), + setBindData = require('lodash._setbinddata'), + slice = require('lodash._slice'); -/* This component makes its children a drag target. Example: - * - * Drag to me - * - * ... +/** + * Used for `Array` method references. * - * handleDrop: function(e) { - * this.addImages(e.nativeEvent.dataTransfer.files); - * } + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; + +/** Native method shortcuts */ +var push = arrayRef.push; + +/** + * The base implementation of `createWrapper` that creates the wrapper and + * sets its meta data. * - * Now "Drag to me" will be a drag target - when something is dragged over it, - * the element will become partially transparent as a visual indicator that - * it's a target. + * @private + * @param {Array} bindData The bind data array. + * @returns {Function} Returns the new function. */ -// TODO(joel) - indicate before the hover is over the target that it's possible -// to drag into the target. This would (I think) require a high level handler - -// like on Perseus itself, waiting for onDragEnter, then passing down the -// event. Sounds like a pain. Possible workaround - create a div covering the -// entire page... -// -// Other extensions: -// * custom styles for global drag and dragOver -// * only respond to certain types of drags (only images for instance)! -var DragTarget = React.createClass({displayName: 'DragTarget', - propTypes: { - onDrop: React.PropTypes.func.isRequired, - component: React.PropTypes.component, - shouldDragHighlight: React.PropTypes.func - }, - render: function() { - var opacity = this.state.dragHover ? { "opacity": 0.3 } : {}; - var component = this.props.component; +function baseCreateWrapper(bindData) { + var func = bindData[0], + bitmask = bindData[1], + partialArgs = bindData[2], + partialRightArgs = bindData[3], + thisArg = bindData[4], + arity = bindData[5]; - return this.transferPropsTo( - component( {style:opacity, - onDrop:this.handleDrop, - onDragEnd:this.handleDragEnd, - onDragOver:this.handleDragOver, - onDragEnter:this.handleDragEnter, - onDragLeave:this.handleDragLeave}, - this.props.children - ) - ); - }, - getInitialState: function() { - return { dragHover: false }; - }, - getDefaultProps: function() { - return { - component: React.DOM.div, - shouldDragHighlight: function() {return true;} - }; - }, - handleDrop: function(e) { - e.stopPropagation(); - e.preventDefault(); - this.setState({ dragHover: false }); - this.props.onDrop(e); - }, - handleDragEnd: function() { - this.setState({ dragHover: false }); - }, - handleDragOver: function(e) { - e.preventDefault(); - }, - handleDragLeave: function() { - this.setState({ dragHover: false }); - }, - handleDragEnter: function(e) { - this.setState({ dragHover: this.props.shouldDragHighlight(e) }); + var isBind = bitmask & 1, + isBindKey = bitmask & 2, + isCurry = bitmask & 4, + isCurryBound = bitmask & 8, + key = func; + + function bound() { + var thisBinding = isBind ? thisArg : this; + if (partialArgs) { + var args = slice(partialArgs); + push.apply(args, arguments); } -}); + if (partialRightArgs || isCurry) { + args || (args = slice(arguments)); + if (partialRightArgs) { + push.apply(args, partialRightArgs); + } + if (isCurry && args.length < arity) { + bitmask |= 16 & ~32; + return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); + } + } + args || (args = arguments); + if (isBindKey) { + func = thisBinding[key]; + } + if (this instanceof bound) { + thisBinding = baseCreate(func.prototype); + var result = func.apply(thisBinding, args); + return isObject(result) ? result : thisBinding; + } + return func.apply(thisBinding, args); + } + setBindData(bound, bindData); + return bound; +} -module.exports = DragTarget; +module.exports = baseCreateWrapper; -},{"react":117}],7:[function(require,module,exports){ -/** @jsx React.DOM */ +},{"lodash._basecreate":6,"lodash._setbinddata":19,"lodash._slice":21,"lodash.isobject":31}],9:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var forIn = require('lodash.forin'), + getArray = require('lodash._getarray'), + isFunction = require('lodash.isfunction'), + objectTypes = require('lodash._objecttypes'), + releaseArray = require('lodash._releasearray'); -var React = require('react'); -var RCSS = require('rcss'); -var _ = require('underscore'); +/** `Object#toString` result shortcuts */ +var argsClass = '[object Arguments]', + arrayClass = '[object Array]', + boolClass = '[object Boolean]', + dateClass = '[object Date]', + numberClass = '[object Number]', + objectClass = '[object Object]', + regexpClass = '[object RegExp]', + stringClass = '[object String]'; -var colors = { - grayLight: '#aaa', - basicBorderColor: '#ccc', - white: '#fff' -}; +/** Used for native method references */ +var objectProto = Object.prototype; -var infoTip = { - display: 'inline-block', - marginLeft: '5px', - position: 'relative' -}; +/** Used to resolve the internal [[Class]] of values */ +var toString = objectProto.toString; -var infoTipI = { - cursor: 'pointer' -}; - -var infoTipContainer = { - position: 'absolute', - 'top': '-12px', - left: '22px', - zIndex: '1000' -}; - -var triangleBeforeAfter = { - borderBottom: '9px solid transparent', - borderTop: '9px solid transparent', - content: ' ', - height: '0', - position: 'absolute', - 'top': '0', - width: '0' -}; - -var infoTipTriangle = { - height: '10px', - left: '0', - position: 'absolute', - 'top': '8px', - width: '0', - zIndex: '1', +/** Native method shortcuts */ +var hasOwnProperty = objectProto.hasOwnProperty; - ':before': _.extend({}, triangleBeforeAfter, { - borderRight: '9px solid #bbb', - right: '0', - }), +/** + * The base implementation of `_.isEqual`, without support for `thisArg` binding, + * that allows partial "_.where" style comparisons. + * + * @private + * @param {*} a The value to compare. + * @param {*} b The other value to compare. + * @param {Function} [callback] The function to customize comparing values. + * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. + * @param {Array} [stackA=[]] Tracks traversed `a` objects. + * @param {Array} [stackB=[]] Tracks traversed `b` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { + // used to indicate that when comparing objects, `a` has at least the properties of `b` + if (callback) { + var result = callback(a, b); + if (typeof result != 'undefined') { + return !!result; + } + } + // exit early for identical values + if (a === b) { + // treat `+0` vs. `-0` as not equal + return a !== 0 || (1 / a == 1 / b); + } + var type = typeof a, + otherType = typeof b; - ':after': _.extend({}, triangleBeforeAfter, { - borderRight: ("9px solid " + colors.white), - right: '-1px' - }) -}; + // exit early for unlike primitive values + if (a === a && + !(a && objectTypes[type]) && + !(b && objectTypes[otherType])) { + return false; + } + // exit early for `null` and `undefined` avoiding ES3's Function#call behavior + // http://es5.github.io/#x15.3.4.4 + if (a == null || b == null) { + return a === b; + } + // compare [[Class]] names + var className = toString.call(a), + otherClass = toString.call(b); -var basicBorder = { - border: ("1px solid " + colors.basicBorderColor) -}; + if (className == argsClass) { + className = objectClass; + } + if (otherClass == argsClass) { + otherClass = objectClass; + } + if (className != otherClass) { + return false; + } + switch (className) { + case boolClass: + case dateClass: + // coerce dates and booleans to numbers, dates to milliseconds and booleans + // to `1` or `0` treating invalid dates coerced to `NaN` as not equal + return +a == +b; -var boxShadow = function(str) { return { boxShadow: str }; }; + case numberClass: + // treat `NaN` vs. `NaN` as equal + return (a != +a) + ? b != +b + // but treat `+0` vs. `-0` as not equal + : (a == 0 ? (1 / a == 1 / b) : a == +b); -var verticalShadow = RCSS.merge( - basicBorder, - boxShadow(("0 1px 3px " + colors.basicBorderColor)), - { borderBottom: ("1px solid " + colors.grayLight) } -); + case regexpClass: + case stringClass: + // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) + // treat string primitives and their corresponding object instances as equal + return a == String(b); + } + var isArr = className == arrayClass; + if (!isArr) { + // unwrap any `lodash` wrapped values + var aWrapped = hasOwnProperty.call(a, '__wrapped__'), + bWrapped = hasOwnProperty.call(b, '__wrapped__'); -var infoTipContentContainer = RCSS.merge(verticalShadow, { - background: colors.white, - padding: '5px 10px', - width: '240px' -}); + if (aWrapped || bWrapped) { + return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); + } + // exit for functions and DOM nodes + if (className != objectClass) { + return false; + } + // in older versions of Opera, `arguments` objects have `Array` constructors + var ctorA = a.constructor, + ctorB = b.constructor; -RCSS.createClass(infoTip); -RCSS.createClass(infoTipI); -RCSS.createClass(infoTipTriangle); -RCSS.createClass(verticalShadow); -RCSS.createClass(infoTipContainer); -RCSS.createClass(infoTipContentContainer); + // non `Object` object instances with different constructors are not equal + if (ctorA != ctorB && + !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && + ('constructor' in a && 'constructor' in b) + ) { + return false; + } + } + // assume cyclic structures are equal + // the algorithm for detecting cyclic structures is adapted from ES 5.1 + // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) + var initedStack = !stackA; + stackA || (stackA = getArray()); + stackB || (stackB = getArray()); -var questionMark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2N2M3NTAxYS04YmVlLTQ0M2MtYmRiNS04OGM2N2IxN2NhYzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUJCRTk4Qjc4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUJCRTk4QjY4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGE5ZDI0OTMtODk1NC00OGFkLTlhMTgtZDAwM2MwYWNjNDJlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY3Yzc1MDFhLThiZWUtNDQzYy1iZGI1LTg4YzY3YjE3Y2FjMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqm89uYAAADMSURBVHjaXJA9DoJAEIUH1M4TUHIFsCMGen9OwCGw1YRGW2ntKel0exsojHIBC0ouQAyUviFDstmXfNmZeS+zm7XSNCXRFiRgJf0bXIHixpbhGdxBBJYC1w/xaA424MhNEATkui71fU9KqfEU78UbD9PdbJRlOdae55GmhIP+1NV1TcMwkOM41DSNHvRtMhTHMRVFQW3b6mOLgx99kue5GRp/gIOZuZGvNpTNwjD8oliANU+qqqKu6/TQBdymN57AHjzBT+B6Jx79BRgAvc49kQA4yxgAAAAASUVORK5CYII='; // @NoLint + var length = stackA.length; + while (length--) { + if (stackA[length] == a) { + return stackB[length] == b; + } + } + var size = 0; + result = true; -var InfoTip = React.createClass({displayName: 'InfoTip', - getInitialState: function() { - return { - hover: false - }; - }, + // add `a` and `b` to the stack of traversed objects + stackA.push(a); + stackB.push(b); - render: function() { - return React.DOM.div( {className:infoTip.className}, - React.DOM.img( {width:10, - height:10, - src:questionMark, - onMouseEnter:this.handleMouseEnter, - onMouseLeave:this.handleMouseLeave} ), - React.DOM.div( {className:infoTipContainer.className, - style:{display: this.state.hover ? 'block' : 'none'}}, - React.DOM.div( {className:infoTipTriangle.className} ), - /* keep the classes here - used for selectors on KA */ - React.DOM.div( {className:infoTipContentContainer.className}, - this.props.children - ) - ) - ); - }, + // recursively compare objects and arrays (susceptible to call stack limits) + if (isArr) { + // compare lengths to determine if a deep comparison is necessary + length = a.length; + size = b.length; + result = size == length; - handleMouseEnter: function() { - this.setState({hover: true}); - }, + if (result || isWhere) { + // deep compare the contents, ignoring non-numeric properties + while (size--) { + var index = length, + value = b[size]; - handleMouseLeave: function() { - this.setState({hover: false}); + if (isWhere) { + while (index--) { + if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { + break; + } + } + } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { + break; + } + } } -}); - -module.exports = InfoTip; + } + else { + // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` + // which, in this case, is more costly + forIn(b, function(value, key, b) { + if (hasOwnProperty.call(b, key)) { + // count the number of properties. + size++; + // deep compare each property value. + return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); + } + }); -},{"rcss":8,"react":117,"underscore":118}],8:[function(require,module,exports){ -var assign = require('lodash.assign'); + if (result && !isWhere) { + // ensure both objects have the same number of properties + forIn(a, function(value, key, a) { + if (hasOwnProperty.call(a, key)) { + // `size` will be `-1` if `a` has more properties than `b` + return (result = --size > -1); + } + }); + } + } + stackA.pop(); + stackB.pop(); -var styleRuleValidator = require('./styleRuleValidator'); -var styleRuleConverter = require('./styleRuleConverter'); -var mediaQueryValidator = require('valid-media-queries'); + if (initedStack) { + releaseArray(stackA); + releaseArray(stackB); + } + return result; +} -var existingClasses = {}; -var styleTag = createStyleTag(); +module.exports = baseIsEqual; -var classNameId = 0; -var randomSuffix = Math.random().toString(36).slice(-5); - -function generateValidCSSClassName() { - // CSS classNames can't start with a number. - return 'c' + (classNameId++) + '-' + randomSuffix; -} +},{"lodash._getarray":12,"lodash._objecttypes":16,"lodash._releasearray":17,"lodash.forin":27,"lodash.isfunction":30}],10:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseBind = require('lodash._basebind'), + baseCreateWrapper = require('lodash._basecreatewrapper'), + isFunction = require('lodash.isfunction'), + slice = require('lodash._slice'); -function objToCSS(style) { - var serialized = ''; - for (var propName in style) { - // we put that ourselves - if (propName == 'className') continue; +/** + * Used for `Array` method references. + * + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; - var cssPropName = styleRuleConverter.hyphenateProp(propName); - if (!styleRuleValidator.isValidProp(cssPropName)) { - console.warn( - '%s (transformed into %s) is not a valid CSS property name.', propName, cssPropName - ); - continue; - } +/** Native method shortcuts */ +var push = arrayRef.push, + unshift = arrayRef.unshift; - var styleValue = style[propName]; - if (!styleRuleValidator.isValidValue(styleValue)) continue; +/** + * Creates a function that, when called, either curries or invokes `func` + * with an optional `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to reference. + * @param {number} bitmask The bitmask of method flags to compose. + * The bitmask may be composed of the following flags: + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` + * 8 - `_.curry` (bound) + * 16 - `_.partial` + * 32 - `_.partialRight` + * @param {Array} [partialArgs] An array of arguments to prepend to those + * provided to the new function. + * @param {Array} [partialRightArgs] An array of arguments to append to those + * provided to the new function. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new function. + */ +function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { + var isBind = bitmask & 1, + isBindKey = bitmask & 2, + isCurry = bitmask & 4, + isCurryBound = bitmask & 8, + isPartial = bitmask & 16, + isPartialRight = bitmask & 32; - if (styleValue !== null) { - serialized += cssPropName + ':'; - serialized += styleRuleConverter.escapeValueForProp(styleValue, - cssPropName) + ';'; + if (!isBindKey && !isFunction(func)) { + throw new TypeError; + } + if (isPartial && !partialArgs.length) { + bitmask &= ~16; + isPartial = partialArgs = false; + } + if (isPartialRight && !partialRightArgs.length) { + bitmask &= ~32; + isPartialRight = partialRightArgs = false; + } + var bindData = func && func.__bindData__; + if (bindData && bindData !== true) { + // clone `bindData` + bindData = slice(bindData); + if (bindData[2]) { + bindData[2] = slice(bindData[2]); + } + if (bindData[3]) { + bindData[3] = slice(bindData[3]); + } + // set `thisBinding` is not previously bound + if (isBind && !(bindData[1] & 1)) { + bindData[4] = thisArg; + } + // set if previously bound but not currently (subsequent curried functions) + if (!isBind && bindData[1] & 1) { + bitmask |= 8; + } + // set curried arity if not yet set + if (isCurry && !(bindData[1] & 4)) { + bindData[5] = arity; + } + // append partial left arguments + if (isPartial) { + push.apply(bindData[2] || (bindData[2] = []), partialArgs); + } + // append partial right arguments + if (isPartialRight) { + unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); } + // merge flags + bindData[1] |= bitmask; + return createWrapper.apply(null, bindData); } - return serialized || null; -} - -function createStyleTag() { - var tag = document.createElement('style'); - document.getElementsByTagName('head')[0].appendChild(tag); - return tag; + // fast path for `_.bind` + var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; + return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); } -function styleToCSS(style) { - var styleStr = '.' + style.className + '{'; - styleStr += objToCSS(style.value); - styleStr += '}'; +module.exports = createWrapper; - if (style.media) { - if (!mediaQueryValidator(style.media)) { - console.log('%s is not a valid media query.', style.media); - } - styleStr = style.media + '{' + styleStr + '}'; - } +},{"lodash._basebind":5,"lodash._basecreatewrapper":8,"lodash._slice":21,"lodash.isfunction":30}],11:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var htmlEscapes = require('lodash._htmlescapes'); - return styleStr; +/** + * Used by `escape` to convert characters to HTML entities. + * + * @private + * @param {string} match The matched character to escape. + * @returns {string} Returns the escaped character. + */ +function escapeHtmlChar(match) { + return htmlEscapes[match]; } -// TODO: support media queries -function parseStyles(className, styleObj) { - var mainStyle = { - className: className, - value: {} - }; - var styles = [mainStyle]; - - Object.keys(styleObj).forEach(function(k){ - // pseudo-selector, insert a new rule - if (k[0] === ':') { - styles.push({ - className: className+k, - value: styleObj[k] - }); - return; - } else if (k.substring(0, 6) === '@media') { - styles.push({ - className: className, - value: styleObj[k], - media: k - }); - return; - } - - // normal rule, insert into main one - mainStyle.value[k] = styleObj[k]; - }); +module.exports = escapeHtmlChar; - return styles; -} +},{"lodash._htmlescapes":13}],12:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var arrayPool = require('lodash._arraypool'); -function insertStyle(className, styleObj) { - var styles = parseStyles(className, styleObj); - var styleStr = styles.map(styleToCSS).join(''); - styleTag.innerHTML += styleStr; +/** + * Gets an array from the array pool or creates a new one if the pool is empty. + * + * @private + * @returns {Array} The array from the pool. + */ +function getArray() { + return arrayPool.pop() || []; } -var RCSS = { - merge: function(a, b, c, d, e) { - return assign({}, a, b, c, d, e); - }, - - createClass: function(styleObj) { - var styleId = JSON.stringify(styleObj); - var className; +module.exports = getArray; - if (existingClasses[styleId]) { - // already exists, use the existing className - className = existingClasses[styleId]; - } else { - // generate a new class and insert it - className = generateValidCSSClassName(); - existingClasses[styleId] = className; - insertStyle(className, styleObj); - } +},{"lodash._arraypool":4}],13:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ - styleObj.className = className; - return styleObj; - } +/** + * Used to convert characters to HTML entities: + * + * Though the `>` character is escaped for symmetry, characters like `>` and `/` + * don't require escaping in HTML and have no special meaning unless they're part + * of a tag or an unquoted attribute value. + * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") + */ +var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' }; -module.exports = RCSS; +module.exports = htmlEscapes; -},{"./styleRuleConverter":113,"./styleRuleValidator":114,"lodash.assign":9,"valid-media-queries":48}],9:[function(require,module,exports){ +},{}],14:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1035,70 +1213,49 @@ module.exports = RCSS; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreateCallback = require('lodash._basecreatecallback'), - keys = require('lodash.keys'), - objectTypes = require('lodash._objecttypes'); + +/** Used for native method references */ +var objectProto = Object.prototype; + +/** Used to resolve the internal [[Class]] of values */ +var toString = objectProto.toString; + +/** Used to detect if a method is native */ +var reNative = RegExp('^' + + String(toString) + .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + .replace(/toString| for [^\]]+/g, '.*?') + '$' +); /** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources will overwrite property assignments of previous - * sources. If a callback is provided it will be executed to produce the - * assigned values. The callback is bound to `thisArg` and invoked with two - * arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @type Function - * @alias extend - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize assigning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); - * // => { 'name': 'fred', 'employer': 'slate' } - * - * var defaults = _.partialRight(_.assign, function(a, b) { - * return typeof a == 'undefined' ? b : a; - * }); + * Checks if `value` is a native function. * - * var object = { 'name': 'barney' }; - * defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. */ -var assign = function(object, source, guard) { - var index, iterable = object, result = iterable; - if (!iterable) return result; - var args = arguments, - argsIndex = 0, - argsLength = typeof guard == 'number' ? 2 : args.length; - if (argsLength > 3 && typeof args[argsLength - 2] == 'function') { - var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2); - } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') { - callback = args[--argsLength]; - } - while (++argsIndex < argsLength) { - iterable = args[argsIndex]; - if (iterable && objectTypes[typeof iterable]) { - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; +function isNative(value) { + return typeof value == 'function' && reNative.test(value); +} - while (++ownIndex < length) { - index = ownProps[ownIndex]; - result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]; - } - } - } - return result -}; +module.exports = isNative; -module.exports = assign; +},{}],15:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** Used as the max size of the `arrayPool` and `objectPool` */ +var maxPoolSize = 40; -},{"lodash._basecreatecallback":10,"lodash._objecttypes":31,"lodash.keys":32}],10:[function(require,module,exports){ +module.exports = maxPoolSize; + +},{}],16:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1107,80 +1264,64 @@ module.exports = assign; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var bind = require('lodash.bind'), - identity = require('lodash.identity'), - setBindData = require('lodash._setbinddata'), - support = require('lodash.support'); -/** Used to detected named functions */ -var reFuncName = /^\s*function[ \n\r\t]+\w/; +/** Used to determine if values are of the language type Object */ +var objectTypes = { + 'boolean': false, + 'function': true, + 'object': true, + 'number': false, + 'string': false, + 'undefined': false +}; -/** Used to detect functions containing a `this` reference */ -var reThis = /\bthis\b/; +module.exports = objectTypes; -/** Native method shortcuts */ -var fnToString = Function.prototype.toString; +},{}],17:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var arrayPool = require('lodash._arraypool'), + maxPoolSize = require('lodash._maxpoolsize'); /** - * The base implementation of `_.createCallback` without support for creating - * "_.pluck" or "_.where" style callbacks. + * Releases the given array back to the array pool. * * @private - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. + * @param {Array} [array] The array to release. */ -function baseCreateCallback(func, thisArg, argCount) { - if (typeof func != 'function') { - return identity; - } - // exit early for no `thisArg` or already bound by `Function#bind` - if (typeof thisArg == 'undefined' || !('prototype' in func)) { - return func; - } - var bindData = func.__bindData__; - if (typeof bindData == 'undefined') { - if (support.funcNames) { - bindData = !func.name; - } - bindData = bindData || !support.funcDecomp; - if (!bindData) { - var source = fnToString.call(func); - if (!support.funcNames) { - bindData = !reFuncName.test(source); - } - if (!bindData) { - // checks if `func` references the `this` keyword and stores the result - bindData = reThis.test(source); - setBindData(func, bindData); - } - } - } - // exit early if there are no `this` references or `func` is bound - if (bindData === false || (bindData !== true && bindData[1] & 1)) { - return func; - } - switch (argCount) { - case 1: return function(value) { - return func.call(thisArg, value); - }; - case 2: return function(a, b) { - return func.call(thisArg, a, b); - }; - case 3: return function(value, index, collection) { - return func.call(thisArg, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(thisArg, accumulator, value, index, collection); - }; +function releaseArray(array) { + array.length = 0; + if (arrayPool.length < maxPoolSize) { + arrayPool.push(array); } - return bind(func, thisArg); } -module.exports = baseCreateCallback; +module.exports = releaseArray; + +},{"lodash._arraypool":4,"lodash._maxpoolsize":15}],18:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var htmlEscapes = require('lodash._htmlescapes'), + keys = require('lodash.keys'); + +/** Used to match HTML entities and HTML characters */ +var reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); -},{"lodash._setbinddata":11,"lodash.bind":14,"lodash.identity":28,"lodash.support":29}],11:[function(require,module,exports){ +module.exports = reUnescapedHtml; + +},{"lodash._htmlescapes":13,"lodash.keys":32}],19:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1225,7 +1366,7 @@ var setBindData = !defineProperty ? noop : function(func, value) { module.exports = setBindData; -},{"lodash._isnative":12,"lodash.noop":13}],12:[function(require,module,exports){ +},{"lodash._isnative":14,"lodash.noop":33}],20:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1234,34 +1375,38 @@ module.exports = setBindData; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ +var objectTypes = require('lodash._objecttypes'); /** Used for native method references */ var objectProto = Object.prototype; -/** Used to resolve the internal [[Class]] of values */ -var toString = objectProto.toString; - -/** Used to detect if a method is native */ -var reNative = RegExp('^' + - String(toString) - .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - .replace(/toString| for [^\]]+/g, '.*?') + '$' -); +/** Native method shortcuts */ +var hasOwnProperty = objectProto.hasOwnProperty; /** - * Checks if `value` is a native function. + * A fallback implementation of `Object.keys` which produces an array of the + * given object's own enumerable property names. * * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. + * @type Function + * @param {Object} object The object to inspect. + * @returns {Array} Returns an array of property names. */ -function isNative(value) { - return typeof value == 'function' && reNative.test(value); -} +var shimKeys = function(object) { + var index, iterable = object, result = []; + if (!iterable) return result; + if (!(objectTypes[typeof object])) return result; + for (index in iterable) { + if (hasOwnProperty.call(iterable, index)) { + result.push(index); + } + } + return result +}; -module.exports = isNative; +module.exports = shimKeys; -},{}],13:[function(require,module,exports){ +},{"lodash._objecttypes":16}],21:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1272,26 +1417,110 @@ module.exports = isNative; */ /** - * A no-operation function. + * Slices the `collection` from the `start` index up to, but not including, + * the `end` index. * - * @static - * @memberOf _ - * @category Utilities - * @example + * Note: This function is used instead of `Array#slice` to support node lists + * in IE < 9 and to ensure dense arrays are returned. * - * var object = { 'name': 'fred' }; - * _.noop(object) === undefined; - * // => true + * @private + * @param {Array|Object|string} collection The collection to slice. + * @param {number} start The start index. + * @param {number} end The end index. + * @returns {Array} Returns the new array. */ -function noop() { - // no operation performed -} - -module.exports = noop; - -},{}],14:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) +function slice(array, start, end) { + start || (start = 0); + if (typeof end == 'undefined') { + end = array ? array.length : 0; + } + var index = -1, + length = end - start || 0, + result = Array(length < 0 ? 0 : length); + + while (++index < length) { + result[index] = array[start + index]; + } + return result; +} + +module.exports = slice; + +},{}],22:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreateCallback = require('lodash._basecreatecallback'), + keys = require('lodash.keys'), + objectTypes = require('lodash._objecttypes'); + +/** + * Assigns own enumerable properties of source object(s) to the destination + * object. Subsequent sources will overwrite property assignments of previous + * sources. If a callback is provided it will be executed to produce the + * assigned values. The callback is bound to `thisArg` and invoked with two + * arguments; (objectValue, sourceValue). + * + * @static + * @memberOf _ + * @type Function + * @alias extend + * @category Objects + * @param {Object} object The destination object. + * @param {...Object} [source] The source objects. + * @param {Function} [callback] The function to customize assigning values. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns the destination object. + * @example + * + * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); + * // => { 'name': 'fred', 'employer': 'slate' } + * + * var defaults = _.partialRight(_.assign, function(a, b) { + * return typeof a == 'undefined' ? b : a; + * }); + * + * var object = { 'name': 'barney' }; + * defaults(object, { 'name': 'fred', 'employer': 'slate' }); + * // => { 'name': 'barney', 'employer': 'slate' } + */ +var assign = function(object, source, guard) { + var index, iterable = object, result = iterable; + if (!iterable) return result; + var args = arguments, + argsIndex = 0, + argsLength = typeof guard == 'number' ? 2 : args.length; + if (argsLength > 3 && typeof args[argsLength - 2] == 'function') { + var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2); + } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') { + callback = args[--argsLength]; + } + while (++argsIndex < argsLength) { + iterable = args[argsIndex]; + if (iterable && objectTypes[typeof iterable]) { + var ownIndex = -1, + ownProps = objectTypes[typeof iterable] && keys(iterable), + length = ownProps ? ownProps.length : 0; + + while (++ownIndex < length) { + index = ownProps[ownIndex]; + result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]; + } + } + } + return result +}; + +module.exports = assign; + +},{"lodash._basecreatecallback":7,"lodash._objecttypes":16,"lodash.keys":32}],23:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` * Copyright 2012-2013 The Dojo Foundation * Based on Underscore.js 1.5.2 @@ -1331,115 +1560,90 @@ function bind(func, thisArg) { module.exports = bind; -},{"lodash._createwrapper":15,"lodash._slice":27}],15:[function(require,module,exports){ +},{"lodash._createwrapper":10,"lodash._slice":21}],24:[function(require,module,exports){ /** - * Lo-Dash 2.4.1 (Custom Build) + * Lo-Dash 2.4.4 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` * Copyright 2012-2013 The Dojo Foundation * Based on Underscore.js 1.5.2 * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseBind = require('lodash._basebind'), - baseCreateWrapper = require('lodash._basecreatewrapper'), - isFunction = require('lodash.isfunction'), - slice = require('lodash._slice'); +var baseCreateCallback = require('lodash._basecreatecallback'), + baseIsEqual = require('lodash._baseisequal'), + isObject = require('lodash.isobject'), + keys = require('lodash.keys'), + property = require('lodash.property'); /** - * Used for `Array` method references. + * Produces a callback bound to an optional `thisArg`. If `func` is a property + * name the created callback will return the property value for a given element. + * If `func` is an object the created callback will return `true` for elements + * that contain the equivalent object properties, otherwise it will return `false`. * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; - -/** Native method shortcuts */ -var push = arrayRef.push, - unshift = arrayRef.unshift; - -/** - * Creates a function that, when called, either curries or invokes `func` - * with an optional `this` binding and partially applied arguments. + * @static + * @memberOf _ + * @category Utilities + * @param {*} [func=identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of the created callback. + * @param {number} [argCount] The number of arguments the callback accepts. + * @returns {Function} Returns a callback function. + * @example * - * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of method flags to compose. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` - * 8 - `_.curry` (bound) - * 16 - `_.partial` - * 32 - `_.partialRight` - * @param {Array} [partialArgs] An array of arguments to prepend to those - * provided to the new function. - * @param {Array} [partialRightArgs] An array of arguments to append to those - * provided to the new function. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new function. + * var characters = [ + * { 'name': 'barney', 'age': 36 }, + * { 'name': 'fred', 'age': 40 } + * ]; + * + * // wrap to create custom callback shorthands + * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { + * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); + * return !match ? func(callback, thisArg) : function(object) { + * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; + * }; + * }); + * + * _.filter(characters, 'age__gt38'); + * // => [{ 'name': 'fred', 'age': 40 }] */ -function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - isPartial = bitmask & 16, - isPartialRight = bitmask & 32; - - if (!isBindKey && !isFunction(func)) { - throw new TypeError; +function createCallback(func, thisArg, argCount) { + var type = typeof func; + if (func == null || type == 'function') { + return baseCreateCallback(func, thisArg, argCount); } - if (isPartial && !partialArgs.length) { - bitmask &= ~16; - isPartial = partialArgs = false; + // handle "_.pluck" style callback shorthands + if (type != 'object') { + return property(func); } - if (isPartialRight && !partialRightArgs.length) { - bitmask &= ~32; - isPartialRight = partialRightArgs = false; + var props = keys(func), + key = props[0], + a = func[key]; + + // handle "_.where" style callback shorthands + if (props.length == 1 && a === a && !isObject(a)) { + // fast path the common case of providing an object with a single + // property containing a primitive value + return function(object) { + var b = object[key]; + return a === b && (a !== 0 || (1 / a == 1 / b)); + }; } - var bindData = func && func.__bindData__; - if (bindData && bindData !== true) { - // clone `bindData` - bindData = slice(bindData); - if (bindData[2]) { - bindData[2] = slice(bindData[2]); - } - if (bindData[3]) { - bindData[3] = slice(bindData[3]); - } - // set `thisBinding` is not previously bound - if (isBind && !(bindData[1] & 1)) { - bindData[4] = thisArg; - } - // set if previously bound but not currently (subsequent curried functions) - if (!isBind && bindData[1] & 1) { - bitmask |= 8; - } - // set curried arity if not yet set - if (isCurry && !(bindData[1] & 4)) { - bindData[5] = arity; - } - // append partial left arguments - if (isPartial) { - push.apply(bindData[2] || (bindData[2] = []), partialArgs); - } - // append partial right arguments - if (isPartialRight) { - unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); + return function(object) { + var length = props.length, + result = false; + + while (length--) { + if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { + break; + } } - // merge flags - bindData[1] |= bitmask; - return createWrapper.apply(null, bindData); - } - // fast path for `_.bind` - var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; - return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); + return result; + }; } -module.exports = createWrapper; +module.exports = createCallback; -},{"lodash._basebind":16,"lodash._basecreatewrapper":21,"lodash._slice":27,"lodash.isfunction":26}],16:[function(require,module,exports){ +},{"lodash._basecreatecallback":7,"lodash._baseisequal":9,"lodash.isobject":31,"lodash.keys":32,"lodash.property":34}],25:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1448,63 +1652,31 @@ module.exports = createWrapper; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreate = require('lodash._basecreate'), - isObject = require('lodash.isobject'), - setBindData = require('lodash._setbinddata'), - slice = require('lodash._slice'); +var escapeHtmlChar = require('lodash._escapehtmlchar'), + keys = require('lodash.keys'), + reUnescapedHtml = require('lodash._reunescapedhtml'); /** - * Used for `Array` method references. + * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their + * corresponding HTML entities. * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; - -/** Native method shortcuts */ -var push = arrayRef.push; - -/** - * The base implementation of `_.bind` that creates the bound function and - * sets its meta data. + * @static + * @memberOf _ + * @category Utilities + * @param {string} string The string to escape. + * @returns {string} Returns the escaped string. + * @example * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new bound function. + * _.escape('Fred, Wilma, & Pebbles'); + * // => 'Fred, Wilma, & Pebbles' */ -function baseBind(bindData) { - var func = bindData[0], - partialArgs = bindData[2], - thisArg = bindData[4]; - - function bound() { - // `Function#bind` spec - // http://es5.github.io/#x15.3.4.5 - if (partialArgs) { - // avoid `arguments` object deoptimizations by using `slice` instead - // of `Array.prototype.slice.call` and not assigning `arguments` to a - // variable as a ternary expression - var args = slice(partialArgs); - push.apply(args, arguments); - } - // mimic the constructor's `return` behavior - // http://es5.github.io/#x13.2.2 - if (this instanceof bound) { - // ensure `new bound` is an instance of `func` - var thisBinding = baseCreate(func.prototype), - result = func.apply(thisBinding, args || arguments); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisArg, args || arguments); - } - setBindData(bound, bindData); - return bound; +function escape(string) { + return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); } -module.exports = baseBind; +module.exports = escape; -},{"lodash._basecreate":17,"lodash._setbinddata":11,"lodash._slice":27,"lodash.isobject":20}],17:[function(require,module,exports){ -(function (global){ +},{"lodash._escapehtmlchar":11,"lodash._reunescapedhtml":18,"lodash.keys":32}],26:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1513,47 +1685,74 @@ module.exports = baseBind; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var isNative = require('lodash._isnative'), - isObject = require('lodash.isobject'), - noop = require('lodash.noop'); - -/* Native method shortcuts for methods with the same name as other `lodash` methods */ -var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate; +var createCallback = require('lodash.createcallback'), + forOwn = require('lodash.forown'); /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. + * Checks if the given callback returns truey value for **all** elements of + * a collection. The callback is bound to `thisArg` and invoked with three + * arguments; (value, index|key, collection). * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. + * If a property name is provided for `callback` the created "_.pluck" style + * callback will return the property value of the given element. + * + * If an object is provided for `callback` the created "_.where" style callback + * will return `true` for elements that have the properties of the given object, + * else `false`. + * + * @static + * @memberOf _ + * @alias all + * @category Collections + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [callback=identity] The function called + * per iteration. If a property name or object is provided it will be used + * to create a "_.pluck" or "_.where" style callback, respectively. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {boolean} Returns `true` if all elements passed the callback check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes']); + * // => false + * + * var characters = [ + * { 'name': 'barney', 'age': 36 }, + * { 'name': 'fred', 'age': 40 } + * ]; + * + * // using "_.pluck" callback shorthand + * _.every(characters, 'age'); + * // => true + * + * // using "_.where" callback shorthand + * _.every(characters, { 'age': 36 }); + * // => false */ -function baseCreate(prototype, properties) { - return isObject(prototype) ? nativeCreate(prototype) : {}; -} -// fallback for browsers without `Object.create` -if (!nativeCreate) { - baseCreate = (function() { - function Object() {} - return function(prototype) { - if (isObject(prototype)) { - Object.prototype = prototype; - var result = new Object; - Object.prototype = null; +function every(collection, callback, thisArg) { + var result = true; + callback = createCallback(callback, thisArg, 3); + + var index = -1, + length = collection ? collection.length : 0; + + if (typeof length == 'number') { + while (++index < length) { + if (!(result = !!callback(collection[index], index, collection))) { + break; } - return result || global.Object(); - }; - }()); + } + } else { + forOwn(collection, function(value, index, collection) { + return (result = !!callback(value, index, collection)); + }); + } + return result; } -module.exports = baseCreate; +module.exports = every; -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"lodash._isnative":18,"lodash.isobject":20,"lodash.noop":19}],18:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],19:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],20:[function(require,module,exports){ +},{"lodash.createcallback":24,"lodash.forown":28}],27:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1562,39 +1761,54 @@ arguments[4][13][0].apply(exports,arguments) * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var objectTypes = require('lodash._objecttypes'); +var baseCreateCallback = require('lodash._basecreatecallback'), + objectTypes = require('lodash._objecttypes'); /** - * Checks if `value` is the language type of Object. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * Iterates over own and inherited enumerable properties of an object, + * executing the callback for each property. The callback is bound to `thisArg` + * and invoked with three arguments; (value, key, object). Callbacks may exit + * iteration early by explicitly returning `false`. * * @static * @memberOf _ + * @type Function * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an object, else `false`. + * @param {Object} object The object to iterate over. + * @param {Function} [callback=identity] The function called per iteration. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns `object`. * @example * - * _.isObject({}); - * // => true + * function Shape() { + * this.x = 0; + * this.y = 0; + * } * - * _.isObject([1, 2, 3]); - * // => true + * Shape.prototype.move = function(x, y) { + * this.x += x; + * this.y += y; + * }; * - * _.isObject(1); - * // => false + * _.forIn(new Shape, function(value, key) { + * console.log(key); + * }); + * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) */ -function isObject(value) { - // check if the value is the ECMAScript language type of Object - // http://es5.github.io/#x8 - // and avoid a V8 bug - // http://code.google.com/p/v8/issues/detail?id=2291 - return !!(value && objectTypes[typeof value]); -} +var forIn = function(collection, callback, thisArg) { + var index, iterable = collection, result = iterable; + if (!iterable) return result; + if (!objectTypes[typeof iterable]) return result; + callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); + for (index in iterable) { + if (callback(iterable[index], index, collection) === false) return result; + } + return result +}; -module.exports = isObject; +module.exports = forIn; -},{"lodash._objecttypes":31}],21:[function(require,module,exports){ +},{"lodash._basecreatecallback":7,"lodash._objecttypes":16}],28:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1603,86 +1817,80 @@ module.exports = isObject; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreate = require('lodash._basecreate'), - isObject = require('lodash.isobject'), - setBindData = require('lodash._setbinddata'), - slice = require('lodash._slice'); +var baseCreateCallback = require('lodash._basecreatecallback'), + keys = require('lodash.keys'), + objectTypes = require('lodash._objecttypes'); /** - * Used for `Array` method references. + * Iterates over own enumerable properties of an object, executing the callback + * for each property. The callback is bound to `thisArg` and invoked with three + * arguments; (value, key, object). Callbacks may exit iteration early by + * explicitly returning `false`. * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. + * @static + * @memberOf _ + * @type Function + * @category Objects + * @param {Object} object The object to iterate over. + * @param {Function} [callback=identity] The function called per iteration. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns `object`. + * @example + * + * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { + * console.log(key); + * }); + * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) */ -var arrayRef = []; +var forOwn = function(collection, callback, thisArg) { + var index, iterable = collection, result = iterable; + if (!iterable) return result; + if (!objectTypes[typeof iterable]) return result; + callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); + var ownIndex = -1, + ownProps = objectTypes[typeof iterable] && keys(iterable), + length = ownProps ? ownProps.length : 0; -/** Native method shortcuts */ -var push = arrayRef.push; + while (++ownIndex < length) { + index = ownProps[ownIndex]; + if (callback(iterable[index], index, collection) === false) return result; + } + return result +}; + +module.exports = forOwn; +},{"lodash._basecreatecallback":7,"lodash._objecttypes":16,"lodash.keys":32}],29:[function(require,module,exports){ /** - * The base implementation of `createWrapper` that creates the wrapper and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new function. + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license */ -function baseCreateWrapper(bindData) { - var func = bindData[0], - bitmask = bindData[1], - partialArgs = bindData[2], - partialRightArgs = bindData[3], - thisArg = bindData[4], - arity = bindData[5]; - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - key = func; - - function bound() { - var thisBinding = isBind ? thisArg : this; - if (partialArgs) { - var args = slice(partialArgs); - push.apply(args, arguments); - } - if (partialRightArgs || isCurry) { - args || (args = slice(arguments)); - if (partialRightArgs) { - push.apply(args, partialRightArgs); - } - if (isCurry && args.length < arity) { - bitmask |= 16 & ~32; - return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); - } - } - args || (args = arguments); - if (isBindKey) { - func = thisBinding[key]; - } - if (this instanceof bound) { - thisBinding = baseCreate(func.prototype); - var result = func.apply(thisBinding, args); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisBinding, args); - } - setBindData(bound, bindData); - return bound; +/** + * This method returns the first argument provided to it. + * + * @static + * @memberOf _ + * @category Utilities + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'name': 'fred' }; + * _.identity(object) === object; + * // => true + */ +function identity(value) { + return value; } -module.exports = baseCreateWrapper; +module.exports = identity; -},{"lodash._basecreate":22,"lodash._setbinddata":11,"lodash._slice":27,"lodash.isobject":25}],22:[function(require,module,exports){ -arguments[4][17][0].apply(exports,arguments) -},{"dup":17,"lodash._isnative":23,"lodash.isobject":25,"lodash.noop":24}],23:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],24:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],25:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":31}],26:[function(require,module,exports){ +},{}],30:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1711,47 +1919,7 @@ function isFunction(value) { module.exports = isFunction; -},{}],27:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** - * Slices the `collection` from the `start` index up to, but not including, - * the `end` index. - * - * Note: This function is used instead of `Array#slice` to support node lists - * in IE < 9 and to ensure dense arrays are returned. - * - * @private - * @param {Array|Object|string} collection The collection to slice. - * @param {number} start The start index. - * @param {number} end The end index. - * @returns {Array} Returns the new array. - */ -function slice(array, start, end) { - start || (start = 0); - if (typeof end == 'undefined') { - end = array ? array.length : 0; - } - var index = -1, - length = end - start || 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = array[start + index]; - } - return result; -} - -module.exports = slice; - -},{}],28:[function(require,module,exports){ +},{}],31:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1760,96 +1928,39 @@ module.exports = slice; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ +var objectTypes = require('lodash._objecttypes'); /** - * This method returns the first argument provided to it. + * Checks if `value` is the language type of Object. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ - * @category Utilities - * @param {*} value Any value. - * @returns {*} Returns `value`. + * @category Objects + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if the `value` is an object, else `false`. * @example * - * var object = { 'name': 'fred' }; - * _.identity(object) === object; + * _.isObject({}); * // => true - */ -function identity(value) { - return value; -} - -module.exports = identity; - -},{}],29:[function(require,module,exports){ -(function (global){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var isNative = require('lodash._isnative'); - -/** Used to detect functions containing a `this` reference */ -var reThis = /\bthis\b/; - -/** - * An object used to flag environments features. - * - * @static - * @memberOf _ - * @type Object - */ -var support = {}; - -/** - * Detect if functions can be decompiled by `Function#toString` - * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps). * - * @memberOf _.support - * @type boolean - */ -support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; }); - -/** - * Detect if `Function#name` is supported (all but IE). + * _.isObject([1, 2, 3]); + * // => true * - * @memberOf _.support - * @type boolean - */ -support.funcNames = typeof Function.name == 'string'; - -module.exports = support; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"lodash._isnative":30}],30:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],31:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + * _.isObject(1); + * // => false */ +function isObject(value) { + // check if the value is the ECMAScript language type of Object + // http://es5.github.io/#x8 + // and avoid a V8 bug + // http://code.google.com/p/v8/issues/detail?id=2291 + return !!(value && objectTypes[typeof value]); +} -/** Used to determine if values are of the language type Object */ -var objectTypes = { - 'boolean': false, - 'function': true, - 'object': true, - 'number': false, - 'string': false, - 'undefined': false -}; - -module.exports = objectTypes; +module.exports = isObject; -},{}],32:[function(require,module,exports){ +},{"lodash._objecttypes":16}],32:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1887,9 +1998,7 @@ var keys = !nativeKeys ? shimKeys : function(object) { module.exports = keys; -},{"lodash._isnative":33,"lodash._shimkeys":34,"lodash.isobject":35}],33:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],34:[function(require,module,exports){ +},{"lodash._isnative":14,"lodash._shimkeys":20,"lodash.isobject":31}],33:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1898,40 +2007,26 @@ arguments[4][12][0].apply(exports,arguments) * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var objectTypes = require('lodash._objecttypes'); - -/** Used for native method references */ -var objectProto = Object.prototype; - -/** Native method shortcuts */ -var hasOwnProperty = objectProto.hasOwnProperty; /** - * A fallback implementation of `Object.keys` which produces an array of the - * given object's own enumerable property names. + * A no-operation function. * - * @private - * @type Function - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. + * @static + * @memberOf _ + * @category Utilities + * @example + * + * var object = { 'name': 'fred' }; + * _.noop(object) === undefined; + * // => true */ -var shimKeys = function(object) { - var index, iterable = object, result = []; - if (!iterable) return result; - if (!(objectTypes[typeof object])) return result; - for (index in iterable) { - if (hasOwnProperty.call(iterable, index)) { - result.push(index); - } - } - return result -}; +function noop() { + // no operation performed +} -module.exports = shimKeys; +module.exports = noop; -},{"lodash._objecttypes":31}],35:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":31}],36:[function(require,module,exports){ +},{}],34:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1940,31 +2035,41 @@ arguments[4][20][0].apply(exports,arguments) * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var escapeHtmlChar = require('lodash._escapehtmlchar'), - keys = require('lodash.keys'), - reUnescapedHtml = require('lodash._reunescapedhtml'); /** - * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their - * corresponding HTML entities. + * Creates a "_.pluck" style function, which returns the `key` value of a + * given object. * * @static * @memberOf _ * @category Utilities - * @param {string} string The string to escape. - * @returns {string} Returns the escaped string. + * @param {string} key The name of the property to retrieve. + * @returns {Function} Returns the new function. * @example * - * _.escape('Fred, Wilma, & Pebbles'); - * // => 'Fred, Wilma, & Pebbles' + * var characters = [ + * { 'name': 'fred', 'age': 40 }, + * { 'name': 'barney', 'age': 36 } + * ]; + * + * var getName = _.property('name'); + * + * _.map(characters, getName); + * // => ['barney', 'fred'] + * + * _.sortBy(characters, getName); + * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] */ -function escape(string) { - return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); +function property(key) { + return function(object) { + return object[key]; + }; } -module.exports = escape; +module.exports = property; -},{"lodash._escapehtmlchar":37,"lodash._reunescapedhtml":39,"lodash.keys":41}],37:[function(require,module,exports){ +},{}],35:[function(require,module,exports){ +(function (global){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1973,1853 +2078,1608 @@ module.exports = escape; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var htmlEscapes = require('lodash._htmlescapes'); +var isNative = require('lodash._isnative'); + +/** Used to detect functions containing a `this` reference */ +var reThis = /\bthis\b/; /** - * Used by `escape` to convert characters to HTML entities. + * An object used to flag environments features. * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. + * @static + * @memberOf _ + * @type Object */ -function escapeHtmlChar(match) { - return htmlEscapes[match]; -} - -module.exports = escapeHtmlChar; +var support = {}; -},{"lodash._htmlescapes":38}],38:[function(require,module,exports){ /** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + * Detect if functions can be decompiled by `Function#toString` + * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps). + * + * @memberOf _.support + * @type boolean */ +support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; }); /** - * Used to convert characters to HTML entities: + * Detect if `Function#name` is supported (all but IE). * - * Though the `>` character is escaped for symmetry, characters like `>` and `/` - * don't require escaping in HTML and have no special meaning unless they're part - * of a tag or an unquoted attribute value. - * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") + * @memberOf _.support + * @type boolean */ -var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' +support.funcNames = typeof Function.name == 'string'; + +module.exports = support; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"lodash._isnative":14}],36:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require("react"); + +/* You know when you want to propagate input to a parent... + * but then that parent does something with the input... + * then changing the props of the input... + * on every keystroke... + * so if some input is invalid or incomplete... + * the input gets reset or otherwise effed... + * + * This is the solution. + * + * Enough melodrama. Its an input that only sends changes + * to its parent on blur. + */ +var BlurInput = React.createClass({displayName: 'BlurInput', + propTypes: { + value: React.PropTypes.string.isRequired, + onChange: React.PropTypes.func.isRequired + }, + getInitialState: function() { + return { value: this.props.value }; + }, + render: function() { + return this.transferPropsTo(React.DOM.input( + {type:"text", + value:this.state.value, + onChange:this.handleChange, + onBlur:this.handleBlur} )); + }, + componentWillReceiveProps: function(nextProps) { + this.setState({ value: nextProps.value }); + }, + handleChange: function(e) { + this.setState({ value: e.target.value }); + }, + handleBlur: function(e) { + this.props.onChange(e.target.value); + } +}); + +module.exports = BlurInput; + +},{"react":45}],37:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require('react'); +var RCSS = require('rcss'); +var _ = require('underscore'); + +var outerStyle = { + display: 'inline-block', }; -module.exports = htmlEscapes; +var buttonStyle = { + backgroundColor: 'white', + border: '1px solid #ccc', + borderBottom: '1px solid #ccc', + borderLeft: '0', + cursor: 'pointer', + margin: '0', + padding: '5px 10px', + position: 'relative', // for hover -},{}],39:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + ':first-child': { + borderLeft: '1px solid #ccc', + borderTopLeftRadius: '3px', + borderBottomLeftRadius: '3px' + }, + + ':last-child': { + borderRight: '1px solid #ccc', + borderTopRightRadius: '3px', + borderBottomRightRadius: '3px' + }, + + ':hover': { + backgroundColor: '#ccc' + }, + + ':focus': { + zIndex: '2' + } +}; + +var selectedStyle = { + backgroundColor: '#ddd' +}; + +RCSS.createClass(outerStyle); +RCSS.createClass(buttonStyle); +RCSS.createClass(selectedStyle); + +/* ButtonGroup is an aesthetically pleasing group of buttons. + * + * The class requires these properties: + * buttons - an array of objects with keys: + * "value": this is the value returned when the button is selected + * "text": this is the text shown on the button + * "title": this is the title-text shown on hover + * onChange - a function that is provided with the updated value + * (which it then is responsible for updating) + * + * The class has these optional properties: + * value - the initial value of the button selected, defaults to null. + * allowEmpty - if false, exactly one button _must_ be selected; otherwise + * it defaults to true and _at most_ one button (0 or 1) may be selected. + * + * Requires stylesheets/perseus-admin-package/editor.less to look nice. */ -var htmlEscapes = require('lodash._htmlescapes'), - keys = require('lodash.keys'); -/** Used to match HTML entities and HTML characters */ -var reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); +var ButtonGroup = React.createClass({displayName: 'ButtonGroup', + propTypes: { + value: React.PropTypes.any, + buttons: React.PropTypes.arrayOf(React.PropTypes.shape({ + value: React.PropTypes.any.isRequired, + text: React.PropTypes.renderable, + title: React.PropTypes.string + })).isRequired, + onChange: React.PropTypes.func.isRequired, + allowEmpty: React.PropTypes.bool + }, -module.exports = reUnescapedHtml; + getDefaultProps: function() { + return { + value: null, + allowEmpty: true + }; + }, -},{"lodash._htmlescapes":40,"lodash.keys":41}],40:[function(require,module,exports){ -arguments[4][38][0].apply(exports,arguments) -},{"dup":38}],41:[function(require,module,exports){ -arguments[4][32][0].apply(exports,arguments) -},{"dup":32,"lodash._isnative":42,"lodash._shimkeys":43,"lodash.isobject":45}],42:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],43:[function(require,module,exports){ -arguments[4][34][0].apply(exports,arguments) -},{"dup":34,"lodash._objecttypes":44}],44:[function(require,module,exports){ -arguments[4][31][0].apply(exports,arguments) -},{"dup":31}],45:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":46}],46:[function(require,module,exports){ -arguments[4][31][0].apply(exports,arguments) -},{"dup":31}],47:[function(require,module,exports){ -var _validCSSProps = { - 'alignment-adjust': true, - 'alignment-baseline': true, - 'animation': true, - 'animation-delay': true, - 'animation-direction': true, - 'animation-duration': true, - 'animation-iteration-count': true, - 'animation-name': true, - 'animation-play-state': true, - 'animation-timing-function': true, - 'appearance': true, - 'backface-visibility': true, - 'background': true, - 'background-attachment': true, - 'background-clip': true, - 'background-color': true, - 'background-image': true, - 'background-origin': true, - 'background-position': true, - 'background-repeat': true, - 'background-size': true, - 'baseline-shift': true, - 'bookmark-label': true, - 'bookmark-level': true, - 'bookmark-target': true, - 'border': true, - 'border-bottom': true, - 'border-bottom-color': true, - 'border-bottom-left-radius': true, - 'border-bottom-right-radius': true, - 'border-bottom-style': true, - 'border-bottom-width': true, - 'border-collapse': true, - 'border-color': true, - 'border-image': true, - 'border-image-outset': true, - 'border-image-repeat': true, - 'border-image-slice': true, - 'border-image-source': true, - 'border-image-width': true, - 'border-left': true, - 'border-left-color': true, - 'border-left-style': true, - 'border-left-width': true, - 'border-radius': true, - 'border-right': true, - 'border-right-color': true, - 'border-right-style': true, - 'border-right-width': true, - 'border-spacing': true, - 'border-style': true, - 'border-top': true, - 'border-top-color': true, - 'border-top-left-radius': true, - 'border-top-right-radius': true, - 'border-top-style': true, - 'border-top-width': true, - 'border-width': true, - 'bottom': true, - 'box-align': true, - 'box-decoration-break': true, - 'box-direction': true, - 'box-flex': true, - 'box-flex-group': true, - 'box-lines': true, - 'box-ordinal-group': true, - 'box-orient': true, - 'box-pack': true, - 'box-shadow': true, - 'box-sizing': true, - 'caption-side': true, - 'clear': true, - 'clip': true, - 'color': true, - 'color-profile': true, - 'column-count': true, - 'column-fill': true, - 'column-gap': true, - 'column-rule': true, - 'column-rule-color': true, - 'column-rule-style': true, - 'column-rule-width': true, - 'column-span': true, - 'column-width': true, - 'columns': true, - 'content': true, - 'counter-increment': true, - 'counter-reset': true, - 'crop': true, - 'cursor': true, - 'direction': true, - 'display': true, - 'dominant-baseline': true, - 'drop-initial-after-adjust': true, - 'drop-initial-after-align': true, - 'drop-initial-before-adjust': true, - 'drop-initial-before-align': true, - 'drop-initial-size': true, - 'drop-initial-value': true, - 'empty-cells': true, - 'fit': true, - 'fit-position': true, - 'float': true, - 'float-offset': true, - 'font': true, - 'font-family': true, - 'font-size': true, - 'font-size-adjust': true, - 'font-stretch': true, - 'font-style': true, - 'font-variant': true, - 'font-weight': true, - 'grid-columns': true, - 'grid-rows': true, - 'hanging-punctuation': true, - 'height': true, - 'hyphenate-after': true, - 'hyphenate-before': true, - 'hyphenate-character': true, - 'hyphenate-lines': true, - 'hyphenate-resource': true, - 'hyphens': true, - 'icon': true, - 'image-orientation': true, - 'image-resolution': true, - 'inline-box-align': true, - 'left': true, - 'letter-spacing': true, - 'line-height': true, - 'line-stacking': true, - 'line-stacking-ruby': true, - 'line-stacking-shift': true, - 'line-stacking-strategy': true, - 'list-style': true, - 'list-style-image': true, - 'list-style-position': true, - 'list-style-type': true, - 'margin': true, - 'margin-bottom': true, - 'margin-left': true, - 'margin-right': true, - 'margin-top': true, - 'mark': true, - 'mark-after': true, - 'mark-before': true, - 'marks': true, - 'marquee-direction': true, - 'marquee-play-count': true, - 'marquee-speed': true, - 'marquee-style': true, - 'max-height': true, - 'max-width': true, - 'min-height': true, - 'min-width': true, - 'move-to': true, - 'nav-down': true, - 'nav-index': true, - 'nav-left': true, - 'nav-right': true, - 'nav-up': true, - 'opacity': true, - 'orphans': true, - 'outline': true, - 'outline-color': true, - 'outline-offset': true, - 'outline-style': true, - 'outline-width': true, - 'overflow': true, - 'overflow-style': true, - 'overflow-x': true, - 'overflow-y': true, - 'padding': true, - 'padding-bottom': true, - 'padding-left': true, - 'padding-right': true, - 'padding-top': true, - 'page': true, - 'page-break-after': true, - 'page-break-before': true, - 'page-break-inside': true, - 'page-policy': true, - 'perspective': true, - 'perspective-origin': true, - 'phonemes': true, - 'position': true, - 'punctuation-trim': true, - 'quotes': true, - 'rendering-intent': true, - 'resize': true, - 'rest': true, - 'rest-after': true, - 'rest-before': true, - 'right': true, - 'rotation': true, - 'rotation-point': true, - 'ruby-align': true, - 'ruby-overhang': true, - 'ruby-position': true, - 'ruby-span': true, - 'size': true, - 'string-set': true, - 'table-layout': true, - 'target': true, - 'target-name': true, - 'target-new': true, - 'target-position': true, - 'text-align': true, - 'text-align-last': true, - 'text-decoration': true, - 'text-height': true, - 'text-indent': true, - 'text-justify': true, - 'text-outline': true, - 'text-overflow': true, - 'text-shadow': true, - 'text-transform': true, - 'text-wrap': true, - 'top': true, - 'transform': true, - 'transform-origin': true, - 'transform-style': true, - 'transition': true, - 'transition-delay': true, - 'transition-duration': true, - 'transition-property': true, - 'transition-timing-function': true, - 'unicode-bidi': true, - 'user-select': true, - 'vertical-align': true, - 'visibility': true, - 'voice-balance': true, - 'voice-duration': true, - 'voice-pitch': true, - 'voice-pitch-range': true, - 'voice-rate': true, - 'voice-stress': true, - 'voice-volume': true, - 'white-space': true, - 'widows': true, - 'width': true, - 'word-break': true, - 'word-spacing': true, - 'word-wrap': true, - 'z-index': true -} - -var vendorPrefixRegEx = /^-.+-/; - -module.exports = function(prop) { - if (prop[0] === '-') { - return !!_validCSSProps[prop.replace(vendorPrefixRegEx, '')]; - } - return !!_validCSSProps[prop]; -}; - -},{}],48:[function(require,module,exports){ -var every = require('lodash.every'); + render: function() { + var value = this.props.value; + var buttons = _(this.props.buttons).map(function(button, i) { + var maybeSelected = button.value === value ? + selectedStyle.className : + ""; + return React.DOM.button( {title:button.title, + id:"" + i, + ref:"button" + i, + key:"" + i, + className:(buttonStyle.className + " " + maybeSelected), + onClick:this.toggleSelect.bind(this, button.value)}, + button.text || "" + button.value + ); + }.bind(this)); -function isValidRatio(ratio) { - var re = /\d+\/\d+/; - return !!ratio.match(re); -} + return React.DOM.div( {className:outerStyle.className}, + buttons + ); + }, -function isValidInteger(integer) { - var re = /\d+/; - return !!integer.match(re); -} + focus: function() { + this.getDOMNode().focus(); + return true; + }, -function isValidLength(length) { - var re = /\d+(?:ex|em|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc)?$/; - return !!length.match(re); -} + toggleSelect: function(newValue) { + var value = this.props.value; -function isValidOrientation(orientation) { - return orientation === 'landscape' || orientation === 'portrait'; -} + if (this.props.allowEmpty) { + // Select the new button or unselect if it's already selected + this.props.onChange(value !== newValue ? newValue : null); + } else { + this.props.onChange(newValue); + } + } +}); -function isValidScan(scan) { - return scan === 'progressive' || scan === 'interlace'; -} +module.exports = ButtonGroup; -function isValidResolution(resolution) { - var re = /(?:\+|-)?(?:\d+|\d*\.\d+)(?:e\d+)?(?:dpi|dpcm|dppx)$/; - return !!resolution.match(re); -} +},{"rcss":40,"react":45,"underscore":46}],38:[function(require,module,exports){ +/** @jsx React.DOM */ -function isValidValue(value) { - return value != null && typeof value !== 'boolean' && value !== ''; -} +var React = require('react'); -var _mediaFeatureValidator = { - 'width': isValidLength, - 'min-width': isValidLength, - 'max-width': isValidLength, - 'height': isValidLength, - 'min-height': isValidLength, - 'max-height': isValidLength, - 'device-width': isValidLength, - 'min-device-width': isValidLength, - 'max-device-width': isValidLength, - 'device-height': isValidLength, - 'min-device-height': isValidLength, - 'max-device-height': isValidLength, - 'aspect-ratio': isValidRatio, - 'min-aspect-ratio': isValidRatio, - 'max-aspect-ratio': isValidRatio, - 'device-aspect-ratio': isValidRatio, - 'min-device-aspect-ratio': isValidRatio, - 'max-device-aspect-ratio': isValidRatio, - 'color': isValidValue, - 'min-color': isValidValue, - 'max-color': isValidValue, - 'color-index': isValidInteger, - 'min-color-index': isValidInteger, - 'max-color-index': isValidInteger, - 'monochrome': isValidInteger, - 'min-monochrome': isValidInteger, - 'max-monochrome': isValidInteger, - 'resolution': isValidResolution, - 'min-resolution': isValidResolution, - 'max-resolution': isValidResolution, - 'scan': isValidScan, - 'grid': isValidInteger, - 'orientation': isValidOrientation +/* This component makes its children a drag target. Example: + * + * Drag to me + * + * ... + * + * handleDrop: function(e) { + * this.addImages(e.nativeEvent.dataTransfer.files); + * } + * + * Now "Drag to me" will be a drag target - when something is dragged over it, + * the element will become partially transparent as a visual indicator that + * it's a target. + */ +// TODO(joel) - indicate before the hover is over the target that it's possible +// to drag into the target. This would (I think) require a high level handler - +// like on Perseus itself, waiting for onDragEnter, then passing down the +// event. Sounds like a pain. Possible workaround - create a div covering the +// entire page... +// +// Other extensions: +// * custom styles for global drag and dragOver +// * only respond to certain types of drags (only images for instance)! +var DragTarget = React.createClass({displayName: 'DragTarget', + propTypes: { + onDrop: React.PropTypes.func.isRequired, + component: React.PropTypes.component, + shouldDragHighlight: React.PropTypes.func + }, + render: function() { + var opacity = this.state.dragHover ? { "opacity": 0.3 } : {}; + var component = this.props.component; + + return this.transferPropsTo( + component( {style:opacity, + onDrop:this.handleDrop, + onDragEnd:this.handleDragEnd, + onDragOver:this.handleDragOver, + onDragEnter:this.handleDragEnter, + onDragLeave:this.handleDragLeave}, + this.props.children + ) + ); + }, + getInitialState: function() { + return { dragHover: false }; + }, + getDefaultProps: function() { + return { + component: React.DOM.div, + shouldDragHighlight: function() {return true;} + }; + }, + handleDrop: function(e) { + e.stopPropagation(); + e.preventDefault(); + this.setState({ dragHover: false }); + this.props.onDrop(e); + }, + handleDragEnd: function() { + this.setState({ dragHover: false }); + }, + handleDragOver: function(e) { + e.preventDefault(); + }, + handleDragLeave: function() { + this.setState({ dragHover: false }); + }, + handleDragEnter: function(e) { + this.setState({ dragHover: this.props.shouldDragHighlight(e) }); + } +}); + +module.exports = DragTarget; + +},{"react":45}],39:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require('react'); +var RCSS = require('rcss'); +var _ = require('underscore'); + +var colors = { + grayLight: '#aaa', + basicBorderColor: '#ccc', + white: '#fff' }; -var _validMediaFeatures = { - 'width': true, - 'min-width': true, - 'max-width': true, - 'height': true, - 'min-height': true, - 'max-height': true, - 'device-width': true, - 'min-device-width': true, - 'max-device-width': true, - 'device-height': true, - 'min-device-height': true, - 'max-device-height': true, - 'aspect-ratio': true, - 'min-aspect-ratio': true, - 'max-aspect-ratio': true, - 'device-aspect-ratio': true, - 'min-device-aspect-ratio': true, - 'max-device-aspect-ratio': true, - 'color': true, - 'min-color': true, - 'max-color': true, - 'color-index': true, - 'min-color-index': true, - 'max-color-index': true, - 'monochrome': true, - 'min-monochrome': true, - 'max-monochrome': true, - 'resolution': true, - 'min-resolution': true, - 'max-resolution': true, - 'scan': true, - 'grid': true, - 'orientation': true +var infoTip = { + display: 'inline-block', + marginLeft: '5px', + position: 'relative' }; -var _validMediaTypes = { - 'all': true, - 'aural': true, - 'braille': true, - 'handheld': true, - 'print': true, - 'projection': true, - 'screen': true, - 'tty': true, - 'tv': true, - 'embossed': true +var infoTipI = { + cursor: 'pointer' }; -var _validQualifiers = { - 'not': true, - 'only': true +var infoTipContainer = { + position: 'absolute', + 'top': '-12px', + left: '22px', + zIndex: '1000' }; -function isValidFeature(feature) { - return !!_validMediaFeatures[feature]; -} +var triangleBeforeAfter = { + borderBottom: '9px solid transparent', + borderTop: '9px solid transparent', + content: ' ', + height: '0', + position: 'absolute', + 'top': '0', + width: '0' +}; -function isValidQualifier(qualifier) { - return !!_validQualifiers[qualifier]; -} +var infoTipTriangle = { + height: '10px', + left: '0', + position: 'absolute', + 'top': '8px', + width: '0', + zIndex: '1', -function isValidMediaType(mediaType) { - return !!_validMediaTypes[mediaType]; -} + ':before': _.extend({}, triangleBeforeAfter, { + borderRight: '9px solid #bbb', + right: '0', + }), -function isValidQualifiedMediaType(mediaType) { - var terms = mediaType.trim().split(/\s+/); - switch (terms.length) { - case 1: - return isValidMediaType(terms[0]); - case 2: - return isValidQualifier(terms[0]) && isValidMediaType(terms[1]); - default: - return false; - } -} + ':after': _.extend({}, triangleBeforeAfter, { + borderRight: ("9px solid " + colors.white), + right: '-1px' + }) +}; -function isValidExpression(expression) { - if (expression.length < 2) { - return false; - } +var basicBorder = { + border: ("1px solid " + colors.basicBorderColor) +}; - // Parentheses are required around expressions - if (expression[0] !== '(' || expression[expression.length - 1] !== ')') { - return false; - } +var boxShadow = function(str) { return { boxShadow: str }; }; - // Remove parentheses and spacess - expression = expression.substring(1, expression.length - 1); +var verticalShadow = RCSS.merge( + basicBorder, + boxShadow(("0 1px 3px " + colors.basicBorderColor)), + { borderBottom: ("1px solid " + colors.grayLight) } +); - // Is there a value to accompany the media feature? - var featureAndValue = expression.split(/\s*:\s*/); - switch (featureAndValue.length) { - case 1: - var feature = featureAndValue[0].trim(); - return isValidFeature(feature); - case 2: - var feature = featureAndValue[0].trim(); - var value = featureAndValue[1].trim(); - return isValidFeature(feature) && - _mediaFeatureValidator[feature](value); - default: - return false; - } -} +var infoTipContentContainer = RCSS.merge(verticalShadow, { + background: colors.white, + padding: '5px 10px', + width: '240px' +}); -function isValidMediaQuery(query) { - var andSplitter = /\s+and\s+/; - var queryTerms = query.split(andSplitter); - return (isValidQualifiedMediaType(queryTerms[0]) || - isValidExpression(queryTerms[0])) && - every(queryTerms.slice(1), isValidExpression); -} +RCSS.createClass(infoTip); +RCSS.createClass(infoTipI); +RCSS.createClass(infoTipTriangle); +RCSS.createClass(verticalShadow); +RCSS.createClass(infoTipContainer); +RCSS.createClass(infoTipContentContainer); -function isValidMediaQueryList(mediaQuery) { - mediaQuery = mediaQuery.toLowerCase(); +var questionMark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2N2M3NTAxYS04YmVlLTQ0M2MtYmRiNS04OGM2N2IxN2NhYzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUJCRTk4Qjc4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUJCRTk4QjY4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGE5ZDI0OTMtODk1NC00OGFkLTlhMTgtZDAwM2MwYWNjNDJlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY3Yzc1MDFhLThiZWUtNDQzYy1iZGI1LTg4YzY3YjE3Y2FjMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqm89uYAAADMSURBVHjaXJA9DoJAEIUH1M4TUHIFsCMGen9OwCGw1YRGW2ntKel0exsojHIBC0ouQAyUviFDstmXfNmZeS+zm7XSNCXRFiRgJf0bXIHixpbhGdxBBJYC1w/xaA424MhNEATkui71fU9KqfEU78UbD9PdbJRlOdae55GmhIP+1NV1TcMwkOM41DSNHvRtMhTHMRVFQW3b6mOLgx99kue5GRp/gIOZuZGvNpTNwjD8oliANU+qqqKu6/TQBdymN57AHjzBT+B6Jx79BRgAvc49kQA4yxgAAAAASUVORK5CYII='; // @NoLint - if (mediaQuery.substring(0, 6) !== '@media') { - return false; +var InfoTip = React.createClass({displayName: 'InfoTip', + getInitialState: function() { + return { + hover: false + }; + }, + + render: function() { + return React.DOM.div( {className:infoTip.className}, + React.DOM.img( {width:10, + height:10, + src:questionMark, + onMouseEnter:this.handleMouseEnter, + onMouseLeave:this.handleMouseLeave} ), + React.DOM.div( {className:infoTipContainer.className, + style:{display: this.state.hover ? 'block' : 'none'}}, + React.DOM.div( {className:infoTipTriangle.className} ), + /* keep the classes here - used for selectors on KA */ + React.DOM.div( {className:infoTipContentContainer.className}, + this.props.children + ) + ) + ); + }, + + handleMouseEnter: function() { + this.setState({hover: true}); + }, + + handleMouseLeave: function() { + this.setState({hover: false}); } +}); - var commaSplitter = /\s*,\s*/; - var queryList = mediaQuery.substring(7, mediaQuery.length) - .split(commaSplitter); - return every(queryList, isValidMediaQuery); -} +module.exports = InfoTip; -module.exports = isValidMediaQueryList +},{"rcss":40,"react":45,"underscore":46}],40:[function(require,module,exports){ +var assign = require('lodash.assign'); -},{"lodash.every":49}],49:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var createCallback = require('lodash.createcallback'), - forOwn = require('lodash.forown'); +var styleRuleValidator = require('./styleRuleValidator'); +var styleRuleConverter = require('./styleRuleConverter'); +var mediaQueryValidator = require('valid-media-queries'); -/** - * Checks if the given callback returns truey value for **all** elements of - * a collection. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if all elements passed the callback check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes']); - * // => false - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.every(characters, 'age'); - * // => true - * - * // using "_.where" callback shorthand - * _.every(characters, { 'age': 36 }); - * // => false - */ -function every(collection, callback, thisArg) { - var result = true; - callback = createCallback(callback, thisArg, 3); +var existingClasses = {}; +var styleTag = createStyleTag(); - var index = -1, - length = collection ? collection.length : 0; +var classNameId = 0; +var randomSuffix = Math.random().toString(36).slice(-5); - if (typeof length == 'number') { - while (++index < length) { - if (!(result = !!callback(collection[index], index, collection))) { - break; - } - } - } else { - forOwn(collection, function(value, index, collection) { - return (result = !!callback(value, index, collection)); - }); - } - return result; +function generateValidCSSClassName() { + // CSS classNames can't start with a number. + return 'c' + (classNameId++) + '-' + randomSuffix; } -module.exports = every; +function objToCSS(style) { + var serialized = ''; + for (var propName in style) { + // we put that ourselves + if (propName == 'className') continue; -},{"lodash.createcallback":50,"lodash.forown":86}],50:[function(require,module,exports){ -/** - * Lo-Dash 2.4.4 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - baseIsEqual = require('lodash._baseisequal'), - isObject = require('lodash.isobject'), - keys = require('lodash.keys'), - property = require('lodash.property'); + var cssPropName = styleRuleConverter.hyphenateProp(propName); + if (!styleRuleValidator.isValidProp(cssPropName)) { + console.warn( + '%s (transformed into %s) is not a valid CSS property name.', propName, cssPropName + ); + continue; + } -/** - * Produces a callback bound to an optional `thisArg`. If `func` is a property - * name the created callback will return the property value for a given element. - * If `func` is an object the created callback will return `true` for elements - * that contain the equivalent object properties, otherwise it will return `false`. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // wrap to create custom callback shorthands - * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { - * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); - * return !match ? func(callback, thisArg) : function(object) { - * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; - * }; - * }); - * - * _.filter(characters, 'age__gt38'); - * // => [{ 'name': 'fred', 'age': 40 }] - */ -function createCallback(func, thisArg, argCount) { - var type = typeof func; - if (func == null || type == 'function') { - return baseCreateCallback(func, thisArg, argCount); - } - // handle "_.pluck" style callback shorthands - if (type != 'object') { - return property(func); - } - var props = keys(func), - key = props[0], - a = func[key]; + var styleValue = style[propName]; + if (!styleRuleValidator.isValidValue(styleValue)) continue; - // handle "_.where" style callback shorthands - if (props.length == 1 && a === a && !isObject(a)) { - // fast path the common case of providing an object with a single - // property containing a primitive value - return function(object) { - var b = object[key]; - return a === b && (a !== 0 || (1 / a == 1 / b)); - }; + if (styleValue !== null) { + serialized += cssPropName + ':'; + serialized += styleRuleConverter.escapeValueForProp(styleValue, + cssPropName) + ';'; + } } - return function(object) { - var length = props.length, - result = false; + return serialized || null; +} - while (length--) { - if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { - break; - } +function createStyleTag() { + var tag = document.createElement('style'); + document.getElementsByTagName('head')[0].appendChild(tag); + return tag; +} + +function styleToCSS(style) { + var styleStr = '.' + style.className + '{'; + styleStr += objToCSS(style.value); + styleStr += '}'; + + if (style.media) { + if (!mediaQueryValidator(style.media)) { + console.log('%s is not a valid media query.', style.media); } - return result; - }; + styleStr = style.media + '{' + styleStr + '}'; + } + + return styleStr; } -module.exports = createCallback; +// TODO: support media queries +function parseStyles(className, styleObj) { + var mainStyle = { + className: className, + value: {} + }; + var styles = [mainStyle]; -},{"lodash._basecreatecallback":51,"lodash._baseisequal":70,"lodash.isobject":79,"lodash.keys":81,"lodash.property":85}],51:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10,"lodash._setbinddata":52,"lodash.bind":55,"lodash.identity":67,"lodash.support":68}],52:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11,"lodash._isnative":53,"lodash.noop":54}],53:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],54:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],55:[function(require,module,exports){ -arguments[4][14][0].apply(exports,arguments) -},{"dup":14,"lodash._createwrapper":56,"lodash._slice":66}],56:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._basebind":57,"lodash._basecreatewrapper":61,"lodash._slice":66,"lodash.isfunction":65}],57:[function(require,module,exports){ -arguments[4][16][0].apply(exports,arguments) -},{"dup":16,"lodash._basecreate":58,"lodash._setbinddata":52,"lodash._slice":66,"lodash.isobject":79}],58:[function(require,module,exports){ -arguments[4][17][0].apply(exports,arguments) -},{"dup":17,"lodash._isnative":59,"lodash.isobject":79,"lodash.noop":60}],59:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],60:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],61:[function(require,module,exports){ -arguments[4][21][0].apply(exports,arguments) -},{"dup":21,"lodash._basecreate":62,"lodash._setbinddata":52,"lodash._slice":66,"lodash.isobject":79}],62:[function(require,module,exports){ -arguments[4][17][0].apply(exports,arguments) -},{"dup":17,"lodash._isnative":63,"lodash.isobject":79,"lodash.noop":64}],63:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],64:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],65:[function(require,module,exports){ -arguments[4][26][0].apply(exports,arguments) -},{"dup":26}],66:[function(require,module,exports){ -arguments[4][27][0].apply(exports,arguments) -},{"dup":27}],67:[function(require,module,exports){ -arguments[4][28][0].apply(exports,arguments) -},{"dup":28}],68:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29,"lodash._isnative":69}],69:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],70:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var forIn = require('lodash.forin'), - getArray = require('lodash._getarray'), - isFunction = require('lodash.isfunction'), - objectTypes = require('lodash._objecttypes'), - releaseArray = require('lodash._releasearray'); + Object.keys(styleObj).forEach(function(k){ + // pseudo-selector, insert a new rule + if (k[0] === ':') { + styles.push({ + className: className+k, + value: styleObj[k] + }); + return; + } else if (k.substring(0, 6) === '@media') { + styles.push({ + className: className, + value: styleObj[k], + media: k + }); + return; + } -/** `Object#toString` result shortcuts */ -var argsClass = '[object Arguments]', - arrayClass = '[object Array]', - boolClass = '[object Boolean]', - dateClass = '[object Date]', - numberClass = '[object Number]', - objectClass = '[object Object]', - regexpClass = '[object RegExp]', - stringClass = '[object String]'; + // normal rule, insert into main one + mainStyle.value[k] = styleObj[k]; + }); -/** Used for native method references */ -var objectProto = Object.prototype; + return styles; +} -/** Used to resolve the internal [[Class]] of values */ -var toString = objectProto.toString; +function insertStyle(className, styleObj) { + var styles = parseStyles(className, styleObj); + var styleStr = styles.map(styleToCSS).join(''); + styleTag.innerHTML += styleStr; +} -/** Native method shortcuts */ -var hasOwnProperty = objectProto.hasOwnProperty; +var RCSS = { + merge: function(a, b, c, d, e) { + return assign({}, a, b, c, d, e); + }, -/** - * The base implementation of `_.isEqual`, without support for `thisArg` binding, - * that allows partial "_.where" style comparisons. - * - * @private - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. - * @param {Array} [stackA=[]] Tracks traversed `a` objects. - * @param {Array} [stackB=[]] Tracks traversed `b` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { - // used to indicate that when comparing objects, `a` has at least the properties of `b` - if (callback) { - var result = callback(a, b); - if (typeof result != 'undefined') { - return !!result; + createClass: function(styleObj) { + var styleId = JSON.stringify(styleObj); + var className; + + if (existingClasses[styleId]) { + // already exists, use the existing className + className = existingClasses[styleId]; + } else { + // generate a new class and insert it + className = generateValidCSSClassName(); + existingClasses[styleId] = className; + insertStyle(className, styleObj); } - } - // exit early for identical values - if (a === b) { - // treat `+0` vs. `-0` as not equal - return a !== 0 || (1 / a == 1 / b); - } - var type = typeof a, - otherType = typeof b; - // exit early for unlike primitive values - if (a === a && - !(a && objectTypes[type]) && - !(b && objectTypes[otherType])) { - return false; - } - // exit early for `null` and `undefined` avoiding ES3's Function#call behavior - // http://es5.github.io/#x15.3.4.4 - if (a == null || b == null) { - return a === b; + styleObj.className = className; + return styleObj; } - // compare [[Class]] names - var className = toString.call(a), - otherClass = toString.call(b); +}; - if (className == argsClass) { - className = objectClass; - } - if (otherClass == argsClass) { - otherClass = objectClass; - } - if (className != otherClass) { - return false; - } - switch (className) { - case boolClass: - case dateClass: - // coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0` treating invalid dates coerced to `NaN` as not equal - return +a == +b; +module.exports = RCSS; - case numberClass: - // treat `NaN` vs. `NaN` as equal - return (a != +a) - ? b != +b - // but treat `+0` vs. `-0` as not equal - : (a == 0 ? (1 / a == 1 / b) : a == +b); +},{"./styleRuleConverter":41,"./styleRuleValidator":42,"lodash.assign":22,"valid-media-queries":48}],41:[function(require,module,exports){ +var escape = require('lodash.escape'); - case regexpClass: - case stringClass: - // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) - // treat string primitives and their corresponding object instances as equal - return a == String(b); - } - var isArr = className == arrayClass; - if (!isArr) { - // unwrap any `lodash` wrapped values - var aWrapped = hasOwnProperty.call(a, '__wrapped__'), - bWrapped = hasOwnProperty.call(b, '__wrapped__'); +var _uppercasePattern = /([A-Z])/g; - if (aWrapped || bWrapped) { - return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); - } - // exit for functions and DOM nodes - if (className != objectClass) { - return false; - } - // in older versions of Opera, `arguments` objects have `Array` constructors - var ctorA = a.constructor, - ctorB = b.constructor; +function hyphenateProp(string) { + return string.replace(_uppercasePattern, '-$1').toLowerCase(); +} - // non `Object` object instances with different constructors are not equal - if (ctorA != ctorB && - !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && - ('constructor' in a && 'constructor' in b) - ) { - return false; - } +function escapeValueForProp(value, prop) { + // 'content' is a special property that must be quoted + if (prop === 'content') { + return '"' + value + '"'; } - // assume cyclic structures are equal - // the algorithm for detecting cyclic structures is adapted from ES 5.1 - // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); + return escape(value); +} - var length = stackA.length; - while (length--) { - if (stackA[length] == a) { - return stackB[length] == b; - } - } - var size = 0; - result = true; +module.exports = { + hyphenateProp: hyphenateProp, + escapeValueForProp: escapeValueForProp +}; - // add `a` and `b` to the stack of traversed objects - stackA.push(a); - stackB.push(b); +},{"lodash.escape":25}],42:[function(require,module,exports){ +var isValidCSSProps = require('valid-css-props'); - // recursively compare objects and arrays (susceptible to call stack limits) - if (isArr) { - // compare lengths to determine if a deep comparison is necessary - length = a.length; - size = b.length; - result = size == length; +function isValidProp(prop) { + return isValidCSSProps(prop); +} - if (result || isWhere) { - // deep compare the contents, ignoring non-numeric properties - while (size--) { - var index = length, - value = b[size]; +function isValidValue(value) { + return value != null && typeof value !== 'boolean' && value !== ''; +} - if (isWhere) { - while (index--) { - if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } - } - else { - // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` - // which, in this case, is more costly - forIn(b, function(value, key, b) { - if (hasOwnProperty.call(b, key)) { - // count the number of properties. - size++; - // deep compare each property value. - return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); - } - }); +module.exports = { + isValidProp: isValidProp, + isValidValue: isValidValue +}; - if (result && !isWhere) { - // ensure both objects have the same number of properties - forIn(a, function(value, key, a) { - if (hasOwnProperty.call(a, key)) { - // `size` will be `-1` if `a` has more properties than `b` - return (result = --size > -1); - } - }); - } - } - stackA.pop(); - stackB.pop(); +},{"valid-css-props":47}],43:[function(require,module,exports){ +/** @jsx React.DOM */ +/** + * For math rendered using KaTex and/or MathJax. Use me like 2x + 3. + */ +// TODO(joel) - require MathJax / katex so they don't have to be global - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; -} +var React = require('react'); -module.exports = baseIsEqual; +var pendingScripts = []; +var needsProcess = false; +var timeout = null; -},{"lodash._getarray":71,"lodash._objecttypes":73,"lodash._releasearray":74,"lodash.forin":77,"lodash.isfunction":78}],71:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var arrayPool = require('lodash._arraypool'); +function process(script, callback) { + pendingScripts.push(script); + if (!needsProcess) { + needsProcess = true; + timeout = setTimeout(doProcess, 0, callback); + } +} -/** - * Gets an array from the array pool or creates a new one if the pool is empty. - * - * @private - * @returns {Array} The array from the pool. - */ -function getArray() { - return arrayPool.pop() || []; +function doProcess(callback) { + MathJax.Hub.Queue(function() { + var oldElementScripts = MathJax.Hub.elementScripts; + MathJax.Hub.elementScripts = function(element) { + var scripts = pendingScripts; + pendingScripts = []; + needsProcess = false; + return scripts; + }; + + try { + return MathJax.Hub.Process(null, callback); + } catch (e) { + // IE8 requires `catch` in order to use `finally` + throw e; + } finally { + MathJax.Hub.elementScripts = oldElementScripts; + } + }); } -module.exports = getArray; +var TeX = React.createClass({displayName: 'TeX', + getDefaultProps: function() { + return { + // Called after math is rendered or re-rendered + onRender: function() {} + }; + }, -},{"lodash._arraypool":72}],72:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ + render: function() { + return React.DOM.span( {style:this.props.style}, + React.DOM.span( {ref:"mathjax"} ), + React.DOM.span( {ref:"katex"} ) + ); + }, -/** Used to pool arrays and objects used internally */ -var arrayPool = []; + componentDidMount: function() { + var text = this.props.children; + var onRender = this.props.onRender; -module.exports = arrayPool; + try { + var katexHolder = this.refs.katex.getDOMNode(); + katex.process(text, katexHolder); + onRender(); + return; + } catch (e) { + /* jshint -W103 */ + if (e.__proto__ !== katex.ParseError.prototype) { + /* jshint +W103 */ + throw e; + } + } -},{}],73:[function(require,module,exports){ -arguments[4][31][0].apply(exports,arguments) -},{"dup":31}],74:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var arrayPool = require('lodash._arraypool'), - maxPoolSize = require('lodash._maxpoolsize'); + this.setScriptText(text); + process(this.script, onRender); + }, -/** - * Releases the given array back to the array pool. - * - * @private - * @param {Array} [array] The array to release. - */ -function releaseArray(array) { - array.length = 0; - if (arrayPool.length < maxPoolSize) { - arrayPool.push(array); - } -} + componentDidUpdate: function(prevProps, prevState) { + var oldText = prevProps.children; + var newText = this.props.children; + var onRender = this.props.onRender; -module.exports = releaseArray; + if (oldText !== newText) { + try { + var katexHolder = this.refs.katex.getDOMNode(); + katex.process(newText, katexHolder); + if (this.script) { + var jax = MathJax.Hub.getJaxFor(this.script); + if (jax) { + jax.Remove(); + } + } + onRender(); + return; + } catch (e) { + /* jshint -W103 */ + if (e.__proto__ !== katex.ParseError.prototype) { + /* jshint +W103 */ + throw e; + } + } -},{"lodash._arraypool":75,"lodash._maxpoolsize":76}],75:[function(require,module,exports){ -arguments[4][72][0].apply(exports,arguments) -},{"dup":72}],76:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ + $(this.refs.katex.getDOMNode()).empty(); -/** Used as the max size of the `arrayPool` and `objectPool` */ -var maxPoolSize = 40; + if (this.script) { + var component = this; + MathJax.Hub.Queue(function() { + var jax = MathJax.Hub.getJaxFor(component.script); + if (jax) { + return jax.Text(newText, onRender); + } else { + component.setScriptText(newText); + process(component.script, onRender); + } + }); + } else { + this.setScriptText(newText); + process(this.script, onRender); + } + } + }, -module.exports = maxPoolSize; + setScriptText: function(text) { + if (!this.script) { + this.script = document.createElement("script"); + this.script.type = "math/tex"; + this.refs.mathjax.getDOMNode().appendChild(this.script); + } + if ("text" in this.script) { + // IE8, etc + this.script.text = text; + } else { + this.script.textContent = text; + } + }, -},{}],77:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - objectTypes = require('lodash._objecttypes'); + componentWillUnmount: function() { + if (this.script) { + var jax = MathJax.Hub.getJaxFor(this.script); + if (jax) { + jax.Remove(); + } + } + } +}); + +module.exports = TeX; + +},{"react":45}],44:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require("react"); +var _ = require("underscore"); + +// TODO(joel/jack) fix z-index issues https://s3.amazonaws.com/uploads.hipchat.com/6574/29028/yOApjwmgiMhEZYJ/Screen%20Shot%202014-05-30%20at%203.34.18%20PM.png +// z-index: 3 on perseus-formats-tooltip seemed to work /** - * Iterates over own and inherited enumerable properties of an object, - * executing the callback for each property. The callback is bound to `thisArg` - * and invoked with three arguments; (value, key, object). Callbacks may exit - * iteration early by explicitly returning `false`. + * A generic tooltip library for React.js * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example + * This should eventually end up in react-components * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } + * Interface: ({a, b} means one of a or b) + * var Tooltip = require("./tooltip.jsx"); + * + * + * + * + * * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; + * To show/hide the tooltip, the parent component should call the + * .show() and .hide() methods of the tooltip when appropriate. + * (These are usually set up as handlers of events on the target element.) * - * _.forIn(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) + * Notes: + * className should not specify a border; that is handled by borderColor + * so that the arrow and tooltip match */ -var forIn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - for (index in iterable) { - if (callback(iterable[index], index, collection) === false) return result; - } - return result -}; -module.exports = forIn; +// __,,--``\\ +// _,,-''`` \\ , +// '----------_.------'-.___|\__ +// _.--''`` `)__ )__ @\__ +// ( .. ''---/___,,E/__,E'------` +// `-''`'' +// Here be dragons. -},{"lodash._basecreatecallback":51,"lodash._objecttypes":73}],78:[function(require,module,exports){ -arguments[4][26][0].apply(exports,arguments) -},{"dup":26}],79:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":80}],80:[function(require,module,exports){ -arguments[4][31][0].apply(exports,arguments) -},{"dup":31}],81:[function(require,module,exports){ -arguments[4][32][0].apply(exports,arguments) -},{"dup":32,"lodash._isnative":82,"lodash._shimkeys":83,"lodash.isobject":79}],82:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],83:[function(require,module,exports){ -arguments[4][34][0].apply(exports,arguments) -},{"dup":34,"lodash._objecttypes":84}],84:[function(require,module,exports){ -arguments[4][31][0].apply(exports,arguments) -},{"dup":31}],85:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ +var zIndex = 10; -/** - * Creates a "_.pluck" style function, which returns the `key` value of a - * given object. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} key The name of the property to retrieve. - * @returns {Function} Returns the new function. - * @example - * - * var characters = [ - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 36 } - * ]; - * - * var getName = _.property('name'); - * - * _.map(characters, getName); - * // => ['barney', 'fred'] - * - * _.sortBy(characters, getName); - * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] - */ -function property(key) { - return function(object) { - return object[key]; - }; -} +var Triangle = React.createClass({displayName: 'Triangle', + propTypes: { + color: React.PropTypes.string.isRequired, + left: React.PropTypes.number.isRequired, + "top": React.PropTypes.number.isRequired, + width: React.PropTypes.number.isRequired, + height: React.PropTypes.number.isRequired, + horizontalDirection: React.PropTypes.oneOf( + ["left", "right"] + ).isRequired, + verticalDirection: React.PropTypes.oneOf( + ["top", "bottom"] + ).isRequired, + }, -module.exports = property; + render: function() { + var borderLeft, borderRight, borderTop, borderBottom; -},{}],86:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - keys = require('lodash.keys'), - objectTypes = require('lodash._objecttypes'); + var hBorder = (this.props.width + "px solid transparent"); + if (this.props.horizontalDirection === "right") { + borderLeft = hBorder; + } else { + borderRight = hBorder; + } -/** - * Iterates over own enumerable properties of an object, executing the callback - * for each property. The callback is bound to `thisArg` and invoked with three - * arguments; (value, key, object). Callbacks may exit iteration early by - * explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) - */ -var forOwn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; + var vBorder = (this.props.height + "px solid " + this.props.color); + if (this.props.verticalDirection === "top") { + borderTop = vBorder; + } else { + borderBottom = vBorder; + } - while (++ownIndex < length) { - index = ownProps[ownIndex]; - if (callback(iterable[index], index, collection) === false) return result; + return React.DOM.div( {style:{ + display: "block", + height: 0, + width: 0, + position: "absolute", + left: this.props.left, + "top": this.props["top"], + borderLeft: borderLeft, + borderRight: borderRight, + borderTop: borderTop, + borderBottom: borderBottom + }} ); } - return result -}; +}); -module.exports = forOwn; +var TooltipArrow = React.createClass({displayName: 'TooltipArrow', + propTypes: { + position: React.PropTypes.string, + visibility: React.PropTypes.string, + left: React.PropTypes.number, + "top": React.PropTypes.number, + color: React.PropTypes.string.isRequired, // a css color + border: React.PropTypes.string.isRequired, // a css color + width: React.PropTypes.number.isRequired, + height: React.PropTypes.number.isRequired, + horizontalDirection: React.PropTypes.oneOf( + ["left", "right"] + ).isRequired, + verticalDirection: React.PropTypes.oneOf( + ["top", "bottom"] + ).isRequired + }, -},{"lodash._basecreatecallback":87,"lodash._objecttypes":108,"lodash.keys":109}],87:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10,"lodash._setbinddata":88,"lodash.bind":91,"lodash.identity":105,"lodash.support":106}],88:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11,"lodash._isnative":89,"lodash.noop":90}],89:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],90:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],91:[function(require,module,exports){ -arguments[4][14][0].apply(exports,arguments) -},{"dup":14,"lodash._createwrapper":92,"lodash._slice":104}],92:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._basebind":93,"lodash._basecreatewrapper":98,"lodash._slice":104,"lodash.isfunction":103}],93:[function(require,module,exports){ -arguments[4][16][0].apply(exports,arguments) -},{"dup":16,"lodash._basecreate":94,"lodash._setbinddata":88,"lodash._slice":104,"lodash.isobject":97}],94:[function(require,module,exports){ -arguments[4][17][0].apply(exports,arguments) -},{"dup":17,"lodash._isnative":95,"lodash.isobject":97,"lodash.noop":96}],95:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],96:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],97:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":108}],98:[function(require,module,exports){ -arguments[4][21][0].apply(exports,arguments) -},{"dup":21,"lodash._basecreate":99,"lodash._setbinddata":88,"lodash._slice":104,"lodash.isobject":102}],99:[function(require,module,exports){ -arguments[4][17][0].apply(exports,arguments) -},{"dup":17,"lodash._isnative":100,"lodash.isobject":102,"lodash.noop":101}],100:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],101:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],102:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":108}],103:[function(require,module,exports){ -arguments[4][26][0].apply(exports,arguments) -},{"dup":26}],104:[function(require,module,exports){ -arguments[4][27][0].apply(exports,arguments) -},{"dup":27}],105:[function(require,module,exports){ -arguments[4][28][0].apply(exports,arguments) -},{"dup":28}],106:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29,"lodash._isnative":107}],107:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],108:[function(require,module,exports){ -arguments[4][31][0].apply(exports,arguments) -},{"dup":31}],109:[function(require,module,exports){ -arguments[4][32][0].apply(exports,arguments) -},{"dup":32,"lodash._isnative":110,"lodash._shimkeys":111,"lodash.isobject":112}],110:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],111:[function(require,module,exports){ -arguments[4][34][0].apply(exports,arguments) -},{"dup":34,"lodash._objecttypes":108}],112:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":108}],113:[function(require,module,exports){ -var escape = require('lodash.escape'); + getDefaultProps: function() { + return { + position: "relative", + visibility: "visible", + left: 0, + "top": 0 + }; + }, -var _uppercasePattern = /([A-Z])/g; + // TODO(jack): Think about adding a box-shadow to the triangle here + // See http://css-tricks.com/triangle-with-shadow/ + render: function() { + var isRight = (this.props.horizontalDirection === "right"); + var isTop = (this.props.verticalDirection === "top"); -function hyphenateProp(string) { - return string.replace(_uppercasePattern, '-$1').toLowerCase(); -} + var frontTopOffset = isTop ? 0 : 1; + var borderTopOffset = isTop ? 0 : -1; -function escapeValueForProp(value, prop) { - // 'content' is a special property that must be quoted - if (prop === 'content') { - return '"' + value + '"'; - } - return escape(value); -} + return React.DOM.div( {style:{ + display: "block", + position: this.props.position, + visibility: this.props.visibility, + left: this.props.left, + "top": this.props["top"], + width: this.props.width + 2, + height: this.props.height + 1, + marginTop: -1, + marginBottom: -2, + zIndex: zIndex + }}, + /* The background triangle used to create the effect of a + border around the foreground triangle*/ + Triangle( + {horizontalDirection:this.props.horizontalDirection, + verticalDirection:this.props.verticalDirection, + color:this.props.border, + left:0, + top:borderTopOffset, + width:this.props.width + 2, // one extra for the diagonal + height:this.props.height + 2} ), + /* The foreground triangle covers all but the left/right edges + of the background triangle */ + Triangle( + {horizontalDirection:this.props.horizontalDirection, + verticalDirection:this.props.verticalDirection, + color:this.props.color, + left:1, + top:frontTopOffset, + width:this.props.width, + height:this.props.height} ) + ); + } +}); -module.exports = { - hyphenateProp: hyphenateProp, - escapeValueForProp: escapeValueForProp +var VERTICAL_CORNERS = { + "top": { + "top": "-100%" + }, + bottom: { + "top": 0 + } }; -},{"lodash.escape":36}],114:[function(require,module,exports){ -var isValidCSSProps = require('valid-css-props'); - -function isValidProp(prop) { - return isValidCSSProps(prop); -} +var HORIZONTAL_CORNERS = { + left: { + targetLeft: 0, + }, -function isValidValue(value) { - return value != null && typeof value !== 'boolean' && value !== ''; -} + right: { + targetLeft: "100%", + } +}; -module.exports = { - isValidProp: isValidProp, - isValidValue: isValidValue -}; - -},{"valid-css-props":47}],115:[function(require,module,exports){ -/** @jsx React.DOM */ -/** - * For math rendered using KaTex and/or MathJax. Use me like 2x + 3. - */ -// TODO(joel) - require MathJax / katex so they don't have to be global - -var React = require('react'); - -var pendingScripts = []; -var needsProcess = false; -var timeout = null; - -function process(script, callback) { - pendingScripts.push(script); - if (!needsProcess) { - needsProcess = true; - timeout = setTimeout(doProcess, 0, callback); +var HORIZONTAL_ALIGNMNENTS = { + left: { + tooltipLeft: 0, + arrowLeft: function(arrowSize) {return 0;} + }, + right: { + tooltipLeft: "-100%", + arrowLeft: function(arrowSize) {return -arrowSize - 2;} } -} +}; -function doProcess(callback) { - MathJax.Hub.Queue(function() { - var oldElementScripts = MathJax.Hub.elementScripts; - MathJax.Hub.elementScripts = function(element) { - var scripts = pendingScripts; - pendingScripts = []; - needsProcess = false; - return scripts; - }; - try { - return MathJax.Hub.Process(null, callback); - } catch (e) { - // IE8 requires `catch` in order to use `finally` - throw e; - } finally { - MathJax.Hub.elementScripts = oldElementScripts; - } - }); -} +var Tooltip = React.createClass({displayName: 'Tooltip', + propTypes: { + show: React.PropTypes.bool.isRequired, + className: React.PropTypes.string, + arrowSize: React.PropTypes.number, + borderColor: React.PropTypes.string, + verticalPosition: React.PropTypes.oneOf( + _.keys(VERTICAL_CORNERS) + ), + horizontalPosition: React.PropTypes.oneOf( + _.keys(HORIZONTAL_CORNERS) + ), + horizontalAlign: React.PropTypes.oneOf( + _.keys(HORIZONTAL_ALIGNMNENTS) + ), + children: React.PropTypes.arrayOf( + React.PropTypes.component + ).isRequired + }, -var TeX = React.createClass({displayName: 'TeX', getDefaultProps: function() { return { - // Called after math is rendered or re-rendered - onRender: function() {} + className: "", + arrowSize: 10, + borderColor: "#ccc", + verticalPosition: "bottom", + horizontalPosition: "left", + horizontalAlign: "left" }; }, - render: function() { - return React.DOM.span( {style:this.props.style}, - React.DOM.span( {ref:"mathjax"} ), - React.DOM.span( {ref:"katex"} ) - ); + getInitialState: function() { + return { + height: null // used for offsetting "top" positioned tooltips + }; }, - componentDidMount: function() { - var text = this.props.children; - var onRender = this.props.onRender; - - try { - var katexHolder = this.refs.katex.getDOMNode(); - katex.process(text, katexHolder); - onRender(); - return; - } catch (e) { - /* jshint -W103 */ - if (e.__proto__ !== katex.ParseError.prototype) { - /* jshint +W103 */ - throw e; - } - } - - this.setScriptText(text); - process(this.script, onRender); + componentWillReceiveProps: function() { + // If the contents have changed, reset our measure of the height + this.setState({height: null}); }, - componentDidUpdate: function(prevProps, prevState) { - var oldText = prevProps.children; - var newText = this.props.children; - var onRender = this.props.onRender; + render: function() { + var isTooltipAbove = this.props.verticalPosition === "top"; - if (oldText !== newText) { - try { - var katexHolder = this.refs.katex.getDOMNode(); - katex.process(newText, katexHolder); - if (this.script) { - var jax = MathJax.Hub.getJaxFor(this.script); - if (jax) { - jax.Remove(); - } - } - onRender(); - return; - } catch (e) { - /* jshint -W103 */ - if (e.__proto__ !== katex.ParseError.prototype) { - /* jshint +W103 */ - throw e; - } - } + /* We wrap the entire output in a span so that it displays inline */ + return React.DOM.span(null, + isTooltipAbove && this._renderToolTipDiv(isTooltipAbove), - $(this.refs.katex.getDOMNode()).empty(); + /* We wrap our input in a div so that we can put the tooltip in a + div above/below it */ + React.DOM.div(null, + _.first(this.props.children) + ), - if (this.script) { - var component = this; - MathJax.Hub.Queue(function() { - var jax = MathJax.Hub.getJaxFor(component.script); - if (jax) { - return jax.Text(newText, onRender); - } else { - component.setScriptText(newText); - process(component.script, onRender); - } - }); - } else { - this.setScriptText(newText); - process(this.script, onRender); - } - } + !isTooltipAbove && this._renderToolTipDiv() + ); }, - setScriptText: function(text) { - if (!this.script) { - this.script = document.createElement("script"); - this.script.type = "math/tex"; - this.refs.mathjax.getDOMNode().appendChild(this.script); - } - if ("text" in this.script) { - // IE8, etc - this.script.text = text; - } else { - this.script.textContent = text; - } - }, + _renderToolTipDiv: function(isTooltipAbove) { + var settings = _.extend({}, + HORIZONTAL_CORNERS[this.props.horizontalPosition], + HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], + VERTICAL_CORNERS[this.props.verticalPosition] + ); - componentWillUnmount: function() { - if (this.script) { - var jax = MathJax.Hub.getJaxFor(this.script); - if (jax) { - jax.Remove(); - } - } - } -}); + var arrowAbove; + var arrowBelow; -module.exports = TeX; + if (isTooltipAbove) { + // We put an absolutely positioned arrow in the correct place + arrowAbove = TooltipArrow( + {verticalDirection:"top", + horizontalDirection:this.props.horizontalAlign, + position:"absolute", + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-this.props.arrowSize + 2, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); -},{"react":117}],116:[function(require,module,exports){ -/** @jsx React.DOM */ + // And we use a visibility: hidden arrow below to shift up the + // content by the correct amount + arrowBelow = TooltipArrow( + {verticalDirection:"top", + horizontalDirection:this.props.horizontalAlign, + visibility:"hidden", + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-1, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); + } else { + arrowAbove = TooltipArrow( + {verticalDirection:"bottom", + horizontalDirection:this.props.horizontalAlign, + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-1, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); -var React = require("react"); -var _ = require("underscore"); + arrowBelow = null; + } -// TODO(joel/jack) fix z-index issues https://s3.amazonaws.com/uploads.hipchat.com/6574/29028/yOApjwmgiMhEZYJ/Screen%20Shot%202014-05-30%20at%203.34.18%20PM.png -// z-index: 3 on perseus-formats-tooltip seemed to work + /* A positioned div below the input to be the parent for our + tooltip */ + return React.DOM.div( {style:{ + position: "relative", + height: 0, + display: this.props.show ? "block" : "none", + }}, + React.DOM.div( {ref:"tooltipContainer", className:"tooltipContainer", style:{ + position: "absolute", + // height must start out undefined, not null, so that + // we can measure the actual height with jquery. + // This is used to position the tooltip with top: -100% + // when in verticalPosition: "top" mode + height: this.state.height || undefined, + left: settings.targetLeft + }}, + arrowAbove, -/** - * A generic tooltip library for React.js - * - * This should eventually end up in react-components - * - * Interface: ({a, b} means one of a or b) - * var Tooltip = require("./tooltip.jsx"); - * - * - * - * - * - * - * To show/hide the tooltip, the parent component should call the - * .show() and .hide() methods of the tooltip when appropriate. - * (These are usually set up as handlers of events on the target element.) - * - * Notes: - * className should not specify a border; that is handled by borderColor - * so that the arrow and tooltip match - */ - -// __,,--``\\ -// _,,-''`` \\ , -// '----------_.------'-.___|\__ -// _.--''`` `)__ )__ @\__ -// ( .. ''---/___,,E/__,E'------` -// `-''`'' -// Here be dragons. - -var zIndex = 10; + /* The contents of the tooltip */ + React.DOM.div( {className:this.props.className, + ref:"tooltipContent", + style:{ + position: "relative", + "top": settings["top"], + "left": settings.tooltipLeft, + border: "1px solid " + this.props.borderColor, + "-webkit-box-shadow": "0 1px 3px " + + this.props.borderColor, + "-moz-box-shadow": "0 1px 3px " + + this.props.borderColor, + boxShadow: "0 1px 3px " + + this.props.borderColor, + zIndex: zIndex - 1 + }}, + _.rest(this.props.children) + ), -var Triangle = React.createClass({displayName: 'Triangle', - propTypes: { - color: React.PropTypes.string.isRequired, - left: React.PropTypes.number.isRequired, - "top": React.PropTypes.number.isRequired, - width: React.PropTypes.number.isRequired, - height: React.PropTypes.number.isRequired, - horizontalDirection: React.PropTypes.oneOf( - ["left", "right"] - ).isRequired, - verticalDirection: React.PropTypes.oneOf( - ["top", "bottom"] - ).isRequired, + arrowBelow + ) + ); }, - render: function() { - var borderLeft, borderRight, borderTop, borderBottom; + componentDidMount: function() { + this._updateHeight(); + }, - var hBorder = (this.props.width + "px solid transparent"); - if (this.props.horizontalDirection === "right") { - borderLeft = hBorder; - } else { - borderRight = hBorder; - } + componentDidUpdate: function() { + this._updateHeight(); + }, - var vBorder = (this.props.height + "px solid " + this.props.color); - if (this.props.verticalDirection === "top") { - borderTop = vBorder; - } else { - borderBottom = vBorder; + _updateHeight: function() { + var height = this.refs.tooltipContainer.getDOMNode().offsetHeight; + if (height !== this.state.height) { + this.setState({height:height}); } - - return React.DOM.div( {style:{ - display: "block", - height: 0, - width: 0, - position: "absolute", - left: this.props.left, - "top": this.props["top"], - borderLeft: borderLeft, - borderRight: borderRight, - borderTop: borderTop, - borderBottom: borderBottom - }} ); } }); -var TooltipArrow = React.createClass({displayName: 'TooltipArrow', - propTypes: { - position: React.PropTypes.string, - visibility: React.PropTypes.string, - left: React.PropTypes.number, - "top": React.PropTypes.number, - color: React.PropTypes.string.isRequired, // a css color - border: React.PropTypes.string.isRequired, // a css color - width: React.PropTypes.number.isRequired, - height: React.PropTypes.number.isRequired, - horizontalDirection: React.PropTypes.oneOf( - ["left", "right"] - ).isRequired, - verticalDirection: React.PropTypes.oneOf( - ["top", "bottom"] - ).isRequired - }, +// Sorry. // Apology-Oriented-Programming +module.exports = Tooltip; - getDefaultProps: function() { - return { - position: "relative", - visibility: "visible", - left: 0, - "top": 0 - }; - }, +},{"react":45,"underscore":46}],45:[function(require,module,exports){ +/* This note applies to rcss, react, and underscore. + * + * We're faking a node module for this package by just exporting the global. + * There are a few complications which led us to this solution as a temporary + * fix. + * + * - Browserify can slow down a lot when you include the other packages (and + * their dependency graphs). We were also battling general browserify + * slowness at this time - browserify 3.4.0 is "good" but later versions + * (3.53 if I remember correctly) are terribly slow (on the order of 20x + * slower). + * + * - I'm not clear on the details of packaging this so we don't duplicate + * dependencies anywhere. For instance when packaging perseus for webapp we + * need to be careful not to include packages like underscore from our + * dependencies or from the packages we depend on. (note: this is a very good + * opportunity to either explain how existing tools solve the problem or + * create a new tool to solve it) + * + * - Joel (and Jack) + */ +module.exports = window.React; - // TODO(jack): Think about adding a box-shadow to the triangle here - // See http://css-tricks.com/triangle-with-shadow/ - render: function() { - var isRight = (this.props.horizontalDirection === "right"); - var isTop = (this.props.verticalDirection === "top"); +},{}],46:[function(require,module,exports){ +/* This note applies to rcss, react, and underscore. + * + * We're faking a node module for this package by just exporting the global. + * There are a few complications which led us to this solution as a temporary + * fix. + * + * - Browserify can slow down a lot when you include the other packages (and + * their dependency graphs). We were also battling general browserify + * slowness at this time - browserify 3.4.0 is "good" but later versions + * (3.53 if I remember correctly) are terribly slow (on the order of 20x + * slower). + * + * - I'm not clear on the details of packaging this so we don't duplicate + * dependencies anywhere. For instance when packaging perseus for webapp we + * need to be careful not to include packages like underscore from our + * dependencies or from the packages we depend on. (note: this is a very good + * opportunity to either explain how existing tools solve the problem or + * create a new tool to solve it) + * + * - Joel (and Jack) + */ +module.exports = window._; - var frontTopOffset = isTop ? 0 : 1; - var borderTopOffset = isTop ? 0 : -1; +},{}],47:[function(require,module,exports){ +var _validCSSProps = { + 'alignment-adjust': true, + 'alignment-baseline': true, + 'animation': true, + 'animation-delay': true, + 'animation-direction': true, + 'animation-duration': true, + 'animation-iteration-count': true, + 'animation-name': true, + 'animation-play-state': true, + 'animation-timing-function': true, + 'appearance': true, + 'backface-visibility': true, + 'background': true, + 'background-attachment': true, + 'background-clip': true, + 'background-color': true, + 'background-image': true, + 'background-origin': true, + 'background-position': true, + 'background-repeat': true, + 'background-size': true, + 'baseline-shift': true, + 'bookmark-label': true, + 'bookmark-level': true, + 'bookmark-target': true, + 'border': true, + 'border-bottom': true, + 'border-bottom-color': true, + 'border-bottom-left-radius': true, + 'border-bottom-right-radius': true, + 'border-bottom-style': true, + 'border-bottom-width': true, + 'border-collapse': true, + 'border-color': true, + 'border-image': true, + 'border-image-outset': true, + 'border-image-repeat': true, + 'border-image-slice': true, + 'border-image-source': true, + 'border-image-width': true, + 'border-left': true, + 'border-left-color': true, + 'border-left-style': true, + 'border-left-width': true, + 'border-radius': true, + 'border-right': true, + 'border-right-color': true, + 'border-right-style': true, + 'border-right-width': true, + 'border-spacing': true, + 'border-style': true, + 'border-top': true, + 'border-top-color': true, + 'border-top-left-radius': true, + 'border-top-right-radius': true, + 'border-top-style': true, + 'border-top-width': true, + 'border-width': true, + 'bottom': true, + 'box-align': true, + 'box-decoration-break': true, + 'box-direction': true, + 'box-flex': true, + 'box-flex-group': true, + 'box-lines': true, + 'box-ordinal-group': true, + 'box-orient': true, + 'box-pack': true, + 'box-shadow': true, + 'box-sizing': true, + 'caption-side': true, + 'clear': true, + 'clip': true, + 'color': true, + 'color-profile': true, + 'column-count': true, + 'column-fill': true, + 'column-gap': true, + 'column-rule': true, + 'column-rule-color': true, + 'column-rule-style': true, + 'column-rule-width': true, + 'column-span': true, + 'column-width': true, + 'columns': true, + 'content': true, + 'counter-increment': true, + 'counter-reset': true, + 'crop': true, + 'cursor': true, + 'direction': true, + 'display': true, + 'dominant-baseline': true, + 'drop-initial-after-adjust': true, + 'drop-initial-after-align': true, + 'drop-initial-before-adjust': true, + 'drop-initial-before-align': true, + 'drop-initial-size': true, + 'drop-initial-value': true, + 'empty-cells': true, + 'fit': true, + 'fit-position': true, + 'float': true, + 'float-offset': true, + 'font': true, + 'font-family': true, + 'font-size': true, + 'font-size-adjust': true, + 'font-stretch': true, + 'font-style': true, + 'font-variant': true, + 'font-weight': true, + 'grid-columns': true, + 'grid-rows': true, + 'hanging-punctuation': true, + 'height': true, + 'hyphenate-after': true, + 'hyphenate-before': true, + 'hyphenate-character': true, + 'hyphenate-lines': true, + 'hyphenate-resource': true, + 'hyphens': true, + 'icon': true, + 'image-orientation': true, + 'image-resolution': true, + 'inline-box-align': true, + 'left': true, + 'letter-spacing': true, + 'line-height': true, + 'line-stacking': true, + 'line-stacking-ruby': true, + 'line-stacking-shift': true, + 'line-stacking-strategy': true, + 'list-style': true, + 'list-style-image': true, + 'list-style-position': true, + 'list-style-type': true, + 'margin': true, + 'margin-bottom': true, + 'margin-left': true, + 'margin-right': true, + 'margin-top': true, + 'mark': true, + 'mark-after': true, + 'mark-before': true, + 'marks': true, + 'marquee-direction': true, + 'marquee-play-count': true, + 'marquee-speed': true, + 'marquee-style': true, + 'max-height': true, + 'max-width': true, + 'min-height': true, + 'min-width': true, + 'move-to': true, + 'nav-down': true, + 'nav-index': true, + 'nav-left': true, + 'nav-right': true, + 'nav-up': true, + 'opacity': true, + 'orphans': true, + 'outline': true, + 'outline-color': true, + 'outline-offset': true, + 'outline-style': true, + 'outline-width': true, + 'overflow': true, + 'overflow-style': true, + 'overflow-x': true, + 'overflow-y': true, + 'padding': true, + 'padding-bottom': true, + 'padding-left': true, + 'padding-right': true, + 'padding-top': true, + 'page': true, + 'page-break-after': true, + 'page-break-before': true, + 'page-break-inside': true, + 'page-policy': true, + 'perspective': true, + 'perspective-origin': true, + 'phonemes': true, + 'position': true, + 'punctuation-trim': true, + 'quotes': true, + 'rendering-intent': true, + 'resize': true, + 'rest': true, + 'rest-after': true, + 'rest-before': true, + 'right': true, + 'rotation': true, + 'rotation-point': true, + 'ruby-align': true, + 'ruby-overhang': true, + 'ruby-position': true, + 'ruby-span': true, + 'size': true, + 'string-set': true, + 'table-layout': true, + 'target': true, + 'target-name': true, + 'target-new': true, + 'target-position': true, + 'text-align': true, + 'text-align-last': true, + 'text-decoration': true, + 'text-height': true, + 'text-indent': true, + 'text-justify': true, + 'text-outline': true, + 'text-overflow': true, + 'text-shadow': true, + 'text-transform': true, + 'text-wrap': true, + 'top': true, + 'transform': true, + 'transform-origin': true, + 'transform-style': true, + 'transition': true, + 'transition-delay': true, + 'transition-duration': true, + 'transition-property': true, + 'transition-timing-function': true, + 'unicode-bidi': true, + 'user-select': true, + 'vertical-align': true, + 'visibility': true, + 'voice-balance': true, + 'voice-duration': true, + 'voice-pitch': true, + 'voice-pitch-range': true, + 'voice-rate': true, + 'voice-stress': true, + 'voice-volume': true, + 'white-space': true, + 'widows': true, + 'width': true, + 'word-break': true, + 'word-spacing': true, + 'word-wrap': true, + 'z-index': true +} - return React.DOM.div( {style:{ - display: "block", - position: this.props.position, - visibility: this.props.visibility, - left: this.props.left, - "top": this.props["top"], - width: this.props.width + 2, - height: this.props.height + 1, - marginTop: -1, - marginBottom: -2, - zIndex: zIndex - }}, - /* The background triangle used to create the effect of a - border around the foreground triangle*/ - Triangle( - {horizontalDirection:this.props.horizontalDirection, - verticalDirection:this.props.verticalDirection, - color:this.props.border, - left:0, - top:borderTopOffset, - width:this.props.width + 2, // one extra for the diagonal - height:this.props.height + 2} ), - /* The foreground triangle covers all but the left/right edges - of the background triangle */ - Triangle( - {horizontalDirection:this.props.horizontalDirection, - verticalDirection:this.props.verticalDirection, - color:this.props.color, - left:1, - top:frontTopOffset, - width:this.props.width, - height:this.props.height} ) - ); - } -}); +var vendorPrefixRegEx = /^-.+-/; -var VERTICAL_CORNERS = { - "top": { - "top": "-100%" - }, - bottom: { - "top": 0 - } +module.exports = function(prop) { + if (prop[0] === '-') { + return !!_validCSSProps[prop.replace(vendorPrefixRegEx, '')]; + } + return !!_validCSSProps[prop]; }; -var HORIZONTAL_CORNERS = { - left: { - targetLeft: 0, - }, +},{}],48:[function(require,module,exports){ +var every = require('lodash.every'); - right: { - targetLeft: "100%", - } -}; +function isValidRatio(ratio) { + var re = /\d+\/\d+/; + return !!ratio.match(re); +} -var HORIZONTAL_ALIGNMNENTS = { - left: { - tooltipLeft: 0, - arrowLeft: function(arrowSize) {return 0;} - }, - right: { - tooltipLeft: "-100%", - arrowLeft: function(arrowSize) {return -arrowSize - 2;} - } -}; +function isValidInteger(integer) { + var re = /\d+/; + return !!integer.match(re); +} +function isValidLength(length) { + var re = /\d+(?:ex|em|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc)?$/; + return !!length.match(re); +} -var Tooltip = React.createClass({displayName: 'Tooltip', - propTypes: { - show: React.PropTypes.bool.isRequired, - className: React.PropTypes.string, - arrowSize: React.PropTypes.number, - borderColor: React.PropTypes.string, - verticalPosition: React.PropTypes.oneOf( - _.keys(VERTICAL_CORNERS) - ), - horizontalPosition: React.PropTypes.oneOf( - _.keys(HORIZONTAL_CORNERS) - ), - horizontalAlign: React.PropTypes.oneOf( - _.keys(HORIZONTAL_ALIGNMNENTS) - ), - children: React.PropTypes.arrayOf( - React.PropTypes.component - ).isRequired - }, +function isValidOrientation(orientation) { + return orientation === 'landscape' || orientation === 'portrait'; +} - getDefaultProps: function() { - return { - className: "", - arrowSize: 10, - borderColor: "#ccc", - verticalPosition: "bottom", - horizontalPosition: "left", - horizontalAlign: "left" - }; - }, +function isValidScan(scan) { + return scan === 'progressive' || scan === 'interlace'; +} - getInitialState: function() { - return { - height: null // used for offsetting "top" positioned tooltips - }; - }, +function isValidResolution(resolution) { + var re = /(?:\+|-)?(?:\d+|\d*\.\d+)(?:e\d+)?(?:dpi|dpcm|dppx)$/; + return !!resolution.match(re); +} - componentWillReceiveProps: function() { - // If the contents have changed, reset our measure of the height - this.setState({height: null}); - }, +function isValidValue(value) { + return value != null && typeof value !== 'boolean' && value !== ''; +} - render: function() { - var isTooltipAbove = this.props.verticalPosition === "top"; +var _mediaFeatureValidator = { + 'width': isValidLength, + 'min-width': isValidLength, + 'max-width': isValidLength, + 'height': isValidLength, + 'min-height': isValidLength, + 'max-height': isValidLength, + 'device-width': isValidLength, + 'min-device-width': isValidLength, + 'max-device-width': isValidLength, + 'device-height': isValidLength, + 'min-device-height': isValidLength, + 'max-device-height': isValidLength, + 'aspect-ratio': isValidRatio, + 'min-aspect-ratio': isValidRatio, + 'max-aspect-ratio': isValidRatio, + 'device-aspect-ratio': isValidRatio, + 'min-device-aspect-ratio': isValidRatio, + 'max-device-aspect-ratio': isValidRatio, + 'color': isValidValue, + 'min-color': isValidValue, + 'max-color': isValidValue, + 'color-index': isValidInteger, + 'min-color-index': isValidInteger, + 'max-color-index': isValidInteger, + 'monochrome': isValidInteger, + 'min-monochrome': isValidInteger, + 'max-monochrome': isValidInteger, + 'resolution': isValidResolution, + 'min-resolution': isValidResolution, + 'max-resolution': isValidResolution, + 'scan': isValidScan, + 'grid': isValidInteger, + 'orientation': isValidOrientation +}; - /* We wrap the entire output in a span so that it displays inline */ - return React.DOM.span(null, - isTooltipAbove && this._renderToolTipDiv(isTooltipAbove), +var _validMediaFeatures = { + 'width': true, + 'min-width': true, + 'max-width': true, + 'height': true, + 'min-height': true, + 'max-height': true, + 'device-width': true, + 'min-device-width': true, + 'max-device-width': true, + 'device-height': true, + 'min-device-height': true, + 'max-device-height': true, + 'aspect-ratio': true, + 'min-aspect-ratio': true, + 'max-aspect-ratio': true, + 'device-aspect-ratio': true, + 'min-device-aspect-ratio': true, + 'max-device-aspect-ratio': true, + 'color': true, + 'min-color': true, + 'max-color': true, + 'color-index': true, + 'min-color-index': true, + 'max-color-index': true, + 'monochrome': true, + 'min-monochrome': true, + 'max-monochrome': true, + 'resolution': true, + 'min-resolution': true, + 'max-resolution': true, + 'scan': true, + 'grid': true, + 'orientation': true +}; - /* We wrap our input in a div so that we can put the tooltip in a - div above/below it */ - React.DOM.div(null, - _.first(this.props.children) - ), +var _validMediaTypes = { + 'all': true, + 'aural': true, + 'braille': true, + 'handheld': true, + 'print': true, + 'projection': true, + 'screen': true, + 'tty': true, + 'tv': true, + 'embossed': true +}; - !isTooltipAbove && this._renderToolTipDiv() - ); - }, +var _validQualifiers = { + 'not': true, + 'only': true +}; - _renderToolTipDiv: function(isTooltipAbove) { - var settings = _.extend({}, - HORIZONTAL_CORNERS[this.props.horizontalPosition], - HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], - VERTICAL_CORNERS[this.props.verticalPosition] - ); +function isValidFeature(feature) { + return !!_validMediaFeatures[feature]; +} - var arrowAbove; - var arrowBelow; +function isValidQualifier(qualifier) { + return !!_validQualifiers[qualifier]; +} - if (isTooltipAbove) { - // We put an absolutely positioned arrow in the correct place - arrowAbove = TooltipArrow( - {verticalDirection:"top", - horizontalDirection:this.props.horizontalAlign, - position:"absolute", - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-this.props.arrowSize + 2, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); +function isValidMediaType(mediaType) { + return !!_validMediaTypes[mediaType]; +} - // And we use a visibility: hidden arrow below to shift up the - // content by the correct amount - arrowBelow = TooltipArrow( - {verticalDirection:"top", - horizontalDirection:this.props.horizontalAlign, - visibility:"hidden", - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-1, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); - } else { - arrowAbove = TooltipArrow( - {verticalDirection:"bottom", - horizontalDirection:this.props.horizontalAlign, - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-1, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); +function isValidQualifiedMediaType(mediaType) { + var terms = mediaType.trim().split(/\s+/); + switch (terms.length) { + case 1: + return isValidMediaType(terms[0]); + case 2: + return isValidQualifier(terms[0]) && isValidMediaType(terms[1]); + default: + return false; + } +} - arrowBelow = null; - } +function isValidExpression(expression) { + if (expression.length < 2) { + return false; + } - /* A positioned div below the input to be the parent for our - tooltip */ - return React.DOM.div( {style:{ - position: "relative", - height: 0, - display: this.props.show ? "block" : "none", - }}, - React.DOM.div( {ref:"tooltipContainer", className:"tooltipContainer", style:{ - position: "absolute", - // height must start out undefined, not null, so that - // we can measure the actual height with jquery. - // This is used to position the tooltip with top: -100% - // when in verticalPosition: "top" mode - height: this.state.height || undefined, - left: settings.targetLeft - }}, - arrowAbove, + // Parentheses are required around expressions + if (expression[0] !== '(' || expression[expression.length - 1] !== ')') { + return false; + } - /* The contents of the tooltip */ - React.DOM.div( {className:this.props.className, - ref:"tooltipContent", - style:{ - position: "relative", - "top": settings["top"], - "left": settings.tooltipLeft, - border: "1px solid " + this.props.borderColor, - "-webkit-box-shadow": "0 1px 3px " + - this.props.borderColor, - "-moz-box-shadow": "0 1px 3px " + - this.props.borderColor, - boxShadow: "0 1px 3px " + - this.props.borderColor, - zIndex: zIndex - 1 - }}, - _.rest(this.props.children) - ), + // Remove parentheses and spacess + expression = expression.substring(1, expression.length - 1); - arrowBelow - ) - ); - }, + // Is there a value to accompany the media feature? + var featureAndValue = expression.split(/\s*:\s*/); + switch (featureAndValue.length) { + case 1: + var feature = featureAndValue[0].trim(); + return isValidFeature(feature); + case 2: + var feature = featureAndValue[0].trim(); + var value = featureAndValue[1].trim(); + return isValidFeature(feature) && + _mediaFeatureValidator[feature](value); + default: + return false; + } +} - componentDidMount: function() { - this._updateHeight(); - }, +function isValidMediaQuery(query) { + var andSplitter = /\s+and\s+/; + var queryTerms = query.split(andSplitter); + return (isValidQualifiedMediaType(queryTerms[0]) || + isValidExpression(queryTerms[0])) && + every(queryTerms.slice(1), isValidExpression); +} - componentDidUpdate: function() { - this._updateHeight(); - }, +function isValidMediaQueryList(mediaQuery) { + mediaQuery = mediaQuery.toLowerCase(); - _updateHeight: function() { - var height = this.refs.tooltipContainer.getDOMNode().offsetHeight; - if (height !== this.state.height) { - this.setState({height:height}); - } + if (mediaQuery.substring(0, 6) !== '@media') { + return false; } -}); -// Sorry. // Apology-Oriented-Programming -module.exports = Tooltip; - -},{"react":117,"underscore":118}],117:[function(require,module,exports){ -/* This note applies to rcss, react, and underscore. - * - * We're faking a node module for this package by just exporting the global. - * There are a few complications which led us to this solution as a temporary - * fix. - * - * - Browserify can slow down a lot when you include the other packages (and - * their dependency graphs). We were also battling general browserify - * slowness at this time - browserify 3.4.0 is "good" but later versions - * (3.53 if I remember correctly) are terribly slow (on the order of 20x - * slower). - * - * - I'm not clear on the details of packaging this so we don't duplicate - * dependencies anywhere. For instance when packaging perseus for webapp we - * need to be careful not to include packages like underscore from our - * dependencies or from the packages we depend on. (note: this is a very good - * opportunity to either explain how existing tools solve the problem or - * create a new tool to solve it) - * - * - Joel (and Jack) - */ -module.exports = window.React; + var commaSplitter = /\s*,\s*/; + var queryList = mediaQuery.substring(7, mediaQuery.length) + .split(commaSplitter); + return every(queryList, isValidMediaQuery); +} -},{}],118:[function(require,module,exports){ -/* This note applies to rcss, react, and underscore. - * - * We're faking a node module for this package by just exporting the global. - * There are a few complications which led us to this solution as a temporary - * fix. - * - * - Browserify can slow down a lot when you include the other packages (and - * their dependency graphs). We were also battling general browserify - * slowness at this time - browserify 3.4.0 is "good" but later versions - * (3.53 if I remember correctly) are terribly slow (on the order of 20x - * slower). - * - * - I'm not clear on the details of packaging this so we don't duplicate - * dependencies anywhere. For instance when packaging perseus for webapp we - * need to be careful not to include packages like underscore from our - * dependencies or from the packages we depend on. (note: this is a very good - * opportunity to either explain how existing tools solve the problem or - * create a new tool to solve it) - * - * - Joel (and Jack) - */ -module.exports = window._; +module.exports = isValidMediaQueryList -},{}],119:[function(require,module,exports){ +},{"lodash.every":26}],49:[function(require,module,exports){ var Widgets = require("./widgets.js"); _.each([ @@ -3850,7 +3710,7 @@ _.each([ Widgets.register(widget.name, _.omit(widget, "name")); }); -},{"./widgets.js":173,"./widgets/categorizer.jsx":174,"./widgets/dropdown.jsx":175,"./widgets/example-graphie-widget.jsx":176,"./widgets/example-widget.jsx":177,"./widgets/expression.jsx":178,"./widgets/iframe.jsx":179,"./widgets/image.jsx":180,"./widgets/input-number.jsx":181,"./widgets/interactive-graph.jsx":182,"./widgets/interactive-number-line.jsx":183,"./widgets/lights-puzzle.jsx":184,"./widgets/matcher.jsx":185,"./widgets/measurer.jsx":186,"./widgets/number-line.jsx":187,"./widgets/numeric-input.jsx":188,"./widgets/orderer.jsx":189,"./widgets/plotter.jsx":190,"./widgets/radio.jsx":191,"./widgets/sorter.jsx":192,"./widgets/speaking-text-input.jsx":193,"./widgets/speaking-voice.jsx":194,"./widgets/table.jsx":195,"./widgets/transformer.jsx":196}],120:[function(require,module,exports){ +},{"./widgets.js":103,"./widgets/categorizer.jsx":104,"./widgets/dropdown.jsx":105,"./widgets/example-graphie-widget.jsx":106,"./widgets/example-widget.jsx":107,"./widgets/expression.jsx":108,"./widgets/iframe.jsx":109,"./widgets/image.jsx":110,"./widgets/input-number.jsx":111,"./widgets/interactive-graph.jsx":112,"./widgets/interactive-number-line.jsx":113,"./widgets/lights-puzzle.jsx":114,"./widgets/matcher.jsx":115,"./widgets/measurer.jsx":116,"./widgets/number-line.jsx":117,"./widgets/numeric-input.jsx":118,"./widgets/orderer.jsx":119,"./widgets/plotter.jsx":120,"./widgets/radio.jsx":121,"./widgets/sorter.jsx":122,"./widgets/speaking-text-input.jsx":123,"./widgets/speaking-voice.jsx":124,"./widgets/table.jsx":125,"./widgets/transformer.jsx":126}],50:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -3921,7 +3781,7 @@ var AnswerAreaEditor = React.createClass({displayName: 'AnswerAreaEditor', module.exports = AnswerAreaEditor; -},{"./editor.jsx":145,"./widgets.js":173,"react":117,"react-components/info-tip":7}],121:[function(require,module,exports){ +},{"./editor.jsx":75,"./widgets.js":103,"react":45,"react-components/info-tip":39}],51:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -4276,7 +4136,7 @@ var AnswerAreaRenderer = React.createClass({displayName: 'AnswerAreaRenderer', module.exports = AnswerAreaRenderer; -},{"./enabled-features.jsx":146,"./perseus-api.jsx":164,"./question-paragraph.jsx":166,"./renderer.jsx":167,"./util.js":170,"./widget-container.jsx":172,"./widgets.js":173,"react":117}],122:[function(require,module,exports){ +},{"./enabled-features.jsx":76,"./perseus-api.jsx":94,"./question-paragraph.jsx":96,"./renderer.jsx":97,"./util.js":100,"./widget-container.jsx":102,"./widgets.js":103,"react":45}],52:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -4464,7 +4324,7 @@ FancySelect.Option = FancyOption; module.exports = FancySelect; -},{"react":117}],123:[function(require,module,exports){ +},{"react":45}],53:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -4907,7 +4767,7 @@ var GraphSettings = React.createClass({displayName: 'GraphSettings', module.exports = GraphSettings; -},{"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../components/range-input.jsx":133,"../mixins/changeable.jsx":161,"../util.js":170,"react":117,"react-components/blur-input":4,"react-components/button-group":5,"react-components/info-tip":7}],124:[function(require,module,exports){ +},{"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../components/range-input.jsx":63,"../mixins/changeable.jsx":91,"../util.js":100,"react":45,"react-components/blur-input":36,"react-components/button-group":37,"react-components/info-tip":39}],54:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -5246,7 +5106,7 @@ var Graph = React.createClass({displayName: 'Graph', module.exports = Graph; -},{"../util.js":170,"react":117}],125:[function(require,module,exports){ +},{"../util.js":100,"react":45}],55:[function(require,module,exports){ /** @jsx React.DOM */var Util = require("../util.js"); var nestedMap = Util.nestedMap; var deepEq = Util.deepEq; @@ -5377,7 +5237,7 @@ module.exports = { createSimpleClass: createSimpleClass }; -},{"../util.js":170}],126:[function(require,module,exports){ +},{"../util.js":100}],56:[function(require,module,exports){ /** @jsx React.DOM */var GraphieClasses = require("./graphie-classes.jsx"); var Interactive2 = require("../interactive2.js"); var InteractiveUtil = require("../interactive2/interactive-util.js"); @@ -5428,7 +5288,7 @@ module.exports = { MovablePoint: MovablePoint }; -},{"../interactive2.js":150,"../interactive2/interactive-util.js":151,"./graphie-classes.jsx":125}],127:[function(require,module,exports){ +},{"../interactive2.js":80,"../interactive2/interactive-util.js":81,"./graphie-classes.jsx":55}],57:[function(require,module,exports){ /** @jsx React.DOM */ var GraphieClasses = require("./graphie-classes.jsx"); @@ -5708,7 +5568,7 @@ _.extend(Graphie, Movables); module.exports = Graphie; -},{"../interactive2/interactive-util.js":151,"../util.js":170,"./graphie-classes.jsx":125,"./graphie-movables.jsx":126}],128:[function(require,module,exports){ +},{"../interactive2/interactive-util.js":81,"../util.js":100,"./graphie-classes.jsx":55,"./graphie-movables.jsx":56}],58:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -5868,7 +5728,7 @@ var InputWithExamples = React.createClass({displayName: 'InputWithExamples', module.exports = InputWithExamples; -},{"../perseus-api.jsx":164,"../renderer.jsx":167,"../util.js":170,"./math-input.jsx":129,"./text-input.jsx":136,"react":117,"react-components/tooltip":116}],129:[function(require,module,exports){ +},{"../perseus-api.jsx":94,"../renderer.jsx":97,"../util.js":100,"./math-input.jsx":59,"./text-input.jsx":66,"react":45,"react-components/tooltip":44}],59:[function(require,module,exports){ /** @jsx React.DOM */ // TODO(alex): Package MathQuill @@ -5889,6 +5749,7 @@ var MathInput = React.createClass({displayName: 'MathInput', onFocus: PT.func, onBlur: PT.func, buttonSets: TexButtons.buttonSetsType.isRequired, + offsetLeft: PT.number }, render: function() { @@ -5911,6 +5772,12 @@ var MathInput = React.createClass({displayName: 'MathInput', sets:this.props.buttonSets} ); button_height = (6 + 58 * this.props.buttonSets.length).toString() + "px"; } + var button_left = "0px"; + if (this.props.offsetLeft >= 260){ + button_left = "-240px"; + } else if (this.props.offsetLeft > 130 && this.props.offsetLeft < 260){ + button_left = "-120px"; + } return React.DOM.div( {style:{display: "inline-block"}}, React.DOM.div( {style:{display: 'inline-block'}}, @@ -5919,7 +5786,7 @@ var MathInput = React.createClass({displayName: 'MathInput', onFocus:this.handleFocus, onBlur:this.handleBlur} ) ), - React.DOM.div( {style:{position: "relative", height: button_height}}, + React.DOM.div( {style:{position: "relative", height: button_height, left: button_left}}, buttons ) ); @@ -6109,7 +5976,7 @@ var MathInput = React.createClass({displayName: 'MathInput', module.exports = MathInput; -},{"./tex-buttons.jsx":135,"react":117,"underscore":118}],130:[function(require,module,exports){ +},{"./tex-buttons.jsx":65,"react":45,"underscore":46}],60:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6181,7 +6048,7 @@ var MultiButtonGroup = React.createClass({displayName: 'MultiButtonGroup', module.exports = MultiButtonGroup; -},{"react":117}],131:[function(require,module,exports){ +},{"react":45}],61:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6360,7 +6227,7 @@ var NumberInput = React.createClass({displayName: 'NumberInput', module.exports = NumberInput; -},{"../util.js":170,"react":117}],132:[function(require,module,exports){ +},{"../util.js":100,"react":45}],62:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6422,7 +6289,7 @@ var PropCheckBox = React.createClass({displayName: 'PropCheckBox', module.exports = PropCheckBox; -},{"react":117}],133:[function(require,module,exports){ +},{"react":45}],63:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6481,7 +6348,7 @@ var RangeInput = React.createClass({displayName: 'RangeInput', module.exports = RangeInput; -},{"../components/number-input.jsx":131,"react":117}],134:[function(require,module,exports){ +},{"../components/number-input.jsx":61,"react":45}],64:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6998,7 +6865,7 @@ var Sortable = React.createClass({displayName: 'Sortable', module.exports = Sortable; -},{"../renderer.jsx":167,"../util.js":170,"react":117}],135:[function(require,module,exports){ +},{"../renderer.jsx":97,"../util.js":100,"react":45}],65:[function(require,module,exports){ /** @jsx React.DOM */ var React = require("react"); @@ -7133,7 +7000,7 @@ var TexButtons = React.createClass({displayName: 'TexButtons', module.exports = TexButtons; -},{"react":117,"react-components/tex":115}],136:[function(require,module,exports){ +},{"react":45,"react-components/tex":43}],66:[function(require,module,exports){ /** @jsx React.DOM */ var TextInput = React.createClass({displayName: 'TextInput', @@ -7165,7 +7032,7 @@ var TextInput = React.createClass({displayName: 'TextInput', module.exports = TextInput; -},{}],137:[function(require,module,exports){ +},{}],67:[function(require,module,exports){ /** @jsx React.DOM */ var textWidthCache = {}; @@ -7295,7 +7162,7 @@ var TextListEditor = React.createClass({displayName: 'TextListEditor', module.exports = TextListEditor; -},{}],138:[function(require,module,exports){ +},{}],68:[function(require,module,exports){ /** @jsx React.DOM */ // Responsible for combining the text diffs from text-diff and the widget @@ -7410,7 +7277,7 @@ var RevisionDiff = React.createClass({displayName: 'RevisionDiff', module.exports = RevisionDiff; -},{"./text-diff.jsx":141,"./widget-diff.jsx":143}],139:[function(require,module,exports){ +},{"./text-diff.jsx":71,"./widget-diff.jsx":73}],69:[function(require,module,exports){ /** @jsx React.DOM */// Split a word-wise diff generated by jsdiff into multiple lines, for the // purpose of breaking up the diffs into lines, so that modified lines can be // faintly highlighted @@ -7440,7 +7307,7 @@ var splitDiff = function(diffEntries) { module.exports = splitDiff; -},{}],140:[function(require,module,exports){ +},{}],70:[function(require,module,exports){ /** @jsx React.DOM */var jsdiff = require("../../lib/jsdiff"); var statusFor = function(chunk) { @@ -7510,7 +7377,7 @@ var stringArrayDiff = function(a, b) { module.exports = stringArrayDiff; -},{"../../lib/jsdiff":1}],141:[function(require,module,exports){ +},{"../../lib/jsdiff":1}],71:[function(require,module,exports){ /** @jsx React.DOM */ var diff = require("../../lib/jsdiff"); @@ -7675,7 +7542,7 @@ var TextDiff = React.createClass({displayName: 'TextDiff', module.exports = TextDiff; -},{"../../lib/jsdiff":1,"./split-diff.jsx":139,"./string-array-diff.jsx":140}],142:[function(require,module,exports){ +},{"../../lib/jsdiff":1,"./split-diff.jsx":69,"./string-array-diff.jsx":70}],72:[function(require,module,exports){ /** @jsx React.DOM */var UNCHANGED = "unchanged"; var CHANGED = "changed"; var ADDED = "added"; @@ -7745,7 +7612,7 @@ var performDiff = function(before, after, /* optional */ key) { module.exports = performDiff; -},{}],143:[function(require,module,exports){ +},{}],73:[function(require,module,exports){ /** @jsx React.DOM */ var cx = React.addons.classSet; @@ -7941,7 +7808,7 @@ var WidgetDiff = React.createClass({displayName: 'WidgetDiff', module.exports = WidgetDiff; -},{"./widget-diff-performer.jsx":142}],144:[function(require,module,exports){ +},{"./widget-diff-performer.jsx":72}],74:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8225,7 +8092,7 @@ var EditorPage = React.createClass({displayName: 'EditorPage', module.exports = EditorPage; -},{"./components/prop-check-box.jsx":132,"./enabled-features.jsx":146,"./hint-editor.jsx":147,"./item-editor.jsx":159,"./item-renderer.jsx":160,"./perseus-api.jsx":164,"react":117}],145:[function(require,module,exports){ +},{"./components/prop-check-box.jsx":62,"./enabled-features.jsx":76,"./hint-editor.jsx":77,"./item-editor.jsx":89,"./item-renderer.jsx":90,"./perseus-api.jsx":94,"react":45}],75:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8827,7 +8694,7 @@ var Editor = React.createClass({displayName: 'Editor', module.exports = Editor; -},{"./components/prop-check-box.jsx":132,"./util.js":170,"./widgets.js":173,"react":117,"react-components/drag-target":6}],146:[function(require,module,exports){ +},{"./components/prop-check-box.jsx":62,"./util.js":100,"./widgets.js":103,"react":45,"react-components/drag-target":38}],76:[function(require,module,exports){ /** @jsx React.DOM */var React = require('react'); module.exports = { @@ -8843,7 +8710,7 @@ module.exports = { } }; -},{"react":117}],147:[function(require,module,exports){ +},{"react":45}],77:[function(require,module,exports){ /** @jsx React.DOM */ /* Collection of classes for rendering the hint editor area, @@ -9059,7 +8926,7 @@ var CombinedHintsEditor = React.createClass({displayName: 'CombinedHintsEditor', module.exports = CombinedHintsEditor; -},{"./editor.jsx":145,"./hint-renderer.jsx":148,"react":117,"react-components/info-tip":7}],148:[function(require,module,exports){ +},{"./editor.jsx":75,"./hint-renderer.jsx":78,"react":45,"react-components/info-tip":39}],78:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -9087,7 +8954,7 @@ var HintRenderer = React.createClass({displayName: 'HintRenderer', module.exports = HintRenderer; -},{"./renderer.jsx":167,"react":117}],149:[function(require,module,exports){ +},{"./renderer.jsx":97,"react":45}],79:[function(require,module,exports){ var React = require('react'); var init = function(options) { @@ -9128,7 +8995,7 @@ var init = function(options) { module.exports = init; -},{"react":117}],150:[function(require,module,exports){ +},{"react":45}],80:[function(require,module,exports){ var Movable = require("./interactive2/movable.js"); var MovablePoint = require("./interactive2/movable-point.js"); var MovableLine = require("./interactive2/movable-line.js"); @@ -9148,7 +9015,7 @@ var Interactive2 = { module.exports = Interactive2; -},{"./interactive2/movable-line.js":154,"./interactive2/movable-point.js":156,"./interactive2/movable.js":157}],151:[function(require,module,exports){ +},{"./interactive2/movable-line.js":84,"./interactive2/movable-point.js":86,"./interactive2/movable.js":87}],81:[function(require,module,exports){ /** * Utility functions for writing Interactive2 movablethings */ @@ -9226,7 +9093,7 @@ var InteractiveUtil = { module.exports = InteractiveUtil; -},{"./movable-helper-methods.js":152}],152:[function(require,module,exports){ +},{"./movable-helper-methods.js":82}],82:[function(require,module,exports){ /** * MovableThing convenience methods * @@ -9329,7 +9196,7 @@ var MovableHelperMethods = { module.exports = MovableHelperMethods; -},{}],153:[function(require,module,exports){ +},{}],83:[function(require,module,exports){ /** * A library of options to pass to add/draw/remove/constraints */ @@ -9612,7 +9479,7 @@ module.exports = { onMoveEnd: {standard: null}, }; -},{}],154:[function(require,module,exports){ +},{}],84:[function(require,module,exports){ /** * MovableLine */ @@ -9896,7 +9763,7 @@ _.extend(MovableLine.prototype, { module.exports = MovableLine; -},{"./interactive-util.js":151,"./movable-line-options.js":153,"./objective_.js":158}],155:[function(require,module,exports){ +},{"./interactive-util.js":81,"./movable-line-options.js":83,"./objective_.js":88}],85:[function(require,module,exports){ /** * A library of options to pass to add/draw/remove/constraints */ @@ -10041,7 +9908,7 @@ module.exports = { onClick: {standard: null} }; -},{}],156:[function(require,module,exports){ +},{}],86:[function(require,module,exports){ /** * Creates and adds a point to the graph that can be dragged around. * It allows constraints on its movement and draws when moves happen. @@ -10374,7 +10241,7 @@ _.extend(MovablePoint.prototype, { module.exports = MovablePoint; -},{"./interactive-util.js":151,"./movable-point-options.js":155,"./objective_.js":158}],157:[function(require,module,exports){ +},{"./interactive-util.js":81,"./movable-point-options.js":85,"./objective_.js":88}],87:[function(require,module,exports){ /** * Movable * @@ -10639,7 +10506,7 @@ _.extend(Movable.prototype, { module.exports = Movable; -},{"./interactive-util.js":151}],158:[function(require,module,exports){ +},{"./interactive-util.js":81}],88:[function(require,module,exports){ /** * A work-in-progress of _ methods for objects. * That is, they take an object as a parameter, @@ -10668,7 +10535,7 @@ var pluck = exports.pluck = function(table, subKey) { })); }; -},{}],159:[function(require,module,exports){ +},{}],89:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -10778,7 +10645,7 @@ var ItemEditor = React.createClass({displayName: 'ItemEditor', module.exports = ItemEditor; -},{"./answer-area-editor.jsx":120,"./editor.jsx":145,"./version.json":171,"react":117}],160:[function(require,module,exports){ +},{"./answer-area-editor.jsx":50,"./editor.jsx":75,"./version.json":101,"react":45}],90:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11098,7 +10965,7 @@ var ItemRenderer = React.createClass({displayName: 'ItemRenderer', module.exports = ItemRenderer; -},{"./answer-area-renderer.jsx":121,"./enabled-features.jsx":146,"./hint-renderer.jsx":148,"./perseus-api.jsx":164,"./renderer.jsx":167,"./util.js":170,"react":117}],161:[function(require,module,exports){ +},{"./answer-area-renderer.jsx":51,"./enabled-features.jsx":76,"./hint-renderer.jsx":78,"./perseus-api.jsx":94,"./renderer.jsx":97,"./util.js":100,"react":45}],91:[function(require,module,exports){ /** @jsx React.DOM */ /** * Changeable @@ -11199,7 +11066,7 @@ var Changeable = { module.exports = Changeable; -},{"./widget-prop-blacklist.jsx":163}],162:[function(require,module,exports){ +},{"./widget-prop-blacklist.jsx":93}],92:[function(require,module,exports){ /** @jsx React.DOM */var WIDGET_PROP_BLACKLIST = require("./widget-prop-blacklist.jsx"); var JsonifyProps = { @@ -11211,7 +11078,7 @@ var JsonifyProps = { module.exports = JsonifyProps; -},{"./widget-prop-blacklist.jsx":163}],163:[function(require,module,exports){ +},{"./widget-prop-blacklist.jsx":93}],93:[function(require,module,exports){ /** @jsx React.DOM */module.exports = [ // standard props "added" by react // (technically the renderer still adds them) @@ -11225,7 +11092,7 @@ module.exports = JsonifyProps; "apiOptions" ]; -},{}],164:[function(require,module,exports){ +},{}],94:[function(require,module,exports){ /** @jsx React.DOM *//** * [Most of] the Perseus client API. * @@ -11284,7 +11151,7 @@ module.exports = { }; -},{}],165:[function(require,module,exports){ +},{}],95:[function(require,module,exports){ require("./all-widgets.js"); var version = require("./version.json"); @@ -11304,7 +11171,7 @@ module.exports = { Util: require("./util.js") }; -},{"./all-widgets.js":119,"./answer-area-renderer.jsx":121,"./diffs/revision-diff.jsx":138,"./editor-page.jsx":144,"./editor.jsx":145,"./init.js":149,"./item-renderer.jsx":160,"./perseus-api.jsx":164,"./renderer.jsx":167,"./stateful-editor-page.jsx":168,"./util.js":170,"./version.json":171}],166:[function(require,module,exports){ +},{"./all-widgets.js":49,"./answer-area-renderer.jsx":51,"./diffs/revision-diff.jsx":68,"./editor-page.jsx":74,"./editor.jsx":75,"./init.js":79,"./item-renderer.jsx":90,"./perseus-api.jsx":94,"./renderer.jsx":97,"./stateful-editor-page.jsx":98,"./util.js":100,"./version.json":101}],96:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11320,7 +11187,7 @@ var QuestionParagraph = React.createClass({displayName: 'QuestionParagraph', module.exports = QuestionParagraph; -},{"react":117}],167:[function(require,module,exports){ +},{"react":45}],97:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11955,7 +11822,7 @@ function extractMathAndWidgets(text) { module.exports = Renderer; -},{"./enabled-features.jsx":146,"./perseus-api.jsx":164,"./question-paragraph.jsx":166,"./tex.jsx":169,"./util.js":170,"./widget-container.jsx":172,"./widgets.js":173,"react":117}],168:[function(require,module,exports){ +},{"./enabled-features.jsx":76,"./perseus-api.jsx":94,"./question-paragraph.jsx":96,"./tex.jsx":99,"./util.js":100,"./widget-container.jsx":102,"./widgets.js":103,"react":45}],98:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11998,7 +11865,7 @@ var StatefulEditorPage = React.createClass({displayName: 'StatefulEditorPage', module.exports = StatefulEditorPage; -},{"./editor-page.jsx":144,"react":117}],169:[function(require,module,exports){ +},{"./editor-page.jsx":74,"react":45}],99:[function(require,module,exports){ /** @jsx React.DOM */ /** * For math rendered using MathJax. Use me like 2x + 3. @@ -12151,7 +12018,7 @@ var TeX = React.createClass({displayName: 'TeX', module.exports = TeX; -},{"react":117}],170:[function(require,module,exports){ +},{"react":45}],100:[function(require,module,exports){ var nestedMap = function(children, func, context) { if (_.isArray(children)) { return _.map(children, function(child) { @@ -12707,7 +12574,7 @@ Util.random = Util.seededRNG(new Date().getTime() & 0xffffffff); module.exports = Util; -},{}],171:[function(require,module,exports){ +},{}],101:[function(require,module,exports){ module.exports={ "apiVersion": { "major": 1, @@ -12719,7 +12586,7 @@ module.exports={ } } -},{}],172:[function(require,module,exports){ +},{}],102:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -12758,7 +12625,7 @@ var WidgetContainer = React.createClass({displayName: 'WidgetContainer', module.exports = WidgetContainer; -},{"react":117}],173:[function(require,module,exports){ +},{"react":45}],103:[function(require,module,exports){ var widgets = {}; var Widgets = { @@ -12898,7 +12765,7 @@ var Widgets = { module.exports = Widgets; -},{}],174:[function(require,module,exports){ +},{}],104:[function(require,module,exports){ /** @jsx React.DOM */ var Changeable = require("../mixins/changeable.jsx"); @@ -13084,7 +12951,7 @@ module.exports = { }; -},{"../components/text-list-editor.jsx":137,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../renderer.jsx":167,"../util.js":170}],175:[function(require,module,exports){ +},{"../components/text-list-editor.jsx":67,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../renderer.jsx":97,"../util.js":100}],105:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -13342,7 +13209,7 @@ module.exports = { hidden: false }; -},{"../components/fancy-select.jsx":122,"../mixins/jsonify-props.jsx":162,"../perseus-api.jsx":164,"../util.js":170,"react":117,"react-components/info-tip":7}],176:[function(require,module,exports){ +},{"../components/fancy-select.jsx":52,"../mixins/jsonify-props.jsx":92,"../perseus-api.jsx":94,"../util.js":100,"react":45,"react-components/info-tip":39}],106:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -13537,7 +13404,7 @@ module.exports = { editor: ExampleGraphieWidgetEditor }; -},{"../components/graphie.jsx":127,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117}],177:[function(require,module,exports){ +},{"../components/graphie.jsx":57,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45}],107:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -13721,7 +13588,7 @@ module.exports = { editor: ExampleWidgetEditor }; -},{"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117}],178:[function(require,module,exports){ +},{"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45}],108:[function(require,module,exports){ /** @jsx React.DOM */ var React = require("react"); @@ -13776,7 +13643,8 @@ var Expression = React.createClass({displayName: 'Expression', getInitialState: function() { return { showErrorTooltip: false, - showErrorText: false + showErrorText: false, + offsetLeft: 0 }; }, @@ -13790,6 +13658,11 @@ var Expression = React.createClass({displayName: 'Expression', return KAS.parse(value, options); }, + componentDidMount: function() { + var expression = this.getDOMNode(); + this.setState({offsetLeft: expression.offsetLeft}); + }, + render: function() { // for old questions without buttonSets, make buttonSets by easybuttons if (!this.props.buttonSets) @@ -13861,7 +13734,8 @@ var Expression = React.createClass({displayName: 'Expression', buttonsVisible:this.props.buttonsVisible || "focused", buttonSets:this.props.buttonSets, onFocus:this._handleFocus, - onBlur:this._handleBlur} ), + onBlur:this._handleBlur, + offsetLeft:this.state.offsetLeft} ), this.state.showErrorTooltip && errorTooltip ); } @@ -14214,7 +14088,7 @@ module.exports = { hidden: false }; -},{"../components/input-with-examples.jsx":128,"../components/math-input.jsx":129,"../components/prop-check-box.jsx":132,"../components/tex-buttons.jsx":135,"../enabled-features.jsx":146,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../perseus-api.jsx":164,"../tex.jsx":169,"../util.js":170,"react":117,"react-components/info-tip":7,"react-components/tooltip":116}],179:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":58,"../components/math-input.jsx":59,"../components/prop-check-box.jsx":62,"../components/tex-buttons.jsx":65,"../enabled-features.jsx":76,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../perseus-api.jsx":94,"../tex.jsx":99,"../util.js":100,"react":45,"react-components/info-tip":39,"react-components/tooltip":44}],109:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -14466,7 +14340,7 @@ module.exports = { editor: IframeEditor }; -},{"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117,"react-components/blur-input":4}],180:[function(require,module,exports){ +},{"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45,"react-components/blur-input":36}],110:[function(require,module,exports){ /** @jsx React.DOM */ var BlurInput = require("react-components/blur-input"); @@ -14801,7 +14675,7 @@ module.exports = { }; -},{"../components/graphie.jsx":127,"../components/range-input.jsx":133,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react-components/blur-input":4,"react-components/info-tip":7}],181:[function(require,module,exports){ +},{"../components/graphie.jsx":57,"../components/range-input.jsx":63,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react-components/blur-input":36,"react-components/info-tip":39}],111:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -15122,7 +14996,7 @@ module.exports = { transform: propTransform }; -},{"../components/input-with-examples.jsx":128,"../enabled-features.jsx":146,"../perseus-api.jsx":164,"../renderer.jsx":167,"../tex.jsx":169,"../util.js":170,"react":117,"react-components/blur-input":4,"react-components/info-tip":7}],182:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":58,"../enabled-features.jsx":76,"../perseus-api.jsx":94,"../renderer.jsx":97,"../tex.jsx":99,"../util.js":100,"react":45,"react-components/blur-input":36,"react-components/info-tip":39}],112:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -17620,455 +17494,455 @@ module.exports = { hidden: false }; -},{"../components/graph-settings.jsx":123,"../components/graph.jsx":124,"../components/number-input.jsx":131,"../interactive2.js":150,"../util.js":170,"react":117,"react-components/info-tip":7}],183:[function(require,module,exports){ -/** @jsx React.DOM */ - -var InfoTip = require("react-components/info-tip"); -var PropCheckBox = require("../components/prop-check-box.jsx"); -var Util = require("../util.js"); - -function eq(x, y) { - return Math.abs(x - y) < 1e-9; -} - -var reverseRel = { - ge: "le", - gt: "lt", - le: "ge", - lt: "gt" -}; - -var toggleStrictRel = { - ge: "gt", - gt: "ge", - le: "lt", - lt: "le" -}; - -function formatImproper(n, d) { - if (d === 1) { - return "" + n; - } else { - return n + "/" + d; - } -} - -function formatMixed(n, d) { - if (n < 0) { - return "-" + formatMixed(-n, d); - } - var w = Math.floor(n / d); - if (w === 0) { - return formatImproper(n, d); - } else if (n - w * d === 0) { - return "" + w; - } else { - return w + "\\:" + formatImproper(n - w * d, d); - } -} - -var InteractiveNumberLine = React.createClass({displayName: 'InteractiveNumberLine', - getDefaultProps: function() { - return { - labelStyle: "decimal", - labelTicks: false, - isInequality: false, - pointX: 0, - rel: "ge" - }; - }, - - isValid: function() { - return this.props.range[0] < this.props.range[1] && - 0 < this.props.tickStep && - 0 < this.props.snapDivisions; - }, - - render: function() { - var inequalityControls; - if (this.props.isInequality) { - inequalityControls = React.DOM.div(null, - React.DOM.input( {type:"button", value:"換方向", - onClick:this.handleReverse} ), - React.DOM.input( {type:"button", - value: - this.props.rel === "le" || this.props.rel === "ge" ? - "改為空心圓" : - "改為實心圓", - - onClick:this.handleToggleStrict} ) - ); - } - - var valid = this.isValid(); - return React.DOM.div( {className:"perseus-widget " + - "perseus-widget-interactive-number-line"}, - React.DOM.div( {style:{display: valid ? "" : "none"}, - className:"graphie above-scratchpad", ref:"graphieDiv"} ), - React.DOM.div( {style:{display: valid ? "none" : ""}}, - ' ',"invalid number line configuration",' ' - ), - inequalityControls - ); - }, - - handleReverse: function() { - this.props.onChange({rel: reverseRel[this.props.rel]}); - }, - - handleToggleStrict: function() { - this.props.onChange({rel: toggleStrictRel[this.props.rel]}); - }, - - componentDidMount: function() { - this.addGraphie(); - }, - - componentDidUpdate: function() { - // Use jQuery to remove so event handlers don't leak - var node = this.refs.graphieDiv.getDOMNode(); - $(node).children().remove(); - - this.addGraphie(); - }, - - _label: function(value) { - var graphie = this.graphie; - var labelStyle = this.props.labelStyle; - - // TODO(jack): Find out if any exercises have "decimal ticks" set, - // and if so, re-save them and remove this check. - if (labelStyle === "decimal" || labelStyle === "decimal ticks") { - graphie.label([value, -0.53], value, "center"); - } else if (labelStyle === "improper") { - var frac = KhanUtil.toFraction(value); - graphie.label([value, -0.53], - formatImproper(frac[0], frac[1]), "center"); - } else if (labelStyle === "mixed") { - var frac = KhanUtil.toFraction(value); - graphie.label([value, -0.53], - formatMixed(frac[0], frac[1]), "center"); - } - }, - - addGraphie: function() { - var self = this; - var graphie = this.graphie = KhanUtil.createGraphie( - this.refs.graphieDiv.getDOMNode()); - // Ensure a sane configuration to avoid infinite loops - if (!this.isValid()) { - return; - } - - var range = this.props.range; - var tickStep = this.props.tickStep; - var scale = 400 / (range[1] - range[0]); - - graphie.init({ - range: [[range[0] - 30 / scale, - range[1] + 30 / scale], - [-1, 1]], - scale: [scale, 40] - }); - graphie.addMouseLayer({ - allowScratchpad: true - }); - - // Line - - graphie.line([range[0] - (25 / scale), 0], - [range[1] + (25 / scale), 0], { - arrows: "->" - }); - graphie.line([range[1] + (25 / scale), 0], - [range[0] - (25 / scale), 0], { - arrows: "->" - }); - - // Ticks - var labelStyle = this.props.labelStyle; - for (var x = Math.ceil(range[0] / tickStep) * tickStep; x <= range[1]; - x += tickStep) { - graphie.line([x, -0.2], [x, 0.2]); - - // TODO(jack): Find out if any exercises have "decimal ticks" set, - // and if so, re-save them and remove this check. - if (this.props.labelTicks || labelStyle === "decimal ticks") { - this._label(x); - } - } - - graphie.style({ - stroke: KhanUtil.INTERACTIVE, - strokeWidth: 3.5 - }, function() { - graphie.line([range[0], -0.2], [range[0], 0.2]); - graphie.line([range[1], -0.2], [range[1], 0.2]); - if (range[0] < 0 && 0 < range[1]) { - graphie.line([0, -0.2], [0, 0.2]); - } - }); - - graphie.style({color: KhanUtil.INTERACTIVE}, function() { - self._label(range[0]); - self._label(range[1]); - if (range[0] < 0 && 0 < range[1] && !self.props.labelTicks) { - graphie.label([0, -0.53], "0", "center"); - } - }); - - // Point - - var isInequality = this.props.isInequality; - var rel = this.props.rel; - - var pointSize; - var pointStyle; - var highlightStyle; - if (isInequality && (rel === "lt" || rel === "gt")) { - pointSize = 5; - pointStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil._BACKGROUND, - "stroke-width": 3 - }; - highlightStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil._BACKGROUND, - "stroke-width": 4 - }; - } else { - pointSize = 4; - pointStyle = highlightStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil.INTERACTING - }; - } - - var x = Math.min(Math.max(range[0], this.props.pointX), range[1]); - var point = this.point = graphie.addMovablePoint({ - pointSize: pointSize, - coord: [x, 0], - snapX: this.props.tickStep / this.props.snapDivisions, - constraints: { - constrainY: true - }, - normalStyle: pointStyle, - highlightStyle: highlightStyle - }); - point.onMove = function(x, y) { - x = Math.min(Math.max(range[0], x), range[1]); - updateInequality(x, y); - return [x, y]; - }; - point.onMoveEnd = function(x, y) { - this.props.onChange({pointX: x}); - }.bind(this); - - // Inequality line - - var inequalityLine; - updateInequality(x, 0); - - function updateInequality(px, py) { - if (inequalityLine) { - inequalityLine.remove(); - inequalityLine = null; - } - if (isInequality) { - var end; - if (rel === "ge" || rel === "gt") { - end = [range[1] + (26 / scale), 0]; - } else { - end = [range[0] - (26 / scale), 0]; - } - inequalityLine = graphie.line( - [px, py], - end, - { - arrows: "->", - stroke: KhanUtil.INTERACTIVE, - strokeWidth: 3.5 - } - ); - point.toFront(); - } - } - }, - - toJSON: function() { - return { - pointX: this.props.pointX, - rel: this.props.isInequality ? this.props.rel : "eq" - }; - }, - - simpleValidate: function(rubric) { - return InteractiveNumberLine.validate(this.toJSON(), rubric); - }, - - focus: $.noop, - - statics: { - displayMode: "block" - } -}); - - -_.extend(InteractiveNumberLine, { - validate: function(state, rubric) { - var range = rubric.range; - var start = Math.min(Math.max(range[0], 0), range[1]); - var startRel = rubric.isInequality ? "ge" : "eq"; - var correctRel = rubric.correctRel || "eq"; - - if (eq(state.pointX, rubric.correctX || 0) && - correctRel === state.rel) { - return { - type: "points", - earned: 1, - total: 1, - message: null - }; - } else if (state.pointX === start && state.rel === startRel) { - // We're where we started. - return { - type: "invalid", - message: null - }; - } else { - return { - type: "points", - earned: 0, - total: 1, - message: null - }; - } - } -}); - - -var InteractiveNumberLineEditor = React.createClass({displayName: 'InteractiveNumberLineEditor', - getDefaultProps: function() { - return { - range: [0, 10], - labelStyle: "decimal", - labelTicks: false, - tickStep: 1, - snapDivisions: 4, - correctRel: "eq", - correctX: 0 - }; - }, - - render: function() { - return React.DOM.div(null, - React.DOM.label(null, - ' ',"最小 x: ", React.DOM.input( {defaultValue:'' + this.props.range[0], - onBlur:this.onRangeBlur.bind(this, 0)} ) - ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"最大 x: ", React.DOM.input( {defaultValue:'' + this.props.range[1], - onBlur:this.onRangeBlur.bind(this, 1)} ) - ), - InfoTip(null, - React.DOM.p(null, "利用下方的「標籤格式」來改變最大與最小 x 的標籤顯示格式。") - ),React.DOM.br(null ), - React.DOM.span(null, - ' ',"正確答案:",' ', - React.DOM.select( {value:this.props.correctRel, - onChange:this.onChange.bind(this, "correctRel")}, - React.DOM.optgroup( {label:"等式"}, - React.DOM.option( {value:"eq"}, "x =") - ), - React.DOM.optgroup( {label:"不等式"}, - React.DOM.option( {value:"lt"}, "x <"), - React.DOM.option( {value:"gt"}, "x >"), - React.DOM.option( {value:"le"}, "x ≤"), - React.DOM.option( {value:"ge"}, "x ≥") - ) - ), - React.DOM.input( {defaultValue:'' + this.props.correctX, - onBlur:this.onNumBlur.bind(this, "correctX")} ) - ),React.DOM.br(null ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"標籤格式:",' ', - React.DOM.select( {value:this.props.labelStyle, - onChange:this.onChange.bind(this, "labelStyle")}, - React.DOM.option( {value:"decimal"}, "小數"), - React.DOM.option( {value:"improper"}, "假分數"), - React.DOM.option( {value:"mixed"}, "帶分數") - ), - PropCheckBox( - {label:"顯示刻度代表的數字", - labelTicks:this.props.labelTicks, - onChange:this.props.onChange} ) - ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"每一刻度之間距離: ", React.DOM.input( {defaultValue:'' + this.props.tickStep, - onBlur:this.onNumBlur.bind(this, "tickStep")} ) - ), - InfoTip(null, - React.DOM.p(null, "每一個刻度都會標上刻度線。") - ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"刻度之間的分割數量:",' ', - React.DOM.input( {defaultValue:'' + this.props.snapDivisions, - onBlur:this.onNumBlur.bind(this, "snapDivisions")} ) - ), - InfoTip(null, - React.DOM.p(null, "確保分割數量足夠讓使用者回答問題,即答案會落在某分割的位置。") - ) - ); - }, - - onRangeBlur: function(i, e) { - var x = Util.firstNumericalParse(e.target.value) || 0; - e.target.value = x; - - var range = this.props.range.slice(); - range[i] = x; - this.props.onChange({range: range}); - }, - - onChange: function(key, e) { - var opts = {}; - opts[key] = e.target.value; - this.props.onChange(opts); - }, - - onNumBlur: function(key, e) { - var x = Util.firstNumericalParse(e.target.value) || 0; - e.target.value = x; - - var opts = {}; - opts[key] = x; - this.props.onChange(opts); - }, - - toJSON: function() { - return { - range: this.props.range, - labelStyle: this.props.labelStyle, - labelTicks: this.props.labelTicks, - tickStep: this.props.tickStep, - snapDivisions: this.props.snapDivisions, - correctRel: this.props.correctRel, - isInequality: this.props.correctRel !== "eq", - correctX: this.props.correctX - }; - } -}); - -module.exports = { - name: "interactive-number-line", - displayName: "Interactive-number-line/互動式數線", - hidden: false, - widget: InteractiveNumberLine, - editor: InteractiveNumberLineEditor -}; - -},{"../components/prop-check-box.jsx":132,"../util.js":170,"react-components/info-tip":7}],184:[function(require,module,exports){ +},{"../components/graph-settings.jsx":53,"../components/graph.jsx":54,"../components/number-input.jsx":61,"../interactive2.js":80,"../util.js":100,"react":45,"react-components/info-tip":39}],113:[function(require,module,exports){ +/** @jsx React.DOM */ + +var InfoTip = require("react-components/info-tip"); +var PropCheckBox = require("../components/prop-check-box.jsx"); +var Util = require("../util.js"); + +function eq(x, y) { + return Math.abs(x - y) < 1e-9; +} + +var reverseRel = { + ge: "le", + gt: "lt", + le: "ge", + lt: "gt" +}; + +var toggleStrictRel = { + ge: "gt", + gt: "ge", + le: "lt", + lt: "le" +}; + +function formatImproper(n, d) { + if (d === 1) { + return "" + n; + } else { + return n + "/" + d; + } +} + +function formatMixed(n, d) { + if (n < 0) { + return "-" + formatMixed(-n, d); + } + var w = Math.floor(n / d); + if (w === 0) { + return formatImproper(n, d); + } else if (n - w * d === 0) { + return "" + w; + } else { + return w + "\\:" + formatImproper(n - w * d, d); + } +} + +var InteractiveNumberLine = React.createClass({displayName: 'InteractiveNumberLine', + getDefaultProps: function() { + return { + labelStyle: "decimal", + labelTicks: false, + isInequality: false, + pointX: 0, + rel: "ge" + }; + }, + + isValid: function() { + return this.props.range[0] < this.props.range[1] && + 0 < this.props.tickStep && + 0 < this.props.snapDivisions; + }, + + render: function() { + var inequalityControls; + if (this.props.isInequality) { + inequalityControls = React.DOM.div(null, + React.DOM.input( {type:"button", value:"換方向", + onClick:this.handleReverse} ), + React.DOM.input( {type:"button", + value: + this.props.rel === "le" || this.props.rel === "ge" ? + "改為空心圓" : + "改為實心圓", + + onClick:this.handleToggleStrict} ) + ); + } + + var valid = this.isValid(); + return React.DOM.div( {className:"perseus-widget " + + "perseus-widget-interactive-number-line"}, + React.DOM.div( {style:{display: valid ? "" : "none"}, + className:"graphie above-scratchpad", ref:"graphieDiv"} ), + React.DOM.div( {style:{display: valid ? "none" : ""}}, + ' ',"invalid number line configuration",' ' + ), + inequalityControls + ); + }, + + handleReverse: function() { + this.props.onChange({rel: reverseRel[this.props.rel]}); + }, + + handleToggleStrict: function() { + this.props.onChange({rel: toggleStrictRel[this.props.rel]}); + }, + + componentDidMount: function() { + this.addGraphie(); + }, + + componentDidUpdate: function() { + // Use jQuery to remove so event handlers don't leak + var node = this.refs.graphieDiv.getDOMNode(); + $(node).children().remove(); + + this.addGraphie(); + }, + + _label: function(value) { + var graphie = this.graphie; + var labelStyle = this.props.labelStyle; + + // TODO(jack): Find out if any exercises have "decimal ticks" set, + // and if so, re-save them and remove this check. + if (labelStyle === "decimal" || labelStyle === "decimal ticks") { + graphie.label([value, -0.53], value, "center"); + } else if (labelStyle === "improper") { + var frac = KhanUtil.toFraction(value); + graphie.label([value, -0.53], + formatImproper(frac[0], frac[1]), "center"); + } else if (labelStyle === "mixed") { + var frac = KhanUtil.toFraction(value); + graphie.label([value, -0.53], + formatMixed(frac[0], frac[1]), "center"); + } + }, + + addGraphie: function() { + var self = this; + var graphie = this.graphie = KhanUtil.createGraphie( + this.refs.graphieDiv.getDOMNode()); + // Ensure a sane configuration to avoid infinite loops + if (!this.isValid()) { + return; + } + + var range = this.props.range; + var tickStep = this.props.tickStep; + var scale = 400 / (range[1] - range[0]); + + graphie.init({ + range: [[range[0] - 30 / scale, + range[1] + 30 / scale], + [-1, 1]], + scale: [scale, 40] + }); + graphie.addMouseLayer({ + allowScratchpad: true + }); + + // Line + + graphie.line([range[0] - (25 / scale), 0], + [range[1] + (25 / scale), 0], { + arrows: "->" + }); + graphie.line([range[1] + (25 / scale), 0], + [range[0] - (25 / scale), 0], { + arrows: "->" + }); + + // Ticks + var labelStyle = this.props.labelStyle; + for (var x = Math.ceil(range[0] / tickStep) * tickStep; x <= range[1]; + x += tickStep) { + graphie.line([x, -0.2], [x, 0.2]); + + // TODO(jack): Find out if any exercises have "decimal ticks" set, + // and if so, re-save them and remove this check. + if (this.props.labelTicks || labelStyle === "decimal ticks") { + this._label(x); + } + } + + graphie.style({ + stroke: KhanUtil.INTERACTIVE, + strokeWidth: 3.5 + }, function() { + graphie.line([range[0], -0.2], [range[0], 0.2]); + graphie.line([range[1], -0.2], [range[1], 0.2]); + if (range[0] < 0 && 0 < range[1]) { + graphie.line([0, -0.2], [0, 0.2]); + } + }); + + graphie.style({color: KhanUtil.INTERACTIVE}, function() { + self._label(range[0]); + self._label(range[1]); + if (range[0] < 0 && 0 < range[1] && !self.props.labelTicks) { + graphie.label([0, -0.53], "0", "center"); + } + }); + + // Point + + var isInequality = this.props.isInequality; + var rel = this.props.rel; + + var pointSize; + var pointStyle; + var highlightStyle; + if (isInequality && (rel === "lt" || rel === "gt")) { + pointSize = 5; + pointStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil._BACKGROUND, + "stroke-width": 3 + }; + highlightStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil._BACKGROUND, + "stroke-width": 4 + }; + } else { + pointSize = 4; + pointStyle = highlightStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil.INTERACTING + }; + } + + var x = Math.min(Math.max(range[0], this.props.pointX), range[1]); + var point = this.point = graphie.addMovablePoint({ + pointSize: pointSize, + coord: [x, 0], + snapX: this.props.tickStep / this.props.snapDivisions, + constraints: { + constrainY: true + }, + normalStyle: pointStyle, + highlightStyle: highlightStyle + }); + point.onMove = function(x, y) { + x = Math.min(Math.max(range[0], x), range[1]); + updateInequality(x, y); + return [x, y]; + }; + point.onMoveEnd = function(x, y) { + this.props.onChange({pointX: x}); + }.bind(this); + + // Inequality line + + var inequalityLine; + updateInequality(x, 0); + + function updateInequality(px, py) { + if (inequalityLine) { + inequalityLine.remove(); + inequalityLine = null; + } + if (isInequality) { + var end; + if (rel === "ge" || rel === "gt") { + end = [range[1] + (26 / scale), 0]; + } else { + end = [range[0] - (26 / scale), 0]; + } + inequalityLine = graphie.line( + [px, py], + end, + { + arrows: "->", + stroke: KhanUtil.INTERACTIVE, + strokeWidth: 3.5 + } + ); + point.toFront(); + } + } + }, + + toJSON: function() { + return { + pointX: this.props.pointX, + rel: this.props.isInequality ? this.props.rel : "eq" + }; + }, + + simpleValidate: function(rubric) { + return InteractiveNumberLine.validate(this.toJSON(), rubric); + }, + + focus: $.noop, + + statics: { + displayMode: "block" + } +}); + + +_.extend(InteractiveNumberLine, { + validate: function(state, rubric) { + var range = rubric.range; + var start = Math.min(Math.max(range[0], 0), range[1]); + var startRel = rubric.isInequality ? "ge" : "eq"; + var correctRel = rubric.correctRel || "eq"; + + if (eq(state.pointX, rubric.correctX || 0) && + correctRel === state.rel) { + return { + type: "points", + earned: 1, + total: 1, + message: null + }; + } else if (state.pointX === start && state.rel === startRel) { + // We're where we started. + return { + type: "invalid", + message: null + }; + } else { + return { + type: "points", + earned: 0, + total: 1, + message: null + }; + } + } +}); + + +var InteractiveNumberLineEditor = React.createClass({displayName: 'InteractiveNumberLineEditor', + getDefaultProps: function() { + return { + range: [0, 10], + labelStyle: "decimal", + labelTicks: false, + tickStep: 1, + snapDivisions: 4, + correctRel: "eq", + correctX: 0 + }; + }, + + render: function() { + return React.DOM.div(null, + React.DOM.label(null, + ' ',"最小 x: ", React.DOM.input( {defaultValue:'' + this.props.range[0], + onBlur:this.onRangeBlur.bind(this, 0)} ) + ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"最大 x: ", React.DOM.input( {defaultValue:'' + this.props.range[1], + onBlur:this.onRangeBlur.bind(this, 1)} ) + ), + InfoTip(null, + React.DOM.p(null, "利用下方的「標籤格式」來改變最大與最小 x 的標籤顯示格式。") + ),React.DOM.br(null ), + React.DOM.span(null, + ' ',"正確答案:",' ', + React.DOM.select( {value:this.props.correctRel, + onChange:this.onChange.bind(this, "correctRel")}, + React.DOM.optgroup( {label:"等式"}, + React.DOM.option( {value:"eq"}, "x =") + ), + React.DOM.optgroup( {label:"不等式"}, + React.DOM.option( {value:"lt"}, "x <"), + React.DOM.option( {value:"gt"}, "x >"), + React.DOM.option( {value:"le"}, "x ≤"), + React.DOM.option( {value:"ge"}, "x ≥") + ) + ), + React.DOM.input( {defaultValue:'' + this.props.correctX, + onBlur:this.onNumBlur.bind(this, "correctX")} ) + ),React.DOM.br(null ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"標籤格式:",' ', + React.DOM.select( {value:this.props.labelStyle, + onChange:this.onChange.bind(this, "labelStyle")}, + React.DOM.option( {value:"decimal"}, "小數"), + React.DOM.option( {value:"improper"}, "假分數"), + React.DOM.option( {value:"mixed"}, "帶分數") + ), + PropCheckBox( + {label:"顯示刻度代表的數字", + labelTicks:this.props.labelTicks, + onChange:this.props.onChange} ) + ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"每一刻度之間距離: ", React.DOM.input( {defaultValue:'' + this.props.tickStep, + onBlur:this.onNumBlur.bind(this, "tickStep")} ) + ), + InfoTip(null, + React.DOM.p(null, "每一個刻度都會標上刻度線。") + ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"刻度之間的分割數量:",' ', + React.DOM.input( {defaultValue:'' + this.props.snapDivisions, + onBlur:this.onNumBlur.bind(this, "snapDivisions")} ) + ), + InfoTip(null, + React.DOM.p(null, "確保分割數量足夠讓使用者回答問題,即答案會落在某分割的位置。") + ) + ); + }, + + onRangeBlur: function(i, e) { + var x = Util.firstNumericalParse(e.target.value) || 0; + e.target.value = x; + + var range = this.props.range.slice(); + range[i] = x; + this.props.onChange({range: range}); + }, + + onChange: function(key, e) { + var opts = {}; + opts[key] = e.target.value; + this.props.onChange(opts); + }, + + onNumBlur: function(key, e) { + var x = Util.firstNumericalParse(e.target.value) || 0; + e.target.value = x; + + var opts = {}; + opts[key] = x; + this.props.onChange(opts); + }, + + toJSON: function() { + return { + range: this.props.range, + labelStyle: this.props.labelStyle, + labelTicks: this.props.labelTicks, + tickStep: this.props.tickStep, + snapDivisions: this.props.snapDivisions, + correctRel: this.props.correctRel, + isInequality: this.props.correctRel !== "eq", + correctX: this.props.correctX + }; + } +}); + +module.exports = { + name: "interactive-number-line", + displayName: "Interactive-number-line/互動式數線", + hidden: false, + widget: InteractiveNumberLine, + editor: InteractiveNumberLineEditor +}; + +},{"../components/prop-check-box.jsx":62,"../util.js":100,"react-components/info-tip":39}],114:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18530,7 +18404,7 @@ module.exports = { transform: transformProps }; -},{"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117,"react-components/info-tip":7}],185:[function(require,module,exports){ +},{"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45,"react-components/info-tip":39}],115:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18770,7 +18644,7 @@ module.exports = { hidden: false }; -},{"../components/prop-check-box.jsx":132,"../components/sortable.jsx":134,"../components/text-list-editor.jsx":137,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/info-tip":7}],186:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":62,"../components/sortable.jsx":64,"../components/text-list-editor.jsx":67,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/info-tip":39}],116:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -19131,7 +19005,7 @@ module.exports = { hidden: false }; -},{"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../components/range-input.jsx":133,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117,"react-components/info-tip":7}],187:[function(require,module,exports){ +},{"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../components/range-input.jsx":63,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45,"react-components/info-tip":39}],117:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -19982,7 +19856,7 @@ module.exports = { hidden: false }; -},{"../components/graphie.jsx":127,"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../components/range-input.jsx":133,"../interactive2.js":150,"../interactive2/interactive-util.js":151,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117,"react-components/button-group":5,"react-components/info-tip":7}],188:[function(require,module,exports){ +},{"../components/graphie.jsx":57,"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../components/range-input.jsx":63,"../interactive2.js":80,"../interactive2/interactive-util.js":81,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45,"react-components/button-group":37,"react-components/info-tip":39}],118:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -20427,7 +20301,7 @@ module.exports = { hidden: false }; -},{"../components/input-with-examples.jsx":128,"../components/multi-button-group.jsx":130,"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../editor.jsx":145,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117,"react-components/button-group":5,"react-components/info-tip":7}],189:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":58,"../components/multi-button-group.jsx":60,"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../editor.jsx":75,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45,"react-components/button-group":37,"react-components/info-tip":39}],119:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -21100,7 +20974,7 @@ module.exports = { hidden: false }; -},{"../components/text-list-editor.jsx":137,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/info-tip":7}],190:[function(require,module,exports){ +},{"../components/text-list-editor.jsx":67,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/info-tip":39}],120:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22097,7 +21971,7 @@ module.exports = { hidden: false }; -},{"../components/number-input.jsx":131,"../components/range-input.jsx":133,"../components/text-list-editor.jsx":137,"../util.js":170,"react":117,"react-components/info-tip":7}],191:[function(require,module,exports){ +},{"../components/number-input.jsx":61,"../components/range-input.jsx":63,"../components/text-list-editor.jsx":67,"../util.js":100,"react":45,"react-components/info-tip":39}],121:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22644,7 +22518,7 @@ module.exports = { transform: choiceTransform }; -},{"../components/prop-check-box.jsx":132,"../editor.jsx":145,"../mixins/changeable.jsx":161,"../perseus-api.jsx":164,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/button-group":5,"react-components/info-tip":7}],192:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":62,"../editor.jsx":75,"../mixins/changeable.jsx":91,"../perseus-api.jsx":94,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/button-group":37,"react-components/info-tip":39}],122:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22796,7 +22670,7 @@ module.exports = { hidden: false }; -},{"../components/prop-check-box.jsx":132,"../components/sortable.jsx":134,"../components/text-list-editor.jsx":137,"../util.js":170,"react":117,"react-components/info-tip":7}],193:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":62,"../components/sortable.jsx":64,"../components/text-list-editor.jsx":67,"../util.js":100,"react":45,"react-components/info-tip":39}],123:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -23128,7 +23002,7 @@ _.extend(SpeakingTextInput, { editor: SpeakingTextInputEditor }; -},{"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"classnames":3,"react":117}],194:[function(require,module,exports){ +},{"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"classnames":3,"react":45}],124:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -23301,7 +23175,7 @@ module.exports = { editor: SpeakingVoiceEditor }; -},{"../../lib/responsivevoice.js":2,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117}],195:[function(require,module,exports){ +},{"../../lib/responsivevoice.js":2,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45}],125:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -23621,7 +23495,7 @@ module.exports = { hidden: false }; -},{"../editor.jsx":145,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/info-tip":7}],196:[function(require,module,exports){ +},{"../editor.jsx":75,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/info-tip":39}],126:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -26125,5 +25999,5 @@ module.exports = { hidden: false }; -},{"../components/graph-settings.jsx":123,"../components/graph.jsx":124,"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../tex.jsx":169,"../util.js":170,"react":117,"react-components/info-tip":7}]},{},[165])(165) +},{"../components/graph-settings.jsx":53,"../components/graph.jsx":54,"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../tex.jsx":99,"../util.js":100,"react":45,"react-components/info-tip":39}]},{},[95])(95) }); \ No newline at end of file diff --git a/src/components/math-input.jsx b/src/components/math-input.jsx index 435c9ae740..ed2c1c8735 100644 --- a/src/components/math-input.jsx +++ b/src/components/math-input.jsx @@ -18,6 +18,7 @@ var MathInput = React.createClass({ onFocus: PT.func, onBlur: PT.func, buttonSets: TexButtons.buttonSetsType.isRequired, + offsetLeft: PT.number }, render: function() { @@ -40,6 +41,12 @@ var MathInput = React.createClass({ sets={this.props.buttonSets} />; button_height = (6 + 58 * this.props.buttonSets.length).toString() + "px"; } + var button_left = "0px"; + if (this.props.offsetLeft >= 260){ + button_left = "-240px"; + } else if (this.props.offsetLeft > 130 && this.props.offsetLeft < 260){ + button_left = "-120px"; + } return
@@ -48,7 +55,7 @@ var MathInput = React.createClass({ onFocus={this.handleFocus} onBlur={this.handleBlur} />
-
+
{buttons}
; diff --git a/src/widgets/expression.jsx b/src/widgets/expression.jsx index cea57b67d1..c749e774d6 100644 --- a/src/widgets/expression.jsx +++ b/src/widgets/expression.jsx @@ -52,7 +52,8 @@ var Expression = React.createClass({ getInitialState: function() { return { showErrorTooltip: false, - showErrorText: false + showErrorText: false, + offsetLeft: 0 }; }, @@ -66,6 +67,11 @@ var Expression = React.createClass({ return KAS.parse(value, options); }, + componentDidMount: function() { + var expression = this.getDOMNode(); + this.setState({offsetLeft: expression.offsetLeft}); + }, + render: function() { // for old questions without buttonSets, make buttonSets by easybuttons if (!this.props.buttonSets) @@ -137,7 +143,8 @@ var Expression = React.createClass({ buttonsVisible={this.props.buttonsVisible || "focused"} buttonSets={this.props.buttonSets} onFocus={this._handleFocus} - onBlur={this._handleBlur} /> + onBlur={this._handleBlur} + offsetLeft={this.state.offsetLeft} /> {this.state.showErrorTooltip && errorTooltip} ; } From 43cb7dcf7f0f02a8717b81c16b5632a1b5858030 Mon Sep 17 00:00:00 2001 From: Justin Hsiao Date: Tue, 24 Jan 2017 12:52:50 +0800 Subject: [PATCH 145/156] avoid setting the position left in editor --- build/perseus-1.js | 907 +++++++++++++++++----------------- src/components/math-input.jsx | 11 +- 2 files changed, 462 insertions(+), 456 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index 801955d423..c54a7cc383 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit b5078899120db2a9d4e11ea50a3db19bbb8db03a -// branch HEAD +// commit 92d6f2139c3677a1d570afef932155e4e8d730c9 +// branch fixbug_math_input_is_hidden_by_answer_area (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o= 260){ - button_left = "-240px"; - } else if (this.props.offsetLeft > 130 && this.props.offsetLeft < 260){ - button_left = "-120px"; + var in_editor = window.location.pathname.includes("/questionpanel/perseus_editor/"); + if(!in_editor){ + if (this.props.offsetLeft >= 260){ + button_left = "-240px"; + } else if (this.props.offsetLeft > 130 && this.props.offsetLeft < 260){ + button_left = "-120px"; + } } return React.DOM.div( {style:{display: "inline-block"}}, @@ -17495,452 +17498,452 @@ module.exports = { }; },{"../components/graph-settings.jsx":53,"../components/graph.jsx":54,"../components/number-input.jsx":61,"../interactive2.js":80,"../util.js":100,"react":45,"react-components/info-tip":39}],113:[function(require,module,exports){ -/** @jsx React.DOM */ - -var InfoTip = require("react-components/info-tip"); -var PropCheckBox = require("../components/prop-check-box.jsx"); -var Util = require("../util.js"); - -function eq(x, y) { - return Math.abs(x - y) < 1e-9; -} - -var reverseRel = { - ge: "le", - gt: "lt", - le: "ge", - lt: "gt" -}; - -var toggleStrictRel = { - ge: "gt", - gt: "ge", - le: "lt", - lt: "le" -}; - -function formatImproper(n, d) { - if (d === 1) { - return "" + n; - } else { - return n + "/" + d; - } -} - -function formatMixed(n, d) { - if (n < 0) { - return "-" + formatMixed(-n, d); - } - var w = Math.floor(n / d); - if (w === 0) { - return formatImproper(n, d); - } else if (n - w * d === 0) { - return "" + w; - } else { - return w + "\\:" + formatImproper(n - w * d, d); - } -} - -var InteractiveNumberLine = React.createClass({displayName: 'InteractiveNumberLine', - getDefaultProps: function() { - return { - labelStyle: "decimal", - labelTicks: false, - isInequality: false, - pointX: 0, - rel: "ge" - }; - }, - - isValid: function() { - return this.props.range[0] < this.props.range[1] && - 0 < this.props.tickStep && - 0 < this.props.snapDivisions; - }, - - render: function() { - var inequalityControls; - if (this.props.isInequality) { - inequalityControls = React.DOM.div(null, - React.DOM.input( {type:"button", value:"換方向", - onClick:this.handleReverse} ), - React.DOM.input( {type:"button", - value: - this.props.rel === "le" || this.props.rel === "ge" ? - "改為空心圓" : - "改為實心圓", - - onClick:this.handleToggleStrict} ) - ); - } - - var valid = this.isValid(); - return React.DOM.div( {className:"perseus-widget " + - "perseus-widget-interactive-number-line"}, - React.DOM.div( {style:{display: valid ? "" : "none"}, - className:"graphie above-scratchpad", ref:"graphieDiv"} ), - React.DOM.div( {style:{display: valid ? "none" : ""}}, - ' ',"invalid number line configuration",' ' - ), - inequalityControls - ); - }, - - handleReverse: function() { - this.props.onChange({rel: reverseRel[this.props.rel]}); - }, - - handleToggleStrict: function() { - this.props.onChange({rel: toggleStrictRel[this.props.rel]}); - }, - - componentDidMount: function() { - this.addGraphie(); - }, - - componentDidUpdate: function() { - // Use jQuery to remove so event handlers don't leak - var node = this.refs.graphieDiv.getDOMNode(); - $(node).children().remove(); - - this.addGraphie(); - }, - - _label: function(value) { - var graphie = this.graphie; - var labelStyle = this.props.labelStyle; - - // TODO(jack): Find out if any exercises have "decimal ticks" set, - // and if so, re-save them and remove this check. - if (labelStyle === "decimal" || labelStyle === "decimal ticks") { - graphie.label([value, -0.53], value, "center"); - } else if (labelStyle === "improper") { - var frac = KhanUtil.toFraction(value); - graphie.label([value, -0.53], - formatImproper(frac[0], frac[1]), "center"); - } else if (labelStyle === "mixed") { - var frac = KhanUtil.toFraction(value); - graphie.label([value, -0.53], - formatMixed(frac[0], frac[1]), "center"); - } - }, - - addGraphie: function() { - var self = this; - var graphie = this.graphie = KhanUtil.createGraphie( - this.refs.graphieDiv.getDOMNode()); - // Ensure a sane configuration to avoid infinite loops - if (!this.isValid()) { - return; - } - - var range = this.props.range; - var tickStep = this.props.tickStep; - var scale = 400 / (range[1] - range[0]); - - graphie.init({ - range: [[range[0] - 30 / scale, - range[1] + 30 / scale], - [-1, 1]], - scale: [scale, 40] - }); - graphie.addMouseLayer({ - allowScratchpad: true - }); - - // Line - - graphie.line([range[0] - (25 / scale), 0], - [range[1] + (25 / scale), 0], { - arrows: "->" - }); - graphie.line([range[1] + (25 / scale), 0], - [range[0] - (25 / scale), 0], { - arrows: "->" - }); - - // Ticks - var labelStyle = this.props.labelStyle; - for (var x = Math.ceil(range[0] / tickStep) * tickStep; x <= range[1]; - x += tickStep) { - graphie.line([x, -0.2], [x, 0.2]); - - // TODO(jack): Find out if any exercises have "decimal ticks" set, - // and if so, re-save them and remove this check. - if (this.props.labelTicks || labelStyle === "decimal ticks") { - this._label(x); - } - } - - graphie.style({ - stroke: KhanUtil.INTERACTIVE, - strokeWidth: 3.5 - }, function() { - graphie.line([range[0], -0.2], [range[0], 0.2]); - graphie.line([range[1], -0.2], [range[1], 0.2]); - if (range[0] < 0 && 0 < range[1]) { - graphie.line([0, -0.2], [0, 0.2]); - } - }); - - graphie.style({color: KhanUtil.INTERACTIVE}, function() { - self._label(range[0]); - self._label(range[1]); - if (range[0] < 0 && 0 < range[1] && !self.props.labelTicks) { - graphie.label([0, -0.53], "0", "center"); - } - }); - - // Point - - var isInequality = this.props.isInequality; - var rel = this.props.rel; - - var pointSize; - var pointStyle; - var highlightStyle; - if (isInequality && (rel === "lt" || rel === "gt")) { - pointSize = 5; - pointStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil._BACKGROUND, - "stroke-width": 3 - }; - highlightStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil._BACKGROUND, - "stroke-width": 4 - }; - } else { - pointSize = 4; - pointStyle = highlightStyle = { - stroke: KhanUtil.INTERACTING, - fill: KhanUtil.INTERACTING - }; - } - - var x = Math.min(Math.max(range[0], this.props.pointX), range[1]); - var point = this.point = graphie.addMovablePoint({ - pointSize: pointSize, - coord: [x, 0], - snapX: this.props.tickStep / this.props.snapDivisions, - constraints: { - constrainY: true - }, - normalStyle: pointStyle, - highlightStyle: highlightStyle - }); - point.onMove = function(x, y) { - x = Math.min(Math.max(range[0], x), range[1]); - updateInequality(x, y); - return [x, y]; - }; - point.onMoveEnd = function(x, y) { - this.props.onChange({pointX: x}); - }.bind(this); - - // Inequality line - - var inequalityLine; - updateInequality(x, 0); - - function updateInequality(px, py) { - if (inequalityLine) { - inequalityLine.remove(); - inequalityLine = null; - } - if (isInequality) { - var end; - if (rel === "ge" || rel === "gt") { - end = [range[1] + (26 / scale), 0]; - } else { - end = [range[0] - (26 / scale), 0]; - } - inequalityLine = graphie.line( - [px, py], - end, - { - arrows: "->", - stroke: KhanUtil.INTERACTIVE, - strokeWidth: 3.5 - } - ); - point.toFront(); - } - } - }, - - toJSON: function() { - return { - pointX: this.props.pointX, - rel: this.props.isInequality ? this.props.rel : "eq" - }; - }, - - simpleValidate: function(rubric) { - return InteractiveNumberLine.validate(this.toJSON(), rubric); - }, - - focus: $.noop, - - statics: { - displayMode: "block" - } -}); - - -_.extend(InteractiveNumberLine, { - validate: function(state, rubric) { - var range = rubric.range; - var start = Math.min(Math.max(range[0], 0), range[1]); - var startRel = rubric.isInequality ? "ge" : "eq"; - var correctRel = rubric.correctRel || "eq"; - - if (eq(state.pointX, rubric.correctX || 0) && - correctRel === state.rel) { - return { - type: "points", - earned: 1, - total: 1, - message: null - }; - } else if (state.pointX === start && state.rel === startRel) { - // We're where we started. - return { - type: "invalid", - message: null - }; - } else { - return { - type: "points", - earned: 0, - total: 1, - message: null - }; - } - } -}); - - -var InteractiveNumberLineEditor = React.createClass({displayName: 'InteractiveNumberLineEditor', - getDefaultProps: function() { - return { - range: [0, 10], - labelStyle: "decimal", - labelTicks: false, - tickStep: 1, - snapDivisions: 4, - correctRel: "eq", - correctX: 0 - }; - }, - - render: function() { - return React.DOM.div(null, - React.DOM.label(null, - ' ',"最小 x: ", React.DOM.input( {defaultValue:'' + this.props.range[0], - onBlur:this.onRangeBlur.bind(this, 0)} ) - ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"最大 x: ", React.DOM.input( {defaultValue:'' + this.props.range[1], - onBlur:this.onRangeBlur.bind(this, 1)} ) - ), - InfoTip(null, - React.DOM.p(null, "利用下方的「標籤格式」來改變最大與最小 x 的標籤顯示格式。") - ),React.DOM.br(null ), - React.DOM.span(null, - ' ',"正確答案:",' ', - React.DOM.select( {value:this.props.correctRel, - onChange:this.onChange.bind(this, "correctRel")}, - React.DOM.optgroup( {label:"等式"}, - React.DOM.option( {value:"eq"}, "x =") - ), - React.DOM.optgroup( {label:"不等式"}, - React.DOM.option( {value:"lt"}, "x <"), - React.DOM.option( {value:"gt"}, "x >"), - React.DOM.option( {value:"le"}, "x ≤"), - React.DOM.option( {value:"ge"}, "x ≥") - ) - ), - React.DOM.input( {defaultValue:'' + this.props.correctX, - onBlur:this.onNumBlur.bind(this, "correctX")} ) - ),React.DOM.br(null ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"標籤格式:",' ', - React.DOM.select( {value:this.props.labelStyle, - onChange:this.onChange.bind(this, "labelStyle")}, - React.DOM.option( {value:"decimal"}, "小數"), - React.DOM.option( {value:"improper"}, "假分數"), - React.DOM.option( {value:"mixed"}, "帶分數") - ), - PropCheckBox( - {label:"顯示刻度代表的數字", - labelTicks:this.props.labelTicks, - onChange:this.props.onChange} ) - ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"每一刻度之間距離: ", React.DOM.input( {defaultValue:'' + this.props.tickStep, - onBlur:this.onNumBlur.bind(this, "tickStep")} ) - ), - InfoTip(null, - React.DOM.p(null, "每一個刻度都會標上刻度線。") - ),React.DOM.br(null ), - React.DOM.label(null, - ' ',"刻度之間的分割數量:",' ', - React.DOM.input( {defaultValue:'' + this.props.snapDivisions, - onBlur:this.onNumBlur.bind(this, "snapDivisions")} ) - ), - InfoTip(null, - React.DOM.p(null, "確保分割數量足夠讓使用者回答問題,即答案會落在某分割的位置。") - ) - ); - }, - - onRangeBlur: function(i, e) { - var x = Util.firstNumericalParse(e.target.value) || 0; - e.target.value = x; - - var range = this.props.range.slice(); - range[i] = x; - this.props.onChange({range: range}); - }, - - onChange: function(key, e) { - var opts = {}; - opts[key] = e.target.value; - this.props.onChange(opts); - }, - - onNumBlur: function(key, e) { - var x = Util.firstNumericalParse(e.target.value) || 0; - e.target.value = x; - - var opts = {}; - opts[key] = x; - this.props.onChange(opts); - }, - - toJSON: function() { - return { - range: this.props.range, - labelStyle: this.props.labelStyle, - labelTicks: this.props.labelTicks, - tickStep: this.props.tickStep, - snapDivisions: this.props.snapDivisions, - correctRel: this.props.correctRel, - isInequality: this.props.correctRel !== "eq", - correctX: this.props.correctX - }; - } -}); - -module.exports = { - name: "interactive-number-line", - displayName: "Interactive-number-line/互動式數線", - hidden: false, - widget: InteractiveNumberLine, - editor: InteractiveNumberLineEditor -}; +/** @jsx React.DOM */ + +var InfoTip = require("react-components/info-tip"); +var PropCheckBox = require("../components/prop-check-box.jsx"); +var Util = require("../util.js"); + +function eq(x, y) { + return Math.abs(x - y) < 1e-9; +} + +var reverseRel = { + ge: "le", + gt: "lt", + le: "ge", + lt: "gt" +}; + +var toggleStrictRel = { + ge: "gt", + gt: "ge", + le: "lt", + lt: "le" +}; + +function formatImproper(n, d) { + if (d === 1) { + return "" + n; + } else { + return n + "/" + d; + } +} + +function formatMixed(n, d) { + if (n < 0) { + return "-" + formatMixed(-n, d); + } + var w = Math.floor(n / d); + if (w === 0) { + return formatImproper(n, d); + } else if (n - w * d === 0) { + return "" + w; + } else { + return w + "\\:" + formatImproper(n - w * d, d); + } +} + +var InteractiveNumberLine = React.createClass({displayName: 'InteractiveNumberLine', + getDefaultProps: function() { + return { + labelStyle: "decimal", + labelTicks: false, + isInequality: false, + pointX: 0, + rel: "ge" + }; + }, + + isValid: function() { + return this.props.range[0] < this.props.range[1] && + 0 < this.props.tickStep && + 0 < this.props.snapDivisions; + }, + + render: function() { + var inequalityControls; + if (this.props.isInequality) { + inequalityControls = React.DOM.div(null, + React.DOM.input( {type:"button", value:"換方向", + onClick:this.handleReverse} ), + React.DOM.input( {type:"button", + value: + this.props.rel === "le" || this.props.rel === "ge" ? + "改為空心圓" : + "改為實心圓", + + onClick:this.handleToggleStrict} ) + ); + } + + var valid = this.isValid(); + return React.DOM.div( {className:"perseus-widget " + + "perseus-widget-interactive-number-line"}, + React.DOM.div( {style:{display: valid ? "" : "none"}, + className:"graphie above-scratchpad", ref:"graphieDiv"} ), + React.DOM.div( {style:{display: valid ? "none" : ""}}, + ' ',"invalid number line configuration",' ' + ), + inequalityControls + ); + }, + + handleReverse: function() { + this.props.onChange({rel: reverseRel[this.props.rel]}); + }, + + handleToggleStrict: function() { + this.props.onChange({rel: toggleStrictRel[this.props.rel]}); + }, + + componentDidMount: function() { + this.addGraphie(); + }, + + componentDidUpdate: function() { + // Use jQuery to remove so event handlers don't leak + var node = this.refs.graphieDiv.getDOMNode(); + $(node).children().remove(); + + this.addGraphie(); + }, + + _label: function(value) { + var graphie = this.graphie; + var labelStyle = this.props.labelStyle; + + // TODO(jack): Find out if any exercises have "decimal ticks" set, + // and if so, re-save them and remove this check. + if (labelStyle === "decimal" || labelStyle === "decimal ticks") { + graphie.label([value, -0.53], value, "center"); + } else if (labelStyle === "improper") { + var frac = KhanUtil.toFraction(value); + graphie.label([value, -0.53], + formatImproper(frac[0], frac[1]), "center"); + } else if (labelStyle === "mixed") { + var frac = KhanUtil.toFraction(value); + graphie.label([value, -0.53], + formatMixed(frac[0], frac[1]), "center"); + } + }, + + addGraphie: function() { + var self = this; + var graphie = this.graphie = KhanUtil.createGraphie( + this.refs.graphieDiv.getDOMNode()); + // Ensure a sane configuration to avoid infinite loops + if (!this.isValid()) { + return; + } + + var range = this.props.range; + var tickStep = this.props.tickStep; + var scale = 400 / (range[1] - range[0]); + + graphie.init({ + range: [[range[0] - 30 / scale, + range[1] + 30 / scale], + [-1, 1]], + scale: [scale, 40] + }); + graphie.addMouseLayer({ + allowScratchpad: true + }); + + // Line + + graphie.line([range[0] - (25 / scale), 0], + [range[1] + (25 / scale), 0], { + arrows: "->" + }); + graphie.line([range[1] + (25 / scale), 0], + [range[0] - (25 / scale), 0], { + arrows: "->" + }); + + // Ticks + var labelStyle = this.props.labelStyle; + for (var x = Math.ceil(range[0] / tickStep) * tickStep; x <= range[1]; + x += tickStep) { + graphie.line([x, -0.2], [x, 0.2]); + + // TODO(jack): Find out if any exercises have "decimal ticks" set, + // and if so, re-save them and remove this check. + if (this.props.labelTicks || labelStyle === "decimal ticks") { + this._label(x); + } + } + + graphie.style({ + stroke: KhanUtil.INTERACTIVE, + strokeWidth: 3.5 + }, function() { + graphie.line([range[0], -0.2], [range[0], 0.2]); + graphie.line([range[1], -0.2], [range[1], 0.2]); + if (range[0] < 0 && 0 < range[1]) { + graphie.line([0, -0.2], [0, 0.2]); + } + }); + + graphie.style({color: KhanUtil.INTERACTIVE}, function() { + self._label(range[0]); + self._label(range[1]); + if (range[0] < 0 && 0 < range[1] && !self.props.labelTicks) { + graphie.label([0, -0.53], "0", "center"); + } + }); + + // Point + + var isInequality = this.props.isInequality; + var rel = this.props.rel; + + var pointSize; + var pointStyle; + var highlightStyle; + if (isInequality && (rel === "lt" || rel === "gt")) { + pointSize = 5; + pointStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil._BACKGROUND, + "stroke-width": 3 + }; + highlightStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil._BACKGROUND, + "stroke-width": 4 + }; + } else { + pointSize = 4; + pointStyle = highlightStyle = { + stroke: KhanUtil.INTERACTING, + fill: KhanUtil.INTERACTING + }; + } + + var x = Math.min(Math.max(range[0], this.props.pointX), range[1]); + var point = this.point = graphie.addMovablePoint({ + pointSize: pointSize, + coord: [x, 0], + snapX: this.props.tickStep / this.props.snapDivisions, + constraints: { + constrainY: true + }, + normalStyle: pointStyle, + highlightStyle: highlightStyle + }); + point.onMove = function(x, y) { + x = Math.min(Math.max(range[0], x), range[1]); + updateInequality(x, y); + return [x, y]; + }; + point.onMoveEnd = function(x, y) { + this.props.onChange({pointX: x}); + }.bind(this); + + // Inequality line + + var inequalityLine; + updateInequality(x, 0); + + function updateInequality(px, py) { + if (inequalityLine) { + inequalityLine.remove(); + inequalityLine = null; + } + if (isInequality) { + var end; + if (rel === "ge" || rel === "gt") { + end = [range[1] + (26 / scale), 0]; + } else { + end = [range[0] - (26 / scale), 0]; + } + inequalityLine = graphie.line( + [px, py], + end, + { + arrows: "->", + stroke: KhanUtil.INTERACTIVE, + strokeWidth: 3.5 + } + ); + point.toFront(); + } + } + }, + + toJSON: function() { + return { + pointX: this.props.pointX, + rel: this.props.isInequality ? this.props.rel : "eq" + }; + }, + + simpleValidate: function(rubric) { + return InteractiveNumberLine.validate(this.toJSON(), rubric); + }, + + focus: $.noop, + + statics: { + displayMode: "block" + } +}); + + +_.extend(InteractiveNumberLine, { + validate: function(state, rubric) { + var range = rubric.range; + var start = Math.min(Math.max(range[0], 0), range[1]); + var startRel = rubric.isInequality ? "ge" : "eq"; + var correctRel = rubric.correctRel || "eq"; + + if (eq(state.pointX, rubric.correctX || 0) && + correctRel === state.rel) { + return { + type: "points", + earned: 1, + total: 1, + message: null + }; + } else if (state.pointX === start && state.rel === startRel) { + // We're where we started. + return { + type: "invalid", + message: null + }; + } else { + return { + type: "points", + earned: 0, + total: 1, + message: null + }; + } + } +}); + + +var InteractiveNumberLineEditor = React.createClass({displayName: 'InteractiveNumberLineEditor', + getDefaultProps: function() { + return { + range: [0, 10], + labelStyle: "decimal", + labelTicks: false, + tickStep: 1, + snapDivisions: 4, + correctRel: "eq", + correctX: 0 + }; + }, + + render: function() { + return React.DOM.div(null, + React.DOM.label(null, + ' ',"最小 x: ", React.DOM.input( {defaultValue:'' + this.props.range[0], + onBlur:this.onRangeBlur.bind(this, 0)} ) + ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"最大 x: ", React.DOM.input( {defaultValue:'' + this.props.range[1], + onBlur:this.onRangeBlur.bind(this, 1)} ) + ), + InfoTip(null, + React.DOM.p(null, "利用下方的「標籤格式」來改變最大與最小 x 的標籤顯示格式。") + ),React.DOM.br(null ), + React.DOM.span(null, + ' ',"正確答案:",' ', + React.DOM.select( {value:this.props.correctRel, + onChange:this.onChange.bind(this, "correctRel")}, + React.DOM.optgroup( {label:"等式"}, + React.DOM.option( {value:"eq"}, "x =") + ), + React.DOM.optgroup( {label:"不等式"}, + React.DOM.option( {value:"lt"}, "x <"), + React.DOM.option( {value:"gt"}, "x >"), + React.DOM.option( {value:"le"}, "x ≤"), + React.DOM.option( {value:"ge"}, "x ≥") + ) + ), + React.DOM.input( {defaultValue:'' + this.props.correctX, + onBlur:this.onNumBlur.bind(this, "correctX")} ) + ),React.DOM.br(null ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"標籤格式:",' ', + React.DOM.select( {value:this.props.labelStyle, + onChange:this.onChange.bind(this, "labelStyle")}, + React.DOM.option( {value:"decimal"}, "小數"), + React.DOM.option( {value:"improper"}, "假分數"), + React.DOM.option( {value:"mixed"}, "帶分數") + ), + PropCheckBox( + {label:"顯示刻度代表的數字", + labelTicks:this.props.labelTicks, + onChange:this.props.onChange} ) + ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"每一刻度之間距離: ", React.DOM.input( {defaultValue:'' + this.props.tickStep, + onBlur:this.onNumBlur.bind(this, "tickStep")} ) + ), + InfoTip(null, + React.DOM.p(null, "每一個刻度都會標上刻度線。") + ),React.DOM.br(null ), + React.DOM.label(null, + ' ',"刻度之間的分割數量:",' ', + React.DOM.input( {defaultValue:'' + this.props.snapDivisions, + onBlur:this.onNumBlur.bind(this, "snapDivisions")} ) + ), + InfoTip(null, + React.DOM.p(null, "確保分割數量足夠讓使用者回答問題,即答案會落在某分割的位置。") + ) + ); + }, + + onRangeBlur: function(i, e) { + var x = Util.firstNumericalParse(e.target.value) || 0; + e.target.value = x; + + var range = this.props.range.slice(); + range[i] = x; + this.props.onChange({range: range}); + }, + + onChange: function(key, e) { + var opts = {}; + opts[key] = e.target.value; + this.props.onChange(opts); + }, + + onNumBlur: function(key, e) { + var x = Util.firstNumericalParse(e.target.value) || 0; + e.target.value = x; + + var opts = {}; + opts[key] = x; + this.props.onChange(opts); + }, + + toJSON: function() { + return { + range: this.props.range, + labelStyle: this.props.labelStyle, + labelTicks: this.props.labelTicks, + tickStep: this.props.tickStep, + snapDivisions: this.props.snapDivisions, + correctRel: this.props.correctRel, + isInequality: this.props.correctRel !== "eq", + correctX: this.props.correctX + }; + } +}); + +module.exports = { + name: "interactive-number-line", + displayName: "Interactive-number-line/互動式數線", + hidden: false, + widget: InteractiveNumberLine, + editor: InteractiveNumberLineEditor +}; },{"../components/prop-check-box.jsx":62,"../util.js":100,"react-components/info-tip":39}],114:[function(require,module,exports){ /** @jsx React.DOM */ diff --git a/src/components/math-input.jsx b/src/components/math-input.jsx index ed2c1c8735..6c324c9a36 100644 --- a/src/components/math-input.jsx +++ b/src/components/math-input.jsx @@ -42,10 +42,13 @@ var MathInput = React.createClass({ button_height = (6 + 58 * this.props.buttonSets.length).toString() + "px"; } var button_left = "0px"; - if (this.props.offsetLeft >= 260){ - button_left = "-240px"; - } else if (this.props.offsetLeft > 130 && this.props.offsetLeft < 260){ - button_left = "-120px"; + var in_editor = window.location.pathname.includes("/questionpanel/perseus_editor/"); + if(!in_editor){ + if (this.props.offsetLeft >= 260){ + button_left = "-240px"; + } else if (this.props.offsetLeft > 130 && this.props.offsetLeft < 260){ + button_left = "-120px"; + } } return
From ffd9f90a81ec1f7ac6a5cca8dd38e88931a8c4dc Mon Sep 17 00:00:00 2001 From: Justin Hsiao Date: Tue, 24 Jan 2017 13:07:47 +0800 Subject: [PATCH 146/156] use indexOf() instead of includes() for more browser support --- build/perseus-1.js | 4 ++-- src/components/math-input.jsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index c54a7cc383..b6a1046a3b 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,5 +1,5 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 92d6f2139c3677a1d570afef932155e4e8d730c9 +// commit 43cb7dcf7f0f02a8717b81c16b5632a1b5858030 // branch fixbug_math_input_is_hidden_by_answer_area (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o= 0; if(!in_editor){ if (this.props.offsetLeft >= 260){ button_left = "-240px"; diff --git a/src/components/math-input.jsx b/src/components/math-input.jsx index 6c324c9a36..b38aeef6ee 100644 --- a/src/components/math-input.jsx +++ b/src/components/math-input.jsx @@ -42,7 +42,7 @@ var MathInput = React.createClass({ button_height = (6 + 58 * this.props.buttonSets.length).toString() + "px"; } var button_left = "0px"; - var in_editor = window.location.pathname.includes("/questionpanel/perseus_editor/"); + var in_editor = window.location.pathname.indexOf("/questionpanel/perseus_editor/") >= 0; if(!in_editor){ if (this.props.offsetLeft >= 260){ button_left = "-240px"; From 824b05b5faf31d0478b02cbfa6a254daf2d8ca3f Mon Sep 17 00:00:00 2001 From: Justin Hsiao Date: Tue, 24 Jan 2017 16:53:31 +0800 Subject: [PATCH 147/156] move detect is in editor to expression --- build/perseus-1.js | 10 ++++++---- src/components/math-input.jsx | 3 +-- src/widgets/expression.jsx | 5 ++++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index b6a1046a3b..11d1f02591 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,5 +1,5 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 43cb7dcf7f0f02a8717b81c16b5632a1b5858030 +// commit ffd9f90a81ec1f7ac6a5cca8dd38e88931a8c4dc // branch fixbug_math_input_is_hidden_by_answer_area (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o= 0; - if(!in_editor){ + if(!this.props.inEditor){ if (this.props.offsetLeft >= 260){ button_left = "-240px"; } else if (this.props.offsetLeft > 130 && this.props.offsetLeft < 260){ @@ -13728,6 +13727,8 @@ var Expression = React.createClass({displayName: 'Expression', "show-error-tooltip": this.state.showErrorTooltip }); + var inEditor = window.location.pathname.indexOf("/questionpanel/perseus_editor/") >= 0; + return React.DOM.span( {className:className}, MathInput( {ref:"input", @@ -13738,7 +13739,8 @@ var Expression = React.createClass({displayName: 'Expression', buttonSets:this.props.buttonSets, onFocus:this._handleFocus, onBlur:this._handleBlur, - offsetLeft:this.state.offsetLeft} ), + offsetLeft:this.state.offsetLeft, + inEditor:inEditor} ), this.state.showErrorTooltip && errorTooltip ); } diff --git a/src/components/math-input.jsx b/src/components/math-input.jsx index b38aeef6ee..b7fc0fad7f 100644 --- a/src/components/math-input.jsx +++ b/src/components/math-input.jsx @@ -42,8 +42,7 @@ var MathInput = React.createClass({ button_height = (6 + 58 * this.props.buttonSets.length).toString() + "px"; } var button_left = "0px"; - var in_editor = window.location.pathname.indexOf("/questionpanel/perseus_editor/") >= 0; - if(!in_editor){ + if(!this.props.inEditor){ if (this.props.offsetLeft >= 260){ button_left = "-240px"; } else if (this.props.offsetLeft > 130 && this.props.offsetLeft < 260){ diff --git a/src/widgets/expression.jsx b/src/widgets/expression.jsx index c749e774d6..6ade2bea8e 100644 --- a/src/widgets/expression.jsx +++ b/src/widgets/expression.jsx @@ -134,6 +134,8 @@ var Expression = React.createClass({ "show-error-tooltip": this.state.showErrorTooltip }); + var inEditor = window.location.pathname.indexOf("/questionpanel/perseus_editor/") >= 0; + return + offsetLeft={this.state.offsetLeft} + inEditor={inEditor} /> {this.state.showErrorTooltip && errorTooltip} ; } From 51e312e19cf51563c2ecf9487ce20b12a2272ef2 Mon Sep 17 00:00:00 2001 From: Ins Huang Date: Thu, 2 Feb 2017 17:22:53 +0800 Subject: [PATCH 148/156] Enable more widgets showing answer --- build/perseus-1.js | 5466 +++++++++++------------ src/answer-area-renderer.jsx | 13 + src/item-renderer.jsx | 9 +- src/renderer.jsx | 14 +- src/widgets/expression.jsx | 7 + src/widgets/input-number.jsx | 7 + src/widgets/interactive-number-line.jsx | 11 + src/widgets/number-line.jsx | 11 + src/widgets/numeric-input.jsx | 5 +- src/widgets/radio.jsx | 10 +- src/widgets/sorter.jsx | 29 + 11 files changed, 2829 insertions(+), 2753 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index 5ba52d2a4e..be627138d2 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 65af56486a5b7a5703309f7e0bb70991d9226e32 -// branch master +// commit ac6c50d99bbcb6c3e39efea94a85a55a3a4f428f +// branch recover-user-attempts (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license */ -var BlurInput = React.createClass({displayName: 'BlurInput', - propTypes: { - value: React.PropTypes.string.isRequired, - onChange: React.PropTypes.func.isRequired - }, - getInitialState: function() { - return { value: this.props.value }; - }, - render: function() { - return this.transferPropsTo(React.DOM.input( - {type:"text", - value:this.state.value, - onChange:this.handleChange, - onBlur:this.handleBlur} )); - }, - componentWillReceiveProps: function(nextProps) { - this.setState({ value: nextProps.value }); - }, - handleChange: function(e) { - this.setState({ value: e.target.value }); - }, - handleBlur: function(e) { - this.props.onChange(e.target.value); - } -}); - -module.exports = BlurInput; - -},{"react":117}],5:[function(require,module,exports){ -/** @jsx React.DOM */ -var React = require('react'); -var RCSS = require('rcss'); -var _ = require('underscore'); +/** Used to pool arrays and objects used internally */ +var arrayPool = []; -var outerStyle = { - display: 'inline-block', -}; +module.exports = arrayPool; -var buttonStyle = { - backgroundColor: 'white', - border: '1px solid #ccc', - borderBottom: '1px solid #ccc', - borderLeft: '0', - cursor: 'pointer', - margin: '0', - padding: '5px 10px', - position: 'relative', // for hover +},{}],5:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreate = require('lodash._basecreate'), + isObject = require('lodash.isobject'), + setBindData = require('lodash._setbinddata'), + slice = require('lodash._slice'); - ':first-child': { - borderLeft: '1px solid #ccc', - borderTopLeftRadius: '3px', - borderBottomLeftRadius: '3px' - }, +/** + * Used for `Array` method references. + * + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; - ':last-child': { - borderRight: '1px solid #ccc', - borderTopRightRadius: '3px', - borderBottomRightRadius: '3px' - }, +/** Native method shortcuts */ +var push = arrayRef.push; - ':hover': { - backgroundColor: '#ccc' - }, +/** + * The base implementation of `_.bind` that creates the bound function and + * sets its meta data. + * + * @private + * @param {Array} bindData The bind data array. + * @returns {Function} Returns the new bound function. + */ +function baseBind(bindData) { + var func = bindData[0], + partialArgs = bindData[2], + thisArg = bindData[4]; - ':focus': { - zIndex: '2' + function bound() { + // `Function#bind` spec + // http://es5.github.io/#x15.3.4.5 + if (partialArgs) { + // avoid `arguments` object deoptimizations by using `slice` instead + // of `Array.prototype.slice.call` and not assigning `arguments` to a + // variable as a ternary expression + var args = slice(partialArgs); + push.apply(args, arguments); } -}; + // mimic the constructor's `return` behavior + // http://es5.github.io/#x13.2.2 + if (this instanceof bound) { + // ensure `new bound` is an instance of `func` + var thisBinding = baseCreate(func.prototype), + result = func.apply(thisBinding, args || arguments); + return isObject(result) ? result : thisBinding; + } + return func.apply(thisArg, args || arguments); + } + setBindData(bound, bindData); + return bound; +} -var selectedStyle = { - backgroundColor: '#ddd' -}; +module.exports = baseBind; -RCSS.createClass(outerStyle); -RCSS.createClass(buttonStyle); -RCSS.createClass(selectedStyle); +},{"lodash._basecreate":6,"lodash._setbinddata":19,"lodash._slice":21,"lodash.isobject":31}],6:[function(require,module,exports){ +(function (global){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var isNative = require('lodash._isnative'), + isObject = require('lodash.isobject'), + noop = require('lodash.noop'); -/* ButtonGroup is an aesthetically pleasing group of buttons. - * - * The class requires these properties: - * buttons - an array of objects with keys: - * "value": this is the value returned when the button is selected - * "text": this is the text shown on the button - * "title": this is the title-text shown on hover - * onChange - a function that is provided with the updated value - * (which it then is responsible for updating) - * - * The class has these optional properties: - * value - the initial value of the button selected, defaults to null. - * allowEmpty - if false, exactly one button _must_ be selected; otherwise - * it defaults to true and _at most_ one button (0 or 1) may be selected. +/* Native method shortcuts for methods with the same name as other `lodash` methods */ +var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate; + +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. * - * Requires stylesheets/perseus-admin-package/editor.less to look nice. + * @private + * @param {Object} prototype The object to inherit from. + * @returns {Object} Returns the new object. */ +function baseCreate(prototype, properties) { + return isObject(prototype) ? nativeCreate(prototype) : {}; +} +// fallback for browsers without `Object.create` +if (!nativeCreate) { + baseCreate = (function() { + function Object() {} + return function(prototype) { + if (isObject(prototype)) { + Object.prototype = prototype; + var result = new Object; + Object.prototype = null; + } + return result || global.Object(); + }; + }()); +} -var ButtonGroup = React.createClass({displayName: 'ButtonGroup', - propTypes: { - value: React.PropTypes.any, - buttons: React.PropTypes.arrayOf(React.PropTypes.shape({ - value: React.PropTypes.any.isRequired, - text: React.PropTypes.renderable, - title: React.PropTypes.string - })).isRequired, - onChange: React.PropTypes.func.isRequired, - allowEmpty: React.PropTypes.bool - }, +module.exports = baseCreate; - getDefaultProps: function() { - return { - value: null, - allowEmpty: true - }; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"lodash._isnative":14,"lodash.isobject":31,"lodash.noop":33}],7:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var bind = require('lodash.bind'), + identity = require('lodash.identity'), + setBindData = require('lodash._setbinddata'), + support = require('lodash.support'); - render: function() { - var value = this.props.value; - var buttons = _(this.props.buttons).map(function(button, i) { - var maybeSelected = button.value === value ? - selectedStyle.className : - ""; - return React.DOM.button( {title:button.title, - id:"" + i, - ref:"button" + i, - key:"" + i, - className:(buttonStyle.className + " " + maybeSelected), - onClick:this.toggleSelect.bind(this, button.value)}, - button.text || "" + button.value - ); - }.bind(this)); +/** Used to detected named functions */ +var reFuncName = /^\s*function[ \n\r\t]+\w/; - return React.DOM.div( {className:outerStyle.className}, - buttons - ); - }, +/** Used to detect functions containing a `this` reference */ +var reThis = /\bthis\b/; - focus: function() { - this.getDOMNode().focus(); - return true; - }, - - toggleSelect: function(newValue) { - var value = this.props.value; +/** Native method shortcuts */ +var fnToString = Function.prototype.toString; - if (this.props.allowEmpty) { - // Select the new button or unselect if it's already selected - this.props.onChange(value !== newValue ? newValue : null); - } else { - this.props.onChange(newValue); - } +/** + * The base implementation of `_.createCallback` without support for creating + * "_.pluck" or "_.where" style callbacks. + * + * @private + * @param {*} [func=identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of the created callback. + * @param {number} [argCount] The number of arguments the callback accepts. + * @returns {Function} Returns a callback function. + */ +function baseCreateCallback(func, thisArg, argCount) { + if (typeof func != 'function') { + return identity; + } + // exit early for no `thisArg` or already bound by `Function#bind` + if (typeof thisArg == 'undefined' || !('prototype' in func)) { + return func; + } + var bindData = func.__bindData__; + if (typeof bindData == 'undefined') { + if (support.funcNames) { + bindData = !func.name; } -}); - -module.exports = ButtonGroup; + bindData = bindData || !support.funcDecomp; + if (!bindData) { + var source = fnToString.call(func); + if (!support.funcNames) { + bindData = !reFuncName.test(source); + } + if (!bindData) { + // checks if `func` references the `this` keyword and stores the result + bindData = reThis.test(source); + setBindData(func, bindData); + } + } + } + // exit early if there are no `this` references or `func` is bound + if (bindData === false || (bindData !== true && bindData[1] & 1)) { + return func; + } + switch (argCount) { + case 1: return function(value) { + return func.call(thisArg, value); + }; + case 2: return function(a, b) { + return func.call(thisArg, a, b); + }; + case 3: return function(value, index, collection) { + return func.call(thisArg, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(thisArg, accumulator, value, index, collection); + }; + } + return bind(func, thisArg); +} -},{"rcss":8,"react":117,"underscore":118}],6:[function(require,module,exports){ -/** @jsx React.DOM */ +module.exports = baseCreateCallback; -var React = require('react'); +},{"lodash._setbinddata":19,"lodash.bind":23,"lodash.identity":29,"lodash.support":35}],8:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreate = require('lodash._basecreate'), + isObject = require('lodash.isobject'), + setBindData = require('lodash._setbinddata'), + slice = require('lodash._slice'); -/* This component makes its children a drag target. Example: - * - * Drag to me - * - * ... +/** + * Used for `Array` method references. * - * handleDrop: function(e) { - * this.addImages(e.nativeEvent.dataTransfer.files); - * } + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; + +/** Native method shortcuts */ +var push = arrayRef.push; + +/** + * The base implementation of `createWrapper` that creates the wrapper and + * sets its meta data. * - * Now "Drag to me" will be a drag target - when something is dragged over it, - * the element will become partially transparent as a visual indicator that - * it's a target. + * @private + * @param {Array} bindData The bind data array. + * @returns {Function} Returns the new function. */ -// TODO(joel) - indicate before the hover is over the target that it's possible -// to drag into the target. This would (I think) require a high level handler - -// like on Perseus itself, waiting for onDragEnter, then passing down the -// event. Sounds like a pain. Possible workaround - create a div covering the -// entire page... -// -// Other extensions: -// * custom styles for global drag and dragOver -// * only respond to certain types of drags (only images for instance)! -var DragTarget = React.createClass({displayName: 'DragTarget', - propTypes: { - onDrop: React.PropTypes.func.isRequired, - component: React.PropTypes.component, - shouldDragHighlight: React.PropTypes.func - }, - render: function() { - var opacity = this.state.dragHover ? { "opacity": 0.3 } : {}; - var component = this.props.component; +function baseCreateWrapper(bindData) { + var func = bindData[0], + bitmask = bindData[1], + partialArgs = bindData[2], + partialRightArgs = bindData[3], + thisArg = bindData[4], + arity = bindData[5]; - return this.transferPropsTo( - component( {style:opacity, - onDrop:this.handleDrop, - onDragEnd:this.handleDragEnd, - onDragOver:this.handleDragOver, - onDragEnter:this.handleDragEnter, - onDragLeave:this.handleDragLeave}, - this.props.children - ) - ); - }, - getInitialState: function() { - return { dragHover: false }; - }, - getDefaultProps: function() { - return { - component: React.DOM.div, - shouldDragHighlight: function() {return true;} - }; - }, - handleDrop: function(e) { - e.stopPropagation(); - e.preventDefault(); - this.setState({ dragHover: false }); - this.props.onDrop(e); - }, - handleDragEnd: function() { - this.setState({ dragHover: false }); - }, - handleDragOver: function(e) { - e.preventDefault(); - }, - handleDragLeave: function() { - this.setState({ dragHover: false }); - }, - handleDragEnter: function(e) { - this.setState({ dragHover: this.props.shouldDragHighlight(e) }); + var isBind = bitmask & 1, + isBindKey = bitmask & 2, + isCurry = bitmask & 4, + isCurryBound = bitmask & 8, + key = func; + + function bound() { + var thisBinding = isBind ? thisArg : this; + if (partialArgs) { + var args = slice(partialArgs); + push.apply(args, arguments); } -}); + if (partialRightArgs || isCurry) { + args || (args = slice(arguments)); + if (partialRightArgs) { + push.apply(args, partialRightArgs); + } + if (isCurry && args.length < arity) { + bitmask |= 16 & ~32; + return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); + } + } + args || (args = arguments); + if (isBindKey) { + func = thisBinding[key]; + } + if (this instanceof bound) { + thisBinding = baseCreate(func.prototype); + var result = func.apply(thisBinding, args); + return isObject(result) ? result : thisBinding; + } + return func.apply(thisBinding, args); + } + setBindData(bound, bindData); + return bound; +} -module.exports = DragTarget; +module.exports = baseCreateWrapper; -},{"react":117}],7:[function(require,module,exports){ -/** @jsx React.DOM */ +},{"lodash._basecreate":6,"lodash._setbinddata":19,"lodash._slice":21,"lodash.isobject":31}],9:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var forIn = require('lodash.forin'), + getArray = require('lodash._getarray'), + isFunction = require('lodash.isfunction'), + objectTypes = require('lodash._objecttypes'), + releaseArray = require('lodash._releasearray'); -var React = require('react'); -var RCSS = require('rcss'); -var _ = require('underscore'); +/** `Object#toString` result shortcuts */ +var argsClass = '[object Arguments]', + arrayClass = '[object Array]', + boolClass = '[object Boolean]', + dateClass = '[object Date]', + numberClass = '[object Number]', + objectClass = '[object Object]', + regexpClass = '[object RegExp]', + stringClass = '[object String]'; -var colors = { - grayLight: '#aaa', - basicBorderColor: '#ccc', - white: '#fff' -}; +/** Used for native method references */ +var objectProto = Object.prototype; -var infoTip = { - display: 'inline-block', - marginLeft: '5px', - position: 'relative' -}; +/** Used to resolve the internal [[Class]] of values */ +var toString = objectProto.toString; -var infoTipI = { - cursor: 'pointer' -}; - -var infoTipContainer = { - position: 'absolute', - 'top': '-12px', - left: '22px', - zIndex: '1000' -}; - -var triangleBeforeAfter = { - borderBottom: '9px solid transparent', - borderTop: '9px solid transparent', - content: ' ', - height: '0', - position: 'absolute', - 'top': '0', - width: '0' -}; - -var infoTipTriangle = { - height: '10px', - left: '0', - position: 'absolute', - 'top': '8px', - width: '0', - zIndex: '1', +/** Native method shortcuts */ +var hasOwnProperty = objectProto.hasOwnProperty; - ':before': _.extend({}, triangleBeforeAfter, { - borderRight: '9px solid #bbb', - right: '0', - }), +/** + * The base implementation of `_.isEqual`, without support for `thisArg` binding, + * that allows partial "_.where" style comparisons. + * + * @private + * @param {*} a The value to compare. + * @param {*} b The other value to compare. + * @param {Function} [callback] The function to customize comparing values. + * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. + * @param {Array} [stackA=[]] Tracks traversed `a` objects. + * @param {Array} [stackB=[]] Tracks traversed `b` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { + // used to indicate that when comparing objects, `a` has at least the properties of `b` + if (callback) { + var result = callback(a, b); + if (typeof result != 'undefined') { + return !!result; + } + } + // exit early for identical values + if (a === b) { + // treat `+0` vs. `-0` as not equal + return a !== 0 || (1 / a == 1 / b); + } + var type = typeof a, + otherType = typeof b; - ':after': _.extend({}, triangleBeforeAfter, { - borderRight: ("9px solid " + colors.white), - right: '-1px' - }) -}; + // exit early for unlike primitive values + if (a === a && + !(a && objectTypes[type]) && + !(b && objectTypes[otherType])) { + return false; + } + // exit early for `null` and `undefined` avoiding ES3's Function#call behavior + // http://es5.github.io/#x15.3.4.4 + if (a == null || b == null) { + return a === b; + } + // compare [[Class]] names + var className = toString.call(a), + otherClass = toString.call(b); -var basicBorder = { - border: ("1px solid " + colors.basicBorderColor) -}; + if (className == argsClass) { + className = objectClass; + } + if (otherClass == argsClass) { + otherClass = objectClass; + } + if (className != otherClass) { + return false; + } + switch (className) { + case boolClass: + case dateClass: + // coerce dates and booleans to numbers, dates to milliseconds and booleans + // to `1` or `0` treating invalid dates coerced to `NaN` as not equal + return +a == +b; -var boxShadow = function(str) { return { boxShadow: str }; }; + case numberClass: + // treat `NaN` vs. `NaN` as equal + return (a != +a) + ? b != +b + // but treat `+0` vs. `-0` as not equal + : (a == 0 ? (1 / a == 1 / b) : a == +b); -var verticalShadow = RCSS.merge( - basicBorder, - boxShadow(("0 1px 3px " + colors.basicBorderColor)), - { borderBottom: ("1px solid " + colors.grayLight) } -); + case regexpClass: + case stringClass: + // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) + // treat string primitives and their corresponding object instances as equal + return a == String(b); + } + var isArr = className == arrayClass; + if (!isArr) { + // unwrap any `lodash` wrapped values + var aWrapped = hasOwnProperty.call(a, '__wrapped__'), + bWrapped = hasOwnProperty.call(b, '__wrapped__'); -var infoTipContentContainer = RCSS.merge(verticalShadow, { - background: colors.white, - padding: '5px 10px', - width: '240px' -}); + if (aWrapped || bWrapped) { + return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); + } + // exit for functions and DOM nodes + if (className != objectClass) { + return false; + } + // in older versions of Opera, `arguments` objects have `Array` constructors + var ctorA = a.constructor, + ctorB = b.constructor; -RCSS.createClass(infoTip); -RCSS.createClass(infoTipI); -RCSS.createClass(infoTipTriangle); -RCSS.createClass(verticalShadow); -RCSS.createClass(infoTipContainer); -RCSS.createClass(infoTipContentContainer); + // non `Object` object instances with different constructors are not equal + if (ctorA != ctorB && + !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && + ('constructor' in a && 'constructor' in b) + ) { + return false; + } + } + // assume cyclic structures are equal + // the algorithm for detecting cyclic structures is adapted from ES 5.1 + // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) + var initedStack = !stackA; + stackA || (stackA = getArray()); + stackB || (stackB = getArray()); -var questionMark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2N2M3NTAxYS04YmVlLTQ0M2MtYmRiNS04OGM2N2IxN2NhYzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUJCRTk4Qjc4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUJCRTk4QjY4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGE5ZDI0OTMtODk1NC00OGFkLTlhMTgtZDAwM2MwYWNjNDJlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY3Yzc1MDFhLThiZWUtNDQzYy1iZGI1LTg4YzY3YjE3Y2FjMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqm89uYAAADMSURBVHjaXJA9DoJAEIUH1M4TUHIFsCMGen9OwCGw1YRGW2ntKel0exsojHIBC0ouQAyUviFDstmXfNmZeS+zm7XSNCXRFiRgJf0bXIHixpbhGdxBBJYC1w/xaA424MhNEATkui71fU9KqfEU78UbD9PdbJRlOdae55GmhIP+1NV1TcMwkOM41DSNHvRtMhTHMRVFQW3b6mOLgx99kue5GRp/gIOZuZGvNpTNwjD8oliANU+qqqKu6/TQBdymN57AHjzBT+B6Jx79BRgAvc49kQA4yxgAAAAASUVORK5CYII='; // @NoLint + var length = stackA.length; + while (length--) { + if (stackA[length] == a) { + return stackB[length] == b; + } + } + var size = 0; + result = true; -var InfoTip = React.createClass({displayName: 'InfoTip', - getInitialState: function() { - return { - hover: false - }; - }, + // add `a` and `b` to the stack of traversed objects + stackA.push(a); + stackB.push(b); - render: function() { - return React.DOM.div( {className:infoTip.className}, - React.DOM.img( {width:10, - height:10, - src:questionMark, - onMouseEnter:this.handleMouseEnter, - onMouseLeave:this.handleMouseLeave} ), - React.DOM.div( {className:infoTipContainer.className, - style:{display: this.state.hover ? 'block' : 'none'}}, - React.DOM.div( {className:infoTipTriangle.className} ), - /* keep the classes here - used for selectors on KA */ - React.DOM.div( {className:infoTipContentContainer.className}, - this.props.children - ) - ) - ); - }, + // recursively compare objects and arrays (susceptible to call stack limits) + if (isArr) { + // compare lengths to determine if a deep comparison is necessary + length = a.length; + size = b.length; + result = size == length; - handleMouseEnter: function() { - this.setState({hover: true}); - }, + if (result || isWhere) { + // deep compare the contents, ignoring non-numeric properties + while (size--) { + var index = length, + value = b[size]; - handleMouseLeave: function() { - this.setState({hover: false}); + if (isWhere) { + while (index--) { + if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { + break; + } + } + } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { + break; + } + } } -}); - -module.exports = InfoTip; + } + else { + // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` + // which, in this case, is more costly + forIn(b, function(value, key, b) { + if (hasOwnProperty.call(b, key)) { + // count the number of properties. + size++; + // deep compare each property value. + return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); + } + }); -},{"rcss":8,"react":117,"underscore":118}],8:[function(require,module,exports){ -var assign = require('lodash.assign'); + if (result && !isWhere) { + // ensure both objects have the same number of properties + forIn(a, function(value, key, a) { + if (hasOwnProperty.call(a, key)) { + // `size` will be `-1` if `a` has more properties than `b` + return (result = --size > -1); + } + }); + } + } + stackA.pop(); + stackB.pop(); -var styleRuleValidator = require('./styleRuleValidator'); -var styleRuleConverter = require('./styleRuleConverter'); -var mediaQueryValidator = require('valid-media-queries'); + if (initedStack) { + releaseArray(stackA); + releaseArray(stackB); + } + return result; +} -var existingClasses = {}; -var styleTag = createStyleTag(); +module.exports = baseIsEqual; -var classNameId = 0; -var randomSuffix = Math.random().toString(36).slice(-5); - -function generateValidCSSClassName() { - // CSS classNames can't start with a number. - return 'c' + (classNameId++) + '-' + randomSuffix; -} +},{"lodash._getarray":12,"lodash._objecttypes":16,"lodash._releasearray":17,"lodash.forin":27,"lodash.isfunction":30}],10:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseBind = require('lodash._basebind'), + baseCreateWrapper = require('lodash._basecreatewrapper'), + isFunction = require('lodash.isfunction'), + slice = require('lodash._slice'); -function objToCSS(style) { - var serialized = ''; - for (var propName in style) { - // we put that ourselves - if (propName == 'className') continue; +/** + * Used for `Array` method references. + * + * Normally `Array.prototype` would suffice, however, using an array literal + * avoids issues in Narwhal. + */ +var arrayRef = []; - var cssPropName = styleRuleConverter.hyphenateProp(propName); - if (!styleRuleValidator.isValidProp(cssPropName)) { - console.warn( - '%s (transformed into %s) is not a valid CSS property name.', propName, cssPropName - ); - continue; - } +/** Native method shortcuts */ +var push = arrayRef.push, + unshift = arrayRef.unshift; - var styleValue = style[propName]; - if (!styleRuleValidator.isValidValue(styleValue)) continue; +/** + * Creates a function that, when called, either curries or invokes `func` + * with an optional `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to reference. + * @param {number} bitmask The bitmask of method flags to compose. + * The bitmask may be composed of the following flags: + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` + * 8 - `_.curry` (bound) + * 16 - `_.partial` + * 32 - `_.partialRight` + * @param {Array} [partialArgs] An array of arguments to prepend to those + * provided to the new function. + * @param {Array} [partialRightArgs] An array of arguments to append to those + * provided to the new function. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new function. + */ +function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { + var isBind = bitmask & 1, + isBindKey = bitmask & 2, + isCurry = bitmask & 4, + isCurryBound = bitmask & 8, + isPartial = bitmask & 16, + isPartialRight = bitmask & 32; - if (styleValue !== null) { - serialized += cssPropName + ':'; - serialized += styleRuleConverter.escapeValueForProp(styleValue, - cssPropName) + ';'; + if (!isBindKey && !isFunction(func)) { + throw new TypeError; + } + if (isPartial && !partialArgs.length) { + bitmask &= ~16; + isPartial = partialArgs = false; + } + if (isPartialRight && !partialRightArgs.length) { + bitmask &= ~32; + isPartialRight = partialRightArgs = false; + } + var bindData = func && func.__bindData__; + if (bindData && bindData !== true) { + // clone `bindData` + bindData = slice(bindData); + if (bindData[2]) { + bindData[2] = slice(bindData[2]); + } + if (bindData[3]) { + bindData[3] = slice(bindData[3]); + } + // set `thisBinding` is not previously bound + if (isBind && !(bindData[1] & 1)) { + bindData[4] = thisArg; + } + // set if previously bound but not currently (subsequent curried functions) + if (!isBind && bindData[1] & 1) { + bitmask |= 8; + } + // set curried arity if not yet set + if (isCurry && !(bindData[1] & 4)) { + bindData[5] = arity; + } + // append partial left arguments + if (isPartial) { + push.apply(bindData[2] || (bindData[2] = []), partialArgs); + } + // append partial right arguments + if (isPartialRight) { + unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); } + // merge flags + bindData[1] |= bitmask; + return createWrapper.apply(null, bindData); } - return serialized || null; -} - -function createStyleTag() { - var tag = document.createElement('style'); - document.getElementsByTagName('head')[0].appendChild(tag); - return tag; + // fast path for `_.bind` + var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; + return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); } -function styleToCSS(style) { - var styleStr = '.' + style.className + '{'; - styleStr += objToCSS(style.value); - styleStr += '}'; +module.exports = createWrapper; - if (style.media) { - if (!mediaQueryValidator(style.media)) { - console.log('%s is not a valid media query.', style.media); - } - styleStr = style.media + '{' + styleStr + '}'; - } +},{"lodash._basebind":5,"lodash._basecreatewrapper":8,"lodash._slice":21,"lodash.isfunction":30}],11:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var htmlEscapes = require('lodash._htmlescapes'); - return styleStr; +/** + * Used by `escape` to convert characters to HTML entities. + * + * @private + * @param {string} match The matched character to escape. + * @returns {string} Returns the escaped character. + */ +function escapeHtmlChar(match) { + return htmlEscapes[match]; } -// TODO: support media queries -function parseStyles(className, styleObj) { - var mainStyle = { - className: className, - value: {} - }; - var styles = [mainStyle]; - - Object.keys(styleObj).forEach(function(k){ - // pseudo-selector, insert a new rule - if (k[0] === ':') { - styles.push({ - className: className+k, - value: styleObj[k] - }); - return; - } else if (k.substring(0, 6) === '@media') { - styles.push({ - className: className, - value: styleObj[k], - media: k - }); - return; - } - - // normal rule, insert into main one - mainStyle.value[k] = styleObj[k]; - }); +module.exports = escapeHtmlChar; - return styles; -} +},{"lodash._htmlescapes":13}],12:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var arrayPool = require('lodash._arraypool'); -function insertStyle(className, styleObj) { - var styles = parseStyles(className, styleObj); - var styleStr = styles.map(styleToCSS).join(''); - styleTag.innerHTML += styleStr; +/** + * Gets an array from the array pool or creates a new one if the pool is empty. + * + * @private + * @returns {Array} The array from the pool. + */ +function getArray() { + return arrayPool.pop() || []; } -var RCSS = { - merge: function(a, b, c, d, e) { - return assign({}, a, b, c, d, e); - }, - - createClass: function(styleObj) { - var styleId = JSON.stringify(styleObj); - var className; +module.exports = getArray; - if (existingClasses[styleId]) { - // already exists, use the existing className - className = existingClasses[styleId]; - } else { - // generate a new class and insert it - className = generateValidCSSClassName(); - existingClasses[styleId] = className; - insertStyle(className, styleObj); - } +},{"lodash._arraypool":4}],13:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ - styleObj.className = className; - return styleObj; - } +/** + * Used to convert characters to HTML entities: + * + * Though the `>` character is escaped for symmetry, characters like `>` and `/` + * don't require escaping in HTML and have no special meaning unless they're part + * of a tag or an unquoted attribute value. + * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") + */ +var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' }; -module.exports = RCSS; +module.exports = htmlEscapes; -},{"./styleRuleConverter":113,"./styleRuleValidator":114,"lodash.assign":9,"valid-media-queries":48}],9:[function(require,module,exports){ +},{}],14:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1035,70 +1213,49 @@ module.exports = RCSS; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreateCallback = require('lodash._basecreatecallback'), - keys = require('lodash.keys'), - objectTypes = require('lodash._objecttypes'); + +/** Used for native method references */ +var objectProto = Object.prototype; + +/** Used to resolve the internal [[Class]] of values */ +var toString = objectProto.toString; + +/** Used to detect if a method is native */ +var reNative = RegExp('^' + + String(toString) + .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + .replace(/toString| for [^\]]+/g, '.*?') + '$' +); /** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources will overwrite property assignments of previous - * sources. If a callback is provided it will be executed to produce the - * assigned values. The callback is bound to `thisArg` and invoked with two - * arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @type Function - * @alias extend - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize assigning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); - * // => { 'name': 'fred', 'employer': 'slate' } - * - * var defaults = _.partialRight(_.assign, function(a, b) { - * return typeof a == 'undefined' ? b : a; - * }); + * Checks if `value` is a native function. * - * var object = { 'name': 'barney' }; - * defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. */ -var assign = function(object, source, guard) { - var index, iterable = object, result = iterable; - if (!iterable) return result; - var args = arguments, - argsIndex = 0, - argsLength = typeof guard == 'number' ? 2 : args.length; - if (argsLength > 3 && typeof args[argsLength - 2] == 'function') { - var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2); - } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') { - callback = args[--argsLength]; - } - while (++argsIndex < argsLength) { - iterable = args[argsIndex]; - if (iterable && objectTypes[typeof iterable]) { - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; +function isNative(value) { + return typeof value == 'function' && reNative.test(value); +} - while (++ownIndex < length) { - index = ownProps[ownIndex]; - result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]; - } - } - } - return result -}; +module.exports = isNative; -module.exports = assign; +},{}],15:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** Used as the max size of the `arrayPool` and `objectPool` */ +var maxPoolSize = 40; -},{"lodash._basecreatecallback":10,"lodash._objecttypes":31,"lodash.keys":32}],10:[function(require,module,exports){ +module.exports = maxPoolSize; + +},{}],16:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1107,80 +1264,64 @@ module.exports = assign; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var bind = require('lodash.bind'), - identity = require('lodash.identity'), - setBindData = require('lodash._setbinddata'), - support = require('lodash.support'); -/** Used to detected named functions */ -var reFuncName = /^\s*function[ \n\r\t]+\w/; +/** Used to determine if values are of the language type Object */ +var objectTypes = { + 'boolean': false, + 'function': true, + 'object': true, + 'number': false, + 'string': false, + 'undefined': false +}; -/** Used to detect functions containing a `this` reference */ -var reThis = /\bthis\b/; +module.exports = objectTypes; -/** Native method shortcuts */ -var fnToString = Function.prototype.toString; +},{}],17:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var arrayPool = require('lodash._arraypool'), + maxPoolSize = require('lodash._maxpoolsize'); /** - * The base implementation of `_.createCallback` without support for creating - * "_.pluck" or "_.where" style callbacks. + * Releases the given array back to the array pool. * * @private - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. + * @param {Array} [array] The array to release. */ -function baseCreateCallback(func, thisArg, argCount) { - if (typeof func != 'function') { - return identity; - } - // exit early for no `thisArg` or already bound by `Function#bind` - if (typeof thisArg == 'undefined' || !('prototype' in func)) { - return func; - } - var bindData = func.__bindData__; - if (typeof bindData == 'undefined') { - if (support.funcNames) { - bindData = !func.name; - } - bindData = bindData || !support.funcDecomp; - if (!bindData) { - var source = fnToString.call(func); - if (!support.funcNames) { - bindData = !reFuncName.test(source); - } - if (!bindData) { - // checks if `func` references the `this` keyword and stores the result - bindData = reThis.test(source); - setBindData(func, bindData); - } - } - } - // exit early if there are no `this` references or `func` is bound - if (bindData === false || (bindData !== true && bindData[1] & 1)) { - return func; - } - switch (argCount) { - case 1: return function(value) { - return func.call(thisArg, value); - }; - case 2: return function(a, b) { - return func.call(thisArg, a, b); - }; - case 3: return function(value, index, collection) { - return func.call(thisArg, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(thisArg, accumulator, value, index, collection); - }; +function releaseArray(array) { + array.length = 0; + if (arrayPool.length < maxPoolSize) { + arrayPool.push(array); } - return bind(func, thisArg); } -module.exports = baseCreateCallback; +module.exports = releaseArray; + +},{"lodash._arraypool":4,"lodash._maxpoolsize":15}],18:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var htmlEscapes = require('lodash._htmlescapes'), + keys = require('lodash.keys'); + +/** Used to match HTML entities and HTML characters */ +var reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); -},{"lodash._setbinddata":11,"lodash.bind":14,"lodash.identity":28,"lodash.support":29}],11:[function(require,module,exports){ +module.exports = reUnescapedHtml; + +},{"lodash._htmlescapes":13,"lodash.keys":32}],19:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1225,7 +1366,7 @@ var setBindData = !defineProperty ? noop : function(func, value) { module.exports = setBindData; -},{"lodash._isnative":12,"lodash.noop":13}],12:[function(require,module,exports){ +},{"lodash._isnative":14,"lodash.noop":33}],20:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1234,34 +1375,38 @@ module.exports = setBindData; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ +var objectTypes = require('lodash._objecttypes'); /** Used for native method references */ var objectProto = Object.prototype; -/** Used to resolve the internal [[Class]] of values */ -var toString = objectProto.toString; - -/** Used to detect if a method is native */ -var reNative = RegExp('^' + - String(toString) - .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - .replace(/toString| for [^\]]+/g, '.*?') + '$' -); +/** Native method shortcuts */ +var hasOwnProperty = objectProto.hasOwnProperty; /** - * Checks if `value` is a native function. + * A fallback implementation of `Object.keys` which produces an array of the + * given object's own enumerable property names. * * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. + * @type Function + * @param {Object} object The object to inspect. + * @returns {Array} Returns an array of property names. */ -function isNative(value) { - return typeof value == 'function' && reNative.test(value); -} +var shimKeys = function(object) { + var index, iterable = object, result = []; + if (!iterable) return result; + if (!(objectTypes[typeof object])) return result; + for (index in iterable) { + if (hasOwnProperty.call(iterable, index)) { + result.push(index); + } + } + return result +}; -module.exports = isNative; +module.exports = shimKeys; -},{}],13:[function(require,module,exports){ +},{"lodash._objecttypes":16}],21:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1272,26 +1417,110 @@ module.exports = isNative; */ /** - * A no-operation function. + * Slices the `collection` from the `start` index up to, but not including, + * the `end` index. * - * @static - * @memberOf _ - * @category Utilities - * @example + * Note: This function is used instead of `Array#slice` to support node lists + * in IE < 9 and to ensure dense arrays are returned. * - * var object = { 'name': 'fred' }; - * _.noop(object) === undefined; - * // => true + * @private + * @param {Array|Object|string} collection The collection to slice. + * @param {number} start The start index. + * @param {number} end The end index. + * @returns {Array} Returns the new array. */ -function noop() { - // no operation performed -} - -module.exports = noop; - -},{}],14:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) +function slice(array, start, end) { + start || (start = 0); + if (typeof end == 'undefined') { + end = array ? array.length : 0; + } + var index = -1, + length = end - start || 0, + result = Array(length < 0 ? 0 : length); + + while (++index < length) { + result[index] = array[start + index]; + } + return result; +} + +module.exports = slice; + +},{}],22:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseCreateCallback = require('lodash._basecreatecallback'), + keys = require('lodash.keys'), + objectTypes = require('lodash._objecttypes'); + +/** + * Assigns own enumerable properties of source object(s) to the destination + * object. Subsequent sources will overwrite property assignments of previous + * sources. If a callback is provided it will be executed to produce the + * assigned values. The callback is bound to `thisArg` and invoked with two + * arguments; (objectValue, sourceValue). + * + * @static + * @memberOf _ + * @type Function + * @alias extend + * @category Objects + * @param {Object} object The destination object. + * @param {...Object} [source] The source objects. + * @param {Function} [callback] The function to customize assigning values. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns the destination object. + * @example + * + * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); + * // => { 'name': 'fred', 'employer': 'slate' } + * + * var defaults = _.partialRight(_.assign, function(a, b) { + * return typeof a == 'undefined' ? b : a; + * }); + * + * var object = { 'name': 'barney' }; + * defaults(object, { 'name': 'fred', 'employer': 'slate' }); + * // => { 'name': 'barney', 'employer': 'slate' } + */ +var assign = function(object, source, guard) { + var index, iterable = object, result = iterable; + if (!iterable) return result; + var args = arguments, + argsIndex = 0, + argsLength = typeof guard == 'number' ? 2 : args.length; + if (argsLength > 3 && typeof args[argsLength - 2] == 'function') { + var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2); + } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') { + callback = args[--argsLength]; + } + while (++argsIndex < argsLength) { + iterable = args[argsIndex]; + if (iterable && objectTypes[typeof iterable]) { + var ownIndex = -1, + ownProps = objectTypes[typeof iterable] && keys(iterable), + length = ownProps ? ownProps.length : 0; + + while (++ownIndex < length) { + index = ownProps[ownIndex]; + result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]; + } + } + } + return result +}; + +module.exports = assign; + +},{"lodash._basecreatecallback":7,"lodash._objecttypes":16,"lodash.keys":32}],23:[function(require,module,exports){ +/** + * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` * Copyright 2012-2013 The Dojo Foundation * Based on Underscore.js 1.5.2 @@ -1331,115 +1560,90 @@ function bind(func, thisArg) { module.exports = bind; -},{"lodash._createwrapper":15,"lodash._slice":27}],15:[function(require,module,exports){ +},{"lodash._createwrapper":10,"lodash._slice":21}],24:[function(require,module,exports){ /** - * Lo-Dash 2.4.1 (Custom Build) + * Lo-Dash 2.4.4 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` * Copyright 2012-2013 The Dojo Foundation * Based on Underscore.js 1.5.2 * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseBind = require('lodash._basebind'), - baseCreateWrapper = require('lodash._basecreatewrapper'), - isFunction = require('lodash.isfunction'), - slice = require('lodash._slice'); +var baseCreateCallback = require('lodash._basecreatecallback'), + baseIsEqual = require('lodash._baseisequal'), + isObject = require('lodash.isobject'), + keys = require('lodash.keys'), + property = require('lodash.property'); /** - * Used for `Array` method references. + * Produces a callback bound to an optional `thisArg`. If `func` is a property + * name the created callback will return the property value for a given element. + * If `func` is an object the created callback will return `true` for elements + * that contain the equivalent object properties, otherwise it will return `false`. * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; - -/** Native method shortcuts */ -var push = arrayRef.push, - unshift = arrayRef.unshift; - -/** - * Creates a function that, when called, either curries or invokes `func` - * with an optional `this` binding and partially applied arguments. + * @static + * @memberOf _ + * @category Utilities + * @param {*} [func=identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of the created callback. + * @param {number} [argCount] The number of arguments the callback accepts. + * @returns {Function} Returns a callback function. + * @example * - * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of method flags to compose. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` - * 8 - `_.curry` (bound) - * 16 - `_.partial` - * 32 - `_.partialRight` - * @param {Array} [partialArgs] An array of arguments to prepend to those - * provided to the new function. - * @param {Array} [partialRightArgs] An array of arguments to append to those - * provided to the new function. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new function. + * var characters = [ + * { 'name': 'barney', 'age': 36 }, + * { 'name': 'fred', 'age': 40 } + * ]; + * + * // wrap to create custom callback shorthands + * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { + * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); + * return !match ? func(callback, thisArg) : function(object) { + * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; + * }; + * }); + * + * _.filter(characters, 'age__gt38'); + * // => [{ 'name': 'fred', 'age': 40 }] */ -function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - isPartial = bitmask & 16, - isPartialRight = bitmask & 32; - - if (!isBindKey && !isFunction(func)) { - throw new TypeError; +function createCallback(func, thisArg, argCount) { + var type = typeof func; + if (func == null || type == 'function') { + return baseCreateCallback(func, thisArg, argCount); } - if (isPartial && !partialArgs.length) { - bitmask &= ~16; - isPartial = partialArgs = false; + // handle "_.pluck" style callback shorthands + if (type != 'object') { + return property(func); } - if (isPartialRight && !partialRightArgs.length) { - bitmask &= ~32; - isPartialRight = partialRightArgs = false; + var props = keys(func), + key = props[0], + a = func[key]; + + // handle "_.where" style callback shorthands + if (props.length == 1 && a === a && !isObject(a)) { + // fast path the common case of providing an object with a single + // property containing a primitive value + return function(object) { + var b = object[key]; + return a === b && (a !== 0 || (1 / a == 1 / b)); + }; } - var bindData = func && func.__bindData__; - if (bindData && bindData !== true) { - // clone `bindData` - bindData = slice(bindData); - if (bindData[2]) { - bindData[2] = slice(bindData[2]); - } - if (bindData[3]) { - bindData[3] = slice(bindData[3]); - } - // set `thisBinding` is not previously bound - if (isBind && !(bindData[1] & 1)) { - bindData[4] = thisArg; - } - // set if previously bound but not currently (subsequent curried functions) - if (!isBind && bindData[1] & 1) { - bitmask |= 8; - } - // set curried arity if not yet set - if (isCurry && !(bindData[1] & 4)) { - bindData[5] = arity; - } - // append partial left arguments - if (isPartial) { - push.apply(bindData[2] || (bindData[2] = []), partialArgs); - } - // append partial right arguments - if (isPartialRight) { - unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); + return function(object) { + var length = props.length, + result = false; + + while (length--) { + if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { + break; + } } - // merge flags - bindData[1] |= bitmask; - return createWrapper.apply(null, bindData); - } - // fast path for `_.bind` - var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; - return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); + return result; + }; } -module.exports = createWrapper; +module.exports = createCallback; -},{"lodash._basebind":16,"lodash._basecreatewrapper":21,"lodash._slice":27,"lodash.isfunction":26}],16:[function(require,module,exports){ +},{"lodash._basecreatecallback":7,"lodash._baseisequal":9,"lodash.isobject":31,"lodash.keys":32,"lodash.property":34}],25:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1448,63 +1652,31 @@ module.exports = createWrapper; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreate = require('lodash._basecreate'), - isObject = require('lodash.isobject'), - setBindData = require('lodash._setbinddata'), - slice = require('lodash._slice'); +var escapeHtmlChar = require('lodash._escapehtmlchar'), + keys = require('lodash.keys'), + reUnescapedHtml = require('lodash._reunescapedhtml'); /** - * Used for `Array` method references. + * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their + * corresponding HTML entities. * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ -var arrayRef = []; - -/** Native method shortcuts */ -var push = arrayRef.push; - -/** - * The base implementation of `_.bind` that creates the bound function and - * sets its meta data. + * @static + * @memberOf _ + * @category Utilities + * @param {string} string The string to escape. + * @returns {string} Returns the escaped string. + * @example * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new bound function. + * _.escape('Fred, Wilma, & Pebbles'); + * // => 'Fred, Wilma, & Pebbles' */ -function baseBind(bindData) { - var func = bindData[0], - partialArgs = bindData[2], - thisArg = bindData[4]; - - function bound() { - // `Function#bind` spec - // http://es5.github.io/#x15.3.4.5 - if (partialArgs) { - // avoid `arguments` object deoptimizations by using `slice` instead - // of `Array.prototype.slice.call` and not assigning `arguments` to a - // variable as a ternary expression - var args = slice(partialArgs); - push.apply(args, arguments); - } - // mimic the constructor's `return` behavior - // http://es5.github.io/#x13.2.2 - if (this instanceof bound) { - // ensure `new bound` is an instance of `func` - var thisBinding = baseCreate(func.prototype), - result = func.apply(thisBinding, args || arguments); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisArg, args || arguments); - } - setBindData(bound, bindData); - return bound; +function escape(string) { + return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); } -module.exports = baseBind; +module.exports = escape; -},{"lodash._basecreate":17,"lodash._setbinddata":11,"lodash._slice":27,"lodash.isobject":20}],17:[function(require,module,exports){ -(function (global){ +},{"lodash._escapehtmlchar":11,"lodash._reunescapedhtml":18,"lodash.keys":32}],26:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1513,47 +1685,74 @@ module.exports = baseBind; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var isNative = require('lodash._isnative'), - isObject = require('lodash.isobject'), - noop = require('lodash.noop'); - -/* Native method shortcuts for methods with the same name as other `lodash` methods */ -var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate; +var createCallback = require('lodash.createcallback'), + forOwn = require('lodash.forown'); /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. + * Checks if the given callback returns truey value for **all** elements of + * a collection. The callback is bound to `thisArg` and invoked with three + * arguments; (value, index|key, collection). * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. + * If a property name is provided for `callback` the created "_.pluck" style + * callback will return the property value of the given element. + * + * If an object is provided for `callback` the created "_.where" style callback + * will return `true` for elements that have the properties of the given object, + * else `false`. + * + * @static + * @memberOf _ + * @alias all + * @category Collections + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [callback=identity] The function called + * per iteration. If a property name or object is provided it will be used + * to create a "_.pluck" or "_.where" style callback, respectively. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {boolean} Returns `true` if all elements passed the callback check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes']); + * // => false + * + * var characters = [ + * { 'name': 'barney', 'age': 36 }, + * { 'name': 'fred', 'age': 40 } + * ]; + * + * // using "_.pluck" callback shorthand + * _.every(characters, 'age'); + * // => true + * + * // using "_.where" callback shorthand + * _.every(characters, { 'age': 36 }); + * // => false */ -function baseCreate(prototype, properties) { - return isObject(prototype) ? nativeCreate(prototype) : {}; -} -// fallback for browsers without `Object.create` -if (!nativeCreate) { - baseCreate = (function() { - function Object() {} - return function(prototype) { - if (isObject(prototype)) { - Object.prototype = prototype; - var result = new Object; - Object.prototype = null; +function every(collection, callback, thisArg) { + var result = true; + callback = createCallback(callback, thisArg, 3); + + var index = -1, + length = collection ? collection.length : 0; + + if (typeof length == 'number') { + while (++index < length) { + if (!(result = !!callback(collection[index], index, collection))) { + break; } - return result || global.Object(); - }; - }()); + } + } else { + forOwn(collection, function(value, index, collection) { + return (result = !!callback(value, index, collection)); + }); + } + return result; } -module.exports = baseCreate; +module.exports = every; -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"lodash._isnative":18,"lodash.isobject":20,"lodash.noop":19}],18:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],19:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],20:[function(require,module,exports){ +},{"lodash.createcallback":24,"lodash.forown":28}],27:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1562,39 +1761,54 @@ arguments[4][13][0].apply(exports,arguments) * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var objectTypes = require('lodash._objecttypes'); +var baseCreateCallback = require('lodash._basecreatecallback'), + objectTypes = require('lodash._objecttypes'); /** - * Checks if `value` is the language type of Object. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * Iterates over own and inherited enumerable properties of an object, + * executing the callback for each property. The callback is bound to `thisArg` + * and invoked with three arguments; (value, key, object). Callbacks may exit + * iteration early by explicitly returning `false`. * * @static * @memberOf _ + * @type Function * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an object, else `false`. + * @param {Object} object The object to iterate over. + * @param {Function} [callback=identity] The function called per iteration. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns `object`. * @example * - * _.isObject({}); - * // => true + * function Shape() { + * this.x = 0; + * this.y = 0; + * } * - * _.isObject([1, 2, 3]); - * // => true + * Shape.prototype.move = function(x, y) { + * this.x += x; + * this.y += y; + * }; * - * _.isObject(1); - * // => false + * _.forIn(new Shape, function(value, key) { + * console.log(key); + * }); + * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) */ -function isObject(value) { - // check if the value is the ECMAScript language type of Object - // http://es5.github.io/#x8 - // and avoid a V8 bug - // http://code.google.com/p/v8/issues/detail?id=2291 - return !!(value && objectTypes[typeof value]); -} +var forIn = function(collection, callback, thisArg) { + var index, iterable = collection, result = iterable; + if (!iterable) return result; + if (!objectTypes[typeof iterable]) return result; + callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); + for (index in iterable) { + if (callback(iterable[index], index, collection) === false) return result; + } + return result +}; -module.exports = isObject; +module.exports = forIn; -},{"lodash._objecttypes":31}],21:[function(require,module,exports){ +},{"lodash._basecreatecallback":7,"lodash._objecttypes":16}],28:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1603,86 +1817,80 @@ module.exports = isObject; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var baseCreate = require('lodash._basecreate'), - isObject = require('lodash.isobject'), - setBindData = require('lodash._setbinddata'), - slice = require('lodash._slice'); +var baseCreateCallback = require('lodash._basecreatecallback'), + keys = require('lodash.keys'), + objectTypes = require('lodash._objecttypes'); /** - * Used for `Array` method references. + * Iterates over own enumerable properties of an object, executing the callback + * for each property. The callback is bound to `thisArg` and invoked with three + * arguments; (value, key, object). Callbacks may exit iteration early by + * explicitly returning `false`. * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. + * @static + * @memberOf _ + * @type Function + * @category Objects + * @param {Object} object The object to iterate over. + * @param {Function} [callback=identity] The function called per iteration. + * @param {*} [thisArg] The `this` binding of `callback`. + * @returns {Object} Returns `object`. + * @example + * + * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { + * console.log(key); + * }); + * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) */ -var arrayRef = []; +var forOwn = function(collection, callback, thisArg) { + var index, iterable = collection, result = iterable; + if (!iterable) return result; + if (!objectTypes[typeof iterable]) return result; + callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); + var ownIndex = -1, + ownProps = objectTypes[typeof iterable] && keys(iterable), + length = ownProps ? ownProps.length : 0; -/** Native method shortcuts */ -var push = arrayRef.push; + while (++ownIndex < length) { + index = ownProps[ownIndex]; + if (callback(iterable[index], index, collection) === false) return result; + } + return result +}; + +module.exports = forOwn; +},{"lodash._basecreatecallback":7,"lodash._objecttypes":16,"lodash.keys":32}],29:[function(require,module,exports){ /** - * The base implementation of `createWrapper` that creates the wrapper and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new function. + * Lo-Dash 2.4.1 (Custom Build) + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation + * Based on Underscore.js 1.5.2 + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license */ -function baseCreateWrapper(bindData) { - var func = bindData[0], - bitmask = bindData[1], - partialArgs = bindData[2], - partialRightArgs = bindData[3], - thisArg = bindData[4], - arity = bindData[5]; - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - key = func; - - function bound() { - var thisBinding = isBind ? thisArg : this; - if (partialArgs) { - var args = slice(partialArgs); - push.apply(args, arguments); - } - if (partialRightArgs || isCurry) { - args || (args = slice(arguments)); - if (partialRightArgs) { - push.apply(args, partialRightArgs); - } - if (isCurry && args.length < arity) { - bitmask |= 16 & ~32; - return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); - } - } - args || (args = arguments); - if (isBindKey) { - func = thisBinding[key]; - } - if (this instanceof bound) { - thisBinding = baseCreate(func.prototype); - var result = func.apply(thisBinding, args); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisBinding, args); - } - setBindData(bound, bindData); - return bound; +/** + * This method returns the first argument provided to it. + * + * @static + * @memberOf _ + * @category Utilities + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'name': 'fred' }; + * _.identity(object) === object; + * // => true + */ +function identity(value) { + return value; } -module.exports = baseCreateWrapper; +module.exports = identity; -},{"lodash._basecreate":22,"lodash._setbinddata":11,"lodash._slice":27,"lodash.isobject":25}],22:[function(require,module,exports){ -arguments[4][17][0].apply(exports,arguments) -},{"dup":17,"lodash._isnative":23,"lodash.isobject":25,"lodash.noop":24}],23:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],24:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],25:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":31}],26:[function(require,module,exports){ +},{}],30:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1711,47 +1919,7 @@ function isFunction(value) { module.exports = isFunction; -},{}],27:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** - * Slices the `collection` from the `start` index up to, but not including, - * the `end` index. - * - * Note: This function is used instead of `Array#slice` to support node lists - * in IE < 9 and to ensure dense arrays are returned. - * - * @private - * @param {Array|Object|string} collection The collection to slice. - * @param {number} start The start index. - * @param {number} end The end index. - * @returns {Array} Returns the new array. - */ -function slice(array, start, end) { - start || (start = 0); - if (typeof end == 'undefined') { - end = array ? array.length : 0; - } - var index = -1, - length = end - start || 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = array[start + index]; - } - return result; -} - -module.exports = slice; - -},{}],28:[function(require,module,exports){ +},{}],31:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1760,96 +1928,39 @@ module.exports = slice; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ +var objectTypes = require('lodash._objecttypes'); /** - * This method returns the first argument provided to it. + * Checks if `value` is the language type of Object. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ - * @category Utilities - * @param {*} value Any value. - * @returns {*} Returns `value`. + * @category Objects + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if the `value` is an object, else `false`. * @example * - * var object = { 'name': 'fred' }; - * _.identity(object) === object; + * _.isObject({}); * // => true - */ -function identity(value) { - return value; -} - -module.exports = identity; - -},{}],29:[function(require,module,exports){ -(function (global){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var isNative = require('lodash._isnative'); - -/** Used to detect functions containing a `this` reference */ -var reThis = /\bthis\b/; - -/** - * An object used to flag environments features. - * - * @static - * @memberOf _ - * @type Object - */ -var support = {}; - -/** - * Detect if functions can be decompiled by `Function#toString` - * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps). * - * @memberOf _.support - * @type boolean - */ -support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; }); - -/** - * Detect if `Function#name` is supported (all but IE). + * _.isObject([1, 2, 3]); + * // => true * - * @memberOf _.support - * @type boolean - */ -support.funcNames = typeof Function.name == 'string'; - -module.exports = support; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"lodash._isnative":30}],30:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],31:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + * _.isObject(1); + * // => false */ +function isObject(value) { + // check if the value is the ECMAScript language type of Object + // http://es5.github.io/#x8 + // and avoid a V8 bug + // http://code.google.com/p/v8/issues/detail?id=2291 + return !!(value && objectTypes[typeof value]); +} -/** Used to determine if values are of the language type Object */ -var objectTypes = { - 'boolean': false, - 'function': true, - 'object': true, - 'number': false, - 'string': false, - 'undefined': false -}; - -module.exports = objectTypes; +module.exports = isObject; -},{}],32:[function(require,module,exports){ +},{"lodash._objecttypes":16}],32:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1887,9 +1998,7 @@ var keys = !nativeKeys ? shimKeys : function(object) { module.exports = keys; -},{"lodash._isnative":33,"lodash._shimkeys":34,"lodash.isobject":35}],33:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],34:[function(require,module,exports){ +},{"lodash._isnative":14,"lodash._shimkeys":20,"lodash.isobject":31}],33:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1898,40 +2007,26 @@ arguments[4][12][0].apply(exports,arguments) * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var objectTypes = require('lodash._objecttypes'); - -/** Used for native method references */ -var objectProto = Object.prototype; - -/** Native method shortcuts */ -var hasOwnProperty = objectProto.hasOwnProperty; /** - * A fallback implementation of `Object.keys` which produces an array of the - * given object's own enumerable property names. + * A no-operation function. * - * @private - * @type Function - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. + * @static + * @memberOf _ + * @category Utilities + * @example + * + * var object = { 'name': 'fred' }; + * _.noop(object) === undefined; + * // => true */ -var shimKeys = function(object) { - var index, iterable = object, result = []; - if (!iterable) return result; - if (!(objectTypes[typeof object])) return result; - for (index in iterable) { - if (hasOwnProperty.call(iterable, index)) { - result.push(index); - } - } - return result -}; +function noop() { + // no operation performed +} -module.exports = shimKeys; +module.exports = noop; -},{"lodash._objecttypes":31}],35:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":31}],36:[function(require,module,exports){ +},{}],34:[function(require,module,exports){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1940,31 +2035,41 @@ arguments[4][20][0].apply(exports,arguments) * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var escapeHtmlChar = require('lodash._escapehtmlchar'), - keys = require('lodash.keys'), - reUnescapedHtml = require('lodash._reunescapedhtml'); /** - * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their - * corresponding HTML entities. + * Creates a "_.pluck" style function, which returns the `key` value of a + * given object. * * @static * @memberOf _ * @category Utilities - * @param {string} string The string to escape. - * @returns {string} Returns the escaped string. + * @param {string} key The name of the property to retrieve. + * @returns {Function} Returns the new function. * @example * - * _.escape('Fred, Wilma, & Pebbles'); - * // => 'Fred, Wilma, & Pebbles' + * var characters = [ + * { 'name': 'fred', 'age': 40 }, + * { 'name': 'barney', 'age': 36 } + * ]; + * + * var getName = _.property('name'); + * + * _.map(characters, getName); + * // => ['barney', 'fred'] + * + * _.sortBy(characters, getName); + * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] */ -function escape(string) { - return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); +function property(key) { + return function(object) { + return object[key]; + }; } -module.exports = escape; +module.exports = property; -},{"lodash._escapehtmlchar":37,"lodash._reunescapedhtml":39,"lodash.keys":41}],37:[function(require,module,exports){ +},{}],35:[function(require,module,exports){ +(function (global){ /** * Lo-Dash 2.4.1 (Custom Build) * Build: `lodash modularize modern exports="npm" -o ./npm/` @@ -1973,1853 +2078,1608 @@ module.exports = escape; * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Available under MIT license */ -var htmlEscapes = require('lodash._htmlescapes'); +var isNative = require('lodash._isnative'); + +/** Used to detect functions containing a `this` reference */ +var reThis = /\bthis\b/; /** - * Used by `escape` to convert characters to HTML entities. + * An object used to flag environments features. * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. + * @static + * @memberOf _ + * @type Object */ -function escapeHtmlChar(match) { - return htmlEscapes[match]; -} - -module.exports = escapeHtmlChar; +var support = {}; -},{"lodash._htmlescapes":38}],38:[function(require,module,exports){ /** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + * Detect if functions can be decompiled by `Function#toString` + * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps). + * + * @memberOf _.support + * @type boolean */ +support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; }); /** - * Used to convert characters to HTML entities: + * Detect if `Function#name` is supported (all but IE). * - * Though the `>` character is escaped for symmetry, characters like `>` and `/` - * don't require escaping in HTML and have no special meaning unless they're part - * of a tag or an unquoted attribute value. - * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") + * @memberOf _.support + * @type boolean */ -var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' +support.funcNames = typeof Function.name == 'string'; + +module.exports = support; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"lodash._isnative":14}],36:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require("react"); + +/* You know when you want to propagate input to a parent... + * but then that parent does something with the input... + * then changing the props of the input... + * on every keystroke... + * so if some input is invalid or incomplete... + * the input gets reset or otherwise effed... + * + * This is the solution. + * + * Enough melodrama. Its an input that only sends changes + * to its parent on blur. + */ +var BlurInput = React.createClass({displayName: 'BlurInput', + propTypes: { + value: React.PropTypes.string.isRequired, + onChange: React.PropTypes.func.isRequired + }, + getInitialState: function() { + return { value: this.props.value }; + }, + render: function() { + return this.transferPropsTo(React.DOM.input( + {type:"text", + value:this.state.value, + onChange:this.handleChange, + onBlur:this.handleBlur} )); + }, + componentWillReceiveProps: function(nextProps) { + this.setState({ value: nextProps.value }); + }, + handleChange: function(e) { + this.setState({ value: e.target.value }); + }, + handleBlur: function(e) { + this.props.onChange(e.target.value); + } +}); + +module.exports = BlurInput; + +},{"react":45}],37:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require('react'); +var RCSS = require('rcss'); +var _ = require('underscore'); + +var outerStyle = { + display: 'inline-block', }; -module.exports = htmlEscapes; +var buttonStyle = { + backgroundColor: 'white', + border: '1px solid #ccc', + borderBottom: '1px solid #ccc', + borderLeft: '0', + cursor: 'pointer', + margin: '0', + padding: '5px 10px', + position: 'relative', // for hover -},{}],39:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + ':first-child': { + borderLeft: '1px solid #ccc', + borderTopLeftRadius: '3px', + borderBottomLeftRadius: '3px' + }, + + ':last-child': { + borderRight: '1px solid #ccc', + borderTopRightRadius: '3px', + borderBottomRightRadius: '3px' + }, + + ':hover': { + backgroundColor: '#ccc' + }, + + ':focus': { + zIndex: '2' + } +}; + +var selectedStyle = { + backgroundColor: '#ddd' +}; + +RCSS.createClass(outerStyle); +RCSS.createClass(buttonStyle); +RCSS.createClass(selectedStyle); + +/* ButtonGroup is an aesthetically pleasing group of buttons. + * + * The class requires these properties: + * buttons - an array of objects with keys: + * "value": this is the value returned when the button is selected + * "text": this is the text shown on the button + * "title": this is the title-text shown on hover + * onChange - a function that is provided with the updated value + * (which it then is responsible for updating) + * + * The class has these optional properties: + * value - the initial value of the button selected, defaults to null. + * allowEmpty - if false, exactly one button _must_ be selected; otherwise + * it defaults to true and _at most_ one button (0 or 1) may be selected. + * + * Requires stylesheets/perseus-admin-package/editor.less to look nice. */ -var htmlEscapes = require('lodash._htmlescapes'), - keys = require('lodash.keys'); -/** Used to match HTML entities and HTML characters */ -var reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); +var ButtonGroup = React.createClass({displayName: 'ButtonGroup', + propTypes: { + value: React.PropTypes.any, + buttons: React.PropTypes.arrayOf(React.PropTypes.shape({ + value: React.PropTypes.any.isRequired, + text: React.PropTypes.renderable, + title: React.PropTypes.string + })).isRequired, + onChange: React.PropTypes.func.isRequired, + allowEmpty: React.PropTypes.bool + }, -module.exports = reUnescapedHtml; + getDefaultProps: function() { + return { + value: null, + allowEmpty: true + }; + }, -},{"lodash._htmlescapes":40,"lodash.keys":41}],40:[function(require,module,exports){ -arguments[4][38][0].apply(exports,arguments) -},{"dup":38}],41:[function(require,module,exports){ -arguments[4][32][0].apply(exports,arguments) -},{"dup":32,"lodash._isnative":42,"lodash._shimkeys":43,"lodash.isobject":45}],42:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],43:[function(require,module,exports){ -arguments[4][34][0].apply(exports,arguments) -},{"dup":34,"lodash._objecttypes":44}],44:[function(require,module,exports){ -arguments[4][31][0].apply(exports,arguments) -},{"dup":31}],45:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":46}],46:[function(require,module,exports){ -arguments[4][31][0].apply(exports,arguments) -},{"dup":31}],47:[function(require,module,exports){ -var _validCSSProps = { - 'alignment-adjust': true, - 'alignment-baseline': true, - 'animation': true, - 'animation-delay': true, - 'animation-direction': true, - 'animation-duration': true, - 'animation-iteration-count': true, - 'animation-name': true, - 'animation-play-state': true, - 'animation-timing-function': true, - 'appearance': true, - 'backface-visibility': true, - 'background': true, - 'background-attachment': true, - 'background-clip': true, - 'background-color': true, - 'background-image': true, - 'background-origin': true, - 'background-position': true, - 'background-repeat': true, - 'background-size': true, - 'baseline-shift': true, - 'bookmark-label': true, - 'bookmark-level': true, - 'bookmark-target': true, - 'border': true, - 'border-bottom': true, - 'border-bottom-color': true, - 'border-bottom-left-radius': true, - 'border-bottom-right-radius': true, - 'border-bottom-style': true, - 'border-bottom-width': true, - 'border-collapse': true, - 'border-color': true, - 'border-image': true, - 'border-image-outset': true, - 'border-image-repeat': true, - 'border-image-slice': true, - 'border-image-source': true, - 'border-image-width': true, - 'border-left': true, - 'border-left-color': true, - 'border-left-style': true, - 'border-left-width': true, - 'border-radius': true, - 'border-right': true, - 'border-right-color': true, - 'border-right-style': true, - 'border-right-width': true, - 'border-spacing': true, - 'border-style': true, - 'border-top': true, - 'border-top-color': true, - 'border-top-left-radius': true, - 'border-top-right-radius': true, - 'border-top-style': true, - 'border-top-width': true, - 'border-width': true, - 'bottom': true, - 'box-align': true, - 'box-decoration-break': true, - 'box-direction': true, - 'box-flex': true, - 'box-flex-group': true, - 'box-lines': true, - 'box-ordinal-group': true, - 'box-orient': true, - 'box-pack': true, - 'box-shadow': true, - 'box-sizing': true, - 'caption-side': true, - 'clear': true, - 'clip': true, - 'color': true, - 'color-profile': true, - 'column-count': true, - 'column-fill': true, - 'column-gap': true, - 'column-rule': true, - 'column-rule-color': true, - 'column-rule-style': true, - 'column-rule-width': true, - 'column-span': true, - 'column-width': true, - 'columns': true, - 'content': true, - 'counter-increment': true, - 'counter-reset': true, - 'crop': true, - 'cursor': true, - 'direction': true, - 'display': true, - 'dominant-baseline': true, - 'drop-initial-after-adjust': true, - 'drop-initial-after-align': true, - 'drop-initial-before-adjust': true, - 'drop-initial-before-align': true, - 'drop-initial-size': true, - 'drop-initial-value': true, - 'empty-cells': true, - 'fit': true, - 'fit-position': true, - 'float': true, - 'float-offset': true, - 'font': true, - 'font-family': true, - 'font-size': true, - 'font-size-adjust': true, - 'font-stretch': true, - 'font-style': true, - 'font-variant': true, - 'font-weight': true, - 'grid-columns': true, - 'grid-rows': true, - 'hanging-punctuation': true, - 'height': true, - 'hyphenate-after': true, - 'hyphenate-before': true, - 'hyphenate-character': true, - 'hyphenate-lines': true, - 'hyphenate-resource': true, - 'hyphens': true, - 'icon': true, - 'image-orientation': true, - 'image-resolution': true, - 'inline-box-align': true, - 'left': true, - 'letter-spacing': true, - 'line-height': true, - 'line-stacking': true, - 'line-stacking-ruby': true, - 'line-stacking-shift': true, - 'line-stacking-strategy': true, - 'list-style': true, - 'list-style-image': true, - 'list-style-position': true, - 'list-style-type': true, - 'margin': true, - 'margin-bottom': true, - 'margin-left': true, - 'margin-right': true, - 'margin-top': true, - 'mark': true, - 'mark-after': true, - 'mark-before': true, - 'marks': true, - 'marquee-direction': true, - 'marquee-play-count': true, - 'marquee-speed': true, - 'marquee-style': true, - 'max-height': true, - 'max-width': true, - 'min-height': true, - 'min-width': true, - 'move-to': true, - 'nav-down': true, - 'nav-index': true, - 'nav-left': true, - 'nav-right': true, - 'nav-up': true, - 'opacity': true, - 'orphans': true, - 'outline': true, - 'outline-color': true, - 'outline-offset': true, - 'outline-style': true, - 'outline-width': true, - 'overflow': true, - 'overflow-style': true, - 'overflow-x': true, - 'overflow-y': true, - 'padding': true, - 'padding-bottom': true, - 'padding-left': true, - 'padding-right': true, - 'padding-top': true, - 'page': true, - 'page-break-after': true, - 'page-break-before': true, - 'page-break-inside': true, - 'page-policy': true, - 'perspective': true, - 'perspective-origin': true, - 'phonemes': true, - 'position': true, - 'punctuation-trim': true, - 'quotes': true, - 'rendering-intent': true, - 'resize': true, - 'rest': true, - 'rest-after': true, - 'rest-before': true, - 'right': true, - 'rotation': true, - 'rotation-point': true, - 'ruby-align': true, - 'ruby-overhang': true, - 'ruby-position': true, - 'ruby-span': true, - 'size': true, - 'string-set': true, - 'table-layout': true, - 'target': true, - 'target-name': true, - 'target-new': true, - 'target-position': true, - 'text-align': true, - 'text-align-last': true, - 'text-decoration': true, - 'text-height': true, - 'text-indent': true, - 'text-justify': true, - 'text-outline': true, - 'text-overflow': true, - 'text-shadow': true, - 'text-transform': true, - 'text-wrap': true, - 'top': true, - 'transform': true, - 'transform-origin': true, - 'transform-style': true, - 'transition': true, - 'transition-delay': true, - 'transition-duration': true, - 'transition-property': true, - 'transition-timing-function': true, - 'unicode-bidi': true, - 'user-select': true, - 'vertical-align': true, - 'visibility': true, - 'voice-balance': true, - 'voice-duration': true, - 'voice-pitch': true, - 'voice-pitch-range': true, - 'voice-rate': true, - 'voice-stress': true, - 'voice-volume': true, - 'white-space': true, - 'widows': true, - 'width': true, - 'word-break': true, - 'word-spacing': true, - 'word-wrap': true, - 'z-index': true -} - -var vendorPrefixRegEx = /^-.+-/; - -module.exports = function(prop) { - if (prop[0] === '-') { - return !!_validCSSProps[prop.replace(vendorPrefixRegEx, '')]; - } - return !!_validCSSProps[prop]; -}; - -},{}],48:[function(require,module,exports){ -var every = require('lodash.every'); + render: function() { + var value = this.props.value; + var buttons = _(this.props.buttons).map(function(button, i) { + var maybeSelected = button.value === value ? + selectedStyle.className : + ""; + return React.DOM.button( {title:button.title, + id:"" + i, + ref:"button" + i, + key:"" + i, + className:(buttonStyle.className + " " + maybeSelected), + onClick:this.toggleSelect.bind(this, button.value)}, + button.text || "" + button.value + ); + }.bind(this)); -function isValidRatio(ratio) { - var re = /\d+\/\d+/; - return !!ratio.match(re); -} + return React.DOM.div( {className:outerStyle.className}, + buttons + ); + }, -function isValidInteger(integer) { - var re = /\d+/; - return !!integer.match(re); -} + focus: function() { + this.getDOMNode().focus(); + return true; + }, -function isValidLength(length) { - var re = /\d+(?:ex|em|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc)?$/; - return !!length.match(re); -} + toggleSelect: function(newValue) { + var value = this.props.value; -function isValidOrientation(orientation) { - return orientation === 'landscape' || orientation === 'portrait'; -} + if (this.props.allowEmpty) { + // Select the new button or unselect if it's already selected + this.props.onChange(value !== newValue ? newValue : null); + } else { + this.props.onChange(newValue); + } + } +}); -function isValidScan(scan) { - return scan === 'progressive' || scan === 'interlace'; -} +module.exports = ButtonGroup; -function isValidResolution(resolution) { - var re = /(?:\+|-)?(?:\d+|\d*\.\d+)(?:e\d+)?(?:dpi|dpcm|dppx)$/; - return !!resolution.match(re); -} +},{"rcss":40,"react":45,"underscore":46}],38:[function(require,module,exports){ +/** @jsx React.DOM */ -function isValidValue(value) { - return value != null && typeof value !== 'boolean' && value !== ''; -} +var React = require('react'); -var _mediaFeatureValidator = { - 'width': isValidLength, - 'min-width': isValidLength, - 'max-width': isValidLength, - 'height': isValidLength, - 'min-height': isValidLength, - 'max-height': isValidLength, - 'device-width': isValidLength, - 'min-device-width': isValidLength, - 'max-device-width': isValidLength, - 'device-height': isValidLength, - 'min-device-height': isValidLength, - 'max-device-height': isValidLength, - 'aspect-ratio': isValidRatio, - 'min-aspect-ratio': isValidRatio, - 'max-aspect-ratio': isValidRatio, - 'device-aspect-ratio': isValidRatio, - 'min-device-aspect-ratio': isValidRatio, - 'max-device-aspect-ratio': isValidRatio, - 'color': isValidValue, - 'min-color': isValidValue, - 'max-color': isValidValue, - 'color-index': isValidInteger, - 'min-color-index': isValidInteger, - 'max-color-index': isValidInteger, - 'monochrome': isValidInteger, - 'min-monochrome': isValidInteger, - 'max-monochrome': isValidInteger, - 'resolution': isValidResolution, - 'min-resolution': isValidResolution, - 'max-resolution': isValidResolution, - 'scan': isValidScan, - 'grid': isValidInteger, - 'orientation': isValidOrientation +/* This component makes its children a drag target. Example: + * + * Drag to me + * + * ... + * + * handleDrop: function(e) { + * this.addImages(e.nativeEvent.dataTransfer.files); + * } + * + * Now "Drag to me" will be a drag target - when something is dragged over it, + * the element will become partially transparent as a visual indicator that + * it's a target. + */ +// TODO(joel) - indicate before the hover is over the target that it's possible +// to drag into the target. This would (I think) require a high level handler - +// like on Perseus itself, waiting for onDragEnter, then passing down the +// event. Sounds like a pain. Possible workaround - create a div covering the +// entire page... +// +// Other extensions: +// * custom styles for global drag and dragOver +// * only respond to certain types of drags (only images for instance)! +var DragTarget = React.createClass({displayName: 'DragTarget', + propTypes: { + onDrop: React.PropTypes.func.isRequired, + component: React.PropTypes.component, + shouldDragHighlight: React.PropTypes.func + }, + render: function() { + var opacity = this.state.dragHover ? { "opacity": 0.3 } : {}; + var component = this.props.component; + + return this.transferPropsTo( + component( {style:opacity, + onDrop:this.handleDrop, + onDragEnd:this.handleDragEnd, + onDragOver:this.handleDragOver, + onDragEnter:this.handleDragEnter, + onDragLeave:this.handleDragLeave}, + this.props.children + ) + ); + }, + getInitialState: function() { + return { dragHover: false }; + }, + getDefaultProps: function() { + return { + component: React.DOM.div, + shouldDragHighlight: function() {return true;} + }; + }, + handleDrop: function(e) { + e.stopPropagation(); + e.preventDefault(); + this.setState({ dragHover: false }); + this.props.onDrop(e); + }, + handleDragEnd: function() { + this.setState({ dragHover: false }); + }, + handleDragOver: function(e) { + e.preventDefault(); + }, + handleDragLeave: function() { + this.setState({ dragHover: false }); + }, + handleDragEnter: function(e) { + this.setState({ dragHover: this.props.shouldDragHighlight(e) }); + } +}); + +module.exports = DragTarget; + +},{"react":45}],39:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require('react'); +var RCSS = require('rcss'); +var _ = require('underscore'); + +var colors = { + grayLight: '#aaa', + basicBorderColor: '#ccc', + white: '#fff' }; -var _validMediaFeatures = { - 'width': true, - 'min-width': true, - 'max-width': true, - 'height': true, - 'min-height': true, - 'max-height': true, - 'device-width': true, - 'min-device-width': true, - 'max-device-width': true, - 'device-height': true, - 'min-device-height': true, - 'max-device-height': true, - 'aspect-ratio': true, - 'min-aspect-ratio': true, - 'max-aspect-ratio': true, - 'device-aspect-ratio': true, - 'min-device-aspect-ratio': true, - 'max-device-aspect-ratio': true, - 'color': true, - 'min-color': true, - 'max-color': true, - 'color-index': true, - 'min-color-index': true, - 'max-color-index': true, - 'monochrome': true, - 'min-monochrome': true, - 'max-monochrome': true, - 'resolution': true, - 'min-resolution': true, - 'max-resolution': true, - 'scan': true, - 'grid': true, - 'orientation': true +var infoTip = { + display: 'inline-block', + marginLeft: '5px', + position: 'relative' }; -var _validMediaTypes = { - 'all': true, - 'aural': true, - 'braille': true, - 'handheld': true, - 'print': true, - 'projection': true, - 'screen': true, - 'tty': true, - 'tv': true, - 'embossed': true +var infoTipI = { + cursor: 'pointer' }; -var _validQualifiers = { - 'not': true, - 'only': true +var infoTipContainer = { + position: 'absolute', + 'top': '-12px', + left: '22px', + zIndex: '1000' }; -function isValidFeature(feature) { - return !!_validMediaFeatures[feature]; -} +var triangleBeforeAfter = { + borderBottom: '9px solid transparent', + borderTop: '9px solid transparent', + content: ' ', + height: '0', + position: 'absolute', + 'top': '0', + width: '0' +}; -function isValidQualifier(qualifier) { - return !!_validQualifiers[qualifier]; -} +var infoTipTriangle = { + height: '10px', + left: '0', + position: 'absolute', + 'top': '8px', + width: '0', + zIndex: '1', -function isValidMediaType(mediaType) { - return !!_validMediaTypes[mediaType]; -} + ':before': _.extend({}, triangleBeforeAfter, { + borderRight: '9px solid #bbb', + right: '0', + }), -function isValidQualifiedMediaType(mediaType) { - var terms = mediaType.trim().split(/\s+/); - switch (terms.length) { - case 1: - return isValidMediaType(terms[0]); - case 2: - return isValidQualifier(terms[0]) && isValidMediaType(terms[1]); - default: - return false; - } -} + ':after': _.extend({}, triangleBeforeAfter, { + borderRight: ("9px solid " + colors.white), + right: '-1px' + }) +}; -function isValidExpression(expression) { - if (expression.length < 2) { - return false; - } +var basicBorder = { + border: ("1px solid " + colors.basicBorderColor) +}; - // Parentheses are required around expressions - if (expression[0] !== '(' || expression[expression.length - 1] !== ')') { - return false; - } +var boxShadow = function(str) { return { boxShadow: str }; }; - // Remove parentheses and spacess - expression = expression.substring(1, expression.length - 1); +var verticalShadow = RCSS.merge( + basicBorder, + boxShadow(("0 1px 3px " + colors.basicBorderColor)), + { borderBottom: ("1px solid " + colors.grayLight) } +); - // Is there a value to accompany the media feature? - var featureAndValue = expression.split(/\s*:\s*/); - switch (featureAndValue.length) { - case 1: - var feature = featureAndValue[0].trim(); - return isValidFeature(feature); - case 2: - var feature = featureAndValue[0].trim(); - var value = featureAndValue[1].trim(); - return isValidFeature(feature) && - _mediaFeatureValidator[feature](value); - default: - return false; - } -} +var infoTipContentContainer = RCSS.merge(verticalShadow, { + background: colors.white, + padding: '5px 10px', + width: '240px' +}); -function isValidMediaQuery(query) { - var andSplitter = /\s+and\s+/; - var queryTerms = query.split(andSplitter); - return (isValidQualifiedMediaType(queryTerms[0]) || - isValidExpression(queryTerms[0])) && - every(queryTerms.slice(1), isValidExpression); -} +RCSS.createClass(infoTip); +RCSS.createClass(infoTipI); +RCSS.createClass(infoTipTriangle); +RCSS.createClass(verticalShadow); +RCSS.createClass(infoTipContainer); +RCSS.createClass(infoTipContentContainer); -function isValidMediaQueryList(mediaQuery) { - mediaQuery = mediaQuery.toLowerCase(); +var questionMark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2N2M3NTAxYS04YmVlLTQ0M2MtYmRiNS04OGM2N2IxN2NhYzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUJCRTk4Qjc4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUJCRTk4QjY4NjAwMTFFMzg3QUJDNEI4Mzk2QTRGQkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGE5ZDI0OTMtODk1NC00OGFkLTlhMTgtZDAwM2MwYWNjNDJlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY3Yzc1MDFhLThiZWUtNDQzYy1iZGI1LTg4YzY3YjE3Y2FjMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqm89uYAAADMSURBVHjaXJA9DoJAEIUH1M4TUHIFsCMGen9OwCGw1YRGW2ntKel0exsojHIBC0ouQAyUviFDstmXfNmZeS+zm7XSNCXRFiRgJf0bXIHixpbhGdxBBJYC1w/xaA424MhNEATkui71fU9KqfEU78UbD9PdbJRlOdae55GmhIP+1NV1TcMwkOM41DSNHvRtMhTHMRVFQW3b6mOLgx99kue5GRp/gIOZuZGvNpTNwjD8oliANU+qqqKu6/TQBdymN57AHjzBT+B6Jx79BRgAvc49kQA4yxgAAAAASUVORK5CYII='; // @NoLint - if (mediaQuery.substring(0, 6) !== '@media') { - return false; +var InfoTip = React.createClass({displayName: 'InfoTip', + getInitialState: function() { + return { + hover: false + }; + }, + + render: function() { + return React.DOM.div( {className:infoTip.className}, + React.DOM.img( {width:10, + height:10, + src:questionMark, + onMouseEnter:this.handleMouseEnter, + onMouseLeave:this.handleMouseLeave} ), + React.DOM.div( {className:infoTipContainer.className, + style:{display: this.state.hover ? 'block' : 'none'}}, + React.DOM.div( {className:infoTipTriangle.className} ), + /* keep the classes here - used for selectors on KA */ + React.DOM.div( {className:infoTipContentContainer.className}, + this.props.children + ) + ) + ); + }, + + handleMouseEnter: function() { + this.setState({hover: true}); + }, + + handleMouseLeave: function() { + this.setState({hover: false}); } +}); - var commaSplitter = /\s*,\s*/; - var queryList = mediaQuery.substring(7, mediaQuery.length) - .split(commaSplitter); - return every(queryList, isValidMediaQuery); -} +module.exports = InfoTip; -module.exports = isValidMediaQueryList +},{"rcss":40,"react":45,"underscore":46}],40:[function(require,module,exports){ +var assign = require('lodash.assign'); -},{"lodash.every":49}],49:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var createCallback = require('lodash.createcallback'), - forOwn = require('lodash.forown'); +var styleRuleValidator = require('./styleRuleValidator'); +var styleRuleConverter = require('./styleRuleConverter'); +var mediaQueryValidator = require('valid-media-queries'); -/** - * Checks if the given callback returns truey value for **all** elements of - * a collection. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if all elements passed the callback check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes']); - * // => false - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.every(characters, 'age'); - * // => true - * - * // using "_.where" callback shorthand - * _.every(characters, { 'age': 36 }); - * // => false - */ -function every(collection, callback, thisArg) { - var result = true; - callback = createCallback(callback, thisArg, 3); +var existingClasses = {}; +var styleTag = createStyleTag(); - var index = -1, - length = collection ? collection.length : 0; +var classNameId = 0; +var randomSuffix = Math.random().toString(36).slice(-5); - if (typeof length == 'number') { - while (++index < length) { - if (!(result = !!callback(collection[index], index, collection))) { - break; - } - } - } else { - forOwn(collection, function(value, index, collection) { - return (result = !!callback(value, index, collection)); - }); - } - return result; +function generateValidCSSClassName() { + // CSS classNames can't start with a number. + return 'c' + (classNameId++) + '-' + randomSuffix; } -module.exports = every; +function objToCSS(style) { + var serialized = ''; + for (var propName in style) { + // we put that ourselves + if (propName == 'className') continue; -},{"lodash.createcallback":50,"lodash.forown":86}],50:[function(require,module,exports){ -/** - * Lo-Dash 2.4.4 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - baseIsEqual = require('lodash._baseisequal'), - isObject = require('lodash.isobject'), - keys = require('lodash.keys'), - property = require('lodash.property'); + var cssPropName = styleRuleConverter.hyphenateProp(propName); + if (!styleRuleValidator.isValidProp(cssPropName)) { + console.warn( + '%s (transformed into %s) is not a valid CSS property name.', propName, cssPropName + ); + continue; + } -/** - * Produces a callback bound to an optional `thisArg`. If `func` is a property - * name the created callback will return the property value for a given element. - * If `func` is an object the created callback will return `true` for elements - * that contain the equivalent object properties, otherwise it will return `false`. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // wrap to create custom callback shorthands - * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { - * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); - * return !match ? func(callback, thisArg) : function(object) { - * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; - * }; - * }); - * - * _.filter(characters, 'age__gt38'); - * // => [{ 'name': 'fred', 'age': 40 }] - */ -function createCallback(func, thisArg, argCount) { - var type = typeof func; - if (func == null || type == 'function') { - return baseCreateCallback(func, thisArg, argCount); - } - // handle "_.pluck" style callback shorthands - if (type != 'object') { - return property(func); - } - var props = keys(func), - key = props[0], - a = func[key]; + var styleValue = style[propName]; + if (!styleRuleValidator.isValidValue(styleValue)) continue; - // handle "_.where" style callback shorthands - if (props.length == 1 && a === a && !isObject(a)) { - // fast path the common case of providing an object with a single - // property containing a primitive value - return function(object) { - var b = object[key]; - return a === b && (a !== 0 || (1 / a == 1 / b)); - }; + if (styleValue !== null) { + serialized += cssPropName + ':'; + serialized += styleRuleConverter.escapeValueForProp(styleValue, + cssPropName) + ';'; + } } - return function(object) { - var length = props.length, - result = false; + return serialized || null; +} - while (length--) { - if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { - break; - } +function createStyleTag() { + var tag = document.createElement('style'); + document.getElementsByTagName('head')[0].appendChild(tag); + return tag; +} + +function styleToCSS(style) { + var styleStr = '.' + style.className + '{'; + styleStr += objToCSS(style.value); + styleStr += '}'; + + if (style.media) { + if (!mediaQueryValidator(style.media)) { + console.log('%s is not a valid media query.', style.media); } - return result; - }; + styleStr = style.media + '{' + styleStr + '}'; + } + + return styleStr; } -module.exports = createCallback; +// TODO: support media queries +function parseStyles(className, styleObj) { + var mainStyle = { + className: className, + value: {} + }; + var styles = [mainStyle]; -},{"lodash._basecreatecallback":51,"lodash._baseisequal":70,"lodash.isobject":79,"lodash.keys":81,"lodash.property":85}],51:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10,"lodash._setbinddata":52,"lodash.bind":55,"lodash.identity":67,"lodash.support":68}],52:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11,"lodash._isnative":53,"lodash.noop":54}],53:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],54:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],55:[function(require,module,exports){ -arguments[4][14][0].apply(exports,arguments) -},{"dup":14,"lodash._createwrapper":56,"lodash._slice":66}],56:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._basebind":57,"lodash._basecreatewrapper":61,"lodash._slice":66,"lodash.isfunction":65}],57:[function(require,module,exports){ -arguments[4][16][0].apply(exports,arguments) -},{"dup":16,"lodash._basecreate":58,"lodash._setbinddata":52,"lodash._slice":66,"lodash.isobject":79}],58:[function(require,module,exports){ -arguments[4][17][0].apply(exports,arguments) -},{"dup":17,"lodash._isnative":59,"lodash.isobject":79,"lodash.noop":60}],59:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],60:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],61:[function(require,module,exports){ -arguments[4][21][0].apply(exports,arguments) -},{"dup":21,"lodash._basecreate":62,"lodash._setbinddata":52,"lodash._slice":66,"lodash.isobject":79}],62:[function(require,module,exports){ -arguments[4][17][0].apply(exports,arguments) -},{"dup":17,"lodash._isnative":63,"lodash.isobject":79,"lodash.noop":64}],63:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],64:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],65:[function(require,module,exports){ -arguments[4][26][0].apply(exports,arguments) -},{"dup":26}],66:[function(require,module,exports){ -arguments[4][27][0].apply(exports,arguments) -},{"dup":27}],67:[function(require,module,exports){ -arguments[4][28][0].apply(exports,arguments) -},{"dup":28}],68:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29,"lodash._isnative":69}],69:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],70:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var forIn = require('lodash.forin'), - getArray = require('lodash._getarray'), - isFunction = require('lodash.isfunction'), - objectTypes = require('lodash._objecttypes'), - releaseArray = require('lodash._releasearray'); + Object.keys(styleObj).forEach(function(k){ + // pseudo-selector, insert a new rule + if (k[0] === ':') { + styles.push({ + className: className+k, + value: styleObj[k] + }); + return; + } else if (k.substring(0, 6) === '@media') { + styles.push({ + className: className, + value: styleObj[k], + media: k + }); + return; + } -/** `Object#toString` result shortcuts */ -var argsClass = '[object Arguments]', - arrayClass = '[object Array]', - boolClass = '[object Boolean]', - dateClass = '[object Date]', - numberClass = '[object Number]', - objectClass = '[object Object]', - regexpClass = '[object RegExp]', - stringClass = '[object String]'; + // normal rule, insert into main one + mainStyle.value[k] = styleObj[k]; + }); -/** Used for native method references */ -var objectProto = Object.prototype; + return styles; +} -/** Used to resolve the internal [[Class]] of values */ -var toString = objectProto.toString; +function insertStyle(className, styleObj) { + var styles = parseStyles(className, styleObj); + var styleStr = styles.map(styleToCSS).join(''); + styleTag.innerHTML += styleStr; +} -/** Native method shortcuts */ -var hasOwnProperty = objectProto.hasOwnProperty; +var RCSS = { + merge: function(a, b, c, d, e) { + return assign({}, a, b, c, d, e); + }, -/** - * The base implementation of `_.isEqual`, without support for `thisArg` binding, - * that allows partial "_.where" style comparisons. - * - * @private - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. - * @param {Array} [stackA=[]] Tracks traversed `a` objects. - * @param {Array} [stackB=[]] Tracks traversed `b` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { - // used to indicate that when comparing objects, `a` has at least the properties of `b` - if (callback) { - var result = callback(a, b); - if (typeof result != 'undefined') { - return !!result; + createClass: function(styleObj) { + var styleId = JSON.stringify(styleObj); + var className; + + if (existingClasses[styleId]) { + // already exists, use the existing className + className = existingClasses[styleId]; + } else { + // generate a new class and insert it + className = generateValidCSSClassName(); + existingClasses[styleId] = className; + insertStyle(className, styleObj); } - } - // exit early for identical values - if (a === b) { - // treat `+0` vs. `-0` as not equal - return a !== 0 || (1 / a == 1 / b); - } - var type = typeof a, - otherType = typeof b; - // exit early for unlike primitive values - if (a === a && - !(a && objectTypes[type]) && - !(b && objectTypes[otherType])) { - return false; - } - // exit early for `null` and `undefined` avoiding ES3's Function#call behavior - // http://es5.github.io/#x15.3.4.4 - if (a == null || b == null) { - return a === b; + styleObj.className = className; + return styleObj; } - // compare [[Class]] names - var className = toString.call(a), - otherClass = toString.call(b); +}; - if (className == argsClass) { - className = objectClass; - } - if (otherClass == argsClass) { - otherClass = objectClass; - } - if (className != otherClass) { - return false; - } - switch (className) { - case boolClass: - case dateClass: - // coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0` treating invalid dates coerced to `NaN` as not equal - return +a == +b; +module.exports = RCSS; - case numberClass: - // treat `NaN` vs. `NaN` as equal - return (a != +a) - ? b != +b - // but treat `+0` vs. `-0` as not equal - : (a == 0 ? (1 / a == 1 / b) : a == +b); +},{"./styleRuleConverter":41,"./styleRuleValidator":42,"lodash.assign":22,"valid-media-queries":48}],41:[function(require,module,exports){ +var escape = require('lodash.escape'); - case regexpClass: - case stringClass: - // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) - // treat string primitives and their corresponding object instances as equal - return a == String(b); - } - var isArr = className == arrayClass; - if (!isArr) { - // unwrap any `lodash` wrapped values - var aWrapped = hasOwnProperty.call(a, '__wrapped__'), - bWrapped = hasOwnProperty.call(b, '__wrapped__'); +var _uppercasePattern = /([A-Z])/g; - if (aWrapped || bWrapped) { - return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); - } - // exit for functions and DOM nodes - if (className != objectClass) { - return false; - } - // in older versions of Opera, `arguments` objects have `Array` constructors - var ctorA = a.constructor, - ctorB = b.constructor; +function hyphenateProp(string) { + return string.replace(_uppercasePattern, '-$1').toLowerCase(); +} - // non `Object` object instances with different constructors are not equal - if (ctorA != ctorB && - !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && - ('constructor' in a && 'constructor' in b) - ) { - return false; - } +function escapeValueForProp(value, prop) { + // 'content' is a special property that must be quoted + if (prop === 'content') { + return '"' + value + '"'; } - // assume cyclic structures are equal - // the algorithm for detecting cyclic structures is adapted from ES 5.1 - // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); + return escape(value); +} - var length = stackA.length; - while (length--) { - if (stackA[length] == a) { - return stackB[length] == b; - } - } - var size = 0; - result = true; +module.exports = { + hyphenateProp: hyphenateProp, + escapeValueForProp: escapeValueForProp +}; - // add `a` and `b` to the stack of traversed objects - stackA.push(a); - stackB.push(b); +},{"lodash.escape":25}],42:[function(require,module,exports){ +var isValidCSSProps = require('valid-css-props'); - // recursively compare objects and arrays (susceptible to call stack limits) - if (isArr) { - // compare lengths to determine if a deep comparison is necessary - length = a.length; - size = b.length; - result = size == length; +function isValidProp(prop) { + return isValidCSSProps(prop); +} - if (result || isWhere) { - // deep compare the contents, ignoring non-numeric properties - while (size--) { - var index = length, - value = b[size]; +function isValidValue(value) { + return value != null && typeof value !== 'boolean' && value !== ''; +} - if (isWhere) { - while (index--) { - if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } - } - else { - // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` - // which, in this case, is more costly - forIn(b, function(value, key, b) { - if (hasOwnProperty.call(b, key)) { - // count the number of properties. - size++; - // deep compare each property value. - return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); - } - }); +module.exports = { + isValidProp: isValidProp, + isValidValue: isValidValue +}; - if (result && !isWhere) { - // ensure both objects have the same number of properties - forIn(a, function(value, key, a) { - if (hasOwnProperty.call(a, key)) { - // `size` will be `-1` if `a` has more properties than `b` - return (result = --size > -1); - } - }); - } - } - stackA.pop(); - stackB.pop(); +},{"valid-css-props":47}],43:[function(require,module,exports){ +/** @jsx React.DOM */ +/** + * For math rendered using KaTex and/or MathJax. Use me like 2x + 3. + */ +// TODO(joel) - require MathJax / katex so they don't have to be global - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; -} +var React = require('react'); -module.exports = baseIsEqual; +var pendingScripts = []; +var needsProcess = false; +var timeout = null; -},{"lodash._getarray":71,"lodash._objecttypes":73,"lodash._releasearray":74,"lodash.forin":77,"lodash.isfunction":78}],71:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var arrayPool = require('lodash._arraypool'); +function process(script, callback) { + pendingScripts.push(script); + if (!needsProcess) { + needsProcess = true; + timeout = setTimeout(doProcess, 0, callback); + } +} -/** - * Gets an array from the array pool or creates a new one if the pool is empty. - * - * @private - * @returns {Array} The array from the pool. - */ -function getArray() { - return arrayPool.pop() || []; +function doProcess(callback) { + MathJax.Hub.Queue(function() { + var oldElementScripts = MathJax.Hub.elementScripts; + MathJax.Hub.elementScripts = function(element) { + var scripts = pendingScripts; + pendingScripts = []; + needsProcess = false; + return scripts; + }; + + try { + return MathJax.Hub.Process(null, callback); + } catch (e) { + // IE8 requires `catch` in order to use `finally` + throw e; + } finally { + MathJax.Hub.elementScripts = oldElementScripts; + } + }); } -module.exports = getArray; +var TeX = React.createClass({displayName: 'TeX', + getDefaultProps: function() { + return { + // Called after math is rendered or re-rendered + onRender: function() {} + }; + }, -},{"lodash._arraypool":72}],72:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ + render: function() { + return React.DOM.span( {style:this.props.style}, + React.DOM.span( {ref:"mathjax"} ), + React.DOM.span( {ref:"katex"} ) + ); + }, -/** Used to pool arrays and objects used internally */ -var arrayPool = []; + componentDidMount: function() { + var text = this.props.children; + var onRender = this.props.onRender; -module.exports = arrayPool; + try { + var katexHolder = this.refs.katex.getDOMNode(); + katex.process(text, katexHolder); + onRender(); + return; + } catch (e) { + /* jshint -W103 */ + if (e.__proto__ !== katex.ParseError.prototype) { + /* jshint +W103 */ + throw e; + } + } -},{}],73:[function(require,module,exports){ -arguments[4][31][0].apply(exports,arguments) -},{"dup":31}],74:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var arrayPool = require('lodash._arraypool'), - maxPoolSize = require('lodash._maxpoolsize'); + this.setScriptText(text); + process(this.script, onRender); + }, -/** - * Releases the given array back to the array pool. - * - * @private - * @param {Array} [array] The array to release. - */ -function releaseArray(array) { - array.length = 0; - if (arrayPool.length < maxPoolSize) { - arrayPool.push(array); - } -} + componentDidUpdate: function(prevProps, prevState) { + var oldText = prevProps.children; + var newText = this.props.children; + var onRender = this.props.onRender; -module.exports = releaseArray; + if (oldText !== newText) { + try { + var katexHolder = this.refs.katex.getDOMNode(); + katex.process(newText, katexHolder); + if (this.script) { + var jax = MathJax.Hub.getJaxFor(this.script); + if (jax) { + jax.Remove(); + } + } + onRender(); + return; + } catch (e) { + /* jshint -W103 */ + if (e.__proto__ !== katex.ParseError.prototype) { + /* jshint +W103 */ + throw e; + } + } -},{"lodash._arraypool":75,"lodash._maxpoolsize":76}],75:[function(require,module,exports){ -arguments[4][72][0].apply(exports,arguments) -},{"dup":72}],76:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ + $(this.refs.katex.getDOMNode()).empty(); -/** Used as the max size of the `arrayPool` and `objectPool` */ -var maxPoolSize = 40; + if (this.script) { + var component = this; + MathJax.Hub.Queue(function() { + var jax = MathJax.Hub.getJaxFor(component.script); + if (jax) { + return jax.Text(newText, onRender); + } else { + component.setScriptText(newText); + process(component.script, onRender); + } + }); + } else { + this.setScriptText(newText); + process(this.script, onRender); + } + } + }, -module.exports = maxPoolSize; + setScriptText: function(text) { + if (!this.script) { + this.script = document.createElement("script"); + this.script.type = "math/tex"; + this.refs.mathjax.getDOMNode().appendChild(this.script); + } + if ("text" in this.script) { + // IE8, etc + this.script.text = text; + } else { + this.script.textContent = text; + } + }, -},{}],77:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - objectTypes = require('lodash._objecttypes'); + componentWillUnmount: function() { + if (this.script) { + var jax = MathJax.Hub.getJaxFor(this.script); + if (jax) { + jax.Remove(); + } + } + } +}); + +module.exports = TeX; + +},{"react":45}],44:[function(require,module,exports){ +/** @jsx React.DOM */ + +var React = require("react"); +var _ = require("underscore"); + +// TODO(joel/jack) fix z-index issues https://s3.amazonaws.com/uploads.hipchat.com/6574/29028/yOApjwmgiMhEZYJ/Screen%20Shot%202014-05-30%20at%203.34.18%20PM.png +// z-index: 3 on perseus-formats-tooltip seemed to work /** - * Iterates over own and inherited enumerable properties of an object, - * executing the callback for each property. The callback is bound to `thisArg` - * and invoked with three arguments; (value, key, object). Callbacks may exit - * iteration early by explicitly returning `false`. + * A generic tooltip library for React.js * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example + * This should eventually end up in react-components * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } + * Interface: ({a, b} means one of a or b) + * var Tooltip = require("./tooltip.jsx"); + * + * + * + * + * * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; + * To show/hide the tooltip, the parent component should call the + * .show() and .hide() methods of the tooltip when appropriate. + * (These are usually set up as handlers of events on the target element.) * - * _.forIn(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) + * Notes: + * className should not specify a border; that is handled by borderColor + * so that the arrow and tooltip match */ -var forIn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - for (index in iterable) { - if (callback(iterable[index], index, collection) === false) return result; - } - return result -}; -module.exports = forIn; +// __,,--``\\ +// _,,-''`` \\ , +// '----------_.------'-.___|\__ +// _.--''`` `)__ )__ @\__ +// ( .. ''---/___,,E/__,E'------` +// `-''`'' +// Here be dragons. -},{"lodash._basecreatecallback":51,"lodash._objecttypes":73}],78:[function(require,module,exports){ -arguments[4][26][0].apply(exports,arguments) -},{"dup":26}],79:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":80}],80:[function(require,module,exports){ -arguments[4][31][0].apply(exports,arguments) -},{"dup":31}],81:[function(require,module,exports){ -arguments[4][32][0].apply(exports,arguments) -},{"dup":32,"lodash._isnative":82,"lodash._shimkeys":83,"lodash.isobject":79}],82:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],83:[function(require,module,exports){ -arguments[4][34][0].apply(exports,arguments) -},{"dup":34,"lodash._objecttypes":84}],84:[function(require,module,exports){ -arguments[4][31][0].apply(exports,arguments) -},{"dup":31}],85:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ +var zIndex = 10; -/** - * Creates a "_.pluck" style function, which returns the `key` value of a - * given object. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} key The name of the property to retrieve. - * @returns {Function} Returns the new function. - * @example - * - * var characters = [ - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 36 } - * ]; - * - * var getName = _.property('name'); - * - * _.map(characters, getName); - * // => ['barney', 'fred'] - * - * _.sortBy(characters, getName); - * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] - */ -function property(key) { - return function(object) { - return object[key]; - }; -} +var Triangle = React.createClass({displayName: 'Triangle', + propTypes: { + color: React.PropTypes.string.isRequired, + left: React.PropTypes.number.isRequired, + "top": React.PropTypes.number.isRequired, + width: React.PropTypes.number.isRequired, + height: React.PropTypes.number.isRequired, + horizontalDirection: React.PropTypes.oneOf( + ["left", "right"] + ).isRequired, + verticalDirection: React.PropTypes.oneOf( + ["top", "bottom"] + ).isRequired, + }, -module.exports = property; + render: function() { + var borderLeft, borderRight, borderTop, borderBottom; -},{}],86:[function(require,module,exports){ -/** - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modularize modern exports="npm" -o ./npm/` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCreateCallback = require('lodash._basecreatecallback'), - keys = require('lodash.keys'), - objectTypes = require('lodash._objecttypes'); + var hBorder = (this.props.width + "px solid transparent"); + if (this.props.horizontalDirection === "right") { + borderLeft = hBorder; + } else { + borderRight = hBorder; + } -/** - * Iterates over own enumerable properties of an object, executing the callback - * for each property. The callback is bound to `thisArg` and invoked with three - * arguments; (value, key, object). Callbacks may exit iteration early by - * explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) - */ -var forOwn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; + var vBorder = (this.props.height + "px solid " + this.props.color); + if (this.props.verticalDirection === "top") { + borderTop = vBorder; + } else { + borderBottom = vBorder; + } - while (++ownIndex < length) { - index = ownProps[ownIndex]; - if (callback(iterable[index], index, collection) === false) return result; + return React.DOM.div( {style:{ + display: "block", + height: 0, + width: 0, + position: "absolute", + left: this.props.left, + "top": this.props["top"], + borderLeft: borderLeft, + borderRight: borderRight, + borderTop: borderTop, + borderBottom: borderBottom + }} ); } - return result -}; +}); -module.exports = forOwn; +var TooltipArrow = React.createClass({displayName: 'TooltipArrow', + propTypes: { + position: React.PropTypes.string, + visibility: React.PropTypes.string, + left: React.PropTypes.number, + "top": React.PropTypes.number, + color: React.PropTypes.string.isRequired, // a css color + border: React.PropTypes.string.isRequired, // a css color + width: React.PropTypes.number.isRequired, + height: React.PropTypes.number.isRequired, + horizontalDirection: React.PropTypes.oneOf( + ["left", "right"] + ).isRequired, + verticalDirection: React.PropTypes.oneOf( + ["top", "bottom"] + ).isRequired + }, -},{"lodash._basecreatecallback":87,"lodash._objecttypes":108,"lodash.keys":109}],87:[function(require,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10,"lodash._setbinddata":88,"lodash.bind":91,"lodash.identity":105,"lodash.support":106}],88:[function(require,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11,"lodash._isnative":89,"lodash.noop":90}],89:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],90:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],91:[function(require,module,exports){ -arguments[4][14][0].apply(exports,arguments) -},{"dup":14,"lodash._createwrapper":92,"lodash._slice":104}],92:[function(require,module,exports){ -arguments[4][15][0].apply(exports,arguments) -},{"dup":15,"lodash._basebind":93,"lodash._basecreatewrapper":98,"lodash._slice":104,"lodash.isfunction":103}],93:[function(require,module,exports){ -arguments[4][16][0].apply(exports,arguments) -},{"dup":16,"lodash._basecreate":94,"lodash._setbinddata":88,"lodash._slice":104,"lodash.isobject":97}],94:[function(require,module,exports){ -arguments[4][17][0].apply(exports,arguments) -},{"dup":17,"lodash._isnative":95,"lodash.isobject":97,"lodash.noop":96}],95:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],96:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],97:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":108}],98:[function(require,module,exports){ -arguments[4][21][0].apply(exports,arguments) -},{"dup":21,"lodash._basecreate":99,"lodash._setbinddata":88,"lodash._slice":104,"lodash.isobject":102}],99:[function(require,module,exports){ -arguments[4][17][0].apply(exports,arguments) -},{"dup":17,"lodash._isnative":100,"lodash.isobject":102,"lodash.noop":101}],100:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],101:[function(require,module,exports){ -arguments[4][13][0].apply(exports,arguments) -},{"dup":13}],102:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":108}],103:[function(require,module,exports){ -arguments[4][26][0].apply(exports,arguments) -},{"dup":26}],104:[function(require,module,exports){ -arguments[4][27][0].apply(exports,arguments) -},{"dup":27}],105:[function(require,module,exports){ -arguments[4][28][0].apply(exports,arguments) -},{"dup":28}],106:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29,"lodash._isnative":107}],107:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],108:[function(require,module,exports){ -arguments[4][31][0].apply(exports,arguments) -},{"dup":31}],109:[function(require,module,exports){ -arguments[4][32][0].apply(exports,arguments) -},{"dup":32,"lodash._isnative":110,"lodash._shimkeys":111,"lodash.isobject":112}],110:[function(require,module,exports){ -arguments[4][12][0].apply(exports,arguments) -},{"dup":12}],111:[function(require,module,exports){ -arguments[4][34][0].apply(exports,arguments) -},{"dup":34,"lodash._objecttypes":108}],112:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20,"lodash._objecttypes":108}],113:[function(require,module,exports){ -var escape = require('lodash.escape'); + getDefaultProps: function() { + return { + position: "relative", + visibility: "visible", + left: 0, + "top": 0 + }; + }, -var _uppercasePattern = /([A-Z])/g; + // TODO(jack): Think about adding a box-shadow to the triangle here + // See http://css-tricks.com/triangle-with-shadow/ + render: function() { + var isRight = (this.props.horizontalDirection === "right"); + var isTop = (this.props.verticalDirection === "top"); -function hyphenateProp(string) { - return string.replace(_uppercasePattern, '-$1').toLowerCase(); -} + var frontTopOffset = isTop ? 0 : 1; + var borderTopOffset = isTop ? 0 : -1; -function escapeValueForProp(value, prop) { - // 'content' is a special property that must be quoted - if (prop === 'content') { - return '"' + value + '"'; - } - return escape(value); -} + return React.DOM.div( {style:{ + display: "block", + position: this.props.position, + visibility: this.props.visibility, + left: this.props.left, + "top": this.props["top"], + width: this.props.width + 2, + height: this.props.height + 1, + marginTop: -1, + marginBottom: -2, + zIndex: zIndex + }}, + /* The background triangle used to create the effect of a + border around the foreground triangle*/ + Triangle( + {horizontalDirection:this.props.horizontalDirection, + verticalDirection:this.props.verticalDirection, + color:this.props.border, + left:0, + top:borderTopOffset, + width:this.props.width + 2, // one extra for the diagonal + height:this.props.height + 2} ), + /* The foreground triangle covers all but the left/right edges + of the background triangle */ + Triangle( + {horizontalDirection:this.props.horizontalDirection, + verticalDirection:this.props.verticalDirection, + color:this.props.color, + left:1, + top:frontTopOffset, + width:this.props.width, + height:this.props.height} ) + ); + } +}); -module.exports = { - hyphenateProp: hyphenateProp, - escapeValueForProp: escapeValueForProp +var VERTICAL_CORNERS = { + "top": { + "top": "-100%" + }, + bottom: { + "top": 0 + } }; -},{"lodash.escape":36}],114:[function(require,module,exports){ -var isValidCSSProps = require('valid-css-props'); - -function isValidProp(prop) { - return isValidCSSProps(prop); -} +var HORIZONTAL_CORNERS = { + left: { + targetLeft: 0, + }, -function isValidValue(value) { - return value != null && typeof value !== 'boolean' && value !== ''; -} + right: { + targetLeft: "100%", + } +}; -module.exports = { - isValidProp: isValidProp, - isValidValue: isValidValue -}; - -},{"valid-css-props":47}],115:[function(require,module,exports){ -/** @jsx React.DOM */ -/** - * For math rendered using KaTex and/or MathJax. Use me like 2x + 3. - */ -// TODO(joel) - require MathJax / katex so they don't have to be global - -var React = require('react'); - -var pendingScripts = []; -var needsProcess = false; -var timeout = null; - -function process(script, callback) { - pendingScripts.push(script); - if (!needsProcess) { - needsProcess = true; - timeout = setTimeout(doProcess, 0, callback); +var HORIZONTAL_ALIGNMNENTS = { + left: { + tooltipLeft: 0, + arrowLeft: function(arrowSize) {return 0;} + }, + right: { + tooltipLeft: "-100%", + arrowLeft: function(arrowSize) {return -arrowSize - 2;} } -} +}; -function doProcess(callback) { - MathJax.Hub.Queue(function() { - var oldElementScripts = MathJax.Hub.elementScripts; - MathJax.Hub.elementScripts = function(element) { - var scripts = pendingScripts; - pendingScripts = []; - needsProcess = false; - return scripts; - }; - try { - return MathJax.Hub.Process(null, callback); - } catch (e) { - // IE8 requires `catch` in order to use `finally` - throw e; - } finally { - MathJax.Hub.elementScripts = oldElementScripts; - } - }); -} +var Tooltip = React.createClass({displayName: 'Tooltip', + propTypes: { + show: React.PropTypes.bool.isRequired, + className: React.PropTypes.string, + arrowSize: React.PropTypes.number, + borderColor: React.PropTypes.string, + verticalPosition: React.PropTypes.oneOf( + _.keys(VERTICAL_CORNERS) + ), + horizontalPosition: React.PropTypes.oneOf( + _.keys(HORIZONTAL_CORNERS) + ), + horizontalAlign: React.PropTypes.oneOf( + _.keys(HORIZONTAL_ALIGNMNENTS) + ), + children: React.PropTypes.arrayOf( + React.PropTypes.component + ).isRequired + }, -var TeX = React.createClass({displayName: 'TeX', getDefaultProps: function() { return { - // Called after math is rendered or re-rendered - onRender: function() {} + className: "", + arrowSize: 10, + borderColor: "#ccc", + verticalPosition: "bottom", + horizontalPosition: "left", + horizontalAlign: "left" }; }, - render: function() { - return React.DOM.span( {style:this.props.style}, - React.DOM.span( {ref:"mathjax"} ), - React.DOM.span( {ref:"katex"} ) - ); + getInitialState: function() { + return { + height: null // used for offsetting "top" positioned tooltips + }; }, - componentDidMount: function() { - var text = this.props.children; - var onRender = this.props.onRender; - - try { - var katexHolder = this.refs.katex.getDOMNode(); - katex.process(text, katexHolder); - onRender(); - return; - } catch (e) { - /* jshint -W103 */ - if (e.__proto__ !== katex.ParseError.prototype) { - /* jshint +W103 */ - throw e; - } - } - - this.setScriptText(text); - process(this.script, onRender); + componentWillReceiveProps: function() { + // If the contents have changed, reset our measure of the height + this.setState({height: null}); }, - componentDidUpdate: function(prevProps, prevState) { - var oldText = prevProps.children; - var newText = this.props.children; - var onRender = this.props.onRender; + render: function() { + var isTooltipAbove = this.props.verticalPosition === "top"; - if (oldText !== newText) { - try { - var katexHolder = this.refs.katex.getDOMNode(); - katex.process(newText, katexHolder); - if (this.script) { - var jax = MathJax.Hub.getJaxFor(this.script); - if (jax) { - jax.Remove(); - } - } - onRender(); - return; - } catch (e) { - /* jshint -W103 */ - if (e.__proto__ !== katex.ParseError.prototype) { - /* jshint +W103 */ - throw e; - } - } + /* We wrap the entire output in a span so that it displays inline */ + return React.DOM.span(null, + isTooltipAbove && this._renderToolTipDiv(isTooltipAbove), - $(this.refs.katex.getDOMNode()).empty(); + /* We wrap our input in a div so that we can put the tooltip in a + div above/below it */ + React.DOM.div(null, + _.first(this.props.children) + ), - if (this.script) { - var component = this; - MathJax.Hub.Queue(function() { - var jax = MathJax.Hub.getJaxFor(component.script); - if (jax) { - return jax.Text(newText, onRender); - } else { - component.setScriptText(newText); - process(component.script, onRender); - } - }); - } else { - this.setScriptText(newText); - process(this.script, onRender); - } - } + !isTooltipAbove && this._renderToolTipDiv() + ); }, - setScriptText: function(text) { - if (!this.script) { - this.script = document.createElement("script"); - this.script.type = "math/tex"; - this.refs.mathjax.getDOMNode().appendChild(this.script); - } - if ("text" in this.script) { - // IE8, etc - this.script.text = text; - } else { - this.script.textContent = text; - } - }, + _renderToolTipDiv: function(isTooltipAbove) { + var settings = _.extend({}, + HORIZONTAL_CORNERS[this.props.horizontalPosition], + HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], + VERTICAL_CORNERS[this.props.verticalPosition] + ); - componentWillUnmount: function() { - if (this.script) { - var jax = MathJax.Hub.getJaxFor(this.script); - if (jax) { - jax.Remove(); - } - } - } -}); + var arrowAbove; + var arrowBelow; -module.exports = TeX; + if (isTooltipAbove) { + // We put an absolutely positioned arrow in the correct place + arrowAbove = TooltipArrow( + {verticalDirection:"top", + horizontalDirection:this.props.horizontalAlign, + position:"absolute", + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-this.props.arrowSize + 2, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); -},{"react":117}],116:[function(require,module,exports){ -/** @jsx React.DOM */ + // And we use a visibility: hidden arrow below to shift up the + // content by the correct amount + arrowBelow = TooltipArrow( + {verticalDirection:"top", + horizontalDirection:this.props.horizontalAlign, + visibility:"hidden", + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-1, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); + } else { + arrowAbove = TooltipArrow( + {verticalDirection:"bottom", + horizontalDirection:this.props.horizontalAlign, + color:"white", + border:this.props.borderColor, + left:settings.arrowLeft(this.props.arrowSize), + top:-1, + width:this.props.arrowSize, + height:this.props.arrowSize, + zIndex:zIndex} ); -var React = require("react"); -var _ = require("underscore"); + arrowBelow = null; + } -// TODO(joel/jack) fix z-index issues https://s3.amazonaws.com/uploads.hipchat.com/6574/29028/yOApjwmgiMhEZYJ/Screen%20Shot%202014-05-30%20at%203.34.18%20PM.png -// z-index: 3 on perseus-formats-tooltip seemed to work + /* A positioned div below the input to be the parent for our + tooltip */ + return React.DOM.div( {style:{ + position: "relative", + height: 0, + display: this.props.show ? "block" : "none", + }}, + React.DOM.div( {ref:"tooltipContainer", className:"tooltipContainer", style:{ + position: "absolute", + // height must start out undefined, not null, so that + // we can measure the actual height with jquery. + // This is used to position the tooltip with top: -100% + // when in verticalPosition: "top" mode + height: this.state.height || undefined, + left: settings.targetLeft + }}, + arrowAbove, -/** - * A generic tooltip library for React.js - * - * This should eventually end up in react-components - * - * Interface: ({a, b} means one of a or b) - * var Tooltip = require("./tooltip.jsx"); - * - * - * - * - * - * - * To show/hide the tooltip, the parent component should call the - * .show() and .hide() methods of the tooltip when appropriate. - * (These are usually set up as handlers of events on the target element.) - * - * Notes: - * className should not specify a border; that is handled by borderColor - * so that the arrow and tooltip match - */ - -// __,,--``\\ -// _,,-''`` \\ , -// '----------_.------'-.___|\__ -// _.--''`` `)__ )__ @\__ -// ( .. ''---/___,,E/__,E'------` -// `-''`'' -// Here be dragons. - -var zIndex = 10; + /* The contents of the tooltip */ + React.DOM.div( {className:this.props.className, + ref:"tooltipContent", + style:{ + position: "relative", + "top": settings["top"], + "left": settings.tooltipLeft, + border: "1px solid " + this.props.borderColor, + "-webkit-box-shadow": "0 1px 3px " + + this.props.borderColor, + "-moz-box-shadow": "0 1px 3px " + + this.props.borderColor, + boxShadow: "0 1px 3px " + + this.props.borderColor, + zIndex: zIndex - 1 + }}, + _.rest(this.props.children) + ), -var Triangle = React.createClass({displayName: 'Triangle', - propTypes: { - color: React.PropTypes.string.isRequired, - left: React.PropTypes.number.isRequired, - "top": React.PropTypes.number.isRequired, - width: React.PropTypes.number.isRequired, - height: React.PropTypes.number.isRequired, - horizontalDirection: React.PropTypes.oneOf( - ["left", "right"] - ).isRequired, - verticalDirection: React.PropTypes.oneOf( - ["top", "bottom"] - ).isRequired, + arrowBelow + ) + ); }, - render: function() { - var borderLeft, borderRight, borderTop, borderBottom; + componentDidMount: function() { + this._updateHeight(); + }, - var hBorder = (this.props.width + "px solid transparent"); - if (this.props.horizontalDirection === "right") { - borderLeft = hBorder; - } else { - borderRight = hBorder; - } + componentDidUpdate: function() { + this._updateHeight(); + }, - var vBorder = (this.props.height + "px solid " + this.props.color); - if (this.props.verticalDirection === "top") { - borderTop = vBorder; - } else { - borderBottom = vBorder; + _updateHeight: function() { + var height = this.refs.tooltipContainer.getDOMNode().offsetHeight; + if (height !== this.state.height) { + this.setState({height:height}); } - - return React.DOM.div( {style:{ - display: "block", - height: 0, - width: 0, - position: "absolute", - left: this.props.left, - "top": this.props["top"], - borderLeft: borderLeft, - borderRight: borderRight, - borderTop: borderTop, - borderBottom: borderBottom - }} ); } }); -var TooltipArrow = React.createClass({displayName: 'TooltipArrow', - propTypes: { - position: React.PropTypes.string, - visibility: React.PropTypes.string, - left: React.PropTypes.number, - "top": React.PropTypes.number, - color: React.PropTypes.string.isRequired, // a css color - border: React.PropTypes.string.isRequired, // a css color - width: React.PropTypes.number.isRequired, - height: React.PropTypes.number.isRequired, - horizontalDirection: React.PropTypes.oneOf( - ["left", "right"] - ).isRequired, - verticalDirection: React.PropTypes.oneOf( - ["top", "bottom"] - ).isRequired - }, +// Sorry. // Apology-Oriented-Programming +module.exports = Tooltip; - getDefaultProps: function() { - return { - position: "relative", - visibility: "visible", - left: 0, - "top": 0 - }; - }, +},{"react":45,"underscore":46}],45:[function(require,module,exports){ +/* This note applies to rcss, react, and underscore. + * + * We're faking a node module for this package by just exporting the global. + * There are a few complications which led us to this solution as a temporary + * fix. + * + * - Browserify can slow down a lot when you include the other packages (and + * their dependency graphs). We were also battling general browserify + * slowness at this time - browserify 3.4.0 is "good" but later versions + * (3.53 if I remember correctly) are terribly slow (on the order of 20x + * slower). + * + * - I'm not clear on the details of packaging this so we don't duplicate + * dependencies anywhere. For instance when packaging perseus for webapp we + * need to be careful not to include packages like underscore from our + * dependencies or from the packages we depend on. (note: this is a very good + * opportunity to either explain how existing tools solve the problem or + * create a new tool to solve it) + * + * - Joel (and Jack) + */ +module.exports = window.React; - // TODO(jack): Think about adding a box-shadow to the triangle here - // See http://css-tricks.com/triangle-with-shadow/ - render: function() { - var isRight = (this.props.horizontalDirection === "right"); - var isTop = (this.props.verticalDirection === "top"); +},{}],46:[function(require,module,exports){ +/* This note applies to rcss, react, and underscore. + * + * We're faking a node module for this package by just exporting the global. + * There are a few complications which led us to this solution as a temporary + * fix. + * + * - Browserify can slow down a lot when you include the other packages (and + * their dependency graphs). We were also battling general browserify + * slowness at this time - browserify 3.4.0 is "good" but later versions + * (3.53 if I remember correctly) are terribly slow (on the order of 20x + * slower). + * + * - I'm not clear on the details of packaging this so we don't duplicate + * dependencies anywhere. For instance when packaging perseus for webapp we + * need to be careful not to include packages like underscore from our + * dependencies or from the packages we depend on. (note: this is a very good + * opportunity to either explain how existing tools solve the problem or + * create a new tool to solve it) + * + * - Joel (and Jack) + */ +module.exports = window._; - var frontTopOffset = isTop ? 0 : 1; - var borderTopOffset = isTop ? 0 : -1; +},{}],47:[function(require,module,exports){ +var _validCSSProps = { + 'alignment-adjust': true, + 'alignment-baseline': true, + 'animation': true, + 'animation-delay': true, + 'animation-direction': true, + 'animation-duration': true, + 'animation-iteration-count': true, + 'animation-name': true, + 'animation-play-state': true, + 'animation-timing-function': true, + 'appearance': true, + 'backface-visibility': true, + 'background': true, + 'background-attachment': true, + 'background-clip': true, + 'background-color': true, + 'background-image': true, + 'background-origin': true, + 'background-position': true, + 'background-repeat': true, + 'background-size': true, + 'baseline-shift': true, + 'bookmark-label': true, + 'bookmark-level': true, + 'bookmark-target': true, + 'border': true, + 'border-bottom': true, + 'border-bottom-color': true, + 'border-bottom-left-radius': true, + 'border-bottom-right-radius': true, + 'border-bottom-style': true, + 'border-bottom-width': true, + 'border-collapse': true, + 'border-color': true, + 'border-image': true, + 'border-image-outset': true, + 'border-image-repeat': true, + 'border-image-slice': true, + 'border-image-source': true, + 'border-image-width': true, + 'border-left': true, + 'border-left-color': true, + 'border-left-style': true, + 'border-left-width': true, + 'border-radius': true, + 'border-right': true, + 'border-right-color': true, + 'border-right-style': true, + 'border-right-width': true, + 'border-spacing': true, + 'border-style': true, + 'border-top': true, + 'border-top-color': true, + 'border-top-left-radius': true, + 'border-top-right-radius': true, + 'border-top-style': true, + 'border-top-width': true, + 'border-width': true, + 'bottom': true, + 'box-align': true, + 'box-decoration-break': true, + 'box-direction': true, + 'box-flex': true, + 'box-flex-group': true, + 'box-lines': true, + 'box-ordinal-group': true, + 'box-orient': true, + 'box-pack': true, + 'box-shadow': true, + 'box-sizing': true, + 'caption-side': true, + 'clear': true, + 'clip': true, + 'color': true, + 'color-profile': true, + 'column-count': true, + 'column-fill': true, + 'column-gap': true, + 'column-rule': true, + 'column-rule-color': true, + 'column-rule-style': true, + 'column-rule-width': true, + 'column-span': true, + 'column-width': true, + 'columns': true, + 'content': true, + 'counter-increment': true, + 'counter-reset': true, + 'crop': true, + 'cursor': true, + 'direction': true, + 'display': true, + 'dominant-baseline': true, + 'drop-initial-after-adjust': true, + 'drop-initial-after-align': true, + 'drop-initial-before-adjust': true, + 'drop-initial-before-align': true, + 'drop-initial-size': true, + 'drop-initial-value': true, + 'empty-cells': true, + 'fit': true, + 'fit-position': true, + 'float': true, + 'float-offset': true, + 'font': true, + 'font-family': true, + 'font-size': true, + 'font-size-adjust': true, + 'font-stretch': true, + 'font-style': true, + 'font-variant': true, + 'font-weight': true, + 'grid-columns': true, + 'grid-rows': true, + 'hanging-punctuation': true, + 'height': true, + 'hyphenate-after': true, + 'hyphenate-before': true, + 'hyphenate-character': true, + 'hyphenate-lines': true, + 'hyphenate-resource': true, + 'hyphens': true, + 'icon': true, + 'image-orientation': true, + 'image-resolution': true, + 'inline-box-align': true, + 'left': true, + 'letter-spacing': true, + 'line-height': true, + 'line-stacking': true, + 'line-stacking-ruby': true, + 'line-stacking-shift': true, + 'line-stacking-strategy': true, + 'list-style': true, + 'list-style-image': true, + 'list-style-position': true, + 'list-style-type': true, + 'margin': true, + 'margin-bottom': true, + 'margin-left': true, + 'margin-right': true, + 'margin-top': true, + 'mark': true, + 'mark-after': true, + 'mark-before': true, + 'marks': true, + 'marquee-direction': true, + 'marquee-play-count': true, + 'marquee-speed': true, + 'marquee-style': true, + 'max-height': true, + 'max-width': true, + 'min-height': true, + 'min-width': true, + 'move-to': true, + 'nav-down': true, + 'nav-index': true, + 'nav-left': true, + 'nav-right': true, + 'nav-up': true, + 'opacity': true, + 'orphans': true, + 'outline': true, + 'outline-color': true, + 'outline-offset': true, + 'outline-style': true, + 'outline-width': true, + 'overflow': true, + 'overflow-style': true, + 'overflow-x': true, + 'overflow-y': true, + 'padding': true, + 'padding-bottom': true, + 'padding-left': true, + 'padding-right': true, + 'padding-top': true, + 'page': true, + 'page-break-after': true, + 'page-break-before': true, + 'page-break-inside': true, + 'page-policy': true, + 'perspective': true, + 'perspective-origin': true, + 'phonemes': true, + 'position': true, + 'punctuation-trim': true, + 'quotes': true, + 'rendering-intent': true, + 'resize': true, + 'rest': true, + 'rest-after': true, + 'rest-before': true, + 'right': true, + 'rotation': true, + 'rotation-point': true, + 'ruby-align': true, + 'ruby-overhang': true, + 'ruby-position': true, + 'ruby-span': true, + 'size': true, + 'string-set': true, + 'table-layout': true, + 'target': true, + 'target-name': true, + 'target-new': true, + 'target-position': true, + 'text-align': true, + 'text-align-last': true, + 'text-decoration': true, + 'text-height': true, + 'text-indent': true, + 'text-justify': true, + 'text-outline': true, + 'text-overflow': true, + 'text-shadow': true, + 'text-transform': true, + 'text-wrap': true, + 'top': true, + 'transform': true, + 'transform-origin': true, + 'transform-style': true, + 'transition': true, + 'transition-delay': true, + 'transition-duration': true, + 'transition-property': true, + 'transition-timing-function': true, + 'unicode-bidi': true, + 'user-select': true, + 'vertical-align': true, + 'visibility': true, + 'voice-balance': true, + 'voice-duration': true, + 'voice-pitch': true, + 'voice-pitch-range': true, + 'voice-rate': true, + 'voice-stress': true, + 'voice-volume': true, + 'white-space': true, + 'widows': true, + 'width': true, + 'word-break': true, + 'word-spacing': true, + 'word-wrap': true, + 'z-index': true +} - return React.DOM.div( {style:{ - display: "block", - position: this.props.position, - visibility: this.props.visibility, - left: this.props.left, - "top": this.props["top"], - width: this.props.width + 2, - height: this.props.height + 1, - marginTop: -1, - marginBottom: -2, - zIndex: zIndex - }}, - /* The background triangle used to create the effect of a - border around the foreground triangle*/ - Triangle( - {horizontalDirection:this.props.horizontalDirection, - verticalDirection:this.props.verticalDirection, - color:this.props.border, - left:0, - top:borderTopOffset, - width:this.props.width + 2, // one extra for the diagonal - height:this.props.height + 2} ), - /* The foreground triangle covers all but the left/right edges - of the background triangle */ - Triangle( - {horizontalDirection:this.props.horizontalDirection, - verticalDirection:this.props.verticalDirection, - color:this.props.color, - left:1, - top:frontTopOffset, - width:this.props.width, - height:this.props.height} ) - ); - } -}); +var vendorPrefixRegEx = /^-.+-/; -var VERTICAL_CORNERS = { - "top": { - "top": "-100%" - }, - bottom: { - "top": 0 - } +module.exports = function(prop) { + if (prop[0] === '-') { + return !!_validCSSProps[prop.replace(vendorPrefixRegEx, '')]; + } + return !!_validCSSProps[prop]; }; -var HORIZONTAL_CORNERS = { - left: { - targetLeft: 0, - }, +},{}],48:[function(require,module,exports){ +var every = require('lodash.every'); - right: { - targetLeft: "100%", - } -}; +function isValidRatio(ratio) { + var re = /\d+\/\d+/; + return !!ratio.match(re); +} -var HORIZONTAL_ALIGNMNENTS = { - left: { - tooltipLeft: 0, - arrowLeft: function(arrowSize) {return 0;} - }, - right: { - tooltipLeft: "-100%", - arrowLeft: function(arrowSize) {return -arrowSize - 2;} - } -}; +function isValidInteger(integer) { + var re = /\d+/; + return !!integer.match(re); +} +function isValidLength(length) { + var re = /\d+(?:ex|em|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc)?$/; + return !!length.match(re); +} -var Tooltip = React.createClass({displayName: 'Tooltip', - propTypes: { - show: React.PropTypes.bool.isRequired, - className: React.PropTypes.string, - arrowSize: React.PropTypes.number, - borderColor: React.PropTypes.string, - verticalPosition: React.PropTypes.oneOf( - _.keys(VERTICAL_CORNERS) - ), - horizontalPosition: React.PropTypes.oneOf( - _.keys(HORIZONTAL_CORNERS) - ), - horizontalAlign: React.PropTypes.oneOf( - _.keys(HORIZONTAL_ALIGNMNENTS) - ), - children: React.PropTypes.arrayOf( - React.PropTypes.component - ).isRequired - }, +function isValidOrientation(orientation) { + return orientation === 'landscape' || orientation === 'portrait'; +} - getDefaultProps: function() { - return { - className: "", - arrowSize: 10, - borderColor: "#ccc", - verticalPosition: "bottom", - horizontalPosition: "left", - horizontalAlign: "left" - }; - }, +function isValidScan(scan) { + return scan === 'progressive' || scan === 'interlace'; +} - getInitialState: function() { - return { - height: null // used for offsetting "top" positioned tooltips - }; - }, +function isValidResolution(resolution) { + var re = /(?:\+|-)?(?:\d+|\d*\.\d+)(?:e\d+)?(?:dpi|dpcm|dppx)$/; + return !!resolution.match(re); +} - componentWillReceiveProps: function() { - // If the contents have changed, reset our measure of the height - this.setState({height: null}); - }, +function isValidValue(value) { + return value != null && typeof value !== 'boolean' && value !== ''; +} - render: function() { - var isTooltipAbove = this.props.verticalPosition === "top"; +var _mediaFeatureValidator = { + 'width': isValidLength, + 'min-width': isValidLength, + 'max-width': isValidLength, + 'height': isValidLength, + 'min-height': isValidLength, + 'max-height': isValidLength, + 'device-width': isValidLength, + 'min-device-width': isValidLength, + 'max-device-width': isValidLength, + 'device-height': isValidLength, + 'min-device-height': isValidLength, + 'max-device-height': isValidLength, + 'aspect-ratio': isValidRatio, + 'min-aspect-ratio': isValidRatio, + 'max-aspect-ratio': isValidRatio, + 'device-aspect-ratio': isValidRatio, + 'min-device-aspect-ratio': isValidRatio, + 'max-device-aspect-ratio': isValidRatio, + 'color': isValidValue, + 'min-color': isValidValue, + 'max-color': isValidValue, + 'color-index': isValidInteger, + 'min-color-index': isValidInteger, + 'max-color-index': isValidInteger, + 'monochrome': isValidInteger, + 'min-monochrome': isValidInteger, + 'max-monochrome': isValidInteger, + 'resolution': isValidResolution, + 'min-resolution': isValidResolution, + 'max-resolution': isValidResolution, + 'scan': isValidScan, + 'grid': isValidInteger, + 'orientation': isValidOrientation +}; - /* We wrap the entire output in a span so that it displays inline */ - return React.DOM.span(null, - isTooltipAbove && this._renderToolTipDiv(isTooltipAbove), +var _validMediaFeatures = { + 'width': true, + 'min-width': true, + 'max-width': true, + 'height': true, + 'min-height': true, + 'max-height': true, + 'device-width': true, + 'min-device-width': true, + 'max-device-width': true, + 'device-height': true, + 'min-device-height': true, + 'max-device-height': true, + 'aspect-ratio': true, + 'min-aspect-ratio': true, + 'max-aspect-ratio': true, + 'device-aspect-ratio': true, + 'min-device-aspect-ratio': true, + 'max-device-aspect-ratio': true, + 'color': true, + 'min-color': true, + 'max-color': true, + 'color-index': true, + 'min-color-index': true, + 'max-color-index': true, + 'monochrome': true, + 'min-monochrome': true, + 'max-monochrome': true, + 'resolution': true, + 'min-resolution': true, + 'max-resolution': true, + 'scan': true, + 'grid': true, + 'orientation': true +}; - /* We wrap our input in a div so that we can put the tooltip in a - div above/below it */ - React.DOM.div(null, - _.first(this.props.children) - ), +var _validMediaTypes = { + 'all': true, + 'aural': true, + 'braille': true, + 'handheld': true, + 'print': true, + 'projection': true, + 'screen': true, + 'tty': true, + 'tv': true, + 'embossed': true +}; - !isTooltipAbove && this._renderToolTipDiv() - ); - }, +var _validQualifiers = { + 'not': true, + 'only': true +}; - _renderToolTipDiv: function(isTooltipAbove) { - var settings = _.extend({}, - HORIZONTAL_CORNERS[this.props.horizontalPosition], - HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], - VERTICAL_CORNERS[this.props.verticalPosition] - ); +function isValidFeature(feature) { + return !!_validMediaFeatures[feature]; +} - var arrowAbove; - var arrowBelow; +function isValidQualifier(qualifier) { + return !!_validQualifiers[qualifier]; +} - if (isTooltipAbove) { - // We put an absolutely positioned arrow in the correct place - arrowAbove = TooltipArrow( - {verticalDirection:"top", - horizontalDirection:this.props.horizontalAlign, - position:"absolute", - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-this.props.arrowSize + 2, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); +function isValidMediaType(mediaType) { + return !!_validMediaTypes[mediaType]; +} - // And we use a visibility: hidden arrow below to shift up the - // content by the correct amount - arrowBelow = TooltipArrow( - {verticalDirection:"top", - horizontalDirection:this.props.horizontalAlign, - visibility:"hidden", - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-1, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); - } else { - arrowAbove = TooltipArrow( - {verticalDirection:"bottom", - horizontalDirection:this.props.horizontalAlign, - color:"white", - border:this.props.borderColor, - left:settings.arrowLeft(this.props.arrowSize), - top:-1, - width:this.props.arrowSize, - height:this.props.arrowSize, - zIndex:zIndex} ); +function isValidQualifiedMediaType(mediaType) { + var terms = mediaType.trim().split(/\s+/); + switch (terms.length) { + case 1: + return isValidMediaType(terms[0]); + case 2: + return isValidQualifier(terms[0]) && isValidMediaType(terms[1]); + default: + return false; + } +} - arrowBelow = null; - } +function isValidExpression(expression) { + if (expression.length < 2) { + return false; + } - /* A positioned div below the input to be the parent for our - tooltip */ - return React.DOM.div( {style:{ - position: "relative", - height: 0, - display: this.props.show ? "block" : "none", - }}, - React.DOM.div( {ref:"tooltipContainer", className:"tooltipContainer", style:{ - position: "absolute", - // height must start out undefined, not null, so that - // we can measure the actual height with jquery. - // This is used to position the tooltip with top: -100% - // when in verticalPosition: "top" mode - height: this.state.height || undefined, - left: settings.targetLeft - }}, - arrowAbove, + // Parentheses are required around expressions + if (expression[0] !== '(' || expression[expression.length - 1] !== ')') { + return false; + } - /* The contents of the tooltip */ - React.DOM.div( {className:this.props.className, - ref:"tooltipContent", - style:{ - position: "relative", - "top": settings["top"], - "left": settings.tooltipLeft, - border: "1px solid " + this.props.borderColor, - "-webkit-box-shadow": "0 1px 3px " + - this.props.borderColor, - "-moz-box-shadow": "0 1px 3px " + - this.props.borderColor, - boxShadow: "0 1px 3px " + - this.props.borderColor, - zIndex: zIndex - 1 - }}, - _.rest(this.props.children) - ), + // Remove parentheses and spacess + expression = expression.substring(1, expression.length - 1); - arrowBelow - ) - ); - }, + // Is there a value to accompany the media feature? + var featureAndValue = expression.split(/\s*:\s*/); + switch (featureAndValue.length) { + case 1: + var feature = featureAndValue[0].trim(); + return isValidFeature(feature); + case 2: + var feature = featureAndValue[0].trim(); + var value = featureAndValue[1].trim(); + return isValidFeature(feature) && + _mediaFeatureValidator[feature](value); + default: + return false; + } +} - componentDidMount: function() { - this._updateHeight(); - }, +function isValidMediaQuery(query) { + var andSplitter = /\s+and\s+/; + var queryTerms = query.split(andSplitter); + return (isValidQualifiedMediaType(queryTerms[0]) || + isValidExpression(queryTerms[0])) && + every(queryTerms.slice(1), isValidExpression); +} - componentDidUpdate: function() { - this._updateHeight(); - }, +function isValidMediaQueryList(mediaQuery) { + mediaQuery = mediaQuery.toLowerCase(); - _updateHeight: function() { - var height = this.refs.tooltipContainer.getDOMNode().offsetHeight; - if (height !== this.state.height) { - this.setState({height:height}); - } + if (mediaQuery.substring(0, 6) !== '@media') { + return false; } -}); -// Sorry. // Apology-Oriented-Programming -module.exports = Tooltip; - -},{"react":117,"underscore":118}],117:[function(require,module,exports){ -/* This note applies to rcss, react, and underscore. - * - * We're faking a node module for this package by just exporting the global. - * There are a few complications which led us to this solution as a temporary - * fix. - * - * - Browserify can slow down a lot when you include the other packages (and - * their dependency graphs). We were also battling general browserify - * slowness at this time - browserify 3.4.0 is "good" but later versions - * (3.53 if I remember correctly) are terribly slow (on the order of 20x - * slower). - * - * - I'm not clear on the details of packaging this so we don't duplicate - * dependencies anywhere. For instance when packaging perseus for webapp we - * need to be careful not to include packages like underscore from our - * dependencies or from the packages we depend on. (note: this is a very good - * opportunity to either explain how existing tools solve the problem or - * create a new tool to solve it) - * - * - Joel (and Jack) - */ -module.exports = window.React; + var commaSplitter = /\s*,\s*/; + var queryList = mediaQuery.substring(7, mediaQuery.length) + .split(commaSplitter); + return every(queryList, isValidMediaQuery); +} -},{}],118:[function(require,module,exports){ -/* This note applies to rcss, react, and underscore. - * - * We're faking a node module for this package by just exporting the global. - * There are a few complications which led us to this solution as a temporary - * fix. - * - * - Browserify can slow down a lot when you include the other packages (and - * their dependency graphs). We were also battling general browserify - * slowness at this time - browserify 3.4.0 is "good" but later versions - * (3.53 if I remember correctly) are terribly slow (on the order of 20x - * slower). - * - * - I'm not clear on the details of packaging this so we don't duplicate - * dependencies anywhere. For instance when packaging perseus for webapp we - * need to be careful not to include packages like underscore from our - * dependencies or from the packages we depend on. (note: this is a very good - * opportunity to either explain how existing tools solve the problem or - * create a new tool to solve it) - * - * - Joel (and Jack) - */ -module.exports = window._; +module.exports = isValidMediaQueryList -},{}],119:[function(require,module,exports){ +},{"lodash.every":26}],49:[function(require,module,exports){ var Widgets = require("./widgets.js"); _.each([ @@ -3850,7 +3710,7 @@ _.each([ Widgets.register(widget.name, _.omit(widget, "name")); }); -},{"./widgets.js":173,"./widgets/categorizer.jsx":174,"./widgets/dropdown.jsx":175,"./widgets/example-graphie-widget.jsx":176,"./widgets/example-widget.jsx":177,"./widgets/expression.jsx":178,"./widgets/iframe.jsx":179,"./widgets/image.jsx":180,"./widgets/input-number.jsx":181,"./widgets/interactive-graph.jsx":182,"./widgets/interactive-number-line.jsx":183,"./widgets/lights-puzzle.jsx":184,"./widgets/matcher.jsx":185,"./widgets/measurer.jsx":186,"./widgets/number-line.jsx":187,"./widgets/numeric-input.jsx":188,"./widgets/orderer.jsx":189,"./widgets/plotter.jsx":190,"./widgets/radio.jsx":191,"./widgets/sorter.jsx":192,"./widgets/speaking-text-input.jsx":193,"./widgets/speaking-voice.jsx":194,"./widgets/table.jsx":195,"./widgets/transformer.jsx":196}],120:[function(require,module,exports){ +},{"./widgets.js":103,"./widgets/categorizer.jsx":104,"./widgets/dropdown.jsx":105,"./widgets/example-graphie-widget.jsx":106,"./widgets/example-widget.jsx":107,"./widgets/expression.jsx":108,"./widgets/iframe.jsx":109,"./widgets/image.jsx":110,"./widgets/input-number.jsx":111,"./widgets/interactive-graph.jsx":112,"./widgets/interactive-number-line.jsx":113,"./widgets/lights-puzzle.jsx":114,"./widgets/matcher.jsx":115,"./widgets/measurer.jsx":116,"./widgets/number-line.jsx":117,"./widgets/numeric-input.jsx":118,"./widgets/orderer.jsx":119,"./widgets/plotter.jsx":120,"./widgets/radio.jsx":121,"./widgets/sorter.jsx":122,"./widgets/speaking-text-input.jsx":123,"./widgets/speaking-voice.jsx":124,"./widgets/table.jsx":125,"./widgets/transformer.jsx":126}],50:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -3921,7 +3781,7 @@ var AnswerAreaEditor = React.createClass({displayName: 'AnswerAreaEditor', module.exports = AnswerAreaEditor; -},{"./editor.jsx":145,"./widgets.js":173,"react":117,"react-components/info-tip":7}],121:[function(require,module,exports){ +},{"./editor.jsx":75,"./widgets.js":103,"react":45,"react-components/info-tip":39}],51:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -4253,6 +4113,19 @@ var AnswerAreaRenderer = React.createClass({displayName: 'AnswerAreaRenderer', this.refs.widget.focus(); }, + showGuess: function(answerData) { + if (answerData instanceof Array) { + // Answer area contains no widgets. + return + } else if (this.refs.widget.setAnswerFromJSON === undefined) { + // Target widget cannot show answer. + return 'no setAnswerFromJSON implemented for widgets in answer area.'; + } else { + // Just show the given answer. + this.refs.widget.setAnswerFromJSON(answerData); + } + }, + guessAndScore: function() { // TODO(alpert): These should probably have the same signature... if (this.props.type === "multiple") { @@ -4276,7 +4149,7 @@ var AnswerAreaRenderer = React.createClass({displayName: 'AnswerAreaRenderer', module.exports = AnswerAreaRenderer; -},{"./enabled-features.jsx":146,"./perseus-api.jsx":164,"./question-paragraph.jsx":166,"./renderer.jsx":167,"./util.js":170,"./widget-container.jsx":172,"./widgets.js":173,"react":117}],122:[function(require,module,exports){ +},{"./enabled-features.jsx":76,"./perseus-api.jsx":94,"./question-paragraph.jsx":96,"./renderer.jsx":97,"./util.js":100,"./widget-container.jsx":102,"./widgets.js":103,"react":45}],52:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -4464,7 +4337,7 @@ FancySelect.Option = FancyOption; module.exports = FancySelect; -},{"react":117}],123:[function(require,module,exports){ +},{"react":45}],53:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -4907,7 +4780,7 @@ var GraphSettings = React.createClass({displayName: 'GraphSettings', module.exports = GraphSettings; -},{"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../components/range-input.jsx":133,"../mixins/changeable.jsx":161,"../util.js":170,"react":117,"react-components/blur-input":4,"react-components/button-group":5,"react-components/info-tip":7}],124:[function(require,module,exports){ +},{"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../components/range-input.jsx":63,"../mixins/changeable.jsx":91,"../util.js":100,"react":45,"react-components/blur-input":36,"react-components/button-group":37,"react-components/info-tip":39}],54:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -5246,7 +5119,7 @@ var Graph = React.createClass({displayName: 'Graph', module.exports = Graph; -},{"../util.js":170,"react":117}],125:[function(require,module,exports){ +},{"../util.js":100,"react":45}],55:[function(require,module,exports){ /** @jsx React.DOM */var Util = require("../util.js"); var nestedMap = Util.nestedMap; var deepEq = Util.deepEq; @@ -5377,7 +5250,7 @@ module.exports = { createSimpleClass: createSimpleClass }; -},{"../util.js":170}],126:[function(require,module,exports){ +},{"../util.js":100}],56:[function(require,module,exports){ /** @jsx React.DOM */var GraphieClasses = require("./graphie-classes.jsx"); var Interactive2 = require("../interactive2.js"); var InteractiveUtil = require("../interactive2/interactive-util.js"); @@ -5428,7 +5301,7 @@ module.exports = { MovablePoint: MovablePoint }; -},{"../interactive2.js":150,"../interactive2/interactive-util.js":151,"./graphie-classes.jsx":125}],127:[function(require,module,exports){ +},{"../interactive2.js":80,"../interactive2/interactive-util.js":81,"./graphie-classes.jsx":55}],57:[function(require,module,exports){ /** @jsx React.DOM */ var GraphieClasses = require("./graphie-classes.jsx"); @@ -5708,7 +5581,7 @@ _.extend(Graphie, Movables); module.exports = Graphie; -},{"../interactive2/interactive-util.js":151,"../util.js":170,"./graphie-classes.jsx":125,"./graphie-movables.jsx":126}],128:[function(require,module,exports){ +},{"../interactive2/interactive-util.js":81,"../util.js":100,"./graphie-classes.jsx":55,"./graphie-movables.jsx":56}],58:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -5868,7 +5741,7 @@ var InputWithExamples = React.createClass({displayName: 'InputWithExamples', module.exports = InputWithExamples; -},{"../perseus-api.jsx":164,"../renderer.jsx":167,"../util.js":170,"./math-input.jsx":129,"./text-input.jsx":136,"react":117,"react-components/tooltip":116}],129:[function(require,module,exports){ +},{"../perseus-api.jsx":94,"../renderer.jsx":97,"../util.js":100,"./math-input.jsx":59,"./text-input.jsx":66,"react":45,"react-components/tooltip":44}],59:[function(require,module,exports){ /** @jsx React.DOM */ // TODO(alex): Package MathQuill @@ -6109,7 +5982,7 @@ var MathInput = React.createClass({displayName: 'MathInput', module.exports = MathInput; -},{"./tex-buttons.jsx":135,"react":117,"underscore":118}],130:[function(require,module,exports){ +},{"./tex-buttons.jsx":65,"react":45,"underscore":46}],60:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6181,7 +6054,7 @@ var MultiButtonGroup = React.createClass({displayName: 'MultiButtonGroup', module.exports = MultiButtonGroup; -},{"react":117}],131:[function(require,module,exports){ +},{"react":45}],61:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6360,7 +6233,7 @@ var NumberInput = React.createClass({displayName: 'NumberInput', module.exports = NumberInput; -},{"../util.js":170,"react":117}],132:[function(require,module,exports){ +},{"../util.js":100,"react":45}],62:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6422,7 +6295,7 @@ var PropCheckBox = React.createClass({displayName: 'PropCheckBox', module.exports = PropCheckBox; -},{"react":117}],133:[function(require,module,exports){ +},{"react":45}],63:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6481,7 +6354,7 @@ var RangeInput = React.createClass({displayName: 'RangeInput', module.exports = RangeInput; -},{"../components/number-input.jsx":131,"react":117}],134:[function(require,module,exports){ +},{"../components/number-input.jsx":61,"react":45}],64:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -6998,7 +6871,7 @@ var Sortable = React.createClass({displayName: 'Sortable', module.exports = Sortable; -},{"../renderer.jsx":167,"../util.js":170,"react":117}],135:[function(require,module,exports){ +},{"../renderer.jsx":97,"../util.js":100,"react":45}],65:[function(require,module,exports){ /** @jsx React.DOM */ var React = require("react"); @@ -7133,7 +7006,7 @@ var TexButtons = React.createClass({displayName: 'TexButtons', module.exports = TexButtons; -},{"react":117,"react-components/tex":115}],136:[function(require,module,exports){ +},{"react":45,"react-components/tex":43}],66:[function(require,module,exports){ /** @jsx React.DOM */ var TextInput = React.createClass({displayName: 'TextInput', @@ -7165,7 +7038,7 @@ var TextInput = React.createClass({displayName: 'TextInput', module.exports = TextInput; -},{}],137:[function(require,module,exports){ +},{}],67:[function(require,module,exports){ /** @jsx React.DOM */ var textWidthCache = {}; @@ -7295,7 +7168,7 @@ var TextListEditor = React.createClass({displayName: 'TextListEditor', module.exports = TextListEditor; -},{}],138:[function(require,module,exports){ +},{}],68:[function(require,module,exports){ /** @jsx React.DOM */ // Responsible for combining the text diffs from text-diff and the widget @@ -7410,7 +7283,7 @@ var RevisionDiff = React.createClass({displayName: 'RevisionDiff', module.exports = RevisionDiff; -},{"./text-diff.jsx":141,"./widget-diff.jsx":143}],139:[function(require,module,exports){ +},{"./text-diff.jsx":71,"./widget-diff.jsx":73}],69:[function(require,module,exports){ /** @jsx React.DOM */// Split a word-wise diff generated by jsdiff into multiple lines, for the // purpose of breaking up the diffs into lines, so that modified lines can be // faintly highlighted @@ -7440,7 +7313,7 @@ var splitDiff = function(diffEntries) { module.exports = splitDiff; -},{}],140:[function(require,module,exports){ +},{}],70:[function(require,module,exports){ /** @jsx React.DOM */var jsdiff = require("../../lib/jsdiff"); var statusFor = function(chunk) { @@ -7510,7 +7383,7 @@ var stringArrayDiff = function(a, b) { module.exports = stringArrayDiff; -},{"../../lib/jsdiff":1}],141:[function(require,module,exports){ +},{"../../lib/jsdiff":1}],71:[function(require,module,exports){ /** @jsx React.DOM */ var diff = require("../../lib/jsdiff"); @@ -7675,7 +7548,7 @@ var TextDiff = React.createClass({displayName: 'TextDiff', module.exports = TextDiff; -},{"../../lib/jsdiff":1,"./split-diff.jsx":139,"./string-array-diff.jsx":140}],142:[function(require,module,exports){ +},{"../../lib/jsdiff":1,"./split-diff.jsx":69,"./string-array-diff.jsx":70}],72:[function(require,module,exports){ /** @jsx React.DOM */var UNCHANGED = "unchanged"; var CHANGED = "changed"; var ADDED = "added"; @@ -7745,7 +7618,7 @@ var performDiff = function(before, after, /* optional */ key) { module.exports = performDiff; -},{}],143:[function(require,module,exports){ +},{}],73:[function(require,module,exports){ /** @jsx React.DOM */ var cx = React.addons.classSet; @@ -7941,7 +7814,7 @@ var WidgetDiff = React.createClass({displayName: 'WidgetDiff', module.exports = WidgetDiff; -},{"./widget-diff-performer.jsx":142}],144:[function(require,module,exports){ +},{"./widget-diff-performer.jsx":72}],74:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8225,7 +8098,7 @@ var EditorPage = React.createClass({displayName: 'EditorPage', module.exports = EditorPage; -},{"./components/prop-check-box.jsx":132,"./enabled-features.jsx":146,"./hint-editor.jsx":147,"./item-editor.jsx":159,"./item-renderer.jsx":160,"./perseus-api.jsx":164,"react":117}],145:[function(require,module,exports){ +},{"./components/prop-check-box.jsx":62,"./enabled-features.jsx":76,"./hint-editor.jsx":77,"./item-editor.jsx":89,"./item-renderer.jsx":90,"./perseus-api.jsx":94,"react":45}],75:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -8827,7 +8700,7 @@ var Editor = React.createClass({displayName: 'Editor', module.exports = Editor; -},{"./components/prop-check-box.jsx":132,"./util.js":170,"./widgets.js":173,"react":117,"react-components/drag-target":6}],146:[function(require,module,exports){ +},{"./components/prop-check-box.jsx":62,"./util.js":100,"./widgets.js":103,"react":45,"react-components/drag-target":38}],76:[function(require,module,exports){ /** @jsx React.DOM */var React = require('react'); module.exports = { @@ -8843,7 +8716,7 @@ module.exports = { } }; -},{"react":117}],147:[function(require,module,exports){ +},{"react":45}],77:[function(require,module,exports){ /** @jsx React.DOM */ /* Collection of classes for rendering the hint editor area, @@ -9059,7 +8932,7 @@ var CombinedHintsEditor = React.createClass({displayName: 'CombinedHintsEditor', module.exports = CombinedHintsEditor; -},{"./editor.jsx":145,"./hint-renderer.jsx":148,"react":117,"react-components/info-tip":7}],148:[function(require,module,exports){ +},{"./editor.jsx":75,"./hint-renderer.jsx":78,"react":45,"react-components/info-tip":39}],78:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -9087,7 +8960,7 @@ var HintRenderer = React.createClass({displayName: 'HintRenderer', module.exports = HintRenderer; -},{"./renderer.jsx":167,"react":117}],149:[function(require,module,exports){ +},{"./renderer.jsx":97,"react":45}],79:[function(require,module,exports){ var React = require('react'); var init = function(options) { @@ -9128,7 +9001,7 @@ var init = function(options) { module.exports = init; -},{"react":117}],150:[function(require,module,exports){ +},{"react":45}],80:[function(require,module,exports){ var Movable = require("./interactive2/movable.js"); var MovablePoint = require("./interactive2/movable-point.js"); var MovableLine = require("./interactive2/movable-line.js"); @@ -9148,7 +9021,7 @@ var Interactive2 = { module.exports = Interactive2; -},{"./interactive2/movable-line.js":154,"./interactive2/movable-point.js":156,"./interactive2/movable.js":157}],151:[function(require,module,exports){ +},{"./interactive2/movable-line.js":84,"./interactive2/movable-point.js":86,"./interactive2/movable.js":87}],81:[function(require,module,exports){ /** * Utility functions for writing Interactive2 movablethings */ @@ -9226,7 +9099,7 @@ var InteractiveUtil = { module.exports = InteractiveUtil; -},{"./movable-helper-methods.js":152}],152:[function(require,module,exports){ +},{"./movable-helper-methods.js":82}],82:[function(require,module,exports){ /** * MovableThing convenience methods * @@ -9329,7 +9202,7 @@ var MovableHelperMethods = { module.exports = MovableHelperMethods; -},{}],153:[function(require,module,exports){ +},{}],83:[function(require,module,exports){ /** * A library of options to pass to add/draw/remove/constraints */ @@ -9612,7 +9485,7 @@ module.exports = { onMoveEnd: {standard: null}, }; -},{}],154:[function(require,module,exports){ +},{}],84:[function(require,module,exports){ /** * MovableLine */ @@ -9896,7 +9769,7 @@ _.extend(MovableLine.prototype, { module.exports = MovableLine; -},{"./interactive-util.js":151,"./movable-line-options.js":153,"./objective_.js":158}],155:[function(require,module,exports){ +},{"./interactive-util.js":81,"./movable-line-options.js":83,"./objective_.js":88}],85:[function(require,module,exports){ /** * A library of options to pass to add/draw/remove/constraints */ @@ -10041,7 +9914,7 @@ module.exports = { onClick: {standard: null} }; -},{}],156:[function(require,module,exports){ +},{}],86:[function(require,module,exports){ /** * Creates and adds a point to the graph that can be dragged around. * It allows constraints on its movement and draws when moves happen. @@ -10374,7 +10247,7 @@ _.extend(MovablePoint.prototype, { module.exports = MovablePoint; -},{"./interactive-util.js":151,"./movable-point-options.js":155,"./objective_.js":158}],157:[function(require,module,exports){ +},{"./interactive-util.js":81,"./movable-point-options.js":85,"./objective_.js":88}],87:[function(require,module,exports){ /** * Movable * @@ -10639,7 +10512,7 @@ _.extend(Movable.prototype, { module.exports = Movable; -},{"./interactive-util.js":151}],158:[function(require,module,exports){ +},{"./interactive-util.js":81}],88:[function(require,module,exports){ /** * A work-in-progress of _ methods for objects. * That is, they take an object as a parameter, @@ -10668,7 +10541,7 @@ var pluck = exports.pluck = function(table, subKey) { })); }; -},{}],159:[function(require,module,exports){ +},{}],89:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -10778,7 +10651,7 @@ var ItemEditor = React.createClass({displayName: 'ItemEditor', module.exports = ItemEditor; -},{"./answer-area-editor.jsx":120,"./editor.jsx":145,"./version.json":171,"react":117}],160:[function(require,module,exports){ +},{"./answer-area-editor.jsx":50,"./editor.jsx":75,"./version.json":101,"react":45}],90:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11050,6 +10923,15 @@ var ItemRenderer = React.createClass({displayName: 'ItemRenderer', return this.props.item.hints.length; }, + showGuess: function(answerData) { + this.questionRenderer.showGuess(answerData); + if (answerData !== undefined && this.questionRenderer.widgetIds.length > 0) { + // Left answers for answer widgets only. + answerData = answerData[1]; + } + this.answerAreaRenderer.showGuess(answerData); + }, + scoreInput: function() { var qGuessAndScore = this.questionRenderer.guessAndScore(); var aGuessAndScore = this.answerAreaRenderer.guessAndScore(); @@ -11098,7 +10980,7 @@ var ItemRenderer = React.createClass({displayName: 'ItemRenderer', module.exports = ItemRenderer; -},{"./answer-area-renderer.jsx":121,"./enabled-features.jsx":146,"./hint-renderer.jsx":148,"./perseus-api.jsx":164,"./renderer.jsx":167,"./util.js":170,"react":117}],161:[function(require,module,exports){ +},{"./answer-area-renderer.jsx":51,"./enabled-features.jsx":76,"./hint-renderer.jsx":78,"./perseus-api.jsx":94,"./renderer.jsx":97,"./util.js":100,"react":45}],91:[function(require,module,exports){ /** @jsx React.DOM */ /** * Changeable @@ -11199,7 +11081,7 @@ var Changeable = { module.exports = Changeable; -},{"./widget-prop-blacklist.jsx":163}],162:[function(require,module,exports){ +},{"./widget-prop-blacklist.jsx":93}],92:[function(require,module,exports){ /** @jsx React.DOM */var WIDGET_PROP_BLACKLIST = require("./widget-prop-blacklist.jsx"); var JsonifyProps = { @@ -11211,7 +11093,7 @@ var JsonifyProps = { module.exports = JsonifyProps; -},{"./widget-prop-blacklist.jsx":163}],163:[function(require,module,exports){ +},{"./widget-prop-blacklist.jsx":93}],93:[function(require,module,exports){ /** @jsx React.DOM */module.exports = [ // standard props "added" by react // (technically the renderer still adds them) @@ -11225,7 +11107,7 @@ module.exports = JsonifyProps; "apiOptions" ]; -},{}],164:[function(require,module,exports){ +},{}],94:[function(require,module,exports){ /** @jsx React.DOM *//** * [Most of] the Perseus client API. * @@ -11284,7 +11166,7 @@ module.exports = { }; -},{}],165:[function(require,module,exports){ +},{}],95:[function(require,module,exports){ require("./all-widgets.js"); var version = require("./version.json"); @@ -11304,7 +11186,7 @@ module.exports = { Util: require("./util.js") }; -},{"./all-widgets.js":119,"./answer-area-renderer.jsx":121,"./diffs/revision-diff.jsx":138,"./editor-page.jsx":144,"./editor.jsx":145,"./init.js":149,"./item-renderer.jsx":160,"./perseus-api.jsx":164,"./renderer.jsx":167,"./stateful-editor-page.jsx":168,"./util.js":170,"./version.json":171}],166:[function(require,module,exports){ +},{"./all-widgets.js":49,"./answer-area-renderer.jsx":51,"./diffs/revision-diff.jsx":68,"./editor-page.jsx":74,"./editor.jsx":75,"./init.js":79,"./item-renderer.jsx":90,"./perseus-api.jsx":94,"./renderer.jsx":97,"./stateful-editor-page.jsx":98,"./util.js":100,"./version.json":101}],96:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11320,7 +11202,7 @@ var QuestionParagraph = React.createClass({displayName: 'QuestionParagraph', module.exports = QuestionParagraph; -},{"react":117}],167:[function(require,module,exports){ +},{"react":45}],97:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11837,6 +11719,19 @@ var Renderer = React.createClass({displayName: 'Renderer', }, function() {return focus;}); }, + showGuess: function(answerData) { + _.map(this.widgetIds, function(id, index) { + if (this.refs[id].setAnswerFromJSON === undefined) { + // Target widget cannot show answer. + return 'no setAnswerFromJSON implemented for ' + id + ' widget'; + } else { + // Just show the given answer. + widgetAnswerData = answerData !== undefined ? answerData[0][index] : undefined; + this.refs[id].setAnswerFromJSON(widgetAnswerData); + } + }, this); + }, + guessAndScore: function() { var widgetProps = this.props.widgets; var onInputError = this.props.apiOptions.onInputError || @@ -11955,7 +11850,7 @@ function extractMathAndWidgets(text) { module.exports = Renderer; -},{"./enabled-features.jsx":146,"./perseus-api.jsx":164,"./question-paragraph.jsx":166,"./tex.jsx":169,"./util.js":170,"./widget-container.jsx":172,"./widgets.js":173,"react":117}],168:[function(require,module,exports){ +},{"./enabled-features.jsx":76,"./perseus-api.jsx":94,"./question-paragraph.jsx":96,"./tex.jsx":99,"./util.js":100,"./widget-container.jsx":102,"./widgets.js":103,"react":45}],98:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -11998,7 +11893,7 @@ var StatefulEditorPage = React.createClass({displayName: 'StatefulEditorPage', module.exports = StatefulEditorPage; -},{"./editor-page.jsx":144,"react":117}],169:[function(require,module,exports){ +},{"./editor-page.jsx":74,"react":45}],99:[function(require,module,exports){ /** @jsx React.DOM */ /** * For math rendered using MathJax. Use me like 2x + 3. @@ -12151,7 +12046,7 @@ var TeX = React.createClass({displayName: 'TeX', module.exports = TeX; -},{"react":117}],170:[function(require,module,exports){ +},{"react":45}],100:[function(require,module,exports){ var nestedMap = function(children, func, context) { if (_.isArray(children)) { return _.map(children, function(child) { @@ -12707,7 +12602,7 @@ Util.random = Util.seededRNG(new Date().getTime() & 0xffffffff); module.exports = Util; -},{}],171:[function(require,module,exports){ +},{}],101:[function(require,module,exports){ module.exports={ "apiVersion": { "major": 1, @@ -12719,7 +12614,7 @@ module.exports={ } } -},{}],172:[function(require,module,exports){ +},{}],102:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -12758,7 +12653,7 @@ var WidgetContainer = React.createClass({displayName: 'WidgetContainer', module.exports = WidgetContainer; -},{"react":117}],173:[function(require,module,exports){ +},{"react":45}],103:[function(require,module,exports){ var widgets = {}; var Widgets = { @@ -12898,7 +12793,7 @@ var Widgets = { module.exports = Widgets; -},{}],174:[function(require,module,exports){ +},{}],104:[function(require,module,exports){ /** @jsx React.DOM */ var Changeable = require("../mixins/changeable.jsx"); @@ -13084,7 +12979,7 @@ module.exports = { }; -},{"../components/text-list-editor.jsx":137,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../renderer.jsx":167,"../util.js":170}],175:[function(require,module,exports){ +},{"../components/text-list-editor.jsx":67,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../renderer.jsx":97,"../util.js":100}],105:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -13342,7 +13237,7 @@ module.exports = { hidden: false }; -},{"../components/fancy-select.jsx":122,"../mixins/jsonify-props.jsx":162,"../perseus-api.jsx":164,"../util.js":170,"react":117,"react-components/info-tip":7}],176:[function(require,module,exports){ +},{"../components/fancy-select.jsx":52,"../mixins/jsonify-props.jsx":92,"../perseus-api.jsx":94,"../util.js":100,"react":45,"react-components/info-tip":39}],106:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -13537,7 +13432,7 @@ module.exports = { editor: ExampleGraphieWidgetEditor }; -},{"../components/graphie.jsx":127,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117}],177:[function(require,module,exports){ +},{"../components/graphie.jsx":57,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45}],107:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -13721,7 +13616,7 @@ module.exports = { editor: ExampleWidgetEditor }; -},{"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117}],178:[function(require,module,exports){ +},{"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45}],108:[function(require,module,exports){ /** @jsx React.DOM */ var React = require("react"); @@ -13932,6 +13827,13 @@ var Expression = React.createClass({displayName: 'Expression', return Expression.validate(this.toJSON(), rubric, onInputError); }, + setAnswerFromJSON: function(answerData) { + if (answerData === undefined) { + answerData = {value: ""}; + } + this.props.onChange(answerData); + }, + toJSON: function(skipValidation) { return {value: this.props.value}; }, @@ -14214,7 +14116,7 @@ module.exports = { hidden: false }; -},{"../components/input-with-examples.jsx":128,"../components/math-input.jsx":129,"../components/prop-check-box.jsx":132,"../components/tex-buttons.jsx":135,"../enabled-features.jsx":146,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../perseus-api.jsx":164,"../tex.jsx":169,"../util.js":170,"react":117,"react-components/info-tip":7,"react-components/tooltip":116}],179:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":58,"../components/math-input.jsx":59,"../components/prop-check-box.jsx":62,"../components/tex-buttons.jsx":65,"../enabled-features.jsx":76,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../perseus-api.jsx":94,"../tex.jsx":99,"../util.js":100,"react":45,"react-components/info-tip":39,"react-components/tooltip":44}],109:[function(require,module,exports){ /** @jsx React.DOM */ /** @@ -14466,7 +14368,7 @@ module.exports = { editor: IframeEditor }; -},{"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117,"react-components/blur-input":4}],180:[function(require,module,exports){ +},{"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45,"react-components/blur-input":36}],110:[function(require,module,exports){ /** @jsx React.DOM */ var BlurInput = require("react-components/blur-input"); @@ -14801,7 +14703,7 @@ module.exports = { }; -},{"../components/graphie.jsx":127,"../components/range-input.jsx":133,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react-components/blur-input":4,"react-components/info-tip":7}],181:[function(require,module,exports){ +},{"../components/graphie.jsx":57,"../components/range-input.jsx":63,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react-components/blur-input":36,"react-components/info-tip":39}],111:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -14967,6 +14869,13 @@ var InputNumber = React.createClass({displayName: 'InputNumber', return true; }, + setAnswerFromJSON: function(answerData) { + if (answerData === undefined) { + answerData = {currentValue: ""}; + } + this.props.onChange(answerData); + }, + toJSON: function(skipValidation) { return { currentValue: this.props.currentValue @@ -15122,7 +15031,7 @@ module.exports = { transform: propTransform }; -},{"../components/input-with-examples.jsx":128,"../enabled-features.jsx":146,"../perseus-api.jsx":164,"../renderer.jsx":167,"../tex.jsx":169,"../util.js":170,"react":117,"react-components/blur-input":4,"react-components/info-tip":7}],182:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":58,"../enabled-features.jsx":76,"../perseus-api.jsx":94,"../renderer.jsx":97,"../tex.jsx":99,"../util.js":100,"react":45,"react-components/blur-input":36,"react-components/info-tip":39}],112:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -16821,6 +16730,16 @@ var InteractiveGraph = React.createClass({displayName: 'InteractiveGraph', this.props.onChange({graph: graph}); }, + setAnswerFromJSON: function(answerData) { + if (answerData === undefined) { + answerData = { + type: this.props.graph.type, + coords: undefined + }; + } + this.props.onChange({graph: answerData}); + }, + toJSON: function() { return this.props.graph; }, @@ -17620,7 +17539,7 @@ module.exports = { hidden: false }; -},{"../components/graph-settings.jsx":123,"../components/graph.jsx":124,"../components/number-input.jsx":131,"../interactive2.js":150,"../util.js":170,"react":117,"react-components/info-tip":7}],183:[function(require,module,exports){ +},{"../components/graph-settings.jsx":53,"../components/graph.jsx":54,"../components/number-input.jsx":61,"../interactive2.js":80,"../util.js":100,"react":45,"react-components/info-tip":39}],113:[function(require,module,exports){ /** @jsx React.DOM */ var InfoTip = require("react-components/info-tip"); @@ -18068,7 +17987,7 @@ module.exports = { editor: InteractiveNumberLineEditor }; -},{"../components/prop-check-box.jsx":132,"../util.js":170,"react-components/info-tip":7}],184:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":62,"../util.js":100,"react-components/info-tip":39}],114:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18530,7 +18449,7 @@ module.exports = { transform: transformProps }; -},{"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117,"react-components/info-tip":7}],185:[function(require,module,exports){ +},{"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45,"react-components/info-tip":39}],115:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -18770,7 +18689,7 @@ module.exports = { hidden: false }; -},{"../components/prop-check-box.jsx":132,"../components/sortable.jsx":134,"../components/text-list-editor.jsx":137,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/info-tip":7}],186:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":62,"../components/sortable.jsx":64,"../components/text-list-editor.jsx":67,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/info-tip":39}],116:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -19131,7 +19050,7 @@ module.exports = { hidden: false }; -},{"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../components/range-input.jsx":133,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117,"react-components/info-tip":7}],187:[function(require,module,exports){ +},{"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../components/range-input.jsx":63,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45,"react-components/info-tip":39}],117:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -19610,6 +19529,17 @@ var NumberLine = React.createClass({displayName: 'NumberLine', graphie.line([center, 0], [left, 0], {arrows: "->"}); }, + setAnswerFromJSON: function(answerData) { + if (answerData === undefined) { + answerData = this.getDefaultProps(); + } + if (answerData.rel === "eq") { + answerData.rel = "ge"; + answerData.isInequality = false; + } + this.props.onChange(answerData); + }, + toJSON: function() { return { numLinePosition: this.props.numLinePosition, @@ -19982,7 +19912,7 @@ module.exports = { hidden: false }; -},{"../components/graphie.jsx":127,"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../components/range-input.jsx":133,"../interactive2.js":150,"../interactive2/interactive-util.js":151,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117,"react-components/button-group":5,"react-components/info-tip":7}],188:[function(require,module,exports){ +},{"../components/graphie.jsx":57,"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../components/range-input.jsx":63,"../interactive2.js":80,"../interactive2/interactive-util.js":81,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45,"react-components/button-group":37,"react-components/info-tip":39}],118:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -20059,6 +19989,13 @@ var NumericInput = React.createClass({displayName: 'NumericInput', return {currentValue: this.props.currentValue}; }, + setAnswerFromJSON: function(answerData) { + if (answerData === undefined) { + answerData = {currentValue: ""}; + } + this.props.onChange(answerData); + }, + simpleValidate: function(rubric) { return NumericInput.validate(this.toJSON(), rubric); }, @@ -20427,7 +20364,7 @@ module.exports = { hidden: false }; -},{"../components/input-with-examples.jsx":128,"../components/multi-button-group.jsx":130,"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../editor.jsx":145,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"../util.js":170,"react":117,"react-components/button-group":5,"react-components/info-tip":7}],189:[function(require,module,exports){ +},{"../components/input-with-examples.jsx":58,"../components/multi-button-group.jsx":60,"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../editor.jsx":75,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"../util.js":100,"react":45,"react-components/button-group":37,"react-components/info-tip":39}],119:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -21100,7 +21037,7 @@ module.exports = { hidden: false }; -},{"../components/text-list-editor.jsx":137,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/info-tip":7}],190:[function(require,module,exports){ +},{"../components/text-list-editor.jsx":67,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/info-tip":39}],120:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22097,7 +22034,7 @@ module.exports = { hidden: false }; -},{"../components/number-input.jsx":131,"../components/range-input.jsx":133,"../components/text-list-editor.jsx":137,"../util.js":170,"react":117,"react-components/info-tip":7}],191:[function(require,module,exports){ +},{"../components/number-input.jsx":61,"../components/range-input.jsx":63,"../components/text-list-editor.jsx":67,"../util.js":100,"react":45,"react-components/info-tip":39}],121:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22303,6 +22240,18 @@ var Radio = React.createClass({displayName: 'Radio', }); }, + setAnswerFromJSON: function(answerData) { + if (answerData === undefined) { + renderedAnswerData = {values: undefined}; + } else { + var renderedAnswerData = {'values': []}; + for (var i = 0; i < this.props.choices.length; i++) { + renderedAnswerData['values'].push(answerData['values'][this.props.choices[i].originalIndex]); + } + } + this.props.onChange(renderedAnswerData); + }, + toJSON: function(skipValidation) { // Return checked inputs in the form {values: [bool]}. (Dear future // timeline implementers: this used to be {value: i} before multiple @@ -22644,7 +22593,7 @@ module.exports = { transform: choiceTransform }; -},{"../components/prop-check-box.jsx":132,"../editor.jsx":145,"../mixins/changeable.jsx":161,"../perseus-api.jsx":164,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/button-group":5,"react-components/info-tip":7}],192:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":62,"../editor.jsx":75,"../mixins/changeable.jsx":91,"../perseus-api.jsx":94,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/button-group":37,"react-components/info-tip":39}],122:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -22694,6 +22643,35 @@ var Sorter = React.createClass({displayName: 'Sorter', ); }, + setAnswerFromJSON: function(answerData) { + sortable = this.refs.sortable; + if (answerData === undefined) { + sortable.setState({ + items: sortable.clearItemMeasurements(sortable.state.items) + }); + } else { + items = sortable.state.items; + result = []; + + answerData.options.forEach(function(key) { + var found = false; + items = items.filter(function(item) { + if(!found && item['option'] == key) { + result.push(item); + found = true; + return false; + } else + return true; + }) + }); + sortable.setState({items: result}); + } + // HACK: We need to know *that* the widget changed, but currently it's + // not set up in a nice way to tell us *how* it changed, since the + // permutation of the items is stored in state. + this.props.onChange({}); + }, + toJSON: function(skipValidation) { return {options: this.refs.sortable.getOptions()}; }, @@ -22796,7 +22774,7 @@ module.exports = { hidden: false }; -},{"../components/prop-check-box.jsx":132,"../components/sortable.jsx":134,"../components/text-list-editor.jsx":137,"../util.js":170,"react":117,"react-components/info-tip":7}],193:[function(require,module,exports){ +},{"../components/prop-check-box.jsx":62,"../components/sortable.jsx":64,"../components/text-list-editor.jsx":67,"../util.js":100,"react":45,"react-components/info-tip":39}],123:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -23128,7 +23106,7 @@ _.extend(SpeakingTextInput, { editor: SpeakingTextInputEditor }; -},{"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"classnames":3,"react":117}],194:[function(require,module,exports){ +},{"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"classnames":3,"react":45}],124:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -23301,7 +23279,7 @@ module.exports = { editor: SpeakingVoiceEditor }; -},{"../../lib/responsivevoice.js":2,"../mixins/changeable.jsx":161,"../mixins/jsonify-props.jsx":162,"react":117}],195:[function(require,module,exports){ +},{"../../lib/responsivevoice.js":2,"../mixins/changeable.jsx":91,"../mixins/jsonify-props.jsx":92,"react":45}],125:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -23621,7 +23599,7 @@ module.exports = { hidden: false }; -},{"../editor.jsx":145,"../renderer.jsx":167,"../util.js":170,"react":117,"react-components/info-tip":7}],196:[function(require,module,exports){ +},{"../editor.jsx":75,"../renderer.jsx":97,"../util.js":100,"react":45,"react-components/info-tip":39}],126:[function(require,module,exports){ /** @jsx React.DOM */ var React = require('react'); @@ -26125,5 +26103,5 @@ module.exports = { hidden: false }; -},{"../components/graph-settings.jsx":123,"../components/graph.jsx":124,"../components/number-input.jsx":131,"../components/prop-check-box.jsx":132,"../tex.jsx":169,"../util.js":170,"react":117,"react-components/info-tip":7}]},{},[165])(165) +},{"../components/graph-settings.jsx":53,"../components/graph.jsx":54,"../components/number-input.jsx":61,"../components/prop-check-box.jsx":62,"../tex.jsx":99,"../util.js":100,"react":45,"react-components/info-tip":39}]},{},[95])(95) }); \ No newline at end of file diff --git a/src/answer-area-renderer.jsx b/src/answer-area-renderer.jsx index 22ed1af3a7..873bb08ddb 100644 --- a/src/answer-area-renderer.jsx +++ b/src/answer-area-renderer.jsx @@ -329,6 +329,19 @@ var AnswerAreaRenderer = React.createClass({ this.refs.widget.focus(); }, + showGuess: function(answerData) { + if (answerData instanceof Array) { + // Answer area contains no widgets. + return + } else if (this.refs.widget.setAnswerFromJSON === undefined) { + // Target widget cannot show answer. + return 'no setAnswerFromJSON implemented for widgets in answer area.'; + } else { + // Just show the given answer. + this.refs.widget.setAnswerFromJSON(answerData); + } + }, + guessAndScore: function() { // TODO(alpert): These should probably have the same signature... if (this.props.type === "multiple") { diff --git a/src/item-renderer.jsx b/src/item-renderer.jsx index 09742ea541..f0f1073fa8 100644 --- a/src/item-renderer.jsx +++ b/src/item-renderer.jsx @@ -269,8 +269,13 @@ var ItemRenderer = React.createClass({ return this.props.item.hints.length; }, - applyAnswers: function(answerData) { - this.questionRenderer.applyAnswers(answerData); + showGuess: function(answerData) { + this.questionRenderer.showGuess(answerData); + if (answerData !== undefined && this.questionRenderer.widgetIds.length > 0) { + // Left answers for answer widgets only. + answerData = answerData[1]; + } + this.answerAreaRenderer.showGuess(answerData); }, scoreInput: function() { diff --git a/src/renderer.jsx b/src/renderer.jsx index 08d95f2e4f..1f6c182d0f 100644 --- a/src/renderer.jsx +++ b/src/renderer.jsx @@ -514,12 +514,16 @@ var Renderer = React.createClass({ }, () => focus); }, - applyAnswers: function(answerData) { - _.map(this.widgetIds, function(id) { - if (id.indexOf('lights-puzzle') > -1 || id.indexOf('transformer') > -1 || id.indexOf('image') > -1) { - return 'no save ' + id +' widget' + showGuess: function(answerData) { + _.map(this.widgetIds, function(id, index) { + if (this.refs[id].setAnswerFromJSON === undefined) { + // Target widget cannot show answer. + return 'no setAnswerFromJSON implemented for ' + id + ' widget'; + } else { + // Just show the given answer. + widgetAnswerData = answerData !== undefined ? answerData[0][index] : undefined; + this.refs[id].setAnswerFromJSON(widgetAnswerData); } - return this.refs[id].setAnswerFromJSON(answerData[0]); }, this); }, diff --git a/src/widgets/expression.jsx b/src/widgets/expression.jsx index cea57b67d1..1831201ee4 100644 --- a/src/widgets/expression.jsx +++ b/src/widgets/expression.jsx @@ -208,6 +208,13 @@ var Expression = React.createClass({ return Expression.validate(this.toJSON(), rubric, onInputError); }, + setAnswerFromJSON: function(answerData) { + if (answerData === undefined) { + answerData = {value: ""}; + } + this.props.onChange(answerData); + }, + toJSON: function(skipValidation) { return {value: this.props.value}; }, diff --git a/src/widgets/input-number.jsx b/src/widgets/input-number.jsx index 134005a36a..b8bf7703f5 100644 --- a/src/widgets/input-number.jsx +++ b/src/widgets/input-number.jsx @@ -163,6 +163,13 @@ var InputNumber = React.createClass({ return true; }, + setAnswerFromJSON: function(answerData) { + if (answerData === undefined) { + answerData = {currentValue: ""}; + } + this.props.onChange(answerData); + }, + toJSON: function(skipValidation) { return { currentValue: this.props.currentValue diff --git a/src/widgets/interactive-number-line.jsx b/src/widgets/interactive-number-line.jsx index 60277f45ed..f63cd5f534 100644 --- a/src/widgets/interactive-number-line.jsx +++ b/src/widgets/interactive-number-line.jsx @@ -273,6 +273,17 @@ var InteractiveNumberLine = React.createClass({ } }, + setAnswerFromJSON: function(answerData) { + if (answerData === undefined) { + answerData = this.getDefaultProps(); + } + if (answerData.rel === "eq") { + answerData.rel = "ge"; + answerData.isInequality = false; + } + this.props.onChange(answerData); + }, + toJSON: function() { return { pointX: this.props.pointX, diff --git a/src/widgets/number-line.jsx b/src/widgets/number-line.jsx index a0d8cddf66..08ddbefcac 100644 --- a/src/widgets/number-line.jsx +++ b/src/widgets/number-line.jsx @@ -476,6 +476,17 @@ var NumberLine = React.createClass({ graphie.line([center, 0], [left, 0], {arrows: "->"}); }, + setAnswerFromJSON: function(answerData) { + if (answerData === undefined) { + answerData = this.getDefaultProps(); + } + if (answerData.rel === "eq") { + answerData.rel = "ge"; + answerData.isInequality = false; + } + this.props.onChange(answerData); + }, + toJSON: function() { return { numLinePosition: this.props.numLinePosition, diff --git a/src/widgets/numeric-input.jsx b/src/widgets/numeric-input.jsx index 3db1df9a2f..a927ac1d0e 100644 --- a/src/widgets/numeric-input.jsx +++ b/src/widgets/numeric-input.jsx @@ -75,7 +75,10 @@ var NumericInput = React.createClass({ }, setAnswerFromJSON: function(answerData) { - this.props.onChange(answerData[0]); + if (answerData === undefined) { + answerData = {currentValue: ""}; + } + this.props.onChange(answerData); }, simpleValidate: function(rubric) { diff --git a/src/widgets/radio.jsx b/src/widgets/radio.jsx index 612a59934f..f33e5bb4c6 100644 --- a/src/widgets/radio.jsx +++ b/src/widgets/radio.jsx @@ -204,7 +204,15 @@ var Radio = React.createClass({ }, setAnswerFromJSON: function(answerData) { - this.props.onChange(answerData[0]); + if (answerData === undefined) { + renderedAnswerData = {values: undefined}; + } else { + var renderedAnswerData = {'values': []}; + for (var i = 0; i < this.props.choices.length; i++) { + renderedAnswerData['values'].push(answerData['values'][this.props.choices[i].originalIndex]); + } + } + this.props.onChange(renderedAnswerData); }, toJSON: function(skipValidation) { diff --git a/src/widgets/sorter.jsx b/src/widgets/sorter.jsx index 094a785998..3a46919554 100644 --- a/src/widgets/sorter.jsx +++ b/src/widgets/sorter.jsx @@ -47,6 +47,35 @@ var Sorter = React.createClass({
; }, + setAnswerFromJSON: function(answerData) { + sortable = this.refs.sortable; + if (answerData === undefined) { + sortable.setState({ + items: sortable.clearItemMeasurements(sortable.state.items) + }); + } else { + items = sortable.state.items; + result = []; + + answerData.options.forEach(function(key) { + var found = false; + items = items.filter(function(item) { + if(!found && item['option'] == key) { + result.push(item); + found = true; + return false; + } else + return true; + }) + }); + sortable.setState({items: result}); + } + // HACK: We need to know *that* the widget changed, but currently it's + // not set up in a nice way to tell us *how* it changed, since the + // permutation of the items is stored in state. + this.props.onChange({}); + }, + toJSON: function(skipValidation) { return {options: this.refs.sortable.getOptions()}; }, From c6cc59f93b6712683a49650b9628198b883f2e69 Mon Sep 17 00:00:00 2001 From: yoyo Date: Thu, 9 Feb 2017 12:58:13 +0800 Subject: [PATCH 149/156] modify history function: setAnswerFromJSON --- src/widgets/categorizer.jsx | 4 +++- src/widgets/dropdown.jsx | 4 +++- src/widgets/matcher.jsx | 29 ++++++++++++++++++++--------- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/widgets/categorizer.jsx b/src/widgets/categorizer.jsx index 04a824fcdc..9a39a1cd08 100644 --- a/src/widgets/categorizer.jsx +++ b/src/widgets/categorizer.jsx @@ -29,7 +29,9 @@ var Categorizer = React.createClass({ values: [] }; }, - + setAnswerFromJSON: function(answerData) { + this.props.onChange(answerData); + }, getInitialState: function() { return { uniqueId: _.uniqueId("perseus_radio_") diff --git a/src/widgets/dropdown.jsx b/src/widgets/dropdown.jsx index 23fb93fc84..42b51a5ad8 100644 --- a/src/widgets/dropdown.jsx +++ b/src/widgets/dropdown.jsx @@ -27,7 +27,9 @@ var Dropdown = React.createClass({ apiOptions: ApiOptions.defaults }; }, - + setAnswerFromJSON: function(answerData) { + this.props.onChange({selected:answerData.value}); + }, render: function() { var choices = this.props.choices.slice(); diff --git a/src/widgets/matcher.jsx b/src/widgets/matcher.jsx index 68a026d39d..86ae8c46f7 100644 --- a/src/widgets/matcher.jsx +++ b/src/widgets/matcher.jsx @@ -43,17 +43,22 @@ var Matcher = React.createClass({ render: function() { // Use the same random() function to shuffle both columns sequentially var rng = seededRNG(this.props.problemNum); - var left; - if (!this.props.orderMatters) { - // If the order doesn't matter, don't shuffle the left column - left = this.props.left; - } else { - left = shuffle(this.props.left, rng, /* ensurePermuted */ true); + var right; + // use random when init, but not in history! + if(this.props.right === undefined) { + if (!this.props.orderMatters) { + // If the order doesn't matter, don't shuffle the left column + left = this.props.left; + } else { + left = shuffle(this.props.left, rng, /* ensurePermuted */ true); + } + right = shuffle(this.props.right, rng, /* ensurePermuted */ true); + } + else { + left = this.props.left; + right = this.props.right; } - - var right = shuffle(this.props.right, rng, /* ensurePermuted */ true); - var showLabels = _.any(this.props.labels); var constraints = {height: _.max([this.state.leftHeight, this.state.rightHeight])}; @@ -99,6 +104,10 @@ var Matcher = React.createClass({ this.setState({rightHeight: height}); }, + setAnswerFromJSON: function(answerData) { + this.props.onChange(answerData); + }, + toJSON: function(skipValidation) { return { left: this.refs.left.getOptions(), @@ -229,9 +238,11 @@ var MatcherEditor = React.createClass({ } }); + module.exports = { name: "matcher", displayName: "Two column matcher/配對題", + widget: Matcher, editor: MatcherEditor, hidden: false From d6aef6e2ec4bb548a158860885ed7b21c89d68ce Mon Sep 17 00:00:00 2001 From: yoyo Date: Mon, 13 Feb 2017 16:45:00 +0800 Subject: [PATCH 150/156] undoneHistoryWidgets function --- build/perseus-1.js | 104 +++++++++++++++++++++++++---------- src/answer-area-renderer.jsx | 9 ++- src/item-renderer.jsx | 18 +++++- src/renderer.jsx | 15 ++++- 4 files changed, 113 insertions(+), 33 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index be627138d2..bc0446c400 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,6 +1,6 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit ac6c50d99bbcb6c3e39efea94a85a55a3a4f428f -// branch recover-user-attempts +// commit 51e312e19cf51563c2ecf9487ce20b12a2272ef2 +// branch HEAD (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0) { // Left answers for answer widgets only. answerData = answerData[1]; } this.answerAreaRenderer.showGuess(answerData); + return ; + }, + undoneHistoryWidgets: function() { + var undoneHistoryWidgetsInAnswer = this.answerAreaRenderer.undoneHistoryWidgets(); + var undoneHistoryWidgetsInQuestion = this.questionRenderer.undoneHistoryWidgets(); + if (undoneHistoryWidgetsInAnswer || undoneHistoryWidgetsInQuestion) + return true; + return false; + for (var i in undoneHistoryWidgetsInAnswer) + if (i === true) + return true; + for (var i in undoneHistoryWidgetsInQuestion) + if (i === true) + return true; + return false; }, - scoreInput: function() { var qGuessAndScore = this.questionRenderer.guessAndScore(); var aGuessAndScore = this.answerAreaRenderer.guessAndScore(); @@ -11720,18 +11741,29 @@ var Renderer = React.createClass({displayName: 'Renderer', }, showGuess: function(answerData) { - _.map(this.widgetIds, function(id, index) { + return _.map(this.widgetIds, function(id, index) { if (this.refs[id].setAnswerFromJSON === undefined) { // Target widget cannot show answer. - return 'no setAnswerFromJSON implemented for ' + id + ' widget'; + return {showSuccess:false,err:'no setAnswerFromJSON implemented for ' + id + ' widget'}; } else { // Just show the given answer. widgetAnswerData = answerData !== undefined ? answerData[0][index] : undefined; this.refs[id].setAnswerFromJSON(widgetAnswerData); + return {showSuccess:true}; } }, this); }, + undoneHistoryWidgets: function(answerData) { + _.map(this.widgetIds, function(id, index) { + if (this.refs[id].setAnswerFromJSON === undefined) { + console.log('no setAnswerFromJSON implemented for ' + id + ' widget'); + return true; + } + }, this); + return false; + }, + guessAndScore: function() { var widgetProps = this.props.widgets; var onInputError = this.props.apiOptions.onInputError || @@ -12825,7 +12857,9 @@ var Categorizer = React.createClass({displayName: 'Categorizer', values: [] }; }, - + setAnswerFromJSON: function(answerData) { + this.props.onChange(answerData); + }, getInitialState: function() { return { uniqueId: _.uniqueId("perseus_radio_") @@ -13009,7 +13043,9 @@ var Dropdown = React.createClass({displayName: 'Dropdown', apiOptions: ApiOptions.defaults }; }, - + setAnswerFromJSON: function(answerData) { + this.props.onChange({selected:answerData.value}); + }, render: function() { var choices = this.props.choices.slice(); @@ -16730,16 +16766,6 @@ var InteractiveGraph = React.createClass({displayName: 'InteractiveGraph', this.props.onChange({graph: graph}); }, - setAnswerFromJSON: function(answerData) { - if (answerData === undefined) { - answerData = { - type: this.props.graph.type, - coords: undefined - }; - } - this.props.onChange({graph: answerData}); - }, - toJSON: function() { return this.props.graph; }, @@ -17815,6 +17841,17 @@ var InteractiveNumberLine = React.createClass({displayName: 'InteractiveNumberLi } }, + setAnswerFromJSON: function(answerData) { + if (answerData === undefined) { + answerData = this.getDefaultProps(); + } + if (answerData.rel === "eq") { + answerData.rel = "ge"; + answerData.isInequality = false; + } + this.props.onChange(answerData); + }, + toJSON: function() { return { pointX: this.props.pointX, @@ -18495,17 +18532,22 @@ var Matcher = React.createClass({displayName: 'Matcher', render: function() { // Use the same random() function to shuffle both columns sequentially var rng = seededRNG(this.props.problemNum); - var left; - if (!this.props.orderMatters) { - // If the order doesn't matter, don't shuffle the left column - left = this.props.left; - } else { - left = shuffle(this.props.left, rng, /* ensurePermuted */ true); + var right; + // use random when init, but not in history! + if(this.props.right === undefined) { + if (!this.props.orderMatters) { + // If the order doesn't matter, don't shuffle the left column + left = this.props.left; + } else { + left = shuffle(this.props.left, rng, /* ensurePermuted */ true); + } + right = shuffle(this.props.right, rng, /* ensurePermuted */ true); + } + else { + left = this.props.left; + right = this.props.right; } - - var right = shuffle(this.props.right, rng, /* ensurePermuted */ true); - var showLabels = _.any(this.props.labels); var constraints = {height: _.max([this.state.leftHeight, this.state.rightHeight])}; @@ -18551,6 +18593,10 @@ var Matcher = React.createClass({displayName: 'Matcher', this.setState({rightHeight: height}); }, + setAnswerFromJSON: function(answerData) { + this.props.onChange(answerData); + }, + toJSON: function(skipValidation) { return { left: this.refs.left.getOptions(), @@ -18681,9 +18727,11 @@ var MatcherEditor = React.createClass({displayName: 'MatcherEditor', } }); + module.exports = { name: "matcher", displayName: "Two column matcher/配對題", + widget: Matcher, editor: MatcherEditor, hidden: false diff --git a/src/answer-area-renderer.jsx b/src/answer-area-renderer.jsx index 873bb08ddb..1402c843f2 100644 --- a/src/answer-area-renderer.jsx +++ b/src/answer-area-renderer.jsx @@ -332,7 +332,6 @@ var AnswerAreaRenderer = React.createClass({ showGuess: function(answerData) { if (answerData instanceof Array) { // Answer area contains no widgets. - return } else if (this.refs.widget.setAnswerFromJSON === undefined) { // Target widget cannot show answer. return 'no setAnswerFromJSON implemented for widgets in answer area.'; @@ -342,6 +341,14 @@ var AnswerAreaRenderer = React.createClass({ } }, + undoneHistoryWidgets: function(answerData) { + if (this.refs.widget.setAnswerFromJSON === undefined) { + console.log('no setAnswerFromJSON implemented for widgets in answer area.'); + return true; + } + return false; + }, + guessAndScore: function() { // TODO(alpert): These should probably have the same signature... if (this.props.type === "multiple") { diff --git a/src/item-renderer.jsx b/src/item-renderer.jsx index f0f1073fa8..c284292426 100644 --- a/src/item-renderer.jsx +++ b/src/item-renderer.jsx @@ -270,14 +270,28 @@ var ItemRenderer = React.createClass({ }, showGuess: function(answerData) { - this.questionRenderer.showGuess(answerData); + this.questionRenderer.showGuess(answerData) if (answerData !== undefined && this.questionRenderer.widgetIds.length > 0) { // Left answers for answer widgets only. answerData = answerData[1]; } this.answerAreaRenderer.showGuess(answerData); + return ; + }, + undoneHistoryWidgets: function() { + var undoneHistoryWidgetsInAnswer = this.answerAreaRenderer.undoneHistoryWidgets(); + var undoneHistoryWidgetsInQuestion = this.questionRenderer.undoneHistoryWidgets(); + if (undoneHistoryWidgetsInAnswer || undoneHistoryWidgetsInQuestion) + return true; + return false; + for (var i in undoneHistoryWidgetsInAnswer) + if (i === true) + return true; + for (var i in undoneHistoryWidgetsInQuestion) + if (i === true) + return true; + return false; }, - scoreInput: function() { var qGuessAndScore = this.questionRenderer.guessAndScore(); var aGuessAndScore = this.answerAreaRenderer.guessAndScore(); diff --git a/src/renderer.jsx b/src/renderer.jsx index 1f6c182d0f..fe8da262c1 100644 --- a/src/renderer.jsx +++ b/src/renderer.jsx @@ -515,16 +515,27 @@ var Renderer = React.createClass({ }, showGuess: function(answerData) { - _.map(this.widgetIds, function(id, index) { + return _.map(this.widgetIds, function(id, index) { if (this.refs[id].setAnswerFromJSON === undefined) { // Target widget cannot show answer. - return 'no setAnswerFromJSON implemented for ' + id + ' widget'; + return {showSuccess:false,err:'no setAnswerFromJSON implemented for ' + id + ' widget'}; } else { // Just show the given answer. widgetAnswerData = answerData !== undefined ? answerData[0][index] : undefined; this.refs[id].setAnswerFromJSON(widgetAnswerData); + return {showSuccess:true}; + } + }, this); + }, + + undoneHistoryWidgets: function(answerData) { + _.map(this.widgetIds, function(id, index) { + if (this.refs[id].setAnswerFromJSON === undefined) { + console.log('no setAnswerFromJSON implemented for ' + id + ' widget'); + return true; } }, this); + return false; }, guessAndScore: function() { From a5d07ef4a18cb97d01e8542f2a75b34a196e0807 Mon Sep 17 00:00:00 2001 From: yoyo Date: Wed, 15 Feb 2017 17:23:07 +0800 Subject: [PATCH 151/156] debug ing --- src/answer-area-renderer.jsx | 9 +++++++++ src/item-renderer.jsx | 1 + src/renderer.jsx | 9 ++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/answer-area-renderer.jsx b/src/answer-area-renderer.jsx index 1402c843f2..a29c4840bc 100644 --- a/src/answer-area-renderer.jsx +++ b/src/answer-area-renderer.jsx @@ -330,18 +330,27 @@ var AnswerAreaRenderer = React.createClass({ }, showGuess: function(answerData) { + // console.log("show ans1"); + if( !answerData ) + return; + // console.log("show ans2"); if (answerData instanceof Array) { + // console.log("show ans3"); // Answer area contains no widgets. } else if (this.refs.widget.setAnswerFromJSON === undefined) { // Target widget cannot show answer. + console.log("Target widget cannot show in answerarea",answerData); return 'no setAnswerFromJSON implemented for widgets in answer area.'; } else { + console.log("Target widget show in answerarea") // Just show the given answer. this.refs.widget.setAnswerFromJSON(answerData); } }, undoneHistoryWidgets: function(answerData) { + if(!answerData) + return false; if (this.refs.widget.setAnswerFromJSON === undefined) { console.log('no setAnswerFromJSON implemented for widgets in answer area.'); return true; diff --git a/src/item-renderer.jsx b/src/item-renderer.jsx index c284292426..093a7cbfa4 100644 --- a/src/item-renderer.jsx +++ b/src/item-renderer.jsx @@ -270,6 +270,7 @@ var ItemRenderer = React.createClass({ }, showGuess: function(answerData) { + console.log("item answerData:",answerData); this.questionRenderer.showGuess(answerData) if (answerData !== undefined && this.questionRenderer.widgetIds.length > 0) { // Left answers for answer widgets only. diff --git a/src/renderer.jsx b/src/renderer.jsx index fe8da262c1..92c887054d 100644 --- a/src/renderer.jsx +++ b/src/renderer.jsx @@ -515,13 +515,20 @@ var Renderer = React.createClass({ }, showGuess: function(answerData) { + console.log("showGuess ler"); + if( !answerData ) + return {}; return _.map(this.widgetIds, function(id, index) { if (this.refs[id].setAnswerFromJSON === undefined) { // Target widget cannot show answer. return {showSuccess:false,err:'no setAnswerFromJSON implemented for ' + id + ' widget'}; } else { // Just show the given answer. - widgetAnswerData = answerData !== undefined ? answerData[0][index] : undefined; + if(answerData[0].length<=index) { + console.log("some uunknown err!!!!!"); + return {}; + } + widgetAnswerData = answerData[0][index]; this.refs[id].setAnswerFromJSON(widgetAnswerData); return {showSuccess:true}; } From 0a2ce58ebaee5acaed61e7975f71d52c057cda88 Mon Sep 17 00:00:00 2001 From: yoyo Date: Wed, 15 Feb 2017 18:32:28 +0800 Subject: [PATCH 152/156] add hint history for one part --- build/perseus-1.js | 16 ++++++++++++++-- src/answer-area-renderer.jsx | 3 --- src/item-renderer.jsx | 1 - src/renderer.jsx | 3 +-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index ed1509b2d4..8e7987ac76 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,5 +1,5 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit d6aef6e2ec4bb548a158860885ed7b21c89d68ce +// commit c2908228abb7b59dfa19ccd37c9313f1fadd0f91 // branch recover-user-attempts (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0) { // Left answers for answer widgets only. diff --git a/src/renderer.jsx b/src/renderer.jsx index 92c887054d..2dc66cf585 100644 --- a/src/renderer.jsx +++ b/src/renderer.jsx @@ -515,7 +515,6 @@ var Renderer = React.createClass({ }, showGuess: function(answerData) { - console.log("showGuess ler"); if( !answerData ) return {}; return _.map(this.widgetIds, function(id, index) { @@ -525,7 +524,7 @@ var Renderer = React.createClass({ } else { // Just show the given answer. if(answerData[0].length<=index) { - console.log("some uunknown err!!!!!"); + console.log("showGuess err"); return {}; } widgetAnswerData = answerData[0][index]; From 6c3dcdcdb56643c68b0e1a8299be3cc04c79a1a5 Mon Sep 17 00:00:00 2001 From: yoyo Date: Thu, 16 Feb 2017 15:31:18 +0800 Subject: [PATCH 153/156] modift history hint(done), and disable matcher history --- build/perseus-1.js | 53 +++++++++++++++++++---------------------- src/item-renderer.jsx | 18 +++++++------- src/renderer.jsx | 9 ++++--- src/widgets/matcher.jsx | 24 +++++++------------ 4 files changed, 49 insertions(+), 55 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index 8e7987ac76..cea9723dcc 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,5 +1,5 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit c2908228abb7b59dfa19ccd37c9313f1fadd0f91 +// commit 0a2ce58ebaee5acaed61e7975f71d52c057cda88 // branch recover-user-attempts (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o Date: Thu, 16 Feb 2017 18:31:34 +0800 Subject: [PATCH 154/156] erase console.log --- build/perseus-1.js | 7 ++++--- src/item-renderer.jsx | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index cea9723dcc..c5d9eef387 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,5 +1,5 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 0a2ce58ebaee5acaed61e7975f71d52c057cda88 +// commit 6c3dcdcdb56643c68b0e1a8299be3cc04c79a1a5 // branch recover-user-attempts (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o Date: Fri, 17 Feb 2017 12:48:27 +0800 Subject: [PATCH 155/156] modify image widget history --- src/answer-area-renderer.jsx | 8 ++++---- src/item-renderer.jsx | 11 ++++------- src/renderer.jsx | 11 +++++------ 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/answer-area-renderer.jsx b/src/answer-area-renderer.jsx index 88a60433bc..bee53ec763 100644 --- a/src/answer-area-renderer.jsx +++ b/src/answer-area-renderer.jsx @@ -345,14 +345,14 @@ var AnswerAreaRenderer = React.createClass({ } }, - undoneHistoryWidgets: function(answerData) { + canShowAllHistoryWidgets: function(answerData) { if(!answerData) - return false; + return true; if (this.refs.widget.setAnswerFromJSON === undefined) { console.log('no setAnswerFromJSON implemented for widgets in answer area.'); - return true; + return false; } - return false; + return true; }, guessAndScore: function() { diff --git a/src/item-renderer.jsx b/src/item-renderer.jsx index bbd5dc55a0..73012fad5a 100644 --- a/src/item-renderer.jsx +++ b/src/item-renderer.jsx @@ -283,13 +283,10 @@ var ItemRenderer = React.createClass({ this.answerAreaRenderer.showGuess(answerData); return ; }, - undoneHistoryWidgets: function() { - var undoneHistoryWidgetsInAnswer = this.answerAreaRenderer.undoneHistoryWidgets(); - var undoneHistoryWidgetsInQuestion = this.questionRenderer.undoneHistoryWidgets(); - console.log("undoneHistoryWidgetsInAnswer:",undoneHistoryWidgetsInAnswer); - console.log("undoneHistoryWidgetsInQuestion:",undoneHistoryWidgetsInQuestion); - - if (undoneHistoryWidgetsInAnswer || undoneHistoryWidgetsInQuestion) + canShowAllHistoryWidgets: function() { + var canShowAllHistoryWidgetsInAnswer = this.answerAreaRenderer.canShowAllHistoryWidgets(); + var canShowAllHistoryWidgetsInQuestion = this.questionRenderer.canShowAllHistoryWidgets(); + if (canShowAllHistoryWidgetsInAnswer && canShowAllHistoryWidgetsInQuestion) return true; return false; }, diff --git a/src/renderer.jsx b/src/renderer.jsx index 253d02bada..186291c52d 100644 --- a/src/renderer.jsx +++ b/src/renderer.jsx @@ -534,14 +534,13 @@ var Renderer = React.createClass({ }, this); }, - undoneHistoryWidgets: function(answerData) { - var r = false; + canShowAllHistoryWidgets: function(answerData) { + var r = true; _.map(this.widgetIds, function(id, index) { if (this.refs[id].setAnswerFromJSON === undefined) { - r = true; - return true; - } else { - return false; + if ( id !== 'image 1') { + r = false; + } } }, this); return r; From ac85c606874a38587cb62501fb459a9765edd541 Mon Sep 17 00:00:00 2001 From: yoyo Date: Fri, 17 Feb 2017 12:52:00 +0800 Subject: [PATCH 156/156] modify image widget history --- build/perseus-1.js | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/build/perseus-1.js b/build/perseus-1.js index c5d9eef387..4c283875b0 100644 --- a/build/perseus-1.js +++ b/build/perseus-1.js @@ -1,5 +1,5 @@ /*! Perseus | http://github.com/Khan/perseus */ -// commit 6c3dcdcdb56643c68b0e1a8299be3cc04c79a1a5 +// commit 1fdc27716f7d0a2284760bb7048ac53b07a823c0 // branch recover-user-attempts (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Perseus = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o