text:
var Fossil = (function () {
var deferred = function ($) {
        return $.Deferred;
    }(jquery);
var utils = function (_) {

        var messages = { invalid_src: 'Invalid source object.' };
        function scalarOrArray(method) {
            return function () {
                var extra = _.rest(arguments);
                var arg = _.first(arguments);
                if (_.isArray(arg)) {
                    return _.map(arg, function (arg) {
                        return method.apply(this, [arg].concat(extra));
                    }, this);
                }
                return method.apply(this, arguments);
            };
        }
        function keyValueOrObject(method) {
            return function (key, value) {
                var extra;
                if (typeof key !== 'string') {
                    extra = _.rest(arguments, 1);
                    return _.map(key, function (value, key) {
                        return method.apply(this, [
                            key,
                            value
                        ].concat(extra));
                    }, this);
                }
                extra = _.rest(arguments, 2);
                return method.apply(this, arguments);
            };
        }
        return {
            scalarOrArray: scalarOrArray,
            keyValueOrObject: keyValueOrObject,
            copyOption: scalarOrArray(function (key, to, from) {
                if (from && typeof from[key] !== 'undefined') {
                    to[key] = from[key];
                }
            }),
            getProperty: scalarOrArray(function (key, from, alt) {
                var keys = key.split('.');
                var result = _.reduce(keys, function (accumulator, property) {
                        if (accumulator && property in accumulator) {
                            return accumulator[property];
                        }
                        return;
                    }, from);
                return typeof result !== 'undefined' ? result : alt;
            }),
            setProperty: keyValueOrObject(function (key, value, to) {
                var keys = key.split('.');
                var prop = keys.pop();
                var result = _.reduce(keys, function (accumulator, property) {
                        if (!accumulator instanceof Object) {
                            throw new Error(messages.invalid_src);
                        }
                        if (property in accumulator) {
                            return accumulator[property];
                        }
                        accumulator[property] = {};
                        return accumulator[property];
                    }, to);
                if (prop) {
                    result[prop] = value;
                }
            })
        };
    }(underscore);
var mixin = function (_, utils) {

        var specials = ['initialize'];
        function isSpecialFunction(name) {
            return -1 !== specials.indexOf(name);
        }
        function delegateMixin(self, mixin) {
            _.each(mixin, function (method, name) {
                if (!self[name] && !isSpecialFunction(name)) {
                    self[name] = method;
                }
            });
        }
        function undelegateMixin(self, mixin) {
            _.each(mixin, function (method, name) {
                if (!isSpecialFunction(name) && method === self[name]) {
                    delete self[name];
                }
            });
        }
        function Mixin() {
            var self = this;
            var args = arguments;
            _.each(this.mixins, function (mixin) {
                if (typeof mixin.initialize === 'function') {
                    mixin.initialize.apply(self, args);
                }
            });
        }
        Mixin.prototype.mixins = [];
        _.extend(Mixin, {
            mix: utils.scalarOrArray(function (mixin) {
                var mixins = this.prototype.mixins || [];
                if (-1 === mixins.indexOf(mixin)) {
                    mixins.push(mixin);
                    delegateMixin(this.prototype, mixin);
                }
                return this;
            }),
            unmix: utils.scalarOrArray(function (mixin) {
                var mixins = this.prototype.mixins;
                var index = mixins.indexOf(mixin);
                if (-1 === mixins.indexOf(mixin)) {
                    return this;
                }
                mixins.splice(index, 1);
                undelegateMixin(this.prototype, mixin);
                return this;
            }),
            extend: function (protoProps, staticProps) {
                var parent = this;
                var child;
                if (protoProps && _.has(protoProps, 'constructor')) {
                    child = protoProps.constructor;
                } else {
                    child = function () {
                        return parent.apply(this, arguments);
                    };
                }
                _.extend(child, parent, staticProps);
                var Surrogate = function () {
                    this.constructor = child;
                };
                Surrogate.prototype = parent.prototype;
                child.prototype = new Surrogate();
                if (protoProps)
                    _.extend(child.prototype, protoProps);
                child.prototype.mixins = _.clone(child.prototype.mixins || []);
                child.__super__ = parent.prototype;
                return child;
            }
        });
        return Mixin;
    }(underscore, utils);
var mixins_observable = function (_, Backbone) {

        var exposedPubsubProperties = [
                '_listenerId',
                'createPubSub'
            ].concat(_.keys(Backbone.Events));
        var Observable = _.extend({}, Backbone.Events, {
                eventModifiers: null,
                initialize: function (options) {
                    this.eventModifiers = [];
                    var events = _.extend({}, _.result(this, 'events'), _.result(options || {}, 'events'));
                    var observable = this;
                    this.initializeEventModifiers(options);
                    this.events = events;
                    _.each(events, function (method, eventid) {
                        if (!_.isFunction(method)) {
                            method = observable[method];
                        }
                        observable.listenTo(observable, eventid, _.bind(method, observable));
                    });
                },
                initializeEventModifiers: function (options) {
                    this.addEventModifier('one', oneEvent, ['trigger']);
                    this.addEventModifier('map', mapEvent, ['trigger']);
                },
                createPubSub: function (observer, property) {
                    var pubsub = {}, observable = this;
                    _.each(exposedPubsubProperties, function (property) {
                        if (_.isFunction(observable[property])) {
                            pubsub[property] = _.bind(observable[property], observable);
                        } else {
                            pubsub[property] = observable[property];
                        }
                    });
                    if (!observer) {
                        return pubsub;
                    }
                    var events = _.extend({}, _.result(observer, property), _.result(observer.options || {}, property));
                    _.each(events, function (method, eventid) {
                        if (!_.isFunction(method)) {
                            method = observer[method];
                        }
                        observable.listenTo(observable, eventid, _.bind(method, observer));
                    });
                    return pubsub;
                },
                forward: function (src, dest) {
                    this.on(src, forward(this, dest));
                    return this;
                },
                addEventModifier: function (matcher, hook, methods) {
                    methods || (methods = 'all');
                    if (!(matcher instanceof RegExp)) {
                        matcher = ensureRegexp(matcher);
                    }
                    this.eventModifiers.push({
                        matcher: matcher,
                        action: hook,
                        methods: methods
                    });
                    return this;
                },
                removeEventModifier: function (matcher) {
                    if (!(matcher instanceof RegExp)) {
                        matcher = ensureRegexp(matcher);
                    }
                    this.eventModifiers = _.reduce(this.eventModifiers, function (accumulator, modifier) {
                        if (modifier.matcher.toString() !== matcher.toString()) {
                            accumulator.push(modifier);
                        }
                        return accumulator;
                    }, []);
                    return this;
                }
            });
        _.each([
            'on',
            'off',
            'once',
            'trigger',
            'listenTo',
            'listenToOnce',
            'stopListening'
        ], function (method) {
            Observable[method] = function wrapEventMethod(eventname) {
                var extra = _.rest(arguments);
                var ret;
                var matched = _.any(this.eventModifiers, function (modifier) {
                        if (modifier.methods !== 'all' && -1 === modifier.methods.indexOf(method)) {
                            return false;
                        }
                        if (modifier.matcher.test(eventname)) {
                            eventname = eventname.match(modifier.matcher)[1];
                            ret = modifier.action(this, method, eventname, extra);
                            return true;
                        }
                        return false;
                    }, this);
                if (matched) {
                    return ret;
                }
                Backbone.Events[method].apply(this, arguments);
                return this;
            };
        });
        var forward = function (observable, eventname) {
            return function (original) {
                var args = _.toArray(arguments);
                observable.trigger.apply(observable, [eventname].concat(args));
            };
        };
        function ensureRegexp(str) {
            return new RegExp('^' + str + '!(.*)$', 'i');
        }
        function oneEvent(obj, method, event, extra) {
            var listener = obj._events && obj._events[event] ? _.first(obj._events[event]) : null;
            if (listener) {
                return listener.callback.apply(listener.context || obj, extra);
            }
            return null;
        }
        function mapEvent(obj, method, event, extra) {
            if (!obj._events) {
                return [];
            }
            return _.map(obj._events[event], function (listener) {
                return listener.callback.apply(listener.context || obj, extra);
            }, obj);
        }
        return Observable;
    }(underscore, backbone);
var service = function (_, utils, Mixin, Observable) {

        var Service = Mixin.extend({
                expose: null,
                link: null,
                useDeep: null,
                use: function (module, parent) {
                },
                dispose: function (module, parent) {
                },
                constructor: function (options) {
                    Mixin.apply(this, arguments);
                    utils.copyOption([
                        'link',
                        'expose',
                        'useDeep'
                    ], this, options);
                    this.on('do:use:module', this.doUseModuleListener, this);
                    this.on('do:dispose:module', this.doDisposeModuleListener, this);
                    if (typeof this.initialize === 'function') {
                        this.initialize.apply(this, arguments);
                    }
                },
                doUseModuleListener: function (module, serviceid, service) {
                    use(this, serviceid, module);
                },
                doDisposeModuleListener: function (module, serviceid, service) {
                    dispose(this, serviceid, module);
                },
                onChildConnectListener: function (serviceid, child, childid, parent) {
                    use(this, serviceid, child, parent);
                },
                onChildDisconnectListener: function (serviceid, child, childid, parent) {
                    dispose(this, serviceid, child, parent);
                },
                doLink: function (element, serviceid) {
                    element[serviceid] = this;
                },
                undoLink: function (element, serviceid) {
                    element[serviceid] = null;
                },
                doExpose: function (element, serviceid) {
                    var service = this;
                    _.each(this.exposedMethods, function (methodname) {
                        element[methodname] = _.bind(service[methodname], service);
                    });
                },
                undoExpose: function (element, serviceid) {
                    _.each(this.exposedMethods, function (methodname) {
                        element[methodname] = null;
                    });
                }
            });
        Service.mix(Observable);
        function use(service, serviceid, module, parent) {
            if (_.result(service, 'link')) {
                service.doExpose(module, serviceid);
            }
            if (_.result(service, 'expose')) {
                service.doExpose(module, serviceid);
            }
            service.use(module, parent);
            if (service.useDeep) {
                _.each(module.modules, function (submodule) {
                    use(service, serviceid, submodule, module);
                }, service);
                module.on('on:child:connect', _.bind(service.onChildConnectListener, service, serviceid));
                module.on('on:child:disconnect', _.bind(service.onChildDisconnectListener, service, serviceid));
            }
        }
        function dispose(service, serviceid, module, parent) {
            if (_.result(service, 'link')) {
                service.undoLink(module, serviceid);
            }
            if (_.result(service, 'expose')) {
                service.undoExpose(module, serviceid);
            }
            if (service.useDeep) {
                _.each(module.modules, function (submodule) {
                    dispose(service, serviceid, submodule, module);
                }, service);
                module.off('on:child:connect', null, service);
                module.off('on:child:disconnect', null, service);
            }
            service.dispose(module, parent);
        }
        return Service;
    }(underscore, utils, mixin, mixins_observable);
var observableBuffer = function (Mixin) {
        var ObservableBuffer = Mixin.extend({
                constructor: function () {
                    this.store = [];
                    Mixin.apply(this, arguments);
                },
                replay: function (on) {
                    _.each(this.store, function (step) {
                        var method = step[0];
                        var args = step[1];
                        switch (method) {
                        case 'on':
                        case 'off':
                        case 'once':
                            if (args && this === args[2]) {
                                on[method].apply(on, args.slice(0, 2).concat([on]).concat(args.slice(3)));
                                break;
                            }
                        case 'stopListening':
                        case 'listenToOnce':
                        case 'listenTo':
                            if (args && this === args[1]) {
                                on[method].apply(on, args.slice(0, 1).concat([on]).concat(args.slice(2)));
                                break;
                            }
                        default:
                            on[method].apply(on, args);
                        }
                    }, this);
                }
            });
        _.each([
            'on',
            'off',
            'once',
            'listenTo',
            'listenToOnce',
            'stopListening',
            'trigger'
        ], function (method) {
            ObservableBuffer.prototype[method] = function storeCall() {
                var args = _.toArray(arguments);
                this.store.push([
                    method,
                    args
                ]);
                return this;
            };
        });
        return ObservableBuffer;
    }(mixin);
var viewStore = function (_, utils, Mixin) {
        var ViewStore = Mixin.extend({
                factories: null,
                views: null,
                constructor: function () {
                    this.factories = _.clone(this.factories || {});
                    this.views = _.clone(this.views || {});
                    Mixin.apply(this, arguments);
                    this.initialize.apply(this, arguments);
                },
                initialize: function () {
                },
                get: function (id) {
                    var view, factory;
                    if (this.views[id]) {
                        return this.views[id];
                    }
                    factory = this.factories[id];
                    if (typeof factory === 'function') {
                        view = factory.apply(factory, _.rest(arguments, 1));
                    } else {
                        view = factory;
                    }
                    if (view && view.recycle) {
                        this.views[id] = view;
                    }
                    return view;
                },
                set: utils.keyValueOrObject(function (id, view) {
                    if (this.views[id]) {
                        this.views[id].remove();
                    }
                    this.factories[id] = view;
                    return this;
                }),
                has: function (id) {
                    return this.views[id] || this.factories[id];
                },
                clean: function () {
                    _.each(this.views, function (view, id) {
                        this.remove(id);
                    }, this);
                    this.factories = [];
                    return this;
                },
                remove: function (id) {
                    if (this.views[id]) {
                        this.views[id].remove(true);
                    }
                }
            });
        return ViewStore;
    }(underscore, utils, mixin);
var mixins_startable = function () {

        var Startable = {
                run: false,
                start: function () {
                    if (this.run) {
                        return false;
                    }
                    if (!this._firstStarted) {
                        this._firstStart();
                        this._firstStarted = true;
                    }
                    this._doStart();
                    this.thenWith(this, null, this._startError);
                },
                standby: function () {
                    if (!this.run) {
                        return false;
                    }
                    this._doStandby();
                },
                stop: function () {
                    if (!this._firstStarted) {
                        return false;
                    }
                    this.standby();
                    this.thenWith(this, this._doStop, this._stopError);
                },
                _startError: function (error) {
                    throw error;
                },
                _stopError: function (error) {
                    throw error;
                },
                _firstStart: function () {
                    this.trigger('start:first', this);
                },
                _doStart: function () {
                    this.trigger('start', this);
                    this.run = true;
                },
                _doStandby: function () {
                    this.trigger('standby', this);
                    this.run = false;
                },
                _doStop: function () {
                    this._firstStarted = false;
                    this.trigger('stop', this);
                }
            };
        return Startable;
    }();
var mixins_deferrable = function (_, Deferred) {

        var messages = {
                timeout: 'async process timed out',
                rejected: 'some asynchronous process failed',
                missing_method: function (method) {
                    _.template('Promise has no `<%= method %>` method.', { method: method });
                }
            };
        var uuidCounter = 0;
        var Deferrable = {
                waitFor: function (promise, options) {
                    if (!this.isWaiting()) {
                        this.async = new Wait();
                        this.async.onStop = _.bind(function () {
                            this.async = null;
                        }, this);
                    }
                    this.async.enqueue(promise, options);
                    return this;
                },
                then: function (success, error, always) {
                    if (!this.isWaiting()) {
                        if (success) {
                            success();
                        }
                        if (always) {
                            always();
                        }
                        return this;
                    }
                    this.async.then(success, error, always);
                    return this;
                },
                thenWith: function (context, success, error, always) {
                    return this.then(success ? _.bind(success, context) : success, error ? _.bind(error, context) : error, always ? _.bind(always, context) : always);
                },
                abort: function () {
                    if (this.isWaiting()) {
                        this.async.abort();
                    }
                    return this;
                },
                isWaiting: function () {
                    return !!this.async && !!this.async.deferred && 'pending' === this.async.deferred.state();
                }
            };
        function clearDeferrable(deferrable) {
            deferrable.async = null;
        }
        function Wait() {
            this.deferred = new Deferred();
            this.promises = [];
            this.uuid = uuidCounter++;
            this.timeouts = [];
            this.results = [];
        }
        _.extend(Wait.prototype, {
            enqueue: function (promise, options) {
                promise = this.ensurePromise(promise);
                options = this.ensureOptions(options);
                promise.deferrableUuid = this.uuid;
                this.promises.push(promise);
                this.results.push(null);
                if (options.timeout) {
                    this.addTimeout(promise, options.timeout);
                }
                if (options.failFast) {
                    this.addFailFast(promise);
                } else {
                    this.addFailSilently(promise);
                }
            },
            then: function (success, error, always) {
                if (success) {
                    this.deferred.done(success);
                }
                if (error) {
                    this.deferred.fail(error);
                }
                if (always) {
                    this.deferred.always(always);
                }
            },
            ensureOptions: function (options) {
                return _.extend({
                    failFast: true,
                    timeout: false
                }, options || {});
            },
            ensurePromise: function (promise) {
                if (promise && (promise.then || promise.done)) {
                    return promise;
                }
                var d = new Deferred();
                setTimeout(function () {
                    d.resolve(promise);
                }, 0);
                return d;
            },
            addTimeout: function (promise, timeout) {
                if (!promise.always) {
                    throw new Error(messages.missing_method('always'));
                }
                var timer = setTimeout(function () {
                        promise.reject(messages.timeout);
                    }, timeout);
                promise.always(function () {
                    if (timer) {
                        clearTimeout(timer);
                    }
                });
                this.timeouts.push(timer);
            },
            addFailSilently: function (promise) {
                if (!promise.always) {
                    throw new Error(messages.missing_method('always'));
                }
                promise.always(_.bind(this.onAlways, this, promise));
            },
            addFailFast: function (promise) {
                if (!promise.done) {
                    throw new Error(messages.missing_method('done'));
                }
                promise.done(_.bind(this.onDone, this, promise));
                if (!promise.fail) {
                    throw new Error(messages.missing_method('fail'));
                }
                promise.fail(_.bind(this.onFail, this, promise));
            },
            onDone: function (promise) {
                if (!this.isValidPromise(promise)) {
                    return;
                }
                this.processAsyncReturn(promise, _.rest(arguments, 1));
            },
            onFail: function (promise, error) {
                if (!this.isValidPromise(promise)) {
                    return;
                }
                this.reject(error);
            },
            onAlways: function (promise) {
                if (!this.isValidPromise(promise)) {
                    return;
                }
                this.processAsyncReturn(promise, _.rest(arguments, 1));
            },
            reject: function (error) {
                this.deferred.reject(error);
                this.deferred.reject.apply(this.deferred, [error].concat(this.promises));
                this.stop();
            },
            processAsyncReturn: function (promise, data) {
                var processed = _.every(this.promises, function (p) {
                        return 'pending' !== p.state();
                    });
                _.any(this.promises, function (p, index) {
                    if (p === promise) {
                        this.results.splice(index, 1, data.length <= 2 ? data[0] : _.rest(data, 1));
                        return true;
                    }
                }, this);
                if (!processed) {
                    return this;
                }
                var failed = _.any(this.promises, function (p) {
                        return 'resolved' !== p.state();
                    });
                if (failed) {
                    return this.reject(messages.rejected);
                }
                this.deferred.resolve.apply(this.deferred, this.results);
                this.stop();
            },
            isValidPromise: function (promise) {
                return this.uuid === promise.deferrableUuid;
            },
            abort: function (message) {
                _.each(this.promises, function (promise) {
                    if (promise.abort && _.isFunction(promise.abort)) {
                        promise.abort();
                    }
                });
                return this.reject(message || messages.aborted);
            },
            stop: function () {
                this.uuid = null;
                _.each(this.timeouts, function (timeout) {
                    if (timeout) {
                        clearTimeout(timeout);
                    }
                });
                this.onStop();
            }
        });
        return Deferrable;
    }(underscore, deferred);
var services_session = function (_, Backbone, utils, Service) {

        var expose = [
                'get',
                'set',
                'has',
                'save'
            ];
        var Session = Service.extend({
                model: null,
                constructor: function (options) {
                    utils.copyOption([
                        'defaults',
                        'model'
                    ], this, options);
                    Service.apply(this);
                    this.model || (this.model = new Backbone.Model(this.defaults || {}));
                    var service = this;
                    var m = this.model;
                    _.each(expose, function (method) {
                        service[method] = _.bind(m[method], m);
                    });
                },
                use: function (module, parent) {
                    this.listenTo(module, 'do:set:session', this.set);
                    this.listenTo(module, 'do:get:session', this.get);
                    this.listenTo(module, 'do:save:session', this.save);
                    this.listenTo(module, 'do:has:session', this.has);
                },
                dispose: function (module, parent) {
                    this.stopListening(module, 'do:store:session', this.set);
                    this.stopListening(module, 'do:get:session', this.get);
                    this.stopListening(module, 'do:save:session', this.save);
                    this.stopListening(module, 'do:has:session', this.has);
                }
            });
        return Session;
    }(underscore, backbone, utils, service);
var services_canvas = function ($, Service, utils, Region) {
        var Canvas = Service.extend({
                selector: 'body',
                canvas: null,
                useDeep: true,
                initialize: function (options) {
                    utils.copyOption([
                        'selector',
                        'canvas'
                    ], this, options);
                    if (!this.canvas) {
                        this.canvas = new Region({
                            template: $(this.selector).html(),
                            manageRendering: false
                        });
                    }
                },
                use: function (module, parent) {
                    var container = parent && parent.canvas || this.canvas;
                    var canvasRegion = module.containerRegion || parent && parent.region;
                    utils.copyOption(['region'], module, module.options);
                    if (!parent) {
                        if (module.run) {
                            this.renderAndAppendService(module);
                        } else {
                            module.on('start', this.renderAndAppendService, this);
                        }
                    }
                    if (module.canvas) {
                        if (module.run) {
                            this.renderAndAppendCanvas(canvasRegion, module, container);
                        } else {
                            module.on('start', _.bind(this.renderAndAppendCanvas, this, canvasRegion, module, container), this);
                        }
                    } else {
                        module.canvas = container;
                    }
                    module.on('do:view:attach', this.attachView, this);
                },
                dispose: function (module, parent) {
                    if (!parent) {
                        this.disposeRoot(module);
                    } else {
                        this.disposeRegion(module, parent);
                    }
                },
                renderAndAppendService: function (module) {
                    this.canvas.setElement(this.selector);
                    module.render(this.canvas);
                },
                renderAndAppendCanvas: function (region, module, container) {
                    module.render(module.canvas);
                    container.registerView(module.canvas, region);
                },
                attachView: function (module, view) {
                    var canvas = module.canvas || this.canvas;
                    canvas.registerView(view, module.region);
                },
                useRegion: function (module, parent) {
                    var canvas = parent && parent.canvas || this.canvas;
                    if (module.canvas) {
                    } else if (parent) {
                        parent.attach(canvas);
                    }
                    module.on('do:view:attach', function (module, view) {
                        var canvas = module.canvas || parent && parent.canvas || this.canvas;
                        canvas.registerView(view, module.region);
                    }, this);
                },
                disposeRoot: function (module) {
                    module.off('start:first', null, this);
                },
                disposeRegion: function (module, parent) {
                    module.off('do:view:attach', null, this);
                }
            });
        return Canvas;
    }(jquery, service, utils, views_regionManager);
var services_routing = function (_, Backbone, utils, Service) {

        var Routing = Service.extend({
                prefix: '',
                router: null,
                history: null,
                useDeep: true,
                initialize: function (options) {
                    utils.copyOption([
                        'router',
                        'prefix',
                        'history'
                    ], this, options);
                    _.bindAll(this, 'startHistory', 'stopHistory', 'navigate', 'route');
                    if (!this.router) {
                        this.router = new Backbone.Router();
                    }
                },
                use: function (module, parent) {
                    if (!parent) {
                        this.listenTo(module, 'start:first', this.startHistory);
                        this.listenTo(module, 'stop', this.stopHistory);
                    }
                    this.listenTo(module, 'do:route:navigate', this.navigate);
                    this.listenTo(module, 'do:route:register', this.route);
                    this.setModuleUrl(module, parent).registerModuleRoutes(module);
                },
                dispose: function (module, parent) {
                    this.unregisterModuleRoutes(module);
                    module.url = null;
                    this.stopListening(module, 'do:route:navigate', this.navigate);
                    this.stopListening(module, 'do:route:register', this.route);
                    if (!parent) {
                        this.stopListening(module, 'start:first', this.startHistory);
                        this.stopListening(module, 'stop', this.stopHistory);
                    }
                },
                setModuleUrl: function (module, parent) {
                    var parentUrl = parent ? parent.url : this.prefix;
                    utils.copyOption(['urlRoot'], module, module.options);
                    module.url = url(parentUrl, module.urlRoot);
                    return this;
                },
                registerModuleRoutes: function (module) {
                    var routes = module.routes;
                    if (!routes) {
                        return this;
                    }
                    _.each(routes, function (callback, path) {
                        module.route(path, callback);
                    });
                    return this;
                },
                unregisterModuleRoutes: function (module) {
                    var routes = module.routes;
                    if (!routes) {
                        return this;
                    }
                    console.error('Up to now there is no way to unregister routes');
                    return this;
                },
                startHistory: function (module) {
                    module.thenWith(this, function () {
                        if (!Backbone.History.started) {
                            Backbone.history.start(this.history);
                        }
                    });
                    return this;
                },
                stopHistory: function () {
                    if (Backbone.History.started) {
                        Backbone.history.stop();
                    }
                    return this;
                },
                navigate: function (module, path) {
                    var extra = _.rest(arguments, 2);
                    path = url(module.url, path);
                    this.router.navigate.apply(this.router, [path].concat(extra));
                    return this;
                },
                route: function (module, path, name, callback) {
                    var original;
                    path = url(module.url, path);
                    if (typeof name === 'function' || !callback) {
                        callback = name;
                        name = '';
                    }
                    original = callback;
                    callback = function fossilRouting() {
                        var eventName, method;
                        var args = arguments;
                        if (typeof original === 'string' && typeof module[original] === 'function') {
                            method = module[original];
                            original = method;
                        } else if (typeof original === 'string' && typeof original !== 'function') {
                            eventName = original;
                            original = _.bind(module.trigger, module, eventName);
                        }
                        if (!module.run) {
                            module.start();
                        }
                        module.then(function () {
                            original.apply(module, args);
                        });
                    };
                    this.router.route.call(this.router, path, name, callback);
                    return this;
                }
            });
        function url() {
            var parts = _.toArray(arguments);
            parts = _.reduce(parts, function (accumulator, part) {
                if (part) {
                    accumulator.push(cleanFragment(part, !accumulator.length));
                }
                return accumulator;
            }, []);
            return parts.join('/');
        }
        var cleanFirstReg = new RegExp('^(.*[^/]+)/*$');
        var cleanReg = new RegExp('^/*([^/]*.*[^/]+)/*$');
        function cleanFragment(fragment, first) {
            if (first) {
                return fragment.match(cleanFirstReg)[1];
            }
            return fragment.match(cleanReg)[1];
        }
        return Routing;
    }(underscore, backbone, utils, service);
var services_events = function (_, Service) {
        var Events = Service.extend({
                useDeep: true,
                initialize: function () {
                    _.bindAll(this, 'handle');
                },
                use: function (module, parent) {
                    module.addEventModifier('app', this.handle, [
                        'on',
                        'off',
                        'once',
                        'trigger'
                    ]);
                },
                dispose: function (module, parent) {
                    module.removeEventModifier('app');
                },
                handle: function (obj, method, eventname, args) {
                    return this[method].apply(this, [eventname].concat(args));
                }
            });
        return Events;
    }(underscore, service);
var services_template = function (_, utils, Service) {
        var Template = Service.extend({
                engine: null,
                useDeep: true,
                constructor: function (options) {
                    utils.copyOption(['engine'], this, options);
                    Service.apply(this, arguments);
                    _.bindAll(this, 'doViewRender', 'helper');
                    if (this.engine) {
                        this.engine.start();
                    }
                },
                use: function (module, parent) {
                    utils.copyOption(['helpers'], module, module.options);
                    module.helpers || (module.helpers = {});
                    this.helper({}, module);
                    this.listenTo(module, 'do:view:render', this.doViewRender);
                    this.listenTo(module, 'do:register:helper', this.helper);
                },
                dispose: function (module, parent) {
                    this.stopListening(module, 'do:view:render', this.doViewRender);
                    this.stopListening(module, 'do:register:helper', this.helper);
                    module.helper = null;
                },
                helper: utils.keyValueOrObject(function (key, helper, obj) {
                    obj || (obj = this);
                    obj.helpers || (obj.helpers = {});
                    obj.helpers[key] = helper;
                    return this;
                }),
                doViewRender: function (module, view) {
                    var helpers = this.getHelpers(module, view);
                    var globals = this.getExtraData(module, view);
                    this.engine.render(view, helpers, globals);
                },
                getHelpers: function (module, view) {
                    return _.extend({}, this.helpers, module.helpers, view.helpers || {});
                },
                getExtraData: function (module, view) {
                    return {
                        view: view,
                        module: module
                    };
                }
            });
        return Template;
    }(underscore, utils, service);
var engines_handlebars = function (_, Backbone, Handlebars, Mixin, Observable, Deferrable, Startable) {
        var ViewExtension = {
                precompile: function (template) {
                    if (typeof template === 'string') {
                        return Handlebars.compile(template);
                    }
                    return template;
                },
                renderHtml: function (data, extra) {
                    return this.template(data, extra);
                }
            };
        var Engine = Mixin.extend({
                _firstStart: function () {
                    _.defaults(Backbone.View.prototype, ViewExtension);
                    Startable._firstStart.apply(this, arguments);
                },
                _doStop: function () {
                    var engine = this.engine;
                    _.each(ViewExtension, function unmix(method, name) {
                        if (Backbone.View.prototype[name] === method) {
                            Backbone.View.prototype[name] = null;
                        }
                    });
                },
                render: function (view, helpers, data) {
                    var extra = {
                            helpers: helpers,
                            data: data
                        };
                    return view.render(extra);
                }
            });
        Engine.mix([
            Observable,
            Deferrable,
            Startable
        ]);
        return Engine;
    }(underscore, backbone, handlebars, mixin, mixins_observable, mixins_deferrable, mixins_startable);
var engines_underscore = function (_, Backbone, Mixin, Observable, Deferrable, Startable) {
        var ViewExtension = {
                precompile: function (template) {
                    if (typeof template === 'string') {
                        return _.template(template);
                    }
                    return template;
                },
                renderHtml: function (data, extra) {
                    return this.template(_.defaults(data, extra));
                }
            };
        var Engine = Mixin.extend({
                _firstStart: function () {
                    _.defaults(Backbone.View.prototype, ViewExtension);
                    Startable._firstStart.apply(this, arguments);
                },
                _doStop: function () {
                    var engine = this.engine;
                    _.each(ViewExtension, function unmix(method, name) {
                        if (Backbone.View.prototype[name] === method) {
                            Backbone.View.prototype[name] = null;
                        }
                    });
                },
                render: function (view, helpers, data) {
                    var extraTpl, extra;
                    extraTpl = {
                        helpers: helpers,
                        data: data
                    };
                    _.each(helpers || {}, function (helper, key) {
                        helpers[key] = function () {
                            return helper.apply(this, _.toArray(arguments).concat([extraTpl]));
                        };
                    });
                    extra = _.extend({}, helpers || {}, data || {});
                    return view.render(extra);
                }
            });
        Engine.mix([
            Observable,
            Deferrable,
            Startable
        ]);
        return Engine;
    }(underscore, backbone, mixin, mixins_observable, mixins_deferrable, mixins_startable);
var fossil = function (deferred, utils, Mixin, Module, Service, ObservableBuffer, ViewStore, Observable, Startable, Deferrable, Session, Canvas, Routing, Events, Template, Underscore, Handlebars) {
        var Fossil = {
                utils: utils,
                Mixin: Mixin,
                mixins: {
                    Observable: Observable,
                    Startable: Startable,
                    Deferrable: Deferrable
                },
                Module: Module,
                Service: Service,
                services: {
                    Session: Session,
                    Canvas: Canvas,
                    Routing: Routing,
                    Events: Events,
                    Template: Template
                },
                engines: {
                    Underscore: Underscore,
                    Handlebars: Handlebars
                },
                ViewStore: ViewStore,
                ObservableBuffer: ObservableBuffer
            };
        return Fossil;
    }(deferred, utils, mixin, {}, service, observableBuffer, viewStore, mixins_observable, mixins_startable, mixins_deferrable, services_session, services_canvas, services_routing, services_events, services_template, engines_handlebars, engines_underscore);return fossil;})();

redpajama_set_name: RedPajamaGithub


There will be fewer US consumers celebrating Valentine's Day this year, according to a survey carried out by the National Retail Federation (NFR). But those that will plan to spend a predicted total of $20.7 billion, up from $19.6 billion (5.6%) last year.
Which mobile tool gives us the greatest sense of connection?
IDC conducted a research report to find out how smartphones and social media networks keep us engaged. The key finding in this study turned out to be quite surprising.


text:
I'm proud to have selected Osinbajo as my running mate ― Buhari
by Bridget Edokwe · March 15, 2021
President Muhammadu Buhari made it a remarkable week for Vice-President Yemi Osinbajo when he acknowledged the humility of the number two citizen, who turned 64 on March 8.
"I'm proud to have selected Yemi Osinbajo as my running mate. He has given a good account of himself since our journey began in 2015," Buhari announced as he joined other citizens to celebrate Osinbajo's birthday.
Malam Garba Shehu, the president's spokesman in a statement quoted Buhari as describing Osinbajo as "a reliable and dedicated deputy''.
Buhari stated that "Osinbajo is not only admirably competent but also exudes confidence and passion in the performance of his job".
According to the president, the vice-president is a cool-headed gentleman, who puts the interest of Nigeria above other narrow considerations.
"Vice-President Osinbajo is an incredibly patient politician, who demonstrates remarkable intellectual and mental energy in the discharge of his duties."
The president wished Osinbajo many more prosperous years and God's continued guidance.
Earlier on March 7, the Presidency released a checklist of what it described as "The Buhari Women" as part of activities to mark this year's International Women's Day (IWD).
The News Agency of Nigeria reports that March 8 of every year is observed globally as IWD.
A statement by the president's spokesman, Mr Femi Adesina, listed 50 Nigerian women in leadership positions in the Buhari administration.
According to the presidential aide, the celebration provides ample opportunity to reflect on how Buhari honours the womenfolk.
On March 8, Buhari hosted former Vice-President Namadi Sambo, who is also the ECOWAS Head of Mission on the Elections in Niger Republic.
The president expressed satisfaction with the way and manner the Feb. 20 run-off presidential election was conducted in Niger, adding that Nigeria was concerned about security in that country.
The Nigerian leader said: "We are concerned about their stability and I am glad the elections went well. I am happy it was transparent as attested to by most of the observers.''
Buhari congratulated Sambo and his team for a job well done, stating: "I am glad you came back with good news."
Also on March 8, Buhari rejoiced with Nigerian women on the occasion of this year's International Women's Day, describing them as the bedrock of society.
He restated his administration's commitment to addressing the challenges confronting women at various levels of society.
According to him, several women, including seven female ministers, in addition to scores more are currently in charge of key parastatal agencies as well as serving as presidential aides.
He said that the women were performing well in their respective ministries and agencies.
Buhari, similarly, on March 8, offered his sincere condolences to President Teodoro Obiang Mbasogo of Equatorial Guinea over the explosions at a military base that wreaked havoc in a city in the country, called Bata.
Over 30 people were reported killed in the explosion with more than 6oo injured in the mishap, which also left homes and buildings in the city with considerable damages.
Also on March 8, the vice-president, presented a keynote address at a webinar organized by Women in Africa in collaboration with the MacArthur Foundation, to mark the 2021 International Women's Day.
Anchoring his contributions on the theme of the 2021 celebrations: "Choose to Challenge", Osinbajo noted that "a child of a mother who can read is 50 per cent more likely to live past the age of five.
"Each additional school year increases a woman's earning by 20 per cent — two thirds less maternal deaths if mothers finish primary school," said the vice-president, who is also a law professor.
On March 9, Buhari performed the virtual ground-breaking of three projects namely: the reconstruction of Port Harcourt – Maiduguri Eastern Narrow Gauge Railway Project, the Bonny Deep Sea Port and the Railway Industrial Park in Port Harcourt.
Speaking at the event, the president expressed his optimism that rehabilitation of the Port Harcourt–Maiduguri railway would resuscitate economic activities on the Eastern corridor which had been affected by insecurity.
He said the country's aspiration for nationwide transport infrastructure and railways would be significantly enhanced by the three projects.
On March 9, the Nigerian leader hosted the Executive Director of the Joint United Nations Programme on HIV/AIDS, Mrs Winnie Byanyima, at State House, Abuja.
Also on March 9, Buhari requested the Senate to confirm the nomination of Mr Ahmad Halilu as the substantive Director-General of the National Space Research and Development Agency.
Halilu was until his nomination, the acting Director-General of the agency after being the Director in charge of Strategic Space Applications in the same organisation from 2009 to 2019.
The president had on March 10, presided over the 37th virtual meeting of the Federal Executive Council at the Council Chambers of the Presidential Villa.
The Federal Ministries of Education, Power and Niger Delta Affairs made presentations at the meeting.
The council approved N500 million as variation for the completion of a road project in Delta State, 526 million dollars for power projects in Abia, Imo and Benue as well as N190.5 million for the purchase of a microscope for the University of Ibadan.
On March 11, Buhari inaugurated the headquarters building of the Niger Delta Development Commission, 25 years after the ground-breaking ceremony of the building.
The president, who virtually inaugurated the building from the Council Chamber of the State House, commended the Minister of Niger Delta Affairs, Sen. Godswill Akpabio, for his steadfastness in ending many years of renting accommodation by the commission with the attendant profligacy.
Also on March 11, the Nigerian leader met with the National Council of Traditional Rulers of Nigeria.
The council is co-chaired by the Sultan of Sokoto, Alhaji Muhammad Sa'ad Abubakar III, and the Ooni of Ife, Oba Adeyeye Enitan Ogunwusi.
On March 12, the vice-president paid an official visit to Sokoto State, where he delivered the convocation lecture of the Sokoto State University.
While in Sokoto, Osinbajo also paid a courtesy call on the Sultan of Sokoto.
Buhari concluded the week in review with a warning to would-be terrorists and bandits, targeting schools, saying that government would not allow destruction of the school system.
The president, who gave the warning in a statement by his Senior Special Assistant on Media and Publicity, Malam Garba Shehu, in Abuja on Saturday, was reacting to the gunmen's invasion of the Federal College of Forestry Mechanization, Afaka in Kaduna State early on March 12.
Buhari lauded the efforts of the Kaduna State government and early response of the military, which led to the rescue of 180 students, including eight members of staff.
He, however, directed that the other missing students must be found and returned safely to their families.
The president also commended the efforts and contributions of local intelligence in thwarting the moves of kidnappers.
Next story Vatican Says Catholic Church Can't Bless Same-Sex Unions
Previous story Estate Developer Petitions IGP and Sanwoolu Over Demolition of Richland Estate in Shapati Town

redpajama_set_name: RedPajamaCommonCrawl


As an industrial ball mill manufacturer and supplier, Click Here to Discuss or Ask a Question/Comment about Mineral Processing. Ask a Metallurgist About It.
Ball Mill for Mineral Processing,Ball Mill for beneficiation product line Ball mill is important equipment in grinding process after primary crushing.
Galena ball mill . The quality products manufactured by is Jaw Crusher, Portable Crushing Unit, Processing equipment mineral processing project.
Mineral processing equipment_ball mill_crusher_vibrating screen.Xinhai service personals are experienced professionals in mineral processing.


text:
'Grey's Anatomy': How Bokhee Could Tie Up All the Show's Loose Ends
Kay Hill
Grey's Anatomy is one of the longest-running shows on television with 16 seasons under its belt. Shonda Rhimes, Grey's Anatomy creator, and showrunner said that the show's ending depended on Ellen Pompeo. From recent events (Meredith contracting COVID-19), the show's end might be near.
While everyone expects that Meredith Grey would be the one to spill all the secrets at Grey Sloan Memorial Hospital, some fans have a different approach. Fans speculate that nurse Bokhee could potentially tie up all the show's loose ends, and the argument makes sense.
'Grey's Anatomy' follows a group of doctors at Grey Sloan Memorial Hospital
CHYLER LEIGH, JESSE WILLIAMS, KEVIN MCKIDD, KIM RAVER, SARA RAMIREZ, SANDRA OH | Danny Feld/Walt Disney Television via Getty Images
RELATED: 'Grey's Anatomy': People Love Richard So Much They Forget All the Terrible Things He's Done
Grey's Anatomy centers on the medical residents at the fictional Grey Sloan Memorial Hospital. When the show began, the residents were interns at the Seattle Grace Hospital. As the show progressed, viewers got to see the characters mature both personally and professionally.
The show's primary focus is usually placed on Meredith. Meredith's journey is shown in detail, from when she grew up to the events that brought her to Seattle Grace, now called Grey Sloan Memorial Hospital.
She is the daughter of respected surgeon Ellis Grey. Meredith and her mother didn't have the best relationship growing up. The events in her childhood were part of the reason she became a doctor. Meredith's life is portrayed as somewhat tragic as her love interest and husband, Derek Shepherd, died in a car accident.
Meredith's voiceover comes on at the beginning of every season, narrating and setting that season's tone. The voiceover is implied to be Meredith's thoughts on the hospital and those around her as written in her diary.
The show also sometimes focuses on secondary characters such as nurses and other hospital staff at Grey Sloan Memorial Hospital. One of the most prominent secondary characters is nurse Bokhee.
Who is Bokhee on 'Grey's Anatomy'?
Bokhee is a nurse at Grey Sloan Memorial Hospital who's usually seen in the operating room. She is portrayed as a calm and soft-spoken scrub nurse who doesn't speak unless spoken to. In most of her appearances on the show, Bokhee follows the doctors' conversations but never says a word.
She is, however, not afraid to speak up when the situation deems it fit. This was shown when she suggested that Jimmy Evans be given a bypass in surgery. Although not much background is provided about Bokhee, it is sometimes suggested that she has been at the hospital for quite some time. This was evidenced when Richard Webber asked if she still had his favorite music.
She also has a solid relationship with some of the head surgeons at Grey Sloan Memorial Hospital. She has been shown to help the surgeons such as Preston Burke and Cristina Yang when the situation demanded.
Bokhee is played by Kathy C An, who is a scrub nurse in real life. An has had cameos in several other shows, such as the 2001 series Six Feet and Under. She has also appeared in every season of Grey's Anatomy.
Fans think Bokhee has all the answers
As a scrub nurse, Bokhee has, without a doubt, heard and seen everything. She has been in almost every surgery conducted in the hospital.
The show's fans on Reddit seem to think that the scrub nurse could tie up all the show's loose ends. One fan even suggested that the Meredith monologues in every season were Meredith's journal entries, which Bokhee had been reading out all along.
Although many fans would like to have one episode on the show dedicated to Bokhee, others fear that it might put her at the risk of being killed off. Many gave examples of how the writers had killed off other characters, such as George (T.R Knight).


Sometimes the fastest method results in the deadliest outcome. The tale of New Zealand's Howard Miller, 39, a professional welder and Darwin Award Winner, illustrates the pitfalls of ignoring high school chemistry with a time-saving invention.
Always helpful, Miller spent his last moments helping a friend weld an exhaust pipe onto a classic Holden Kingswood sedan. He arrived at the garage shed with an experimental welding kit: an LPG bottle, similar to a propane tank, in which he had mixed both components that make up oxy-acetylene welding gas: acetylene and oxygen.
Now, that last detail should send a shiver down any welder's spine! Professional welders know that these components are kept in separate tanks because, when combined, they burn hot enough to cut metal. A tank of mixed acetylene/oxygen + no flow regulator = an accident waiting to happen.
Like a scene from Breaking Bad, Mr. Miller had unwittingly constructed a lethal explosive!
Once Miller unveiled his jury-rigged device, his friend recognized this dangerous equation and repeatedly warned that it was crazy! Finally, he high-tailed it out of the shed while Miller, undeterred by a bit of panic, attached a torch head straight onto the bottle and lit the welding tip.
Sans regulator, the flame crept back into the bottle and the inevitable explosion flattened the shed, which also contained about twenty liters of paint thinner and gasoline. The force of the explosion was so intense it shattered the windows of neighboring properties.
Needless to say, the friend is in need of a new car.
The deceased winner, a gentle and generous man, would surely be grateful to know that no one else was hurt in the fracas. And as a consolation prize, his tragic experiment will benefit others by demonstrating a potential consequence of skipping chemistry class.


text:
Q: chrome extension inline installation broken on chrome 58 We are using the inline installation to install our chrome extension. It worked (and is still working) for chrome 57 and lower. However, on the new chrome version 58 the inline installation stopped working.
I can:

*

*install the extension manually from the web store

*install the extension inline on chrome 57 and lower

This is our setup:
<!DOCTYPE html>
<html>
  <head>
    <link   href="https://chrome.google.com/webstore/detail/<id>" rel="chrome-webstore-item">
</head>
<body>
    <input type="button" value="Start" onclick="installExtension()">
<script>
    var chromeExtensionUrl  = "https://chrome.google.com/webstore/detail/<id>";
    function installExtension() {
        chrome.webstore.install(chromeExtensionUrl,
            function() {
                startCountdown();
                sessionLog("extensionInstallAccepted");
            },
            function(aErr) {
                console.log(aErr);
            });
    }
</script>
</body>
</html>

when i click the button i recieve the error:
Could not fetch data from the Chrome Web Store

Any idea how this can be fixed?
Edit:
after going through https://bugs.chromium.org/p/chromium/issues/detail?id=705283# some more info

*

*i can install the extension inline on v58 if i logout of my google account

A: Answering myself here as i'm pretty sure there is not much that can be done.
It is very likely a bug in chrome itself. The only thing you can do is not using the inline installation or require your user to log out of their google accounts before installing.
See
https://bugs.chromium.org/p/chromium/issues/detail?id=714176#
https://bugs.chromium.org/p/chromium/issues/detail?id=705283#

redpajama_set_name: RedPajamaStackExchange


text:
Homenewsbrazil proposes making crypto payments legal
Brazil proposes making crypto payments legal
Brazil could soon endorse Bitcoin as a means of payment. A recently proposed addition to the Brazilian law could allow Brazilians to use cryptocurrencies for payments. The move will also protect investors' private keys from being seized by the courts.
Brazil wants to legalize crypto payments
Paulo Martins, the Federal Deputy in Brazil, tabled a proposal submitted to the legislature in the country. If this proposal is passed, it could expand the legal use of cryptocurrencies in Brazil and enforce regulations such as allowing the courts to confiscate these assets.
The proposal has been added to Article 835 of the Civil Procedure Code. It states that while cryptocurrencies cannot be classified as currencies, they could be adopted "as a financial asset, means of exchange or payment, or instrument of access to goods and services or investment."
This bill does not guarantee that Bitcoin or any other cryptocurrency will be used as legal tender within the country. However, it shows that crypto assets will be legally recognized for investments and a wide range of other uses.
With this law, it will now be possible for cryptocurrencies like Bitcoin and Ether to be used in paying for goods and services in the country. The assets will also be used to pay the outstanding debts "in the event of offering or forced constriction."
Proposal defines court's role in crypto
The proposal also looks into the powers and the limitations adopted by Brazilian courts once cryptocurrencies have been categorized as a financial asset. Some functions the court would serve under this new law include freezing cryptocurrency exchange accounts.
However, the courts have not been given the power to confiscate the user's private keys. "The following rules will be observed: Access, by the Judiciary, to the users' private key is prohibited."
A debtor could also be required to send their cryptocurrency payments to a wallet belonging to the court to guarantee validity. The proposal does not discuss how the court will receive cryptocurrencies from self-custody wallets. However, it says that in the case of crypto stored on exchanges, these exchanges would be forced to freeze the assets belonging to the debtor.
"In the event that the debtor's assets are not located, the creditor may request the competent Court to issue an ex officio, by electronic means, to the intermediaries involved in operations with crypto-assets, so that assets corresponding to the amount executed are blocked," the proposal said.
Three Arrows Capital faces liquidations and market turmoil
Join Our Telegram channel to stay up to date on breaking news coverage The ...


Disclaimer: This article contains spoilers for Bodacious Space Pirates.
When I happened to come across the title Bodacious Space Pirates, I was definitely interested. It's pirates! In space! And they're bodacious! What's not to like? After reading both volumes, though, I found the bodaciousness of these space pirates to be rather, well … not.
The main character, Marika, is the captain of a space pirate ship. In these futuristic times, the galaxy is at peace. As a result, "space pirates" are less involved with actual piracy and more so involved with glorified performers who "attack" luxury cruises to give the rich clients the thrill of being attacked by pirates. Marika is not just a space pirate; she's a student in high school who keeps up with her studies on her days off (I guess). Being a minor also means she has a strict curfew, so every day at 9 p.m. sharp she leaves the ship and heads to … whatever planet is nearby, presumably. I kept waiting for this bit of worldbuilding to make sense (what happens if she's not near her home planet? What happens if she's actually attacked by unfriendly forces?), but it never did.
The "she's also a student" plotline serves to introduce us to the members of her (space) yacht club, a plethora of characters who have some jobs to do in the plot later, but ultimately don't get enough screen time or distinct purpose to justify their existence. Out of eight or nine characters, only two or three have an actual plot-driven purpose. Because there's so many of them floating around, it's hard to tell them apart enough to be sure.
After some confusing meandering through piracy and yachting, we finally get to the main plot where we are introduced to a boy named Kanata. Kanata, while being chased by military-esque forces that might actually be threatening, is "kidnapped" by Marika. It turns out that their fathers (the previous captain of the space pirate ship and a famous hyperspace scientist, respectively) knew each other, so she offers him shelter from the somewhat unfriendly people chasing him. Kanata's goal is to choose his own path in life, which—spoiler—ends up being exactly what his father wanted him to do.
With the whole "dangerous plot put on hold because of a curfew" thing and the "piracy is just a stage" thing, it's hard to get a sense of actual danger from the unfriendlies chasing them. They blow up her house, but she wasn't anywhere near it at the time (it's played more for laughs). To thwart them, the members of the yacht club end up running hacker rings around this supposedly powerful supercorporation. Since nothing ever feels really dangerous, the villains feel Team Rocket-esque; thus, the actions of the kids outwitting them doesn't feel spectacular either.
Meanwhile, Kanata and Marika are tracking down the MacGuffin that will let him follow in his father's footsteps. This involves a puzzle connected to their fathers and their fathers' old friends (who are never mentioned again). The climax comes as the two groups conflict (it's hard to call it an actual fight) and Kanata slips away to poetically go see the color of the source of hyperspace. This has the more practical effect of opening up a new hyperspace lane. Hyperspace is open to anyone that has a ship, so it's still unclear as to why the supercorp was trying to get their hands on Kanata and his MacGuffin so relentlessly that it ends up ruining their company.
"Unclear" is a description applying to both volumes of the series. It's likely this series, only two volumes, was cancelled before the writer intended, which often does cause problems with pacing toward the end. The scope of the worldbuilding and plot here was way too ambitious for a series of even a longer size. If a series needs more than two volumes to explain some of its most basic premises, there's a problem with the storytelling. I wonder if confusion with its original audience is why it ended after only two volumes.
That's not to say it's all bad, though. If you're in the mood for a lighter, low-tension read, this is definitely going to fit the bill. The series does succeed in capturing the romance and free-spirited nature that readers associate with fictional pirates. Furthermore, the character moments—when we get them—are pretty nice. There's a few pages dedicated to a budding friendship between Kanata and one of the clone princesses that I really wish they would've dug deeper in to.
It can be tricky to take something that's a long light novel series and turn it into a short film or manga, but it can be done. Cutie Honey a Go Go! and The Count of Monte Cristo are two adaptations that work very well within their page constraints. What worked well with those is that the writers were able to figure out what kind of story they wanted to tell (an origin story for Cutie Honey a Go Go!, and a tale of revenge versus forgiveness for The Count of Monte Cristo) without letting the excess details bog it down. What kind of story was Bodacious Space Pirates trying to tell? I'm still not sure.


text:
Creating Emerging Markets
Creating Emerging Markets→
Video Clips→
This library of video clips enables educators and others to search for relevant interview clips by subject, industry, country, or any combination of all three. Users can also search by name to find all clips from a specific interviewee. The clips may be downloaded for academic research, teaching, and other educational use. Any other use, including commercial reuse, web publishing, or other forms of redistribution, requires permission of Harvard Business School. These clips are now being used in a new series of Harvard Business School cases on emerging markets. The first two deal with corruption and innovation. Listen to our Cold Call podcast episode on the corruption case.
Filter Results: (20) Arrow Down
Filter Results: (20) Arrow Down Arrow Up
Fundraising →
Adi Godrej
Adi Godrej, Chair of the India-based Godrej Group, discusses the decision to deploy the cash generated by the group's businesses to acquire consumer products companies in Africa, Asia and Latin America.
Susana Balbo, owner and chief winemaker of Argentina-based Susana Balbo Wines, discusses overcoming the obstacles that are some of the biggest limitations SMEs in Argentina face when trying to gain access to capital.
Hakeem Belo-Osagie
Hakeem Belo-Osagie, former chairman of Nigeria-based United Bank for Africa, talks about his ability to attract U.S. investors even during a time of military rule in Nigeria.
María Emilia Correa
María Emilia Correa, co-founder of Sistema B, a Latin American organization promoting B Corporations and sustainability, discusses the sources of funding for purpose-driven companies in Latin America.
Hubert Danso
Hubert Danso, Chair of the South-African based financial services group Africa Investor, explains how in West Africa in the 2010s government officials increasingly have a private sector background and are interested in engaging in infrastructure-related investments.
Runa Khan
Runa Khan, Founder and Executive Director of Friendship, an NGO supporting some of the poorest regions in Bangladesh, outlines her development of Friendship International as a means to increase funding and improve talent acquisition.
Rahmi M. Koç
Rahmi Koç, former Chair of of Koç Holding, the largest diversified business group in Turkey, relates how difficult it is to bring foreign investments to Turkey, in part due to its location in a volatile region of the world.
Erling Lorentzen
Erling Lorentzen, former head of Aracruz Celulose, a leading Brazilan manufacturer of pulp and paper, describes the difficulty of gaining financing from the American banks Morgan Stanley and Goldman Sachs during times of inflation and political instability in Brazil.
Erling Lorentzen, former head of Aracruz Celulose, a leading Brazilan manufacturer of pulp and paper, describes his efforts to gain financing from the World Bank and the International Finance Corporation.
Savannah Maziya
Savannah Maziya, the founder of South Africa-based Bunengi Holdings, a project development, management and investment company that operates across Africa in infrastructure, natural resources and financial services, describes the high-risk, high-reward nature of investing in Africa in the areas of agriculture, infrastructure, and consumer goods.
Savannah Maziya, the founder of South Africa-based Bunengi Holdings, a project development, management and investment company that operates across Africa in infrastructure, natural resources and financial services, describes attracting international investment despite continuing reputational liabilities of being based in Africa.
Sunil Bharti Mittal
Sunil Bharti Mittal, Founder and Chairman of Bharti Enterprises, explains the capital necessary to create a mobile service business and the power of modularity.
Connell House 302B
Phone: 1.617.998.1812 Email: cem@hbs.edu


text:
Home> Events> Province Events> Guangdong> Overview
Guangdong province
Guangdong province is located at the southernmost tip of mainland China. Neighboring the South China Sea, Hong Kong and Macao, it's a pioneer of China's reform and opening up, and covers an area of 17.97 million square kilometers. Guangdong has 21 prefecture-level cities (including two sub-provincial cities), and 119 county-level administrative regions (60 municipal districts, 20 county-level cities, 36 counties, and 3 autonomous counties). Up to the end of 2016, the resident population of Guangdong Province stood at 109.99 million.
As one of the earliest trade ports in Chinese history and the starting point of the famous "Maritime Silk Road", Guangdong has a long history of commerce. Since reforming and opening up for over 30 years, it took advantage of neighboring Hong Kong and Macao and seized a historical opportunity. It expanded itself further, and actively participated in international competition and cooperation. Guangdong has now become one of the most prosperous and economically dynamic regions in China. In 2016, its total GDP was 7951.21 billion yuan, ranking first in the whole country.
Guangdong has seized opportunities in global industrial transfer to promote industrial development and industrialization, and establish an integrated industrial system. At present, it has nine pillar industries, namely electronic information, electrical machinery, petrochemical, textiles and garments, food and beverage, building material, papermaking, medicine and auto industry. With the rapid growth of shipbuilding, rail transportation equipment, nuclear and wind power equipment and the aircraft industry, it has established an advanced manufacturing industrial system. Modern service industries such as logistics, exhibition, finance, information and tourism are flourishing. Canton Fair, China Hi-Tech Fair, China International SME Fair, Guangdong 21st Century Maritime Silk Road International Expo and other large international exhibitions enjoy a great reputation within and beyond.
Guangdong has the most favorable investment environment in China. With advanced infrastructure, developed traffic and communication, convenient customs clearance, a highly streamlined and integrated market system, it has fully gathered talents, capital and other production factors. Important platforms such as Guangzhou Nansha, Shenzhen Qianhai, Zhuhai Hengqin, Sino-Singapore Guangzhou Knowledge City and Sino-German Industrial Service Zone have developed rapidly. The regional economic integration of Guangdong, Hong Kong and Macao as well as the construction of the Pearl River Delta world-class city cluster are accelerating. Twelve new areas in east, west and north Guangdong have made full preparations to provide diversified, all-round and high-level platforms for investment from multinational companies.
Guangdong is also an important home to the Lingnan Culture, and has a unique style in language, customs, living habits, history and culture. In terms of food culture, it has Cantonese cuisine, one of China's four major cuisines. Its local operas include Cantonese and Chaozhou Opera, two of the ten major local operas in China, and dialects include Cantonese and Hakka, of which it is the center, and Hokkien.


Each place that we visit is fun and informative; however, as a club, we have a bad habit that we cannot seem to break. We always tend to get lost. For instance, the time we took what was supposed to be a fun trip to Griffis Sculpture Park.
Every fall semester, Hilbert's Office of Mission Integration and Campus Ministry schedule a week full of activities for students called St. Francis Week, created to bring us back to the Franciscan values that the college was founded on.
When an individual chooses to attend Hilbert college, one of the decisions they must make is whether they want to commute or live on campus.
Following a brutal blow to the liver, the career of the New England Patriots starting quarterback Drew Bledsoe was in jeopardy.
On October 15, Hilbert College worked together with all of the college's clubs to put together a fantastic Halloween party for kids in the community.
Apple has just announced the newest iPhone, the iPhone 8 and the iPhone X, which marks the tenth anniversary for the iPhone.


text:
Мокеґуа (; ) — невеликий департамент у південній частині Перу, який простягається від берега Тихого океану до високогір'їв. Назва регіону кечуанського походження і означає «тихе місце». Адміністративним центром департаменту є місто Мокеґуа, але порт-місто Іло є більш комерційно активний.

Адміністративний поділ

Примітки

Регіони Перу

redpajama_set_name: RedPajamaWikipedia


text:
A Nation Must Think Before it Acts U.S. Multilateralism, Left and Right
U.S. Multilateralism, Left and Right
Michla Pomerance
Home / Articles / U.S. Multilateralism, Left and Right
In the immediate aftermath of the catastrophes of September 11, it was easy to forget the earlier internal and transatlantic debate over how the United States should engage with the world. That debate, increasingly partisan and strident, raged during the previous decade and reached a crescendo after George W. Bush took office. When America's vulnerability was revealed in September, the luxury of deciding whether, when, and how the United States should grant succor to others gave way before the compelling need to galvanize other countries to come to its aid. The United States appeared, uncustomarily, to be basking in the warm, near-unanimous embrace of multilateral and regional organs in which it had often found itself isolated and even scorned in the past. Not surprisingly, however, the preexisting clash of unilateral and multilateral perspectives, so far from having evaporated, reemerged, and members of both camps saw in the events of September 11 a vindication of their own past views and a prescription for the future.


Could anyone please help me to identify who ALEXANDER T HUSSEY born 22 Aug 1827 and died 15 Nov 1851 was.
He married 17 Aug 1851 in Milton,Strafford,NH Elizabeth Jane Chamberlain.
It appears by the dates that it was a short marriage as ALEXANDER died the same year.
The only person I found in which the dates are similiar is an individual who lived in Nantucket,MA occupation seaman.The 1850 census printout on Ancestry.com has him listed as ALEXANDER P,but it could almost be a T.
The above information of b/m/d came from a cemetery census at the Milton Mills,NH library.
Thanks for taking the time to read my query.


The Underdog is a patented non-invasive, low-risk cooling system designed to gently cool your balls. It uses an ice pack with a novel wedge shape and precision insulation system to deliver the optimal amount of cooling. You can use it whenever driving or sitting.
Getting pregnant isn't always easy. And your offspring are the most important investment of your life. Why not use everything at your disposal including The Underdog to give yourself the best chances of getting pregnant faster and healthier?
To optimize your fertility, you want to maximize your sperm quantity and optimize your sperm quality. This means following a healthy lifestyle: eating better taking care of your body, and considering male fertility supplements. It also means keeping your testicles cool so they're at the optimal temperature for sperm production.
Male fertility has been plummeting among men in the western world. An earth shaking 2017 study found that sperm counts are down more than 50% in the past 40 years. An estimated 15% of couples now face infertility challenges, with a male factor contributing half of the time.
While there are a number of possible factors for male subfertility and male infertility, scientific studies suggest a correlation between reduced viable sperm count and overheat due to sitting, driving, and obesity.
A 2008 Vanderbilt study found adults on-average spend nearly 8 hours sitting, and a recent 2017 survey of those employed full-time found an average of 12 hours were spent sitting per day.
Since 1960, jobs requiring physical activity have dropped from 50 percent to just 20 percent, and our lives have become more sedentary. This corresponds with the drop in sperm count over the last 40 years. Coincidence?
Our scrotum hangs outside the body for a very cool reason: sperm formation is extremely sensitive to testicular overheat. The optimal testicles temperature for sperm formation is 2-3 degrees C below body temperature.
But we overheat our testicles by sitting or driving for longer than 20 minutes, wearing our normal clothing, and underlying medical conditions like obesity or varicocele. These defeat our natural cooling systems, causing scrotal temperature to rise into the danger zone harmful to sperm production.
The Underdog is a simple, non-invasive, low-risk cooling device that keeps the scrotum in an optimal temperature range by counteracting temperature rise when sitting. It uses a gently contoured wedge-shaped ice pack that fits any body shape and a soft sleeve with engineered thermal insulation. The Underdog slips quickly between your seat and your pants to provide a precise amount of cooling and keeps your scrotum at the optimal temperature for sperm production.
And best of all, you can wear your normal clothes.
It's easy to make The Underdog a part of your everyday routine.
See the Detailed User Guide for more detailed instructions.
The ice pack creates the perfect contoured wedge shape to adapt to every body shape and seating surface. When sleeved, simply move it towards you until you've made a comfortable amount of contact with your pants and scrotum.
The kit comes with 2 ice packs so you're never without cooling.
Each ice pack lasts for 3-4 hours and will re-freeze in 2-3 hours in a standard freezer.
The sleeve uses a precisely engineered double-insulation technique for just the right amount of cooling. The sleeve is soft and comfortable, and the cooling effect is barely noticeable.
A crisp magnet closure makes for easy swapping of ice packs.
The discreet, masculine black color nearly disappears when in use.
And importantly, the sleeve is impermeable to the water vapor that causes condensation. So you won't get wet pants or a wet chair.


text:
Kevin Puts is a Pulitzer winning composer-in-residence at the Fort Worth Symphony Orchestra, as well as a composition professor at the Peabody Institute of Music. Puts has written numerous pieces, all with the same idea in mind, the idea of using music to narrate a story to the audience. This storytelling trait was especially notable in his first opera, Silent Night, a compelling work centered around the Christmas of 1914 and the temporary truce between Scottish, French, and German soldiers.[1] Puts composed several other pieces in a similar manner, such as Symphony No. 2 and The City. These pieces not only tell a story, but reflect on real life, impactful events that have shaken people to their core. Music can have an enormous power and Puts utilizes that power to break politically established boundaries, create comfort for his audience, as well as to pour his own deepest thoughts and emotions in his music.
Silent Night's storyline is one that remains relevant today. It is a story about unification under the least expected circumstances: in the midst of a war. Today, a different war, one of ideas, is being waged in the United States, as there is "no question we live in divisive times".[2] If we took a cue from Silent Night and put our opinions aside to all come together, then we could see that every "soldier" in today's war has fundamental similarities: family, loved ones, and a desire to live a peaceful and fulfilling life. Therefore, it's clear how this opera's relevancy extends beyond its time and into the world we currently live in. Librettist, Mark Campbell, claims "that war is not sustainable once you know your enemy as another human being. If you know that that person you are going to shoot has a daughter or a wife at home, the war machine will not work."[3] Drawing on that notion, Puts used this foundation as a means to create a timeless piece that serves as proof that all human beings are fundamentally the same and should be treated equally.
Puts composes not only for the purpose of creating important messages of equality and humanization, but also in order to express his own pain and emotions caused by real life events. This is seen through his "Symphony No. 2" composed shortly after the September 11th attacks. Composing a symphony was the best way for him to express his pain, as through symphony "we get a sense of the journey, where we've been, how far we've come.".[4] Therefore, after the horrendous events of 9/11, he felt the need to provide the audience and "comfort"[5] through his music. "Symphony No. 2" was Puts' way of coping with the event that shocked the nation. A similar occurrence happened when he was commissioned by the Baltimore Symphony Orchestra to compose a piece about Baltimore, which he aptly named The City. What was initially supposed to be a multi-media work to serve as a "tour guide"[6] of Baltimore, quickly turned into something completely different following the death of Freddie Gray and the turmoil in the city that resulted. Puts thus composed a piece that does not ignore these events, but instead provides "a potential of healing and of mutual understanding"[7], a composition to help unite the city and foster peace.
Kevin Puts is only one of many composers who has expressed politics, nationalism and personal life experiences through music. The most notable may be Dmitri Shostakovich who suffered under the oppression of the Soviet Regime. It is often said that "his music, more than most, has to be contextualized in terms of the harrowing narrative of his life."[8] Another repressed composer, Olivier Messiaen, wrote his Quartet for the End of Time when he was a prisoner of a war camp in Germany. Even Beethoven put his own political attitudes into his music when he removed the initial dedication to Napoleon Bonaparte in his Symphony No. 3. What all of these composers have in common is that they interwove their attitudes and feelings into their music to create compelling, relevant pieces the audience can relate to. In this we see the beauty and the power that music has. Music provides a statement without words that everyone can understand. The genius of Puts is seen through exactly this- the uncompromising, honest voice he provides in his compositions.
By Ivana Biliskov
Harris, Kyle. "Composer Kevin Puts on 9/11, the "Tragedy" of Trump, and Beethoven Envy." Interview by Kyle Harris. Westword, November 08, 2017. Accessed March 04, 2019. https://www.westword.com/music/composer-kevin-puts-on-9-11-the-tragedy-of-trump-and-beethoven-envy-8736810.
Huizenga, Tom. "Hear The Opera That Just Won The Pulitzer." NPR. April 23, 2012. Accessed March 04, 2019.
https://www.npr.org/2012/04/23/151211677/hear-the-opera-that-just-won-the-pulitzer.
Mooney, Tom. ""Silent Night" at Wexford: How Opera Woke Up to the Great War." Studies: An Irish Quarterly Review 104, no. 414 (2015): 185-93. http://0-www.jstor.org.lib.utep.edu/stable/24347762.
Puts, Kevin. "A Pulitzer Winner Asks: Why Write Symphonies?" NPR. August 05, 2013. Accessed March 04, 2019. https://www.npr.org/sections/deceptivecadence/2013/08/05/208280751/a-pulitzer-winner-asks-why-write-symphonies.
Puts, Kevin. "Kevin Puts talks about "The City"." YouTube video, 4:54. April 22, 2016. https://www.youtube.com/watch?v=rfaUfHYnssY
Rabinowitz, Peter J. "The Rhetoric of Reference; Or, Shostakovich's Ghost Quartet." Narrative 15, no. 2 (2007): 239-56. http://0-www.jstor.org.lib.utep.edu/stable/30219253.
Tischler, Gary. "Kevin Puts on His Pulitzer-Winning Opera: 'Silent Night'." The Georgetowner. November 10, 2018. Accessed March 04, 2019. https://georgetowner.com/articles/2018/11/08/kevin-puts-pulitzer-winning-opera-silent-night/.
[1] Tom Huizenga, "Hear The Opera That Just Won The Pulitzer," NPR, April 23, 2012, Accessed March 04, 2019,
[2] Gary Tischler, "Kevin Puts on His Pulitzer-Winning Opera: 'Silent Night'," The Georgetowner, November 10, 2018, Accessed March 04, 2019, https://georgetowner.com/articles/2018/11/08/kevin-puts-pulitzer-winning-opera-silent-night/.
[3] Tom Mooney, ""Silent Night" at Wexford: How Opera Woke Up to the Great War," Studies: An Irish Quarterly Review 104, no. 414 (2015): 192, http://0-www.jstor.org.lib.utep.edu/stable/24347762.
[4] Kevin Puts, "A Pulitzer Winner Asks: Why Write Symphonies?," NPR, August 05, 2013, Accessed March 04, 2019, https://www.npr.org/sections/deceptivecadence/2013/08/05/208280751/a-pulitzer-winner-asks-why-write-symphonies.
[5] Kyle Harris, "Composer Kevin Puts on 9/11, the "Tragedy" of Trump, and Beethoven Envy," Interview by Kyle Harris, Westword, November 08, 2017, Accessed March 04, 2019, https://www.westword.com/music/composer-kevin-puts-on-9-11-the-tragedy-of-trump-and-beethoven-envy-8736810.
[6] Kevin Puts, "Kevin Puts talks about "The City"," YouTube video, 4:54, April 22, 2016, https://www.youtube.com/watch?v=rfaUfHYnssY.
[8] Peter J. Rabinowitz, "The Rhetoric of Reference; Or, Shostakovich's Ghost Quartet," Narrative 15, no. 2 (2007): 241, http://0-www.jstor.org.lib.utep.edu/stable/30219253.
Published by ibiliskov123
View all posts by ibiliskov123
contemporary culture
Partita for 8 voices- Allemande
Traditional Classical Music Through A Contemporary Lens


text:
Prevalence Data on Different Forms of Violence against Women:
Lifetime Physical and/or Sexual Intimate Partner Violence :33.3 % (1)
Physical and/or Sexual Intimate Partner Violence in the last 12 months : 18.3 % (2)
Lifetime Non-Partner Sexual Violence : Official National Statistics Not Available
Child Marriage :23.4 % (3)
Reports submitted by UN Human Rights Bodies:
Report of the Special Rapporteur on Violence against Women, its Causes and Consequences
Concluding observations of the Committee on the Elimination of Discrimination against Women (CEDAW)
Report of the Working Group on the Universal Periodic Review (UPR)
Gender Equality Indexes:
Gender Inequality Index Rank :89 (4)
Global Gender Gap Index Rank :39 (5)
Policies 14
National action plan specific to violence against women 2
Inclusion of violence against women in other national plan/strategy 11
Social services 12
Psycho-social counselling 3
Longer term support (Education, Employment, Housing and Financial) 1
Prevention 22
Awareness-raising /Campaigns 10
Trafficking 7
Colombia Search Data
Law Against Femicide
Colombia | 2015
Form of Violence : Femicide/Feminicide, Sexual violence
Ley 1719 del 18 de Junio de 2014
Informe de Seguimiento CONPES SOCIAL 161 "Equidad de Género para las Mujeres" Eje 6: Plan Integral para Garantizar a las Mujeres una Vida Libre de Violencias
Type of Measure : Monitoring and Evaluation > Policies
Programa de Garantías de la Labor de Lideresas y Defensoras de Derechos Humanos
Form of Violence : Violence against women and girls, Sexual violence
Ley 1654 de 2013 (Restauracion de la Fiscalia General de la Nacion)
Form of Violence : Domestic violence/Intimate partner violence, Sexual violence
Article 44 of the Constitution
Línea 155 de Orientación a Mujeres Víctimas de Violencia
Type of Measure : Social services > Hotline/Helpline
(1) Proportion of ever-partnered women aged 15-49 years experiencing intimate partner physical and/or sexual violence at least once in their lifetime. Source: Bott S, Guedes A, Ruiz-Celis AP, Mendoza JA. Intimate partner violence in the Americas: A systematic review and reanalysis of national prevalence estimates. Based on data from: Asociación Probienestar de la Familia Colombiana, Profamilia, 2016. Encuesta Nacional de Demografía y Salud 2015. Profamilia. Bogota, Colombia.
(2) Proportion of ever-partnered women aged 15-49 years experiencing intimate partner physical and/or sexual violence in the last 12 months. Source: Bott S, Guedes A, Ruiz-Celis AP, Mendoza JA. Intimate partner violence in the Americas: A systematic review and reanalysis of national prevalence estimates. Based on data from: Asociación Probienestar de la Familia Colombiana, Profamilia, 2016. Encuesta Nacional de Demografía y Salud 2015. Profamilia. Bogota, Colombia.
(3) Percentage of women aged 20 to 24 years who were first married or in union before age 18. Source: UNICEF SDG Target 5.3.1 global database 2018, based on Demographic and Health Surveys (DHS), Multiple Indicator Cluster Surveys (MICS) and other nationally representative surveys.
(4) The Gender Inequality Index is a composite measure reflecting inequality between women and men in three different dimensions: reproductive health (maternal mortality ratio and adolescent birth rate), empowerment (share of parliamentary seats held by women and share of population with at least some secondary education), and labour market participation (labour force participation rate). Source: United Nations Development Programme, Human Development Report 2016.
(5) The Global Gender Gap Index benchmarks national gender gaps on economic, political, education and health criteria. Source: World Economic Forum, the Global Gender Gap Report 2016.


Max diff block lines reached; 331/5017 bytes (6.60%) of diff not shown.
Max diff block lines reached; 1002/4929 bytes (20.33%) of diff not shown.
Max diff block lines reached; 330/5040 bytes (6.55%) of diff not shown.
Max diff block lines reached; 315/4801 bytes (6.56%) of diff not shown.
Max diff block lines reached; 13676/18906 bytes (72.34%) of diff not shown.


text:
Lydia Zuraw
My name is Lydia and I'm a digital journalist based in Washington, D.C.
As a producer for Kaiser Health News and California Healthline (produced by Kaiser Health News), I wear many hats. I prepare stories for online publication and help maintain both websites. I create data visualizations, interactive elements and illustrations; prepare photos and multimedia packages for publishing partners; and assist in newsletter production.
In 2018, I was part of the KHN team to win a NIHCM Digital Media Award and a National Press Club award for "The Orphan Drug Machine." The multimedia series examined how an FDA program designed to help patients with rare diseases get access to new medicines has been used to increase profits on existing drugs.
I was previously the Washington, D.C., correspondent for Food Safety News and I've also worked for NPR's science desk. I have a bachelor's degree from Northwestern University's Medill School of Journalism.
© 2021	Lydia Zuraw


Overall, given a lot of experience in various settings. Learned management skills, working with little or no supervision. Working with a variety of employees and patients. Hardest part of the job, keeping supervisors satisfied. Most enjoyable – working with the patients.