diff --git a/.gitignore b/.gitignore index 45c1505..865a6ba 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ _site .sass-cache .jekyll-metadata +.DS_Store +Gemfile.lock \ No newline at end of file diff --git a/2016_brainhack_proceedings.bib b/2016_brainhack_proceedings.bib new file mode 100644 index 0000000..1405745 --- /dev/null +++ b/2016_brainhack_proceedings.bib @@ -0,0 +1,226 @@ +@article{10.3897/rio.3.e12095, + author = {Horea-Ioan Ioanas and Bechara Saab and Markus Rudin}, + title = {Gentoo Linux for Neuroscience - a replicable, flexible, scalable, rolling-release environment that provides direct access to development software}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e12095}, + publisher = {Pensoft Publishers}, + abstract = {},, + issn = {}, + pages = {e12095}, + URL = {https://doi.org/10.3897/rio.3.e12095}, + eprint = {https://doi.org/10.3897/rio.3.e12095}, + journal = {Research Ideas and Outcomes} +} + +@article{10.3897/rio.3.e13395, + author = {Kaori L Ito and Julia M Anglin and Hosung Kim and Sook-Lei Liew}, + title = {Semi-automated Robust Quantification of Lesions (SRQL) Toolbox}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e13395}, + publisher = {Pensoft Publishers}, + abstract = {Quantifying lesions in a reliable manner is fundamental for studying the effects of neuroanatomical changes related to recovery in the post-stroke brain. However, the wide variability in lesion characteristics across individuals makes manual lesion segmentation a challenging and often subjective process. This often makes it difficult to combine stroke lesion data across multiple research sites, due to subjective differences in how lesions may be defined. Thus, we developed the Semi-automated Robust Quantification of Lesions (SRQL; https://github.com/npnl/SRQL; DOI: 10.5281/zenodo.557114) Toolbox that performs several analysis steps: 1) a white matter intensity correction that removes healthy white matter voxels from the lesion mask, thereby making lesions slightly more robust to subjective errors; 2) an automated report of descriptive statistics on lesions for simplified comparison between or across groups, and 3) an option to perform analyses in both native and standard space to facilitate analyses in either space. Here, we describe the methods implemented in the toolbox.}, + issn = {}, + pages = {e13395}, + URL = {https://doi.org/10.3897/rio.3.e13395}, + eprint = {https://doi.org/10.3897/rio.3.e13395}, + journal = {Research Ideas and Outcomes} +} + + +@article{10.3897/rio.3.e13726, + author = {Erin Dickie and Steven M Hodge and R. Cameron Craddock and Jean-Baptiste Poline and David N. Kennedy}, + title = {Tools Matter: Comparison of Two Surface Analysis Tools Applied to the ABIDE Dataset}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e13726}, + publisher = {Pensoft Publishers}, + abstract = {We examine the similarity of outputs from Freesurfer version 5.1, Freesurfer version 5.3 and ANTS for the ABIDEI dataset.}, + issn = {}, + pages = {e13726}, + URL = {https://doi.org/10.3897/rio.3.e13726}, + eprint = {https://doi.org/10.3897/rio.3.e13726}, + journal = {Research Ideas and Outcomes} +} + +@article{10.3897/rio.3.e13394, + author = {Daniel Peterson}, + title = {Streamlining the Process of 3D Printing a Brain From a Structural MRI}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e13394}, + publisher = {Pensoft Publishers}, + abstract = {Currently, the process of obtaining a 3D model from a structural MRI requires specialized knowlege and skills. This is not due to the fundamental difficulty and complexity of the process, but is a result of the fact that the neccessary tools were developed for and by neuroimaging researchers. This project describes a publically available utility implemented as a Docker image that takes a structural MRI as input, and gives files for 3D printing as output, along with a rendered image of the surface.}, + issn = {}, + pages = {e13394}, + URL = {https://doi.org/10.3897/rio.3.e13394}, + eprint = {https://doi.org/10.3897/rio.3.e13394}, + journal = {Research Ideas and Outcomes} +} + +@article{10.3897/rio.3.e13391, + author = {Richard AI Bethlehem and Marcel Falkiewicz and Jan Freyberg and Owen E Parsons and Seyedeh-Rezvan Farahibozorg and Charlotte Pretzsch and Bjoern Soergel and Daniel S Margulies}, + title = {Gradients of cortical hierarchy in Autism}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e13391}, + publisher = {Pensoft Publishers}, + abstract = {Autism is a developmental condition associated with altered functional connectivity. We propose to re-frame the functional connectivity alterations in terms of gradients that capture the functional hierarchy of cortical processing from sensory to default-mode network regions. We hypothesized that this hierarchy will be altered in ASD. To test that, we compared the scale of gradients in people with autism and healthy controls. The present results do not support our hypothesis. There are two alternative implications: either the processing hierarchies are preserved in autism or the scale of the gradients does not capture them. In the future we will attempt to settle which alternative is more likely.}, + issn = {}, + pages = {e13391}, + URL = {https://doi.org/10.3897/rio.3.e13391}, + eprint = {https://doi.org/10.3897/rio.3.e13391}, + journal = {Research Ideas and Outcomes} +} + +@article{10.3897/rio.3.e12733, + author = {Swati Rane and Eshin Jolly and Anne Park and Hojin Jang and Cameron Craddock}, + title = {Developing predictive imaging biomarkers using whole-brain classifiers: Application to the ABIDE I dataset}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e12733}, + publisher = {Pensoft Publishers}, + abstract = {We designed a modular machine learning program that uses functional magnetic resonance imaging (fMRI) data in order to distinguish individuals with autism spectrum disorders from neurodevelopmentally normal individuals. Data was selected from the Autism Brain Imaging Dataset Exchange (ABIDE) I Preprocessed Dataset.}, + issn = {}, + pages = {e12733}, + URL = {https://doi.org/10.3897/rio.3.e12733}, + eprint = {https://doi.org/10.3897/rio.3.e12733}, + journal = {Research Ideas and Outcomes} +} + +@article{10.3897/rio.3.e12641, + author = {Jingyuan Chen and Deepika Bagga}, + title = {Noise paradoxically increases reliability metrics}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e12641}, + publisher = {Pensoft Publishers}, + abstract = {Lower signal to noise ratio (SNR) of the scanning environment is generally considered to exert a negative impact on the inter-/intra-subject consistency of resting state functional connectivity (RSFC) metrics. Here, we show through simulations that this assumption is not always true - poor SNR may paradoxically increase reliability metrics of RSFC under certain circumstances, due to the reduced senstivity to dynamic changes in brain connectivity.}, + issn = {}, + pages = {e12641}, + URL = {https://doi.org/10.3897/rio.3.e12641}, + eprint = {https://doi.org/10.3897/rio.3.e12641}, + journal = {Research Ideas and Outcomes} +} + +@article{10.3897/rio.3.e12569, + author = {Julia Leonard and John Flournoy and Christine Paula Lewis-de los Angeles and Kirstie Whitaker}, + title = {How much motion is too much motion? Determining motion thresholds by sample size for reproducibility in developmental resting-state MRI}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e12569}, + publisher = {Pensoft Publishers}, + abstract = {A constant problem developmental neuroimagers face is in-scanner head motion. Children move more than adults and this has led to concerns that developmental changes in resting-state connectivity measures may be artefactual. Furthermore, children are challenging to recruit into studies and therefore researchers have tended to take a permissive stance when setting exclusion criteria on head motion. The literature is not clear regarding our central question: How much motion is too much? Here, we systematically examine the effects of multiple motion exclusion criteria at different sample sizes and age ranges in a large openly available developmental cohort (ABIDE; http://preprocessed-connectomes-project.org/abide). We checked 1) the reliability of resting-state functional magnetic resonance imaging (rs-fMRI) pairwise connectivity measures across the brain and 2) the accuracy with which we can separate participants with autism spectrum disorder from typically developing controls based on their rs-fMRI scans using machine learning. We find that reliability on average is primarily sensitive to the number of participants considered, but that increasingly permissive motion thresholds lower case-control prediction accuracy for all sample sizes.}, + issn = {}, + pages = {e12569}, + URL = {https://doi.org/10.3897/rio.3.e12569}, + eprint = {https://doi.org/10.3897/rio.3.e12569}, + journal = {Research Ideas and Outcomes} +} + +@article{10.3897/rio.3.e12394, + author = {Kesshi M Jordan and Anisha Keshavan and Maria Luisa Mandelli and Roland G Henry}, + title = {Cluster-viz: A Tractography QC Tool}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e12394}, + publisher = {Pensoft Publishers}, + abstract = {Cluster-viz is a web application that provides a platform for cluster-based interactive quality-control of tractography algorithm outputs. This tool facilitates the creation of white matter fascicle models by employing a cluster-based approach to allow the user to select streamline bundles for inclusion/exclusion in the final fascicle model. This project was started at the 2016 Neurohackweek and BrainHack events and is still under development. We welcome contributions to the Cluster-viz github repository (https://github.com/kesshijordan/Cluster-viz).}, + issn = {}, + pages = {e12394}, + URL = {https://doi.org/10.3897/rio.3.e12394}, + eprint = {https://doi.org/10.3897/rio.3.e12394}, + journal = {Research Ideas and Outcomes} +} + +@article{10.3897/rio.3.e12368, + author = {Camille Maumet and Thomas E. Nichols}, + title = {Generating and reporting peak and cluster tables for voxel-wise inference in FSL}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e12368}, + publisher = {Pensoft Publishers}, + abstract = {Mass universities analyses, in which a statistical test is performed at each voxel in the brain, is the most widespread approach to analyzing task-evoked functional Magnetic Resonance Imaging (fMRI) data. Such analyses identify the brain areas that are significantly activated in response to a given stimulus. In the literature, the significant areas are usually summarised by providing a table, listing, for each significant region, the 3D positions of the local maxima along with corresponding statistical values. This tabular output is provided by all the major as dsa dneuroimaging software packages including SPM, FSL and AFNI. Yet, in the HTML report generated by FSL, peak and cluster tables are only provided for one type of inference (cluster-wise inference) but not when a voxel-wise threshold is specified. In this project, we proposed an update for FSL to generate and report peak and cluster tables for voxel-wise inferences.}, + issn = {}, + pages = {e12368}, + URL = {https://doi.org/10.3897/rio.3.e12368}, + eprint = {https://doi.org/10.3897/rio.3.e12368}, + journal = {Research Ideas and Outcomes} +} + +@article{10.3897/rio.3.e12358, + author = {Anisha Keshavan and Arno Klein and Ben Cipollini}, + title = {Interactive online brain shape visualization}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e12358}, + publisher = {Pensoft Publishers}, + abstract = {The open-source Mindboggle package improves the labeling and morphometry estimates of brain imaging data. At the 2015 Brainhack event, we developed a web-based, interactive, brain shape visualization of Mindboggle outputs. The application links a 3D brain visualization with boxplots that describe shape measures across a selected cortical label. The code is freely available at http://www.github.com/akeshavan/roygbiv and a demo is online at http://roygbiv.mindboggle.info.}, + issn = {}, + pages = {e12358}, + URL = {https://doi.org/10.3897/rio.3.e12358}, + eprint = {https://doi.org/10.3897/rio.3.e12358}, + journal = {Research Ideas and Outcomes} +} + +@article{10.3897/rio.3.e12346, + author = {Julia M Huntenburg and Konrad Wagstyl and Christopher J Steele and Thomas Funck and Richard A.I. Bethlehem and Ophélie Foubet and Benoit Larrat and Victor Borrell and Pierre-Louis Bazin}, + title = {Laminar Python: tools for cortical depth-resolved analysis of high-resolution brain imaging data in Python}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e12346}, + publisher = {Pensoft Publishers}, + abstract = {Increasingly available high-resolution brain imaging data require specialized processing tools that can leverage their anatomical detail and handle their size. Here, we present user-friendly Python tools for cortical depth resolved analysis in such data. Our implementation is based on the CBS High-Res Brain Processing framework, and aims to make high-resolution data processing tools available to the broader community.}, + issn = {}, + pages = {e12346}, + URL = {https://doi.org/10.3897/rio.3.e12346}, + eprint = {https://doi.org/10.3897/rio.3.e12346}, + journal = {Research Ideas and Outcomes} +} + +@article{10.3897/rio.3.e12342, + author = {Julia M Huntenburg and Alexandre Abraham and João Loula and Franziskus Liem and Kamalaker Dadi and Gaël Varoquaux}, + title = {Loading and plotting of cortical surface representations in Nilearn}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e12342}, + publisher = {Pensoft Publishers}, + abstract = {Processing neuroimaging data on the cortical surface traditionally requires dedicated heavy-weight software suites. Here, we present an initial support of cortical surfaces in Python within the neuroimaging data processing toolbox Nilearn. We provide loading and plotting functions for different surface data formats with minimal dependencies, along with examples of their application. Limitations of the current implementation and potential next steps are discussed.}, + issn = {}, + pages = {e12342}, + URL = {https://doi.org/10.3897/rio.3.e12342}, + eprint = {https://doi.org/10.3897/rio.3.e12342}, + journal = {Research Ideas and Outcomes} +} + +@article{10.3897/rio.3.e12276, + author = {Anisha Keshavan and Christopher R Madan and Esha Datta and Ian M McDonough}, + title = {Mindcontrol: Organize, quality control, annotate, edit, and collaborate on neuroimaging processing results}, + volume = {3}, + number = {}, + year = {2017}, + doi = {10.3897/rio.3.e12276}, + publisher = {Pensoft Publishers}, + abstract = {Mindcontrol is an open-source web-based dashboard to quality control and curate neuroimaging data. At Neurohackweek 2016, a group assembled to add new features to the Mindcontrol interface. Contributors used Python, Javascript, and Git to configure Mindcontrol for the ABIDE and CoRR open datasets, and add new types of plots to the interface. All contributions are freely available online, and the code is being actively maintained at http://www.github.com/akeshavan/mindcontrol.}, + issn = {}, + pages = {e12276}, + URL = {https://doi.org/10.3897/rio.3.e12276}, + eprint = {https://doi.org/10.3897/rio.3.e12276}, + journal = {Research Ideas and Outcomes} +} + + diff --git a/CNAME b/CNAME index ecc32ad..8185020 100644 --- a/CNAME +++ b/CNAME @@ -1 +1 @@ -events.brainhack.org +brainhack.org \ No newline at end of file diff --git a/Gemfile b/Gemfile index c7c5eaf..79d15a7 100644 --- a/Gemfile +++ b/Gemfile @@ -9,10 +9,12 @@ ruby RUBY_VERSION # # This will help ensure the proper Jekyll version is running. # Happy Jekylling! -gem "jekyll", "3.3.1" +gem "jekyll", "3.9.4" # This is the default theme for new Jekyll sites. You may change this to anything you like. -gem "minima", "~> 2.0" +gem "minima", "~> 2.5.2" +gem "kramdown-parser-gfm" +gem "webrick" # If you want to use GitHub Pages, remove the "gem "jekyll"" above and # uncomment the line below. To upgrade, run `bundle update github-pages`. @@ -20,6 +22,6 @@ gem "minima", "~> 2.0" # If you have any plugins, put them here! group :jekyll_plugins do - gem "jekyll-feed", "~> 0.6" + gem "jekyll-feed", "~> 0.17" gem 'jekyll-contentblocks' end diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index d4cb8da..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,59 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - addressable (2.5.0) - public_suffix (~> 2.0, >= 2.0.2) - colorator (1.1.0) - ffi (1.9.14) - forwardable-extended (2.6.0) - jekyll (3.3.1) - addressable (~> 2.4) - colorator (~> 1.0) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 1.1) - kramdown (~> 1.3) - liquid (~> 3.0) - mercenary (~> 0.3.3) - pathutil (~> 0.9) - rouge (~> 1.7) - safe_yaml (~> 1.0) - jekyll-contentblocks (1.2.0) - jekyll - jekyll-feed (0.8.0) - jekyll (~> 3.3) - jekyll-sass-converter (1.5.0) - sass (~> 3.4) - jekyll-watch (1.5.0) - listen (~> 3.0, < 3.1) - kramdown (1.13.1) - liquid (3.0.6) - listen (3.0.8) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - mercenary (0.3.6) - minima (2.1.0) - jekyll (~> 3.3) - pathutil (0.14.0) - forwardable-extended (~> 2.6) - public_suffix (2.0.4) - rb-fsevent (0.9.8) - rb-inotify (0.9.7) - ffi (>= 0.5.0) - rouge (1.11.1) - safe_yaml (1.0.4) - sass (3.4.23) - -PLATFORMS - ruby - -DEPENDENCIES - jekyll (= 3.3.1) - jekyll-contentblocks - jekyll-feed (~> 0.6) - minima (~> 2.0) - -RUBY VERSION - ruby 2.0.0p648 - -BUNDLED WITH - 1.13.7 diff --git a/_layouts/about.html b/_layouts/about.html deleted file mode 100644 index 291bd50..0000000 --- a/_layouts/about.html +++ /dev/null @@ -1,1717 +0,0 @@ - - - - - - - - - - - - About by brainhackorg - - - -
- - -
- - -
-
-

-About Brainhack

- -

-The purpose of Brainhack

- -

Answering the next generation of open questions in neuroscience will require very large data sets and complex analytical methods. The purpose of Brainhack is to bridge the data science and neuroscience research communities by bringing them together to collaborate on a multitude of projects. Brainhack is a unique conference that convenes researchers from across the globe and a myriad of disciplines to work together on innovative projects related to neuroscience. Year after year, global Brainhack events have brought together researchers to participate in open collaboration, and regional Brainhack events keep the momentum going throughout the year.

- -

These collaborative workshops combine elements of Hackathons and Unconferences, with a variety of educational activities, to accelerate the adaptation of data science and computational methods in Neuroscience. Much of the conference is allocated to open working time during which attendees are encouraged to work together in interdisciplinary teams on projects that utilize computational techniques to solve problems in neuroscience. Periodic unconference sessions provide an opportunity for attendees to share their expertise on topics that become relevant through the course of the event. In parallel to these activities, an educational track provide hands-on tutorials on relevant tools such as python, github, cloud computing, and innovative statistical methods.

- -

-Who is Brainhack.org?

- -

-Board

- -

The board is currently made up of the founders of Brainhack. The board meets quarterly to plan future Brainhack events and discuss other business.

-

Cameron Craddock, director

-

Daniel Margulies

-

Pierre Bellec

-

Nolan Nichols

-

Tal Yarkoni

- -

-Current Members

- -

The Brainhack organization is composed of individuals that have previously hosted brainhack events and those that plan to host events in the future. Members include: -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Scott Peltier, PhD, Functional MRI Laboratory, University of - Michigan

-
-

Dan Kessler, University of Michigan

-
-

Alejandro De La Vega, PhD, University of Texas at Austin

-
-

Zuo - Xi-Nian, PhD, Chinese Academy of Sciences

-
-

Olaf Sporns, PhD, University of - Indiana at Bloomington

-
-

Sharlene - Newman, PhD, University of Indiana at Bloomington

-
-

Satra - Ghosh, PhD, The Neuro Bureau
-
- McGovern Institute for Brain Research, Massachusetts Institute of Technology
-
- Department of Otology and Laryngology, Harvard Medical School

-
-

Koene - Van Dijk, PhD, Harvard University

-
-

Kirstie Whitaker, PhD, University of Cambridge

-
-

Jason Druzgal, PhD, University of - Virginia

-
-

Amalia McDonald, University of Virigina

-
-

Tor Dessart Wager, PhD, University - of Colorado at Boulder

-
-

Luka Ruzic, Duke Institute for Brain - Sciences

-
-

Vesa Kiviniemi, MD, PhD, Oulu University Hospital

-
-

Zang - Yu-Feng, MD, Hangzhou Normal University

-
-

Yating Lv, MD, Beijing Normal University

-
-

Anders Eklund, PhD, Universtiy of Linkoping

-
-

Gary Egan, PhD, University of Melbourne

-
-

Lucina Uddin, PhD, The Neuro Bureau
-
- Department of Psychology, University of Miami, Coral Gables
-
- Neuroscience Program, University of Miami Miller School of Medicine

-
-

Angie Laird, PhD, Department of Physics, Florida International - University

-
-

Kathryn Mills, PhD, Oregon Health & Science University

-
-

Roberto Toro, PhD, The Neuro Bureau
-
- Human Genetics and Cognitive Functions Unit, Institut - Pasteur
-
- Unité Mixte de Recherche 3571, Genes, Synapses and Cognition, Centre - National de la Recherche Scientifique, - Institut Pasteur

-
-

Gael Varoquaux, PhD,
-
- INRIA

-
-

Felipe Rech Meneguzzi, - PhD, Faculdade de Informática, - PUCRS

-
-

Gautam - Prasad, PhD, Laboratory of Neuro Imaging, Stevens Neuroimaging and - Informatics Institute, Keck School of Medicine of University of Southern - California

-
-

Tonya White, MD, PhD, University of Rotterdam

-
-

Jean-Baptiste Poline, PhD, Helen - Wills Neuroscience Institute, University of California
-
- Henry H. Wheeler Jr. Brain Imaging Center, University of California

-
-

Daniel J. Lurie, PhD, Department of Psychology, University of - California

-
-

Russ Poldrack, PhD, Stanford - University

-
-

Ariel Rokem, PhD, The University of - Washington eScience Institute

-
-

Juan Helen Zhou, PhD, The Agency for Science, Technology and - Research, Singapore

-
-

Thomas Yeo Boon Thye. PhD, National - University of Singapore, SINAPSE, Duke-NUS & Athinoula - A. Martinos Center for Biomedical Imaging (Harvard - University)

-
-

Asier Erramuzpe Aliaga, PhD, BioCruces Health Research Institute

-
-

Malin Sandstrom, PhD, INCF

-
-

Michael Milham, PhD, Center for Biomedical Imaging and - Neuromodulation, Nathan Kline Institute for Psychiatric Research
-
- Center for the Developing Brain, Child Mind Institute

-
-

Franz Liem, University of Zurich

-
-

Brad Sutton, PhD, Beckman Institute, University of Illinois at - Urbana-Champaign

-
-

John Capozzo, University of Illinois - at Urbana-Champaign

-
-

Sepideh Sadaghiani, PhD, University of Illinois at - Urbana-Champaign

-
-

Sanmi Koyejo, PhD, University of Illinois at Urbana-Champaign

-
-

John VanMeter, PhD, Center for - Functional and Molecular Imaging, Georgetown University Medical Center

-
-

Shady El Damaty, Georgetown - University

-
-

Rasmus Birn, PhD, University of Wisconsin at Madison

-
-

Deniz Vatansever, University of Cambridge

-
-

AmanPreet - Badhwar, PhD, Centre de Recherche, Institut Universitaire de Gériatrie de Montréal
-
- Université de Montréal

-
-

Ben Cipollini, PhD, University of California

-
-

Daniel Clark, Center for the Developing Brain, Child Mind - Institute

-
-

Krzysztof J. Gorgolewski, PhD, Poldrack Lab, Department of Psychology, Stanford University

-
-

Ayan Sengupta, Otto-von-Guericke University

-
-

Zia Mohaddes, Montréal Neurological - Institute, McGill University and Institute of Pscychology

-
-

Sebastien Dery, McConnell Brain - Imaging Center, Montreal Neurological Institute

-
-

Weiran - Deng, PhD, University of Hawaii John A. Burns School of Medicine

-
-

Glad Mihai, PhD, University of Greifswald

-
-

Nick Ketz, Department of Psychology - and Neuroscience, University of Colorado

-
-

Andrew Reineberg, PhD, Institute of - Cognitive Neuroscience, University College London, University of Colorado - Boulder

-
-

Marianne C. Reddan, Department of - Psychology and Neuroscience, University of Colorado

-
-

Caroline Froehlich, The Neuro Bureau
-
- Computational Neuroimaging Lab, Center for Biomedical Imaging and - Neuromodulation, Nathan S. Kline Institute for Psychiatric Research

-
-

Gil Dekel, PhD, City University of - New York-Hunter College

-
-

Ben D. Fulcher, PhD, Monash Institute of Cognitive and - Clinical Neurosciences, Monash University

-
-

Tristan Glatard, McGill Centre for - Integrative Neuroscience (MCIN), Ludmer Centre for Neuroinformatics and Mental Health, Montreal Neurological - Institute (MNI), McGill University
-
- University of Lyon, CNRS, INSERM, CREATIS.

-
-

Rémi - Bernard, McGill Centre for Integrative Neuroscience (MCIN), Ludmer Centre for Neuroinformatics - and Mental Health, Montreal Neurological Institute (MNI), McGill University

-
-

Najmeh Khalili-Mahani, PhD, McGill Centre for Integrative - Neuroscience (MCIN), Ludmer Centre for Neuroinformatics and Mental Health, Montreal Neurological - Institute (MNI), McGill University

-
-

Pierre Rioux, McGill Centre for - Integrative Neuroscience (MCIN), Ludmer Centre for Neuroinformatics and Mental Health, Montreal Neurological - Institute (MNI), McGill University

-
-

Marc-Étienne Rousseau, McGill Centre for Integrative - Neuroscience (MCIN), Ludmer Centre for Neuroinformatics and Mental Health, Montreal Neurological - Institute (MNI), McGill University

-
-

Raúl - Hernández-Pérez, PhD, Instituto de Neurobiología

-
-

Edgar A. Morales, PhD, Instituto de Neurobiología

-
-

Laura V. Cuaya, PhD, Instituto de Neurobiología

-
-

Kaori L. Ito, Neural Plasticity and Neurorehabilitation - Laboratory, Chan Division of Occupational Science and Occupational Therapy, - Division of Biokinesiology and Physical Therapy, - Keck School of Medicine Department of Neurology, University of Southern - California

-
-

Neda Jahanshad, Imaging Genetics - Center, Laboratory of Neuro Imaging, Keck School of Medicine of USC, - University of Southern California

-
-

Paul Thompson, PhD, Imaging Genetics Center, Laboratory of - Neuro Imaging, Keck School of Medicine of USC, University of Southern - California

-
-

Marcel Falkiewicz, PhD, Max Planck - Research Group for Neuroanatomy & Connectivity, Max Planck Institute for - Human Cognitive and Brain Sciences

-
-

Julia M. Huntenburg, Max Planck - Research Group for Neuroanatomy & Connectivity, Max Planck Institute for - Human Cognitive and Brain Sciences

-
-

Luis C.T. Herrera, PhD, Institute of Physics, University of - Campinas

-
-

Daniela Dentico, Waisman - Center, University of Wisconsin

-
-

Vanessa Sochat, PhD, Program in - Biomedical Informatics, Stanford University

-
-

Anibal Sólon Heinsfeld, - Faculdade de Informática, - PUCRS

-
-

Fernando A. Barrios, PhD, Instituto - De Neurobiología, Universidad Nacional Autónoma de México

-
-

Yves Burnod, PhD, Laboratoire d’Imagerie Biomédicale, Sorbonne Universités, - UPMC Université Paris 06,
-
- Institut des Systèmes - Complexes de Paris-Île-de-France

-
-

Christopher J. Cannistraci, - Translational and Molecular Imaging Institute, Icahn School of Medicine at - Mount Sinai

-
-

Julien Cohen-Adad, PhD, Functional Neuroimaging Unit, Centre - de Recherche de l’Institut - Universitaire de Gériatrie - de Montréal
-
- Institute of Biomedical Engineering, Ecole Polytechnique de Montréal

-
-

Katharine Dunlop, MRI-Guided rTMS - Clinic, University Health Network
-
- Institute of Medical Sciences, University of Toronto

-
-

Andrew Gerber, MD, PhD, New York State Psychiatric Institute
-
- Division of Child and Adolescent Psychiatry, Department of Psychiatry, - Columbia University

-
-

Thomas J. Grabowski, MD, Department of Radiology, University - of Washington
-
- Department of Neurology, University of Washington

-
-

Sean Hill, PhD, International Neuroinformatics - Coordinating Facility
-
- Karolinska Institutet

-
-

Donald G. McLaren, PhD, The Neuro Bureau
-
- Biospective, Inc.
-
- Department of Neurology, Massachusetts General Hospital

-
-

Maarten Mennes, PhD, Radboud University

-
-

Salma Mesmoudi, PhD, Institut des Systèmes Complexes - de Paris-Île-de-France
-
- Sorbonne Universités, Paris-1 Université, - Equipement d’Excellence - MATRICE

-
-

Erick H. Pasaye, Instituto - De Neurobiología, Universidad Nacional Autónoma de México

-
-

Ziad S. - Saad, Scientific and Statistical Computing Core, - National Institute of Mental Health

-
-

Yonggang - Shi, PhD, Laboratory of Neuro Imaging, Stevens Neuroimaging and Informatics - Institute, Keck School of Medicine of University of Southern California

-
-

John D. Van Horn, USC Mark and Mary Stevens Neuroimaging and - Informatics Institute, University of Southern California

-
-

Ting Xu, PhD, Center for the Developing Brain, Child Mind - Institute

-
-

Kristina Visscher, PhD, University - of Alabama at Birmingham

-
-

Eleftherios Garyfallidis, Département d’informatique, Université de Sherbrooke

-
-

Samir Das, Montréal Neurological Institute, McGill University - and Institute of Pscychology

-
-

Cécile Madjar, Douglas Mental Health - Institute

-
-

Keith Heberlin, PhD, Emory - University

-
-

David Kennedy, PhD, University of Massachusetts Medical School

-
-

Eric Earl, Oregon Health & Science University

-
-

Damion V. Demeter, Oregon Health & Science University

-
-

Erik Kan, The Saban - Research Institute of Children’s Hospital
-
- Department of Pediatrics of the Keck School of Medicine, University of - Southern California

-
-

Matteo Visconti di Oleggio Castello, - PhD, Department of Pscyhological & Brain - Sciences, Dartmouth College

-
-

Anne-Lise Goddings, - Institute of Cognitive Neuroscience, University College London

-
-

Javier Gonzalez-Castillo, PhD, Section on Functional Imaging - Methods, Laboratory of Brain and Cognition, National Institute of Mental - Health

-
-

Hans J. Johnson, PhD, Carver College of Medicine, The - University of Iowa

-
-

Sook-Lei Liew, PhD, The Neuro Bureau
-
- Chan Division of Occupational Science and Occupational Therapy, Division of - Physical Therapy and Biokinesiology, Department of - Neurology, University of Southern California
-
- USC Mark and Mary Stevens Neuroimaging and Informatics Institute, University - of Southern California

-
-

Reza Adalat,McGill Centre for - Integrative Neuroscience (MCIN), Ludmer Centre for Neuroinformatics and Mental Health, Montreal Neurological - Institute (MNI), McGill University

-
-

Natacha Beck, McGill Centre for Integrative Neuroscience - (MCIN), Ludmer Centre for Neuroinformatics - and Mental Health, Montreal Neurological Institute (MNI), McGill University

-
-

Aaron Heller, PhD, University of Wisconsin at Madison

-
-

Vince Calhoun, PhD, The Mind Research Network

-
-

Alan C. Evans, PhD, McGill Centre for Integrative Neuroscience - (MCIN), Ludmer Centre for Neuroinformatics - and Mental Health, Montreal Neurological Institute (MNI), McGill University

-
-

Yaroslav O. - Halchenko, PhD, Department of Pscyhological - & Brain Sciences, Dartmouth College

-
-

Augusto Buchweitz, PhD, PUCRS

-
-

Alexandre Rosa Franco, PhD, The Neuro Bureau
-
- Faculdade de Engenharia, - PUCRS
-
- Instituto do Cérebro do - Rio Grande do Sul, PUCRS
-
- Faculdade de Medicina, - PUCRS

-
-

Julia Anglin, Chan Division of Occupational Science and - Occupational Therapy, USC

-
-

Michael Borich, DPT, PhD, Division - of Physical Therapy, Department of Rehabilitation Medicine, Emory University - School of Medicine

-
-

Anisha Keshavan, University of California San Francisco

-
-

Matthew Brett, Berkeley Brain Imagin - Center

-
-

David O'Connor, Center for the Developing Brain, Child Mind - Institute

-
-

Rickson Mesquita, PhD, Institute of - Physics, University of Campinas

-
-

Alex Schaefer, National University of Singapore

-
-

Anqi Qiu, PhD, National University of Singapore

-
-

Julio E. Villalon-Rei, Imaging - Genetics Center, Mark and Mary Stevens Neuroimagng - and Informatics Institute, Keck School of Medicine of University of Southern - California

-
-

Sarael Alcauter, PhD, Instituto De Neurobiología, Universidad Nacional Autónoma - de México

-
-

Yoko Yamaguchi, PhD, RIKEN

-
-

Stephen Strother, PhD, Institute of - Medical Sciences, University of Toronto
-
- Rotman Research Institute, Baycrest - Hospital
-
- Department of Medical Biophysics, University of Toronto

-
-

Benjamin De Leener, Institute of - Biomedical Engineering, Ecole Polytechnique - de Montréal

-
-

Jonathan Downar, PhD, MRI-Guided rTMS Clinic, University Health Network
-
- Department of Psychiatry, University Health Network, University of Toronto
-
- Institute of Medical Sciences, University of Toronto

-
-

Robert C Welsh, PhD, Department of Psychiatry, University of - Michigan, Ann Arbor
-
- Department of Radiology,, University of Michigan, Ann Arbor

-
-

Thomas Nichols, PhD, Warwick University

-
-

R. Matthew Hutchinson, PhD, The Neuro Bureau
-
- Center for Brain Science, Harvard University

-
-

Prantik Kundu, PhD, The Neuro Bureau
-
- Translational and Molecular Imaging Institute, Icahn School of Medicine at - Mount Sinai

-
-

Hao-Ting - Wang, University of York

-
-

Jörg P. - Pfannmöller, Functional Imaging Unit, Center for - Diagnostic Radiology, Unviersity Medicine - Greifswald

-
-

Ramon Fraga Pereira, Faculdade de Informática, PUCRS

-
-

Pierre-Olivier Quirion, Functional - Neuroimaging Unit, Centre de Recherche de l’Institut Universitaire de Gériatrie de Montréal

-
- - - -

-How to become a member?

- -

If you would like to join the organization please contact a board member or email info@brainhack.org.

- -

-How do you host a brainhack?

- -

-Brainhack publications

- -

-Brainhack Proceedings

- -

We publish short reports describing projects completed at Brainhack events that occured during the year in a Annual Brainhack Proceedings.

- -

-Brainhack Thematic Series

- -

We invite full length publications that describe projects worked on as part of Brainhack or that are consistent with the Brainhack Proceedings to be published in the GigaScience Brainhack Thematic Series. ...

- -

-Brainhack Outcomes

- -

Below is a brief list of some of the projects that have been created at Brainhack events. More detailed information can be found in the Brainhack Proceedings and in our recent publication on Brainhack.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Project

-
-

Brainhack - Event

-
-

A child psychiatrist and a 3D - video artist initiated a collaboration to develop a movie to be shown to - participants during resting-state fMRI scans to reduce head motion in - hyperkinetic populations

-
-

2012 Brainhack - & Unconference (Leipzig)

-
-

The ABIDE Preprocessing Initiative - is an ongoing project to share preprocessed versions of the Autism Brain - Imaging Data Exchange (ABIDE) dataset

-
-

2012 Brainhack - & Unconference (Leipzig)

-
-

An analysis to identify - differences in cortical thickness and structural covariance between individuals - with autism spectrum disorder and neurotypical - controls

-
-

2012 Brainhack - & Unconference (Leipzig)

-
-

A project team amassed a dataset - of 14,781 structural MRI scans to estimate the distribution of brain sizes - across individuals for optimizing scan acquisition parameters

-
-

Brainhack - 2013 Paris

-
-

The development team of LORIS, an - open source database system for neuroimaging and phenotypic data, have - repeatedly used Brainhack as an opportunity to meet - and collaborate on new features

-
-

 

-
-

An early version of the - Daydreaming app, an Android application for real-time assessment of users’ - mind-wandering

-
-

Brainhack - 2013 Paris

-
-

The Clubs of Science project has - built a web-based visualization of the social web underlying neuroimaging - research

-
-

Brainhack - Montreal 2015

-
-

The linkRbrain - tool for integrating and querying neuroimaging data with activation peaks - from the literature and gene expression data was partially developed and - first tested

-
-

Brainhack - 2013 Paris

-
-
-
- - - - diff --git a/_layouts/default.html b/_layouts/default.html index 22e7e3f..b444313 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,44 +1,133 @@ +--- +layout: default +--- + - - - - {{ page.title }} - - - - - - - - - - - -
-
-

{{ site.name }}

- home -
- - {{ content }} - - -
- - - + + + + + + + + + + + + + + + + + + + + + + Brainhack + + + + + +
+ + +
+ + {{ content }} + + + + \ No newline at end of file diff --git a/_layouts/main-page.html b/_layouts/main-page.html new file mode 100644 index 0000000..09862b2 --- /dev/null +++ b/_layouts/main-page.html @@ -0,0 +1,9 @@ +--- +layout: default +title: main-page +navbar: true +--- + +
+ {{ content }} +
diff --git a/_layouts/page.html b/_layouts/page.html index 90ea8ff..66e4592 100644 --- a/_layouts/page.html +++ b/_layouts/page.html @@ -1,92 +1,12 @@ - - - - - - - - - - - - - - - - - - - - Brainhack Proceedings - - - -
- - -
- - - - -
+--- +layout: default +title: page +--- + +
+
+
{{ content }} -
- - - - - + + +
diff --git a/_layouts/post.html b/_layouts/post.html index 0181ba4..048ed39 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -1,97 +1,21 @@ - - - - - - - - - - - - - - - +--- +layout: default +title: post +--- - - Brainhack Projects - - - -
- - -
- -
-
-

{{ page.title}}

-
- -
-
-

{{ page.description }}

- {{ content }} -
+
+
+
+

{{ page.title}}

+
+
+
-
- - - - - - - +
+

{{ page.description }}

+ {{ content }} +
+
+ + +
diff --git a/_posts/2015-10-23-automaticspinalcord.markdown b/_posts/2015-10-23-automaticspinalcord.markdown index 6e5e214..c2b55be 100644 --- a/_posts/2015-10-23-automaticspinalcord.markdown +++ b/_posts/2015-10-23-automaticspinalcord.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Automatic Spinal Cord Centerline Extraction on MR Images" -date: 2015-10-23 17:40:06 -categories: Project -image: automaticspinalcord_cropped.png +date: 2017-1-11 10:42:06 +project_categories: Brainhack MTL 2015 +image: 2bbis-222x180.png description: The Spinal Cord Toolbox is the first software for processing multiparametric MRI of the spinal cord. The primary step is the automatic segmentation of the spinal cord, and is currently performed by PropSeg. --- ## Summary diff --git a/_posts/2016-12-22-dockerize.markdown b/_posts/2016-12-22-dockerize.markdown index 0a65ded..fc50ad3 100644 --- a/_posts/2016-12-22-dockerize.markdown +++ b/_posts/2016-12-22-dockerize.markdown @@ -1,9 +1,9 @@ --- layout: post -title: "Dockerize Neurosynth" -date: 2016-12-22 13:52 -categories: Project -image: dockerize_cropped.png +title: "Dockerize Neurosynth " +date: 2017-1-11 10:40:06 +project_categories: OHBM Hackathon 2015 +image: ns_pic-222x180.png description: Getting a development environment for Neurosynth up and running is a pain at the moment (seehttp://github.com/neurosynth/neurosynth). --- ## Summary diff --git a/_posts/2016-12-23-cloudrepro.markdown b/_posts/2016-12-23-cloudrepro.markdown index 3efc652..895ddc5 100644 --- a/_posts/2016-12-23-cloudrepro.markdown +++ b/_posts/2016-12-23-cloudrepro.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Cloud Reproducibility Challenge" -date: 2016-12-23 11:23:06 -categories: Project -image: cloudrepro_cropped.jpg +date: 2017-1-11 10:38:06 +project_categories: OHBM Hackathon 2015 +image: coffee-744154_1280-222x180.jpg description: The use of standardizable computing environments offers a promise for enhancing the reproducibility of neuroimaging computational workflows. --- ## Summary diff --git a/_posts/2016-12-23-cortical_distance.markdown b/_posts/2016-12-23-cortical_distance.markdown index fc0de3f..ce7d881 100644 --- a/_posts/2016-12-23-cortical_distance.markdown +++ b/_posts/2016-12-23-cortical_distance.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Cortical Distance Tools in Python" -date: 2016-12-23 10:47:06 -categories: Project -image: cortical_distance_cropped.png +date: 2017-1-11 10:47:06 +project_categories: Brainhack AMX 2015 +image: surfdist-222x180.png description: surfdist builds on the exact geodesic distance tools provided by gdist --- ## Summary diff --git a/_posts/2016-12-23-datalad.markdown b/_posts/2016-12-23-datalad.markdown index bcbc248..17b2acf 100644 --- a/_posts/2016-12-23-datalad.markdown +++ b/_posts/2016-12-23-datalad.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Datalad" -date: 2016-12-23 11:15:06 -categories: Project -image: datalad_cropped.png +date: 2017-1-11 10:39:06 +project_categories: OHBM Hackathon 2015 +image: datalad-logo2-222x180.png description: Relying on git-annex, DataLad aims to establish a data distribution delivering variety of publicly available datasets (OpenfMRI collection, HCP, etc) via convenient unified, --- ## Summary diff --git a/_posts/2016-12-23-duecredit.markdown b/_posts/2016-12-23-duecredit.markdown index e95dba6..a5859c9 100644 --- a/_posts/2016-12-23-duecredit.markdown +++ b/_posts/2016-12-23-duecredit.markdown @@ -1,9 +1,9 @@ --- layout: post title: "DueCredit" -date: 2016-12-23 11:15:06 -categories: Project -image: duecredit_cropped.png +date: 2016-11-11 10:39:06 +project_categories: Project +image: CSU-2-222x180.png description: Is a project in conceptualization state. --- ## Summary diff --git a/_posts/2016-12-23-loris.markdown b/_posts/2016-12-23-loris.markdown index 67e0b7f..805369e 100644 --- a/_posts/2016-12-23-loris.markdown +++ b/_posts/2016-12-23-loris.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Loris" -date: 2016-12-23 10:53:06 -categories: Project -image: loris_cropped.png +date: 2017-1-11 10:45:06 +project_categories: Brainhack MTL 2015 +image: LORIS_logo_v2_grey_clear-222x180.png description: Going through the process of developing a completely new module for LORIS from scratch. --- ## Summary diff --git a/_posts/2016-12-23-loris_modules.markdown b/_posts/2016-12-23-loris_modules.markdown index 68cd574..8cec0ff 100644 --- a/_posts/2016-12-23-loris_modules.markdown +++ b/_posts/2016-12-23-loris_modules.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Loris Modules" -date: 2016-12-23 11:23:06 -categories: Project -image: loris_cropped.png +date: 2017-1-11 10:37:06 +project_categories: OHBM Hackathon 2015 +image: LORIS_logo_v2_grey_clear-222x180.png description: At this year’s Hackathon, we will be pushing forward with new functionality in LORIS, focusing specifically on our Imaging Uploader and Genomics module. --- Summary diff --git a/_posts/2016-12-23-loris_scheduler.markdown b/_posts/2016-12-23-loris_scheduler.markdown index d50faba..bfaef0f 100644 --- a/_posts/2016-12-23-loris_scheduler.markdown +++ b/_posts/2016-12-23-loris_scheduler.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Loris: Scheduler and ID Mapper" -date: 2015-10-23 17:40:06 -categories: Project -image: loris_cropped.png +date: 2017-1-11 10:44:06 +project_categories: Brainhack MTL 2015 +image: LORIS_logo_v2_grey_clear-222x180.png description: We will be focusing on the development of a workstation study scheduler that will be hooked up to the existing DICOM anonymizer. --- ## Summary diff --git a/_posts/2016-12-23-neurodebian.markdown b/_posts/2016-12-23-neurodebian.markdown index ea2ec4e..0f112a9 100644 --- a/_posts/2016-12-23-neurodebian.markdown +++ b/_posts/2016-12-23-neurodebian.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Neurodebian" -date: 2016-12-23 11:05:06 -categories: Project -image: neurodebian_cropped.png +date: 2017-1-11 10:41:06 +project_categories: OHBM Hackathon 2015 +image: neurodebian_logo_posters_banner_ohbm2015-222x180.png description: NeuroDebian provides a turnkey platform for bare metal or virtualized/cloud deployments. --- ## Summary diff --git a/_posts/2016-12-23-niakincbrain.markdown b/_posts/2016-12-23-niakincbrain.markdown index d9587ba..e0d9446 100644 --- a/_posts/2016-12-23-niakincbrain.markdown +++ b/_posts/2016-12-23-niakincbrain.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Niak in CBRAIN" -date: 2016-12-23 10:59:06 -categories: Project -image: niakincbrain.png +date: 2017-1-11 10:43:06 +project_categories: Brainhack MTL 2015 +image: hackathon-222x110.png description: We will develop a CBRAIN task that can execute a PSOM/Niak pipeline. --- ## Summary diff --git a/_posts/2016-12-23-video1.markdown b/_posts/2016-12-23-video1.markdown new file mode 100644 index 0000000..f9768ae --- /dev/null +++ b/_posts/2016-12-23-video1.markdown @@ -0,0 +1,8 @@ +--- +layout: post +title: Cameron Craddock +date: 2016-11-11 10:39:06 +video_categories: proceedings +video-url: JLJFKV7p74A +description: Welcome and description of Brainhack Proceedings 2017 +--- diff --git a/_posts/2016-12-23-video2.markdown b/_posts/2016-12-23-video2.markdown new file mode 100644 index 0000000..cd8cb80 --- /dev/null +++ b/_posts/2016-12-23-video2.markdown @@ -0,0 +1,8 @@ +--- +layout: post +title: "Bernard Mazoyer" +date: 2016-11-11 10:39:06 +video_categories: Function +video-url: Rh31CsIX8bE +description: Language Lateralization +--- diff --git a/_posts/2016-12-23-video3.markdown b/_posts/2016-12-23-video3.markdown new file mode 100644 index 0000000..9236a5c --- /dev/null +++ b/_posts/2016-12-23-video3.markdown @@ -0,0 +1,8 @@ +--- +layout: post +title: Andrew Saykin +date: 2016-11-11 10:39:06 +video_categories: multimodal +video-url: GCovC6pg0tE +description: "Searching for multiple needles in multiple haystacks: Multimodality imaging and -omics studies of Alzheimer's disease" +--- diff --git a/_posts/2017-03-01-mdm.markdown b/_posts/2017-03-01-mdm.markdown new file mode 100644 index 0000000..546dfc3 --- /dev/null +++ b/_posts/2017-03-01-mdm.markdown @@ -0,0 +1,19 @@ +--- +layout: post +title: "MDM" +date: 2017-3-1 10:31:06 +big: 0 +project_categories: Warwick 2017 +image: mdmBrainhack3.png +description: MDM (Multiregression Dynamic Models) is a package written in R to study directed dynamic functional connectivity. +--- + +### Summary +We will explore how MDM can be used to analyze fMRI time-series, with a key focus on network visualization and diagnostics of the estimates. Here is a [list](https://github.com/schw4b/mdm/issues) of ways that you can contribute to this ongoing development effort. + +Github page: [https://github.com/schw4b/mdm](https://github.com/schw4b/mdm) + + +### Contact +Simon Schwab \\ +[schw4b@gmail.com](mailto:schw4b@gmail.com) diff --git a/_posts/2017-03-01-snpm.markdown b/_posts/2017-03-01-snpm.markdown new file mode 100644 index 0000000..646d952 --- /dev/null +++ b/_posts/2017-03-01-snpm.markdown @@ -0,0 +1,19 @@ +--- +layout: post +title: "SnPM" +date: 2017-3-1 10:31:06 +big: 0 +project_categories: Warwick 2017 +image: SnPM_Central-222x180.png +description: SnPM is a SPM toolbox that allows nonparametric inferences. +--- + +### Summary +Currently SnPM designs are specified through various 'plug-ins' and cannot use information in an already completed SPM run. The "Auto SnPM" project will create a new plug-in that will allow the specification of an already-estimated SPM.mat, automatically configuring the SnPM analysis. + +URL: [http://warwick.ac.uk/SnPM](http://warwick.ac.uk/SnPM) + + +### Contact +Thomas Nichols \\ +[t.e.nichols@warwick.ac.uk](mailto:t.e.nichols@warwick.ac.uk) diff --git a/_posts/2017-04-23-bhack_lesion.markdown b/_posts/2017-04-23-bhack_lesion.markdown new file mode 100644 index 0000000..906360e --- /dev/null +++ b/_posts/2017-04-23-bhack_lesion.markdown @@ -0,0 +1,64 @@ +--- +layout: post +title: "Brainhack: Brain Lesions" +date: 2017-4-23 10:31:06 +big: 1 +project_categories: Events 2017 +image: brainhackLesions.png +description: Thematic Brainhack focused on brain lesions. +--- + +### Location +[Mozilla, 16 Boulevard Montmartre, 75009 Paris.](https://goo.gl/maps/EeLvY8Ehjep) + +### Summary +This Brainhack is set up with a special focus on brain lesions. Checkout our ignite speakers and proposed projects which include among others: + + + +### Web page + +URL: [ http://neuroanatomy.github.io/events/brainhack-lesions/]( http://neuroanatomy.github.io/events/brainhack-lesions/) + +### Schedule + +#### Tuesday 9th May 2017 + +09:00 – 09:30 Complimentary Breakfast \\ +09:30 – 09:45 Ignite Welcome lecture (Michel Thiebaut de Schotten) \\ +09:45 – 10:30 Ignite Advanced Lesion Symptoms Mapping (Parashkev Nachev) \\ +10:30 – 12:00 Project pitches including: + +12:00 – 13:30 Lunch \\ +13:30 – 20:00 Open Hacking \\ +20:00 – ??? Social drink and dinner + +#### Wednesday 10th May 2017 + +09:00 – 09:30 Breakfast \\ +09:30 – 10:00 Ignite: Rehabilitation after a stroke (Marine Lunven) \\ +10:00 – 10:30 Ignite: Neural bases of language and motor impairment (Charlotte Rosso) \\ +10:30 – 12:00 Open hacking \\ +12:00 – 13:00 Lunch \\ +13:00 – 22:30 Open hacking + + + +### Contact +Roberto Toro \\ +[robertotoro@gmail.com](mailto:robertotoro@gmail.com) + +Katja Heuer \\ +[katjaqheuer@gmail.com](mailto:katjaqheuer@gmail.com) + +Michel Thiebaut de Schotten \\ +[michel.thiebaut@gmail.com](mailto:michel.thiebaut@gmail.com) diff --git a/_posts/2017-08-01-deepbrainhack.markdown b/_posts/2017-08-01-deepbrainhack.markdown new file mode 100644 index 0000000..8e6380d --- /dev/null +++ b/_posts/2017-08-01-deepbrainhack.markdown @@ -0,0 +1,53 @@ +--- +layout: post +title: "Deep Brainhack" +date: 2017-8-01 10:31:06 +big: 1 +project_categories: Events 2017 +image: hbhllogo.png +description: Deep Brainhack = Neuroscience + Deep Learning +--- + +### Location +[Notman House, 51 Sherbrooke Street West, Montreal, Quebec](https://www.google.com/maps?ll=45.511928,-73.570065&z=16&t=m&hl=en-US&gl=CA&mapclient=embed&cid=11433532947443404990) + +### Summary +The goals of this two-day hacking sprint are to familiarize the deep learning community with specific challenges faced working with medical data, and to introduce neuroscience researchers to the opportunities presented by new deep learning architectures for scientific discovery. + +Brainhack has always been a collaborative event that focuses on open sharing of ideas, code, and even data. The AI community is at the forefront of open science, where most authors pre-print open access papers and publish their code so that others can easily reproduce their work and adapt it to their own use case. + +### Web page + +URL: [ https://brainhack101.github.io/deepbrainhack2017/](https://brainhack101.github.io/deepbrainhack2017/) + +### Schedule + +#### Thursday August 24th 2017 + +9:00 - 9:30 Breakfast \\ +9:30 - 9:45 Introduction \\ +9:45 - 10:15 Introduction to Deep Learning \\ +9:45 - 10:15 Introduction to Neuroimaging Data \\ +10:15 - 11:15 Project Pitches \\ +11:15 - 12:15 Open Hacking \\ +12:15 - 1:30 Lunch \\ +1:30 - 16:30 Open Hacking \\ +16:30 - 17:30 Unconference \\ +17:30 - 23:00 Open Hacking (optional) + +#### Friday August 25th, 2017 + +9:00 - 9:30 Breakfast \\ +9:30 - 12:15 Open Hacking \\ +12:15 - 13:30 Lunch \\ +13:30 - 14:30 Unconference \\ +14:30 - 16:00 Hacking \\ +16:00 - 17:00 Project Presentations \\ +17:00 Adjourn + +#### The Deep Brainhack is generously sponsored by: +![alt text](https://github.com/brainhackorg/brainhackorg.github.io/blob/master/assets/images/elementai.jpeg?raw=true) + +### Contact +Andrew Doyle \\ +[andrew.doyle@mcgill.ca ](mailto:andrew.doyle@mcgill.ca ) diff --git a/_posts/2017-08-03-brainhackwarsaw.markdown b/_posts/2017-08-03-brainhackwarsaw.markdown new file mode 100644 index 0000000..d626497 --- /dev/null +++ b/_posts/2017-08-03-brainhackwarsaw.markdown @@ -0,0 +1,48 @@ +--- +layout: post +title: "AoN Brainhack Warsaw 2017" +date: 2017-8-03 10:31:06 +big: 1 +project_categories: Events 2017 +image: warsawlogo.png +description: Aspects of Neuroscience Conference Satellite Event +--- + +### Location +[University of Warsaw, Faculty of Physics, Pasteura 5, 02-093 Warsaw, Poland](https://www.google.com/maps?ll=52.212426,20.983057&z=16&t=m&hl=en-US&gl=PL&mapclient=embed&cid=16956103603900586185) + +### Summary +#### — The call for proposals extended to 1st September 2017 — + +On the weekend of 18-19th November 2017, the first edition of AoN Brainhack Warsaw will take place. During this two-day event dedicated to students and PhD students, we will work in teams on neuroscience-related projects. + +The aim of the event is to meet new, enthusiastic researchers, make new friendships in academia, learn, share the knowledge on data mining and brain research, but also promote open science in the spirit of the whole Brainhack community (Craddock et al., 2016). Attendees of various backgrounds are welcome to join! + +Please note AoN Brainhack Warsaw 2017 is a satellite event for the interdisciplinary Aspects of Neuroscience conference which will take place on 24-26th November 2017 in Warsaw. Participation in the conference is not mandatory to take part in Brainhack but we encourage to also consider this. + +Important deadlines: + +Deadline for project proposals: September 1st, 2017 \\ +Announcement of projects: September 15th, 2017 + +Participant registration starts: September 1st, 2017 \\ +Deadline for participant registration: November 1st, 2017 + +At the moment, the call for project proposals is open. The proposals can include various forms of a group activity, e.g., data analysis, app development, a two-day discussion club, developing a new software etc. The organizers will provide a few openly available datasets to the project authors, but developing projects using private datasets is also welcome. + +Please send the project proposals and all the related questions to the mailing address: [brainhackwarsaw@gmail.com](mailto:brainhackwarsaw@gmail.com) + +Also, please team up with us! Join our channel #brainhack-warsaw-2017 on Brainhack Slack project [https://brainhack-slack-invite.herokuapp.com](https://brainhack-slack-invite.herokuapp.com) for the updates, and share your own ideas with us! + +We are looking forward to working with you at the AoN Brainhack Warsaw! + +### Web page + +URL: [https://brainhackwarsaw.github.io/](https://brainhackwarsaw.github.io/) + + +### Contact +Natalia Bielczyk \\ +[natalia.bielczyk@gmail.com](mailto:natalia.bielczyk@gmail.com) \\ +Daniel Borek \\ +[dtborek@gmail.com](mailto:dtborek@gmail.com) diff --git a/_posts/2017-08-14-brainhackdc.markdown b/_posts/2017-08-14-brainhackdc.markdown new file mode 100644 index 0000000..19fd1ac --- /dev/null +++ b/_posts/2017-08-14-brainhackdc.markdown @@ -0,0 +1,23 @@ +--- +layout: post +title: "Brainhack DC 2017" +date: 2017-8-14 10:31:06 +big: 1 +project_categories: Events 2017 +image: brainhackdclogo.png +description: Brainhack DC 2017 +--- + +### Location +[District House, GW University, Washington DC](https://www.google.com/maps/place/District+House/@38.8997802,-77.0477194,15z/data=!4m2!3m1!1s0x0:0x57ea2645e055c9b1?sa=X&ved=0ahUKEwij3cu2i9fVAhUK0oMKHTHABj8Q_BIIgwEwDg) + + +### Web page + +URL: [http://www.brainhack.org/DC2017/](http://www.brainhack.org/DC2017/) \\ +Register [here](https://docs.google.com/forms/d/e/1FAIpQLSdeVAfBTZ3G4B8gBR44RSJDUP9Xb399wAjMktlHyN0gEtTTcA/viewform?usp=sf_link) + + +### Contact +Sara Kimmich \\ +[sarakimmich@gmail.com](mailto:sarakimmich@gmail.com) diff --git a/_posts/2017-09-26-bh_london.markdown b/_posts/2017-09-26-bh_london.markdown new file mode 100644 index 0000000..412d4e8 --- /dev/null +++ b/_posts/2017-09-26-bh_london.markdown @@ -0,0 +1,24 @@ +--- +layout: post +title: "Brainhack London - Clinical Neuroanatomy 2017" +date: 2017-9-26 10:31:06 +big: 1 +project_categories: Events 2017 +image: brainhacklondonlogo.png +description: Brainhack London - Clinical Neuroanatomy 2017 +--- + +### Dates + +25-27 September 2017 + +### Location +[Gordon Museum of Pathology, Kings College, London, UK](https://www.google.co.uk/maps/place/Hodgkin+Building/@51.503107,-0.0901223,122m/data=!3m1!1e3!4m12!1m6!3m5!1s0x48760359ea91c001:0x182cc506c2c07fd4!2sGordon+Museum!8m2!3d51.5039054!4d-0.0902803!3m4!1s0x0:0x979794147a5ec684!8m2!3d51.5031062!4d-0.0895751?hl=en) + +### Web page + +URL: [https://www.brainhacklondon.eu](https://www.brainhacklondon.eu) + +### Contact +Stephanie Forkel \\ +[stephanie.forkel@kcl.ac.uk](mailto:stephanie.forkel@kcl.ac.uk) diff --git a/_posts/2017-1-10-biblio.markdown b/_posts/2017-1-10-biblio.markdown index 519178a..915b9e7 100644 --- a/_posts/2017-1-10-biblio.markdown +++ b/_posts/2017-1-10-biblio.markdown @@ -2,8 +2,8 @@ layout: post title: "Neurosynth Bibliometrics" date: 2017-1-10 10:59:06 -categories: Project -image: biblio_cropped.png +project_categories: Project +image: journal_coCitation-222x180.png description: Bibliometrics, which explores citation practices in the scientific literature, offers an empirical entry point for understanding research communities. --- ## Summary diff --git a/_posts/2017-1-10-ipython.markdown b/_posts/2017-1-10-ipython.markdown index 041f5cf..6d204c1 100644 --- a/_posts/2017-1-10-ipython.markdown +++ b/_posts/2017-1-10-ipython.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Interactive IPython Notebooks for Brain Imaging Analysis" -date: 2017-1-10 10:59:06 -categories: Project -image: ipython_cropped.png +date: 2017-1-11 9:58:06 +project_categories: Hackathon 2014 +image: ipython1-222x180.png description: This project will build on a starting set of IPython notebooks to replace BIPS --- ## Summary diff --git a/_posts/2017-1-10-murfi2.markdown b/_posts/2017-1-10-murfi2.markdown index 2074d57..1c0ecba 100644 --- a/_posts/2017-1-10-murfi2.markdown +++ b/_posts/2017-1-10-murfi2.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Extending MURFI2 - An Opensource Real Time fMRI Platform" -date: 2017-1-10 10:59:06 -categories: Project -image: murfi2_cropped.jpg +date: 2017-1-11 9:55:06 +project_categories: Hackathon 2014 +image: mri-222x180.jpg description: This project will extend this protocol to be supported in GE and Philips scanners. --- ## Summary diff --git a/_posts/2017-1-10-rearchitecting.markdown b/_posts/2017-1-10-rearchitecting.markdown index 96c2c25..65ed206 100644 --- a/_posts/2017-1-10-rearchitecting.markdown +++ b/_posts/2017-1-10-rearchitecting.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Re-Architecting Nipype" -date: 2017-1-10 10:59:06 -categories: Project -image: rearch_cropped.png +date: 2017-1-11 9:57:06 +project_categories: Hackathon 2014 +image: nipype-222x180.png description: Bibliometrics, which explores citation practices in the scientific literature, offers an empirical entry point for understanding research communities. --- ## Summary diff --git a/_posts/2017-1-10-ro.markdown b/_posts/2017-1-10-ro.markdown index 05f8efc..ba76c1b 100644 --- a/_posts/2017-1-10-ro.markdown +++ b/_posts/2017-1-10-ro.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Integrating NIDM and Research Objects (RO)" -date: 2017-1-10 10:59:06 -categories: Project -image: ro.jpeg +date: 2017-1-11 9:56:06 +project_categories: Hackathon 2014 +image: rohub-222x136.jpeg description: The goal of this project will be to reconcile these efforts into an interoperable model and take advantage of ROHub, a platform for collecting, tracking and disseminating RO. --- ## Summary diff --git a/_posts/2017-1-10-widgets b/_posts/2017-1-10-widgets.markdown similarity index 87% rename from _posts/2017-1-10-widgets rename to _posts/2017-1-10-widgets.markdown index 40c7198..a8fb9ba 100644 --- a/_posts/2017-1-10-widgets +++ b/_posts/2017-1-10-widgets.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Javascript Visualization Widgets" -date: 2017-1-10 10:59:06 -categories: Project -image: widgets.jpeg +date: 2017-1-11 9:54:06 +project_categories: Hackathon 2014 +image: images-222x173.jpeg description: Create a collection of reusable javascript visualization widgets that can be used in IPython notebooks as well as in platforms like Neurosynth and Neurovault. --- ## Summary diff --git a/_posts/2017-1-11-brainhackedt.markdown b/_posts/2017-1-11-brainhackedt.markdown new file mode 100644 index 0000000..c779b49 --- /dev/null +++ b/_posts/2017-1-11-brainhackedt.markdown @@ -0,0 +1,158 @@ +--- +layout: post +title: "Brainhack EDT" +date: 2017-1-11 10:19:06 +project_categories: Brainhack EDT +image: BRAINHACK_EDT_TAILS-023-222x180.png +description: Brainhack is a unique conference that convenes researchers from across the globe and a myriad of disciplines to work together on innovative projects related to neuroscience. +--- + +## Summary +Brainhack is a unique conference that convenes researchers from across the globe and a myriad of disciplines to work together on innovative projects related to neuroscience. Year after year, global Brainhack events have brought together researchers to participate in open collaboration, and now we are proud to introduce regional Brainhack events that will keep the momentum going throughout the year. + +To kick off the new model, Brainhack Eastern Daylight Time (EDT) will unite several regional Brainhack events during October 18 & 19, 2014. Having several simultaneous events will help build a critical mass for the regional Brainhack movement and will provide opportunities for inter-Brainhack collaboration. Local events will be connected by videoconference to expand collaborative opportunities so that smaller sites can plug into the content and energy generated at larger sites. To maximize the potential for interaction between sites, Brainhack EDT will connect sites that are within two hours of EDT (UTC-4 hours). + +Sites in Ann Arbor, Boston, Miami, Montreal, New York City, Porto Alegre, Toronto and Washington DC have already signed on, and we hope to partner with additional sites throughout North, Central, and South America. Please contact [Cameron Craddock](mailto:cameron.craddock@childmind.org) if you are interested in hosting a Brainhack in your area. +Every attempt will be made to minimize the cost of attendance at these events. + +## Regional Events +### Ann Arbor, MI +Location: University of Michigan Museum of Art +Dates: October 18 & 19, 0900 – late EDT +Organizers: +Scott Peltier, PhD, Acting Co-Director, Laboratory Manager and Associate Research Scientist, Functional MRI Laboratory, Associate Research Scientist, Biomedical Engineering, University of Michigan, Ann Arbor, MI +Robert Welsh, PhD, Research Associate Professor, Department of Psychiatry, Research Associate Professor, Department of Radiology, University of Michigan, Ann Arbor, MI +Registration and Information: Email brainhacka2@umich.edu, [flyer](http://brainhack.org/wp-content/uploads/sites//sites/3/2014/09/brainhackedta2announcement.pdf) + +### Boston, MA +Location: TBD @ Massachusetts Institute of Technology +Dates: October 18 & 19, 0900 – late EDT +Organizers: +Satra Gosh, PhD, Research Scientist, McGovern Institute for Brain Research, Massachusetts Institute of Technology, Boston, MA +Matt Hutchison, PhD, Postdoctoral Fellow, Center for Brain Science, Harvard University, Boston, MA +Donald McLaren, PhD, Research Fellow, Department of Neurology, Massachusetts General Hospital and Harvard Medical School, Boston, MA and Postdoctoral Research Fellow, GRECC, Bedford VA +Registration and Information: [Sign up online](https://docs.google.com/spreadsheets/d/1vqNNkulP-lIXTyKcToZKYgWgYxkYAfEEdFeCHMcINao/edit?usp=sharing) + +### Miami, FL +Location: TBD @ Florida International University +Dates: October 18, 0900-1700 EDT +Organizers: +Angie Laird, PhD, Associate Professor, Department of Physics, Florida International University, Miami, FL +Lucina Uddin, PhD, Assistant Professor of Psychology, University of Miami, Miami, FL +Registration and Information: [Sign up online](https://docs.google.com/spreadsheets/d/1Aj9Pu1TIvFzEbn8gc_Xn1rCMmL-YIPchS4hfDId0cLQ/edit?usp=sharing) + +### Montreal, QC, Canada +Location: Centre de Recherche de l’Institut de Gériatrie de Montréal (CRIUGM) +Dates: October 18 & 19, 0900 – late EDT +Organizers: +Benjamin De Leener, PhD Candidate, Institute of Biomedical Engineering, Polytechnique Montréal, Québec, Canada +Pierre Bellec, PhD, Chercheur, Research Centre of the Montreal Geriatric Institute +Professeur adjoint sous octroi, Department of Computer Science and Operations Research +University of Montreal, Québec, Canada +Julien Cohen-Adad, PhD, Associate Professor, Institute of Biomedical Engineering, Polytechnique Montréal, Functional Neuroimaging Unit, CRIUGM, Université de Montréal, Québec, Canada +Costs: Free +Sponsors: Institut Universitaire de Gériatrie de Montréal, Ecole Polytechnique de Montréal, Département d’Informatique et de Recherche Opérationnelle (DIRO), Université de Montréal, Quebec Bioimaging Network +Registration and Information: [Sign up online](https://www.rbiq-qbin.qc.ca/structure.do?id=event_details&locale=en&star=2835) + +### New York, NY +Location:Board Room (6601) and Multipurpose Room (6602) on the 6th floor @ New York State Psychiatric Institute, 1051 Riverside Drive, New York, NY 10032 +Dates and Times: October 18 & 19, 0900 – late EDT +Costs: Free +Ignite Speakers: +Alan Anticevic, PhD, Assistant Professor, Department of Psychiatry, Yale University School of Medicine +Guillermo Horga, MD, Assistant Professor of Psychiatry, Division of Translational Imaging, New York State Psychiatric Institute and Columbia University Medical Center +Organizers: +Andrew Gerber, MD, PhD, Director, MRI Unit, New York State Psychiatric Institute, New York, NY and Assistant Professor of Clinical Psychiatry, Columbia University, New York, NY +Cameron Craddock, PhD, Director, Computational Neuroimaging Lab, Nathan S. Kline Institute for Psychiatric Research, Orangeburg, NY and Director of Imaging, Center for the Developing Brain, Child Mind Institute, New York, NY +Sponsors: +New York State Psychiatric Institute +Child Mind Institute +Registration and Information: Email [Cameron Craddock](mailto:cameron.craddock@childmind.org) or [sign up online](http://goo.gl/forms/hB5TXbJg11) +Instructions: On the day of the event you will have to show photo ID to the security guard at the entrance of NYSPI. Tell them that you are attending the Brainhack and then proceed to the 6th floor where you will be met by greeters. + +### Porto Alegre, Brazil +Location: TBD @ Pontifícia Universidade Católica do Rio Grande do Sul +Dates: October 18 & 19, 0900 – late BRT +Organizers: +Alex Franco, PhD, Coordenador de Pesquisa em Neuroinformática e Pós-Processamento, Instituto do Cérebro do Rio Grande do Sul, Associate Professor, Department of Electrical Engineering, Pontifícia Universidade Catòlica do Rio Grande do Sul, Porto Alegre, Brazil +Caroline Froehlich, MSc Candidate, Faculdade de Informática, Pontifícia Universidade Católica do Rio Grande do Sul, Porto Alegre, Brazil +Felipe Meneguzzi, Associate Professor, Faculdade de Informática, Pontifícia Universidade Católica do Rio Grande do Sul, Porto Alegre, Brazil +Registration and Information: [Sign up online](https://docs.google.com/forms/d/10iU1pY3Qxt0XPnuj7VQ5wG3ZqBbqJFXFPaFUY2awo-g/). [More details](https://sites.google.com/site/brainhackpoa/home), or mail [Caroline Froehlich](caroline.froehlich@childmind.org). + +### Toronto, ON, Canada +Location: Discovery Commons, Room 3172, Institute of Medical Science, University of Toronto, 1 King’s College Circle, Toronto, ON M5S 1A8 +Dates and times: October 18 & 19, 0900 – 1700 EDT +Organizers: +Jonathan Downar, MD, PhD, Director, MRI-Guided rTMS Clinic, Toronto Western Hospital +Stephen Strother, PhD, Senior Scientist, Rotman Research Institute, Baycrest +Katie Dunlop, MSc Candidate, Institute of Medical Science, University of Toronto +Registration and Information: [Sign up online](https://docs.google.com/forms/d/1Vcbp8CAraF0PFSQNz3hK259AOgJuYo2IBa3mY8zvQV4/viewform), email [Katie Dunlop](mailto:katharine.dunlop@gmail.com) with questions. + +### Washington DC +Location: SW107 MedDent, Georgetown University Medical Center, 3900 Reservoir Road NW +Dates and times: October 18 & 19, 0900 – 1700 EDT +Organizers: +John Van Meter, PhD, Associate Professor, Department of Neurology, Director, Center for Functional and Molecular Imaging, Georgetown University Medical Center, Washington DC +Lei Liew, PhD, MA, OTR/L, Postdoctoral Research Fellow, Human Cortical Physiology and Neurorehabilitation Section, National Institute of Neurological Disorders and Stroke, Bethesda, MD +Ziad Saad, PhD, Scientific and Statistical Computing Core Facility, Research Fellow, National Institute of Mental Health, Bethesda, MD +Prantik Kundu, PhD, Assistant Professor of Radiology and Psychiatry, Icahn School of Medicine at Mount Sinai, New York, NY +Registration and Information: Sign up online + +## What will happen at local Brainhack events? +Brainhack is unconventional – the event eschews a prearranged schedule of scientific sessions and instead structures activities onsite based on the interests of the community. This model encourages active participation and interaction between attendees. +Regional Brainhack events will span 2 days and are comprised of several unique components: +• Welcome reception and icebreaker: Opportunity for attendees to get to know each other and to identify scientific challenges they would like to tackle during Brainhack. +• Ignite sessions: Brief talks to inspire attendees and set the pace for the rest of the day. +• Open hacking sessions: Most conference time will be devoted to these sessions during which attendees collaborate on neuroscientific projects. +• Unconference sessions: Oral presentations by attendees that are dynamically scheduled onsite. +• Presentations and wrap up: Reporting on progress made on each project and a summary of the event. +The schedule across sites will be synchronized so that Ignite and Unconference sessions can be broadcast between event locations. Time for meals has not been explicitly included in the schedule – attendees are encouraged to have working meals with food from local establishments. + +## Schedule +Saturday, October 18, 2014 +08:30 Attendee Arrival +09:00 Welcome reception and icebreaker +10:00 Ignite Talk +10:15 Open Hacking +13:30 Unconference Session +15:00 Open Hacking +Sunday, October 19, 2014 +09:00 Ignite Session +09:15 Open Hacking +11:00 Unconference Session +12:30 Open Hacking +17:00 Project Summaries and Wrap-up +18:30 Adjourn + +## Who comes to Brainhack? +Brainhack attendees come from a wide variety of backgrounds and are interested in working together on projects related to brain science. Although the nature of the Brainhack makes it most amenable to projects that can be completed with a computer, effective contribution is not limited to those with computational backgrounds. Brainhack welcomes expertise from all fields, including but not limited to: engineering, math and computer science, neuroscience, psychology, psychiatry, neurology, art, and philosophy – from undergraduate students to established principal investigators. All have found opportunities to make valuable contributions to the Brainhack. +## What do people work on at Brainhack? +Attendees are free to work on any project that they like. In order to assist with the process of choosing a project, attendees are encouraged to post project ideas to brainhack.org weeks before the event. A poster session will occur during the welcome reception to offer another opportunity for attendees to discuss their project ideas. Local organizers may also wish to present a “grand challenge” or unifying problem to offer an additional project opportunity for attendees. As the purpose of local Brainhack events is to build new relationships and to set the foundation for longer-term collaborations, the project need not be completed during the course of the Brainhack. Some attendees may not work on a project, but instead use the Brainhack as an opportunity to learn from other attendees about different domains of brain science. +Example projects from previous years of Brainhack can be viewed at brainhack.org and run the gamut from large-scale analyses of cortical thickness in autism, to developing better tools for analyzing and visualizing brain imaging data, to establishing standards for assessing the quality of functional MRI data. These projects have led to ongoing international collaborations and in some cases resulted in scientific publications. + +## Hosting a regional Brainhack +Regional Brainhacks can range in size from just a few participants to something much larger. Depending on the size of the regional Brainhack, two or more individuals may be needed to host the event. Most of the details below are flexible and ultimately left up to the local organizing committee. If you are interested in hosting an event, please contact Cameron Craddock (cameron.craddock@childmind.org). +Some items to take into consideration as you begin planning your Branhack: +## Location +The primary requirements for the Brainhack location are Internet, electricity, and sufficient workspace for the attendees. Ideally the facilities will be accessible around the clock to allow attendees to work late into the night. Some level of video conferencing capabilities will be needed to connect with other sites, but a web camera and projector will be sufficient. Having multiple workrooms would be convenient (though not necessary) for the open hacking sessions, and there should be at least one room that is large enough to host the entire group during Unconference sessions and other oral presentations. Limiting the event to a single room will make it easier to link sites via video. We have found that it works best to arrange desks or tables in the workrooms into small clusters that fit 4-6 people, with Internet connections and power available at each cluster. +Ideally, a university or research institution would provide the facilities for free. Community based organizations, such as libraries or hacker spaces, are also good places to find meeting spaces. +## Getting the Word Out +Announcements and materials for Brainhack EDT will begin being distributed on relevant web channels and mailing lists starting July 2014. Regional hosts are encouraged to contact brain science researchers at all local Institutions to solicit their involvement. Enlisting high profile researchers from the area for the Ignite sessions can help attendance. The central organizing committee will also help to develop recruitment materials such as web pages and posters. +## Welcome reception and icebreaker +The Welcome Reception is the first opportunity for Brainhack attendees to interact with one another and to start self-organizing into project groups. Ideally refreshments would be available during the welcome reception, and if there is any money available for the event it should be spent here. Depending on the size of the attendance, each attendee should be asked to briefly introduce themselves to the group, or another icebreaker activity (such as a poster session, round of 3-min 1-slide introductions, speed dating) could be employed. +## Food and Refreshments +All meals are typically catered at global Brainhack events to encourage the attendees to eat together and to minimize interruptions to the working sessions. For the regional Brainhacks this requirement can be forgone to minimize attendee costs, but ideally some refreshments should be available. Attendees are encouraged to sit together during meals, which can be either delivered or takeout. This will require that the Brainhack be located near food vendors. +## Ignite Speakers +Ideal speakers for the Ignite sessions are established brain scientists who have a broad view of brain research and understand the long terms goals of the research community. The primary role of these speakers is to set the tone for each day of hacking. Local events will be able to tune in to Ignite sessions from other sites by videoconference. +## Unconference Sessions +Unconference sessions offer attendees the ability to dynamically create scientific content at the Brainhack event. Sign up sheets for the Unconference sessions will be hung each morning and will be available up until the time of the Unconference sessions. Based on experience from previous Brainhacks, we anticipate presentations to include: tool demonstrations, explanations of complex concepts in neuroscience and data analysis, clinical background on mental disorders, and open debates about the future of neuroscience. Local events will be connected by videoconference so all can tune in to Unconference talks presented at other locations. +## Project Summaries and Wrap-up +Teams will be given an opportunity to provide a 2-5 minute description of their projects and their progress during a lightening talk session at the end of the day on Sunday. Any remaining time should be spent getting feedback from the attendees about their Brainhack experience and making plans for future regional Brainhack events. +## Budgetary Concerns +A major goal of Brainhack EDT is to have attendance be as inexpensive as possible (and in some cases completely free). Some local budget will likely be necessary to cover incidental expenses as well as refreshments at the welcome reception and during the working sessions. The primary concern is arranging a location to host the event. In the past, we have had success raising small amounts of funding from local universities and research institutions. We have also had success obtaining corporate sponsorship. The central organizing committee is more than happy to work with regional organizing committees to help them obtain funding. +## Attending a local Brainhack +1. Pre-register to make sure that you are accounted for. +2. If you have a project idea, post it to brainhack.org and make sure that you indicate which of the local Brainhacks that you will be attending. This will make other attendees aware of your project idea, so that they can prepare to join your team. If the project involves working with a specific dataset, make sure that it is organized before the Brainhack and consider bringing it on a thumb drive or external hard drive for easy sharing. +3. If you do not have a project idea, read the list of projects occurring at your local Brainhack event at brainhack.org to get an idea of what will be available. If you find a project team, feel free to contact other project members so that you can prepare to work on the projects. +4. Prepare to participate in the icebreaker activity. Depending on the local site this might involve preparing a poster, a single slide, or a brief introduction, that showcases your research and interests to present at the welcome ceremony. This will be a valuable means for introducing yourself to others and to tell them about your project ideas. +5. Come to the Brainhack local event well rested and ready for hardcore collaboration. Bring along any presentations that you may have lying around in case you are called upon to provide a talk at an Unconference session. diff --git a/_posts/2017-1-11-lorisori.markdown b/_posts/2017-1-11-lorisori.markdown new file mode 100644 index 0000000..98766af --- /dev/null +++ b/_posts/2017-1-11-lorisori.markdown @@ -0,0 +1,20 @@ +--- +layout: post +title: "Loris" +date: 2017-1-11 9:59:06 +project_categories: Hackathon 2014 +image: loris_v2.grey_.clear_.cropped-283x116-222x116.png +description: More than 1 neuroimaging paper is published every hour. But we can keep up with the literature if we do it all together! +--- +## Summary +[Longitudinal Online Research and Imaging System](http://journal.frontiersin.org/Journal/10.3389/fninf.2011.00037/abstract) (LORIS ; Das et al., 2011) is a modular and extensible web-based data management system that integrates all aspects of a multi-center study: from management of the acquisition of heterogeneous data (imaging, clinical, behavior, and genetics) to storage, processing, and ultimately dissemination. LORIS began as the infrastructure for the [NIH MRI Study of Normal Brain Development](http://www.ncbi.nlm.nih.gov/pubmed/16376577) (Evans et al., 2006) and later became the data management system for numerous multi-center studies, in both neurodevelopment and neurodegeneration, such as IBIS, GUSTO, NeuroDevNet, Prevent-AD, CCNA, MAVAN, IBRAIN in India, k-ADNI in Korea, amongst many others. In Europe, LORIS supports NeuGRID, AddNeuroMed, the 1000 Brains Project and is an international partner of the Human Brain Project. +LORIS is under constant development and will be looking forward to engage with new collaborators to further optimize the existing platform and develop new features, including a greater mobile presence. + +## What can I do? +We will have a number of hackathon specific goals related to our overall codebase. For example, we will be pushing forward on creating tablet specific interfaces making use of extended HTML 5 web capabilities, and possibly web application compilers such as PhoneGap and Titianium. We will also be looking to create new modules related to imaging-genomics data management. While LORIS runs on a PHP/MySQL framework, we will be further exploring Javascript, CSS and other web technologies. As such, we will offer tutorials at the conference for those interested in collaborating. For more background information about LORIS, feel free to see our paper in Frontiers of Neuroinformatics and visit loris.ca for more infomation. + +## What to do: +Your task will be to pick papers to tag (there’s either a random list of papers, you can search papers from your field, or tag your own papers), read the full text, tell us if you agree or not with the tags already entered, give us information about the stereotaxic space used by the article, and an approximation of the number of subjects in the study. If you are into web programming, the BrainSpell client runs on javascript, jQuery, WebGL, the server runs on mySQL and PHP, and there are plenty of things to do! + +## How to join: +For the enthusiast, you can start tagging already! Go to [http://brainspell.org](http://brainspell.org) open an account, and go for it. More information about BrainSpell can be found in our blog. If you have any ideas, you can contact Roberto Toro by e-mail [rto@pasteur.fr](mailto: rto@pasteur.fr). diff --git a/_posts/2017-1-11-rtms.markdown b/_posts/2017-1-11-rtms.markdown new file mode 100644 index 0000000..0857d3f --- /dev/null +++ b/_posts/2017-1-11-rtms.markdown @@ -0,0 +1,37 @@ +--- +layout: post +title: "Predicting RTMS Outcomes" +date: 2017-1-11 10:21:06 +project_categories: Brainhack EDT Toronto Challenge +image: toronto_rtms_challenge-466x180.png +big: 1 +description: Identify ≥85% reliable predictors of outcome for rTMS in depression, using resting-state fMRI +--- +## Summary +### The Challenge +Identify ≥85% reliable predictors of outcome for rTMS in depression, using resting-state fMRI +Thanks to more than 25 years of neuroimaging studies, we now have detailed information about what major depression looks like in the brain – at least, at the group level… +### The problem +Our patients present themselves for treatment as individuals, not groups! And as of 2014, we still don’t have any reliable way of using neuroimaging to help us select the right treatment for each individual patient in the clinic. +Enter machine learning. Over the last few years, automated classification algorithms have made substantial progress on the problem of classifying individuals based on fMRI scans. Accuracies over 90% have recently been achieved in distinguishing healthy controls from depression patients, bipolar from schizophrenia patients, younger from older individuals, and sleeping from waking brains. +Could we use these same techniques to predict whether individual patients will or will not respond to a given treatment? It’s recently been accomplished for [electroconvulsive therapy (ECT)](http://www.ncbi.nlm.nih.gov/pubmed/25092248), using resting-state functional MRI. So perhaps it’s not too far-fetched to propose doing the same thing for a more targeted brain stimulation treatment: repetitive transcranial magnetic stimulation (rTMS). +### Here’s what we have to work with: +The MRI-Guided rTMS Clinic at the Toronto Western Hospital has collected 10 minute resting-state fMRI scans and accompanying T1 anatomical scans in about 150 patients. The scans were obtained 1 week before they began a course of rTMS, targeting the dorsomedial prefrontal cortex. For each of these patients, we have pre- and post-treatment scores of depression symptom severity, on a standardized scale (the Beck Depression Inventory-II). Based on their symptom improvement, the sample divides into roughly equal proportions of treatment responders and non-responders (with response defined as ≥50% symptom improvement). +### Our challenge to you is as follows: +Develop a robust, automated classifier that can achieve ≥85% reliable prediction of treatment response or non-response based on the fMRI scans obtained prior to treatment. Use any set of features you wish: seed-based whole-brain functional connectivity maps, cross-correlation matrices, graph theoretical measures, dynamical measures of connectivity, or something more exotic. Use any classification algorithm you wish: support vector machines, multiple regression models, gaussian process classifiers, or your own “special sauce” method. Use any validation method you wish as well, but we want these models to generalize well, so the more robust your demonstration, the better! +If you think you’re up to the challenge, please join us virtually or in person for the [2014 Toronto BrainHack EDT](http://brainhack.org/brainhack_edt/). We’ll be hosting the event over the weekend of Oct 18-19 at the University of Toronto’s Institute of Medical Science, at the computer lab in the Discovery Commons. Videoconferencing and high speed Ethernet / WiFi connections are available on site. Data will be accessible onsite or ahead of time via the Ontario Brain Institute’s BrainCode database. Lunch will be provided. Please do bring your own computer however – the local CPUs are limited in power. + +## Contact +For more information or to RSVP, please contact the Downar lab via Katie Dunlop at [katharine.dunlop@gmail.com](mailto: katharine.dunlop@gmail.com) +Hosts: +Dr. Jonathan Downar +Director, MRI-Guided rTMS Clinic, Toronto Western Hospital +Dr. Stephen Strother +Senior Scientist, Rotman Research Institute +Katie Dunlop +MSc Candidate, Institute of Medical Science +When: +October 18-19, 2014, 9:00 a.m. to 5:00 p.m. (…) +Where: +Discovery Commons, Room 3172, Institute of Medical Science, University of Toronto +1 King’s College Circle, Toronto, ON M5S 1A8 [Find Us](http://dc.med.utoronto.ca/content/find-us) diff --git a/_posts/2017-1-12-ohbmhackathon.markdown b/_posts/2017-1-12-ohbmhackathon.markdown new file mode 100644 index 0000000..aef4ee9 --- /dev/null +++ b/_posts/2017-1-12-ohbmhackathon.markdown @@ -0,0 +1,12 @@ +--- +layout: post +title: "2016 OHBM Hackathon" +date: 2017-1-12 10:43:06 +project_categories: Submit +image: ohbm-2016-logo-222x180.png +description: The 2016 OHBM Hackathon will take place June 23- 25 at Univercité in Lausanne, Switzerland. +--- +## OHBM Hackathon 2016 +The 2016 OHBM Hackathon will take place June 23- 25 at Univercité in Lausanne, Switzerland. For more information visit: [http://brainhack.org/OHBM2016/](http://brainhack.org/OHBM2016/) + +– The OHBM Hackathon Organizing Committee diff --git a/_posts/2017-1-13-vienna.markdown b/_posts/2017-1-13-vienna.markdown new file mode 100644 index 0000000..000e245 --- /dev/null +++ b/_posts/2017-1-13-vienna.markdown @@ -0,0 +1,10 @@ +--- +layout: post +title: "Brainhack Vienna" +date: 2017-1-13 10:43:06 +project_categories: Events +image: brainhack_vienna2-222x180.png +description: Brainhack Vienna will take place Sept 18 – 20, 2016. +--- + +Brainhack Vienna will take place Sept 18 – 20, 2016. For more information visit: [http://brainhack.org/vienna](http://brainhack.org/vienna) diff --git a/_posts/2017-1-14-brainhackla.markdown b/_posts/2017-1-14-brainhackla.markdown new file mode 100644 index 0000000..0ba9ac4 --- /dev/null +++ b/_posts/2017-1-14-brainhackla.markdown @@ -0,0 +1,11 @@ +--- +layout: post +title: "Brainhack LA 2016" +date: 2017-1-14 10:43:06 +project_categories: Events +image: Screen-Shot-2016-09-28-at-10.36.33-AM-466x180.png +big: 1 +description: Brainhack LA will take place November 10 – 12, 2016. +--- + +Brainhack LA will take place November 10 – 12, 2016. For more information visit: [http://brainhack.org/LA2016](http://brainhack.org/LA2016) diff --git a/_posts/2017-1-4-axonal.markdown b/_posts/2017-1-4-axonal.markdown index fdae195..e6f4b6b 100644 --- a/_posts/2017-1-4-axonal.markdown +++ b/_posts/2017-1-4-axonal.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Random Axonal Growth" -date: 2017-1-4 10:59:06 -categories: Project -image: axonal_cropped.png +date: 2017-1-11 10:34:06 +project_categories: OHBM Hackathon 2015 +image: chem_grads_1-222x180.png description: Implementation of random axonal growth to measure the connection length and simulate the growth. --- ## Summary diff --git a/_posts/2017-1-4-decision_outsourcing.markdown b/_posts/2017-1-4-decision_outsourcing.markdown index d6d3d7c..c0ec1e4 100644 --- a/_posts/2017-1-4-decision_outsourcing.markdown +++ b/_posts/2017-1-4-decision_outsourcing.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Decision Outsourcing App" -date: 2017-1-4 10:59:06 -categories: Project -image: decisionoutsourcing.jpeg +date: 2017-1-11 10:31:06 +project_categories: OHBM Hackathon 2015 +image: Cropped-InIn-222x180.jpg description: Decision outsourcing is a strategy informed by the brain science research described in the Wisdom of Crowds. --- ## Summary diff --git a/_posts/2017-1-4-diffusion.markdown b/_posts/2017-1-4-diffusion.markdown index f777d61..bd94e14 100644 --- a/_posts/2017-1-4-diffusion.markdown +++ b/_posts/2017-1-4-diffusion.markdown @@ -1,9 +1,10 @@ --- layout: post title: "Diffusion Imaging in Python" -date: 2017-1-4 10:59:06 -categories: Project -image: diffusion_cropped.jpg +date: 2017-1-11 10:27:06 +project_categories: Brainhack EDT Montreal +image: dipy_overview_figure-466x180.jpg +big: 1 description: During Montreal Brainhack EDT some of the Diffusion Imaging in Python --- ## Summary diff --git a/_posts/2017-1-4-documentniak.markdown b/_posts/2017-1-4-documentniak.markdown index e7a132e..483031e 100644 --- a/_posts/2017-1-4-documentniak.markdown +++ b/_posts/2017-1-4-documentniak.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Document NIAK" -date: 2017-1-4 10:59:06 -categories: Project -image: documentniak.png +date: 2017-1-11 10:23:06 +project_categories: Brainhack EDT Montreal +image: angelniak.png description: The Neuroimaging Analysis Kit (NIAK) is a software library for the data mining of large fMRI datasets. --- ## Summary diff --git a/_posts/2017-1-4-fmri_analysis.markdown b/_posts/2017-1-4-fmri_analysis.markdown index c788463..f7df6e2 100644 --- a/_posts/2017-1-4-fmri_analysis.markdown +++ b/_posts/2017-1-4-fmri_analysis.markdown @@ -1,9 +1,9 @@ --- layout: post title: "fMRI Analysis with CBRAIN" -date: 2017-1-4 10:59:06 -categories: Project -image: fmri_analysis_cropped.jpg +date: 2017-1-11 10:36:06 +project_categories: OHBM Hackathon 2015 +image: fninf-08-00054-g007-222x180.jpg description: CBRAIN is an open-source, web-based, distributed computing platform for collaborative neuroimaging. --- ## Summary diff --git a/_posts/2017-1-4-hyperscanning.markdown b/_posts/2017-1-4-hyperscanning.markdown index afdabf5..b082761 100644 --- a/_posts/2017-1-4-hyperscanning.markdown +++ b/_posts/2017-1-4-hyperscanning.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Hyperscanning Ultimatum" -date: 2017-1-4 10:59:06 -categories: Project -image: hyperscanning_cropped.png +date: 2017-1-11 10:29:06 +project_categories: Brainhack EDT Washinton DC +image: Hyperscanning-logo-222x180.png description: Game theory or the study of strategic decision making has been used to study and explain a wide variety of human and animal behaviors. --- ## Summary diff --git a/_posts/2017-1-4-inline.markdown b/_posts/2017-1-4-inline.markdown index 0b7b2a4..84c3e39 100644 --- a/_posts/2017-1-4-inline.markdown +++ b/_posts/2017-1-4-inline.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Inline fMRI QC" -date: 2017-1-4 10:59:06 -categories: Project -image: inline_cropped.png +date: 2017-1-11 10:28:06 +project_categories: Brainhack EDT Boston +image: InlineQC_Badge1-222x180.png description: In collaboration with Siemens MR, we are developing a tool for “inline” monitoring of fMRI quality --- ## Summary diff --git a/_posts/2017-1-4-multimodal.markdown b/_posts/2017-1-4-multimodal.markdown index 4109e7a..d72cb5d 100644 --- a/_posts/2017-1-4-multimodal.markdown +++ b/_posts/2017-1-4-multimodal.markdown @@ -1,9 +1,10 @@ --- layout: post title: "Multimodal Sturctural MRI Analysis" -date: 2017-1-4 10:59:06 -categories: Project -image: multimodal_cropped.png +date: 2017-1-11 10:26:07 +project_categories: Brainhack EDT Montreal +image: modalitiesimage-466x180.png +big: 1 description: Our goal is to find ways to use the complementary information in multimodal structural MRI for more powerful and interesting analyses. --- ## Summary diff --git a/_posts/2017-1-4-neuropoly.markdown b/_posts/2017-1-4-neuropoly.markdown index cfdf49b..b26c23c 100644 --- a/_posts/2017-1-4-neuropoly.markdown +++ b/_posts/2017-1-4-neuropoly.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Development of a Web-Interface Processing Spinal Cord MR Images" -date: 2017-1-4 10:59:06 -categories: Project -image: neuropoly_cropped.png +date: 2017-1-11 10:24:06 +project_categories: Brainhack EDT Montreal +image: logo_neuropoly-222x180.png description: This toolbox allows extraction of multi-parametric MRI data as well as large-group and multi-center studies. --- ## Summary diff --git a/_posts/2017-1-4-nidata.markdown b/_posts/2017-1-4-nidata.markdown index 06d7cc3..941b29f 100644 --- a/_posts/2017-1-4-nidata.markdown +++ b/_posts/2017-1-4-nidata.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Nidata: A Python Library for Downloading Publicly Available Neuroimaging Data" -date: 2017-1-4 9:33:06 -categories: Project -image: nidata_cropped.png +date: 2017-1-11 10:32:06 +project_categories: OHBM Hackathon 2015 +image: nidata1-222x180.png description: Data science and citizen science are both exploding, but neuroimaging research is not taking advantage. --- ## Summary diff --git a/_posts/2017-1-4-nidm.markdown b/_posts/2017-1-4-nidm.markdown index 7050219..ada548f 100644 --- a/_posts/2017-1-4-nidm.markdown +++ b/_posts/2017-1-4-nidm.markdown @@ -1,9 +1,9 @@ --- layout: post title: "NIDM Apps" -date: 2017-1-4 10:59:06 -categories: Project -image: nidm_cropped.png +date: 2017-1-11 10:35:06 +project_categories: HBM Hackathon 2015 +image: NIDMcake-222x180.png description: The Neuroimaging Data Model (NIDM) is a general framework for data exchange that is defined using a set of community developed specifications to convey neuroimagingdata and meta-data, developed by the INCF Neuroimaging Task Force. --- ## Summary diff --git a/_posts/2017-1-4-niftyview.markdown b/_posts/2017-1-4-niftyview.markdown index a73da6e..fa637ff 100644 --- a/_posts/2017-1-4-niftyview.markdown +++ b/_posts/2017-1-4-niftyview.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Niftview" -date: 2017-1-4 10:59:06 -categories: Project -image: niftyview_cropped.png +date: 2017-1-11 10:33:06 +project_categories: OHBM Hackathon 2015 +image: Screenshot-2015-03-31-12.23.11-222x180.png description: NiftyView is a web-based application for viewing and analyzing medical images. --- ## Summary diff --git a/_posts/2017-1-4-selforganization.markdown b/_posts/2017-1-4-selforganization.markdown index 666a5b8..d94e5b0 100644 --- a/_posts/2017-1-4-selforganization.markdown +++ b/_posts/2017-1-4-selforganization.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Self-Organization and Brain Function" -date: 2017-1-4 10:59:06 -categories: Project -image: selforganization_cropped.jpeg +date: 2017-1-11 10:30:06 +project_categories: OHBM Hackathon 2015 +image: starling_1758597c-222x180.jpeg description: In this project a simple mathematical model for self-organization is investigated. --- ## Summary diff --git a/_posts/2017-1-4-spinalcord.markdown b/_posts/2017-1-4-spinalcord.markdown index 8686149..98ef569 100644 --- a/_posts/2017-1-4-spinalcord.markdown +++ b/_posts/2017-1-4-spinalcord.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Spinal Cord Gray Matter Segmentation Using Atlas Deformation" -date: 2017-1-4 10:59:06 -categories: Project -image: spinalcord_cropped.png +date: 2017-1-11 10:25:06 +project_categories: Brainhack EDT Montreal +image: Screen-Shot-2014-10-03-at-3.29.44-PM-1-222x180.png description: We are currently working on an automatic segmentation method for the spinal cord gray matter on T2*-weighted images, based on the deformation (using ANTs) of a probabilistic map of the gray matter. --- ## Summary diff --git a/_posts/2017-1-5-1000.markdown b/_posts/2017-1-5-1000.markdown index 08854dd..4a0d7bb 100644 --- a/_posts/2017-1-5-1000.markdown +++ b/_posts/2017-1-5-1000.markdown @@ -1,9 +1,9 @@ --- layout: post title: "1000 Functional Connectomes Project/ INDI: Future Consortiums" -date: 2017-1-5 10:59:06 -categories: Project -image: 1000_cropped.jpg +date: 2017-1-1 10:11:06 +project_categories: Hackathon 2014 +image: INDI_rgb-222x180.jpg description: The 1000 Functional Connectomes Project and its International Neuroimaging Data-sharing Initiative (INDI) actively promote the formation of grassroots open data-sharing initiatives in the neuroimaging community. --- ## Summary diff --git a/_posts/2017-1-5-alzheimers.markdown b/_posts/2017-1-5-alzheimers.markdown index a498053..4c36ab6 100644 --- a/_posts/2017-1-5-alzheimers.markdown +++ b/_posts/2017-1-5-alzheimers.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Alzheimer's Disease Big Data Deam 8.5 Challenge #1" -date: 2017-1-5 10:59:06 -categories: Project -image: alzheimers.png +date: 2017-1-11 10:15:06 +project_categories: Hackathon 2014 +image: AD_banner-3-_-222x180.png description: The goal of the Alzheimer’s Disease Big Data DREAM8.5 Challenge "#1" (AD#1) is to apply an open science approach --- ## Summary diff --git a/_posts/2017-1-5-aural.markdown b/_posts/2017-1-5-aural.markdown index 9b63017..fcd79cb 100644 --- a/_posts/2017-1-5-aural.markdown +++ b/_posts/2017-1-5-aural.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Aural Neuroanatomy" -date: 2017-1-5 10:59:06 -categories: Project -image: aural_cropped.png +date: 2017-1-11 10:12:06 +project_categories: Hackathon +image: Screen-Shot-2014-05-15-at-10.32.32-222x180.png description: This project aims at discovering this new types of representations of brain imaging data using sound. --- ## Summary diff --git a/_posts/2017-1-5-brainbrowser.markdown b/_posts/2017-1-5-brainbrowser.markdown index c1bc2d7..e80d132 100644 --- a/_posts/2017-1-5-brainbrowser.markdown +++ b/_posts/2017-1-5-brainbrowser.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Brainbrowser" -date: 2017-1-5 10:59:06 -categories: Project -image: brainbrowser_cropped.png +date: 2017-1-11 10:10:06 +project_categories: Hackathon 2014 +image: bblogo-222x180.png description: BrainBrowser is a set of open source, web-based, 3D visualization tools primarily targetting neuroimaging. --- ## Summary diff --git a/_posts/2017-1-5-cis.markdown b/_posts/2017-1-5-cis.markdown index a75f5e7..d97ca44 100644 --- a/_posts/2017-1-5-cis.markdown +++ b/_posts/2017-1-5-cis.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Calculating Effect Sizes and Their Cis" -date: 2017-1-5 10:59:06 -categories: Project -image: cis_cropped.png +date: 2017-1-11 10:09:06 +project_categories: Hackathon 2014 +image: Visualizing_effect_size_small_effect-222x180.png description: With this project we will look into how effect sizes and their CIS can be calculated for various analyses popular in neuroimaging as well as how to perform those calculations post-hoc with external tools such as NeuroVault. --- ## Summary diff --git a/_posts/2017-1-5-cognition.markdown b/_posts/2017-1-5-cognition.markdown index 8853fbf..c45b93a 100644 --- a/_posts/2017-1-5-cognition.markdown +++ b/_posts/2017-1-5-cognition.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Real-Life Cognition Contest" -date: 2017-1-5 10:59:06 -categories: Project -image: cognition.png +date: 2017-1-11 10:13:06 +project_categories: Hackathon 2014 +image: hackathon_logo.png description: We invite research groups and individuals to participate in a contest to kick-start a mass-collaboration on studying the brain in its natural environment. --- ## Summary diff --git a/_posts/2017-1-5-dsi.markdown b/_posts/2017-1-5-dsi.markdown index dba06e6..dd99b51 100644 --- a/_posts/2017-1-5-dsi.markdown +++ b/_posts/2017-1-5-dsi.markdown @@ -1,9 +1,9 @@ --- layout: post title: "15 Minute DSI Project" -date: 2017-1-5 10:59:06 -categories: Project -image: dsi_cropped.png +date: 2017-1-11 10:18:06 +project_categories: Data Hackathon 2014 +image: brain_hack_15MinDSI-222x180.png description: The 15 Minute DSI Project first began at the 2013 Hackathon in Paris, France. --- ## Summary diff --git a/_posts/2017-1-5-flasking.markdown b/_posts/2017-1-5-flasking.markdown index 16eb01b..ab82a96 100644 --- a/_posts/2017-1-5-flasking.markdown +++ b/_posts/2017-1-5-flasking.markdown @@ -1,9 +1,9 @@ --- layout: post -title: "Flasking Neurosynth" -date: 2017-1-5 10:59:06 -categories: Project -image: flasking_cropped.png +title: "Flasking Neurosynth " +date: 2017-1-11 10:17:06 +project_categories: Hackathon 2014 +image: neurosynth-222x180.png description: The 15 Minute DSI Project first began at the 2013 Hackathon in Paris, France. --- ## Summary diff --git a/_posts/2017-1-5-ni-dm.markdown b/_posts/2017-1-5-ni-dm.markdown index de0ac09..9dff591 100644 --- a/_posts/2017-1-5-ni-dm.markdown +++ b/_posts/2017-1-5-ni-dm.markdown @@ -1,9 +1,9 @@ --- layout: post title: "NI-DM Apps" -date: 2017-1-5 10:59:06 -categories: Project -image: ni-dm_cropped.png +date: 2017-1-11 10:14:06 +project_categories: Hackathon 2014 +image: nidm-apps-222x180.png description: The 15 Minute DSI Project first began at the 2013 Hackathon in Paris, France. --- ## Summary diff --git a/_posts/2017-1-5-pixel.markdown b/_posts/2017-1-5-pixel.markdown index 503b06d..a40ba83 100644 --- a/_posts/2017-1-5-pixel.markdown +++ b/_posts/2017-1-5-pixel.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Pixel Shader Livecoding" -date: 2017-1-5 10:59:06 -categories: Project -image: pixel_cropped.png +date: 2017-1-1 10:11:06 +project_categories: Hackathon 2014 +image: Screen-Shot-2014-05-07-at-11.39.42-PM-1-222x180.png description: I’ll show preliminary sketches from Zeitgeber, an interactive video projection installation going up in Mumbai next year and talk about how shader livecoding figures into the artistic process. --- ## Summary diff --git a/_posts/2017-1-5-utopia.markdown b/_posts/2017-1-5-utopia.markdown index cd16259..c4b8359 100644 --- a/_posts/2017-1-5-utopia.markdown +++ b/_posts/2017-1-5-utopia.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Utopia-Documents Annotators" -date: 2017-1-5 10:59:06 -categories: Project -image: utopia.png +date: 2017-1-11 10:22:06 +project_categories: Brainhack EDT Boston +image: BrainyUtopiaDocuments.png description: http://utopiadocs.com develop a PDF viewer particularly tuned for scientists. --- ## Summary diff --git a/_posts/2017-1-9-autoseg.markdown b/_posts/2017-1-9-autoseg.markdown index 39a35d0..340b98e 100644 --- a/_posts/2017-1-9-autoseg.markdown +++ b/_posts/2017-1-9-autoseg.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Autoseg SIN" -date: 2017-1-9 10:59:06 -categories: Project -image: autoseg_cropped.png +date: 2017-1-11 10:07:06 +project_categories: Hackathon 2014 +image: autoseg_hackathon_logo.001-222x180.png description: NI-DM is a format of describing neuroimaging experiments results. NeuroVault is a database for storing unthresholded statistical maps. --- ## Summary diff --git a/_posts/2017-1-9-brainspell.markdown b/_posts/2017-1-9-brainspell.markdown index 984bac9..26df455 100644 --- a/_posts/2017-1-9-brainspell.markdown +++ b/_posts/2017-1-9-brainspell.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Brainspell Tagging Sprint" -date: 2017-1-9 10:59:06 -categories: Project -image: brainspell_cropped.png +date: 2017-1-11 10:00:06 +project_categories: Hackathon 2014 +image: Screen-Shot-2014-04-26-at-18.59.08-222x180.png description: More than 1 neuroimaging paper is published every hour. But we can keep up with the literature if we do it all together! --- ## Summary diff --git a/_posts/2017-1-9-datasharing.markdown b/_posts/2017-1-9-datasharing.markdown index db63a1e..68b902a 100644 --- a/_posts/2017-1-9-datasharing.markdown +++ b/_posts/2017-1-9-datasharing.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Data Sharing: Making it Work" -date: 2017-1-9 10:59:06 -categories: Project -image: datasharing_cropped.png +date: 2017-1-11 10:03:06 +project_categories: Hackathon 2014 +image: sharing-222x180.png description: The purpose of this workshop is to bring together key constituents in neuroimaging data. --- ## Summary diff --git a/_posts/2017-1-9-modelgui.markdown b/_posts/2017-1-9-modelgui.markdown index 94f880c..56a91fd 100644 --- a/_posts/2017-1-9-modelgui.markdown +++ b/_posts/2017-1-9-modelgui.markdown @@ -1,9 +1,9 @@ --- layout: post title: "The Modelgui Project" -date: 2017-1-9 10:59:06 -categories: Project -image: modelgui_cropped.png +date: 2017-1-11 10:06:06 +project_categories: Hackathon 2014 +image: volume_and_surface-222x180.png description: The ModelGUI Project is a Java-based, free, open source, platform-independent desktop GUI application for reading/writing, organizing, manipulating, and visualizing neuroscientific datasets. --- ## Summary diff --git a/_posts/2017-1-9-neurostars.markdown b/_posts/2017-1-9-neurostars.markdown index 6df2eaa..7bbd668 100644 --- a/_posts/2017-1-9-neurostars.markdown +++ b/_posts/2017-1-9-neurostars.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Neurostars.org" -date: 2017-1-9 10:59:06 -categories: Project -image: neurostars_cropped.png +date: 2017-1-1 10:01:06 +project_categories: Hackathon 2014 +image: neurostars.logo_-222x180.png description: As part of INCF’s Google Summer of Code, neurostars.org, a question and answer site will incorporate new features. --- ## Summary diff --git a/_posts/2017-1-9-neurovault.markdown b/_posts/2017-1-9-neurovault.markdown index 5231422..c0b720b 100644 --- a/_posts/2017-1-9-neurovault.markdown +++ b/_posts/2017-1-9-neurovault.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Neurovault.org + NI-DM" -date: 2017-1-9 10:59:06 -categories: Project -image: neurovault_cropped.jpg +date: 2017-1-11 10:07:06 +project_categories: Hackathon 2014 +image: 22vault-222x180.jpg description: NI-DM is a format of describing neuroimaging experiments results. NeuroVault is a database for storing unthresholded statistical maps. --- ## Summary diff --git a/_posts/2017-1-9-nitrcresources b/_posts/2017-1-9-nitrcresources.markdown similarity index 95% rename from _posts/2017-1-9-nitrcresources rename to _posts/2017-1-9-nitrcresources.markdown index 8961c41..e351de4 100644 --- a/_posts/2017-1-9-nitrcresources +++ b/_posts/2017-1-9-nitrcresources.markdown @@ -1,9 +1,9 @@ --- layout: post title: "MRI Quality Control" -date: 2017-1-9 10:59:06 -categories: Project -image: nitrcresources.png +date: 2017-1-11 10:05:06 +project_categories: Hackathon 2014 +image: NITRC-TRIAD240pixwidth-222x180.png description: Currently it supports plotting information about tSNR, coregistration and motion. --- ## Summary diff --git a/_posts/2017-1-9-qualitycontrol.markdown b/_posts/2017-1-9-qualitycontrol.markdown index 3ef5a6e..4eb5342 100644 --- a/_posts/2017-1-9-qualitycontrol.markdown +++ b/_posts/2017-1-9-qualitycontrol.markdown @@ -1,9 +1,9 @@ --- layout: post title: "MRI Quality Control" -date: 2017-1-9 10:59:06 -categories: Project -image: qualitcontrol_cropped.jpeg +date: 2017-1-11 10:08:06 +project_categories: Hackathon 2014 +image: n-doors-lighting-guality01-222x180.jpeg description: Currently it supports plotting information about tSNR, coregistration and motion. --- ## Summary diff --git a/_posts/2017-1-9-spinalcord.markdown b/_posts/2017-1-9-spinalcord.markdown index ed76514..c6eca37 100644 --- a/_posts/2017-1-9-spinalcord.markdown +++ b/_posts/2017-1-9-spinalcord.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Spinalcordhack 2014" -date: 2017-1-9 10:59:06 -categories: Project -image: spinalcord_cropped.jpg +date: 2017-1-11 10:02:06 +project_categories: SpinalCordHack 2014 +image: Screen-shot-2012-09-20-at-9.54.57-PM-222x180.jpg description: This half day event will take place near the conference venue on Friday May 16th, 2014 with the support of the International Spinal Research Trust. --- ## Summary diff --git a/_posts/2017-1-9-xnat.markdown b/_posts/2017-1-9-xnat.markdown index 8b14ac0..dbe1a2f 100644 --- a/_posts/2017-1-9-xnat.markdown +++ b/_posts/2017-1-9-xnat.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Nipype for XNAT" -date: 2017-1-9 10:59:06 -categories: Project -image: xnat.png +date: 2017-1-11 10:04:06 +project_categories: Hackathon 2014 +image: XNAT_logo_blue_bkgd.png description: For this project, we will add UI and infrastructure in XNAT to manage and run nipype pipelines. --- ## Summary diff --git a/_posts/2017-12-18-brainhackgradients.markdown b/_posts/2017-12-18-brainhackgradients.markdown new file mode 100644 index 0000000..c8d1fea --- /dev/null +++ b/_posts/2017-12-18-brainhackgradients.markdown @@ -0,0 +1,21 @@ +--- +layout: post +title: "Brainhack Gradients 2017" +date: 2017-12-18 22:31:06 +big: 1 +project_categories: Events 2017 +image: brainhackgradients.png +description: Brainhack Gradients 2017 +--- + +### Location +[Max Planck Institute for Human Cognitive and Brain Sciences, Leipzig, Germany](https://goo.gl/maps/wAq4ia82dvE2) + + +### Web page + +[link](http://www.cbs.mpg.de/events/11617/339335) + +### Contact +Daniel Margulies \\ +[margulies@cbs.mpg.de](mailto:margulies@cbs.mpg.de) diff --git a/_posts/2017-2-1-global2017.markdown b/_posts/2017-2-1-global2017.markdown index 682beab..d57a767 100644 --- a/_posts/2017-2-1-global2017.markdown +++ b/_posts/2017-2-1-global2017.markdown @@ -2,14 +2,15 @@ layout: post title: "Brainhack Global 2017" date: 2017-2-1 13:53 -categories: Project -image: brainhackglobal.png +project_categories: Events 2017 +image: Screen-Shot-2017-01-16-at-10.29.22-AM-466x180.png +big: 1 description: Synchronized Brainhack Events in 40 cities, in 15 countries, on 4 continents. --- ## Summary -You are invited to attend [Brainhack Global 2017](http://events.brainhack.org/global2017) at one of 40 regional events in 15 countries during March 2 - 5, 2017. +You are invited to attend [Brainhack Global 2017](http://brainhack.org/global2017) at one of 40 regional events in 15 countries during March 2 - 5, 2017. -[Brainhack](http://events.brainhack.org) is a unique conference that convenes researchers from myriad disciplines to work together on innovative projects related to neuroscience. Brainhack Global will host several simultaneous to build a critical mass for the regional Brainhack movement and provide opportunities for inter-Brainhack collaboration. Local events will be connected by videoconference to expand collaborative opportunities so that smaller sites can plug into the content and energy generated at larger sites. +[Brainhack](http://brainhack.org) is a unique conference that convenes researchers from myriad disciplines to work together on innovative projects related to neuroscience. Brainhack Global will host several simultaneous to build a critical mass for the regional Brainhack movement and provide opportunities for inter-Brainhack collaboration. Local events will be connected by videoconference to expand collaborative opportunities so that smaller sites can plug into the content and energy generated at larger sites. In addition to time spent collaborating on neuroscience projects, activities at the Brainhack will include: @@ -38,4 +39,4 @@ Events will be held in: ## Contact -Please refer to [events.brainhack.org/global2017](events.brainhack.org/global2017) to register for a local event and please pass this invitation on to your friends and colleagues. +Please refer to [brainhack.org/global2017](brainhack.org/global2017) to register for a local event and please pass this invitation on to your friends and colleagues. diff --git a/_posts/2017-2-14-ghent2017.markdown b/_posts/2017-2-14-ghent2017.markdown index 57bcc12..ffb7efb 100644 --- a/_posts/2017-2-14-ghent2017.markdown +++ b/_posts/2017-2-14-ghent2017.markdown @@ -2,8 +2,8 @@ layout: post title: "Brainhack Ghent 2017" date: 2017-2-14 13:53 -categories: Project -image: BrainhackGhent2017.jpeg +project_categories: Events 2017 +image: BrainhackGhent2017222x180.jpeg description: Brainhack@Ghent April 12-13th at the Faculty of Psychology and Educational Sciences. --- ## Summary diff --git a/_posts/2017-2-23-LIMO.markdown b/_posts/2017-2-23-LIMO.markdown new file mode 100644 index 0000000..8cc407a --- /dev/null +++ b/_posts/2017-2-23-LIMO.markdown @@ -0,0 +1,17 @@ +--- +layout: post +title: "LIMO EEG Toolbox" +date: 2017-2-24 10:31:06 +project_categories: Warwick 2017 +image: limo-222x180.png +description: The LIMO EEG toolbox implements linear analyses of eeg data with robust stats +--- +## Summary + +This tutorial will briefly describe what the LIMO EEG toolbox does (linear analyses of eeg data with robust stats), and open nature of the project and how people can contribute, develop and get credit / papers with that project + +[https://github.com/LIMO-EEG-Toolbox](https://github.com/LIMO-EEG-Toolbox) + +## Contact +Cyril Pernet +[cyril.pernet@ed.ac.uk](mailto:cyril.pernet@ed.ac.uk) diff --git a/_posts/2017-2-23-fmriprep.markdown b/_posts/2017-2-23-fmriprep.markdown new file mode 100644 index 0000000..a9c3ae7 --- /dev/null +++ b/_posts/2017-2-23-fmriprep.markdown @@ -0,0 +1,17 @@ +--- +layout: post +title: "FMRIPREP" +date: 2017-2-24 10:31:06 +project_categories: San Francisco 2017 +image: fmriprep-222x180.png +description: Potential hackathon projects related to the FMRIPREP tool +--- +## Summary + +FMRIPREP is a robust fMRI preprocessing tool that aims at providing the best results possible independently of the origin of the input data (see [http://fmriprep.readthedocs.io](http://fmriprep.readthedocs.io) for more details). The tool is under active development. There are a few small, self-contained, yet interesting features/issues that could potentially be picked up by Brainhack Global participants. We have listed them on [https://github.com/poldracklab/fmriprep/labels/potential%20hackathon%20project](https://github.com/poldracklab/fmriprep/labels/potential%20hackathon%20project) - get in touch if you would like to work on any of those mini projects! + +[http://fmriprep.readthedocs.io](http://fmriprep.readthedocs.io) + +## Contact +Chris Gorgolewski +[krzysztof.gorgolewski@gmail.com](mailto:krzysztof.gorgolewski@gmail.com) diff --git a/_posts/2017-2-24-deep-neurons.markdown b/_posts/2017-2-24-deep-neurons.markdown new file mode 100644 index 0000000..39e059c --- /dev/null +++ b/_posts/2017-2-24-deep-neurons.markdown @@ -0,0 +1,15 @@ +--- +layout: post +title: "Deep Neurons" +date: 2017-2-24 10:31:06 +project_categories: Montreal 2017 +image: deep-neurons-logo.jpg +description: Deep Learning for automatic segmentation and classification of individual neurons in high-resolution histological scans. +--- +## Summary +[https://github.com/crocodoyle/deep-neurons](https://github.com/crocodoyle/deep-neurons) + + +## Contact +Andrew Doyle +[astajd@astajd.com](mailto:astajd@astajd.com) diff --git a/_posts/2017-2-24-mriqc.markdown b/_posts/2017-2-24-mriqc.markdown new file mode 100644 index 0000000..a42f396 --- /dev/null +++ b/_posts/2017-2-24-mriqc.markdown @@ -0,0 +1,16 @@ +--- +layout: post +title: "MRIQC" +date: 2017-2-24 10:31:06 +project_categories: San Francisco 2017 +image: MRIQC-brainhack.png +description: MRIQC is a robust T1-weighted and fMRI quality control tool with focus on visualization reports and automatic quality prediction. +--- +## Summary +[MRIQC](http://mriqc.readthedocs.io) is a robust T1-weighted and fMRI quality control tool with focus on visualization reports and automatic quality prediction. Here is a [list](https://github.com/poldracklab/mriqc/issues?q=is%3Aopen+is%3Aissue+label%3A%22potential+hackathon+project%22) of ways that you can contribute to this ongoing development effort. + + +## Contact +Oscar Esteban +[oesteban@stanford.edu](mailto:oesteban@stanford.edu) +[https://github.com/poldracklab/mriqc](https://github.com/poldracklab/mriqc) diff --git a/_posts/2017-2-26-autism-gradients.markdown b/_posts/2017-2-26-autism-gradients.markdown new file mode 100644 index 0000000..8c1faa6 --- /dev/null +++ b/_posts/2017-2-26-autism-gradients.markdown @@ -0,0 +1,23 @@ +--- +layout: post +title: "Autism Gradients" +date: 2017-2-26 10:31:06 +project_categories: Cambridge 2017 +image: autism_gradients-222x180.png +description: Investigate cortical hierarchy in autism by looking at the steepness of the connectivity gradient. +url: https://github.com/rb643/gradients +--- +## Summary +Most of the theoretical foundations on the use of gradient can be found in: [http://www.pnas.org/content/113/44/12574](http://www.pnas.org/content/113/44/12574). + +In short, Margulies et al. show how the primary connectivity gradient very closely resembles the topology of the default mode network and that there appears to be some hierarchy in this gradient that follows the hierarchy of complexity in cognitive processing (ranging from low-level sensory processing to higher order cognition). + +In Autism research there are numerous theories regarding alterations in functional connectivity. Ranging from a global theory suggesting short-range over connectivity and long-range underconnectivity (Belmonte et al. 2004) and more specific examples of specific connection mainly in anterior=posterior connections (Courchesne et al.). From a more cognitive perspective it might be interesting to see if some of this is also represented in some for of disruption in cortical hierarchy. If for example individuals with autism have a strong talent for very detailed functions, but possibly less capacity to intergrate information from different sources/modalities one could hypothesize that the cortical hierarchy might be disrupted. + +Thus, in the present project we would like to investigate these cortical hierarchy by looking at the steepness of the connectivity gradient. + +[https://github.com/rb643/gradients](https://github.com/rb643/gradients) + +## Contact +Richard Bethlehem +[rb643@medschl.cam.ac.uk](mailto:rb643@medschl.cam.ac.uk) diff --git a/_posts/2017-2-26-brainspell.markdown b/_posts/2017-2-26-brainspell.markdown new file mode 100644 index 0000000..2771c7d --- /dev/null +++ b/_posts/2017-2-26-brainspell.markdown @@ -0,0 +1,20 @@ +--- +layout: post +title: "Brainspell" +date: 2017-2-26 10:31:06 +project_categories: San Francisco 2017 +image: brainspell.png +description: Brainspell is a platform for the human curation of neuroimaging literature. +url: https://github.com/neelsomani/brainspell-neo +--- +## Summary +Brainspell is a platform for the human curation of neuroimaging literature. For our project, we built a JSON API, which can be used directly by developers or as the backend for a user interface. + +[https://github.com/neelsomani/brainspell-neo](https://github.com/neelsomani/brainspell-neo) + +## Contact +Neel Somani +[neel@berkeley.edu](mailto:neel@berkeley.edu) + +Sharabesh Ramesh +[sharabesh@berkeley.edu](mailto:sharabesh@berkeley.edu) diff --git a/_posts/2017-2-27-neurohackweek.markdown b/_posts/2017-2-27-neurohackweek.markdown new file mode 100644 index 0000000..8890345 --- /dev/null +++ b/_posts/2017-2-27-neurohackweek.markdown @@ -0,0 +1,45 @@ +--- +layout: post +title: "Neurohackweek 2017" +date: 2017-2-27 10:31:06 +big: 1 +project_categories: Events 2017 +image: neurohackweek-bg-466x180.png +description: We are happy to announce a call for applications to participate in the Neurohackweek summer school for neuroimaging and data science. +--- + +## Summary + +*Photo by Tiffany von Armin* + +This 5 day hands-on workshop, held at the University of Washington eScience Institute in Seattle, will focus on technologies used to analyze human neuroscience data, on methods used to extract information from large datasets of publicly available data (such as the International Neuroimaging Data-sharing Initiative, Human Connectome Project, OpenfMRI, etc.), and on tools for making human neuroscience research open and reproducible. + +Morning sessions will be devoted to lectures and tutorials, and afternoon sessions will be devoted to participant-directed activities: guided work on team projects, hackathon sessions, and breakout sessions on topics of interest. + +For more details, see [http://neurohackweek.github.io/](http://neurohackweek.github.io/) + +We are now accepting applications from trainees and researchers in different stages of their career (graduate students, postdocs, faculty, and research staff) to participate at: [https://form.jotformeu.com/70342294106348](https://form.jotformeu.com/70342294106348) + +Some experience in human neuroscience and at least basic knowledge in programming is desired, but we welcome applications from participants with a variety of relevant backgrounds. + +Accepted applicants will be asked to pay a fee of $200 upon final registration. This fee will include participation in the course, accommodation in the UW dorms, and two meals a day (breakfast and lunch), for the duration of the course. A limited number of fee waivers and travel grants will be available. We encourage students with financial need and students from groups that are underrepresented in neuroimaging and data science to apply for these grants (see application form for details). + +Important dates: + +- April 18th: Deadline for applications to participate +- May 6th: Notification of acceptance +- June 1st: Final registration deadline + +On behalf of the instructors, + +Ariel Rokem, UW eScience \\ +Tal Yarkoni, UT Austin + + +## Contact + +Ariel Rokem +[arokem@gmail.com](mailto:arokem@gmail.com) + +Tal Yarkoni +[tyarkoni@gmail.com](mailto:tyarkoni@gmail.com) diff --git a/_posts/2017-2-28-image_matching.markdown b/_posts/2017-2-28-image_matching.markdown new file mode 100644 index 0000000..8fe8a53 --- /dev/null +++ b/_posts/2017-2-28-image_matching.markdown @@ -0,0 +1,16 @@ +--- +layout: post +title: "Image Matching" +date: 2017-2-27 10:31:06 +big: 0 +project_categories: Montreal 2017 +image: image_matching-222x180.png +description: We are using deep learning in order to segment axons in histological images. +--- + +### Summary +Many images are different despite using the same imaging protocol. We would like to extract features from the training data and try image processing on the testing data to make the features match. + +### Contact +Pierre-Louis Antonsanti \\ +[piloa08@gmail.com](mailto:piloa08@gmail.com) diff --git a/_posts/2017-2-28-neuropy.markdown b/_posts/2017-2-28-neuropy.markdown new file mode 100644 index 0000000..4168985 --- /dev/null +++ b/_posts/2017-2-28-neuropy.markdown @@ -0,0 +1,19 @@ +--- +layout: post +title: "Neuropy" +date: 2017-2-27 10:31:06 +big: 0 +project_categories: Warwick 2017 +image: NeuroPyLogo.png +description: Explore ways in which python can be used to represent, compare and manipulate data, with a key focus on applying these methods to neuroimaging results +--- + +### Summary +We will first familiarise ourselves with tools available in python for neuroimaging by working through a series of tutorials available at the Data Carpentry github repository: https://github.com/datacarpentry/python-neuroimaging-lesson + +We will then apply these methods to results obtained from openly available neuroimaging datasets analysed using SPM, FSL and AFNI. Building on the notebooks available in the tutorials, the goal of the project is to create a notebook displaying and comparing these results in an open and reproducible way. + + +### Contact +Alex Bowring \\ +[a.bowring@warwick.ac.uk](mailto:a.bowring@warwick.ac.uk) diff --git a/_posts/2018-02-12-brainhackparisanatomy.markdown b/_posts/2018-02-12-brainhackparisanatomy.markdown new file mode 100644 index 0000000..fea1de2 --- /dev/null +++ b/_posts/2018-02-12-brainhackparisanatomy.markdown @@ -0,0 +1,17 @@ +--- +layout: post +title: "Brainhack in Paris: Anatomy" +date: 2018-02-12 16:31:06 +big: 1 +project_categories: Events 2018 +image: brainhack_paris_anatomy_2018.png +description: "19-21 February 2018 at Mozilla Paris" +--- + +### Location + +Mozilla, 16 Boulevard Montmartre, 75009 Paris + +### Registration + +[Link for more information](http://www.bcblab.com/BCB/Events/Entries/2018/2/19_BrainHack_in_Paris__Anatomy.html) diff --git a/_posts/2018-06-09-brainhackparisnetworks.markdown b/_posts/2018-06-09-brainhackparisnetworks.markdown new file mode 100644 index 0000000..d166fc6 --- /dev/null +++ b/_posts/2018-06-09-brainhackparisnetworks.markdown @@ -0,0 +1,22 @@ +--- +layout: post +title: "Brainhack Networks" +date: 2018-06-09 16:31:06 +big: 1 +project_categories: Events 2018 +image: bhack_networks_2018.png +description: "9 & 10 of June 2018, Brain and Spine Institute, Paris" +--- +## Description + +This two days hackathon will cover a variety of topics related to network science for neuroscience/imaging research, including code development, data modeling and analysis, as well as results interpretation. An international team of renown experts in the field of network science and neuroscience will coordinate the event in an effort to boost the realization of the projects. + +### Location + +Brain and Spine Institute, Paris, FR + +### For more Information + +[Brainhack Networks Webpage](http://brainhack-networks.com) +[email contact](mailto:contact@brainhack-networks.com) + diff --git a/_posts/2018-06-14-ohbmhackathon.markdown b/_posts/2018-06-14-ohbmhackathon.markdown new file mode 100644 index 0000000..12011bc --- /dev/null +++ b/_posts/2018-06-14-ohbmhackathon.markdown @@ -0,0 +1,13 @@ +--- +layout: post +title: "2018 OHBM Hackathon" +date: 2018-06-14 09:00:00 +big: 1 +project_categories: Events 2018 +image: ohbm-2018-logo-466x180.png +description: The 2018 OHBM Hackathon will take place June 14 - 16 at the National University of Singapore, U-Town campus, Singapore. +--- +## OHBM Hackathon 2018 +The 2018 OHBM Hackathon will take place June 14 - 16 at the National University of Singapore, U-Town campus, Singapore. For more information visit: [http://ohbm.github.io/hackathon2018](http://ohbm.github.io/hackathon2018) + +– The OHBM Hackathon Organizing Committee diff --git a/_posts/2018-10-24-brainhackzurich.markdown b/_posts/2018-10-24-brainhackzurich.markdown new file mode 100644 index 0000000..ee1e218 --- /dev/null +++ b/_posts/2018-10-24-brainhackzurich.markdown @@ -0,0 +1,18 @@ +--- +layout: post +title: "Brainhack Zurich 2018" +date: 2018-10-24 09:00:00 +big: 1 +project_categories: Events 2018 +image: BrainhackZurich_logo_466x180.png +description: Brainhack Zurich 2018 will take place from October 24-26 at ETH Zurich & University Hospital Zurich. +--- +## Brainhack Zurich 2018 + +Location: ETH Zurich, University Hospital Zurich + +URL: [http://www.brainhackzurich.ch/](http://www.brainhackzurich.ch/) + +Description: Zurich's first independent Brainhack event, jointly hosted by the ETH and University of Zurich. We bring together free and open neuroscience enthusiasts from around central Europe for two days of talks, tutorials, and collaborative hacking. + +Contact information: alessandro.crimi@uzh.ch, ioanas@biomed.ee.ethz.ch, amelie.haugg@bli.uzh.ch, melanie.jambeau@imls.uzh.ch diff --git a/_posts/2018-11-08-brainhackla.markdown b/_posts/2018-11-08-brainhackla.markdown new file mode 100644 index 0000000..468d891 --- /dev/null +++ b/_posts/2018-11-08-brainhackla.markdown @@ -0,0 +1,18 @@ +--- +layout: post +title: "LA Brainhack 2018" +date: 2018-11-18 09:00:00 +big: 1 +project_categories: Events 2018 +image: LA-Brainhack_logo_466x180.png +description: The LA Brainhack 2018 will take place November 18 - 19 at the Information Sciences Institute, Marina del Rey. +--- +## LA Brainhack 2018 + +Location: Information Sciences Institute (ISI), 4676 Admiralty Way #1001, Marina del Rey, CA 90292 + +URL: [https://labrainhack.github.io/](https://labrainhack.github.io) + +Description: The goal of this hackathon to bring together researchers with disparate backgrounds to collaborate on open science projects in neuroimaging. The event will take place right after SFN 2018 in San Diego, which is the biggest gathering of neuroscientists in the world, and will be a great opportunity to connect, create and code. + +Contact information: Pamela Douglas (pamelita@g.ucla.edu), Dan Moyer (dcmoyer@gmail.com), Julio Villalón (jevillalonr@gmail.com) diff --git a/_posts/2018-12-05-brainhackpadova.markdown b/_posts/2018-12-05-brainhackpadova.markdown new file mode 100644 index 0000000..a8c4cbe --- /dev/null +++ b/_posts/2018-12-05-brainhackpadova.markdown @@ -0,0 +1,22 @@ +--- +layout: post +title: "Brainhack in Padova: Evolution" +date: 2018-12-04 09:00:00 +big: 1 +project_categories: Events 2018 +image: BrainhackPadova_logo_466x180.png +description: Brainhack in Padova will take place from December 5-7, 2018 +--- +## Brainhack in Padova: Evolution + +Location: University of Padova, 8 Via Venezia, 35131 Padua, Italy + +URL: [www.bcblab.com/BCB/Events/Entries/2018/12/5_BrainHack_in_Padova__The_Evolution_of_the_Mind_and_the_Brain.html](http://www.bcblab.com/BCB/Events/Entries/2018/12/5_BrainHack_in_Padova__The_Evolution_of_the_Mind_and_the_Brain.html) + +Description: Registration is now open! +Registration is FREE but mandatory via email to michel.thiebaut@gmail.com +!!!Deadline for registration is 30th of November 2018!!! +This workshop integrates all levels of expertise and is also an opportunity to learn methods, develop skills, and collaborate with other participants. +Join the fun! + +Contact information: michel.thiebaut@gmail.com diff --git a/_posts/2018-5-1-global2018.markdown b/_posts/2018-5-1-global2018.markdown new file mode 100644 index 0000000..9688a8c --- /dev/null +++ b/_posts/2018-5-1-global2018.markdown @@ -0,0 +1,26 @@ +--- +layout: post +title: "Brainhack Global 2018" +date: 2018-5-1 13:53 +project_categories: Events 2018 +image: bhack_global_2018.png +big: 1 +description: Synchronized Brainhack events occuring at multiple sites globally. +--- +## Summary +You are invited to attend [Brainhack Global 2018](http://brainhack.org/global2018) at one of the regional events occuring accross the globe. + +[Brainhack](http://brainhack.org) is a unique conference that convenes researchers from myriad disciplines to work together on innovative projects related to neuroscience. Brainhack Global will host several simultaneous to build a critical mass for the regional Brainhack movement and provide opportunities for inter-Brainhack collaboration. Local events will be connected by videoconference to expand collaborative opportunities so that smaller sites can plug into the content and energy generated at larger sites. + +In addition to time spent collaborating on neuroscience projects, activities at the Brainhack will include: + +- Tutorials on basic software development skills called “Brainhacking 101” +- Keynotes from neuroscience and methods researchers including: Fernando Chirigati, Emily Finn, Leon French, Bernard Mazoyer, Jason Lerch, Angie Laird, Micheal Milham, Gustav Nilsonne, Vesna Prchkovska, Paulo Rodrigues, Monica Rosenberg, Stephen Strother, Enzo Tagliazucchi, Lucina Uddin, Anne Wheeler and many more. +- Open conference sessions during which attendees can present their research +- Brainhack has partnered with GigaScience to publish the “Proceedings from Brainhack Americas”. Brainhack attendees will be eligible to submit project reports describing the work that they performed during the event, which will be peer reviewed and edited by members of the Brainhack community. + +Refer to the [Brainhack Global 2018 webpage](http://brainhack.org/global2018) for a complete list of locations. + + +## Contact +Please refer to [brainhack.org/global2018](brainhack.org/global2018) to register for a local event and please pass this invitation on to your friends and colleagues. diff --git a/_posts/2019-03-22-brainhackgeneva.markdown b/_posts/2019-03-22-brainhackgeneva.markdown new file mode 100644 index 0000000..33426e0 --- /dev/null +++ b/_posts/2019-03-22-brainhackgeneva.markdown @@ -0,0 +1,17 @@ +--- +layout: post +title: "Brainhack Open Geneva 2019" +date: 2019-03-22 09:00:00 +big: 1 +project_categories: Events 2019 +image: brainhack_geneva2019.png +description: Brainhack Open Geneva will take place from March 22-23, 2019 +--- +## Brainhack Open Geneva 2019 + +Location: Campus Biotech, Geneva, Switzerland +Website: [www.brainhack.ch](https://brainhack.ch) + +Come and join our 2-day Brainhack on March Friday 22nd / Saturday 23rd! While all projects will deal with the brain, quite a few will explore beyond imaging, with projects mixing imaging with virtual reality, brain stimulation, or even live 3D printed brains. Everyone is welcome, whatever their background! For more information, and to join us, check out our website at [www.brainhack.ch](https://brainhack.ch) + +Contact: michael.dayan@fcbg.ch diff --git a/_posts/2019-05-05-donostia.markdown b/_posts/2019-05-05-donostia.markdown new file mode 100644 index 0000000..ea5839b --- /dev/null +++ b/_posts/2019-05-05-donostia.markdown @@ -0,0 +1,12 @@ +--- +layout: post +title: "Brainhack Donostia" +date: 2019-5-05 10:43:06 +project_categories: Events 2019 +image: donostia_05052019.png +big: 1 +description: Brainhack Donostia will take place May 5 - 8, 2019. +project_url: http://brainhackdonostia.pages.bcbl.eu +--- + +Brainhack Vienna will take place May 5 - 8, 2019. For more information visit: [https://brainhackdonostia.pages.bcbl.eu/](https://brainhackdonostia.pages.bcbl.eu/) diff --git a/_posts/2019-08-05-brainhack-school.markdown b/_posts/2019-08-05-brainhack-school.markdown new file mode 100644 index 0000000..7acd1fd --- /dev/null +++ b/_posts/2019-08-05-brainhack-school.markdown @@ -0,0 +1,18 @@ +--- +layout: post +title: "Brainhack School" +date: 2019-08-05 10:43:06 +project_categories: Events 2019 +image: brainhack_school_2019.png +big: 1 +description: August 5 - 30, Montreal +--- +The Montreal BrainHack School is a 4-weeks long full-time educational workshop, which will train participants in a range of fundamental tools for neuronal data science, applied at the interface of Neuroscience, Statistical modelling and Computer Science, using a project-based, multidisciplinary approach. The school is an initiative of the group for the union of neuroscience and artificial intelligence in Québec (UNIQUE), and features instructors from four institutions: McGill, Université de Montréal, École Polytechnique and Concordia University. + +Graduate students (Master and PhD) at the psychology department of Université de Montréal can register to brainhack school as a 3 credit course called "PSY 6983 - Projet en sciences des données neuronales" . Graduate students at École Polytechnique, Concordia University and McGill University can register to PSY 6983 through the Bureau de coopération inter-universitaire. Participants from outside of the partner institutions can register too. + +Dates: August 5th - 30th, 2019 +Costs: free for partner institutions, 50 CAD otherwise +Location: McGill (week 1), Université de Montréal (week 2), École Polytechnique (week 3) et Université Concordia (week 4), Montréal, Canada +Website: [https://brainhackmtl.github.io/school2019/index_fr.html](https://brainhackmtl.github.io/school2019/index_fr.html) +Registration: [https://www.eventbrite.ca/e/brainhack-school-2019-registration-59972899557](https://www.eventbrite.ca/e/brainhack-school-2019-registration-59972899557) diff --git a/_posts/2019-08-19-neurodata.markdown b/_posts/2019-08-19-neurodata.markdown new file mode 100644 index 0000000..5442ccf --- /dev/null +++ b/_posts/2019-08-19-neurodata.markdown @@ -0,0 +1,10 @@ +--- +layout: post +title: "NeuroData Workshop" +date: 2019-08-19 10:43:06 +project_categories: Events 2019 +image: neurodata_purple.png +big: 1 +description: August 19-23, Baltimore MD +--- +The weeklong workshop to be held held Aug 19-23 has three main objectives -- sharing the theory and intuition behind myriad of powerful methods we have developed over the past ten years, showcasing the applicability of these methods on relevant problems and datasets, and helping our collaborators and community use these methods for their own work. Each day we will focus on a cohesive collection of tools with the three main objectives in mind. For more information visit [https://neurodata.devpost.com/](https://neurodata.devpost.com/) diff --git a/_posts/2019-09-07-compMRI2019.markdown b/_posts/2019-09-07-compMRI2019.markdown new file mode 100644 index 0000000..6cf1420 --- /dev/null +++ b/_posts/2019-09-07-compMRI2019.markdown @@ -0,0 +1,13 @@ +--- +layout: post +title: "Brainhack: Comparative MRI" +date: 2019-09-07 09:00 +project_categories: Events 2019 +image: bhack_compMRI_2019.png +big: 1 +description: +--- +## Summary +Join us for [Brainhack: Comparative MRI](https://brainhack-compmri.neurobureau.org), which will be held in **London on September 7-8, 2019**, following the [PRIME-DE Global Collaboration Workshop](http://fcon_1000.projects.nitrc.org/indi/PRIME/Workshop_reg.html) + +Further information can be found at our webpage: [Brainhack: Comparative MRI](https://brainhack-compmri.neurobureau.org) diff --git a/_posts/2019-10-01-brainhackgeneva.markdown b/_posts/2019-10-01-brainhackgeneva.markdown new file mode 100644 index 0000000..bb0d45b --- /dev/null +++ b/_posts/2019-10-01-brainhackgeneva.markdown @@ -0,0 +1,17 @@ +--- +layout: post +title: "Brainhack Global Geneva 2019" +date: 2019-10-01 09:00:00 +big: 1 +project_categories: Events 2019 +image: brainhack_geneva2019_global.png +description: Brainhack Global Geneva will take place from November 7-9, 2019 +--- +## Brainhack Global Geneva 2019 + +Location: Campus Biotech, Geneva, Switzerland +Website: [www.brainhack.ch](https://brainhack.ch) + +Come and join our 2-day ½ Brainhack on November Friday 8th / Saturday 9th with a pre-event on Thursday 7th late afternoon for project pitches and drinks! While all projects will deal with the brain, quite a few will explore beyond imaging, with projects mixing imaging with augmented reality, brain stimulation and brain-computer interfaces. Everyone is welcome, whatever their background. For more information, and to join us, check out our website at www.brainhack.ch + +Contact: michael.dayan@fcbg.ch diff --git a/_posts/2019-10-01-global2019.markdown b/_posts/2019-10-01-global2019.markdown new file mode 100644 index 0000000..9fc17df --- /dev/null +++ b/_posts/2019-10-01-global2019.markdown @@ -0,0 +1,24 @@ +--- +layout: post +title: "Brainhack Global 2019" +date: 2019-11-13 13:53 +project_categories: Events 2019 +image: bhack_global_2019.png +big: 1 +description: Synchronized Brainhack events occuring at multiple sites globally. +--- +## Summary +You are invited to attend [Brainhack Global 2019](http://brainhack.org/global2019) at one of the regional events occuring accross the globe. + +[Brainhack](http://brainhack.org) is a unique conference that convenes researchers from myriad disciplines to work together on innovative projects related to neuroscience. Brainhack Global will host several simultaneous to build a critical mass for the regional Brainhack movement and provide opportunities for inter-Brainhack collaboration. Local events will be connected by videoconference to expand collaborative opportunities so that smaller sites can plug into the content and energy generated at larger sites. + +In addition to time spent collaborating on neuroscience projects, activities at the Brainhack will include: + +- Tutorials on basic software development skills called “Brainhacking 101” +- Keynotes from neuroscience and methods researchers +- Open conference sessions during which attendees can present their research + +Refer to the [Brainhack Global 2019 webpage](http://brainhack.org/global2019) for a complete list of locations. + +## Contact +Please refer to [brainhack.org/global2019/#host](http://www.brainhack.org/global2019/#host) to register for a local event and please pass this invitation on to your friends and colleagues. diff --git a/_posts/2019-10-03-brainhackzurich2019.markdown b/_posts/2019-10-03-brainhackzurich2019.markdown new file mode 100644 index 0000000..45e8b4a --- /dev/null +++ b/_posts/2019-10-03-brainhackzurich2019.markdown @@ -0,0 +1,19 @@ +--- +layout: post +title: "2nd Brainhack Zurich, 2019" +date: 2019-10-03 09:00:00 +big: 1 +project_categories: Events 2019 +image: BrainhackZurich2019_logo_466x180.png +description: 2nd Brainhack Zurich, 2019 will take place from October 3rd-4th at Zurich TGIM Space. +--- +## 2nd Brainhack Zurich, 2019 + +Location: Zurich TGIM Space + +URL: [http://www.brainhackzurich.ch/](http://www.brainhackzurich.ch/) + +Description: Building on the succest of last year's event, we return in 2019 for Zurich's second independent Brainhack. +With more brain, and more hack. Join us on a 2 day adventure, bringing together neuroscientists, software developers, electrical engineers, and what is possibly the world's largest community of mouse MRI brainhackers. + +Contact information: ioanas@biomed.ee.ethz.ch diff --git a/_posts/2019-10-15-vienna.markdown b/_posts/2019-10-15-vienna.markdown new file mode 100644 index 0000000..5a9ed2d --- /dev/null +++ b/_posts/2019-10-15-vienna.markdown @@ -0,0 +1,20 @@ +--- +layout: post +title: "Brainhack Vienna, 2019" +date: 2019-10-15 09:00:00 +big: 1 +project_categories: Events 2019 +image: brainhack_vienna_2019.jpg +description: Brainhack Vienna will take place from December 11th-13th at Complexity Science Hub. +--- + +Hosts: CIR Medical University of Vienna, Complexity Science Hub Vienna + +Location: Complexity Science Hub Vienna, Austria + +URL: [https://brainhack-vienna.github.io/](https://brainhack-vienna.github.io/) + +Description: Brainhack Vienna will orbit around the EvoDevo theme. We aim to bring together a diverse crowd of neuroscientists, neuroimaging geeks, evolutionary biologists, antropologists and developmental scientists to tackle exciting interdisciplinary problems across the fields. +The brainhack will include unconference talks and lots of hacking on various datasets, dataset mergers and non-coding projects. + +Contact information: brainhack.vienna@gmail.com \ No newline at end of file diff --git a/_posts/2020-01-21-openmrbenelux.markdown b/_posts/2020-01-21-openmrbenelux.markdown new file mode 100644 index 0000000..84656da --- /dev/null +++ b/_posts/2020-01-21-openmrbenelux.markdown @@ -0,0 +1,20 @@ +--- +layout: post +title: "OpenMR Benelux 2020" +date: 2020-01-21 09:00:00 +big: 1 +project_categories: Events 2020 +image: OpenMRBenelux2020.png +description: OpenMR Benelux 2020 will take place from January 21st-23rd at the Donders Institute for Cognition, Brain and Behaviour in Nijmegen, The Netherlands. +--- + +Location: Donders Institute for Cognition, Brain and Behaviour in Nijmegen, The Netherlands + +URL: [https://openmrbenelux.github.io/](https://openmrbenelux.github.io/) + +Description: Like many other fields, MRI research greatly profits from the collaboration between researchers, users, developers, and industry. With OpenMR Benelux 2020, we want to demonstrate how an increasingly open network can help us create innovative solutions to problems we face.

+With a wide range of topics, our goal is to welcome attendees from technical or clinical backgrounds and to discuss open science practices in magnetic resonance imaging research. Topics will range from open data science practices and new initiatives in scientific publishing to practical introductions to open source software, version control, and a variety of open source MRI toolboxes.

+Our goal is to have something for everyone and to create enough opportunities for discussion, learning from each other, and working together on innovative solutions.

+[Register now](https://openmrbenelux.github.io/page-registration/)! + +Contact information: openmrbenelux@gmail.com diff --git a/_posts/2020-02-20-sf.markdown b/_posts/2020-02-20-sf.markdown new file mode 100644 index 0000000..6379241 --- /dev/null +++ b/_posts/2020-02-20-sf.markdown @@ -0,0 +1,23 @@ +--- +layout: post +title: "San Francisco Brainhack 2020" +date: 2020-02-20 09:00:00 +big: 1 +project_categories: Events 2020 +image: SF_brainhack_3.png +description: San Francisco Brainhack 2020 will take place from February 20th and 21st 2020 at UCSF Mission Bay Campus. Follow the tracks and dive deep! +--- + +Location: [UCSF Mission Bay Campus](https://goo.gl/maps/RJrEoKtC1jegxcee9) + +URL: [https://sfbrainhack.github.io/](https://sfbrainhack.github.io/) + +Description: join us to hack, analyze, build, learn, ask questions, and make new friends! +This year, we will focus on brain tracts (diffusion tensor imaging) & deep learning. +The two talks, DTI (by UCSF Dep. Neurology's expert Dr. Mandelli) and Deep Learning (by UCSF Dep. Radiology's expert Dr. Pedoia), will be live-streamed as well +(DTI: [https://ucsf.zoom.us/j/685277366](https://ucsf.zoom.us/j/685277366); Deep Learning: [https://ucsf.zoom.us/j/288710093](https://ucsf.zoom.us/j/288710093)). +The rest of the time will be dedicated to free hacking. + +[Register now!](https://www.eventbrite.com/e/brainhack-global-san-francisco-2019-postponed-tickets-76825419899) + +Contact information: valentina[dot]borghesani[at]ucsf[dot]edu diff --git a/_posts/2020-02-27-geneva.markdown b/_posts/2020-02-27-geneva.markdown new file mode 100644 index 0000000..c1f0f96 --- /dev/null +++ b/_posts/2020-02-27-geneva.markdown @@ -0,0 +1,19 @@ +--- +layout: post +title: "Geneva Brainhack 2020" +date: 2020-12-31 09:00:00 +big: 1 +project_categories: Events 2020 +image: geneva_2020.png +description: Geneva Brainhack 2020 at University of Campus Biotech, Geneva, Switzerland. +--- + +Location: Campus Biotech, Geneva, Switzerland + +URL: [https://www.brainhack.ch](https://www.brainhack.ch) + +Description: The event is expected to run at a yet unspecified date during 2020. The exact dates will be announced through the event's website. This event allows projects will deal with the brain, quite a few will explore beyond imaging, and you can even propose your own. Everyone is welcome, whatever their background. For more information, and to join us, check out our website at [www.brainhack.ch](www.brainhack.ch) + +Contact information: +* michael.dayan@fcbg.ch +* [https://twitter.com/brainhackgeneva](https://twitter.com/brainhackgeneva) diff --git a/_posts/2020-03-27-warsaw.markdown b/_posts/2020-03-27-warsaw.markdown new file mode 100644 index 0000000..4801449 --- /dev/null +++ b/_posts/2020-03-27-warsaw.markdown @@ -0,0 +1,22 @@ +--- +layout: post +title: "Warsaw Brainhack 2020" +date: 2020-12-31 09:00:00 +big: 1 +project_categories: Events 2020 +image: brainhack_warsaw_2020.png +description: Warsaw Brainhack 2020 will take place at University of Warsaw. The event is expected to run at a yet unspecified date during 2020, the necessary announcement will be made in the future. +--- + +Location: University of Warsaw, Physics Department + +URL: [https://brainhackwarsaw.github.io/](https://brainhackwarsaw.github.io/) + +Description: Brainhack Warsaw is an almost three-day event with lectures, and primarily projects. The event aims to meet new, enthusiastic researchers, make new friendships in academia, learn, share the knowledge and also promote open science in the spirit of the whole Brainhack community (Craddock et al., 2016). Projects are mainly connected with neuroscience, data processing, and machine learning but we are also open to other subjects. Attendees of various backgrounds are welcome to join! + +At Brainhack Warsaw we believe that creativity is a key factor of success. We think that science, programming, and art are similar in their nature. Art doesn’t care about hierarchy. Nor we do. There are paths yet to be discovered and boundaries yet to be transgressed. Brainhack Warsaw is open for everyone. People from academia, artists, data scientists, physicists, biologists, poets, psychologists, females, males, religious, atheists. There’s only one thing that matters: creativity. + +Contact information: +* brainhackwarsaw@gmail.com +* [https://www.facebook.com/brainhackWAW/](https://www.facebook.com/brainhackWAW/) +* [https://twitter.com/BrainhackW](https://twitter.com/BrainhackW) diff --git a/_posts/2020-04-01-bordeaux.markdown b/_posts/2020-04-01-bordeaux.markdown new file mode 100644 index 0000000..21ec483 --- /dev/null +++ b/_posts/2020-04-01-bordeaux.markdown @@ -0,0 +1,25 @@ +--- +layout: post +title: "Brainhack Bordeaux 2020" +date: 2020-04-01 09:00:00 +big: 1 +project_categories: Events 2020 +image: brainhack_bordeaux_2020.png +description: Brainhack Bordeaux 2020 will take place at the INRIA Bordeaux Research Center. +--- + +Location: INRIA Bordeaux Research Center, France + +URL: [http://www.bcblab.com/BCB/Events/Entries/2020/4/1_BrainHack_in_Bordeaux__the_functional_architecture_of_the_brain.html](http://www.bcblab.com/BCB/Events/Entries/2020/4/1_BrainHack_in_Bordeaux__the_functional_architecture_of_the_brain.html) + +Description: Brainhack Bordeaux will be promoting the interaction between scientists, +developers, and artists interested in the brain. Questions can evolve around the +investigation of brain anatomy and function based on non-invasive imaging methods (e.g. MRI, nTMS) +and intraoperative brain mapping methods, or post mortem dissection the evolution of nervous systems +across species the variability of brain features across healthy participants the insurgence of +brain pathologies and there is no limit to artistic reflections in any form of art. + +The event was initially scheduled for April, 1-3, but it has been postponed. The +new date will be announced as soon as possible. + +Contact information: brainconnectivitybehaviour@gmail.com diff --git a/_posts/2020-06-16-ohbm.markdown b/_posts/2020-06-16-ohbm.markdown new file mode 100644 index 0000000..619668a --- /dev/null +++ b/_posts/2020-06-16-ohbm.markdown @@ -0,0 +1,21 @@ +--- +layout: post +title: "OHBM Brainhack 2020" +date: 2020-06-16 09:00:00 +big: 1 +project_categories: Events 2020 +image: brainhack_ohbm_2020.png +description: For this edition, OHBM Brainhack will be held online! +--- + +URL: [https://ohbm.github.io/hackathon2020/](https://ohbm.github.io/hackathon2020/) + +Description: At the OHBM Brainhack, members of the community gather to work collaboratively on common projects. +The event also features a TrainTrack in which tutorials on open science practices are provided. + +Brainhacks differ from the typical academic conference in that attendees can actively take part in the +program and co-learn from each other. Thus, they will be actively trying to create something rather +than passively attend. Although many brainhack projects might involve coding, it is not a +requirement and many projects can be done without coding skills. + +Contact information: ossig2019@inria.fr diff --git a/_posts/2020-10-15-global2020.markdown b/_posts/2020-10-15-global2020.markdown new file mode 100644 index 0000000..72f441e --- /dev/null +++ b/_posts/2020-10-15-global2020.markdown @@ -0,0 +1,24 @@ +--- +layout: post +title: "Brainhack Global 2020" +date: 2020-11-30 13:53 +project_categories: Events 2020 +image: bhack_global_2020.png +big: 1 +description: Virtual Brainhack events occuring at multiple sites globally run through 30th November - 13th December. +--- +## Summary +You are invited to attend [Brainhack Global 2020](http://brainhack.org/global2020) at one of the regional events occuring accross the globe. + +[Brainhack](http://brainhack.org) is a unique conference that convenes researchers from myriad disciplines to work together on innovative projects related to neuroscience. Brainhack Global will host several simultaneous to build a critical mass for the regional Brainhack movement and provide opportunities for inter-Brainhack collaboration. Local events will be connected by videoconference to expand collaborative opportunities so that smaller sites can plug into the content and energy generated at larger sites. + +In addition to time spent collaborating on neuroscience projects, activities at the Brainhack will include: + +- Tutorials on basic software development skills called “Brainhacking 101” +- Keynotes from neuroscience and methods researchers +- Open conference sessions during which attendees can present their research + +Refer to the [Brainhack Global 2020 Events](https://brainhack.org/global2020/events/) page for a complete list of locations. + +## Contact +Please refer to [Host Your Own Local Brainhack](https://brainhack.org/global2020/events/#host-your-own-local-brainhack) to register for a local event and please pass this invitation on to your friends and colleagues. diff --git a/_posts/2020-10-15-global2021.markdown b/_posts/2020-10-15-global2021.markdown new file mode 100644 index 0000000..ca630e6 --- /dev/null +++ b/_posts/2020-10-15-global2021.markdown @@ -0,0 +1,25 @@ +--- +layout: post +title: "Brainhack Global 2021" +date: 2021-11-28 13:53 +project_categories: Events 2021 +image: brainhack_2021_image.png + +big: 1 +description: Hybrid (Virtual and/or In-person) Brainhack events occuring at all around the world run through 28th November - 12th December. +--- +## Summary +You are invited to attend [Brainhack Global 2021](http://brainhack.org/global2021) at one of the regional events occuring accross the globe. + +[Brainhack](http://brainhack.org) is a unique conference that convenes researchers from myriad disciplines to work together on innovative projects related to neuroscience. Brainhack Global will host several simultaneous to build a critical mass for the regional Brainhack movement and provide opportunities for inter-Brainhack collaboration. Local events will be connected by videoconference to expand collaborative opportunities so that smaller sites can plug into the content and energy generated at larger sites. + +In addition to time spent collaborating on neuroscience projects, activities at the Brainhack will include: + +- Tutorials on basic software development skills called “Brainhacking 101” +- Keynotes from neuroscience and methods researchers +- Open conference sessions during which attendees can present their research + +Refer to the [Brainhack Global 2021 Events](https://brainhack.org/global2021/events/) page for a complete list of locations. + +## Contact +Please refer to [Host Your Own Local Brainhack](https://brainhack.org/global2021/events/#host-your-own-local-brainhack) to register for a local event and please pass this invitation on to your friends and colleagues. diff --git a/_posts/2021-01-26-micro2macro.markdown b/_posts/2021-01-26-micro2macro.markdown new file mode 100644 index 0000000..67566d3 --- /dev/null +++ b/_posts/2021-01-26-micro2macro.markdown @@ -0,0 +1,20 @@ +--- +layout: post +title: "Micro2Macro Brainhack 2021" +date: 2020-12-31 09:00:00 +big: 1 +project_categories: Events 2021 +image: brainhack_micro2macro_2021.png +description: The Brainhack Micro2Macro 2021 is an official satellite event of the International Global Brainhack 2020 +--- + +Location: Anywhere on Earth + +URL: [ https://brainhack-micro2macro.github.io/]( https://brainhack-micro2macro.github.io/) + +Description: The Brainhack Micro2Macro 2021 is an official satellite event of the International Global Brainhack 2020. +The goal of this hackathon is to bring together researchers with disparate backgrounds to collaborate on open science +projects in neuroimaging, with a focus on the link between brain macrostructure and microstructure. The event will +take place virtually, we symbolically picked the fictional Atlantis as our venue since the main sessions will take +place between 2PM and 6PM UTC, making suitable for people based both in Africa, Europe and the East Coast of the +Americas to attend. Any other time during the event can be dedicated to hacking! diff --git a/_posts/2021-06-16-ohbm.markdown b/_posts/2021-06-16-ohbm.markdown new file mode 100644 index 0000000..2377c4c --- /dev/null +++ b/_posts/2021-06-16-ohbm.markdown @@ -0,0 +1,20 @@ +--- +layout: post +title: "OHBM Brainhack 2021" +date: 2021-06-16 09:00:00 +big: 1 +project_categories: Events 2021 +image: brainhack_ohbm_2021.jpg +description: For this edition, OHBM Brainhack will be held online! +--- + +URL: [https://ohbm.github.io/hackathon2021/](https://ohbm.github.io/hackathon2021/) + +Description: The OHBM Brainhack is back! It will be a virtual event for the second year in a row, +and we introducing many exciting additions: the educational sessions (TrainTrack) will include both +pre-recorded material, made available before the event, but also live Q&As and hands-on sessions! + +And the project-oriented sessions (HackTrack) will be able to benefit from the support of QMENTA! +Do you want to be part of the organization? Check the website, we are looking for volunteers! + +Contact information: ohbmopenscience@gmail.org diff --git a/_posts/2021-08-29-china_computationa_psychiatry_hack.markdown b/_posts/2021-08-29-china_computationa_psychiatry_hack.markdown new file mode 100644 index 0000000..bebca29 --- /dev/null +++ b/_posts/2021-08-29-china_computationa_psychiatry_hack.markdown @@ -0,0 +1,19 @@ +--- +layout: post +title: "1st Computational Psychiatry Hack @ China 2021" +date: 2021-08-29 09:00:00 +big: 1 +project_categories: Events 2021 +image: china_hack_2021.png +description: Get hands dirty, learn by doing! +--- + +URL: [1st Computational Psychiatry Hack](https://www.heywhale.com/home/competition/612310e47db76d0017825f3b/?from=cp) + +The 1st Computational Psychiatry Hack @ China is jointly organized by the Chinese Computational Psychiatry Network (CCPN), the Sophon Academy and Heywhale. In this program, the participants will join as a team to learn computational modeling. They will reproduce the analysis of a published paper in the computational psychiatry (CP) [1], under the guidance of experienced experts. All the participants will have a precious experience to know the CP field by doing a completed project with teammates and chance to win impressive scholarships! + +The slogan is ‘Get hands dirty, learn by doing!’. + +Contact information: genghy@hku.hk, Dr. Haiyang Geng, Postdoc researcher at the Department of Psychology, University of Hong Kong + +[1] Gagne, C., Zika, O., Dayan, P., & Bishop, S. J. (2020). Impaired adaptation of learning to contingency volatility in internalizing psychopathology. ELife, 9, e61387. https://doi.org/10.7554/eLife.61387 diff --git a/_posts/2022-09-18-krakow.markdown b/_posts/2022-09-18-krakow.markdown new file mode 100644 index 0000000..482ff1a --- /dev/null +++ b/_posts/2022-09-18-krakow.markdown @@ -0,0 +1,25 @@ +--- +layout: post +title: "Brainhack Krakow 2022" +date: 2022-09-18 10:00:00 +big: 1 +project_categories: Events 2022 +image: brainhack_krakow_2022.jpg +description: Join us in Krakow for a Brainhack on brain simulations in health and disease! +--- + +URL: [https://www.brainhack-krakow.org](https://www.brainhack-krakow.org) + +Description: Brainhack Krakow will take place on 21-23.10.2022, at the Institute of Psychology, Jagiellonian University. Registration is open until 2 Oct 2022. + +We will focus on projects dealing with modeling brain activity, cognitive processes or other inter-individual characteristics, based on neuroscience data from open access repositories. Full list of projects can be found: https://www.brainhack-krakow.org/projects + +The aim of the Brainhack is to learn, share the knowledge on data mining, machine learning and brain research and meet new, enthusiastic researchers, make new friendships in academia. Our event also promotes open science in the spirit of the whole Brainhack community. Attendees of various backgrounds are welcome to join, mainly from computer science, neurobiology, cognitive sciences and psychology! + +We encourage you to participate in the Brainhack Krakow 2022. +Registration deadline: 2 Oct 2022 + +More information can be found on our website and social media: +https://www.brainhack-krakow.org/ +https://twitter.com/BrainhackKrakow +https://fb.me/e/1zs0bxjZQ diff --git a/_posts/2022-10-15-global2022.markdown b/_posts/2022-10-15-global2022.markdown new file mode 100644 index 0000000..67b8270 --- /dev/null +++ b/_posts/2022-10-15-global2022.markdown @@ -0,0 +1,25 @@ +--- +layout: post +title: "Brainhack Global 2022" +date: 2022-11-28 13:53 +project_categories: Events 2022 +image: brainhack_2022_image.png + +big: 1 +description: Hybrid (Virtual and/or In-person) Brainhack events occuring at all around the world run through 28th November - 11th December. +--- +## Summary +You are invited to attend [Brainhack Global 2022](http://brainhack.org/global2022) at one of the regional events occuring accross the globe. + +[Brainhack](http://brainhack.org) is a unique conference that convenes researchers from myriad disciplines to work together on innovative projects related to neuroscience. Brainhack Global will host several simultaneous to build a critical mass for the regional Brainhack movement and provide opportunities for inter-Brainhack collaboration. Local events will be connected by videoconference to expand collaborative opportunities so that smaller sites can plug into the content and energy generated at larger sites. + +In addition to time spent collaborating on neuroscience projects, activities at the Brainhack will include: + +- Tutorials on basic software development skills called “Brainhacking 101” +- Keynotes from neuroscience and methods researchers +- Open conference sessions during which attendees can present their research + +Refer to the [Brainhack Global 2022 Events](https://brainhack.org/global2022/events/) page for a complete list of locations. + +## Contact +Please refer to [Host Your Own Local Brainhack](https://brainhack.org/global2022/events/#host-your-own-local-brainhack) to register for a local event and please pass this invitation on to your friends and colleagues. diff --git a/_posts/2023-04-19-neural_ohbm.markdown b/_posts/2023-04-19-neural_ohbm.markdown new file mode 100644 index 0000000..92ceba3 --- /dev/null +++ b/_posts/2023-04-19-neural_ohbm.markdown @@ -0,0 +1,66 @@ +--- +layout: post +title: "Neuroscience Alliance (NEURAL) OHBM" +date: 2023-04-19 00:00:00 +big: 1 +project_categories: Events 2023 +image: neural_ohbm_ea.png +description: Join the fun & learn new skills at Neuroscience Alliance (NEURAL) - an OHBM chapter (9-11.05.23)! +--- + +URL: [https://storage.googleapis.com/bcblabweb/neuroscience-alliance.html](https://storage.googleapis.com/bcblabweb/neuroscience-alliance.html) + +Description: You can also test your skills during the event, compete for the stroke outcome prediction cup, and win a real cup! +Don't forget to register here --> https://storage.googleapis.com/bcblabweb/neuroscience-alliance.html +Location: BORDEAUX, IMN, Amphi Broca + +Aim of the event +Neuroscience Alliance is a nonprofit organisation that works like a Brainhack and aims to promote interaction between scientists, developers, and artists interested in the brain. Questions may evolve around the study of brain anatomy and function using non-invasive imaging methods (e.g., MRI, EEG, MEG) and intraoperative brain mapping methods, or post-mortem dissection of the evolution of nervous systems across species, variability of brain characteristics in healthy participants, the insurgency of brain pathologies, and there is no limit to artistic reflections in any form. +Participants can bring their dataset, discuss a project, and recruit a team of collaborators on-site. Access to large, free online databases of MRI images will also be available throughout the three days to test new creative ideas. +The workshop, which incorporates all levels of expertise, is also an opportunity to learn methods, develop skills and collaborate with other participants. + +Program +08/05 +20:00 - Informal get-together (optional) + +09/05 Anatomy +09:00 - 09:30 Welcome intro (Michel Thiebaut de Schotten, Bordeaux) +09:30 - 10:00 Anatomical update: A novel occipitotemporal pathway supports early encoding of visuospatial attention? (Ahmad Beyh, UK) +10:00 - 11:00 Project pitches +- The stroke outcome prediction cup (100 strokes lesion, T1w, and behavior will be made available on-site for outcome prediction, success will be assessed with an out-of-sample dataset of n = 50 from the same cohort) (Anna Matsulevits) +- Neuroimaging of a unique genetical cohort from South Africa (Aline Ferreira Correia) +- A 3D fractal(-ish) dataset for machine learning data augmentation (Chris Foulon) +- Project the MEG signal onto the white matter (Stephanie Forkel) +- Exploring the White Matter Circuits Associated with Patterns of Pathology in Alzheimer's Disease (Elinor Thompson) +... And many more upon request :) + +11:00 - 12:30 Teamwork and hacking +12:30 - Lunch trays provided +12:30 - 18:00 Free hacking + +10/05 Cognition +09:00 - 09:30 Update on cognition: The fabric of cognition (Valentina Pacella, Italy) +09:30 - 10:00 Update on cognition: Neural bases of creativity (Marcella Ovando-Tellez, France) +10:00 - 12:30 Free hacking +12:30 - 13:30 Project update Need help? Last call! +13:30 - Lunch trays provided +13:30 - 16:00 Free hacking +16:00 -18:00 screening of "my love affair with the brain" followed by a debate on brain plasticity. +Optional hacking / free evening + +11/05 Clinical disorders +Clinical update: Tracking the landscape of neuropsychology and neuroscience in southern Africa (Sabah Besharati, SA) +Clinical Update: Neuroimaging in Huntington Disease-Like 2: current knowledge and future directions (Aline Ferreira Correia, SA) + +10:00 - 13:30 Open hacking session +13:30 - 14:30 Lunch trays provided +14:30 - 17:00 Last line of hacking! +17:00 - 18:00 Report on projects/Wrap-up +18:00 - ? ?? Farewell aperitif + +Location, BORDEAUX, IMN, Amphi Broca +About Neuroscience Alliance (NEURAL) +About Organisation For Human Brain Mapping (OHBM) +Contact email michel.thiebaut@gmail.com + +Contact email michel.thiebaut@gmail.com diff --git a/_posts/2023-04-19-spark_AI_Africa.markdown b/_posts/2023-04-19-spark_AI_Africa.markdown new file mode 100644 index 0000000..c89e9f3 --- /dev/null +++ b/_posts/2023-04-19-spark_AI_Africa.markdown @@ -0,0 +1,45 @@ +--- +layout: post +title: "SPARK Academy Africa-BraTS BrainHack 2023" +date: 2023-04-19 00:00:00 +big: 1 +project_categories: Events 2023 +image: spark_africa_2023.png +description: The Sprint AI Training for African Medical Imaging Knowledge Translation (SPARK) Academy +--- + +URL: [https://event.fourwaves.com/spark/pages](https://event.fourwaves.com/spark/pages) + +Description: +Description: The Sprint AI Training for African Medical Imaging +Knowledge Translation (SPARK) Academy is a case-based training program +designed to empower African researchers with the skills to create and +implement AI tools for medical diagnostics. The first SPARK Academy will +guide 70 trainees from various cities across Africa through steps to +develop state-of-the-art AI methods for brain tumor segmentation and +enable up to 10 teams from this cohort to participate in the MICCAI 2023 +Brain Tumor Segmentation (BraTS) Challenge. The top 3 teams from Africa +will win monetary prizes (up to $5000 per team). +We will offer a training facility for this hackathon and provide meals +during the full-day events. All live training events are in East Africa +Time (EAT). + + +### Locations: +- Medical Artificial Intelligence (MAI) Lab, Crestview Radiology Ltd., +Lagos, Nigeria +- African Centre of Excellence in Data Science (ACEDS), University of +Rwanda, Kigali, RW +- Diagnostic Imaging Research Centre, University For Development +Studies, Tamale, Ghana +- AI & Biomedical Imaging Lab, JiT, Jimma University, Jimma, Ethiopia +- Division of Biomedical Engineering, University of Cape Town, Cape +Town, South Africa +- Federal University of Technology, Minna, Nigeria* +- Muhimbili Orthopedic Institute, University of Dar es Salaam, Tanzania +- Mboalab Biotech, Yaounde, Cameroon +- Brain & Mind Institute, AKU, Nairobi, Kenya + + +More information can be found on our website +https://event.fourwaves.com/spark/pages diff --git a/_posts/2023-10-15-global2023.markdown b/_posts/2023-10-15-global2023.markdown new file mode 100644 index 0000000..2c4dfb0 --- /dev/null +++ b/_posts/2023-10-15-global2023.markdown @@ -0,0 +1,25 @@ +--- +layout: post +title: "Brainhack Global 2023" +date: 2023-11-28 13:53 +project_categories: Events 2023 +image: brainhack_2023_image.png + +big: 1 +description: Hybrid (Virtual and/or In-person) Brainhack events occuring at all around the world run through 4th - 15th December. +--- +## Summary +You are invited to attend [Brainhack Global 2023](http://brainhack.org/global2023) at one of the regional events occuring accross the globe. + +[Brainhack](http://brainhack.org) is a unique conference that convenes researchers from myriad disciplines to work together on innovative projects related to neuroscience. Brainhack Global will host several simultaneous to build a critical mass for the regional Brainhack movement and provide opportunities for inter-Brainhack collaboration. Local events will be connected by videoconference to expand collaborative opportunities so that smaller sites can plug into the content and energy generated at larger sites. + +In addition to time spent collaborating on neuroscience projects, activities at the Brainhack will include: + +- Tutorials on basic software development skills called “Brainhacking 101” +- Keynotes from neuroscience and methods researchers +- Open conference sessions during which attendees can present their research + +Refer to the [Brainhack Global 2023 Events](https://brainhack.org/global2023/events/) page for a complete list of locations. + +## Contact +Please refer to [Host Your Own Local Brainhack](https://brainhack.org/global2023/events/#host-your-own-local-brainhack) to register for a local event and please pass this invitation on to your friends and colleagues. diff --git a/_posts/2024-07-01-southafrica.markdown b/_posts/2024-07-01-southafrica.markdown new file mode 100644 index 0000000..496cf35 --- /dev/null +++ b/_posts/2024-07-01-southafrica.markdown @@ -0,0 +1,17 @@ +--- +layout: post +title: "South African Brainhack" +date: 2024-07-01 10:00:00 +big: 1 +project_categories: Events 2024 +image: brainhack_southafrica_2024.png +description: Join us in South Africa for a Brainhack +--- + +Location: Wits Rural Campus, Limpopo, South Africa (outside the Kruger National Park) + +URL: [https://www.witsneurl.com/news-events](https://www.witsneurl.com/news-events) + +The University of the Witwatersrand’s Neuroscience Research Laboratory (NeuRL) and Robotics, Autonomous Intelligence and Learning Lab (RAIL), in collaboration with Neuroscience Alliance (NEURAL, a chapter of OHBM), are running a residential Brainhack from the 22nd – 26th October 2024 at the Wits Rural Facilities outside the Kruger National Park. This South African Brainhack is generously funded by the Canadian Institute for Advanced Research (CIFAR), the International Brain Organisation (IBRO) and Wits School of Human and Community Development. Data hacking support will be given for MRI and DTI analyses, ERP-EEG, and fNRIS. A hyperscanning project will be running during the Brainhack. Limited spaces are available. Priority will be given to applicants from Africa. Please apply using [THIS LINK](https://docs.google.com/forms/d/e/1FAIpQLSfohQ1G70MNuB6HHrFkP53v8yfUG_dCytWAaGBKJ5hYvivDuA/viewform?usp=sf_link) specifying your project pitch. Applications close 5th July. + +Contact information: Sahba Besharati (sahba@besharati.com) & Aline Ferreira Correia (Aline.Ferreiracorreia@wits.ac.za) diff --git a/_posts/2024-09-11-global2024.markdown b/_posts/2024-09-11-global2024.markdown new file mode 100644 index 0000000..062eb8e --- /dev/null +++ b/_posts/2024-09-11-global2024.markdown @@ -0,0 +1,19 @@ +--- +layout: post +title: "Brainhack Global 2024" +date: 2024-09-11 13:53 +project_categories: Events 2024 +image: brainhack_2024_image.png + +big: 1 +description: Hybrid (Virtual and/or In-person) Brainhack events occuring at all around the world in November and December. +--- +## Summary +You are invited to attend [Brainhack Global 2024](http://brainhack.org/global2024) at one of the regional events occuring accross the globe. + +[Brainhack Global](http://brainhack.org) is a unique conference that convenes researchers from myriad disciplines to work together on innovative projects related to neuroscience. Brainhack Global will host several simultaneous to build a critical mass for the regional Brainhack movement and provide opportunities for inter-Brainhack collaboration. Local events will be connected by videoconference to expand collaborative opportunities so that smaller sites can plug into the content and energy generated at larger sites. + +Refer to the [Brainhack Global 2024 Events](https://brainhack.org/global2024/events/) page for a complete list of locations. + +## Contact +Please refer to [Host Your Own Local Brainhack](https://brainhack.org/global2024/events/#host-your-own-local-brainhack) to register for a local event and please pass this invitation on to your friends and colleagues. diff --git a/_posts/2025-09-11-global2025.markdown b/_posts/2025-09-11-global2025.markdown new file mode 100644 index 0000000..9d7f016 --- /dev/null +++ b/_posts/2025-09-11-global2025.markdown @@ -0,0 +1,19 @@ +--- +layout: post +title: "Brainhack Global 2025" +date: 2025-09-11 13:53 +project_categories: Events 2025 +image: brainhack_2025_image.png + +big: 1 +description: Hybrid (Virtual and/or In-person) Brainhack events occuring at all around the world in Fall 2025 into Spring 2026. +--- +## Summary +You are invited to attend [Brainhack Global 2025](http://brainhack.org/global2025) at one of the regional events occuring accross the globe. + +[Brainhack Global](http://brainhack.org) is a unique conference that convenes researchers from myriad disciplines to work together on innovative projects related to neuroscience. Brainhack Global will host several simultaneous to build a critical mass for the regional Brainhack movement and provide opportunities for inter-Brainhack collaboration. Local events will be connected by videoconference to expand collaborative opportunities so that smaller sites can plug into the content and energy generated at larger sites. + +Refer to the [Brainhack Global 2025 Events](https://brainhack.org/global2025/events/) page for a complete list of locations. + +## Contact +Please refer to [Host Your Own Local Brainhack](https://brainhack.org/global2025/events/#host-your-own-local-brainhack) to register for a local event and please pass this invitation on to your friends and colleagues. diff --git a/_posts/images_for_posts/automaticspinalcord.png b/_posts/images_for_posts/automaticspinalcord.png deleted file mode 100644 index 7e8c254..0000000 Binary files a/_posts/images_for_posts/automaticspinalcord.png and /dev/null differ diff --git a/_posts/images_for_posts/axonal.png b/_posts/images_for_posts/axonal.png deleted file mode 100644 index cf96592..0000000 Binary files a/_posts/images_for_posts/axonal.png and /dev/null differ diff --git a/_posts/images_for_posts/cloudrepro.jpg b/_posts/images_for_posts/cloudrepro.jpg deleted file mode 100644 index 48f8ec0..0000000 Binary files a/_posts/images_for_posts/cloudrepro.jpg and /dev/null differ diff --git a/_posts/images_for_posts/cortical_distance.png b/_posts/images_for_posts/cortical_distance.png deleted file mode 100644 index ad8ff46..0000000 Binary files a/_posts/images_for_posts/cortical_distance.png and /dev/null differ diff --git a/_posts/images_for_posts/datalad.png b/_posts/images_for_posts/datalad.png deleted file mode 100644 index 7396294..0000000 Binary files a/_posts/images_for_posts/datalad.png and /dev/null differ diff --git a/_posts/images_for_posts/dockerize.png b/_posts/images_for_posts/dockerize.png deleted file mode 100644 index ff9a5df..0000000 Binary files a/_posts/images_for_posts/dockerize.png and /dev/null differ diff --git a/_posts/images_for_posts/duecredit.png b/_posts/images_for_posts/duecredit.png deleted file mode 100644 index fdd8ac3..0000000 Binary files a/_posts/images_for_posts/duecredit.png and /dev/null differ diff --git a/_posts/images_for_posts/fmri_analysis.jpg b/_posts/images_for_posts/fmri_analysis.jpg deleted file mode 100644 index fc92ee2..0000000 Binary files a/_posts/images_for_posts/fmri_analysis.jpg and /dev/null differ diff --git a/_posts/images_for_posts/fmribrain.jpg b/_posts/images_for_posts/fmribrain.jpg deleted file mode 100644 index fc92ee2..0000000 Binary files a/_posts/images_for_posts/fmribrain.jpg and /dev/null differ diff --git a/_posts/images_for_posts/loris.png b/_posts/images_for_posts/loris.png deleted file mode 100644 index bc3e355..0000000 Binary files a/_posts/images_for_posts/loris.png and /dev/null differ diff --git a/_posts/images_for_posts/neurodebian.png b/_posts/images_for_posts/neurodebian.png deleted file mode 100644 index 15e64f0..0000000 Binary files a/_posts/images_for_posts/neurodebian.png and /dev/null differ diff --git a/_posts/images_for_posts/niakincbrain.png b/_posts/images_for_posts/niakincbrain.png deleted file mode 100644 index 9a5b901..0000000 Binary files a/_posts/images_for_posts/niakincbrain.png and /dev/null differ diff --git a/_posts/images_for_posts/nidata.png b/_posts/images_for_posts/nidata.png deleted file mode 100644 index 5afc49d..0000000 Binary files a/_posts/images_for_posts/nidata.png and /dev/null differ diff --git a/_posts/images_for_posts/nidm.png b/_posts/images_for_posts/nidm.png deleted file mode 100644 index b564e71..0000000 Binary files a/_posts/images_for_posts/nidm.png and /dev/null differ diff --git a/_posts/images_for_posts/niftyview.png b/_posts/images_for_posts/niftyview.png deleted file mode 100644 index e151de5..0000000 Binary files a/_posts/images_for_posts/niftyview.png and /dev/null differ diff --git a/_posts/video1.markdown b/_posts/video1.markdown new file mode 100644 index 0000000..b8f2224 --- /dev/null +++ b/_posts/video1.markdown @@ -0,0 +1,9 @@ +--- +layout: post +title: "Welcome and details of the 2017 Brainhack Proceedings" +date: 2016-11-11 10:39:06 +project_categories: Proceedings +image: ns_pic-222x180.png +description: Is a project in conceptualization state. +url: https://youtu.be/JLJFKV7p74A?list=PLNt4AJV1JZbfcRh9gEdHu47edoQE76bp5 +--- diff --git a/_posts/video2.markdown b/_posts/video2.markdown new file mode 100644 index 0000000..0528f68 --- /dev/null +++ b/_posts/video2.markdown @@ -0,0 +1,10 @@ +--- +layout: post +title: "Welcome and details of the 2017 Brainhack Proceedings" +date: 2016-11-11 10:39:06 +project_categories: Proceedings +image: ns_pic-222x180.png +description: Is a project in conceptualization state. +url: https://youtu.be/JLJFKV7p74A?list=PLNt4AJV1JZbfcRh9gEdHu47edoQE76bp5 +video: 1 +--- diff --git a/about.md b/about.md index 7f454a4..bd75f1c 100644 --- a/about.md +++ b/about.md @@ -3,97 +3,43 @@ layout: page title: About --- -
-
-

About

-

Information about the brainhack organization and hosting a brainhack

-

Answering the next generation of open questions in neuroscience will require very large data sets and complex analytical methods. The purpose of Brainhack is to bridge the data science and neuroscience research communities by bringing them together to collaborate on a multitude of projects. Brainhack is a unique conference that convenes researchers from across the globe and a myriad of disciplines to work together on innovative projects related to neuroscience. Year after year, global Brainhack events have brought together researchers to participate in open collaboration, and regional Brainhack events keep the momentum going throughout the year. +# About Brainhack - These collaborative workshops combine elements of Hackathons and Unconferences, with a variety of educational activities, to accelerate the adaptation of data science and computational methods in Neuroscience. Much of the conference is allocated to open working time during which attendees are encouraged to work together in interdisciplinary teams on projects that utilize computational techniques to solve problems in neuroscience. Periodic unconference sessions provide an opportunity for attendees to share their expertise on topics that become relevant through the course of the event. In parallel to these activities, an educational track provide hands-on tutorials on relevant tools such as python, github, cloud computing, and innovative statistical methods.

+## Why Brainhack? -

Who is Brainhack.org?

-

Board

-

The board is currently made up of the founders of Brainhack. The board meets quarterly to plan future Brainhack events and discuss other business.

- +Answering the next generation of open questions in neuroscience will require very large data sets and complex analytical methods. The purpose of Brainhack is to bridge the data science and neuroscience research communities to advance the progress of brain science research. Brainhack is a unique conference that convenes researchers from across the globe and myriad disciplines to work together on innovative projects related to neuroscience. Year after year, global Brainhack events have brought together researchers to participate in open collaboration and regional Brainhack events keep the momentum going throughout the year. -

Current Members

-

The Brainhack organization is composed of individuals that have previously hosted brainhack events and those that plan to host events in the future. Click here to download a full list of members. +These collaborative workshops combine elements of Hackathons and Unconferences, with a variety of educational activities, to accelerate the adaptation of data science and computational methods in Neuroscience. Much of the conference is allocated to open working time during which attendees are encouraged to work together in interdisciplinary teams on projects that utilize computational techniques to solve problems in neuroscience. Periodic unconference sessions provide an opportunity for attendees to share their expertise on topics that become relevant through the course of the event. In parallel to these activities, an educational track provide hands-on tutorials on relevant tools such as python, github, cloud computing, and innovative statistical methods. -

How to Become a Member

-

If you would like to join the organization please contact a board member or email info@brainhack.org.

+### Publications describing Brainhack: -

Brainhack Publications

-

Brainhack Proceedings

-

We publish short reports describing projects completed at Brainhack events that occured during the year in a Annual Brainhack Proceedings.

+ -

Brainhack Thematic Series

-

We invite full length publications that describe projects worked on as part of Brainhack or that are consistent with the Brainhack Proceedings to be published in the GigaScience Brainhack Thematic Series.

+## Who is Brainhack.org? -

Brainhack Outcomes

-

Below is a brief list of some of the projects that have been created at Brainhack events. More detailed information can be found in the Brainhack Proceedings and in our recent publication on Brainhack.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Project

Brainhack Event

A child psychiatrist and a 3D video artist initiated a collaboration to develop a movie to be shown to participants during resting-state fMRI scans to reduce head motion in hyperkinetic populations2012 Brainhack & Unconference (Leipzig)
The ABIDE Preprocessing Initiative is an ongoing project to share preprocessed versions of the Autism Brain Imaging Data Exchange (ABIDE) dataset2012 Brainhack & Unconference (Leipzig)
An analysis to identify differences in cortical thickness and structural covariance between individuals with autism spectrum disorder and neurotypical controls2012 Brainhack & Unconference (Leipzig)
A project team amassed a dataset of 14,781 structural MRI scans to estimate the distribution of brain sizes across individuals for optimizing scan acquisition parametersBrainhack 2013 Paris
The development team of LORIS, an open source database system for neuroimaging and phenotypic data, have repeatedly used Brainhack as an opportunity to meet and collaborate on new features
An early version of the Daydreaming app, an Android application for real-time assessment of users' mind-wanderingBrainhack 2013 Paris
The Clubs of Science project has built a web-based visualization of the social web underlying neuroimaging researchBrainhack Montreal 2015
The linkRbrain tool for integrating and querying neuroimaging data with activation peaks from the literature and gene expression data was partially developed and first testedBrainhack 2013 Paris
-
+### Board +The board meets quarterly to plan future Brainhack events and discuss other business. -
- +
    +
  • Cameron Craddock, PhD - Chair
  • +
  • Pierre Bellec, PhD
  • +
  • Sook-Lei Liew, PhD, OTR/L
  • +
  • Daniel Margulies, PhD
  • +
  • Nolan Nichols, PhD
  • +
  • Tal Yarkoni, PhD
  • +
-
+### Current Members +The Brainhack organization is composed of individuals that have previously hosted brainhack events and those that plan to host events in the future. Click [here](/list_of_brainhack_members.xls) to download a full list of members. - +### How to Become a Member - -
-
+If you would like to join the organization please contact a board member or email [brainhackorg@gmail.com](mailto:brainhackorg@gmail.com). + +### Brainhack Thematic Series + +We invite full length publications that describe projects worked on as part of Brainhack or that are consistent with the Brainhack Proceedings to be published in the [GigaScience Brainhack Thematic Series](https://academic.oup.com/gigascience/pages/brainhack_open_tools_for_brain_science). diff --git a/about_trial.md b/about_trial.md deleted file mode 100644 index 33bf027..0000000 --- a/about_trial.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "About" -date: 2016-12-23 9:44:06 -categories: jekyll update -image: destkop-image-sample.jpg -description: This is a page about Brainhack. ---- - -# About -## Information about the brainhack organization and hosting a brainhack - -Answering the next generation of open questions in neuroscience will require very large data sets and complex analytical methods. The purpose of Brainhack is to bridge the data science and neuroscience research communities by bringing them together to collaborate on a multitude of projects. Brainhack is a unique conference that convenes researchers from across the globe and a myriad of disciplines to work together on innovative projects related to neuroscience. Year after year, global Brainhack events have brought together researchers to participate in open collaboration, and regional Brainhack events keep the momentum going throughout the year. - -These collaborative workshops combine elements of Hackathons and Unconferences, with a variety of educational activities, to accelerate the adaptation of data science and computational methods in Neuroscience. Much of the conference is allocated to open working time during which attendees are encouraged to work together in interdisciplinary teams on projects that utilize computational techniques to solve problems in neuroscience. Periodic unconference sessions provide an opportunity for attendees to share their expertise on topics that become relevant through the course of the event. In parallel to these activities, an educational track provide hands-on tutorials on relevant tools such as python, github, cloud computing, and innovative statistical methods. - -## Who is Brainhack.org? - -### Board - -The board is currently made up of the founders of Brainhack. The board meets quarterly to plan future Brainhack events and discuss other business. - -* Cameron Craddock, director -* Daniel Margulies -* Pierre Bellec -* Nolan Nichols -* Tal Yarkoni - -### Current Members - -The Brainhack organization is composed of individuals that have previously hosted brainhack events and those that plan to host events in the future. Members include: -[comment]: - -### How to become a member -If you would like to join the organization please contact a board member or email info@brainhack.org. - -## Brainhack Publications - -### Brainhack Proceedings -We publish short reports describing projects completed at Brainhack events that occured during the year in a Annual Brainhack Proceedings. - -### Brainhack Thematic Series -We invite full length publications that describe projects worked on as part of Brainhack or that are consistent with the Brainhack Proceedings to be published in the GigaScience Brainhack Thematic Series. - -### Brainhack Outcomes -Below is a brief list of some of the projects that have been created at Brainhack events. More detailed information can be found in the [Brainhack Proceedings](https://gigascience.biomedcentral.com/articles/10.1186/s13742-016-0147-0) and in our recent publication on [Brainhack](https://gigascience.biomedcentral.com/articles/10.1186/s13742-016-0121-x). - -[comment]: diff --git a/assets/images/22vault-222x180.jpg b/assets/images/22vault-222x180.jpg new file mode 100644 index 0000000..66f59ac Binary files /dev/null and b/assets/images/22vault-222x180.jpg differ diff --git a/assets/images/2bbis-222x180.png b/assets/images/2bbis-222x180.png new file mode 100644 index 0000000..d87dd93 Binary files /dev/null and b/assets/images/2bbis-222x180.png differ diff --git a/assets/images/ADHD200_logo-466x180.png b/assets/images/ADHD200_logo-466x180.png new file mode 100644 index 0000000..0c888bc Binary files /dev/null and b/assets/images/ADHD200_logo-466x180.png differ diff --git a/assets/images/ADHD200_logo_preprocessed-03.jpg b/assets/images/ADHD200_logo_preprocessed-03.jpg new file mode 100644 index 0000000..0d88ec5 Binary files /dev/null and b/assets/images/ADHD200_logo_preprocessed-03.jpg differ diff --git a/assets/images/AD_banner-3-_-222x180.png b/assets/images/AD_banner-3-_-222x180.png new file mode 100644 index 0000000..20e87ac Binary files /dev/null and b/assets/images/AD_banner-3-_-222x180.png differ diff --git a/assets/images/BRAINHACK_EDT_TAILS-023-222x180.png b/assets/images/BRAINHACK_EDT_TAILS-023-222x180.png new file mode 100644 index 0000000..f946b3c Binary files /dev/null and b/assets/images/BRAINHACK_EDT_TAILS-023-222x180.png differ diff --git a/assets/images/BrainhackGhent2017222x180.jpeg b/assets/images/BrainhackGhent2017222x180.jpeg new file mode 100644 index 0000000..ebbe1ad Binary files /dev/null and b/assets/images/BrainhackGhent2017222x180.jpeg differ diff --git a/assets/images/BrainhackPadova_logo_466x180.png b/assets/images/BrainhackPadova_logo_466x180.png new file mode 100644 index 0000000..21c9de6 Binary files /dev/null and b/assets/images/BrainhackPadova_logo_466x180.png differ diff --git a/assets/images/BrainhackZurich2019_logo_466x180.png b/assets/images/BrainhackZurich2019_logo_466x180.png new file mode 100644 index 0000000..132aa72 Binary files /dev/null and b/assets/images/BrainhackZurich2019_logo_466x180.png differ diff --git a/assets/images/BrainhackZurich_logo_466x180.png b/assets/images/BrainhackZurich_logo_466x180.png new file mode 100644 index 0000000..87a07ce Binary files /dev/null and b/assets/images/BrainhackZurich_logo_466x180.png differ diff --git a/assets/images/BrainyUtopiaDocuments.png b/assets/images/BrainyUtopiaDocuments.png new file mode 100644 index 0000000..3b94ce8 Binary files /dev/null and b/assets/images/BrainyUtopiaDocuments.png differ diff --git a/assets/images/CSU-2-222x180.png b/assets/images/CSU-2-222x180.png new file mode 100644 index 0000000..3ace910 Binary files /dev/null and b/assets/images/CSU-2-222x180.png differ diff --git a/_posts/images_for_posts/decisionoutsourcing.jpeg b/assets/images/Cropped-InIn-222x180.jpg similarity index 69% rename from _posts/images_for_posts/decisionoutsourcing.jpeg rename to assets/images/Cropped-InIn-222x180.jpg index 32d417d..5c80248 100644 Binary files a/_posts/images_for_posts/decisionoutsourcing.jpeg and b/assets/images/Cropped-InIn-222x180.jpg differ diff --git a/assets/images/Hyperscanning-logo-222x180.png b/assets/images/Hyperscanning-logo-222x180.png new file mode 100644 index 0000000..7f531bb Binary files /dev/null and b/assets/images/Hyperscanning-logo-222x180.png differ diff --git a/assets/images/INDI_logo-222x180.png b/assets/images/INDI_logo-222x180.png new file mode 100644 index 0000000..f3951a5 Binary files /dev/null and b/assets/images/INDI_logo-222x180.png differ diff --git a/assets/images/INDI_rgb-222x180.jpg b/assets/images/INDI_rgb-222x180.jpg new file mode 100644 index 0000000..85e44cc Binary files /dev/null and b/assets/images/INDI_rgb-222x180.jpg differ diff --git a/assets/images/InlineQC_Badge1-222x180.png b/assets/images/InlineQC_Badge1-222x180.png new file mode 100644 index 0000000..99c8b45 Binary files /dev/null and b/assets/images/InlineQC_Badge1-222x180.png differ diff --git a/assets/images/LA-Brainhack_logo_466x180.png b/assets/images/LA-Brainhack_logo_466x180.png new file mode 100644 index 0000000..e475617 Binary files /dev/null and b/assets/images/LA-Brainhack_logo_466x180.png differ diff --git a/assets/images/LORIS_logo_v2_grey_clear-1-222x180.png b/assets/images/LORIS_logo_v2_grey_clear-1-222x180.png new file mode 100644 index 0000000..84d99b6 Binary files /dev/null and b/assets/images/LORIS_logo_v2_grey_clear-1-222x180.png differ diff --git a/assets/images/LORIS_logo_v2_grey_clear-222x180.png b/assets/images/LORIS_logo_v2_grey_clear-222x180.png new file mode 100644 index 0000000..b944bd4 Binary files /dev/null and b/assets/images/LORIS_logo_v2_grey_clear-222x180.png differ diff --git a/assets/images/MRIQC-brainhack.png b/assets/images/MRIQC-brainhack.png new file mode 100644 index 0000000..39c1b42 Binary files /dev/null and b/assets/images/MRIQC-brainhack.png differ diff --git a/assets/images/MicroMind-222x180.png b/assets/images/MicroMind-222x180.png new file mode 100644 index 0000000..d145193 Binary files /dev/null and b/assets/images/MicroMind-222x180.png differ diff --git a/assets/images/NIDMcake-222x180.png b/assets/images/NIDMcake-222x180.png new file mode 100644 index 0000000..6ea7391 Binary files /dev/null and b/assets/images/NIDMcake-222x180.png differ diff --git a/assets/images/NITRC-TRIAD240pixwidth-222x180.png b/assets/images/NITRC-TRIAD240pixwidth-222x180.png new file mode 100644 index 0000000..c032e26 Binary files /dev/null and b/assets/images/NITRC-TRIAD240pixwidth-222x180.png differ diff --git a/assets/images/NeuroPyLogo.png b/assets/images/NeuroPyLogo.png new file mode 100644 index 0000000..eebe37a Binary files /dev/null and b/assets/images/NeuroPyLogo.png differ diff --git a/assets/images/OpenMRBenelux2020.png b/assets/images/OpenMRBenelux2020.png new file mode 100644 index 0000000..67e47d3 Binary files /dev/null and b/assets/images/OpenMRBenelux2020.png differ diff --git a/assets/images/Project-Logo-222x180.jpg b/assets/images/Project-Logo-222x180.jpg new file mode 100644 index 0000000..c76c8e9 Binary files /dev/null and b/assets/images/Project-Logo-222x180.jpg differ diff --git a/images/ROIS_fig_2row.png b/assets/images/ROIS_fig_2row.png similarity index 100% rename from images/ROIS_fig_2row.png rename to assets/images/ROIS_fig_2row.png diff --git a/images/ROIS_fig_white_2row.png b/assets/images/ROIS_fig_white_2row.png similarity index 100% rename from images/ROIS_fig_white_2row.png rename to assets/images/ROIS_fig_white_2row.png diff --git a/assets/images/SF_brainhack_3.png b/assets/images/SF_brainhack_3.png new file mode 100644 index 0000000..1391cc9 Binary files /dev/null and b/assets/images/SF_brainhack_3.png differ diff --git a/assets/images/Screen-Shot-2014-04-26-at-18.59.08-222x180.png b/assets/images/Screen-Shot-2014-04-26-at-18.59.08-222x180.png new file mode 100644 index 0000000..49e85b6 Binary files /dev/null and b/assets/images/Screen-Shot-2014-04-26-at-18.59.08-222x180.png differ diff --git a/assets/images/Screen-Shot-2014-05-07-at-11.39.42-PM-1-222x180.png b/assets/images/Screen-Shot-2014-05-07-at-11.39.42-PM-1-222x180.png new file mode 100644 index 0000000..d15d1dc Binary files /dev/null and b/assets/images/Screen-Shot-2014-05-07-at-11.39.42-PM-1-222x180.png differ diff --git a/assets/images/Screen-Shot-2014-05-15-at-10.32.32-222x180.png b/assets/images/Screen-Shot-2014-05-15-at-10.32.32-222x180.png new file mode 100644 index 0000000..134519a Binary files /dev/null and b/assets/images/Screen-Shot-2014-05-15-at-10.32.32-222x180.png differ diff --git a/assets/images/Screen-Shot-2014-10-03-at-3.29.44-PM-1-222x180.png b/assets/images/Screen-Shot-2014-10-03-at-3.29.44-PM-1-222x180.png new file mode 100644 index 0000000..b3ebef0 Binary files /dev/null and b/assets/images/Screen-Shot-2014-10-03-at-3.29.44-PM-1-222x180.png differ diff --git a/assets/images/Screen-Shot-2016-09-28-at-10.36.33-AM-466x180.png b/assets/images/Screen-Shot-2016-09-28-at-10.36.33-AM-466x180.png new file mode 100644 index 0000000..dd7591c Binary files /dev/null and b/assets/images/Screen-Shot-2016-09-28-at-10.36.33-AM-466x180.png differ diff --git a/assets/images/Screen-Shot-2017-01-16-at-10.29.22-AM-466x180.png b/assets/images/Screen-Shot-2017-01-16-at-10.29.22-AM-466x180.png new file mode 100644 index 0000000..9e61bc7 Binary files /dev/null and b/assets/images/Screen-Shot-2017-01-16-at-10.29.22-AM-466x180.png differ diff --git a/assets/images/Screen-shot-2012-09-20-at-9.54.57-PM-222x180.jpg b/assets/images/Screen-shot-2012-09-20-at-9.54.57-PM-222x180.jpg new file mode 100644 index 0000000..3773499 Binary files /dev/null and b/assets/images/Screen-shot-2012-09-20-at-9.54.57-PM-222x180.jpg differ diff --git a/assets/images/Screenshot-2015-03-31-12.23.11-222x180.png b/assets/images/Screenshot-2015-03-31-12.23.11-222x180.png new file mode 100644 index 0000000..42a18ce Binary files /dev/null and b/assets/images/Screenshot-2015-03-31-12.23.11-222x180.png differ diff --git a/assets/images/SnPM_Central-222x180.png b/assets/images/SnPM_Central-222x180.png new file mode 100644 index 0000000..4c46195 Binary files /dev/null and b/assets/images/SnPM_Central-222x180.png differ diff --git a/assets/images/Visualizing_effect_size_small_effect-222x180.png b/assets/images/Visualizing_effect_size_small_effect-222x180.png new file mode 100644 index 0000000..643a5a9 Binary files /dev/null and b/assets/images/Visualizing_effect_size_small_effect-222x180.png differ diff --git a/assets/images/XNAT_logo_blue_bkgd.png b/assets/images/XNAT_logo_blue_bkgd.png new file mode 100644 index 0000000..da82b8e Binary files /dev/null and b/assets/images/XNAT_logo_blue_bkgd.png differ diff --git a/assets/images/YouTube-logo-full_color-222x180.png b/assets/images/YouTube-logo-full_color-222x180.png new file mode 100644 index 0000000..acb4ae2 Binary files /dev/null and b/assets/images/YouTube-logo-full_color-222x180.png differ diff --git a/assets/images/YouTube-logo-full_color.png b/assets/images/YouTube-logo-full_color.png new file mode 100644 index 0000000..0f3d2a3 Binary files /dev/null and b/assets/images/YouTube-logo-full_color.png differ diff --git a/assets/images/YouTube-logo-light.png b/assets/images/YouTube-logo-light.png new file mode 100644 index 0000000..7ed9b54 Binary files /dev/null and b/assets/images/YouTube-logo-light.png differ diff --git a/assets/images/angelniak.png b/assets/images/angelniak.png new file mode 100644 index 0000000..6d23f23 Binary files /dev/null and b/assets/images/angelniak.png differ diff --git a/assets/images/autism_gradients-222x180.png b/assets/images/autism_gradients-222x180.png new file mode 100644 index 0000000..e379577 Binary files /dev/null and b/assets/images/autism_gradients-222x180.png differ diff --git a/assets/images/autism_gradients.jpg b/assets/images/autism_gradients.jpg new file mode 100644 index 0000000..79b063f Binary files /dev/null and b/assets/images/autism_gradients.jpg differ diff --git a/assets/images/autoseg_hackathon_logo.001-222x180.png b/assets/images/autoseg_hackathon_logo.001-222x180.png new file mode 100644 index 0000000..26a4179 Binary files /dev/null and b/assets/images/autoseg_hackathon_logo.001-222x180.png differ diff --git a/images/back_disabled.jpg b/assets/images/back_disabled.jpg similarity index 100% rename from images/back_disabled.jpg rename to assets/images/back_disabled.jpg diff --git a/images/back_enabled.jpg b/assets/images/back_enabled.jpg similarity index 100% rename from images/back_enabled.jpg rename to assets/images/back_enabled.jpg diff --git a/assets/images/bblogo-222x180.png b/assets/images/bblogo-222x180.png new file mode 100644 index 0000000..c7fa79e Binary files /dev/null and b/assets/images/bblogo-222x180.png differ diff --git a/images/beaut.png b/assets/images/beaut.png similarity index 100% rename from images/beaut.png rename to assets/images/beaut.png diff --git a/assets/images/bhack_compMRI_2019.png b/assets/images/bhack_compMRI_2019.png new file mode 100644 index 0000000..ca3465f Binary files /dev/null and b/assets/images/bhack_compMRI_2019.png differ diff --git a/assets/images/bhack_global_2018.png b/assets/images/bhack_global_2018.png new file mode 100644 index 0000000..edf7320 Binary files /dev/null and b/assets/images/bhack_global_2018.png differ diff --git a/assets/images/bhack_global_2019.png b/assets/images/bhack_global_2019.png new file mode 100644 index 0000000..35728a6 Binary files /dev/null and b/assets/images/bhack_global_2019.png differ diff --git a/assets/images/bhack_global_2020.png b/assets/images/bhack_global_2020.png new file mode 100644 index 0000000..27eaa1f Binary files /dev/null and b/assets/images/bhack_global_2020.png differ diff --git a/assets/images/bhack_networks_2018.png b/assets/images/bhack_networks_2018.png new file mode 100644 index 0000000..4ba3f43 Binary files /dev/null and b/assets/images/bhack_networks_2018.png differ diff --git a/images/bkg.png b/assets/images/bkg.png similarity index 100% rename from images/bkg.png rename to assets/images/bkg.png diff --git a/images/blacktocat.png b/assets/images/blacktocat.png similarity index 100% rename from images/blacktocat.png rename to assets/images/blacktocat.png diff --git a/images/body-bg.png b/assets/images/body-bg.png similarity index 100% rename from images/body-bg.png rename to assets/images/body-bg.png diff --git a/images/body-bg_g.png b/assets/images/body-bg_g.png similarity index 100% rename from images/body-bg_g.png rename to assets/images/body-bg_g.png diff --git a/assets/images/brain_hack_15MinDSI-222x180.png b/assets/images/brain_hack_15MinDSI-222x180.png new file mode 100644 index 0000000..e09f966 Binary files /dev/null and b/assets/images/brain_hack_15MinDSI-222x180.png differ diff --git a/assets/images/brainhackLesions.png b/assets/images/brainhackLesions.png new file mode 100644 index 0000000..94f3cf7 Binary files /dev/null and b/assets/images/brainhackLesions.png differ diff --git a/assets/images/brainhack_2021_image.png b/assets/images/brainhack_2021_image.png new file mode 100644 index 0000000..d676c62 Binary files /dev/null and b/assets/images/brainhack_2021_image.png differ diff --git a/assets/images/brainhack_2022_image.png b/assets/images/brainhack_2022_image.png new file mode 100644 index 0000000..9ba0c7c Binary files /dev/null and b/assets/images/brainhack_2022_image.png differ diff --git a/assets/images/brainhack_2023_image.png b/assets/images/brainhack_2023_image.png new file mode 100644 index 0000000..48e0767 Binary files /dev/null and b/assets/images/brainhack_2023_image.png differ diff --git a/assets/images/brainhack_2024_image.png b/assets/images/brainhack_2024_image.png new file mode 100644 index 0000000..08ff044 Binary files /dev/null and b/assets/images/brainhack_2024_image.png differ diff --git a/assets/images/brainhack_2025_image.png b/assets/images/brainhack_2025_image.png new file mode 100644 index 0000000..9d4954a Binary files /dev/null and b/assets/images/brainhack_2025_image.png differ diff --git a/assets/images/brainhack_202_image.png b/assets/images/brainhack_202_image.png new file mode 100644 index 0000000..74caa3e Binary files /dev/null and b/assets/images/brainhack_202_image.png differ diff --git a/assets/images/brainhack_202_image.psd b/assets/images/brainhack_202_image.psd new file mode 100644 index 0000000..09deaa5 Binary files /dev/null and b/assets/images/brainhack_202_image.psd differ diff --git a/assets/images/brainhack_asl_project.png b/assets/images/brainhack_asl_project.png new file mode 100644 index 0000000..a8acb98 Binary files /dev/null and b/assets/images/brainhack_asl_project.png differ diff --git a/assets/images/brainhack_bids_fmri_project.png b/assets/images/brainhack_bids_fmri_project.png new file mode 100644 index 0000000..b2c1d8d Binary files /dev/null and b/assets/images/brainhack_bids_fmri_project.png differ diff --git a/assets/images/brainhack_bids_shanoir.png b/assets/images/brainhack_bids_shanoir.png new file mode 100644 index 0000000..d3a343b Binary files /dev/null and b/assets/images/brainhack_bids_shanoir.png differ diff --git a/assets/images/brainhack_bordeaux_2020.png b/assets/images/brainhack_bordeaux_2020.png new file mode 100644 index 0000000..6c6ea06 Binary files /dev/null and b/assets/images/brainhack_bordeaux_2020.png differ diff --git a/assets/images/brainhack_dl.png b/assets/images/brainhack_dl.png new file mode 100644 index 0000000..4e6e74c Binary files /dev/null and b/assets/images/brainhack_dl.png differ diff --git a/assets/images/brainhack_eeg16_pong.png b/assets/images/brainhack_eeg16_pong.png new file mode 100644 index 0000000..7a05aea Binary files /dev/null and b/assets/images/brainhack_eeg16_pong.png differ diff --git a/assets/images/brainhack_eeg_project.png b/assets/images/brainhack_eeg_project.png new file mode 100644 index 0000000..d49f627 Binary files /dev/null and b/assets/images/brainhack_eeg_project.png differ diff --git a/assets/images/brainhack_fmri.png b/assets/images/brainhack_fmri.png new file mode 100644 index 0000000..4d2edb0 Binary files /dev/null and b/assets/images/brainhack_fmri.png differ diff --git a/assets/images/brainhack_geneva2019.png b/assets/images/brainhack_geneva2019.png new file mode 100644 index 0000000..0630a4d Binary files /dev/null and b/assets/images/brainhack_geneva2019.png differ diff --git a/assets/images/brainhack_geneva2019_global.png b/assets/images/brainhack_geneva2019_global.png new file mode 100644 index 0000000..b62b3ce Binary files /dev/null and b/assets/images/brainhack_geneva2019_global.png differ diff --git a/assets/images/brainhack_greenbrain-e1380499421954-222x180.png b/assets/images/brainhack_greenbrain-e1380499421954-222x180.png new file mode 100644 index 0000000..8e5e4b9 Binary files /dev/null and b/assets/images/brainhack_greenbrain-e1380499421954-222x180.png differ diff --git a/images/brainhack_header.png b/assets/images/brainhack_header.png similarity index 100% rename from images/brainhack_header.png rename to assets/images/brainhack_header.png diff --git a/assets/images/brainhack_krakow_2022.jpg b/assets/images/brainhack_krakow_2022.jpg new file mode 100644 index 0000000..9508d8f Binary files /dev/null and b/assets/images/brainhack_krakow_2022.jpg differ diff --git a/assets/images/brainhack_krakow_2022_thumbnail.jpg b/assets/images/brainhack_krakow_2022_thumbnail.jpg new file mode 100644 index 0000000..342b980 Binary files /dev/null and b/assets/images/brainhack_krakow_2022_thumbnail.jpg differ diff --git a/assets/images/brainhack_logo-466x180.png b/assets/images/brainhack_logo-466x180.png new file mode 100644 index 0000000..7244d18 Binary files /dev/null and b/assets/images/brainhack_logo-466x180.png differ diff --git a/assets/images/brainhack_logo_400x400.png b/assets/images/brainhack_logo_400x400.png new file mode 100644 index 0000000..bc484f6 Binary files /dev/null and b/assets/images/brainhack_logo_400x400.png differ diff --git a/assets/images/brainhack_micro2macro_2021.png b/assets/images/brainhack_micro2macro_2021.png new file mode 100644 index 0000000..3d90df9 Binary files /dev/null and b/assets/images/brainhack_micro2macro_2021.png differ diff --git a/assets/images/brainhack_nipype_anima_project.png b/assets/images/brainhack_nipype_anima_project.png new file mode 100644 index 0000000..3b8cb1b Binary files /dev/null and b/assets/images/brainhack_nipype_anima_project.png differ diff --git a/assets/images/brainhack_ohbm_2020.png b/assets/images/brainhack_ohbm_2020.png new file mode 100644 index 0000000..75f5f93 Binary files /dev/null and b/assets/images/brainhack_ohbm_2020.png differ diff --git a/assets/images/brainhack_ohbm_2021.jpg b/assets/images/brainhack_ohbm_2021.jpg new file mode 100644 index 0000000..eb810dd Binary files /dev/null and b/assets/images/brainhack_ohbm_2021.jpg differ diff --git a/assets/images/brainhack_paris_anatomy_2018.png b/assets/images/brainhack_paris_anatomy_2018.png new file mode 100644 index 0000000..66799cd Binary files /dev/null and b/assets/images/brainhack_paris_anatomy_2018.png differ diff --git a/assets/images/brainhack_school_2019.png b/assets/images/brainhack_school_2019.png new file mode 100644 index 0000000..6b11008 Binary files /dev/null and b/assets/images/brainhack_school_2019.png differ diff --git a/assets/images/brainhack_southafrica_2024.png b/assets/images/brainhack_southafrica_2024.png new file mode 100644 index 0000000..1220c02 Binary files /dev/null and b/assets/images/brainhack_southafrica_2024.png differ diff --git a/assets/images/brainhack_vienna2-222x180.png b/assets/images/brainhack_vienna2-222x180.png new file mode 100644 index 0000000..4899d60 Binary files /dev/null and b/assets/images/brainhack_vienna2-222x180.png differ diff --git a/assets/images/brainhack_vienna_2019.jpg b/assets/images/brainhack_vienna_2019.jpg new file mode 100644 index 0000000..3613bf0 Binary files /dev/null and b/assets/images/brainhack_vienna_2019.jpg differ diff --git a/assets/images/brainhack_warsaw_2020.png b/assets/images/brainhack_warsaw_2020.png new file mode 100644 index 0000000..ce720ca Binary files /dev/null and b/assets/images/brainhack_warsaw_2020.png differ diff --git a/assets/images/brainhackdclogo.png b/assets/images/brainhackdclogo.png new file mode 100644 index 0000000..ea31a57 Binary files /dev/null and b/assets/images/brainhackdclogo.png differ diff --git a/assets/images/brainhackedt.png b/assets/images/brainhackedt.png new file mode 100644 index 0000000..8be046c Binary files /dev/null and b/assets/images/brainhackedt.png differ diff --git a/assets/images/brainhackgradients.png b/assets/images/brainhackgradients.png new file mode 100644 index 0000000..b76d216 Binary files /dev/null and b/assets/images/brainhackgradients.png differ diff --git a/assets/images/brainhacklesionsparis2017.png b/assets/images/brainhacklesionsparis2017.png new file mode 100644 index 0000000..2f5aab8 Binary files /dev/null and b/assets/images/brainhacklesionsparis2017.png differ diff --git a/assets/images/brainhacklondonlogo.png b/assets/images/brainhacklondonlogo.png new file mode 100644 index 0000000..df07181 Binary files /dev/null and b/assets/images/brainhacklondonlogo.png differ diff --git a/assets/images/brainspell.png b/assets/images/brainspell.png index d55899a..8371df9 100644 Binary files a/assets/images/brainspell.png and b/assets/images/brainspell.png differ diff --git a/assets/images/chem_grads_1-222x180.png b/assets/images/chem_grads_1-222x180.png new file mode 100644 index 0000000..45fe94c Binary files /dev/null and b/assets/images/chem_grads_1-222x180.png differ diff --git a/assets/images/china_hack_2021.png b/assets/images/china_hack_2021.png new file mode 100644 index 0000000..82fae1e Binary files /dev/null and b/assets/images/china_hack_2021.png differ diff --git a/assets/images/cloud-222x180.png b/assets/images/cloud-222x180.png new file mode 100644 index 0000000..08e002f Binary files /dev/null and b/assets/images/cloud-222x180.png differ diff --git a/images/cmi_logo.jpg b/assets/images/cmi_logo.jpg similarity index 100% rename from images/cmi_logo.jpg rename to assets/images/cmi_logo.jpg diff --git a/assets/images/coffee-744154_1280-222x180.jpg b/assets/images/coffee-744154_1280-222x180.jpg new file mode 100644 index 0000000..4c74743 Binary files /dev/null and b/assets/images/coffee-744154_1280-222x180.jpg differ diff --git a/images/container-bg-right.png b/assets/images/container-bg-right.png similarity index 100% rename from images/container-bg-right.png rename to assets/images/container-bg-right.png diff --git a/images/container-bg.png b/assets/images/container-bg.png similarity index 100% rename from images/container-bg.png rename to assets/images/container-bg.png diff --git a/assets/images/datalad-logo2-222x180.png b/assets/images/datalad-logo2-222x180.png new file mode 100644 index 0000000..f16c5f8 Binary files /dev/null and b/assets/images/datalad-logo2-222x180.png differ diff --git a/assets/images/deep-neurons-logo.jpg b/assets/images/deep-neurons-logo.jpg new file mode 100644 index 0000000..68dccd8 Binary files /dev/null and b/assets/images/deep-neurons-logo.jpg differ diff --git a/assets/images/deepbrainhack.png b/assets/images/deepbrainhack.png new file mode 100644 index 0000000..3b84865 Binary files /dev/null and b/assets/images/deepbrainhack.png differ diff --git a/assets/images/dipy_overview_figure-466x180.jpg b/assets/images/dipy_overview_figure-466x180.jpg new file mode 100644 index 0000000..52431df Binary files /dev/null and b/assets/images/dipy_overview_figure-466x180.jpg differ diff --git a/assets/images/donostia_05052019.png b/assets/images/donostia_05052019.png new file mode 100644 index 0000000..e6556a7 Binary files /dev/null and b/assets/images/donostia_05052019.png differ diff --git a/assets/images/elementai.jpeg b/assets/images/elementai.jpeg new file mode 100644 index 0000000..66a55bf Binary files /dev/null and b/assets/images/elementai.jpeg differ diff --git a/assets/images/entry-bottom-bg.png b/assets/images/entry-bottom-bg.png new file mode 100644 index 0000000..10e646e Binary files /dev/null and b/assets/images/entry-bottom-bg.png differ diff --git a/assets/images/entry-top-bg.png b/assets/images/entry-top-bg.png new file mode 100644 index 0000000..96a49ab Binary files /dev/null and b/assets/images/entry-top-bg.png differ diff --git a/assets/images/fig_clusters-222x153.png b/assets/images/fig_clusters-222x153.png new file mode 100644 index 0000000..156ecbe Binary files /dev/null and b/assets/images/fig_clusters-222x153.png differ diff --git a/assets/images/fig_fir-179x180.png b/assets/images/fig_fir-179x180.png new file mode 100644 index 0000000..f40034c Binary files /dev/null and b/assets/images/fig_fir-179x180.png differ diff --git a/assets/images/fmriprep-222x180.png b/assets/images/fmriprep-222x180.png new file mode 100644 index 0000000..de50d0a Binary files /dev/null and b/assets/images/fmriprep-222x180.png differ diff --git a/assets/images/fninf-08-00054-g007-222x180.jpg b/assets/images/fninf-08-00054-g007-222x180.jpg new file mode 100644 index 0000000..c8fb3c5 Binary files /dev/null and b/assets/images/fninf-08-00054-g007-222x180.jpg differ diff --git a/images/forward_disabled.jpg b/assets/images/forward_disabled.jpg similarity index 100% rename from images/forward_disabled.jpg rename to assets/images/forward_disabled.jpg diff --git a/images/forward_enabled.jpg b/assets/images/forward_enabled.jpg similarity index 100% rename from images/forward_enabled.jpg rename to assets/images/forward_enabled.jpg diff --git a/assets/images/fscortex-222x180.png b/assets/images/fscortex-222x180.png new file mode 100644 index 0000000..f11ecea Binary files /dev/null and b/assets/images/fscortex-222x180.png differ diff --git a/assets/images/geneva_2020.png b/assets/images/geneva_2020.png new file mode 100644 index 0000000..2d59a86 Binary files /dev/null and b/assets/images/geneva_2020.png differ diff --git a/images/gigadb.jpg b/assets/images/gigadb.jpg similarity index 100% rename from images/gigadb.jpg rename to assets/images/gigadb.jpg diff --git a/assets/images/gigascience-07-222x180.png b/assets/images/gigascience-07-222x180.png new file mode 100644 index 0000000..758ca85 Binary files /dev/null and b/assets/images/gigascience-07-222x180.png differ diff --git a/assets/images/gigascience-07-466x180.png b/assets/images/gigascience-07-466x180.png new file mode 100644 index 0000000..72d3dfc Binary files /dev/null and b/assets/images/gigascience-07-466x180.png differ diff --git a/images/gigascience.gif b/assets/images/gigascience.gif similarity index 100% rename from images/gigascience.gif rename to assets/images/gigascience.gif diff --git a/assets/images/gigascience.png b/assets/images/gigascience.png new file mode 100644 index 0000000..54cd78f Binary files /dev/null and b/assets/images/gigascience.png differ diff --git a/assets/images/hackathon-222x110.png b/assets/images/hackathon-222x110.png new file mode 100644 index 0000000..9e35dc8 Binary files /dev/null and b/assets/images/hackathon-222x110.png differ diff --git a/assets/images/hackathon_logo.png b/assets/images/hackathon_logo.png new file mode 100644 index 0000000..edfa904 Binary files /dev/null and b/assets/images/hackathon_logo.png differ diff --git a/assets/images/hbhllogo.png b/assets/images/hbhllogo.png new file mode 100644 index 0000000..23f2e06 Binary files /dev/null and b/assets/images/hbhllogo.png differ diff --git a/images/highlight-bg.jpg b/assets/images/highlight-bg.jpg similarity index 100% rename from images/highlight-bg.jpg rename to assets/images/highlight-bg.jpg diff --git a/images/hr.png b/assets/images/hr.png similarity index 100% rename from images/hr.png rename to assets/images/hr.png diff --git a/assets/images/image_matching-222x180.png b/assets/images/image_matching-222x180.png new file mode 100644 index 0000000..a180135 Binary files /dev/null and b/assets/images/image_matching-222x180.png differ diff --git a/assets/images/image_matching.png b/assets/images/image_matching.png new file mode 100644 index 0000000..d25a84d Binary files /dev/null and b/assets/images/image_matching.png differ diff --git a/assets/images/images-222x168.jpg b/assets/images/images-222x168.jpg new file mode 100644 index 0000000..93cf026 Binary files /dev/null and b/assets/images/images-222x168.jpg differ diff --git a/assets/images/images-222x173.jpeg b/assets/images/images-222x173.jpeg new file mode 100644 index 0000000..df5f151 Binary files /dev/null and b/assets/images/images-222x173.jpeg differ diff --git a/images/incf_logo.png b/assets/images/incf_logo.png similarity index 100% rename from images/incf_logo.png rename to assets/images/incf_logo.png diff --git a/images/incf_logo.svg b/assets/images/incf_logo.svg similarity index 100% rename from images/incf_logo.svg rename to assets/images/incf_logo.svg diff --git a/assets/images/ipython1-222x180.png b/assets/images/ipython1-222x180.png new file mode 100644 index 0000000..cb59442 Binary files /dev/null and b/assets/images/ipython1-222x180.png differ diff --git a/assets/images/journal_coCitation-222x180.png b/assets/images/journal_coCitation-222x180.png new file mode 100644 index 0000000..c9adb00 Binary files /dev/null and b/assets/images/journal_coCitation-222x180.png differ diff --git a/assets/images/limo-222x180.png b/assets/images/limo-222x180.png new file mode 100644 index 0000000..7fab651 Binary files /dev/null and b/assets/images/limo-222x180.png differ diff --git a/assets/images/limo.png b/assets/images/limo.png new file mode 100644 index 0000000..2168754 Binary files /dev/null and b/assets/images/limo.png differ diff --git a/assets/images/logo-222x180.png b/assets/images/logo-222x180.png new file mode 100644 index 0000000..e2f64bf Binary files /dev/null and b/assets/images/logo-222x180.png differ diff --git a/assets/images/logo_neuropoly-222x180.png b/assets/images/logo_neuropoly-222x180.png new file mode 100644 index 0000000..3148748 Binary files /dev/null and b/assets/images/logo_neuropoly-222x180.png differ diff --git a/assets/images/logo_qc_work_group1-190x180.png b/assets/images/logo_qc_work_group1-190x180.png new file mode 100644 index 0000000..545c23d Binary files /dev/null and b/assets/images/logo_qc_work_group1-190x180.png differ diff --git a/assets/images/loris_v2.grey_.clear_.cropped-283x116-222x116.png b/assets/images/loris_v2.grey_.clear_.cropped-283x116-222x116.png new file mode 100644 index 0000000..5781b37 Binary files /dev/null and b/assets/images/loris_v2.grey_.clear_.cropped-283x116-222x116.png differ diff --git a/assets/images/mdmBrainhack3.png b/assets/images/mdmBrainhack3.png new file mode 100644 index 0000000..0781f0e Binary files /dev/null and b/assets/images/mdmBrainhack3.png differ diff --git a/assets/images/modalitiesimage-466x180.png b/assets/images/modalitiesimage-466x180.png new file mode 100644 index 0000000..4b6a141 Binary files /dev/null and b/assets/images/modalitiesimage-466x180.png differ diff --git a/assets/images/mri-222x180.jpg b/assets/images/mri-222x180.jpg new file mode 100644 index 0000000..b19fcb2 Binary files /dev/null and b/assets/images/mri-222x180.jpg differ diff --git a/assets/images/n-doors-lighting-guality01-222x180.jpeg b/assets/images/n-doors-lighting-guality01-222x180.jpeg new file mode 100644 index 0000000..640c2c0 Binary files /dev/null and b/assets/images/n-doors-lighting-guality01-222x180.jpeg differ diff --git a/assets/images/neural_ohbm_ea.png b/assets/images/neural_ohbm_ea.png new file mode 100644 index 0000000..5878b2a Binary files /dev/null and b/assets/images/neural_ohbm_ea.png differ diff --git a/assets/images/neurodata_purple.png b/assets/images/neurodata_purple.png new file mode 100644 index 0000000..552ab1d Binary files /dev/null and b/assets/images/neurodata_purple.png differ diff --git a/assets/images/neurodebian-banner12-222x67.png b/assets/images/neurodebian-banner12-222x67.png new file mode 100644 index 0000000..0ebd9a6 Binary files /dev/null and b/assets/images/neurodebian-banner12-222x67.png differ diff --git a/assets/images/neurodebian_logo_posters_banner_ohbm2015-222x180.png b/assets/images/neurodebian_logo_posters_banner_ohbm2015-222x180.png new file mode 100644 index 0000000..737c17b Binary files /dev/null and b/assets/images/neurodebian_logo_posters_banner_ohbm2015-222x180.png differ diff --git a/assets/images/neurohackweek-bg-466x180.png b/assets/images/neurohackweek-bg-466x180.png new file mode 100644 index 0000000..9375908 Binary files /dev/null and b/assets/images/neurohackweek-bg-466x180.png differ diff --git a/assets/images/neurohackweek-bg.jpg b/assets/images/neurohackweek-bg.jpg new file mode 100644 index 0000000..bccb389 Binary files /dev/null and b/assets/images/neurohackweek-bg.jpg differ diff --git a/assets/images/neurostars.logo_-222x180.png b/assets/images/neurostars.logo_-222x180.png new file mode 100644 index 0000000..b5a5b2e Binary files /dev/null and b/assets/images/neurostars.logo_-222x180.png differ diff --git a/assets/images/neurosynth-222x180.png b/assets/images/neurosynth-222x180.png new file mode 100644 index 0000000..d053662 Binary files /dev/null and b/assets/images/neurosynth-222x180.png differ diff --git a/assets/images/neurosynth_logo-457x180.png b/assets/images/neurosynth_logo-457x180.png new file mode 100644 index 0000000..74a2d7b Binary files /dev/null and b/assets/images/neurosynth_logo-457x180.png differ diff --git a/assets/images/nidata1-222x180.png b/assets/images/nidata1-222x180.png new file mode 100644 index 0000000..7da61fd Binary files /dev/null and b/assets/images/nidata1-222x180.png differ diff --git a/assets/images/nidm-apps-222x180.png b/assets/images/nidm-apps-222x180.png new file mode 100644 index 0000000..dec7727 Binary files /dev/null and b/assets/images/nidm-apps-222x180.png differ diff --git a/assets/images/nilearn-logo-222x180.png b/assets/images/nilearn-logo-222x180.png new file mode 100644 index 0000000..b474c13 Binary files /dev/null and b/assets/images/nilearn-logo-222x180.png differ diff --git a/assets/images/nipype-222x180.png b/assets/images/nipype-222x180.png new file mode 100644 index 0000000..6a8015d Binary files /dev/null and b/assets/images/nipype-222x180.png differ diff --git a/images/nki_logo.jpg b/assets/images/nki_logo.jpg similarity index 100% rename from images/nki_logo.jpg rename to assets/images/nki_logo.jpg diff --git a/assets/images/ns_pic-222x180.png b/assets/images/ns_pic-222x180.png new file mode 100644 index 0000000..ccf5afe Binary files /dev/null and b/assets/images/ns_pic-222x180.png differ diff --git a/images/octocat-icon.png b/assets/images/octocat-icon.png similarity index 100% rename from images/octocat-icon.png rename to assets/images/octocat-icon.png diff --git a/assets/images/ohbm-2016-logo-222x180.png b/assets/images/ohbm-2016-logo-222x180.png new file mode 100644 index 0000000..c5889cb Binary files /dev/null and b/assets/images/ohbm-2016-logo-222x180.png differ diff --git a/assets/images/ohbm-2018-logo-466x180.png b/assets/images/ohbm-2018-logo-466x180.png new file mode 100644 index 0000000..9b77207 Binary files /dev/null and b/assets/images/ohbm-2018-logo-466x180.png differ diff --git a/assets/images/openfmri_logo-222x101.png b/assets/images/openfmri_logo-222x101.png new file mode 100644 index 0000000..1798cf6 Binary files /dev/null and b/assets/images/openfmri_logo-222x101.png differ diff --git a/assets/images/overlay.png b/assets/images/overlay.png new file mode 100644 index 0000000..1d10db8 Binary files /dev/null and b/assets/images/overlay.png differ diff --git a/assets/images/overlay2.png b/assets/images/overlay2.png new file mode 100644 index 0000000..3ee2825 Binary files /dev/null and b/assets/images/overlay2.png differ diff --git a/assets/images/php3popaW-222x180.png b/assets/images/php3popaW-222x180.png new file mode 100644 index 0000000..fe43cd7 Binary files /dev/null and b/assets/images/php3popaW-222x180.png differ diff --git a/images/predictions.jpg b/assets/images/predictions.jpg similarity index 100% rename from images/predictions.jpg rename to assets/images/predictions.jpg diff --git a/images/prisma_challenge_sag_half.png b/assets/images/prisma_challenge_sag_half.png similarity index 100% rename from images/prisma_challenge_sag_half.png rename to assets/images/prisma_challenge_sag_half.png diff --git a/images/rio_logo.jpeg b/assets/images/rio_logo.jpeg similarity index 100% rename from images/rio_logo.jpeg rename to assets/images/rio_logo.jpeg diff --git a/assets/images/rohub-222x136.jpeg b/assets/images/rohub-222x136.jpeg new file mode 100644 index 0000000..7a59bb8 Binary files /dev/null and b/assets/images/rohub-222x136.jpeg differ diff --git a/assets/images/rtms.png b/assets/images/rtms.png new file mode 100644 index 0000000..d021222 Binary files /dev/null and b/assets/images/rtms.png differ diff --git a/assets/images/sharing-222x180.png b/assets/images/sharing-222x180.png new file mode 100644 index 0000000..4556427 Binary files /dev/null and b/assets/images/sharing-222x180.png differ diff --git a/images/sort_asc.png b/assets/images/sort_asc.png similarity index 100% rename from images/sort_asc.png rename to assets/images/sort_asc.png diff --git a/images/sort_asc_disabled.png b/assets/images/sort_asc_disabled.png similarity index 100% rename from images/sort_asc_disabled.png rename to assets/images/sort_asc_disabled.png diff --git a/images/sort_both.png b/assets/images/sort_both.png similarity index 100% rename from images/sort_both.png rename to assets/images/sort_both.png diff --git a/images/sort_desc.png b/assets/images/sort_desc.png similarity index 100% rename from images/sort_desc.png rename to assets/images/sort_desc.png diff --git a/images/sort_desc_disabled.png b/assets/images/sort_desc_disabled.png similarity index 100% rename from images/sort_desc_disabled.png rename to assets/images/sort_desc_disabled.png diff --git a/assets/images/spark_africa_2023.png b/assets/images/spark_africa_2023.png new file mode 100644 index 0000000..7868e38 Binary files /dev/null and b/assets/images/spark_africa_2023.png differ diff --git a/assets/images/starling_1758597c-222x180.jpeg b/assets/images/starling_1758597c-222x180.jpeg new file mode 100644 index 0000000..406de7f Binary files /dev/null and b/assets/images/starling_1758597c-222x180.jpeg differ diff --git a/images/struct_preproc.png b/assets/images/struct_preproc.png similarity index 100% rename from images/struct_preproc.png rename to assets/images/struct_preproc.png diff --git a/assets/images/surfdist-222x180.png b/assets/images/surfdist-222x180.png new file mode 100644 index 0000000..3c4c83c Binary files /dev/null and b/assets/images/surfdist-222x180.png differ diff --git a/images/tar-gz-icon.png b/assets/images/tar-gz-icon.png similarity index 100% rename from images/tar-gz-icon.png rename to assets/images/tar-gz-icon.png diff --git a/images/texture.png b/assets/images/texture.png similarity index 100% rename from images/texture.png rename to assets/images/texture.png diff --git a/assets/images/toronto_rtms_challenge-466x180.png b/assets/images/toronto_rtms_challenge-466x180.png new file mode 100644 index 0000000..f5483d0 Binary files /dev/null and b/assets/images/toronto_rtms_challenge-466x180.png differ diff --git a/assets/images/volume_and_surface-222x180.png b/assets/images/volume_and_surface-222x180.png new file mode 100644 index 0000000..64284a2 Binary files /dev/null and b/assets/images/volume_and_surface-222x180.png differ diff --git a/assets/images/warsawlogo.png b/assets/images/warsawlogo.png new file mode 100644 index 0000000..07eff2e Binary files /dev/null and b/assets/images/warsawlogo.png differ diff --git a/images/zip-icon.png b/assets/images/zip-icon.png similarity index 100% rename from images/zip-icon.png rename to assets/images/zip-icon.png diff --git a/code-of-conduct.md b/code-of-conduct.md new file mode 100644 index 0000000..b3eb01e --- /dev/null +++ b/code-of-conduct.md @@ -0,0 +1,38 @@ +--- +layout: page +title: About +--- + +# Code of Conduct + +Brainhack is dedicated to providing a harassment-free Brainhack experience for everyone, regardless of gender, gender identity and expression, sexual orientation, disability, physical appearance, body size, race, age or religion. We do not tolerate harassment of event participants in any form. Sexual language and imagery is not appropriate for any event venue, including talks. event participants violating these rules may be sanctioned or expelled from the event without a refund at the discretion of the event organizers. + +Harassment includes, but is not limited to: + +- Verbal comments that reinforce social structures of domination related to gender, gender identity and expression, sexual orientation, disability, physical appearance, body size, race, age or religion. +- Sexual images in public spaces +- Deliberate intimidation, stalking, or following +- Harassing photography or recording +- Sustained disruption of talks or other events +- Inappropriate physical contact +- Unwelcome sexual attention +- Advocating for, or encouraging, any of the above behaviour + +## Enforcement + +Participants asked to stop any harassing behavior are expected to comply immediately. + +Organizers and presenters are also subject to the anti-harassment policy. In particular, they should not use sexualized images, activities, or other material. + +Event organisers may take action to redress anything designed to, or with the clear impact of, disrupting the event or making the environment hostile for any participants. + +If a participant engages in harassing behaviour, event organisers have the responsibility to remind the offender about Brainhack's Code of Conduct, and warn them that repeated inappropriate, uncivil, threatening, offensive, or harmful behavior can lead to a temporary or permanent ban from the event with no refund. The offending person(s) may also see affected their participation in future Brainhack events. + +We expect participants to follow these rules at all event venues and event-related social activities. We think people should follow these rules outside event activities too! + + +## Reporting + +If someone makes you or anyone else feel unsafe or unwelcome, please report it as soon as possible to the events organizers or [brainhackorg@gmail.com](mailto:brainhackorg@gmail.com). Harassment and other code of conduct violations reduce the value of our event for everyone. We want you to be happy at our event. People like you make our event a better place. + +You can make a report either with your personal email or using an anonymous email. diff --git a/events/index.html b/events/index.html new file mode 100644 index 0000000..fa9d356 --- /dev/null +++ b/events/index.html @@ -0,0 +1,13 @@ + + + + + + + + + This is a test! + + \ No newline at end of file diff --git a/fonts/leaguegothic-condenseditalic-webfont.woff b/fonts/leaguegothic-condenseditalic-webfont.woff new file mode 100755 index 0000000..52baa11 Binary files /dev/null and b/fonts/leaguegothic-condenseditalic-webfont.woff differ diff --git a/fonts/leaguegothic-condenseditalic-webfont.woff2 b/fonts/leaguegothic-condenseditalic-webfont.woff2 new file mode 100755 index 0000000..42dd579 Binary files /dev/null and b/fonts/leaguegothic-condenseditalic-webfont.woff2 differ diff --git a/fonts/leaguegothic-condensedregular-webfont.woff b/fonts/leaguegothic-condensedregular-webfont.woff new file mode 100755 index 0000000..5afddab Binary files /dev/null and b/fonts/leaguegothic-condensedregular-webfont.woff differ diff --git a/fonts/leaguegothic-condensedregular-webfont.woff2 b/fonts/leaguegothic-condensedregular-webfont.woff2 new file mode 100755 index 0000000..8711060 Binary files /dev/null and b/fonts/leaguegothic-condensedregular-webfont.woff2 differ diff --git a/fonts/leaguegothic-italic-webfont.woff b/fonts/leaguegothic-italic-webfont.woff new file mode 100755 index 0000000..6f073a3 Binary files /dev/null and b/fonts/leaguegothic-italic-webfont.woff differ diff --git a/fonts/leaguegothic-italic-webfont.woff2 b/fonts/leaguegothic-italic-webfont.woff2 new file mode 100755 index 0000000..2264bd6 Binary files /dev/null and b/fonts/leaguegothic-italic-webfont.woff2 differ diff --git a/fonts/leaguegothic-regular-webfont.woff b/fonts/leaguegothic-regular-webfont.woff new file mode 100755 index 0000000..a059515 Binary files /dev/null and b/fonts/leaguegothic-regular-webfont.woff differ diff --git a/fonts/leaguegothic-regular-webfont.woff2 b/fonts/leaguegothic-regular-webfont.woff2 new file mode 100755 index 0000000..13e132b Binary files /dev/null and b/fonts/leaguegothic-regular-webfont.woff2 differ diff --git a/global.md b/global.md new file mode 100644 index 0000000..f5ea48d --- /dev/null +++ b/global.md @@ -0,0 +1,14 @@ +--- +layout: page +title: BrainHack Global +--- + +# BrainHack Global + +BrainHack Global (BHG) is a hackathon consisting of multiple local events in different +regions around the world run towards the end of the year November ~ December. A central +project submission website (see [BrainHack Global 2023](https://brainhack.org/global2023/projects/\)) +can be used to coordinate projects across event sites. If you are planning to host a +hackathon in your region around this time and would like to loosely coordinate with +other hackathons going on at the same time please add your event to the +[BrainHack Global 2024 events list](https://brainhack.org/global2024/events/). \ No newline at end of file diff --git a/host.md b/host.md new file mode 100644 index 0000000..ecb3899 --- /dev/null +++ b/host.md @@ -0,0 +1,197 @@ +--- +layout: page +title: Host +--- + +# Tips on hosting a Brainhack + +To contribute, go to the document link: [Brainhack: how we roll](https://paper.dropbox.com/doc/Brainhack-how-we-roll--AZ_Dn8HpZ2G0U56yVcAqleE6AQ-7elqfJj6adFIBWryuBtTZ) + +# Brainhack: how we roll + +The Brainhack meeting series have recently been introduced in the following [paper](https://gigascience.biomedcentral.com/articles/10.1186/s13742-016-0121-x). So you want to run a brainhack? Here is a step-by-step guide to help you make it a success: + +# Who? When? + +In planning a brainhack, the first questions to answer are + +1. when to organize it? +2. who is the intended audience? + + +Things to consider: + +- The brainhack format works better with **30-80 participants**. +- If you aim to attract more **international participants**, choose dates for your brainhack immediately **before or after a large** **international** **conference,** and use a location that is close to that conference. +- Brainhacks can be organized with only **local folks**, provided a large, energetic enough community is present in a given institution or city. **Check for conference dates and poll potential participants** to avoid conflicting with major meetings. +- For the past couple of years there have been **distributed** **Brainhack** events, organized by Cameron Craddock. This is a coordinated series of brainhacks happening in parallel across several cities/countries. This gives more visibility to local events, and gives participants the opportunity to engage with a larger community in the comfort of their own home town, notably through slack. + +# Location + +Next thing to do is secure a location. There are several viable options: + +- **hacker/maker/citizen science space**. Many large cities now have a variety of spaces dedicated to hacking, making things, as well as lab spaces opened to anyone. Running hackathons is often part of their mission and they can offer cheap options for hosting. It is also a vibrant environment to run a hackathon. +- **Academic institutions** are also a great option. They are often able to accommodate workshops for free. +- **Spaces dedicated to creation, and innovative approaches to teaching**. Maybe less conventional for academics, this type of organizations has shown interest in brainhacks in the past. They sometimes have sponsorship available. + + +Things to consider when choosing a location: + +- There needs to be a room that can host **presentations**. You need a projector, and comfortable sitting for all participants in a single room. +- There also needs to be some **work space** where participants can break up into smaller groups. Ideally this space would be separate or at least not fully overlap with the presentation room. This makes it possible to have focus group presenting on a topic, while other participants keep on hacking. +- **work space** should ideally include white boards and plenty of working surfaces and power outlets to avoid overcrowding, but this of course must be balanced with the other considerations. +- The ideal situation is to have the **work and presentation rooms connected**. +- Possibility to have **onsite food and lodging** is a big plus. +- Brainhack is an event focused on creation. The **beauty** of a space is a big intangible to consider. + +# Schedule + +A detailed explanation of the activities held during a brainhack can be found in this [paper](http://gigascience.biomedcentral.com/articles/10.1186/s13742-016-0121-x). The typical schedule looks like: +**Day 1:** + +- 9:00-9:30 **Breakfast** +- 9:30-10:00 **Introduction** to brainhack, presentation of the space and schedule +- 10:00-11:00 **Project pitches** +- 11-00-12:30 Team organization & **open hacking** +- 12:30-13:30 Lunch +- 13:30-16:30 **Open hacking** +- 16:30-18:00 **Unconference** +- 18:00-20:00 Dinner +- 20:00-(...) **Open hacking** + +**Day 2:** + +- 9:00-9:30 Breakfast +- 9:30-11:00 **Unconference** +- 11:00-12:30 **Open hacking** +- 12:30-13:30 Lunch +- 13:30-16:30 **Open hacking** +- 16:30-18:00 **Unconference** +- 18:00-20:00 Dinner + **social** + +**Day 3** + +- 9:00-9:30 Breakfast +- 9:30-11:00 **Unconference** +- 11:00-12:30 **Open hacking** +- 12:30-13:30 Lunch +- 13:30-15:00 **Open hacking** +- 15-00:17:00 **Project wrap-ups** + **conclusion** + + +Some explanation/comments: + +- For a **local event**, a 2 days format works well. Day 2 in the schedule above can be removed entirely, with a social component added at the end of Day 1. +- **Project pitches** are 5 minutes long. Insist on the time (have a timer, and a 30 seconds warning). People can register on a white board. Slides / websites are optional, and can be posted on slack for smooth transition between presentations using a single computer. Projects can be discussed ahead of the meeting through slack. For examples of project, see Table 1 in the [brainhack paper](http://gigascience.biomedcentral.com/articles/10.1186/s13742-016-0121-x). **New**: people can also pitch an expertise, so that project pitchers can latter ask them for specific contributions. +- The **introduction to brainhack** is important for new participants who may not know the different stages of a brainhack. Explain the different components of the event. Example slides are available here: [https://docs.google.com/presentation/d/1FSys-nbyh6YgrGEFIaqhU5ePiA8yrjWtTmsXtJCJj_U/edit?usp=sharing](https://docs.google.com/presentation/d/1FSys-nbyh6YgrGEFIaqhU5ePiA8yrjWtTmsXtJCJj_U/edit?usp=sharing) +- **Open hacking** is simply splitting people into teams and have them work on projects. It may be a good idea to assign a different table or space for each project after the project pitches. +- 15 mins before **unconferences**, go around to encourage people to sign up for brief, 5 mns talk. Insist on the time (have a timer, and a 30 seconds warning). But be flexible: people can request a 10 mns slot or even more, if justified. You can start a session even if only a few people signed up for talks. More people will likely sign on after the session begins. Have faith: people actually have lots of presentation ideas. Although it may break the flow of open hacking, it also helps getting everybody back together and change gear for a while. Feedback on this component of the event has been very positive, despite the interruption of on-going projects. +- Participants will very much welcome the opportunity to let the steam off during a **social event**. This can go from a beer at the pub for a local event to something much more ambitious ... be creative. +- Project **wrap-ups** are a brief recap of what people have accomplished. It is important to insist this is a progress report, not a pitch for a final product (which the vast majority of people will not achieve). +- **Other elements** can be added to the program, such as ice breaker, or ignite talks. Check Table 2 of the [brainhack paper](http://gigascience.biomedcentral.com/articles/10.1186/s13742-016-0121-x). **Special activities** have not been listed there, as they are very much specific to the participants and location. Examples include (1) initiation to laser cutting for 3D brain representation, (2) visit of a DYI lab / maker space etc. +- **Conclusion** gives the opportunity for participants to give feedback. Ask for what they would want to improve and report to the [#brainhack](/ep/search/?q=%23brainhack)-todo slack channel . You can even edit this document as needed to reflect the feedback. It is also very useful to ask what they liked. First because it reinforces what we deem to be successful in the brainhack recipe, and also because positive energy is great for a conclusion. Finally, the conclusion is a good time to let people know about the brainhack proceedings series at gigascience. + +# Lodging + +For international events, participants will appreciate to have recommendations about where to stay. Critical factors for most attendees will be (1) proximity to the location; (2) costs. Some venues in the past have offered lodging onsite for all participants. This is a very uncommon opportunity, but does help a lot to infect energy in the hackathon, because people do not hesitate to stay late. +# Website and registration + +You will need a website describing the event, and an online registration procedure. Ideally, the registration would roll until the day of the event, and it would be possible to register onsite. Brainhack webpages are hosted on github at: [https://github.com/brainhackorg](https://github.com/brainhackorg). To create a new web page, contact brainhackorg@gmail.com to have a new repository created for you with a copy of a template from a previous event. + +Example of previous websites: +[http://events.brainhack.org/OHBM2016/](http://events.brainhack.org/OHBM2016/) +[http://events.brainhack.org/vienna/](http://events.brainhack.org/vienna/) +More at [http://events.](http://events.cbrainhack.org/)[c](http://events.cbrainhack.org/)[brainhack.org/](http://events.cbrainhack.org/) + +Registration pages can be created using google forms ([http://forms.google.com](http://forms.google.com)). Collecting a registration fee can be tricky. Some universities have a mechanism for taking online payments. If your university doesn't have this service or you are not apart of a university other options such as [http://eventbrite.com](http://eventbrite.com) can be considered, but remember that they charge a fee and could result in you being liable for income taxes on the collected fees. +# Publicizing the event + +Now that the location, date, schedule, lodging and website/registration are all in place, it is finally time to advertise the meeting. Ideally you would reach that point several months before the event for international brainhacks, because some people like to book their trips well in advance. Possible lists for diffusion: + +- SPM mailing list. +- FSL mailing list. +- NITRC mailing list. +- contact all local institutions for diffusion. + + +Here is an example of email we used in the past: + + Registration is now open for Brainhack Vienna – Reliability and Reproducibility in Connectomics ([http://events.brainhack.org/vienna](http://events.brainhack.org/vienna)). + + This 3-day workshop that will be held Sept 18 – 20 in Vienna, Austria just before the 2016 Conference on Resting State Brain Connectivity. Brainhack events ([brainhack.org](http://brainhack.org/)) bring researchers from disparate backgrounds together to collaborate on problems in neuroscience. Similar to hackathons in the tech sector, much of the schedule is left open for attendees to work together on projects of their choosing. We also include unconference sessions that consist of talks that are chosen by the attendees based on their interests as they evolve throughout the meeting. Brainhacks are not “coding sprints” or exclusive to programmers, brain scientists from all backgrounds can and will make a significant contribution to the event. + + Brainhack Vienna will feature open discussions and projects related to measuring and improving reproducibility and reliability for mapping functional and structural connectivity, and for relating inter-individual variation in connectivity to phenotypic variation (e.g., age, sex, IQ, disease status, etc.). The massive Consortium for Reproducibility and Reliability dataset (1,629 Subjects, 3,357 Anatomical Scans, 5,093 Resting Functional Scans, 1,302 Diffusion Scans) is the official dataset for Brainhack Vienna, and raw and preprocessed versions of the data will be available locally during the event. Attendees are also encouraged to bring their own data and project ideas. + + Working papers describing outcomes from Brainhack Vienna will be eligible for publication in the Gigascience Brainhack Thematic Series. Shorter project reports from the event will be eligible for publication in the annual Brainhack Proceedings. + + Registration costs €150 and includes lunch and refreshments on each of the three days as well as attendance at a reception on Monday night (Sept. 19). + + Thanks to generous funding from our sponsors, $500 travel awards will be available for a limited number of students and post docs. The application deadline for awards is July 31. + + Email [brainhackorg@gmail.com](mailto:brainhackorg@gmail.com) for more information. + +# Projects, slack and hackpad + +People can start advertising projects on slack ahead of the event, by sending messages to @channel on the [#general](/ep/search/?q=%23general) channel of the brainhack slack. The [following page](https://brainhack-slack-invite.herokuapp.com/) allows any participant to register to the brainhack slack. It is also good to create a hackpad open collection, like this [one](https://hbm_brainhack2016.hackpad.com/), where people can post and collaborate on project descriptions. A link to that collection can be pinned to the [#general](/ep/search/?q=%23general) brainhack slack channel, so it can be easily found by participants. +# Onsite logistics + +The followings tasks need to be addressed onsite: + +- Have a **volunteer** at all times to answer question, help plug computer etc. Free registration can be used to attract volunteers. +- Ask to a number of participants to each **chair an unconference session**. This will relieve stress on the main organizer, and bring some diversity to the event. Chairing a session also includes to go around before the session to remind participants to sign up for talks. +- Have material to print **name tags** on site, as well as (possibly) some **coupons for meals**. +- Have instructions for **accessing the wifi** printed and easy to spot. +- Have a **registration desk** in the morning that distributes name tags, and make sure before printing name tags that people are properly registered. +- Deliver **certificates of attendance**. Some institutions require them for participants to get reimbursed. +- Print a **banner** for the event. Here is a link to an [old project](https://www.dropbox.com/s/30xg4vqv9m9f1yj/OHBM_hackathon_2016.ai?dl=0), developed by @Daniel Margulies and Sebastien Dery. +- For international events, having surplus **plug adapters** can come handy. If feasible, ask people from different countries to bring power bars, such that a single adapter can be used to power many computers. +- During hot days, having **air conditioning** in the hack rooms will be appreciated. + +# Food + +We find communal and flexible meals to be crucial to successful collaboration during brainhack. This can be achieved at relatively low cost (e.g. if there is a cafeteria onsite, or the possibility to run a BBQ). The crucial two points to keep in mind when planning meals are that: + +1. Flexibility is important. When collaborating on a project, it may be more productive to continue working for an extra hour than to take a break at precisely noon. Sandwiches and other availability of snacks throughout the day also help create a flexible working environment. +2. When it is time for a break, meals are a great opportunity to catch up with others and share ideas. Providing this space during a brainhack may seem like a luxury, but it is central to creating a productive and friendly atmosphere where all feel included. In all, the two hours per day spent together at meals during a brainhack are well worth the cost of food to participants. + +# Budget + +**Costs** for running a brainhack may include: + +- meeting space (ideally, provided for free by a local academic institution) +- food (see above) +- miscellaneous printing costs (name tags, schedule posters, poster-size paper for unconference planning) +- travel award (if funding is available). + + +**Funds** for the hackathon can come from various sources: + +- registration costs would ideally be kept to a minimum. In the past, registration (including three meals/day) has come to 100-200 dollars, maximum. +- Some local institutions can provide support. +- Some external organizations have sponsored brainhacks in the past, e.g. those supporting open science or cutting-edge educational initiatives. +- Amazon may be willing to provide cloud services in exchange for official sponsorship. + +# Travel awards + +If enough funds are available, travel awards are a great way to attract international participants. In our previous experiences, applicants were required to send: + +- a one-page CV +- a one-page project proposal + +The brainhack organization committee reviews each application, with extra attention put on elements directly relevant to brainhack, i.e. a project that is truly collaborative. +Here is an example of announcement email that can be adapted: + + The Neurobureau is excited to announce a stipend program for Brainhack XXXX. The stipend program was created following a generous grant from XXXX to assist young investigators in attending Brainhack 2013. Without their support, the stipend program would not exist. + + The application for stipend requires: + (2) A 1 page Brainhack project proposal (pdf format) + (3) A 1 page CV (pdf format - no strict specifications) + + To apply, please send the above details to XXXXX. The deadline to apply for one of the stipends is 11:59PM EST on XX XXX XXXX. All decisions will be made by XXXXX and must be accepted within three days of being awarded. + +# Publications + +Finally, brainhack participants have the opportunity to submit a short project report for publication as part of the brainhack proceedings, edited by Gigascience. Contact brainhackorg@gmail.com or check brainhack.org for details on the latest issue. +# Contributions + +The concept of brainhack has been defined and continuously refined since 2012 by the brainhack community, and was started by a collective operating under the name "Neurobureau" (neurobureau.org). A non-exhaustive list of contributors can be found in the author list of [Craddock et al. (2016)](https://dx.doi.org/10.1186/s13742-016-0121-x). diff --git a/images/decisionoutsourcing.jpeg b/images/decisionoutsourcing.jpeg deleted file mode 100644 index 32d417d..0000000 Binary files a/images/decisionoutsourcing.jpeg and /dev/null differ diff --git a/index.md b/index.md index 45a4f9a..7414dd9 100644 --- a/index.md +++ b/index.md @@ -1,34 +1,109 @@ --- -layout: page +layout: main-page title: Homepage --- -
+ + + +
{% assign num = 0 %} {% for post in site.posts %} - {% assign rownum = num | modulo:3 %} - {% if rownum == 0 %} - + {% if post.video-url == none %} + {% if post.big == 1 %} +
+ {% else %} +
{% endif %} + +
+ {% if post.project_url %} + + {% else %} + + {% endif %} + {{ post.title }} + + + {% if post.project_categories %} +
+
    +
  • + {{ post.project_categories }} +
  • +
+
+ {% endif %} + +
+ + + +
+
+
+

+ {% if post.big == 1 %} + {{ post.description | truncate:150 }} + {% else %} + {{ post.description | truncate:60 }} + {% endif %} +

+
+ »» +
+
+
+
+ +
+ {% assign num = num | plus: 1 %} + {% endif %} {% endfor %} - {% if rownum != 2 %} -
- {% endif %}
+ + diff --git a/javascripts/League_Gothic_400.font.js b/javascripts/League_Gothic_400.font.js new file mode 100644 index 0000000..55cd60e --- /dev/null +++ b/javascripts/League_Gothic_400.font.js @@ -0,0 +1,10 @@ +/*! + * The following copyright notice may not be removed under any circumstances. + * + * Copyright: + * Generated in 2009 by FontLab Studio. Copyright info pending. + * + * Full name: + * LeagueGothic + */ +Cufon.registerFont({"w":115,"face":{"font-family":"League Gothic","font-weight":400,"font-stretch":"normal","units-per-em":"360","panose-1":"0 0 0 0 0 0 0 0 0 0","ascent":"265","descent":"-95","x-height":"3","bbox":"-12 -335 280 90","underline-thickness":"18","underline-position":"-18","unicode-range":"U+0020-U+FB02"},"glyphs":{" ":{"w":55},"D":{"d":"122,-132v0,119,-14,136,-108,132r0,-265v93,-4,108,12,108,133xm53,-226r0,187v27,0,29,-6,29,-93v0,-86,-2,-94,-29,-94","w":133},"F":{"d":"107,-265r0,40r-54,0r0,70r36,0r0,40r-36,0r0,115r-39,0r0,-265r93,0","w":108,"k":{"\u00e7":4,"\u00e5":4,"\u0153":4,"\u00f5":4,"\u00f6":4,"\u00f4":4,"\u00f2":4,"\u00eb":4,"\u00ea":4,"\u00e3":4,"\u00e4":4,"\u00e2":4,"\u00e8":4,"\u00e0":4,"\u00f3":4,"\u00e9":4,"\u00e1":4,"a":4,"o":4,"e":4,"c":4}},"H":{"d":"84,0r0,-115r-31,0r0,115r-39,0r0,-265r39,0r0,110r31,0r0,-110r38,0r0,265r-38,0","w":136},"J":{"d":"2,3r0,-39v0,0,21,5,21,-19r0,-210r39,0r0,216v0,28,-14,55,-60,52","w":74},"L":{"d":"14,0r0,-265r39,0r0,229r52,0r0,36r-91,0","w":106,"k":{"\u00c5":-4,"\u00dd":7,"\u00c2":-4,"\u0178":7,"\u00c3":-4,"\u00c1":-4,"\u00c0":-4,"\u00c4":-4,"A":-4,"Y":7}},"N":{"d":"93,0v-16,-49,-24,-104,-43,-150r0,150r-36,0r0,-265r35,0v16,49,24,105,43,151r0,-151r36,0r0,265r-35,0","w":142},"P":{"d":"14,0r0,-265v65,-3,108,1,108,80v0,61,-35,79,-69,79r0,106r-39,0xm53,-225r0,80v24,0,29,-9,29,-39v0,-30,-5,-41,-29,-41","w":126,"k":{"\u00e7":4,"\u0153":4,"\u00f5":4,"\u00f6":4,"\u00f4":4,"\u00f2":4,"\u00eb":4,"\u00ea":4,"\u00e8":4,"\u00f3":4,"\u00e9":4,"o":4,"e":4,"c":4}},"R":{"d":"123,0r-39,0r-20,-112r-11,0r0,112r-39,0r0,-265v67,-6,108,10,106,77v0,26,-7,50,-22,60xm82,-187v0,-38,-18,-39,-29,-39r0,78v11,0,29,-1,29,-39","w":129},"T":{"d":"37,-225r-36,0r0,-40r112,0r0,40r-37,0r0,225r-39,0r0,-225","w":113,"k":{"\u00e7":10,"\u00e5":12,"\u00c5":8,"\u00fd":2,"\u00c2":8,"\u00ff":2,"\u00c3":8,"\u00c1":8,"\u00c0":8,"\u0153":10,"\u00f5":10,"\u00f6":10,"\u00f4":10,"\u00f2":10,"\u00f1":9,"\u00eb":10,"\u00ea":10,"\u00e3":12,"\u00e4":12,"\u00e2":12,"\u00e8":10,"\u00e0":12,"\u00f3":10,"\u00e9":10,"\u00e1":12,"\u00c4":8,"y":2,"w":2,"v":2,"r":9,"p":9,"a":12,"o":10,"m":9,"e":10,"c":10,"A":8,"n":9,"x":7,"T":-3}},"V":{"d":"64,-108r21,-157r38,0r-41,265r-38,0r-41,-265r38,0v9,51,10,110,23,157","w":126,"k":{"A":8,"\u00c4":8,"\u00c0":8,"\u00c1":8,"\u00c3":8,"\u00c2":8,"\u00c5":8,"c":5,"e":5,"o":5,"\u00e9":5,"\u00f3":5,"\u00e8":5,"\u00ea":5,"\u00eb":5,"\u00f2":5,"\u00f4":5,"\u00f6":5,"\u00f5":5,"\u0153":5,"\u00e7":5,"a":6,"\u00e1":6,"\u00e0":6,"\u00e2":6,"\u00e4":6,"\u00e3":6,"\u00e5":6,"n":4,"m":4,"p":4,"r":4,"\u00f1":4}},"X":{"d":"64,-82r-23,82r-38,0r43,-139r-42,-126r38,0v9,23,12,51,24,71r22,-71r38,0r-42,126r43,139r-38,0v-9,-26,-12,-59,-25,-82","w":129},"Z":{"d":"4,0r0,-42r60,-184r-52,0r0,-39r95,0r0,39r-62,187r62,0r0,39r-103,0","w":110},"b":{"d":"14,0r0,-265r37,0r0,81v0,0,16,-16,29,-16v20,0,28,23,28,39r0,125v0,16,-8,39,-28,39v-19,0,-34,-32,-29,-3r-37,0xm51,-43v0,15,20,17,20,0r0,-111v0,-7,-4,-12,-9,-12v-5,0,-11,6,-11,12r0,111","w":120,"k":{"t":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"s":2,"\u0161":2}},"d":{"d":"106,-265r0,265r-36,0r0,-13v0,0,-16,16,-29,16v-20,0,-28,-23,-28,-39r0,-125v0,-16,8,-39,28,-39v13,0,29,16,29,16r0,-81r36,0xm70,-43r0,-111v0,-14,-21,-17,-21,0r0,111v0,16,21,15,21,0","w":120},"f":{"d":"81,-232v-19,-10,-26,18,-23,35r19,0r0,33r-19,0r0,164r-36,0r0,-164r-18,0r0,-33r18,0v0,-26,-2,-65,42,-69v30,-3,12,17,17,34","w":83,"k":{"\u00e5":1,"\u00e3":1,"\u00e4":1,"\u00e2":1,"\u00e0":1,"\u00e1":1,"a":1,"f":2}},"h":{"d":"63,-165v-7,0,-12,10,-12,10r0,155r-37,0r0,-265r37,0r0,85v3,-2,16,-20,29,-20v19,0,28,23,28,39r0,161r-37,0r0,-156v0,-8,-4,-9,-8,-9","w":121,"k":{"t":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"s":2,"\u0161":2}},"j":{"d":"13,-228r0,-37r37,0r0,37r-37,0xm13,-197r37,0r0,202v0,21,0,63,-42,63v-31,0,-11,-19,-16,-36v16,7,24,-13,21,-27r0,-202","w":64},"l":{"d":"51,0r-37,0r0,-265r37,0r0,265","w":65,"k":{"t":1,"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"s":2,"\u0161":2}},"n":{"d":"63,-165v-7,0,-12,10,-12,10r0,155r-37,0r0,-197r37,0r0,17v3,-2,16,-20,29,-20v19,0,28,23,28,39r0,161r-37,0r0,-156v0,-8,-4,-9,-8,-9","w":121,"k":{"t":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"s":2,"\u0161":2}},"C":{"d":"79,-91r37,0r0,37v0,0,0,57,-52,57v-52,0,-52,-57,-52,-57r0,-156v0,0,0,-57,52,-57v52,0,52,57,52,57r0,36r-37,0v-4,-25,12,-46,-15,-56v-14,0,-13,20,-13,20r0,156v0,0,-1,19,13,19v28,-9,10,-31,15,-56","w":124},"E":{"d":"14,0r0,-265r89,0r0,40r-50,0r0,70r36,0r0,42r-36,0r0,73r50,0r0,40r-89,0","w":110,"k":{"A":-1,"\u00c4":-1,"\u00c0":-1,"\u00c1":-1,"\u00c3":-1,"\u00c2":-1,"\u00c5":-1}},"G":{"d":"116,-170r-39,0v-4,-26,11,-49,-13,-60v-14,0,-13,20,-13,20r0,159v0,0,-1,19,13,19v26,-10,8,-40,13,-67r-16,0r0,-33r55,0r0,132r-23,0r-5,-13v-7,9,-18,16,-30,16v-49,0,-46,-57,-46,-57r0,-156v0,0,0,-57,52,-57v52,0,52,57,52,57r0,40","w":129},"I":{"d":"14,0r0,-265r39,0r0,265r-39,0","w":67,"k":{"t":1,"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"s":2,"\u0161":2}},"K":{"d":"14,-265r39,0v2,30,-4,67,2,93r34,-93r38,0r-36,88r40,177r-37,0v-11,-39,-15,-85,-30,-121v-17,27,-10,78,-11,121r-39,0r0,-265","w":135},"M":{"d":"95,0r-16,0r-26,-177v-6,-1,-2,7,-3,11r0,166r-36,0r0,-265r48,0r25,135r25,-135r48,0r0,265r-36,0r0,-177v-14,49,-18,120,-29,177","w":174},"O":{"d":"116,-54v0,0,0,57,-52,57v-52,0,-52,-57,-52,-57r0,-156v0,0,0,-57,52,-57v52,0,52,57,52,57r0,156xm77,-210v0,0,1,-20,-13,-20v-14,0,-13,20,-13,20r0,156v0,0,-1,19,13,19v14,0,13,-19,13,-19r0,-156","w":127,"k":{"T":4}},"Q":{"d":"116,-210v-4,66,10,133,-8,188v3,4,7,8,15,9r0,33v-22,0,-34,-9,-40,-20v-5,2,-11,3,-19,3v-52,0,-52,-57,-52,-57r0,-156v0,0,0,-57,52,-57v52,0,52,57,52,57xm77,-210v0,0,1,-20,-13,-20v-14,0,-13,20,-13,20r0,156v0,0,-1,19,13,19v14,0,13,-19,13,-19r0,-156","w":128},"S":{"d":"79,-62v0,-43,-67,-95,-67,-144v0,-29,14,-60,51,-61v47,-1,54,40,54,70r-38,3v0,-18,-3,-38,-16,-38v-10,0,-13,11,-13,26v0,43,67,94,67,142v0,35,-12,67,-54,67v-50,0,-57,-38,-57,-77r39,-4v0,22,2,45,18,45v12,0,16,-12,16,-29","w":123},"U":{"d":"79,-265r39,0r0,211v0,0,0,57,-52,57v-52,0,-52,-57,-52,-57r0,-211r39,0r0,211v0,0,-1,19,13,19v14,0,13,-19,13,-19r0,-211","w":131},"W":{"d":"90,-141r-20,141r-30,0r-36,-265r36,0v8,48,8,103,19,147r18,-147r28,0r18,147v5,1,2,-6,3,-9r16,-138r36,0r-36,265r-30,0v-9,-46,-10,-99,-22,-141","w":182,"k":{"A":8,"\u00c4":8,"\u00c0":8,"\u00c1":8,"\u00c3":8,"\u00c2":8,"\u00c5":8,"c":5,"e":5,"o":5,"\u00e9":5,"\u00f3":5,"\u00e8":5,"\u00ea":5,"\u00eb":5,"\u00f2":5,"\u00f4":5,"\u00f6":5,"\u00f5":5,"\u0153":5,"\u00e7":5,"a":6,"\u00e1":6,"\u00e0":6,"\u00e2":6,"\u00e4":6,"\u00e3":6,"\u00e5":6,"n":4,"m":4,"p":4,"r":4,"\u00f1":4}},"Y":{"d":"41,-265r21,88r20,-88r39,0r-40,152r0,113r-39,0r0,-113r-39,-152r38,0","w":123,"k":{"A":9,"\u00c4":9,"\u00c0":9,"\u00c1":9,"\u00c3":9,"\u00c2":9,"\u00c5":9,"d":9,"q":9,"c":14,"e":14,"o":14,"\u00e9":14,"\u00f3":14,"\u00e8":14,"\u00ea":14,"\u00eb":14,"\u00f2":14,"\u00f4":14,"\u00f6":14,"\u00f5":14,"\u0153":14,"\u00e7":14,"a":15,"\u00e1":15,"\u00e0":15,"\u00e2":15,"\u00e4":15,"\u00e3":15,"\u00e5":15}},"A":{"d":"41,0r-37,0r40,-265r47,0r40,265r-38,0r-7,-54r-37,0xm81,-95v-6,-29,-5,-65,-15,-90r-12,90r27,0","w":134,"k":{"T":8}},"c":{"d":"48,-152r0,107v0,7,0,15,10,15v16,2,8,-29,10,-43r37,0v3,47,-9,76,-47,76v-26,0,-46,-14,-46,-58r0,-86v0,-44,20,-59,46,-59v36,0,50,25,47,72r-37,0v-1,-14,5,-39,-10,-39v-10,0,-10,8,-10,15","w":113,"k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"e":{"d":"72,-71r33,0r0,23v0,0,0,51,-47,51v-47,0,-46,-52,-46,-52r0,-99v0,0,0,-52,47,-52v47,0,46,51,46,51r0,57r-60,0v4,26,-11,52,14,63v21,-8,10,-23,13,-42xm59,-168v-22,9,-11,27,-14,48r27,0v-3,-22,9,-39,-13,-48","k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"g":{"d":"102,-163v3,23,0,43,1,68v0,0,0,49,-46,49v-8,-3,-12,3,-12,8v0,8,14,10,27,12v23,3,51,12,51,46v0,39,-33,51,-63,51v-58,0,-78,-52,-29,-68v-29,-6,-26,-46,0,-56v-35,-35,-16,-50,-21,-97v0,0,2,-50,47,-50v18,0,29,8,36,18v5,-5,18,-18,30,-18r0,33v-10,0,-17,2,-21,4xm68,-148v0,0,1,-18,-11,-18v-12,0,-11,18,-11,18r0,54v0,0,-1,17,11,17v12,0,11,-17,11,-17r0,-54xm61,40v25,0,45,-22,8,-27v-14,-6,-32,-2,-32,13v0,8,7,14,24,14","w":123,"k":{"\u0161":1,"\u00e7":2,"\u201a":-4,"\u0153":2,"\u00f5":2,"\u00f6":2,"\u00f4":2,"\u00f2":2,"\u00eb":2,"\u00ea":2,"\u00e8":2,"\u00f3":2,"\u00e9":2,",":-4,"s":1,"o":2,"e":2,"c":2}},"i":{"d":"51,0r-37,0r0,-197r37,0r0,197xm14,-228r0,-37r37,0r0,37r-37,0","w":65,"k":{"t":1,"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"s":2,"\u0161":2}},"k":{"d":"14,-265r37,0v2,41,-4,90,2,126r19,-58r33,0r-26,64r33,133r-35,0r-20,-82v-12,17,-4,55,-6,82r-37,0r0,-265","w":112,"k":{"\u00e7":2,"\u0153":2,"\u00f5":2,"\u00f6":2,"\u00f4":2,"\u00f2":2,"\u00eb":2,"\u00ea":2,"\u00e8":2,"\u00f3":2,"\u00e9":2,"o":2,"e":2,"c":2}},"m":{"d":"132,-156v-1,-19,-24,-3,-24,1r0,155r-34,0r0,-156v-1,-18,-23,-3,-23,1r0,155r-37,0r0,-197r37,0r0,17v3,-2,17,-20,30,-20v13,0,20,10,24,22v6,-4,21,-22,34,-22v19,0,27,23,27,39r0,161r-34,0r0,-156","w":179,"k":{"t":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"s":2,"\u0161":2}},"o":{"d":"104,-149r0,101v0,0,1,51,-46,51v-47,0,-47,-52,-47,-52r0,-99v0,0,0,-52,47,-52v47,0,46,51,46,51xm70,-148v0,0,2,-20,-12,-20v-13,0,-13,20,-13,20r0,99v0,0,0,20,13,20v14,0,12,-20,12,-20r0,-99","k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"a":{"d":"44,-51v0,5,1,18,10,18v26,-1,12,-39,15,-62v-18,8,-25,25,-25,44xm9,-46v1,-85,60,-50,60,-104v0,-7,0,-18,-10,-18v-12,0,-10,18,-10,29r-36,0v-3,-35,18,-61,49,-61v74,0,33,126,46,200r-35,0v-5,-4,-1,-17,-6,-16v-16,25,-58,34,-58,-30","w":119,"k":{"t":3,"f":2,"v":1,"w":1,"y":1,"\u00ff":1,"\u00fd":1,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1}},"p":{"d":"14,68r0,-265r37,0r0,13v0,0,16,-16,29,-16v20,0,28,23,28,39r0,125v0,16,-8,39,-28,39v-13,0,-29,-16,-29,-16r0,81r-37,0xm51,-154r0,111v0,13,20,17,20,0r0,-111v0,-7,-4,-12,-9,-12v-5,0,-11,5,-11,12","w":120,"k":{"t":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"s":2,"\u0161":2}},"q":{"d":"106,-197r0,265r-36,0r0,-81v0,0,-16,16,-29,16v-20,0,-28,-23,-28,-39r0,-125v0,-16,8,-39,28,-39v19,0,34,32,29,3r36,0xm70,-154v0,-15,-21,-16,-21,0r0,111v0,16,21,14,21,0r0,-111","w":120},"r":{"d":"87,-200r0,41v0,0,-16,-6,-28,4v-6,6,-8,12,-8,18r0,137r-37,0r0,-197r37,0r0,22v1,-5,9,-25,36,-25","w":88,"k":{"\u0161":2,"\u00e7":1,"\u00e5":3,"\u0153":1,"\u00f5":1,"\u00f6":1,"\u00f4":1,"\u00f2":1,"\u00eb":1,"\u00ea":1,"\u00e3":3,"\u00e4":3,"\u00e2":3,"\u00e8":1,"\u00e0":3,"\u00f3":1,"\u00e9":1,"\u00e1":3,"s":2,"a":3,"o":1,"e":1,"c":1}},"s":{"d":"70,-51v0,-35,-57,-51,-57,-96v0,-23,9,-52,44,-53v42,-1,46,31,46,53r-34,0v0,-9,1,-23,-11,-23v-10,0,-12,13,-12,23v0,36,58,52,58,96v0,24,-12,54,-47,54v-44,0,-51,-39,-51,-60r34,0v0,10,2,30,17,30v10,0,13,-12,13,-24","w":110,"k":{"t":3}},"t":{"d":"22,-246r36,0r0,49r25,0r0,33r-25,0r0,98v0,12,0,32,12,32v6,0,13,-1,13,-1v-4,20,13,38,-19,38v-42,0,-42,-43,-42,-66r0,-101r-18,0r0,-33r18,0r0,-49","w":88,"k":{"\u00e5":1,"\u00e3":1,"\u00e4":1,"\u00e2":1,"\u00e0":1,"\u00e1":1,"a":1,"z":-2,"t":2}},"u":{"d":"59,-32v7,0,12,-10,12,-10r0,-155r36,0r0,197r-36,0r0,-17v-3,2,-17,20,-30,20v-19,0,-27,-23,-27,-39r0,-161r36,0r0,156v0,8,5,9,9,9","w":121,"k":{"t":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"s":1,"\u0161":1}},"v":{"d":"71,0r-36,0r-32,-197r35,0r13,127v6,0,3,-9,5,-13r12,-114r35,0","w":105,"k":{"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"a":3,"\u00e1":3,"\u00e0":3,"\u00e2":3,"\u00e4":3,"\u00e3":3,"\u00e5":3,"'":-4,"\u201d":-4,"\u201c":-4,"\u2018":-4,"\u2019":-4}},"w":{"d":"126,0r-30,0r-17,-105r-16,105r-30,0r-29,-197r33,0v6,37,5,81,15,114r17,-114r21,0v8,37,8,81,19,114r13,-114r34,0","w":159,"k":{"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"a":3,"\u00e1":3,"\u00e0":3,"\u00e2":3,"\u00e4":3,"\u00e3":3,"\u00e5":3,"'":-4,"\u201d":-4,"\u201c":-4,"\u2018":-4,"\u2019":-4}},"x":{"d":"3,0r34,-102r-31,-95r34,0v6,17,8,37,15,52r14,-52r34,0r-31,95r34,102r-35,0v-6,-18,-9,-39,-17,-55r-16,55r-35,0","w":108},"y":{"d":"6,70r0,-33v18,5,35,-15,32,-31r-34,-203r36,0v7,42,6,92,17,131v2,-46,11,-87,15,-131r35,0r-35,212v-5,32,-26,63,-66,55","w":111,"k":{"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"a":3,"\u00e1":3,"\u00e0":3,"\u00e2":3,"\u00e4":3,"\u00e3":3,"\u00e5":3,"'":-4,"\u201d":-4,"\u201c":-4,"\u2018":-4,"\u2019":-4}},"z":{"d":"2,0r0,-30r50,-134r-42,0r0,-33r81,0r0,30r-50,134r50,0r0,33r-89,0","w":93},"1":{"d":"30,-207r-26,0r0,-25v49,-12,25,-41,65,-33r0,265r-39,0r0,-207","w":83},"2":{"d":"50,-181r-39,0v-1,-46,3,-85,52,-86v40,0,51,29,51,65v0,54,-40,129,-60,163r61,0r0,39r-105,0r0,-39v0,0,66,-95,66,-160v0,-14,-1,-32,-13,-32v-16,0,-13,31,-13,50","w":128},"4":{"d":"64,0r0,-58r-60,0r0,-34r57,-173r39,0r0,173r18,0r0,34r-18,0r0,58r-36,0xm62,-183r-25,91r27,0v-2,-29,4,-66,-2,-91","w":120,"k":{"9":-1,"3":-2,"8":-3}},"6":{"d":"70,-164v61,0,43,59,43,110v0,13,-3,57,-51,57v-48,0,-50,-44,-50,-57r0,-151v0,-19,1,-62,50,-62v57,0,51,43,51,79r-39,0v0,-36,-1,-46,-12,-46v-20,1,-9,53,-12,76v6,-4,13,-6,20,-6xm50,-43v0,3,3,12,12,12v8,0,12,-9,12,-12r0,-79v0,-3,-4,-12,-12,-12v-8,0,-12,7,-12,11r0,80","w":123},"8":{"d":"93,-140v20,20,21,47,20,83v0,7,-1,60,-52,60v-51,0,-52,-53,-52,-60v-1,-36,1,-63,21,-83v-17,-17,-19,-40,-18,-71v0,-7,0,-56,49,-56v49,0,50,49,50,56v1,31,-1,54,-18,71xm75,-72v0,-32,-1,-47,-14,-47v-13,0,-14,15,-14,47v0,28,3,39,14,39v13,0,14,-15,14,-39xm73,-197v0,-24,-2,-36,-12,-36v-9,0,-11,9,-11,36v0,28,1,40,11,40v10,0,12,-12,12,-40","w":122,"k":{"2":1}},"0":{"d":"116,-54v0,0,0,57,-52,57v-52,0,-52,-57,-52,-57r0,-156v0,0,0,-57,52,-57v52,0,52,57,52,57r0,156xm77,-210v0,0,1,-20,-13,-20v-14,0,-13,20,-13,20r0,156v0,0,-1,19,13,19v14,0,13,-19,13,-19r0,-156","w":127},"3":{"d":"73,-65v1,-34,4,-55,-33,-55r0,-32v32,-2,30,-14,30,-47v0,-15,0,-34,-12,-34v-10,0,-12,9,-12,45r-38,0v0,-30,1,-79,50,-79v49,0,50,49,50,56v0,40,-8,57,-19,71v19,15,22,41,22,72v0,7,-1,71,-50,71v-49,0,-52,-49,-52,-79r39,0v0,36,3,45,13,45v12,0,12,-19,12,-34","w":120,"k":{"7":1}},"5":{"d":"52,-77v-1,22,1,50,12,46v19,-1,10,-68,12,-94v0,-11,-5,-20,-13,-20v-9,0,-15,14,-15,20r-33,0r0,-140r94,0r0,39r-60,0r0,55v0,0,12,-9,22,-9v40,0,43,46,43,55v-4,59,20,128,-50,128v-48,0,-51,-45,-51,-80r39,0","w":123},"7":{"d":"20,0r40,-226r-59,0r0,-39r98,0v-1,100,-28,175,-39,265r-40,0","w":103,"k":{"4":4,"1":-2}},"9":{"d":"53,-103v-60,0,-39,-57,-43,-107v0,-13,3,-57,51,-57v48,0,51,44,51,57r0,150v0,19,-2,63,-51,63v-56,0,-51,-45,-51,-79r39,0v0,36,1,45,12,45v20,-1,9,-55,12,-78v-6,4,-13,6,-20,6xm73,-144r0,-78v0,-3,-3,-12,-12,-12v-8,0,-12,9,-12,12r0,77v0,3,4,12,12,12v8,0,12,-7,12,-11","w":123},".":{"d":"9,0r0,-40r38,0r0,40r-38,0","w":56},";":{"d":"13,-157r0,-40r38,0r0,40r-38,0xm51,-40v4,40,-9,62,-20,87r-18,0r13,-47r-13,0r0,-40r38,0","w":63},",":{"d":"46,-40v4,40,-9,62,-20,87r-18,0r13,-47r-13,0r0,-40r38,0","w":54},":":{"d":"13,0r0,-40r38,0r0,40r-38,0xm13,-157r0,-40r38,0r0,40r-38,0","w":63},"!":{"d":"15,0r0,-40r38,0r0,40r-38,0xm23,-71r-10,-194r42,0r-10,194r-22,0","w":68},"$":{"d":"79,-65v0,-50,-66,-82,-66,-138v0,-26,8,-53,37,-60r0,-23r22,0r0,22v28,3,38,25,41,49r-33,5v-1,-12,-6,-22,-17,-22v-11,0,-14,14,-14,28v0,50,65,83,66,139v0,31,-10,61,-43,65r0,38r-22,0r0,-39v-31,-5,-43,-32,-44,-62r34,-2v1,17,7,33,23,33v12,0,16,-16,16,-33","w":121},"&":{"d":"62,3v-69,-3,-60,-99,-23,-135v-12,-26,-19,-50,-19,-78v0,0,-2,-57,47,-57v49,0,47,57,47,57v0,23,-15,49,-36,76v12,26,20,40,26,50v5,-13,7,-31,8,-37r31,6v-1,10,-4,40,-16,63v8,9,14,12,16,13r0,42v-4,0,-21,-8,-37,-25v-13,15,-28,25,-44,25xm86,-46v-10,-15,-20,-31,-31,-52v0,0,-9,15,-9,41v0,30,29,33,40,11xm81,-211v0,0,1,-26,-14,-26v-15,0,-13,27,-13,27v0,15,3,27,9,43v9,-13,18,-30,18,-44","w":150},"?":{"d":"35,-40r0,40r38,0r0,-40r-38,0xm106,-216v-2,39,-36,54,-35,100r0,45r-34,0v-3,-51,6,-103,24,-125v6,-7,9,-15,10,-20v1,-5,-2,-16,-12,-16v-13,0,-21,18,-23,25r-32,-14v4,-11,22,-46,55,-45v41,1,47,36,47,50","w":113},"-":{"d":"13,-80r0,-34r52,0r0,34r-52,0","w":78,"k":{"7":7}},"'":{"d":"46,-265v4,40,-9,62,-20,87r-18,0r13,-47r-13,0r0,-40r38,0","w":54},"\/":{"d":"1,26r96,-291r28,0r-94,291r-30,0","w":126},"_":{"d":"13,57r0,-30r187,0r0,30r-187,0","w":212},"=":{"d":"13,-84r0,-30r160,0r0,30r-160,0xm13,-152r0,-30r160,0r0,30r-160,0","w":186},"+":{"d":"13,-114r0,-30r65,0r0,-61r30,0r0,61r66,0r0,30r-66,0r0,61r-30,0r0,-61r-65,0","w":186},">":{"d":"173,-142r0,28r-160,83r0,-35r123,-62r-123,-63r0,-35","w":186},"\u201d":{"d":"47,-265v4,40,-9,62,-20,87r-18,0r13,-47r-13,0r0,-40r38,0xm100,-265v4,39,-8,62,-19,87r-18,0r12,-47r-12,0r0,-40r37,0","w":109},"\u201c":{"d":"63,-178v-4,-39,8,-62,19,-87r18,0r-12,47r12,0r0,40r-37,0xm9,-178v-4,-40,9,-62,20,-87r18,0r-12,47r12,0r0,40r-38,0","w":109},"\u2013":{"d":"13,-114r0,-34r116,0r0,34r-116,0","w":141},"\u2014":{"d":"13,-114r0,-34r145,0r0,34r-145,0","w":171},"\u2212":{"d":"13,-114r0,-30r110,0r0,30r-110,0","w":136},"|":{"d":"48,90r-34,0r0,-387r34,0r0,387","w":62,"k":{"t":1,"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"s":2,"\u0161":2}},"~":{"d":"158,-229v-33,0,-51,-30,-79,-30v-25,0,-35,31,-35,31r-24,-10v0,0,17,-54,59,-54v34,0,50,31,79,31v23,0,34,-32,34,-32r23,10v0,0,-18,54,-57,54","w":225},"[":{"d":"85,-265r0,35r-36,0r0,233r36,0r0,34r-71,0r0,-302r71,0","w":94},"]":{"d":"10,-230r0,-35r70,0r0,302r-70,0r0,-34r36,0r0,-233r-36,0","w":94},"\\":{"d":"30,-297r108,329r-30,0r-107,-329r29,0","w":139},"{":{"d":"34,-203v0,-54,21,-65,77,-64r0,30v-84,-12,-9,111,-65,143v32,15,22,66,22,109v0,28,12,34,43,34r0,31v-56,1,-77,-11,-77,-65v0,-39,18,-85,-23,-95r0,-28v41,-9,23,-56,23,-95","w":120},"}":{"d":"87,-203v0,39,-18,86,23,95r0,28v-41,10,-23,56,-23,95v0,54,-21,66,-77,65r0,-31v84,12,9,-111,65,-143v-32,-15,-22,-66,-22,-109v0,-28,-12,-34,-43,-34r0,-30v56,-1,77,10,77,64","w":120},"@":{"d":"143,-210r0,140r-29,0v-4,-19,-2,2,-23,2v-45,0,-16,-76,-25,-116v-7,-29,39,-35,45,-18v1,-18,-3,-35,-34,-35v-27,0,-33,19,-33,27r0,157v0,9,6,27,33,27v15,0,24,-4,30,-11r27,15v-10,13,-27,25,-57,25v-53,0,-65,-39,-65,-56r0,-157v0,-17,12,-57,65,-57v53,0,66,40,66,57xm111,-101r0,-80v0,-6,-4,-9,-9,-9v-5,0,-8,3,-8,9r0,80v0,6,3,10,8,10v5,0,9,-4,9,-10","w":153},"*":{"d":"49,-234r-3,-31r27,0r-3,31r29,-12r7,26r-30,6r20,24r-23,14r-14,-26r-13,26r-23,-14r20,-24r-30,-6r8,-26","w":119},"\u2022":{"d":"14,-144v0,-24,20,-43,45,-43v24,0,43,19,43,43v0,25,-19,45,-43,45v-25,0,-45,-20,-45,-45","w":116},"(":{"d":"63,-279r28,14v0,0,-45,63,-45,152v0,89,45,150,45,150r-28,15v0,0,-51,-75,-51,-165v0,-90,51,-166,51,-166","w":98},"`":{"d":"51,-262r38,0r19,33r-28,0","w":180},"%":{"d":"52,0r-24,0r97,-265r23,0xm44,-237v0,0,0,-10,-6,-10v-7,0,-7,10,-7,10r0,77v0,0,0,10,7,10v6,0,6,-10,6,-10r0,-77xm145,-104v0,0,0,-10,-6,-10v-7,0,-7,10,-7,10r0,76v0,0,0,10,7,10v6,0,6,-10,6,-10r0,-76xm66,-160v0,0,0,31,-28,31v-28,0,-28,-31,-28,-31r0,-77v0,0,0,-30,28,-30v28,0,28,30,28,30r0,77xm167,-28v0,0,0,31,-28,31v-28,0,-28,-31,-28,-31r0,-76v0,0,0,-31,28,-31v28,0,28,31,28,31r0,76","w":176},"#":{"d":"9,-77r4,-34r35,0r7,-46r-35,0r5,-34r34,0r10,-74r35,0r-10,74r46,0r10,-74r34,0r-10,74r34,0r-5,34r-33,0r-7,46r34,0r-5,34r-34,0r-10,77r-35,0r11,-77r-46,0r-10,77r-35,0r11,-77r-35,0xm89,-157r-6,46r46,0r6,-46r-46,0","w":216},"\"":{"d":"42,-168r-27,0r-5,-97r38,0","w":57},")":{"d":"7,-265r29,-14v0,0,51,76,51,166v0,90,-51,165,-51,165r-29,-15v0,0,46,-61,46,-150v0,-89,-46,-152,-46,-152","w":98},"<":{"d":"13,-114r0,-28r160,-84r0,35r-123,63r123,62r0,35","w":186},"^":{"d":"76,-265r41,0r67,123r-35,0r-52,-96r-53,96r-35,0","w":193},"\u2122":{"d":"31,-246r-18,0r0,-19r56,0r0,19r-18,0r0,102r-20,0r0,-102xm118,-144r-9,0r-14,-79r0,79r-18,0r0,-121r25,0v5,18,6,40,12,57r12,-57r24,0r0,121r-18,0r0,-79","w":164},"\u00ae":{"d":"110,-210v43,-3,78,3,75,46v0,15,-1,27,-15,39r18,70r-26,0r-17,-64r-10,0r0,64r-25,0r0,-155xm161,-164v1,-14,-6,-26,-26,-23r0,46v19,3,28,-10,26,-23xm9,-132v0,-75,61,-135,135,-135v75,0,136,60,136,135v0,74,-61,135,-136,135v-74,0,-135,-61,-135,-135xm30,-132v0,62,52,114,114,114v63,0,115,-52,115,-114v0,-63,-52,-115,-115,-115v-62,0,-114,52,-114,115","w":289},"\u00a9":{"d":"9,-132v0,-75,61,-135,135,-135v75,0,136,60,136,135v0,74,-61,135,-136,135v-74,0,-135,-61,-135,-135xm153,-108r24,0r0,22v0,0,0,35,-33,35v-34,0,-34,-35,-34,-35r0,-93v0,0,0,-34,34,-34v43,11,31,29,33,56r-24,0v-3,-15,8,-28,-9,-33v-9,0,-8,11,-8,11r0,93v0,0,-1,11,8,11v17,-5,6,-18,9,-33xm30,-132v0,62,52,114,114,114v63,0,115,-52,115,-114v0,-63,-52,-115,-115,-115v-62,0,-114,52,-114,115","w":289},"\u00a2":{"d":"48,-275r22,0r0,42v26,2,35,31,33,71r-33,0v0,-16,3,-39,-13,-39v-10,0,-12,9,-12,16r0,106v0,7,2,16,12,16v18,0,12,-27,13,-44r33,0v2,40,-5,75,-33,75r0,54r-22,0r0,-53v-47,0,-36,-91,-36,-144v0,-39,14,-55,36,-58r0,-42","w":111},"\u2018":{"d":"9,-178v-4,-39,8,-62,19,-87r18,0r-12,47r12,0r0,40r-37,0","w":54},"\u2019":{"d":"46,-265v4,40,-9,62,-20,87r-18,0r13,-47r-13,0r0,-40r38,0","w":54},"\u00bf":{"d":"78,-197r0,40r-37,0r0,-40r37,0xm7,19v2,-39,36,-54,36,-100r0,-45r33,0v3,51,-6,103,-24,125v-6,7,-8,15,-9,20v-1,5,2,16,12,16v13,0,21,-18,23,-25r31,14v-4,11,-22,46,-55,45v-41,-1,-47,-36,-47,-50","w":113},"\u00a1":{"d":"15,-157r0,-40r38,0r0,40r-38,0xm13,68r10,-194r22,0r10,194r-42,0","w":68},"\u00a3":{"d":"127,-197r-37,0v0,-17,-5,-34,-21,-34v-12,0,-15,15,-15,29v0,21,8,42,13,64r37,0r0,24r-31,0v8,29,7,42,-5,69v21,13,35,19,37,-23r34,4v-3,44,-22,67,-45,67v-17,0,-34,-18,-48,-18v-13,0,-20,18,-20,18r-25,-14v0,0,12,-34,37,-38v7,-23,8,-42,1,-65r-33,0r0,-24r26,0v-20,-53,-30,-123,37,-129v47,-4,58,35,58,70","w":143},"\u2026":{"d":"9,0r0,-40r38,0r0,40r-38,0xm66,0r0,-40r38,0r0,40r-38,0xm122,0r0,-40r38,0r0,40r-38,0","w":169},"\ufb01":{"d":"121,0r-36,0r0,-164r-27,0r0,164r-36,0r0,-164r-18,0r0,-33r18,0v0,-27,-2,-68,45,-70v13,0,26,2,26,2r0,33v0,0,-8,-2,-20,-2v-18,0,-15,24,-15,37r63,0r0,197","w":135},"\ufb02":{"d":"121,0r-36,0r0,-234v-26,-5,-29,18,-27,37r19,0r0,33r-19,0r0,164r-36,0r0,-164r-18,0r0,-33r18,0v0,-27,-2,-72,45,-70r54,2r0,265","w":135},"\u00a5":{"d":"13,-60r0,-24r31,0r0,-24r-31,0r0,-24r26,0r-35,-133r38,0r22,88r20,-88r38,0r-34,133r26,0r0,24r-31,0r0,24r31,0r0,24r-31,0r0,60r-39,0r0,-60r-31,0","w":126},"\u00b4":{"d":"91,-262r38,0r-29,33r-28,0","w":180},"\u02c6":{"d":"71,-262r38,0r25,33r-33,0r-11,-13r-11,13r-33,0","w":179},"\u00a8":{"d":"48,-229r0,-36r33,0r0,36r-33,0xm99,-229r0,-36r33,0r0,36r-33,0","w":180},"\u02dc":{"d":"125,-235v-10,14,-57,-7,-70,6v1,-20,-6,-33,19,-34v14,3,43,11,51,1r0,27","w":180},"\u00c4":{"d":"41,0r-37,0r40,-265r47,0r40,265r-38,0r-7,-54r-37,0xm81,-95v-6,-29,-5,-65,-15,-90r-12,90r27,0xm25,-288r0,-35r34,0r0,35r-34,0xm76,-288r0,-35r33,0r0,35r-33,0","w":134,"k":{"T":8}},"\u00c9":{"d":"14,0r0,-265r89,0r0,40r-50,0r0,70r36,0r0,42r-36,0r0,73r50,0r0,40r-89,0xm60,-320r38,0r-29,32r-28,0","w":110,"k":{"A":-1,"\u00c4":-1,"\u00c0":-1,"\u00c1":-1,"\u00c3":-1,"\u00c2":-1,"\u00c5":-1}},"\u00d1":{"d":"93,0v-16,-49,-24,-104,-43,-150r0,150r-36,0r0,-265r35,0v16,49,24,105,43,151r0,-151r36,0r0,265r-35,0xm106,-293v-10,14,-57,-7,-70,6v1,-20,-6,-33,19,-33v14,0,42,9,51,1r0,26","w":142},"\u00d6":{"d":"116,-54v0,0,0,57,-52,57v-52,0,-52,-57,-52,-57r0,-156v0,0,0,-57,52,-57v52,0,52,57,52,57r0,156xm77,-210v0,0,1,-20,-13,-20v-14,0,-13,20,-13,20r0,156v0,0,-1,19,13,19v14,0,13,-19,13,-19r0,-156xm22,-288r0,-35r33,0r0,35r-33,0xm72,-288r0,-35r34,0r0,35r-34,0","w":127,"k":{"T":4}},"\u00dc":{"d":"79,-265r39,0r0,211v0,0,0,57,-52,57v-52,0,-52,-57,-52,-57r0,-211r39,0r0,211v0,0,-1,19,13,19v14,0,13,-19,13,-19r0,-211xm24,-288r0,-35r33,0r0,35r-33,0xm75,-288r0,-35r33,0r0,35r-33,0","w":131},"\u00e1":{"d":"44,-51v0,5,1,18,10,18v26,-1,12,-39,15,-62v-18,8,-25,25,-25,44xm9,-46v1,-85,60,-50,60,-104v0,-7,0,-18,-10,-18v-12,0,-10,18,-10,29r-36,0v-3,-35,18,-61,49,-61v74,0,33,126,46,200r-35,0v-5,-4,-1,-17,-6,-16v-16,25,-58,34,-58,-30xm65,-262r38,0r-28,33r-29,0","w":119,"k":{"t":3,"f":2,"v":1,"w":1,"y":1,"\u00ff":1,"\u00fd":1,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1}},"\u00e9":{"d":"72,-71r33,0r0,23v0,0,0,51,-47,51v-47,0,-46,-52,-46,-52r0,-99v0,0,0,-52,47,-52v47,0,46,51,46,51r0,57r-60,0v4,26,-11,52,14,63v21,-8,10,-23,13,-42xm59,-168v-22,9,-11,27,-14,48r27,0v-3,-22,9,-39,-13,-48xm65,-262r38,0r-28,33r-29,0","k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"\u00ed":{"d":"14,0r37,0r0,-197r-37,0r0,197xm33,-262r38,0r-29,33r-28,0","w":65,"k":{"t":1,"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"s":2,"\u0161":2}},"\u00f3":{"d":"104,-149r0,101v0,0,1,51,-46,51v-47,0,-47,-52,-47,-52r0,-99v0,0,0,-52,47,-52v47,0,46,51,46,51xm70,-148v0,0,2,-20,-12,-20v-13,0,-13,20,-13,20r0,99v0,0,0,20,13,20v14,0,12,-20,12,-20r0,-99xm64,-262r38,0r-28,33r-28,0","k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"\u00e0":{"d":"44,-51v0,5,1,18,10,18v26,-1,12,-39,15,-62v-18,8,-25,25,-25,44xm9,-46v1,-85,60,-50,60,-104v0,-7,0,-18,-10,-18v-12,0,-10,18,-10,29r-36,0v-3,-35,18,-61,49,-61v74,0,33,126,46,200r-35,0v-5,-4,-1,-17,-6,-16v-16,25,-58,34,-58,-30xm18,-262r38,0r19,33r-29,0","w":119,"k":{"t":3,"f":2,"v":1,"w":1,"y":1,"\u00ff":1,"\u00fd":1,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1}},"\u00e8":{"d":"72,-71r33,0r0,23v0,0,0,51,-47,51v-47,0,-46,-52,-46,-52r0,-99v0,0,0,-52,47,-52v47,0,46,51,46,51r0,57r-60,0v4,26,-11,52,14,63v21,-8,10,-23,13,-42xm59,-168v-22,9,-11,27,-14,48r27,0v-3,-22,9,-39,-13,-48xm18,-262r38,0r19,33r-29,0","k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"\u00e2":{"d":"44,-51v0,5,1,18,10,18v26,-1,12,-39,15,-62v-18,8,-25,25,-25,44xm9,-46v1,-85,60,-50,60,-104v0,-7,0,-18,-10,-18v-12,0,-10,18,-10,29r-36,0v-3,-35,18,-61,49,-61v74,0,33,126,46,200r-35,0v-5,-4,-1,-17,-6,-16v-16,25,-58,34,-58,-30xm41,-262r38,0r25,33r-33,0r-11,-13r-11,13r-33,0","w":119,"k":{"t":3,"f":2,"v":1,"w":1,"y":1,"\u00ff":1,"\u00fd":1,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1}},"\u00e4":{"d":"44,-51v0,5,1,18,10,18v26,-1,12,-39,15,-62v-18,8,-25,25,-25,44xm9,-46v1,-85,60,-50,60,-104v0,-7,0,-18,-10,-18v-12,0,-10,18,-10,29r-36,0v-3,-35,18,-61,49,-61v74,0,33,126,46,200r-35,0v-5,-4,-1,-17,-6,-16v-16,25,-58,34,-58,-30xm18,-229r0,-36r33,0r0,36r-33,0xm69,-229r0,-36r33,0r0,36r-33,0","w":119,"k":{"t":3,"f":2,"v":1,"w":1,"y":1,"\u00ff":1,"\u00fd":1,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1}},"\u00e3":{"d":"44,-51v0,5,1,18,10,18v26,-1,12,-39,15,-62v-18,8,-25,25,-25,44xm9,-46v1,-85,60,-50,60,-104v0,-7,0,-18,-10,-18v-12,0,-10,18,-10,29r-36,0v-3,-35,18,-61,49,-61v74,0,33,126,46,200r-35,0v-5,-4,-1,-17,-6,-16v-16,25,-58,34,-58,-30xm95,-235v-10,14,-57,-7,-70,6v1,-20,-6,-33,19,-34v14,3,43,11,51,1r0,27","w":119,"k":{"t":3,"f":2,"v":1,"w":1,"y":1,"\u00ff":1,"\u00fd":1,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1}},"\u00ea":{"d":"72,-71r33,0r0,23v0,0,0,51,-47,51v-47,0,-46,-52,-46,-52r0,-99v0,0,0,-52,47,-52v47,0,46,51,46,51r0,57r-60,0v4,26,-11,52,14,63v21,-8,10,-23,13,-42xm59,-168v-22,9,-11,27,-14,48r27,0v-3,-22,9,-39,-13,-48xm39,-262r38,0r25,33r-33,0r-11,-13r-11,13r-33,0","k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"\u00eb":{"d":"72,-71r33,0r0,23v0,0,0,51,-47,51v-47,0,-46,-52,-46,-52r0,-99v0,0,0,-52,47,-52v47,0,46,51,46,51r0,57r-60,0v4,26,-11,52,14,63v21,-8,10,-23,13,-42xm59,-168v-22,9,-11,27,-14,48r27,0v-3,-22,9,-39,-13,-48xm16,-229r0,-36r33,0r0,36r-33,0xm67,-229r0,-36r33,0r0,36r-33,0","k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"\u00ec":{"d":"14,0r37,0r0,-197r-37,0r0,197xm-6,-262r38,0r19,33r-28,0","w":65,"k":{"t":1,"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"s":2,"\u0161":2}},"\u00ee":{"d":"14,0r37,0r0,-197r-37,0r0,197xm13,-262r39,0r25,33r-33,0r-12,-13r-10,13r-34,0","w":65,"k":{"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1}},"\u00ef":{"d":"51,0r-37,0r0,-197r37,0r0,197xm-9,-229r0,-36r33,0r0,36r-33,0xm41,-229r0,-36r34,0r0,36r-34,0","w":65,"k":{"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1}},"\u00f1":{"d":"63,-165v-7,0,-12,10,-12,10r0,155r-37,0r0,-197r37,0r0,17v3,-2,16,-20,29,-20v19,0,28,23,28,39r0,161r-37,0r0,-156v0,-8,-4,-9,-8,-9xm96,-235v-10,14,-57,-7,-70,6v1,-20,-6,-33,19,-34v14,3,43,11,51,1r0,27","w":121,"k":{"t":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"s":2,"\u0161":2}},"\u00f2":{"d":"104,-149r0,101v0,0,1,51,-46,51v-47,0,-47,-52,-47,-52r0,-99v0,0,0,-52,47,-52v47,0,46,51,46,51xm70,-148v0,0,2,-20,-12,-20v-13,0,-13,20,-13,20r0,99v0,0,0,20,13,20v14,0,12,-20,12,-20r0,-99xm17,-262r38,0r19,33r-28,0","k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"\u00f4":{"d":"104,-149r0,101v0,0,1,51,-46,51v-47,0,-47,-52,-47,-52r0,-99v0,0,0,-52,47,-52v47,0,46,51,46,51xm70,-148v0,0,2,-20,-12,-20v-13,0,-13,20,-13,20r0,99v0,0,0,20,13,20v14,0,12,-20,12,-20r0,-99xm39,-262r38,0r25,33r-33,0r-11,-13r-11,13r-33,0","k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"\u00f6":{"d":"104,-149r0,101v0,0,1,51,-46,51v-47,0,-47,-52,-47,-52r0,-99v0,0,0,-52,47,-52v47,0,46,51,46,51xm70,-148v0,0,2,-20,-12,-20v-13,0,-13,20,-13,20r0,99v0,0,0,20,13,20v14,0,12,-20,12,-20r0,-99xm16,-229r0,-36r33,0r0,36r-33,0xm67,-229r0,-36r33,0r0,36r-33,0","k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"\u00f5":{"d":"104,-149r0,101v0,0,1,51,-46,51v-47,0,-47,-52,-47,-52r0,-99v0,0,0,-52,47,-52v47,0,46,51,46,51xm70,-148v0,0,2,-20,-12,-20v-13,0,-13,20,-13,20r0,99v0,0,0,20,13,20v14,0,12,-20,12,-20r0,-99xm93,-235v-10,14,-57,-7,-70,6v1,-20,-6,-33,19,-34v14,3,43,11,51,1r0,27","k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"\u00fa":{"d":"59,-32v7,0,12,-10,12,-10r0,-155r36,0r0,197r-36,0r0,-17v-3,2,-17,20,-30,20v-19,0,-27,-23,-27,-39r0,-161r36,0r0,156v0,8,5,9,9,9xm67,-262r38,0r-29,33r-28,0","w":121,"k":{"t":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"s":1,"\u0161":1}},"\u00f9":{"d":"59,-32v7,0,12,-10,12,-10r0,-155r36,0r0,197r-36,0r0,-17v-3,2,-17,20,-30,20v-19,0,-27,-23,-27,-39r0,-161r36,0r0,156v0,8,5,9,9,9xm20,-262r38,0r18,33r-28,0","w":121,"k":{"t":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"s":1,"\u0161":1}},"\u00fb":{"d":"59,-32v7,0,12,-10,12,-10r0,-155r36,0r0,197r-36,0r0,-17v-3,2,-17,20,-30,20v-19,0,-27,-23,-27,-39r0,-161r36,0r0,156v0,8,5,9,9,9xm41,-262r39,0r25,33r-33,0r-12,-13r-10,13r-33,0","w":121,"k":{"t":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"s":1,"\u0161":1}},"\u00fc":{"d":"59,-32v7,0,12,-10,12,-10r0,-155r36,0r0,197r-36,0r0,-17v-3,2,-17,20,-30,20v-19,0,-27,-23,-27,-39r0,-161r36,0r0,156v0,8,5,9,9,9xm19,-229r0,-36r33,0r0,36r-33,0xm69,-229r0,-36r34,0r0,36r-34,0","w":121,"k":{"t":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"s":1,"\u0161":1}},"\u00d8":{"d":"36,-5v0,12,-15,9,-26,9r9,-28v-17,-58,-2,-120,-7,-186v0,0,0,-57,52,-57v12,0,20,2,27,7v0,-11,14,-8,25,-8r-8,26v19,57,3,121,8,188v0,0,0,57,-52,57v-12,0,-21,-3,-28,-8xm64,-35v14,0,13,-19,13,-19r0,-86r-26,86v0,0,-1,19,13,19xm51,-210r0,82r26,-84v0,-4,-1,-18,-13,-18v-14,0,-13,20,-13,20","w":127},"\u00f8":{"d":"36,14r-14,0r5,-22v-17,-15,-16,-41,-16,-41r0,-99v0,0,0,-52,47,-52v7,0,13,1,18,3r4,-14r13,0r-5,22v17,15,16,40,16,40r0,101v0,0,1,51,-46,51v-7,0,-13,-1,-18,-3xm45,-148r0,71r22,-85v-2,-4,-4,-6,-9,-6v-13,0,-13,20,-13,20xm58,-29v14,0,12,-20,12,-20r0,-71r-22,85v2,3,5,6,10,6"},"\u00e6":{"d":"130,-71r33,0r0,23v0,0,0,51,-47,51v-22,0,-33,-11,-39,-23v-24,28,-68,43,-68,-26v0,-67,56,-71,60,-83v-2,-15,6,-39,-10,-39v-12,0,-10,18,-10,29r-36,0v-6,-45,39,-77,75,-52v7,-5,16,-9,29,-9v47,0,46,51,46,51r0,57r-60,0v4,26,-11,52,14,63v21,-8,10,-23,13,-42xm44,-51v0,5,1,18,10,18v26,-1,12,-39,15,-62v-18,8,-25,25,-25,44xm117,-168v-22,9,-11,27,-14,48r27,0v-3,-22,9,-39,-13,-48","w":173},"\u0153":{"d":"131,-71r34,0r0,23v0,0,-1,51,-48,51v-13,0,-23,-4,-30,-10v-7,6,-16,10,-29,10v-47,0,-47,-52,-47,-52r0,-99v0,0,0,-52,47,-52v14,0,23,5,30,11v7,-6,16,-11,30,-11v47,0,47,51,47,51r0,57r-61,0v4,25,-11,55,14,63v21,-8,10,-23,13,-42xm70,-148v0,0,2,-20,-12,-20v-13,0,-13,20,-13,20r0,99v0,0,0,20,13,20v14,0,12,-20,12,-20r0,-99xm118,-168v-22,5,-12,27,-14,48r27,0v-3,-22,9,-39,-13,-48","w":174,"k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"\u00c0":{"d":"41,0r-37,0r40,-265r47,0r40,265r-38,0r-7,-54r-37,0xm81,-95v-6,-29,-5,-65,-15,-90r-12,90r27,0xm25,-320r38,0r18,32r-28,0","w":134,"k":{"T":8}},"\u00c6":{"d":"97,0r0,-54r-40,0r-16,54r-38,0r74,-265r109,0r0,40r-50,0r0,70r36,0r0,42r-36,0r0,73r50,0r0,40r-89,0xm95,-185r-26,90r28,0v-2,-29,4,-65,-2,-90","w":193},"\u00c1":{"d":"41,0r-37,0r40,-265r47,0r40,265r-38,0r-7,-54r-37,0xm81,-95v-6,-29,-5,-65,-15,-90r-12,90r27,0xm70,-320r38,0r-28,32r-29,0","w":134,"k":{"T":8}},"\u00c3":{"d":"41,0r-37,0r40,-265r47,0r40,265r-38,0r-7,-54r-37,0xm81,-95v-6,-29,-5,-65,-15,-90r-12,90r27,0xm102,-293v-10,14,-57,-7,-70,6v1,-20,-6,-33,19,-33v14,0,42,9,51,1r0,26","w":134,"k":{"T":8}},"\u00d5":{"d":"116,-54v0,0,0,57,-52,57v-52,0,-52,-57,-52,-57r0,-156v0,0,0,-57,52,-57v52,0,52,57,52,57r0,156xm77,-210v0,0,1,-20,-13,-20v-14,0,-13,20,-13,20r0,156v0,0,-1,19,13,19v14,0,13,-19,13,-19r0,-156xm99,-293v-10,14,-57,-7,-70,6v1,-20,-6,-33,19,-33v14,0,42,9,51,1r0,26","w":127,"k":{"T":4}},"\u00ff":{"d":"6,70r0,-33v18,5,35,-15,32,-31r-34,-203r36,0v7,42,6,92,17,131v2,-46,11,-87,15,-131r35,0r-35,212v-5,32,-26,63,-66,55xm14,-229r0,-36r33,0r0,36r-33,0xm64,-229r0,-36r34,0r0,36r-34,0","w":111,"k":{"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"a":3,"\u00e1":3,"\u00e0":3,"\u00e2":3,"\u00e4":3,"\u00e3":3,"\u00e5":3,"'":-4,"\u201d":-4,"\u201c":-4,"\u2018":-4,"\u2019":-4}},"\u0178":{"d":"41,-265v8,29,11,61,21,88r21,-88r38,0r-40,152r0,113r-39,0r0,-113r-39,-152r38,0xm20,-288r0,-35r33,0r0,35r-33,0xm71,-288r0,-35r33,0r0,35r-33,0","w":123,"k":{"A":9,"\u00c4":9,"\u00c0":9,"\u00c1":9,"\u00c3":9,"\u00c2":9,"\u00c5":9,"d":9,"q":9,"c":14,"e":14,"o":14,"\u00e9":14,"\u00f3":14,"\u00e8":14,"\u00ea":14,"\u00eb":14,"\u00f2":14,"\u00f4":14,"\u00f6":14,"\u00f5":14,"\u0153":14,"\u00e7":14,"a":15,"\u00e1":15,"\u00e0":15,"\u00e2":15,"\u00e4":15,"\u00e3":15,"\u00e5":15}},"\u00c2":{"d":"41,0r-37,0r40,-265r47,0r40,265r-38,0r-7,-54r-37,0xm81,-95v-6,-29,-5,-65,-15,-90r-12,90r27,0xm48,-320r39,0r25,32r-34,0r-11,-13r-10,13r-34,0","w":134,"k":{"T":8}},"\u00ca":{"d":"14,0r0,-265r89,0r0,40r-50,0r0,70r36,0r0,42r-36,0r0,73r50,0r0,40r-89,0xm40,-320r38,0r25,32r-33,0r-11,-13r-11,13r-33,0","w":110,"k":{"A":-1,"\u00c4":-1,"\u00c0":-1,"\u00c1":-1,"\u00c3":-1,"\u00c2":-1,"\u00c5":-1}},"\u00cb":{"d":"14,0r0,-265r89,0r0,40r-50,0r0,70r36,0r0,42r-36,0r0,73r50,0r0,40r-89,0xm17,-288r0,-35r33,0r0,35r-33,0xm67,-288r0,-35r34,0r0,35r-34,0","w":110,"k":{"A":-1,"\u00c4":-1,"\u00c0":-1,"\u00c1":-1,"\u00c3":-1,"\u00c2":-1,"\u00c5":-1}},"\u00c8":{"d":"14,0r0,-265r89,0r0,40r-50,0r0,70r36,0r0,42r-36,0r0,73r50,0r0,40r-89,0xm19,-320r38,0r19,32r-28,0","w":110,"k":{"A":-1,"\u00c4":-1,"\u00c0":-1,"\u00c1":-1,"\u00c3":-1,"\u00c2":-1,"\u00c5":-1}},"\u00cd":{"d":"14,0r0,-265r39,0r0,265r-39,0xm34,-320r38,0r-29,32r-28,0","w":70,"k":{"t":1,"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"s":2,"\u0161":2}},"\u00cc":{"d":"17,0r0,-265r39,0r0,265r-39,0xm-1,-320r38,0r18,32r-28,0","w":70,"k":{"t":1,"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"s":2,"\u0161":2}},"\u00ce":{"d":"13,0r0,-265r39,0r0,265r-39,0xm13,-320r39,0r25,32r-33,0r-12,-13r-10,13r-34,0","w":65,"k":{"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1}},"\u00cf":{"d":"13,0r0,-265r39,0r0,265r-39,0xm-9,-288r0,-35r33,0r0,35r-33,0xm41,-288r0,-35r34,0r0,35r-34,0","w":65,"k":{"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1}},"\u00d3":{"d":"116,-54v0,0,0,57,-52,57v-52,0,-52,-57,-52,-57r0,-156v0,0,0,-57,52,-57v52,0,52,57,52,57r0,156xm77,-210v0,0,1,-20,-13,-20v-14,0,-13,20,-13,20r0,156v0,0,-1,19,13,19v14,0,13,-19,13,-19r0,-156xm69,-320r38,0r-29,32r-28,0","w":127,"k":{"T":4}},"\u00d2":{"d":"116,-54v0,0,0,57,-52,57v-52,0,-52,-57,-52,-57r0,-156v0,0,0,-57,52,-57v52,0,52,57,52,57r0,156xm77,-210v0,0,1,-20,-13,-20v-14,0,-13,20,-13,20r0,156v0,0,-1,19,13,19v14,0,13,-19,13,-19r0,-156xm21,-320r38,0r19,32r-28,0","w":127,"k":{"T":4}},"\u00d4":{"d":"116,-54v0,0,0,57,-52,57v-52,0,-52,-57,-52,-57r0,-156v0,0,0,-57,52,-57v52,0,52,57,52,57r0,156xm77,-210v0,0,1,-20,-13,-20v-14,0,-13,20,-13,20r0,156v0,0,-1,19,13,19v14,0,13,-19,13,-19r0,-156xm45,-320r38,0r25,32r-33,0r-11,-13r-11,13r-33,0","w":127,"k":{"T":4}},"\u00da":{"d":"118,-265r-39,0r0,211v0,0,1,19,-13,19v-14,0,-13,-19,-13,-19r0,-211r-39,0r0,211v0,0,0,57,52,57v52,0,52,-57,52,-57r0,-211xm73,-320r38,0r-29,32r-28,0","w":131},"\u00d9":{"d":"118,-265r-39,0r0,211v0,0,1,19,-13,19v-14,0,-13,-19,-13,-19r0,-211r-39,0r0,211v0,0,0,57,52,57v52,0,52,-57,52,-57r0,-211xm26,-320r37,0r19,32r-28,0","w":131},"\u00db":{"d":"118,-265r-39,0r0,211v0,0,1,19,-13,19v-14,0,-13,-19,-13,-19r0,-211r-39,0r0,211v0,0,0,57,52,57v52,0,52,-57,52,-57r0,-211xm47,-320r38,0r25,32r-33,0r-11,-13r-11,13r-33,0","w":131},"\u00dd":{"d":"62,-177v-10,-26,-13,-59,-21,-88r-38,0r39,152r0,113r39,0r0,-113r40,-152r-38,0xm63,-320r38,0r-28,32r-28,0","w":123,"k":{"A":9,"\u00c4":9,"\u00c0":9,"\u00c1":9,"\u00c3":9,"\u00c2":9,"\u00c5":9,"d":9,"q":9,"c":14,"e":14,"o":14,"\u00e9":14,"\u00f3":14,"\u00e8":14,"\u00ea":14,"\u00eb":14,"\u00f2":14,"\u00f4":14,"\u00f6":14,"\u00f5":14,"\u0153":14,"\u00e7":14,"a":15,"\u00e1":15,"\u00e0":15,"\u00e2":15,"\u00e4":15,"\u00e3":15,"\u00e5":15}},"\u00fd":{"d":"6,37r0,33v39,8,61,-23,66,-55r35,-212r-35,0v-7,42,-6,92,-17,131r-15,-131r-36,0r34,203v1,16,-13,37,-32,31xm59,-262r38,0r-28,33r-28,0","w":111,"k":{"c":1,"e":1,"o":1,"\u00e9":1,"\u00f3":1,"\u00e8":1,"\u00ea":1,"\u00eb":1,"\u00f2":1,"\u00f4":1,"\u00f6":1,"\u00f5":1,"\u0153":1,"\u00e7":1,"a":3,"\u00e1":3,"\u00e0":3,"\u00e2":3,"\u00e4":3,"\u00e3":3,"\u00e5":3,"'":-4,"\u201d":-4,"\u201c":-4,"\u2018":-4,"\u2019":-4}},"\u0152":{"d":"64,0v-52,0,-52,-54,-52,-54r0,-156v0,0,0,-55,52,-55r102,0r0,40r-50,0r0,70r36,0r0,42r-36,0r0,73r50,0r0,40r-102,0xm77,-213v0,-5,-2,-17,-13,-17v-14,0,-13,20,-13,20r0,156v0,0,-1,19,13,19v14,0,13,-19,13,-19r0,-159","w":172},"\u0131":{"d":"51,0r-37,0r0,-197r37,0r0,197","w":65},"\u02d8":{"d":"111,-262r19,16v0,0,-16,17,-40,17v-25,0,-40,-17,-40,-17r20,-16v0,0,7,8,20,8v14,0,21,-8,21,-8","w":180},"\u02c7":{"d":"109,-229r-38,0r-25,-33r33,0r11,13r11,-13r33,0","w":179},"\u02db":{"d":"61,37v8,-27,17,-42,41,-37v0,0,-16,13,-16,30v1,16,23,16,33,10r-3,24v-25,12,-57,-5,-55,-27","w":180},"\u00b8":{"d":"105,19v2,21,-2,36,-8,49r-18,0r7,-24r-11,0r0,-25r30,0","w":180},"\u02da":{"d":"63,-250v0,-15,12,-25,27,-25v15,0,27,10,27,25v0,15,-12,25,-27,25v-15,0,-27,-10,-27,-25xm77,-250v0,7,6,13,13,13v7,0,13,-6,13,-13v0,-7,-6,-12,-13,-12v-7,0,-13,5,-13,12","w":179},"\u02d9":{"d":"72,-228r0,-37r36,0r0,37r-36,0","w":179},"\u02dd":{"d":"57,-262r37,0r-28,33r-28,0xm110,-262r38,0r-29,33r-28,0","w":180},"\u00b7":{"d":"0,-114r0,-40r38,0r0,40r-38,0","w":37},"\u201a":{"d":"46,-40v4,40,-9,62,-20,87r-18,0r13,-47r-13,0r0,-40r38,0","w":54},"\u201e":{"d":"47,-40v4,40,-9,62,-20,87r-18,0r13,-47r-13,0r0,-40r38,0xm100,-40v4,39,-8,62,-19,87r-18,0r12,-47r-12,0r0,-40r37,0","w":109},"\u00c5":{"d":"41,0r-37,0r40,-265r47,0r40,265r-38,0r-7,-54r-37,0xm81,-95v-6,-29,-5,-65,-15,-90r-12,90r27,0xm41,-310v0,-15,12,-25,27,-25v15,0,26,10,26,25v0,15,-11,26,-26,26v-15,0,-27,-11,-27,-26xm54,-310v0,18,27,16,27,0v0,-7,-6,-12,-13,-12v-7,0,-14,5,-14,12","w":134,"k":{"T":8}},"\u00e5":{"d":"44,-51v0,5,1,18,10,18v26,-1,12,-39,15,-62v-18,8,-25,25,-25,44xm9,-46v1,-85,60,-50,60,-104v0,-7,0,-18,-10,-18v-12,0,-10,18,-10,29r-36,0v-3,-35,18,-61,49,-61v74,0,33,126,46,200r-35,0v-5,-4,-1,-17,-6,-16v-16,25,-58,34,-58,-30xm33,-250v0,-15,12,-25,27,-25v15,0,27,10,27,25v0,15,-12,25,-27,25v-15,0,-27,-10,-27,-25xm47,-250v0,7,6,13,13,13v7,0,13,-6,13,-13v0,-7,-6,-12,-13,-12v-7,0,-13,5,-13,12","w":119,"k":{"t":3,"f":2,"v":1,"w":1,"y":1,"\u00ff":1,"\u00fd":1,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1}},"\u00e7":{"d":"48,-152r0,107v0,7,0,15,10,15v16,2,8,-29,10,-43r37,0v3,47,-9,76,-47,76v-26,0,-46,-14,-46,-58r0,-86v0,-44,20,-59,46,-59v36,0,50,25,47,72r-37,0v-1,-14,5,-39,-10,-39v-10,0,-10,8,-10,15xm64,68v5,-14,10,-28,8,-49r-30,0r0,25r11,0r-7,24r18,0","w":113,"k":{"t":2,"f":2,"v":2,"w":2,"y":2,"\u00ff":2,"\u00fd":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"n":1,"m":1,"p":1,"r":1,"\u00f1":1,"l":1,"I":1,"i":1,"|":1,"\u00ed":1,"\u00ec":1,"\u00cd":1,"\u00cc":1,"s":1,"\u0161":1,"\u00ee":1,"\u00ef":1,"\u00ce":1,"\u00cf":1}},"\u00c7":{"d":"79,-91r37,0r0,37v0,0,0,57,-52,57v-52,0,-52,-57,-52,-57r0,-156v0,0,0,-57,52,-57v52,0,52,57,52,57r0,36r-37,0v-4,-25,12,-46,-15,-56v-14,0,-13,20,-13,20r0,156v0,0,-1,19,13,19v28,-9,10,-31,15,-56xm69,68v5,-14,10,-28,8,-49r-30,0r0,25r11,0r-7,24r18,0","w":124},"\u017d":{"d":"4,0r0,-42r60,-184r-52,0r0,-39r95,0r0,39r-62,187r62,0r0,39r-103,0xm79,-288r-39,0r-25,-32r34,0r10,12r12,-12r33,0","w":110},"\u017e":{"d":"2,0r0,-30r50,-134r-42,0r0,-33r81,0r0,30r-50,134r50,0r0,33r-89,0xm68,-229r-39,0r-25,-33r33,0r11,13r11,-13r34,0","w":93},"\u0160":{"d":"79,-62v0,-43,-67,-95,-67,-144v0,-29,14,-60,51,-61v47,-1,54,40,54,70r-38,3v0,-18,-3,-38,-16,-38v-10,0,-13,11,-13,26v0,43,67,94,67,142v0,35,-12,67,-54,67v-50,0,-57,-38,-57,-77r39,-4v0,22,2,45,18,45v12,0,16,-12,16,-29xm81,-288r-39,0r-24,-32r33,0r11,12r11,-12r33,0","w":123},"\u0161":{"d":"70,-51v0,-35,-57,-51,-57,-96v0,-23,9,-52,44,-53v42,-1,46,31,46,53r-34,0v0,-9,1,-23,-11,-23v-10,0,-12,13,-12,23v0,36,58,52,58,96v0,24,-12,54,-47,54v-44,0,-51,-39,-51,-60r34,0v0,10,2,30,17,30v10,0,13,-12,13,-24xm75,-229r-39,0r-24,-33r33,0r10,13r12,-13r33,0","w":110,"k":{"t":3}},"\u00af":{"d":"55,-231r0,-29r70,0r0,29r-70,0","w":180},"\u20ac":{"d":"9,-144r0,-24r19,0r0,-42v0,0,0,-57,52,-57v60,0,51,51,52,72r-37,0v-2,-17,7,-28,-14,-35v-26,10,-9,36,-14,62r41,0r0,24r-41,0r0,24r41,0r0,24r-41,0v4,26,-12,51,14,61v22,-7,12,-18,14,-34r37,0r0,15v0,0,0,57,-52,57v-52,0,-52,-57,-52,-57r0,-42r-19,0r0,-24r19,0r0,-24r-19,0","w":142},"\u00de":{"d":"14,0r0,-265r39,0r0,43v34,0,69,18,69,79v0,61,-35,80,-69,80r0,63r-39,0xm53,-183r0,80v24,0,29,-8,29,-38v0,-30,-5,-42,-29,-42","w":127},"\u00fe":{"d":"14,68r0,-333r37,0r0,81v0,0,16,-16,29,-16v20,0,28,23,28,39r0,125v0,16,-8,39,-28,39v-13,0,-29,-16,-29,-16r0,81r-37,0xm51,-154r0,111v0,13,20,17,20,0r0,-111v0,-7,-4,-12,-9,-12v-5,0,-11,5,-11,12","w":120,"k":{"t":2,"a":2,"\u00e1":2,"\u00e0":2,"\u00e2":2,"\u00e4":2,"\u00e3":2,"\u00e5":2,"s":2,"\u0161":2}},"\u0142":{"d":"59,0r-36,0r0,-112r-18,13r0,-39r18,-13r0,-114r36,0r0,85r18,-13r0,39r-18,13r0,141","w":82},"\u00d0":{"d":"4,-115r0,-40r10,0r0,-110v93,-4,108,12,108,133v0,119,-14,136,-108,132r0,-115r-10,0xm53,-226r0,71r15,0r0,40r-15,0r0,76v27,0,29,-6,29,-93v0,-86,-2,-94,-29,-94","w":133},"\u0141":{"d":"7,-99r0,-39r12,-9r0,-118r39,0r0,88r21,-16r0,39r-21,16r0,102r51,0r0,36r-90,0r0,-108","w":110},"\u00f0":{"d":"55,-236v-16,-18,5,-16,12,-29r9,11r17,-15r9,12r-17,15v29,35,21,127,22,194v0,0,0,51,-47,51v-47,0,-47,-52,-47,-52r0,-102v0,-7,0,-49,31,-49v8,0,18,6,27,14v-2,-15,-5,-27,-9,-36r-14,13r-10,-11xm72,-148v0,0,2,-20,-12,-20v-13,0,-12,20,-12,20r0,99v0,0,-1,20,12,20v14,0,12,-20,12,-20r0,-99","w":118},"\u00df":{"d":"61,-172r0,-25v8,0,15,-8,15,-20v0,-10,-5,-18,-15,-18v-9,0,-13,8,-13,18r0,217r-36,0r0,-217v0,-27,15,-50,49,-50v46,0,62,57,32,80v16,9,27,33,27,86v0,87,-21,101,-59,101r0,-34v15,0,22,-9,22,-67v0,-61,-7,-71,-22,-71","w":128},"B":{"d":"62,0r-48,0r0,-265v63,-3,108,3,106,71v0,24,-6,38,-25,54v0,0,27,12,27,65v0,39,-14,75,-60,75xm82,-79v0,-44,-22,-41,-29,-41r0,81v7,0,29,4,29,-40xm82,-191v0,-36,-22,-35,-29,-35r0,70v7,0,29,1,29,-35","w":131,"k":{"\u00dd":4,"\u0178":4,"Y":4}},"\u00a0":{"w":55}}}); diff --git a/javascripts/cufon-yui.js b/javascripts/cufon-yui.js new file mode 100644 index 0000000..cf0f799 --- /dev/null +++ b/javascripts/cufon-yui.js @@ -0,0 +1,7 @@ +/* + * Copyright (c) 2009 Simo Kinnunen. + * Licensed under the MIT license. + * + * @version 1.09 + */ +var Cufon=(function(){var m=function(){return m.replace.apply(null,arguments)};var x=m.DOM={ready:(function(){var C=false,E={loaded:1,complete:1};var B=[],D=function(){if(C){return}C=true;for(var F;F=B.shift();F()){}};if(document.addEventListener){document.addEventListener("DOMContentLoaded",D,false);window.addEventListener("pageshow",D,false)}if(!window.opera&&document.readyState){(function(){E[document.readyState]?D():setTimeout(arguments.callee,10)})()}if(document.readyState&&document.createStyleSheet){(function(){try{document.body.doScroll("left");D()}catch(F){setTimeout(arguments.callee,1)}})()}q(window,"load",D);return function(F){if(!arguments.length){D()}else{C?F():B.push(F)}}})(),root:function(){return document.documentElement||document.body}};var n=m.CSS={Size:function(C,B){this.value=parseFloat(C);this.unit=String(C).match(/[a-z%]*$/)[0]||"px";this.convert=function(D){return D/B*this.value};this.convertFrom=function(D){return D/this.value*B};this.toString=function(){return this.value+this.unit}},addClass:function(C,B){var D=C.className;C.className=D+(D&&" ")+B;return C},color:j(function(C){var B={};B.color=C.replace(/^rgba\((.*?),\s*([\d.]+)\)/,function(E,D,F){B.opacity=parseFloat(F);return"rgb("+D+")"});return B}),fontStretch:j(function(B){if(typeof B=="number"){return B}if(/%$/.test(B)){return parseFloat(B)/100}return{"ultra-condensed":0.5,"extra-condensed":0.625,condensed:0.75,"semi-condensed":0.875,"semi-expanded":1.125,expanded:1.25,"extra-expanded":1.5,"ultra-expanded":2}[B]||1}),getStyle:function(C){var B=document.defaultView;if(B&&B.getComputedStyle){return new a(B.getComputedStyle(C,null))}if(C.currentStyle){return new a(C.currentStyle)}return new a(C.style)},gradient:j(function(F){var G={id:F,type:F.match(/^-([a-z]+)-gradient\(/)[1],stops:[]},C=F.substr(F.indexOf("(")).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);for(var E=0,B=C.length,D;E0){E=" "+E}}else{if(B400}if(I==500){I=400}for(var J in G){if(!k(G,J)){continue}J=parseInt(J,10);if(!F||JD){D=J}K.push(J)}if(ID){I=D}K.sort(function(M,L){return(E?(M>=I&&L>=I)?ML:(M<=I&&L<=I)?M>L:MO){O=K}if(I>N){N=I}if(Kcufoncanvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}cufoncanvas{position:absolute;text-align:left;}cufon{display:inline-block;position:relative;vertical-align:'+(h?"middle":"text-bottom")+";}cufon cufontext{position:absolute;left:-10000in;font-size:1px;}a cufon{cursor:pointer}}@media print{cufon cufoncanvas{display:none;}}").replace(/;/g,"!important;"));function c(i,j){return a(i,/(?:em|ex|%)$|^[a-z-]+$/i.test(j)?"1em":j)}function a(l,m){if(m==="0"){return 0}if(/px$/i.test(m)){return parseFloat(m)}var k=l.style.left,j=l.runtimeStyle.left;l.runtimeStyle.left=l.currentStyle.left;l.style.left=m.replace("%","em");var i=l.style.pixelLeft;l.style.left=k;l.runtimeStyle.left=j;return i}function f(l,k,j,n){var i="computed"+n,m=k[i];if(isNaN(m)){m=k.get(n);k[i]=m=(m=="normal")?0:~~j.convertFrom(a(l,m))}return m}var g={};function d(p){var q=p.id;if(!g[q]){var n=p.stops,o=document.createElement("cvml:fill"),i=[];o.type="gradient";o.angle=180;o.focus="0";o.method="sigma";o.color=n[0][1];for(var m=1,l=n.length-1;m $().plugin('option', {...}) + if ( !PluginClass.prototype.option ) { + // option setter + PluginClass.prototype.option = function( opts ) { + // bail out if not an object + if ( !$.isPlainObject( opts ) ){ + return; + } + this.options = $.extend( true, this.options, opts ); + }; + } + + // make jQuery plugin + $.fn[ namespace ] = function( arg0 /*, arg1 */ ) { + if ( typeof arg0 == 'string' ) { + // method call $().plugin( 'methodName', { options } ) + // shift arguments by 1 + var args = arraySlice.call( arguments, 1 ); + return methodCall( this, arg0, args ); + } + // just $().plugin({ options }) + plainCall( this, arg0 ); + return this; + }; + + // $().plugin('methodName') + function methodCall( $elems, methodName, args ) { + var returnValue; + var pluginMethodStr = '$().' + namespace + '("' + methodName + '")'; + + $elems.each( function( i, elem ) { + // get instance + var instance = $.data( elem, namespace ); + if ( !instance ) { + logError( namespace + ' not initialized. Cannot call methods, i.e. ' + + pluginMethodStr ); + return; + } + + var method = instance[ methodName ]; + if ( !method || methodName.charAt(0) == '_' ) { + logError( pluginMethodStr + ' is not a valid method' ); + return; + } + + // apply method, get return value + var value = method.apply( instance, args ); + // set return value if value is returned, use only first value + returnValue = returnValue === undefined ? value : returnValue; + }); + + return returnValue !== undefined ? returnValue : $elems; + } + + function plainCall( $elems, options ) { + $elems.each( function( i, elem ) { + var instance = $.data( elem, namespace ); + if ( instance ) { + // set options & init + instance.option( options ); + instance._init(); + } else { + // initialize new instance + instance = new PluginClass( elem, options ); + $.data( elem, namespace, instance ); + } + }); + } + + updateJQuery( $ ); + +} + +// ----- updateJQuery ----- // + +// set $.bridget for v1 backwards compatibility +function updateJQuery( $ ) { + if ( !$ || ( $ && $.bridget ) ) { + return; + } + $.bridget = jQueryBridget; +} + +updateJQuery( jQuery || window.jQuery ); + +// ----- ----- // + +return jQueryBridget; + +})); + +/** + * EvEmitter v1.0.3 + * Lil' event emitter + * MIT License + */ + +/* jshint unused: true, undef: true, strict: true */ + +( function( global, factory ) { + // universal module definition + /* jshint strict: false */ /* globals define, module, window */ + if ( typeof define == 'function' && define.amd ) { + // AMD - RequireJS + define( 'ev-emitter/ev-emitter',factory ); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS - Browserify, Webpack + module.exports = factory(); + } else { + // Browser globals + global.EvEmitter = factory(); + } + +}( typeof window != 'undefined' ? window : this, function() { + + + +function EvEmitter() {} + +var proto = EvEmitter.prototype; + +proto.on = function( eventName, listener ) { + if ( !eventName || !listener ) { + return; + } + // set events hash + var events = this._events = this._events || {}; + // set listeners array + var listeners = events[ eventName ] = events[ eventName ] || []; + // only add once + if ( listeners.indexOf( listener ) == -1 ) { + listeners.push( listener ); + } + + return this; +}; + +proto.once = function( eventName, listener ) { + if ( !eventName || !listener ) { + return; + } + // add event + this.on( eventName, listener ); + // set once flag + // set onceEvents hash + var onceEvents = this._onceEvents = this._onceEvents || {}; + // set onceListeners object + var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {}; + // set flag + onceListeners[ listener ] = true; + + return this; +}; + +proto.off = function( eventName, listener ) { + var listeners = this._events && this._events[ eventName ]; + if ( !listeners || !listeners.length ) { + return; + } + var index = listeners.indexOf( listener ); + if ( index != -1 ) { + listeners.splice( index, 1 ); + } + + return this; +}; + +proto.emitEvent = function( eventName, args ) { + var listeners = this._events && this._events[ eventName ]; + if ( !listeners || !listeners.length ) { + return; + } + var i = 0; + var listener = listeners[i]; + args = args || []; + // once stuff + var onceListeners = this._onceEvents && this._onceEvents[ eventName ]; + + while ( listener ) { + var isOnce = onceListeners && onceListeners[ listener ]; + if ( isOnce ) { + // remove listener + // remove before trigger to prevent recursion + this.off( eventName, listener ); + // unset once flag + delete onceListeners[ listener ]; + } + // trigger listener + listener.apply( this, args ); + // get next listener + i += isOnce ? 0 : 1; + listener = listeners[i]; + } + + return this; +}; + +return EvEmitter; + +})); + +/*! + * getSize v2.0.2 + * measure size of elements + * MIT license + */ + +/*jshint browser: true, strict: true, undef: true, unused: true */ +/*global define: false, module: false, console: false */ + +( function( window, factory ) { + 'use strict'; + + if ( typeof define == 'function' && define.amd ) { + // AMD + define( 'get-size/get-size',[],function() { + return factory(); + }); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS + module.exports = factory(); + } else { + // browser global + window.getSize = factory(); + } + +})( window, function factory() { +'use strict'; + +// -------------------------- helpers -------------------------- // + +// get a number from a string, not a percentage +function getStyleSize( value ) { + var num = parseFloat( value ); + // not a percent like '100%', and a number + var isValid = value.indexOf('%') == -1 && !isNaN( num ); + return isValid && num; +} + +function noop() {} + +var logError = typeof console == 'undefined' ? noop : + function( message ) { + console.error( message ); + }; + +// -------------------------- measurements -------------------------- // + +var measurements = [ + 'paddingLeft', + 'paddingRight', + 'paddingTop', + 'paddingBottom', + 'marginLeft', + 'marginRight', + 'marginTop', + 'marginBottom', + 'borderLeftWidth', + 'borderRightWidth', + 'borderTopWidth', + 'borderBottomWidth' +]; + +var measurementsLength = measurements.length; + +function getZeroSize() { + var size = { + width: 0, + height: 0, + innerWidth: 0, + innerHeight: 0, + outerWidth: 0, + outerHeight: 0 + }; + for ( var i=0; i < measurementsLength; i++ ) { + var measurement = measurements[i]; + size[ measurement ] = 0; + } + return size; +} + +// -------------------------- getStyle -------------------------- // + +/** + * getStyle, get style of element, check for Firefox bug + * https://bugzilla.mozilla.org/show_bug.cgi?id=548397 + */ +function getStyle( elem ) { + var style = getComputedStyle( elem ); + if ( !style ) { + logError( 'Style returned ' + style + + '. Are you running this code in a hidden iframe on Firefox? ' + + 'See http://bit.ly/getsizebug1' ); + } + return style; +} + +// -------------------------- setup -------------------------- // + +var isSetup = false; + +var isBoxSizeOuter; + +/** + * setup + * check isBoxSizerOuter + * do on first getSize() rather than on page load for Firefox bug + */ +function setup() { + // setup once + if ( isSetup ) { + return; + } + isSetup = true; + + // -------------------------- box sizing -------------------------- // + + /** + * WebKit measures the outer-width on style.width on border-box elems + * IE & Firefox<29 measures the inner-width + */ + var div = document.createElement('div'); + div.style.width = '200px'; + div.style.padding = '1px 2px 3px 4px'; + div.style.borderStyle = 'solid'; + div.style.borderWidth = '1px 2px 3px 4px'; + div.style.boxSizing = 'border-box'; + + var body = document.body || document.documentElement; + body.appendChild( div ); + var style = getStyle( div ); + + getSize.isBoxSizeOuter = isBoxSizeOuter = getStyleSize( style.width ) == 200; + body.removeChild( div ); + +} + +// -------------------------- getSize -------------------------- // + +function getSize( elem ) { + setup(); + + // use querySeletor if elem is string + if ( typeof elem == 'string' ) { + elem = document.querySelector( elem ); + } + + // do not proceed on non-objects + if ( !elem || typeof elem != 'object' || !elem.nodeType ) { + return; + } + + var style = getStyle( elem ); + + // if hidden, everything is 0 + if ( style.display == 'none' ) { + return getZeroSize(); + } + + var size = {}; + size.width = elem.offsetWidth; + size.height = elem.offsetHeight; + + var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box'; + + // get all measurements + for ( var i=0; i < measurementsLength; i++ ) { + var measurement = measurements[i]; + var value = style[ measurement ]; + var num = parseFloat( value ); + // any 'auto', 'medium' value will be 0 + size[ measurement ] = !isNaN( num ) ? num : 0; + } + + var paddingWidth = size.paddingLeft + size.paddingRight; + var paddingHeight = size.paddingTop + size.paddingBottom; + var marginWidth = size.marginLeft + size.marginRight; + var marginHeight = size.marginTop + size.marginBottom; + var borderWidth = size.borderLeftWidth + size.borderRightWidth; + var borderHeight = size.borderTopWidth + size.borderBottomWidth; + + var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter; + + // overwrite width and height if we can get it from style + var styleWidth = getStyleSize( style.width ); + if ( styleWidth !== false ) { + size.width = styleWidth + + // add padding and border unless it's already including it + ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth ); + } + + var styleHeight = getStyleSize( style.height ); + if ( styleHeight !== false ) { + size.height = styleHeight + + // add padding and border unless it's already including it + ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight ); + } + + size.innerWidth = size.width - ( paddingWidth + borderWidth ); + size.innerHeight = size.height - ( paddingHeight + borderHeight ); + + size.outerWidth = size.width + marginWidth; + size.outerHeight = size.height + marginHeight; + + return size; +} + +return getSize; + +}); + +/** + * matchesSelector v2.0.1 + * matchesSelector( element, '.selector' ) + * MIT license + */ + +/*jshint browser: true, strict: true, undef: true, unused: true */ + +( function( window, factory ) { + /*global define: false, module: false */ + 'use strict'; + // universal module definition + if ( typeof define == 'function' && define.amd ) { + // AMD + define( 'desandro-matches-selector/matches-selector',factory ); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS + module.exports = factory(); + } else { + // browser global + window.matchesSelector = factory(); + } + +}( window, function factory() { + 'use strict'; + + var matchesMethod = ( function() { + var ElemProto = Element.prototype; + // check for the standard method name first + if ( ElemProto.matches ) { + return 'matches'; + } + // check un-prefixed + if ( ElemProto.matchesSelector ) { + return 'matchesSelector'; + } + // check vendor prefixes + var prefixes = [ 'webkit', 'moz', 'ms', 'o' ]; + + for ( var i=0; i < prefixes.length; i++ ) { + var prefix = prefixes[i]; + var method = prefix + 'MatchesSelector'; + if ( ElemProto[ method ] ) { + return method; + } + } + })(); + + return function matchesSelector( elem, selector ) { + return elem[ matchesMethod ]( selector ); + }; + +})); + +/** + * Fizzy UI utils v2.0.3 + * MIT license + */ + +/*jshint browser: true, undef: true, unused: true, strict: true */ + +( function( window, factory ) { + // universal module definition + /*jshint strict: false */ /*globals define, module, require */ + + if ( typeof define == 'function' && define.amd ) { + // AMD + define( 'fizzy-ui-utils/utils',[ + 'desandro-matches-selector/matches-selector' + ], function( matchesSelector ) { + return factory( window, matchesSelector ); + }); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS + module.exports = factory( + window, + require('desandro-matches-selector') + ); + } else { + // browser global + window.fizzyUIUtils = factory( + window, + window.matchesSelector + ); + } + +}( window, function factory( window, matchesSelector ) { + + + +var utils = {}; + +// ----- extend ----- // + +// extends objects +utils.extend = function( a, b ) { + for ( var prop in b ) { + a[ prop ] = b[ prop ]; + } + return a; +}; + +// ----- modulo ----- // + +utils.modulo = function( num, div ) { + return ( ( num % div ) + div ) % div; +}; + +// ----- makeArray ----- // + +// turn element or nodeList into an array +utils.makeArray = function( obj ) { + var ary = []; + if ( Array.isArray( obj ) ) { + // use object if already an array + ary = obj; + } else if ( obj && typeof obj.length == 'number' ) { + // convert nodeList to array + for ( var i=0; i < obj.length; i++ ) { + ary.push( obj[i] ); + } + } else { + // array of single index + ary.push( obj ); + } + return ary; +}; + +// ----- removeFrom ----- // + +utils.removeFrom = function( ary, obj ) { + var index = ary.indexOf( obj ); + if ( index != -1 ) { + ary.splice( index, 1 ); + } +}; + +// ----- getParent ----- // + +utils.getParent = function( elem, selector ) { + while ( elem != document.body ) { + elem = elem.parentNode; + if ( matchesSelector( elem, selector ) ) { + return elem; + } + } +}; + +// ----- getQueryElement ----- // + +// use element as selector string +utils.getQueryElement = function( elem ) { + if ( typeof elem == 'string' ) { + return document.querySelector( elem ); + } + return elem; +}; + +// ----- handleEvent ----- // + +// enable .ontype to trigger from .addEventListener( elem, 'type' ) +utils.handleEvent = function( event ) { + var method = 'on' + event.type; + if ( this[ method ] ) { + this[ method ]( event ); + } +}; + +// ----- filterFindElements ----- // + +utils.filterFindElements = function( elems, selector ) { + // make array of elems + elems = utils.makeArray( elems ); + var ffElems = []; + + elems.forEach( function( elem ) { + // check that elem is an actual element + if ( !( elem instanceof HTMLElement ) ) { + return; + } + // add elem if no selector + if ( !selector ) { + ffElems.push( elem ); + return; + } + // filter & find items if we have a selector + // filter + if ( matchesSelector( elem, selector ) ) { + ffElems.push( elem ); + } + // find children + var childElems = elem.querySelectorAll( selector ); + // concat childElems to filterFound array + for ( var i=0; i < childElems.length; i++ ) { + ffElems.push( childElems[i] ); + } + }); + + return ffElems; +}; + +// ----- debounceMethod ----- // + +utils.debounceMethod = function( _class, methodName, threshold ) { + // original method + var method = _class.prototype[ methodName ]; + var timeoutName = methodName + 'Timeout'; + + _class.prototype[ methodName ] = function() { + var timeout = this[ timeoutName ]; + if ( timeout ) { + clearTimeout( timeout ); + } + var args = arguments; + + var _this = this; + this[ timeoutName ] = setTimeout( function() { + method.apply( _this, args ); + delete _this[ timeoutName ]; + }, threshold || 100 ); + }; +}; + +// ----- docReady ----- // + +utils.docReady = function( callback ) { + var readyState = document.readyState; + if ( readyState == 'complete' || readyState == 'interactive' ) { + // do async to allow for other scripts to run. metafizzy/flickity#441 + setTimeout( callback ); + } else { + document.addEventListener( 'DOMContentLoaded', callback ); + } +}; + +// ----- htmlInit ----- // + +// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/ +utils.toDashed = function( str ) { + return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) { + return $1 + '-' + $2; + }).toLowerCase(); +}; + +var console = window.console; +/** + * allow user to initialize classes via [data-namespace] or .js-namespace class + * htmlInit( Widget, 'widgetName' ) + * options are parsed from data-namespace-options + */ +utils.htmlInit = function( WidgetClass, namespace ) { + utils.docReady( function() { + var dashedNamespace = utils.toDashed( namespace ); + var dataAttr = 'data-' + dashedNamespace; + var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' ); + var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace ); + var elems = utils.makeArray( dataAttrElems ) + .concat( utils.makeArray( jsDashElems ) ); + var dataOptionsAttr = dataAttr + '-options'; + var jQuery = window.jQuery; + + elems.forEach( function( elem ) { + var attr = elem.getAttribute( dataAttr ) || + elem.getAttribute( dataOptionsAttr ); + var options; + try { + options = attr && JSON.parse( attr ); + } catch ( error ) { + // log error, do not initialize + if ( console ) { + console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className + + ': ' + error ); + } + return; + } + // initialize + var instance = new WidgetClass( elem, options ); + // make available via $().data('namespace') + if ( jQuery ) { + jQuery.data( elem, namespace, instance ); + } + }); + + }); +}; + +// ----- ----- // + +return utils; + +})); + +/** + * Outlayer Item + */ + +( function( window, factory ) { + // universal module definition + /* jshint strict: false */ /* globals define, module, require */ + if ( typeof define == 'function' && define.amd ) { + // AMD - RequireJS + define( 'outlayer/item',[ + 'ev-emitter/ev-emitter', + 'get-size/get-size' + ], + factory + ); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS - Browserify, Webpack + module.exports = factory( + require('ev-emitter'), + require('get-size') + ); + } else { + // browser global + window.Outlayer = {}; + window.Outlayer.Item = factory( + window.EvEmitter, + window.getSize + ); + } + +}( window, function factory( EvEmitter, getSize ) { +'use strict'; + +// ----- helpers ----- // + +function isEmptyObj( obj ) { + for ( var prop in obj ) { + return false; + } + prop = null; + return true; +} + +// -------------------------- CSS3 support -------------------------- // + + +var docElemStyle = document.documentElement.style; + +var transitionProperty = typeof docElemStyle.transition == 'string' ? + 'transition' : 'WebkitTransition'; +var transformProperty = typeof docElemStyle.transform == 'string' ? + 'transform' : 'WebkitTransform'; + +var transitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + transition: 'transitionend' +}[ transitionProperty ]; + +// cache all vendor properties that could have vendor prefix +var vendorProperties = { + transform: transformProperty, + transition: transitionProperty, + transitionDuration: transitionProperty + 'Duration', + transitionProperty: transitionProperty + 'Property', + transitionDelay: transitionProperty + 'Delay' +}; + +// -------------------------- Item -------------------------- // + +function Item( element, layout ) { + if ( !element ) { + return; + } + + this.element = element; + // parent layout class, i.e. Masonry, Isotope, or Packery + this.layout = layout; + this.position = { + x: 0, + y: 0 + }; + + this._create(); +} + +// inherit EvEmitter +var proto = Item.prototype = Object.create( EvEmitter.prototype ); +proto.constructor = Item; + +proto._create = function() { + // transition objects + this._transn = { + ingProperties: {}, + clean: {}, + onEnd: {} + }; + + this.css({ + position: 'absolute' + }); +}; + +// trigger specified handler for event type +proto.handleEvent = function( event ) { + var method = 'on' + event.type; + if ( this[ method ] ) { + this[ method ]( event ); + } +}; + +proto.getSize = function() { + this.size = getSize( this.element ); +}; + +/** + * apply CSS styles to element + * @param {Object} style + */ +proto.css = function( style ) { + var elemStyle = this.element.style; + + for ( var prop in style ) { + // use vendor property if available + var supportedProp = vendorProperties[ prop ] || prop; + elemStyle[ supportedProp ] = style[ prop ]; + } +}; + + // measure position, and sets it +proto.getPosition = function() { + var style = getComputedStyle( this.element ); + var isOriginLeft = this.layout._getOption('originLeft'); + var isOriginTop = this.layout._getOption('originTop'); + var xValue = style[ isOriginLeft ? 'left' : 'right' ]; + var yValue = style[ isOriginTop ? 'top' : 'bottom' ]; + // convert percent to pixels + var layoutSize = this.layout.size; + var x = xValue.indexOf('%') != -1 ? + ( parseFloat( xValue ) / 100 ) * layoutSize.width : parseInt( xValue, 10 ); + var y = yValue.indexOf('%') != -1 ? + ( parseFloat( yValue ) / 100 ) * layoutSize.height : parseInt( yValue, 10 ); + + // clean up 'auto' or other non-integer values + x = isNaN( x ) ? 0 : x; + y = isNaN( y ) ? 0 : y; + // remove padding from measurement + x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight; + y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom; + + this.position.x = x; + this.position.y = y; +}; + +// set settled position, apply padding +proto.layoutPosition = function() { + var layoutSize = this.layout.size; + var style = {}; + var isOriginLeft = this.layout._getOption('originLeft'); + var isOriginTop = this.layout._getOption('originTop'); + + // x + var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight'; + var xProperty = isOriginLeft ? 'left' : 'right'; + var xResetProperty = isOriginLeft ? 'right' : 'left'; + + var x = this.position.x + layoutSize[ xPadding ]; + // set in percentage or pixels + style[ xProperty ] = this.getXValue( x ); + // reset other property + style[ xResetProperty ] = ''; + + // y + var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom'; + var yProperty = isOriginTop ? 'top' : 'bottom'; + var yResetProperty = isOriginTop ? 'bottom' : 'top'; + + var y = this.position.y + layoutSize[ yPadding ]; + // set in percentage or pixels + style[ yProperty ] = this.getYValue( y ); + // reset other property + style[ yResetProperty ] = ''; + + this.css( style ); + this.emitEvent( 'layout', [ this ] ); +}; + +proto.getXValue = function( x ) { + var isHorizontal = this.layout._getOption('horizontal'); + return this.layout.options.percentPosition && !isHorizontal ? + ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px'; +}; + +proto.getYValue = function( y ) { + var isHorizontal = this.layout._getOption('horizontal'); + return this.layout.options.percentPosition && isHorizontal ? + ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px'; +}; + +proto._transitionTo = function( x, y ) { + this.getPosition(); + // get current x & y from top/left + var curX = this.position.x; + var curY = this.position.y; + + var compareX = parseInt( x, 10 ); + var compareY = parseInt( y, 10 ); + var didNotMove = compareX === this.position.x && compareY === this.position.y; + + // save end position + this.setPosition( x, y ); + + // if did not move and not transitioning, just go to layout + if ( didNotMove && !this.isTransitioning ) { + this.layoutPosition(); + return; + } + + var transX = x - curX; + var transY = y - curY; + var transitionStyle = {}; + transitionStyle.transform = this.getTranslate( transX, transY ); + + this.transition({ + to: transitionStyle, + onTransitionEnd: { + transform: this.layoutPosition + }, + isCleaning: true + }); +}; + +proto.getTranslate = function( x, y ) { + // flip cooridinates if origin on right or bottom + var isOriginLeft = this.layout._getOption('originLeft'); + var isOriginTop = this.layout._getOption('originTop'); + x = isOriginLeft ? x : -x; + y = isOriginTop ? y : -y; + return 'translate3d(' + x + 'px, ' + y + 'px, 0)'; +}; + +// non transition + transform support +proto.goTo = function( x, y ) { + this.setPosition( x, y ); + this.layoutPosition(); +}; + +proto.moveTo = proto._transitionTo; + +proto.setPosition = function( x, y ) { + this.position.x = parseInt( x, 10 ); + this.position.y = parseInt( y, 10 ); +}; + +// ----- transition ----- // + +/** + * @param {Object} style - CSS + * @param {Function} onTransitionEnd + */ + +// non transition, just trigger callback +proto._nonTransition = function( args ) { + this.css( args.to ); + if ( args.isCleaning ) { + this._removeStyles( args.to ); + } + for ( var prop in args.onTransitionEnd ) { + args.onTransitionEnd[ prop ].call( this ); + } +}; + +/** + * proper transition + * @param {Object} args - arguments + * @param {Object} to - style to transition to + * @param {Object} from - style to start transition from + * @param {Boolean} isCleaning - removes transition styles after transition + * @param {Function} onTransitionEnd - callback + */ +proto.transition = function( args ) { + // redirect to nonTransition if no transition duration + if ( !parseFloat( this.layout.options.transitionDuration ) ) { + this._nonTransition( args ); + return; + } + + var _transition = this._transn; + // keep track of onTransitionEnd callback by css property + for ( var prop in args.onTransitionEnd ) { + _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ]; + } + // keep track of properties that are transitioning + for ( prop in args.to ) { + _transition.ingProperties[ prop ] = true; + // keep track of properties to clean up when transition is done + if ( args.isCleaning ) { + _transition.clean[ prop ] = true; + } + } + + // set from styles + if ( args.from ) { + this.css( args.from ); + // force redraw. http://blog.alexmaccaw.com/css-transitions + var h = this.element.offsetHeight; + // hack for JSHint to hush about unused var + h = null; + } + // enable transition + this.enableTransition( args.to ); + // set styles that are transitioning + this.css( args.to ); + + this.isTransitioning = true; + +}; + +// dash before all cap letters, including first for +// WebkitTransform => -webkit-transform +function toDashedAll( str ) { + return str.replace( /([A-Z])/g, function( $1 ) { + return '-' + $1.toLowerCase(); + }); +} + +var transitionProps = 'opacity,' + toDashedAll( transformProperty ); + +proto.enableTransition = function(/* style */) { + // HACK changing transitionProperty during a transition + // will cause transition to jump + if ( this.isTransitioning ) { + return; + } + + // make `transition: foo, bar, baz` from style object + // HACK un-comment this when enableTransition can work + // while a transition is happening + // var transitionValues = []; + // for ( var prop in style ) { + // // dash-ify camelCased properties like WebkitTransition + // prop = vendorProperties[ prop ] || prop; + // transitionValues.push( toDashedAll( prop ) ); + // } + // munge number to millisecond, to match stagger + var duration = this.layout.options.transitionDuration; + duration = typeof duration == 'number' ? duration + 'ms' : duration; + // enable transition styles + this.css({ + transitionProperty: transitionProps, + transitionDuration: duration, + transitionDelay: this.staggerDelay || 0 + }); + // listen for transition end event + this.element.addEventListener( transitionEndEvent, this, false ); +}; + +// ----- events ----- // + +proto.onwebkitTransitionEnd = function( event ) { + this.ontransitionend( event ); +}; + +proto.onotransitionend = function( event ) { + this.ontransitionend( event ); +}; + +// properties that I munge to make my life easier +var dashedVendorProperties = { + '-webkit-transform': 'transform' +}; + +proto.ontransitionend = function( event ) { + // disregard bubbled events from children + if ( event.target !== this.element ) { + return; + } + var _transition = this._transn; + // get property name of transitioned property, convert to prefix-free + var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName; + + // remove property that has completed transitioning + delete _transition.ingProperties[ propertyName ]; + // check if any properties are still transitioning + if ( isEmptyObj( _transition.ingProperties ) ) { + // all properties have completed transitioning + this.disableTransition(); + } + // clean style + if ( propertyName in _transition.clean ) { + // clean up style + this.element.style[ event.propertyName ] = ''; + delete _transition.clean[ propertyName ]; + } + // trigger onTransitionEnd callback + if ( propertyName in _transition.onEnd ) { + var onTransitionEnd = _transition.onEnd[ propertyName ]; + onTransitionEnd.call( this ); + delete _transition.onEnd[ propertyName ]; + } + + this.emitEvent( 'transitionEnd', [ this ] ); +}; + +proto.disableTransition = function() { + this.removeTransitionStyles(); + this.element.removeEventListener( transitionEndEvent, this, false ); + this.isTransitioning = false; +}; + +/** + * removes style property from element + * @param {Object} style +**/ +proto._removeStyles = function( style ) { + // clean up transition styles + var cleanStyle = {}; + for ( var prop in style ) { + cleanStyle[ prop ] = ''; + } + this.css( cleanStyle ); +}; + +var cleanTransitionStyle = { + transitionProperty: '', + transitionDuration: '', + transitionDelay: '' +}; + +proto.removeTransitionStyles = function() { + // remove transition + this.css( cleanTransitionStyle ); +}; + +// ----- stagger ----- // + +proto.stagger = function( delay ) { + delay = isNaN( delay ) ? 0 : delay; + this.staggerDelay = delay + 'ms'; +}; + +// ----- show/hide/remove ----- // + +// remove element from DOM +proto.removeElem = function() { + this.element.parentNode.removeChild( this.element ); + // remove display: none + this.css({ display: '' }); + this.emitEvent( 'remove', [ this ] ); +}; + +proto.remove = function() { + // just remove element if no transition support or no transition + if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) { + this.removeElem(); + return; + } + + // start transition + this.once( 'transitionEnd', function() { + this.removeElem(); + }); + this.hide(); +}; + +proto.reveal = function() { + delete this.isHidden; + // remove display: none + this.css({ display: '' }); + + var options = this.layout.options; + + var onTransitionEnd = {}; + var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle'); + onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd; + + this.transition({ + from: options.hiddenStyle, + to: options.visibleStyle, + isCleaning: true, + onTransitionEnd: onTransitionEnd + }); +}; + +proto.onRevealTransitionEnd = function() { + // check if still visible + // during transition, item may have been hidden + if ( !this.isHidden ) { + this.emitEvent('reveal'); + } +}; + +/** + * get style property use for hide/reveal transition end + * @param {String} styleProperty - hiddenStyle/visibleStyle + * @returns {String} + */ +proto.getHideRevealTransitionEndProperty = function( styleProperty ) { + var optionStyle = this.layout.options[ styleProperty ]; + // use opacity + if ( optionStyle.opacity ) { + return 'opacity'; + } + // get first property + for ( var prop in optionStyle ) { + return prop; + } +}; + +proto.hide = function() { + // set flag + this.isHidden = true; + // remove display: none + this.css({ display: '' }); + + var options = this.layout.options; + + var onTransitionEnd = {}; + var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle'); + onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd; + + this.transition({ + from: options.visibleStyle, + to: options.hiddenStyle, + // keep hidden stuff hidden + isCleaning: true, + onTransitionEnd: onTransitionEnd + }); +}; + +proto.onHideTransitionEnd = function() { + // check if still hidden + // during transition, item may have been un-hidden + if ( this.isHidden ) { + this.css({ display: 'none' }); + this.emitEvent('hide'); + } +}; + +proto.destroy = function() { + this.css({ + position: '', + left: '', + right: '', + top: '', + bottom: '', + transition: '', + transform: '' + }); +}; + +return Item; + +})); + +/*! + * Outlayer v2.1.0 + * the brains and guts of a layout library + * MIT license + */ + +( function( window, factory ) { + 'use strict'; + // universal module definition + /* jshint strict: false */ /* globals define, module, require */ + if ( typeof define == 'function' && define.amd ) { + // AMD - RequireJS + define( 'outlayer/outlayer',[ + 'ev-emitter/ev-emitter', + 'get-size/get-size', + 'fizzy-ui-utils/utils', + './item' + ], + function( EvEmitter, getSize, utils, Item ) { + return factory( window, EvEmitter, getSize, utils, Item); + } + ); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS - Browserify, Webpack + module.exports = factory( + window, + require('ev-emitter'), + require('get-size'), + require('fizzy-ui-utils'), + require('./item') + ); + } else { + // browser global + window.Outlayer = factory( + window, + window.EvEmitter, + window.getSize, + window.fizzyUIUtils, + window.Outlayer.Item + ); + } + +}( window, function factory( window, EvEmitter, getSize, utils, Item ) { +'use strict'; + +// ----- vars ----- // + +var console = window.console; +var jQuery = window.jQuery; +var noop = function() {}; + +// -------------------------- Outlayer -------------------------- // + +// globally unique identifiers +var GUID = 0; +// internal store of all Outlayer intances +var instances = {}; + + +/** + * @param {Element, String} element + * @param {Object} options + * @constructor + */ +function Outlayer( element, options ) { + var queryElement = utils.getQueryElement( element ); + if ( !queryElement ) { + if ( console ) { + console.error( 'Bad element for ' + this.constructor.namespace + + ': ' + ( queryElement || element ) ); + } + return; + } + this.element = queryElement; + // add jQuery + if ( jQuery ) { + this.$element = jQuery( this.element ); + } + + // options + this.options = utils.extend( {}, this.constructor.defaults ); + this.option( options ); + + // add id for Outlayer.getFromElement + var id = ++GUID; + this.element.outlayerGUID = id; // expando + instances[ id ] = this; // associate via id + + // kick it off + this._create(); + + var isInitLayout = this._getOption('initLayout'); + if ( isInitLayout ) { + this.layout(); + } +} + +// settings are for internal use only +Outlayer.namespace = 'outlayer'; +Outlayer.Item = Item; + +// default options +Outlayer.defaults = { + containerStyle: { + position: 'relative' + }, + initLayout: true, + originLeft: true, + originTop: true, + resize: true, + resizeContainer: true, + // item options + transitionDuration: '0.4s', + hiddenStyle: { + opacity: 0, + transform: 'scale(0.001)' + }, + visibleStyle: { + opacity: 1, + transform: 'scale(1)' + } +}; + +var proto = Outlayer.prototype; +// inherit EvEmitter +utils.extend( proto, EvEmitter.prototype ); + +/** + * set options + * @param {Object} opts + */ +proto.option = function( opts ) { + utils.extend( this.options, opts ); +}; + +/** + * get backwards compatible option value, check old name + */ +proto._getOption = function( option ) { + var oldOption = this.constructor.compatOptions[ option ]; + return oldOption && this.options[ oldOption ] !== undefined ? + this.options[ oldOption ] : this.options[ option ]; +}; + +Outlayer.compatOptions = { + // currentName: oldName + initLayout: 'isInitLayout', + horizontal: 'isHorizontal', + layoutInstant: 'isLayoutInstant', + originLeft: 'isOriginLeft', + originTop: 'isOriginTop', + resize: 'isResizeBound', + resizeContainer: 'isResizingContainer' +}; + +proto._create = function() { + // get items from children + this.reloadItems(); + // elements that affect layout, but are not laid out + this.stamps = []; + this.stamp( this.options.stamp ); + // set container style + utils.extend( this.element.style, this.options.containerStyle ); + + // bind resize method + var canBindResize = this._getOption('resize'); + if ( canBindResize ) { + this.bindResize(); + } +}; + +// goes through all children again and gets bricks in proper order +proto.reloadItems = function() { + // collection of item elements + this.items = this._itemize( this.element.children ); +}; + + +/** + * turn elements into Outlayer.Items to be used in layout + * @param {Array or NodeList or HTMLElement} elems + * @returns {Array} items - collection of new Outlayer Items + */ +proto._itemize = function( elems ) { + + var itemElems = this._filterFindItemElements( elems ); + var Item = this.constructor.Item; + + // create new Outlayer Items for collection + var items = []; + for ( var i=0; i < itemElems.length; i++ ) { + var elem = itemElems[i]; + var item = new Item( elem, this ); + items.push( item ); + } + + return items; +}; + +/** + * get item elements to be used in layout + * @param {Array or NodeList or HTMLElement} elems + * @returns {Array} items - item elements + */ +proto._filterFindItemElements = function( elems ) { + return utils.filterFindElements( elems, this.options.itemSelector ); +}; + +/** + * getter method for getting item elements + * @returns {Array} elems - collection of item elements + */ +proto.getItemElements = function() { + return this.items.map( function( item ) { + return item.element; + }); +}; + +// ----- init & layout ----- // + +/** + * lays out all items + */ +proto.layout = function() { + this._resetLayout(); + this._manageStamps(); + + // don't animate first layout + var layoutInstant = this._getOption('layoutInstant'); + var isInstant = layoutInstant !== undefined ? + layoutInstant : !this._isLayoutInited; + this.layoutItems( this.items, isInstant ); + + // flag for initalized + this._isLayoutInited = true; +}; + +// _init is alias for layout +proto._init = proto.layout; + +/** + * logic before any new layout + */ +proto._resetLayout = function() { + this.getSize(); +}; + + +proto.getSize = function() { + this.size = getSize( this.element ); +}; + +/** + * get measurement from option, for columnWidth, rowHeight, gutter + * if option is String -> get element from selector string, & get size of element + * if option is Element -> get size of element + * else use option as a number + * + * @param {String} measurement + * @param {String} size - width or height + * @private + */ +proto._getMeasurement = function( measurement, size ) { + var option = this.options[ measurement ]; + var elem; + if ( !option ) { + // default to 0 + this[ measurement ] = 0; + } else { + // use option as an element + if ( typeof option == 'string' ) { + elem = this.element.querySelector( option ); + } else if ( option instanceof HTMLElement ) { + elem = option; + } + // use size of element, if element + this[ measurement ] = elem ? getSize( elem )[ size ] : option; + } +}; + +/** + * layout a collection of item elements + * @api public + */ +proto.layoutItems = function( items, isInstant ) { + items = this._getItemsForLayout( items ); + + this._layoutItems( items, isInstant ); + + this._postLayout(); +}; + +/** + * get the items to be laid out + * you may want to skip over some items + * @param {Array} items + * @returns {Array} items + */ +proto._getItemsForLayout = function( items ) { + return items.filter( function( item ) { + return !item.isIgnored; + }); +}; + +/** + * layout items + * @param {Array} items + * @param {Boolean} isInstant + */ +proto._layoutItems = function( items, isInstant ) { + this._emitCompleteOnItems( 'layout', items ); + + if ( !items || !items.length ) { + // no items, emit event with empty array + return; + } + + var queue = []; + + items.forEach( function( item ) { + // get x/y object from method + var position = this._getItemLayoutPosition( item ); + // enqueue + position.item = item; + position.isInstant = isInstant || item.isLayoutInstant; + queue.push( position ); + }, this ); + + this._processLayoutQueue( queue ); +}; + +/** + * get item layout position + * @param {Outlayer.Item} item + * @returns {Object} x and y position + */ +proto._getItemLayoutPosition = function( /* item */ ) { + return { + x: 0, + y: 0 + }; +}; + +/** + * iterate over array and position each item + * Reason being - separating this logic prevents 'layout invalidation' + * thx @paul_irish + * @param {Array} queue + */ +proto._processLayoutQueue = function( queue ) { + this.updateStagger(); + queue.forEach( function( obj, i ) { + this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i ); + }, this ); +}; + +// set stagger from option in milliseconds number +proto.updateStagger = function() { + var stagger = this.options.stagger; + if ( stagger === null || stagger === undefined ) { + this.stagger = 0; + return; + } + this.stagger = getMilliseconds( stagger ); + return this.stagger; +}; + +/** + * Sets position of item in DOM + * @param {Outlayer.Item} item + * @param {Number} x - horizontal position + * @param {Number} y - vertical position + * @param {Boolean} isInstant - disables transitions + */ +proto._positionItem = function( item, x, y, isInstant, i ) { + if ( isInstant ) { + // if not transition, just set CSS + item.goTo( x, y ); + } else { + item.stagger( i * this.stagger ); + item.moveTo( x, y ); + } +}; + +/** + * Any logic you want to do after each layout, + * i.e. size the container + */ +proto._postLayout = function() { + this.resizeContainer(); +}; + +proto.resizeContainer = function() { + var isResizingContainer = this._getOption('resizeContainer'); + if ( !isResizingContainer ) { + return; + } + var size = this._getContainerSize(); + if ( size ) { + this._setContainerMeasure( size.width, true ); + this._setContainerMeasure( size.height, false ); + } +}; + +/** + * Sets width or height of container if returned + * @returns {Object} size + * @param {Number} width + * @param {Number} height + */ +proto._getContainerSize = noop; + +/** + * @param {Number} measure - size of width or height + * @param {Boolean} isWidth + */ +proto._setContainerMeasure = function( measure, isWidth ) { + if ( measure === undefined ) { + return; + } + + var elemSize = this.size; + // add padding and border width if border box + if ( elemSize.isBorderBox ) { + measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight + + elemSize.borderLeftWidth + elemSize.borderRightWidth : + elemSize.paddingBottom + elemSize.paddingTop + + elemSize.borderTopWidth + elemSize.borderBottomWidth; + } + + measure = Math.max( measure, 0 ); + this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px'; +}; + +/** + * emit eventComplete on a collection of items events + * @param {String} eventName + * @param {Array} items - Outlayer.Items + */ +proto._emitCompleteOnItems = function( eventName, items ) { + var _this = this; + function onComplete() { + _this.dispatchEvent( eventName + 'Complete', null, [ items ] ); + } + + var count = items.length; + if ( !items || !count ) { + onComplete(); + return; + } + + var doneCount = 0; + function tick() { + doneCount++; + if ( doneCount == count ) { + onComplete(); + } + } + + // bind callback + items.forEach( function( item ) { + item.once( eventName, tick ); + }); +}; + +/** + * emits events via EvEmitter and jQuery events + * @param {String} type - name of event + * @param {Event} event - original event + * @param {Array} args - extra arguments + */ +proto.dispatchEvent = function( type, event, args ) { + // add original event to arguments + var emitArgs = event ? [ event ].concat( args ) : args; + this.emitEvent( type, emitArgs ); + + if ( jQuery ) { + // set this.$element + this.$element = this.$element || jQuery( this.element ); + if ( event ) { + // create jQuery event + var $event = jQuery.Event( event ); + $event.type = type; + this.$element.trigger( $event, args ); + } else { + // just trigger with type if no event available + this.$element.trigger( type, args ); + } + } +}; + +// -------------------------- ignore & stamps -------------------------- // + + +/** + * keep item in collection, but do not lay it out + * ignored items do not get skipped in layout + * @param {Element} elem + */ +proto.ignore = function( elem ) { + var item = this.getItem( elem ); + if ( item ) { + item.isIgnored = true; + } +}; + +/** + * return item to layout collection + * @param {Element} elem + */ +proto.unignore = function( elem ) { + var item = this.getItem( elem ); + if ( item ) { + delete item.isIgnored; + } +}; + +/** + * adds elements to stamps + * @param {NodeList, Array, Element, or String} elems + */ +proto.stamp = function( elems ) { + elems = this._find( elems ); + if ( !elems ) { + return; + } + + this.stamps = this.stamps.concat( elems ); + // ignore + elems.forEach( this.ignore, this ); +}; + +/** + * removes elements to stamps + * @param {NodeList, Array, or Element} elems + */ +proto.unstamp = function( elems ) { + elems = this._find( elems ); + if ( !elems ){ + return; + } + + elems.forEach( function( elem ) { + // filter out removed stamp elements + utils.removeFrom( this.stamps, elem ); + this.unignore( elem ); + }, this ); +}; + +/** + * finds child elements + * @param {NodeList, Array, Element, or String} elems + * @returns {Array} elems + */ +proto._find = function( elems ) { + if ( !elems ) { + return; + } + // if string, use argument as selector string + if ( typeof elems == 'string' ) { + elems = this.element.querySelectorAll( elems ); + } + elems = utils.makeArray( elems ); + return elems; +}; + +proto._manageStamps = function() { + if ( !this.stamps || !this.stamps.length ) { + return; + } + + this._getBoundingRect(); + + this.stamps.forEach( this._manageStamp, this ); +}; + +// update boundingLeft / Top +proto._getBoundingRect = function() { + // get bounding rect for container element + var boundingRect = this.element.getBoundingClientRect(); + var size = this.size; + this._boundingRect = { + left: boundingRect.left + size.paddingLeft + size.borderLeftWidth, + top: boundingRect.top + size.paddingTop + size.borderTopWidth, + right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ), + bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth ) + }; +}; + +/** + * @param {Element} stamp +**/ +proto._manageStamp = noop; + +/** + * get x/y position of element relative to container element + * @param {Element} elem + * @returns {Object} offset - has left, top, right, bottom + */ +proto._getElementOffset = function( elem ) { + var boundingRect = elem.getBoundingClientRect(); + var thisRect = this._boundingRect; + var size = getSize( elem ); + var offset = { + left: boundingRect.left - thisRect.left - size.marginLeft, + top: boundingRect.top - thisRect.top - size.marginTop, + right: thisRect.right - boundingRect.right - size.marginRight, + bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom + }; + return offset; +}; + +// -------------------------- resize -------------------------- // + +// enable event handlers for listeners +// i.e. resize -> onresize +proto.handleEvent = utils.handleEvent; + +/** + * Bind layout to window resizing + */ +proto.bindResize = function() { + window.addEventListener( 'resize', this ); + this.isResizeBound = true; +}; + +/** + * Unbind layout to window resizing + */ +proto.unbindResize = function() { + window.removeEventListener( 'resize', this ); + this.isResizeBound = false; +}; + +proto.onresize = function() { + this.resize(); +}; + +utils.debounceMethod( Outlayer, 'onresize', 100 ); + +proto.resize = function() { + // don't trigger if size did not change + // or if resize was unbound. See #9 + if ( !this.isResizeBound || !this.needsResizeLayout() ) { + return; + } + + this.layout(); +}; + +/** + * check if layout is needed post layout + * @returns Boolean + */ +proto.needsResizeLayout = function() { + var size = getSize( this.element ); + // check that this.size and size are there + // IE8 triggers resize on body size change, so they might not be + var hasSizes = this.size && size; + return hasSizes && size.innerWidth !== this.size.innerWidth; +}; + +// -------------------------- methods -------------------------- // + +/** + * add items to Outlayer instance + * @param {Array or NodeList or Element} elems + * @returns {Array} items - Outlayer.Items +**/ +proto.addItems = function( elems ) { + var items = this._itemize( elems ); + // add items to collection + if ( items.length ) { + this.items = this.items.concat( items ); + } + return items; +}; + +/** + * Layout newly-appended item elements + * @param {Array or NodeList or Element} elems + */ +proto.appended = function( elems ) { + var items = this.addItems( elems ); + if ( !items.length ) { + return; + } + // layout and reveal just the new items + this.layoutItems( items, true ); + this.reveal( items ); +}; + +/** + * Layout prepended elements + * @param {Array or NodeList or Element} elems + */ +proto.prepended = function( elems ) { + var items = this._itemize( elems ); + if ( !items.length ) { + return; + } + // add items to beginning of collection + var previousItems = this.items.slice(0); + this.items = items.concat( previousItems ); + // start new layout + this._resetLayout(); + this._manageStamps(); + // layout new stuff without transition + this.layoutItems( items, true ); + this.reveal( items ); + // layout previous items + this.layoutItems( previousItems ); +}; + +/** + * reveal a collection of items + * @param {Array of Outlayer.Items} items + */ +proto.reveal = function( items ) { + this._emitCompleteOnItems( 'reveal', items ); + if ( !items || !items.length ) { + return; + } + var stagger = this.updateStagger(); + items.forEach( function( item, i ) { + item.stagger( i * stagger ); + item.reveal(); + }); +}; + +/** + * hide a collection of items + * @param {Array of Outlayer.Items} items + */ +proto.hide = function( items ) { + this._emitCompleteOnItems( 'hide', items ); + if ( !items || !items.length ) { + return; + } + var stagger = this.updateStagger(); + items.forEach( function( item, i ) { + item.stagger( i * stagger ); + item.hide(); + }); +}; + +/** + * reveal item elements + * @param {Array}, {Element}, {NodeList} items + */ +proto.revealItemElements = function( elems ) { + var items = this.getItems( elems ); + this.reveal( items ); +}; + +/** + * hide item elements + * @param {Array}, {Element}, {NodeList} items + */ +proto.hideItemElements = function( elems ) { + var items = this.getItems( elems ); + this.hide( items ); +}; + +/** + * get Outlayer.Item, given an Element + * @param {Element} elem + * @param {Function} callback + * @returns {Outlayer.Item} item + */ +proto.getItem = function( elem ) { + // loop through items to get the one that matches + for ( var i=0; i < this.items.length; i++ ) { + var item = this.items[i]; + if ( item.element == elem ) { + // return item + return item; + } + } +}; + +/** + * get collection of Outlayer.Items, given Elements + * @param {Array} elems + * @returns {Array} items - Outlayer.Items + */ +proto.getItems = function( elems ) { + elems = utils.makeArray( elems ); + var items = []; + elems.forEach( function( elem ) { + var item = this.getItem( elem ); + if ( item ) { + items.push( item ); + } + }, this ); + + return items; +}; + +/** + * remove element(s) from instance and DOM + * @param {Array or NodeList or Element} elems + */ +proto.remove = function( elems ) { + var removeItems = this.getItems( elems ); + + this._emitCompleteOnItems( 'remove', removeItems ); + + // bail if no items to remove + if ( !removeItems || !removeItems.length ) { + return; + } + + removeItems.forEach( function( item ) { + item.remove(); + // remove item from collection + utils.removeFrom( this.items, item ); + }, this ); +}; + +// ----- destroy ----- // + +// remove and disable Outlayer instance +proto.destroy = function() { + // clean up dynamic styles + var style = this.element.style; + style.height = ''; + style.position = ''; + style.width = ''; + // destroy items + this.items.forEach( function( item ) { + item.destroy(); + }); + + this.unbindResize(); + + var id = this.element.outlayerGUID; + delete instances[ id ]; // remove reference to instance by id + delete this.element.outlayerGUID; + // remove data for jQuery + if ( jQuery ) { + jQuery.removeData( this.element, this.constructor.namespace ); + } + +}; + +// -------------------------- data -------------------------- // + +/** + * get Outlayer instance from element + * @param {Element} elem + * @returns {Outlayer} + */ +Outlayer.data = function( elem ) { + elem = utils.getQueryElement( elem ); + var id = elem && elem.outlayerGUID; + return id && instances[ id ]; +}; + + +// -------------------------- create Outlayer class -------------------------- // + +/** + * create a layout class + * @param {String} namespace + */ +Outlayer.create = function( namespace, options ) { + // sub-class Outlayer + var Layout = subclass( Outlayer ); + // apply new options and compatOptions + Layout.defaults = utils.extend( {}, Outlayer.defaults ); + utils.extend( Layout.defaults, options ); + Layout.compatOptions = utils.extend( {}, Outlayer.compatOptions ); + + Layout.namespace = namespace; + + Layout.data = Outlayer.data; + + // sub-class Item + Layout.Item = subclass( Item ); + + // -------------------------- declarative -------------------------- // + + utils.htmlInit( Layout, namespace ); + + // -------------------------- jQuery bridge -------------------------- // + + // make into jQuery plugin + if ( jQuery && jQuery.bridget ) { + jQuery.bridget( namespace, Layout ); + } + + return Layout; +}; + +function subclass( Parent ) { + function SubClass() { + Parent.apply( this, arguments ); + } + + SubClass.prototype = Object.create( Parent.prototype ); + SubClass.prototype.constructor = SubClass; + + return SubClass; +} + +// ----- helpers ----- // + +// how many milliseconds are in each unit +var msUnits = { + ms: 1, + s: 1000 +}; + +// munge time-like parameter into millisecond number +// '0.4s' -> 40 +function getMilliseconds( time ) { + if ( typeof time == 'number' ) { + return time; + } + var matches = time.match( /(^\d*\.?\d*)(\w*)/ ); + var num = matches && matches[1]; + var unit = matches && matches[2]; + if ( !num.length ) { + return 0; + } + num = parseFloat( num ); + var mult = msUnits[ unit ] || 1; + return num * mult; +} + +// ----- fin ----- // + +// back in global +Outlayer.Item = Item; + +return Outlayer; + +})); + +/** + * Isotope Item +**/ + +( function( window, factory ) { + // universal module definition + /* jshint strict: false */ /*globals define, module, require */ + if ( typeof define == 'function' && define.amd ) { + // AMD + define( 'isotope/js/item',[ + 'outlayer/outlayer' + ], + factory ); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS + module.exports = factory( + require('outlayer') + ); + } else { + // browser global + window.Isotope = window.Isotope || {}; + window.Isotope.Item = factory( + window.Outlayer + ); + } + +}( window, function factory( Outlayer ) { +'use strict'; + +// -------------------------- Item -------------------------- // + +// sub-class Outlayer Item +function Item() { + Outlayer.Item.apply( this, arguments ); +} + +var proto = Item.prototype = Object.create( Outlayer.Item.prototype ); + +var _create = proto._create; +proto._create = function() { + // assign id, used for original-order sorting + this.id = this.layout.itemGUID++; + _create.call( this ); + this.sortData = {}; +}; + +proto.updateSortData = function() { + if ( this.isIgnored ) { + return; + } + // default sorters + this.sortData.id = this.id; + // for backward compatibility + this.sortData['original-order'] = this.id; + this.sortData.random = Math.random(); + // go thru getSortData obj and apply the sorters + var getSortData = this.layout.options.getSortData; + var sorters = this.layout._sorters; + for ( var key in getSortData ) { + var sorter = sorters[ key ]; + this.sortData[ key ] = sorter( this.element, this ); + } +}; + +var _destroy = proto.destroy; +proto.destroy = function() { + // call super + _destroy.apply( this, arguments ); + // reset display, #741 + this.css({ + display: '' + }); +}; + +return Item; + +})); + +/** + * Isotope LayoutMode + */ + +( function( window, factory ) { + // universal module definition + /* jshint strict: false */ /*globals define, module, require */ + if ( typeof define == 'function' && define.amd ) { + // AMD + define( 'isotope/js/layout-mode',[ + 'get-size/get-size', + 'outlayer/outlayer' + ], + factory ); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS + module.exports = factory( + require('get-size'), + require('outlayer') + ); + } else { + // browser global + window.Isotope = window.Isotope || {}; + window.Isotope.LayoutMode = factory( + window.getSize, + window.Outlayer + ); + } + +}( window, function factory( getSize, Outlayer ) { + 'use strict'; + + // layout mode class + function LayoutMode( isotope ) { + this.isotope = isotope; + // link properties + if ( isotope ) { + this.options = isotope.options[ this.namespace ]; + this.element = isotope.element; + this.items = isotope.filteredItems; + this.size = isotope.size; + } + } + + var proto = LayoutMode.prototype; + + /** + * some methods should just defer to default Outlayer method + * and reference the Isotope instance as `this` + **/ + var facadeMethods = [ + '_resetLayout', + '_getItemLayoutPosition', + '_manageStamp', + '_getContainerSize', + '_getElementOffset', + 'needsResizeLayout', + '_getOption' + ]; + + facadeMethods.forEach( function( methodName ) { + proto[ methodName ] = function() { + return Outlayer.prototype[ methodName ].apply( this.isotope, arguments ); + }; + }); + + // ----- ----- // + + // for horizontal layout modes, check vertical size + proto.needsVerticalResizeLayout = function() { + // don't trigger if size did not change + var size = getSize( this.isotope.element ); + // check that this.size and size are there + // IE8 triggers resize on body size change, so they might not be + var hasSizes = this.isotope.size && size; + return hasSizes && size.innerHeight != this.isotope.size.innerHeight; + }; + + // ----- measurements ----- // + + proto._getMeasurement = function() { + this.isotope._getMeasurement.apply( this, arguments ); + }; + + proto.getColumnWidth = function() { + this.getSegmentSize( 'column', 'Width' ); + }; + + proto.getRowHeight = function() { + this.getSegmentSize( 'row', 'Height' ); + }; + + /** + * get columnWidth or rowHeight + * segment: 'column' or 'row' + * size 'Width' or 'Height' + **/ + proto.getSegmentSize = function( segment, size ) { + var segmentName = segment + size; + var outerSize = 'outer' + size; + // columnWidth / outerWidth // rowHeight / outerHeight + this._getMeasurement( segmentName, outerSize ); + // got rowHeight or columnWidth, we can chill + if ( this[ segmentName ] ) { + return; + } + // fall back to item of first element + var firstItemSize = this.getFirstItemSize(); + this[ segmentName ] = firstItemSize && firstItemSize[ outerSize ] || + // or size of container + this.isotope.size[ 'inner' + size ]; + }; + + proto.getFirstItemSize = function() { + var firstItem = this.isotope.filteredItems[0]; + return firstItem && firstItem.element && getSize( firstItem.element ); + }; + + // ----- methods that should reference isotope ----- // + + proto.layout = function() { + this.isotope.layout.apply( this.isotope, arguments ); + }; + + proto.getSize = function() { + this.isotope.getSize(); + this.size = this.isotope.size; + }; + + // -------------------------- create -------------------------- // + + LayoutMode.modes = {}; + + LayoutMode.create = function( namespace, options ) { + + function Mode() { + LayoutMode.apply( this, arguments ); + } + + Mode.prototype = Object.create( proto ); + Mode.prototype.constructor = Mode; + + // default options + if ( options ) { + Mode.options = options; + } + + Mode.prototype.namespace = namespace; + // register in Isotope + LayoutMode.modes[ namespace ] = Mode; + + return Mode; + }; + + return LayoutMode; + +})); + +/*! + * Masonry v4.1.1 + * Cascading grid layout library + * http://masonry.desandro.com + * MIT License + * by David DeSandro + */ + +( function( window, factory ) { + // universal module definition + /* jshint strict: false */ /*globals define, module, require */ + if ( typeof define == 'function' && define.amd ) { + // AMD + define( 'masonry/masonry',[ + 'outlayer/outlayer', + 'get-size/get-size' + ], + factory ); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS + module.exports = factory( + require('outlayer'), + require('get-size') + ); + } else { + // browser global + window.Masonry = factory( + window.Outlayer, + window.getSize + ); + } + +}( window, function factory( Outlayer, getSize ) { + + + +// -------------------------- masonryDefinition -------------------------- // + + // create an Outlayer layout class + var Masonry = Outlayer.create('masonry'); + // isFitWidth -> fitWidth + Masonry.compatOptions.fitWidth = 'isFitWidth'; + + Masonry.prototype._resetLayout = function() { + this.getSize(); + this._getMeasurement( 'columnWidth', 'outerWidth' ); + this._getMeasurement( 'gutter', 'outerWidth' ); + this.measureColumns(); + + // reset column Y + this.colYs = []; + for ( var i=0; i < this.cols; i++ ) { + this.colYs.push( 0 ); + } + + this.maxY = 0; + }; + + Masonry.prototype.measureColumns = function() { + this.getContainerWidth(); + // if columnWidth is 0, default to outerWidth of first item + if ( !this.columnWidth ) { + var firstItem = this.items[0]; + var firstItemElem = firstItem && firstItem.element; + // columnWidth fall back to item of first element + this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth || + // if first elem has no width, default to size of container + this.containerWidth; + } + + var columnWidth = this.columnWidth += this.gutter; + + // calculate columns + var containerWidth = this.containerWidth + this.gutter; + var cols = containerWidth / columnWidth; + // fix rounding errors, typically with gutters + var excess = columnWidth - containerWidth % columnWidth; + // if overshoot is less than a pixel, round up, otherwise floor it + var mathMethod = excess && excess < 1 ? 'round' : 'floor'; + cols = Math[ mathMethod ]( cols ); + this.cols = Math.max( cols, 1 ); + }; + + Masonry.prototype.getContainerWidth = function() { + // container is parent if fit width + var isFitWidth = this._getOption('fitWidth'); + var container = isFitWidth ? this.element.parentNode : this.element; + // check that this.size and size are there + // IE8 triggers resize on body size change, so they might not be + var size = getSize( container ); + this.containerWidth = size && size.innerWidth; + }; + + Masonry.prototype._getItemLayoutPosition = function( item ) { + item.getSize(); + // how many columns does this brick span + var remainder = item.size.outerWidth % this.columnWidth; + var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil'; + // round if off by 1 pixel, otherwise use ceil + var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth ); + colSpan = Math.min( colSpan, this.cols ); + + var colGroup = this._getColGroup( colSpan ); + // get the minimum Y value from the columns + var minimumY = Math.min.apply( Math, colGroup ); + var shortColIndex = colGroup.indexOf( minimumY ); + + // position the brick + var position = { + x: this.columnWidth * shortColIndex, + y: minimumY + }; + + // apply setHeight to necessary columns + var setHeight = minimumY + item.size.outerHeight; + var setSpan = this.cols + 1 - colGroup.length; + for ( var i = 0; i < setSpan; i++ ) { + this.colYs[ shortColIndex + i ] = setHeight; + } + + return position; + }; + + /** + * @param {Number} colSpan - number of columns the element spans + * @returns {Array} colGroup + */ + Masonry.prototype._getColGroup = function( colSpan ) { + if ( colSpan < 2 ) { + // if brick spans only one column, use all the column Ys + return this.colYs; + } + + var colGroup = []; + // how many different places could this brick fit horizontally + var groupCount = this.cols + 1 - colSpan; + // for each group potential horizontal position + for ( var i = 0; i < groupCount; i++ ) { + // make an array of colY values for that one group + var groupColYs = this.colYs.slice( i, i + colSpan ); + // and get the max value of the array + colGroup[i] = Math.max.apply( Math, groupColYs ); + } + return colGroup; + }; + + Masonry.prototype._manageStamp = function( stamp ) { + var stampSize = getSize( stamp ); + var offset = this._getElementOffset( stamp ); + // get the columns that this stamp affects + var isOriginLeft = this._getOption('originLeft'); + var firstX = isOriginLeft ? offset.left : offset.right; + var lastX = firstX + stampSize.outerWidth; + var firstCol = Math.floor( firstX / this.columnWidth ); + firstCol = Math.max( 0, firstCol ); + var lastCol = Math.floor( lastX / this.columnWidth ); + // lastCol should not go over if multiple of columnWidth #425 + lastCol -= lastX % this.columnWidth ? 0 : 1; + lastCol = Math.min( this.cols - 1, lastCol ); + // set colYs to bottom of the stamp + + var isOriginTop = this._getOption('originTop'); + var stampMaxY = ( isOriginTop ? offset.top : offset.bottom ) + + stampSize.outerHeight; + for ( var i = firstCol; i <= lastCol; i++ ) { + this.colYs[i] = Math.max( stampMaxY, this.colYs[i] ); + } + }; + + Masonry.prototype._getContainerSize = function() { + this.maxY = Math.max.apply( Math, this.colYs ); + var size = { + height: this.maxY + }; + + if ( this._getOption('fitWidth') ) { + size.width = this._getContainerFitWidth(); + } + + return size; + }; + + Masonry.prototype._getContainerFitWidth = function() { + var unusedCols = 0; + // count unused columns + var i = this.cols; + while ( --i ) { + if ( this.colYs[i] !== 0 ) { + break; + } + unusedCols++; + } + // fit container to columns that have been used + return ( this.cols - unusedCols ) * this.columnWidth - this.gutter; + }; + + Masonry.prototype.needsResizeLayout = function() { + var previousWidth = this.containerWidth; + this.getContainerWidth(); + return previousWidth != this.containerWidth; + }; + + return Masonry; + +})); + +/*! + * Masonry layout mode + * sub-classes Masonry + * http://masonry.desandro.com + */ + +( function( window, factory ) { + // universal module definition + /* jshint strict: false */ /*globals define, module, require */ + if ( typeof define == 'function' && define.amd ) { + // AMD + define( 'isotope/js/layout-modes/masonry',[ + '../layout-mode', + 'masonry/masonry' + ], + factory ); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS + module.exports = factory( + require('../layout-mode'), + require('masonry-layout') + ); + } else { + // browser global + factory( + window.Isotope.LayoutMode, + window.Masonry + ); + } + +}( window, function factory( LayoutMode, Masonry ) { +'use strict'; + +// -------------------------- masonryDefinition -------------------------- // + + // create an Outlayer layout class + var MasonryMode = LayoutMode.create('masonry'); + + var proto = MasonryMode.prototype; + + var keepModeMethods = { + _getElementOffset: true, + layout: true, + _getMeasurement: true + }; + + // inherit Masonry prototype + for ( var method in Masonry.prototype ) { + // do not inherit mode methods + if ( !keepModeMethods[ method ] ) { + proto[ method ] = Masonry.prototype[ method ]; + } + } + + var measureColumns = proto.measureColumns; + proto.measureColumns = function() { + // set items, used if measuring first item + this.items = this.isotope.filteredItems; + measureColumns.call( this ); + }; + + // point to mode options for fitWidth + var _getOption = proto._getOption; + proto._getOption = function( option ) { + if ( option == 'fitWidth' ) { + return this.options.isFitWidth !== undefined ? + this.options.isFitWidth : this.options.fitWidth; + } + return _getOption.apply( this.isotope, arguments ); + }; + + return MasonryMode; + +})); + +/** + * fitRows layout mode + */ + +( function( window, factory ) { + // universal module definition + /* jshint strict: false */ /*globals define, module, require */ + if ( typeof define == 'function' && define.amd ) { + // AMD + define( 'isotope/js/layout-modes/fit-rows',[ + '../layout-mode' + ], + factory ); + } else if ( typeof exports == 'object' ) { + // CommonJS + module.exports = factory( + require('../layout-mode') + ); + } else { + // browser global + factory( + window.Isotope.LayoutMode + ); + } + +}( window, function factory( LayoutMode ) { +'use strict'; + +var FitRows = LayoutMode.create('fitRows'); + +var proto = FitRows.prototype; + +proto._resetLayout = function() { + this.x = 0; + this.y = 0; + this.maxY = 0; + this._getMeasurement( 'gutter', 'outerWidth' ); +}; + +proto._getItemLayoutPosition = function( item ) { + item.getSize(); + + var itemWidth = item.size.outerWidth + this.gutter; + // if this element cannot fit in the current row + var containerWidth = this.isotope.size.innerWidth + this.gutter; + if ( this.x !== 0 && itemWidth + this.x > containerWidth ) { + this.x = 0; + this.y = this.maxY; + } + + var position = { + x: this.x, + y: this.y + }; + + this.maxY = Math.max( this.maxY, this.y + item.size.outerHeight ); + this.x += itemWidth; + + return position; +}; + +proto._getContainerSize = function() { + return { height: this.maxY }; +}; + +return FitRows; + +})); + +/** + * vertical layout mode + */ + +( function( window, factory ) { + // universal module definition + /* jshint strict: false */ /*globals define, module, require */ + if ( typeof define == 'function' && define.amd ) { + // AMD + define( 'isotope/js/layout-modes/vertical',[ + '../layout-mode' + ], + factory ); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS + module.exports = factory( + require('../layout-mode') + ); + } else { + // browser global + factory( + window.Isotope.LayoutMode + ); + } + +}( window, function factory( LayoutMode ) { +'use strict'; + +var Vertical = LayoutMode.create( 'vertical', { + horizontalAlignment: 0 +}); + +var proto = Vertical.prototype; + +proto._resetLayout = function() { + this.y = 0; +}; + +proto._getItemLayoutPosition = function( item ) { + item.getSize(); + var x = ( this.isotope.size.innerWidth - item.size.outerWidth ) * + this.options.horizontalAlignment; + var y = this.y; + this.y += item.size.outerHeight; + return { x: x, y: y }; +}; + +proto._getContainerSize = function() { + return { height: this.y }; +}; + +return Vertical; + +})); + +/*! + * Isotope v3.0.2 + * + * Licensed GPLv3 for open source use + * or Isotope Commercial License for commercial use + * + * http://isotope.metafizzy.co + * Copyright 2016 Metafizzy + */ + +( function( window, factory ) { + // universal module definition + /* jshint strict: false */ /*globals define, module, require */ + if ( typeof define == 'function' && define.amd ) { + // AMD + define( [ + 'outlayer/outlayer', + 'get-size/get-size', + 'desandro-matches-selector/matches-selector', + 'fizzy-ui-utils/utils', + 'isotope/js/item', + 'isotope/js/layout-mode', + // include default layout modes + 'isotope/js/layout-modes/masonry', + 'isotope/js/layout-modes/fit-rows', + 'isotope/js/layout-modes/vertical' + ], + function( Outlayer, getSize, matchesSelector, utils, Item, LayoutMode ) { + return factory( window, Outlayer, getSize, matchesSelector, utils, Item, LayoutMode ); + }); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS + module.exports = factory( + window, + require('outlayer'), + require('get-size'), + require('desandro-matches-selector'), + require('fizzy-ui-utils'), + require('isotope/js/item'), + require('isotope/js/layout-mode'), + // include default layout modes + require('isotope/js/layout-modes/masonry'), + require('isotope/js/layout-modes/fit-rows'), + require('isotope/js/layout-modes/vertical') + ); + } else { + // browser global + window.Isotope = factory( + window, + window.Outlayer, + window.getSize, + window.matchesSelector, + window.fizzyUIUtils, + window.Isotope.Item, + window.Isotope.LayoutMode + ); + } + +}( window, function factory( window, Outlayer, getSize, matchesSelector, utils, + Item, LayoutMode ) { + + + +// -------------------------- vars -------------------------- // + +var jQuery = window.jQuery; + +// -------------------------- helpers -------------------------- // + +var trim = String.prototype.trim ? + function( str ) { + return str.trim(); + } : + function( str ) { + return str.replace( /^\s+|\s+$/g, '' ); + }; + +// -------------------------- isotopeDefinition -------------------------- // + + // create an Outlayer layout class + var Isotope = Outlayer.create( 'isotope', { + layoutMode: 'masonry', + isJQueryFiltering: true, + sortAscending: true + }); + + Isotope.Item = Item; + Isotope.LayoutMode = LayoutMode; + + var proto = Isotope.prototype; + + proto._create = function() { + this.itemGUID = 0; + // functions that sort items + this._sorters = {}; + this._getSorters(); + // call super + Outlayer.prototype._create.call( this ); + + // create layout modes + this.modes = {}; + // start filteredItems with all items + this.filteredItems = this.items; + // keep of track of sortBys + this.sortHistory = [ 'original-order' ]; + // create from registered layout modes + for ( var name in LayoutMode.modes ) { + this._initLayoutMode( name ); + } + }; + + proto.reloadItems = function() { + // reset item ID counter + this.itemGUID = 0; + // call super + Outlayer.prototype.reloadItems.call( this ); + }; + + proto._itemize = function() { + var items = Outlayer.prototype._itemize.apply( this, arguments ); + // assign ID for original-order + for ( var i=0; i < items.length; i++ ) { + var item = items[i]; + item.id = this.itemGUID++; + } + this._updateItemsSortData( items ); + return items; + }; + + + // -------------------------- layout -------------------------- // + + proto._initLayoutMode = function( name ) { + var Mode = LayoutMode.modes[ name ]; + // set mode options + // HACK extend initial options, back-fill in default options + var initialOpts = this.options[ name ] || {}; + this.options[ name ] = Mode.options ? + utils.extend( Mode.options, initialOpts ) : initialOpts; + // init layout mode instance + this.modes[ name ] = new Mode( this ); + }; + + + proto.layout = function() { + // if first time doing layout, do all magic + if ( !this._isLayoutInited && this._getOption('initLayout') ) { + this.arrange(); + return; + } + this._layout(); + }; + + // private method to be used in layout() & magic() + proto._layout = function() { + // don't animate first layout + var isInstant = this._getIsInstant(); + // layout flow + this._resetLayout(); + this._manageStamps(); + this.layoutItems( this.filteredItems, isInstant ); + + // flag for initalized + this._isLayoutInited = true; + }; + + // filter + sort + layout + proto.arrange = function( opts ) { + // set any options pass + this.option( opts ); + this._getIsInstant(); + // filter, sort, and layout + + // filter + var filtered = this._filter( this.items ); + this.filteredItems = filtered.matches; + + this._bindArrangeComplete(); + + if ( this._isInstant ) { + this._noTransition( this._hideReveal, [ filtered ] ); + } else { + this._hideReveal( filtered ); + } + + this._sort(); + this._layout(); + }; + // alias to _init for main plugin method + proto._init = proto.arrange; + + proto._hideReveal = function( filtered ) { + this.reveal( filtered.needReveal ); + this.hide( filtered.needHide ); + }; + + // HACK + // Don't animate/transition first layout + // Or don't animate/transition other layouts + proto._getIsInstant = function() { + var isLayoutInstant = this._getOption('layoutInstant'); + var isInstant = isLayoutInstant !== undefined ? isLayoutInstant : + !this._isLayoutInited; + this._isInstant = isInstant; + return isInstant; + }; + + // listen for layoutComplete, hideComplete and revealComplete + // to trigger arrangeComplete + proto._bindArrangeComplete = function() { + // listen for 3 events to trigger arrangeComplete + var isLayoutComplete, isHideComplete, isRevealComplete; + var _this = this; + function arrangeParallelCallback() { + if ( isLayoutComplete && isHideComplete && isRevealComplete ) { + _this.dispatchEvent( 'arrangeComplete', null, [ _this.filteredItems ] ); + } + } + this.once( 'layoutComplete', function() { + isLayoutComplete = true; + arrangeParallelCallback(); + }); + this.once( 'hideComplete', function() { + isHideComplete = true; + arrangeParallelCallback(); + }); + this.once( 'revealComplete', function() { + isRevealComplete = true; + arrangeParallelCallback(); + }); + }; + + // -------------------------- filter -------------------------- // + + proto._filter = function( items ) { + var filter = this.options.filter; + filter = filter || '*'; + var matches = []; + var hiddenMatched = []; + var visibleUnmatched = []; + + var test = this._getFilterTest( filter ); + + // test each item + for ( var i=0; i < items.length; i++ ) { + var item = items[i]; + if ( item.isIgnored ) { + continue; + } + // add item to either matched or unmatched group + var isMatched = test( item ); + // item.isFilterMatched = isMatched; + // add to matches if its a match + if ( isMatched ) { + matches.push( item ); + } + // add to additional group if item needs to be hidden or revealed + if ( isMatched && item.isHidden ) { + hiddenMatched.push( item ); + } else if ( !isMatched && !item.isHidden ) { + visibleUnmatched.push( item ); + } + } + + // return collections of items to be manipulated + return { + matches: matches, + needReveal: hiddenMatched, + needHide: visibleUnmatched + }; + }; + + // get a jQuery, function, or a matchesSelector test given the filter + proto._getFilterTest = function( filter ) { + if ( jQuery && this.options.isJQueryFiltering ) { + // use jQuery + return function( item ) { + return jQuery( item.element ).is( filter ); + }; + } + if ( typeof filter == 'function' ) { + // use filter as function + return function( item ) { + return filter( item.element ); + }; + } + // default, use filter as selector string + return function( item ) { + return matchesSelector( item.element, filter ); + }; + }; + + // -------------------------- sorting -------------------------- // + + /** + * @params {Array} elems + * @public + */ + proto.updateSortData = function( elems ) { + // get items + var items; + if ( elems ) { + elems = utils.makeArray( elems ); + items = this.getItems( elems ); + } else { + // update all items if no elems provided + items = this.items; + } + + this._getSorters(); + this._updateItemsSortData( items ); + }; + + proto._getSorters = function() { + var getSortData = this.options.getSortData; + for ( var key in getSortData ) { + var sorter = getSortData[ key ]; + this._sorters[ key ] = mungeSorter( sorter ); + } + }; + + /** + * @params {Array} items - of Isotope.Items + * @private + */ + proto._updateItemsSortData = function( items ) { + // do not update if no items + var len = items && items.length; + + for ( var i=0; len && i < len; i++ ) { + var item = items[i]; + item.updateSortData(); + } + }; + + // ----- munge sorter ----- // + + // encapsulate this, as we just need mungeSorter + // other functions in here are just for munging + var mungeSorter = ( function() { + // add a magic layer to sorters for convienent shorthands + // `.foo-bar` will use the text of .foo-bar querySelector + // `[foo-bar]` will use attribute + // you can also add parser + // `.foo-bar parseInt` will parse that as a number + function mungeSorter( sorter ) { + // if not a string, return function or whatever it is + if ( typeof sorter != 'string' ) { + return sorter; + } + // parse the sorter string + var args = trim( sorter ).split(' '); + var query = args[0]; + // check if query looks like [an-attribute] + var attrMatch = query.match( /^\[(.+)\]$/ ); + var attr = attrMatch && attrMatch[1]; + var getValue = getValueGetter( attr, query ); + // use second argument as a parser + var parser = Isotope.sortDataParsers[ args[1] ]; + // parse the value, if there was a parser + sorter = parser ? function( elem ) { + return elem && parser( getValue( elem ) ); + } : + // otherwise just return value + function( elem ) { + return elem && getValue( elem ); + }; + + return sorter; + } + + // get an attribute getter, or get text of the querySelector + function getValueGetter( attr, query ) { + // if query looks like [foo-bar], get attribute + if ( attr ) { + return function getAttribute( elem ) { + return elem.getAttribute( attr ); + }; + } + + // otherwise, assume its a querySelector, and get its text + return function getChildText( elem ) { + var child = elem.querySelector( query ); + return child && child.textContent; + }; + } + + return mungeSorter; + })(); + + // parsers used in getSortData shortcut strings + Isotope.sortDataParsers = { + 'parseInt': function( val ) { + return parseInt( val, 10 ); + }, + 'parseFloat': function( val ) { + return parseFloat( val ); + } + }; + + // ----- sort method ----- // + + // sort filteredItem order + proto._sort = function() { + var sortByOpt = this.options.sortBy; + if ( !sortByOpt ) { + return; + } + // concat all sortBy and sortHistory + var sortBys = [].concat.apply( sortByOpt, this.sortHistory ); + // sort magic + var itemSorter = getItemSorter( sortBys, this.options.sortAscending ); + this.filteredItems.sort( itemSorter ); + // keep track of sortBy History + if ( sortByOpt != this.sortHistory[0] ) { + // add to front, oldest goes in last + this.sortHistory.unshift( sortByOpt ); + } + }; + + // returns a function used for sorting + function getItemSorter( sortBys, sortAsc ) { + return function sorter( itemA, itemB ) { + // cycle through all sortKeys + for ( var i = 0; i < sortBys.length; i++ ) { + var sortBy = sortBys[i]; + var a = itemA.sortData[ sortBy ]; + var b = itemB.sortData[ sortBy ]; + if ( a > b || a < b ) { + // if sortAsc is an object, use the value given the sortBy key + var isAscending = sortAsc[ sortBy ] !== undefined ? sortAsc[ sortBy ] : sortAsc; + var direction = isAscending ? 1 : -1; + return ( a > b ? 1 : -1 ) * direction; + } + } + return 0; + }; + } + + // -------------------------- methods -------------------------- // + + // get layout mode + proto._mode = function() { + var layoutMode = this.options.layoutMode; + var mode = this.modes[ layoutMode ]; + if ( !mode ) { + // TODO console.error + throw new Error( 'No layout mode: ' + layoutMode ); + } + // HACK sync mode's options + // any options set after init for layout mode need to be synced + mode.options = this.options[ layoutMode ]; + return mode; + }; + + proto._resetLayout = function() { + // trigger original reset layout + Outlayer.prototype._resetLayout.call( this ); + this._mode()._resetLayout(); + }; + + proto._getItemLayoutPosition = function( item ) { + return this._mode()._getItemLayoutPosition( item ); + }; + + proto._manageStamp = function( stamp ) { + this._mode()._manageStamp( stamp ); + }; + + proto._getContainerSize = function() { + return this._mode()._getContainerSize(); + }; + + proto.needsResizeLayout = function() { + return this._mode().needsResizeLayout(); + }; + + // -------------------------- adding & removing -------------------------- // + + // HEADS UP overwrites default Outlayer appended + proto.appended = function( elems ) { + var items = this.addItems( elems ); + if ( !items.length ) { + return; + } + // filter, layout, reveal new items + var filteredItems = this._filterRevealAdded( items ); + // add to filteredItems + this.filteredItems = this.filteredItems.concat( filteredItems ); + }; + + // HEADS UP overwrites default Outlayer prepended + proto.prepended = function( elems ) { + var items = this._itemize( elems ); + if ( !items.length ) { + return; + } + // start new layout + this._resetLayout(); + this._manageStamps(); + // filter, layout, reveal new items + var filteredItems = this._filterRevealAdded( items ); + // layout previous items + this.layoutItems( this.filteredItems ); + // add to items and filteredItems + this.filteredItems = filteredItems.concat( this.filteredItems ); + this.items = items.concat( this.items ); + }; + + proto._filterRevealAdded = function( items ) { + var filtered = this._filter( items ); + this.hide( filtered.needHide ); + // reveal all new items + this.reveal( filtered.matches ); + // layout new items, no transition + this.layoutItems( filtered.matches, true ); + return filtered.matches; + }; + + /** + * Filter, sort, and layout newly-appended item elements + * @param {Array or NodeList or Element} elems + */ + proto.insert = function( elems ) { + var items = this.addItems( elems ); + if ( !items.length ) { + return; + } + // append item elements + var i, item; + var len = items.length; + for ( i=0; i < len; i++ ) { + item = items[i]; + this.element.appendChild( item.element ); + } + // filter new stuff + var filteredInsertItems = this._filter( items ).matches; + // set flag + for ( i=0; i < len; i++ ) { + items[i].isLayoutInstant = true; + } + this.arrange(); + // reset flag + for ( i=0; i < len; i++ ) { + delete items[i].isLayoutInstant; + } + this.reveal( filteredInsertItems ); + }; + + var _remove = proto.remove; + proto.remove = function( elems ) { + elems = utils.makeArray( elems ); + var removeItems = this.getItems( elems ); + // do regular thing + _remove.call( this, elems ); + // bail if no items to remove + var len = removeItems && removeItems.length; + // remove elems from filteredItems + for ( var i=0; len && i < len; i++ ) { + var item = removeItems[i]; + // remove item from collection + utils.removeFrom( this.filteredItems, item ); + } + }; + + proto.shuffle = function() { + // update random sortData + for ( var i=0; i < this.items.length; i++ ) { + var item = this.items[i]; + item.sortData.random = Math.random(); + } + this.options.sortBy = 'random'; + this._sort(); + this._layout(); + }; + + /** + * trigger fn without transition + * kind of hacky to have this in the first place + * @param {Function} fn + * @param {Array} args + * @returns ret + * @private + */ + proto._noTransition = function( fn, args ) { + // save transitionDuration before disabling + var transitionDuration = this.options.transitionDuration; + // disable transition + this.options.transitionDuration = 0; + // do it + var returnValue = fn.apply( this, args ); + // re-enable transition for reveal + this.options.transitionDuration = transitionDuration; + return returnValue; + }; + + // ----- helper methods ----- // + + /** + * getter method for getting filtered item elements + * @returns {Array} elems - collection of item elements + */ + proto.getFilteredItemElements = function() { + return this.filteredItems.map( function( item ) { + return item.element; + }); + }; + + // ----- ----- // + + return Isotope; + +})); + diff --git a/javascripts/jquery-ui.min.js b/javascripts/jquery-ui.min.js new file mode 100644 index 0000000..44319ed --- /dev/null +++ b/javascripts/jquery-ui.min.js @@ -0,0 +1,10 @@ +/* + * jQuery UI 1.7.1 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.1",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);(function(a){a.widget("ui.draggable",a.extend({},a.ui.mouse,{_init:function(){if(this.options.helper=="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){this.element[0].style.position="relative"}(this.options.addClasses&&this.element.addClass("ui-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this._mouseInit()},destroy:function(){if(!this.element.data("draggable")){return}this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy()},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")){return false}this.handle=this._getHandle(b);if(!this.handle){return false}return true},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b);this._cacheHelperProportions();if(a.ui.ddmanager){a.ui.ddmanager.current=this}this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(b);this.originalPageX=b.pageX;this.originalPageY=b.pageY;if(c.cursorAt){this._adjustOffsetFromHelper(c.cursorAt)}if(c.containment){this._setContainment()}this._trigger("start",b);this._cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,b)}this.helper.addClass("ui-draggable-dragging");this._mouseDrag(b,true);return true},_mouseDrag:function(b,d){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");if(!d){var c=this._uiHash();this._trigger("drag",b,c);this.position=c.position}if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}if(a.ui.ddmanager){a.ui.ddmanager.drag(this,b)}return false},_mouseStop:function(c){var d=false;if(a.ui.ddmanager&&!this.options.dropBehaviour){d=a.ui.ddmanager.drop(this,c)}if(this.dropped){d=this.dropped;this.dropped=false}if((this.options.revert=="invalid"&&!d)||(this.options.revert=="valid"&&d)||this.options.revert===true||(a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d))){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){b._trigger("stop",c);b._clear()})}else{this._trigger("stop",c);this._clear()}return false},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target){c=true}});return c},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c])):(d.helper=="clone"?this.element.clone():this.element);if(!b.parents("body").length){b.appendTo((d.appendTo=="parent"?this.element[0].parentNode:d.appendTo))}if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position"))){b.css("position","absolute")}return b},_adjustOffsetFromHelper:function(b){if(b.left!=undefined){this.offset.click.left=b.left+this.margins.left}if(b.right!=undefined){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if(b.top!=undefined){this.offset.click.top=b.top+this.margins.top}if(b.bottom!=undefined){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.element.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)&&e.containment.constructor!=Array){var c=a(e.containment)[0];if(!c){return}var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(e.containment.constructor==Array){this.containment=e.containment}}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.leftthis.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.topthis.containment[3])?g:(!(g-this.offset.click.topthis.containment[2])?f:(!(f-this.offset.click.left
').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","opacity",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("opacity")){e._opacity=b.css("opacity")}b.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._opacity){a(c.helper).css("opacity",d._opacity)}}});a.ui.plugin.add("draggable","scroll",{start:function(c,d){var b=a(this).data("draggable");if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){b.overflowOffset=b.scrollParent.offset()}},drag:function(d,e){var c=a(this).data("draggable"),f=c.options,b=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!f.axis||f.axis!="x"){if((c.overflowOffset.top+c.scrollParent[0].offsetHeight)-d.pageY=0;v--){var s=g.snapElements[v].left,n=s+g.snapElements[v].width,m=g.snapElements[v].top,A=m+g.snapElements[v].height;if(!((s-y=p&&n<=k)||(m>=p&&m<=k)||(nk))&&((e>=g&&e<=c)||(d>=g&&d<=c)||(ec));break;default:return false;break}};a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,g){var b=a.ui.ddmanager.droppables[e.options.scope];var f=g?g.type:null;var h=(e.currentItem||e.element).find(":data(droppable)").andSelf();droppablesLoop:for(var d=0;d
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=j.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var k=this.handles.split(",");this.handles={};for(var f=0;f');if(/sw|se|ne|nw/.test(h)){g.css({zIndex:++j.zIndex})}if("se"==h){g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[h]=".ui-resizable-"+h;this.element.append(g)}}this._renderAxis=function(p){p=p||this.element;for(var m in this.handles){if(this.handles[m].constructor==String){this.handles[m]=c(this.handles[m],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var n=c(this.handles[m],this.element),o=0;o=/sw|ne|nw|se|n|s/.test(m)?n.outerHeight():n.outerWidth();var l=["padding",/ne|nw|n/.test(m)?"Top":/se|sw|s/.test(m)?"Bottom":/^e$/.test(m)?"Right":"Left"].join("");p.css(l,o);this._proportionallyResize()}if(!c(this.handles[m]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!e.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}e.axis=i&&i[1]?i[1]:"se"}});if(j.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){c(this).removeClass("ui-resizable-autohide");e._handles.show()},function(){if(!e.resizing){c(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var d=function(f){c(f).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){d(this.element);var e=this.element;e.parent().append(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).end().remove()}this.originalElement.css("resize",this.originalResizeStyle);d(this.originalElement)},_mouseCapture:function(e){var f=false;for(var d in this.handles){if(c(this.handles[d])[0]==e.target){f=true}}return this.options.disabled||!!f},_mouseStart:function(f){var i=this.options,e=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(d.is(".ui-draggable")||(/absolute/).test(d.css("position"))){d.css({position:"absolute",top:e.top,left:e.left})}if(c.browser.opera&&(/relative/).test(d.css("position"))){d.css({position:"relative",top:"auto",left:"auto"})}this._renderProxy();var j=b(this.helper.css("left")),g=b(this.helper.css("top"));if(i.containment){j+=c(i.containment).scrollLeft()||0;g+=c(i.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:j,top:g};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:j,top:g};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=(typeof i.aspectRatio=="number")?i.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var h=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",h=="auto"?this.axis+"-resize":h);d.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(d){var g=this.helper,f=this.options,l={},p=this,i=this.originalMousePosition,m=this.axis;var q=(d.pageX-i.left)||0,n=(d.pageY-i.top)||0;var h=this._change[m];if(!h){return false}var k=h.apply(this,[d,q,n]),j=c.browser.msie&&c.browser.version<7,e=this.sizeDiff;if(this._aspectRatio||d.shiftKey){k=this._updateRatio(k,d)}k=this._respectSize(k,d);this._propagate("resize",d);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(k);this._trigger("resize",d,this.ui());return false},_mouseStop:function(g){this.resizing=false;var h=this.options,l=this;if(this._helper){var f=this._proportionallyResizeElements,d=f.length&&(/textarea/i).test(f[0].nodeName),e=d&&c.ui.hasScroll(f[0],"left")?0:l.sizeDiff.height,j=d?0:l.sizeDiff.width;var m={width:(l.size.width-j),height:(l.size.height-e)},i=(parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left))||null,k=(parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top))||null;if(!h.animate){this.element.css(c.extend(m,{top:k,left:i}))}l.helper.height(l.size.height);l.helper.width(l.size.width);if(this._helper&&!h.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",g);if(this._helper){this.helper.remove()}return false},_updateCache:function(d){var e=this.options;this.offset=this.helper.offset();if(a(d.left)){this.position.left=d.left}if(a(d.top)){this.position.top=d.top}if(a(d.height)){this.size.height=d.height}if(a(d.width)){this.size.width=d.width}},_updateRatio:function(g,f){var h=this.options,i=this.position,e=this.size,d=this.axis;if(g.height){g.width=(e.height*this.aspectRatio)}else{if(g.width){g.height=(e.width/this.aspectRatio)}}if(d=="sw"){g.left=i.left+(e.width-g.width);g.top=null}if(d=="nw"){g.top=i.top+(e.height-g.height);g.left=i.left+(e.width-g.width)}return g},_respectSize:function(k,f){var i=this.helper,h=this.options,q=this._aspectRatio||f.shiftKey,p=this.axis,s=a(k.width)&&h.maxWidth&&(h.maxWidthk.width),r=a(k.height)&&h.minHeight&&(h.minHeight>k.height);if(g){k.width=h.minWidth}if(r){k.height=h.minHeight}if(s){k.width=h.maxWidth}if(l){k.height=h.maxHeight}var e=this.originalPosition.left+this.originalSize.width,n=this.position.top+this.size.height;var j=/sw|nw|w/.test(p),d=/nw|ne|n/.test(p);if(g&&j){k.left=e-h.minWidth}if(s&&j){k.left=e-h.maxWidth}if(r&&d){k.top=n-h.minHeight}if(l&&d){k.top=n-h.maxHeight}var m=!k.width&&!k.height;if(m&&!k.left&&k.top){k.top=null}else{if(m&&!k.top&&k.left){k.left=null}}return k},_proportionallyResize:function(){var j=this.options;if(!this._proportionallyResizeElements.length){return}var f=this.helper||this.element;for(var e=0;e');var d=c.browser.msie&&c.browser.version<7,f=(d?1:0),g=(d?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left-f+"px",top:this.elementOffset.top-f+"px",zIndex:++h.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(f,e,d){return{width:this.originalSize.width+e}},w:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{left:h.left+e,width:f.width-e}},n:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{top:h.top+d,height:f.height-d}},s:function(f,e,d){return{height:this.originalSize.height+d}},se:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},sw:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,e,d]))},ne:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},nw:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,e,d]))}},_propagate:function(e,d){c.ui.plugin.call(this,e,[d,this.ui()]);(e!="resize"&&this._trigger(e,d,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}));c.extend(c.ui.resizable,{version:"1.7.1",eventPrefix:"resize",defaults:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,cancel:":input,option",containment:false,delay:0,distance:1,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000}});c.ui.plugin.add("resizable","alsoResize",{start:function(e,f){var d=c(this).data("resizable"),g=d.options;_store=function(h){c(h).each(function(){c(this).data("resizable-alsoresize",{width:parseInt(c(this).width(),10),height:parseInt(c(this).height(),10),left:parseInt(c(this).css("left"),10),top:parseInt(c(this).css("top"),10)})})};if(typeof(g.alsoResize)=="object"&&!g.alsoResize.parentNode){if(g.alsoResize.length){g.alsoResize=g.alsoResize[0];_store(g.alsoResize)}else{c.each(g.alsoResize,function(h,i){_store(h)})}}else{_store(g.alsoResize)}},resize:function(f,h){var e=c(this).data("resizable"),i=e.options,g=e.originalSize,k=e.originalPosition;var j={height:(e.size.height-g.height)||0,width:(e.size.width-g.width)||0,top:(e.position.top-k.top)||0,left:(e.position.left-k.left)||0},d=function(l,m){c(l).each(function(){var p=c(this),q=c(this).data("resizable-alsoresize"),o={},n=m&&m.length?m:["width","height","top","left"];c.each(n||["width","height","top","left"],function(r,u){var s=(q[u]||0)+(j[u]||0);if(s&&s>=0){o[u]=s||null}});if(/relative/.test(p.css("position"))&&c.browser.opera){e._revertToRelativePosition=true;p.css({position:"absolute",top:"auto",left:"auto"})}p.css(o)})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.nodeType){c.each(i.alsoResize,function(l,m){d(l,m)})}else{d(i.alsoResize)}},stop:function(e,f){var d=c(this).data("resizable");if(d._revertToRelativePosition&&c.browser.opera){d._revertToRelativePosition=false;el.css({position:"relative"})}c(this).removeData("resizable-alsoresize-start")}});c.ui.plugin.add("resizable","animate",{stop:function(h,m){var n=c(this).data("resizable"),i=n.options;var g=n._proportionallyResizeElements,d=g.length&&(/textarea/i).test(g[0].nodeName),e=d&&c.ui.hasScroll(g[0],"left")?0:n.sizeDiff.height,k=d?0:n.sizeDiff.width;var f={width:(n.size.width-k),height:(n.size.height-e)},j=(parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left))||null,l=(parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top))||null;n.element.animate(c.extend(f,l&&j?{top:l,left:j}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var o={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};if(g&&g.length){c(g[0]).css({width:o.width,height:o.height})}n._updateCache(o);n._propagate("resize",h)}})}});c.ui.plugin.add("resizable","containment",{start:function(e,q){var s=c(this).data("resizable"),i=s.options,k=s.element;var f=i.containment,j=(f instanceof c)?f.get(0):(/parent/.test(f))?k.parent().get(0):f;if(!j){return}s.containerElement=c(j);if(/document/.test(f)||f==document){s.containerOffset={left:0,top:0};s.containerPosition={left:0,top:0};s.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var m=c(j),h=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){h[p]=b(m.css("padding"+o))});s.containerOffset=m.offset();s.containerPosition=m.position();s.containerSize={height:(m.innerHeight()-h[3]),width:(m.innerWidth()-h[1])};var n=s.containerOffset,d=s.containerSize.height,l=s.containerSize.width,g=(c.ui.hasScroll(j,"left")?j.scrollWidth:l),r=(c.ui.hasScroll(j)?j.scrollHeight:d);s.parentData={element:j,left:n.left,top:n.top,width:g,height:r}}},resize:function(f,p){var s=c(this).data("resizable"),h=s.options,e=s.containerSize,n=s.containerOffset,l=s.size,m=s.position,q=s._aspectRatio||f.shiftKey,d={top:0,left:0},g=s.containerElement;if(g[0]!=document&&(/static/).test(g.css("position"))){d=n}if(m.left<(s._helper?n.left:0)){s.size.width=s.size.width+(s._helper?(s.position.left-n.left):(s.position.left-d.left));if(q){s.size.height=s.size.width/h.aspectRatio}s.position.left=h.helper?n.left:0}if(m.top<(s._helper?n.top:0)){s.size.height=s.size.height+(s._helper?(s.position.top-n.top):s.position.top);if(q){s.size.width=s.size.height*h.aspectRatio}s.position.top=s._helper?n.top:0}s.offset.left=s.parentData.left+s.position.left;s.offset.top=s.parentData.top+s.position.top;var k=Math.abs((s._helper?s.offset.left-d.left:(s.offset.left-d.left))+s.sizeDiff.width),r=Math.abs((s._helper?s.offset.top-d.top:(s.offset.top-n.top))+s.sizeDiff.height);var j=s.containerElement.get(0)==s.element.parent().get(0),i=/relative|absolute/.test(s.containerElement.css("position"));if(j&&i){k-=s.parentData.left}if(k+s.size.width>=s.parentData.width){s.size.width=s.parentData.width-k;if(q){s.size.height=s.size.width/s.aspectRatio}}if(r+s.size.height>=s.parentData.height){s.size.height=s.parentData.height-r;if(q){s.size.width=s.size.height*s.aspectRatio}}},stop:function(e,m){var p=c(this).data("resizable"),f=p.options,k=p.position,l=p.containerOffset,d=p.containerPosition,g=p.containerElement;var i=c(p.helper),q=i.offset(),n=i.outerWidth()-p.sizeDiff.width,j=i.outerHeight()-p.sizeDiff.height;if(p._helper&&!f.animate&&(/relative/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}if(p._helper&&!f.animate&&(/static/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}}});c.ui.plugin.add("resizable","ghost",{start:function(f,g){var d=c(this).data("resizable"),h=d.options,e=d.size;d.ghost=d.originalElement.clone();d.ghost.css({opacity:0.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");d.ghost.appendTo(d.helper)},resize:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost){d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})}},stop:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost&&d.helper){d.helper.get(0).removeChild(d.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(d,l){var n=c(this).data("resizable"),g=n.options,j=n.size,h=n.originalSize,i=n.originalPosition,m=n.axis,k=g._aspectRatio||d.shiftKey;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid;var f=Math.round((j.width-h.width)/(g.grid[0]||1))*(g.grid[0]||1),e=Math.round((j.height-h.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e}else{if(/^(ne)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e}else{if(/^(sw)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.left=i.left-f}else{n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e;n.position.left=i.left-f}}}}});var b=function(d){return parseInt(d,10)||0};var a=function(d){return !isNaN(parseInt(d,10))}})(jQuery);(function(a){a.widget("ui.selectable",a.extend({},a.ui.mouse,{_init:function(){var b=this;this.element.addClass("ui-selectable");this.dragged=false;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]);c.each(function(){var d=a(this);var e=d.offset();a.data(this,"selectable-item",{element:this,$element:d,left:e.left,top:e.top,right:e.left+d.outerWidth(),bottom:e.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=a(document.createElement("div")).css({border:"1px dotted black"}).addClass("ui-selectable-helper")},destroy:function(){this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy()},_mouseStart:function(d){var b=this;this.opos=[d.pageX,d.pageY];if(this.options.disabled){return}var c=this.options;this.selectees=a(c.filter,this.element[0]);this._trigger("start",d);a(c.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:d.clientX,top:d.clientY,width:0,height:0});if(c.autoRefresh){this.refresh()}this.selectees.filter(".ui-selected").each(function(){var e=a.data(this,"selectable-item");e.startselected=true;if(!d.metaKey){e.$element.removeClass("ui-selected");e.selected=false;e.$element.addClass("ui-unselecting");e.unselecting=true;b._trigger("unselecting",d,{unselecting:e.element})}});a(d.target).parents().andSelf().each(function(){var e=a.data(this,"selectable-item");if(e){e.$element.removeClass("ui-unselecting").addClass("ui-selecting");e.unselecting=false;e.selecting=true;e.selected=true;b._trigger("selecting",d,{selecting:e.element});return false}})},_mouseDrag:function(i){var c=this;this.dragged=true;if(this.options.disabled){return}var e=this.options;var d=this.opos[0],h=this.opos[1],b=i.pageX,g=i.pageY;if(d>b){var f=b;b=d;d=f}if(h>g){var f=g;g=h;h=f}this.helper.css({left:d,top:h,width:b-d,height:g-h});this.selectees.each(function(){var j=a.data(this,"selectable-item");if(!j||j.element==c.element[0]){return}var k=false;if(e.tolerance=="touch"){k=(!(j.left>b||j.rightg||j.bottomd&&j.righth&&j.bottom=0;b--){this.items[b].item.removeData("sortable-item")}},_mouseCapture:function(e,f){if(this.reverting){return false}if(this.options.disabled||this.options.type=="static"){return false}this._refreshItems(e);var d=null,c=this,b=a(e.target).parents().each(function(){if(a.data(this,"sortable-item")==c){d=a(this);return false}});if(a.data(e.target,"sortable-item")==c){d=a(e.target)}if(!d){return false}if(this.options.handle&&!f){var g=false;a(this.options.handle,d).find("*").andSelf().each(function(){if(this==e.target){g=true}});if(!g){return false}}this.currentItem=d;this._removeCurrentsFromItems();return true},_mouseStart:function(e,f,b){var g=this.options,c=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(e);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");a.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(e);this.originalPageX=e.pageX;this.originalPageY=e.pageY;if(g.cursorAt){this._adjustOffsetFromHelper(g.cursorAt)}this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};if(this.helper[0]!=this.currentItem[0]){this.currentItem.hide()}this._createPlaceholder();if(g.containment){this._setContainment()}if(g.cursor){if(a("body").css("cursor")){this._storedCursor=a("body").css("cursor")}a("body").css("cursor",g.cursor)}if(g.opacity){if(this.helper.css("opacity")){this._storedOpacity=this.helper.css("opacity")}this.helper.css("opacity",g.opacity)}if(g.zIndex){if(this.helper.css("zIndex")){this._storedZIndex=this.helper.css("zIndex")}this.helper.css("zIndex",g.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){this.overflowOffset=this.scrollParent.offset()}this._trigger("start",e,this._uiHash());if(!this._preserveHelperProportions){this._cacheHelperProportions()}if(!b){for(var d=this.containers.length-1;d>=0;d--){this.containers[d]._trigger("activate",e,c._uiHash(this))}}if(a.ui.ddmanager){a.ui.ddmanager.current=this}if(a.ui.ddmanager&&!g.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,e)}this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(e);return true},_mouseDrag:function(f){this.position=this._generatePosition(f);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs){this.lastPositionAbs=this.positionAbs}if(this.options.scroll){var g=this.options,b=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if((this.overflowOffset.top+this.scrollParent[0].offsetHeight)-f.pageY=0;d--){var e=this.items[d],c=e.item[0],h=this._intersectsWithPointer(e);if(!h){continue}if(c!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=c&&!a.ui.contains(this.placeholder[0],c)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],c):true)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(e)){this._rearrange(f,e)}else{break}this._trigger("change",f,this._uiHash());break}}this._contactContainers(f);if(a.ui.ddmanager){a.ui.ddmanager.drag(this,f)}this._trigger("sort",f,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(c,d){if(!c){return}if(a.ui.ddmanager&&!this.options.dropBehaviour){a.ui.ddmanager.drop(this,c)}if(this.options.revert){var b=this;var e=b.placeholder.offset();b.reverting=true;a(this.helper).animate({left:e.left-this.offset.parent.left-b.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-b.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){b._clear(c)})}else{this._clear(c,d)}return false},cancel:function(){var b=this;if(this.dragging){this._mouseUp();if(this.options.helper=="original"){this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else{this.currentItem.show()}for(var c=this.containers.length-1;c>=0;c--){this.containers[c]._trigger("deactivate",null,b._uiHash(this));if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",null,b._uiHash(this));this.containers[c].containerCache.over=0}}}if(this.placeholder[0].parentNode){this.placeholder[0].parentNode.removeChild(this.placeholder[0])}if(this.options.helper!="original"&&this.helper&&this.helper[0].parentNode){this.helper.remove()}a.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});if(this.domPosition.prev){a(this.domPosition.prev).after(this.currentItem)}else{a(this.domPosition.parent).prepend(this.currentItem)}return true},serialize:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};a(b).each(function(){var e=(a(d.item||this).attr(d.attribute||"id")||"").match(d.expression||(/(.+)[-=_](.+)/));if(e){c.push((d.key||e[1]+"[]")+"="+(d.key&&d.expression?e[1]:e[2]))}});return c.join("&")},toArray:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};b.each(function(){c.push(a(d.item||this).attr(d.attribute||"id")||"")});return c},_intersectsWith:function(m){var e=this.positionAbs.left,d=e+this.helperProportions.width,k=this.positionAbs.top,j=k+this.helperProportions.height;var f=m.left,c=f+m.width,n=m.top,i=n+m.height;var o=this.offset.click.top,h=this.offset.click.left;var g=(k+o)>n&&(k+o)f&&(e+h)m[this.floating?"width":"height"])){return g}else{return(f0?"down":"up")},_getDragHorizontalDirection:function(){var b=this.positionAbs.left-this.lastPositionAbs.left;return b!=0&&(b>0?"right":"left")},refresh:function(b){this._refreshItems(b);this.refreshPositions()},_connectWith:function(){var b=this.options;return b.connectWith.constructor==String?[b.connectWith]:b.connectWith},_getItemsAsjQuery:function(b){var l=this;var g=[];var e=[];var h=this._connectWith();if(h&&b){for(var d=h.length-1;d>=0;d--){var k=a(h[d]);for(var c=k.length-1;c>=0;c--){var f=a.data(k[c],"sortable");if(f&&f!=this&&!f.options.disabled){e.push([a.isFunction(f.options.items)?f.options.items.call(f.element):a(f.options.items,f.element).not(".ui-sortable-helper"),f])}}}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper"),this]);for(var d=e.length-1;d>=0;d--){e[d][0].each(function(){g.push(this)})}return a(g)},_removeCurrentsFromItems:function(){var d=this.currentItem.find(":data(sortable-item)");for(var c=0;c=0;e--){var m=a(l[e]);for(var d=m.length-1;d>=0;d--){var g=a.data(m[d],"sortable");if(g&&g!=this&&!g.options.disabled){f.push([a.isFunction(g.options.items)?g.options.items.call(g.element[0],b,{item:this.currentItem}):a(g.options.items,g.element),g]);this.containers.push(g)}}}}for(var e=f.length-1;e>=0;e--){var k=f[e][1];var c=f[e][0];for(var d=0,n=c.length;d=0;d--){var e=this.items[d];if(e.instance!=this.currentContainer&&this.currentContainer&&e.item[0]!=this.currentItem[0]){continue}var c=this.options.toleranceElement?a(this.options.toleranceElement,e.item):e.item;if(!b){e.width=c.outerWidth();e.height=c.outerHeight()}var f=c.offset();e.left=f.left;e.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers){this.options.custom.refreshContainers.call(this)}else{for(var d=this.containers.length-1;d>=0;d--){var f=this.containers[d].element.offset();this.containers[d].containerCache.left=f.left;this.containers[d].containerCache.top=f.top;this.containers[d].containerCache.width=this.containers[d].element.outerWidth();this.containers[d].containerCache.height=this.containers[d].element.outerHeight()}}},_createPlaceholder:function(d){var b=d||this,e=b.options;if(!e.placeholder||e.placeholder.constructor==String){var c=e.placeholder;e.placeholder={element:function(){var f=a(document.createElement(b.currentItem[0].nodeName)).addClass(c||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!c){f.style.visibility="hidden"}return f},update:function(f,g){if(c&&!e.forcePlaceholderSize){return}if(!g.height()){g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10))}if(!g.width()){g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=a(e.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);e.placeholder.update(b,b.placeholder)},_contactContainers:function(d){for(var c=this.containers.length-1;c>=0;c--){if(this._intersectsWith(this.containers[c].containerCache)){if(!this.containers[c].containerCache.over){if(this.currentContainer!=this.containers[c]){var h=10000;var g=null;var e=this.positionAbs[this.containers[c].floating?"left":"top"];for(var b=this.items.length-1;b>=0;b--){if(!a.ui.contains(this.containers[c].element[0],this.items[b].item[0])){continue}var f=this.items[b][this.containers[c].floating?"left":"top"];if(Math.abs(f-e)this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.topthis.containment[3])?g:(!(g-this.offset.click.topthis.containment[2])?f:(!(f-this.offset.click.left=0;c--){if(a.ui.contains(this.containers[c].element[0],this.currentItem[0])&&!e){f.push((function(g){return function(h){g._trigger("receive",h,this._uiHash(this))}}).call(this,this.containers[c]));f.push((function(g){return function(h){g._trigger("update",h,this._uiHash(this))}}).call(this,this.containers[c]))}}}for(var c=this.containers.length-1;c>=0;c--){if(!e){f.push((function(g){return function(h){g._trigger("deactivate",h,this._uiHash(this))}}).call(this,this.containers[c]))}if(this.containers[c].containerCache.over){f.push((function(g){return function(h){g._trigger("out",h,this._uiHash(this))}}).call(this,this.containers[c]));this.containers[c].containerCache.over=0}}if(this._storedCursor){a("body").css("cursor",this._storedCursor)}if(this._storedOpacity){this.helper.css("opacity",this._storedOpacity)}if(this._storedZIndex){this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex)}this.dragging=false;if(this.cancelHelperRemoval){if(!e){this._trigger("beforeStop",d,this._uiHash());for(var c=0;c *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1000}})})(jQuery);jQuery.effects||(function(d){d.effects={version:"1.7.1",save:function(g,h){for(var f=0;f');var j=f.parent();if(f.css("position")=="static"){j.css({position:"relative"});f.css({position:"relative"})}else{var i=f.css("top");if(isNaN(parseInt(i,10))){i="auto"}var h=f.css("left");if(isNaN(parseInt(h,10))){h="auto"}j.css({position:f.css("position"),top:i,left:h,zIndex:f.css("z-index")}).show();f.css({position:"relative",top:0,left:0})}j.css(g);return j},removeWrapper:function(f){if(f.parent().is(".ui-effects-wrapper")){return f.parent().replaceWith(f)}return f},setTransition:function(g,i,f,h){h=h||{};d.each(i,function(k,j){unit=g.cssUnit(j);if(unit[0]>0){h[j]=unit[0]*f+unit[1]}});return h},animateClass:function(h,i,k,j){var f=(typeof k=="function"?k:(j?j:null));var g=(typeof k=="string"?k:null);return this.each(function(){var q={};var o=d(this);var p=o.attr("style")||"";if(typeof p=="object"){p=p.cssText}if(h.toggle){o.hasClass(h.toggle)?h.remove=h.toggle:h.add=h.toggle}var l=d.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));if(h.add){o.addClass(h.add)}if(h.remove){o.removeClass(h.remove)}var m=d.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));if(h.add){o.removeClass(h.add)}if(h.remove){o.addClass(h.remove)}for(var r in m){if(typeof m[r]!="function"&&m[r]&&r.indexOf("Moz")==-1&&r.indexOf("length")==-1&&m[r]!=l[r]&&(r.match(/color/i)||(!r.match(/color/i)&&!isNaN(parseInt(m[r],10))))&&(l.position!="static"||(l.position=="static"&&!r.match(/left|top|bottom|right/)))){q[r]=m[r]}}o.animate(q,i,g,function(){if(typeof d(this).attr("style")=="object"){d(this).attr("style")["cssText"]="";d(this).attr("style")["cssText"]=p}else{d(this).attr("style",p)}if(h.add){d(this).addClass(h.add)}if(h.remove){d(this).removeClass(h.remove)}if(f){f.apply(this,arguments)}})})}};function c(g,f){var i=g[1]&&g[1].constructor==Object?g[1]:{};if(f){i.mode=f}var h=g[1]&&g[1].constructor!=Object?g[1]:(i.duration?i.duration:g[2]);h=d.fx.off?0:typeof h==="number"?h:d.fx.speeds[h]||d.fx.speeds._default;var j=i.callback||(d.isFunction(g[1])&&g[1])||(d.isFunction(g[2])&&g[2])||(d.isFunction(g[3])&&g[3]);return[g[0],i,h,j]}d.fn.extend({_show:d.fn.show,_hide:d.fn.hide,__toggle:d.fn.toggle,_addClass:d.fn.addClass,_removeClass:d.fn.removeClass,_toggleClass:d.fn.toggleClass,effect:function(g,f,h,i){return d.effects[g]?d.effects[g].call(this,{method:g,options:f||{},duration:h,callback:i}):null},show:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))){return this._show.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"show"))}},hide:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))){return this._hide.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"hide"))}},toggle:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))||(arguments[0].constructor==Function)){return this.__toggle.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"toggle"))}},addClass:function(g,f,i,h){return f?d.effects.animateClass.apply(this,[{add:g},f,i,h]):this._addClass(g)},removeClass:function(g,f,i,h){return f?d.effects.animateClass.apply(this,[{remove:g},f,i,h]):this._removeClass(g)},toggleClass:function(g,f,i,h){return((typeof f!=="boolean")&&f)?d.effects.animateClass.apply(this,[{toggle:g},f,i,h]):this._toggleClass(g,f)},morph:function(f,h,g,j,i){return d.effects.animateClass.apply(this,[{add:h,remove:f},g,j,i])},switchClass:function(){return this.morph.apply(this,arguments)},cssUnit:function(f){var g=this.css(f),h=[];d.each(["em","px","%","pt"],function(j,k){if(g.indexOf(k)>0){h=[parseFloat(g),k]}});return h}});d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(g,f){d.fx.step[f]=function(h){if(h.state==0){h.start=e(h.elem,f);h.end=b(h.end)}h.elem.style[f]="rgb("+[Math.max(Math.min(parseInt((h.pos*(h.end[0]-h.start[0]))+h.start[0],10),255),0),Math.max(Math.min(parseInt((h.pos*(h.end[1]-h.start[1]))+h.start[1],10),255),0),Math.max(Math.min(parseInt((h.pos*(h.end[2]-h.start[2]))+h.start[2],10),255),0)].join(",")+")"}});function b(g){var f;if(g&&g.constructor==Array&&g.length==3){return g}if(f=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(g)){return[parseInt(f[1],10),parseInt(f[2],10),parseInt(f[3],10)]}if(f=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(g)){return[parseFloat(f[1])*2.55,parseFloat(f[2])*2.55,parseFloat(f[3])*2.55]}if(f=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(g)){return[parseInt(f[1],16),parseInt(f[2],16),parseInt(f[3],16)]}if(f=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(g)){return[parseInt(f[1]+f[1],16),parseInt(f[2]+f[2],16),parseInt(f[3]+f[3],16)]}if(f=/rgba\(0, 0, 0, 0\)/.exec(g)){return a.transparent}return a[d.trim(g).toLowerCase()]}function e(h,f){var g;do{g=d.curCSS(h,f);if(g!=""&&g!="transparent"||d.nodeName(h,"body")){break}f="backgroundColor"}while(h=h.parentNode);return b(g)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]};d.easing.jswing=d.easing.swing;d.extend(d.easing,{def:"easeOutQuad",swing:function(g,h,f,j,i){return d.easing[d.easing.def](g,h,f,j,i)},easeInQuad:function(g,h,f,j,i){return j*(h/=i)*h+f},easeOutQuad:function(g,h,f,j,i){return -j*(h/=i)*(h-2)+f},easeInOutQuad:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h+f}return -j/2*((--h)*(h-2)-1)+f},easeInCubic:function(g,h,f,j,i){return j*(h/=i)*h*h+f},easeOutCubic:function(g,h,f,j,i){return j*((h=h/i-1)*h*h+1)+f},easeInOutCubic:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h+f}return j/2*((h-=2)*h*h+2)+f},easeInQuart:function(g,h,f,j,i){return j*(h/=i)*h*h*h+f},easeOutQuart:function(g,h,f,j,i){return -j*((h=h/i-1)*h*h*h-1)+f},easeInOutQuart:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h*h+f}return -j/2*((h-=2)*h*h*h-2)+f},easeInQuint:function(g,h,f,j,i){return j*(h/=i)*h*h*h*h+f},easeOutQuint:function(g,h,f,j,i){return j*((h=h/i-1)*h*h*h*h+1)+f},easeInOutQuint:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h*h*h+f}return j/2*((h-=2)*h*h*h*h+2)+f},easeInSine:function(g,h,f,j,i){return -j*Math.cos(h/i*(Math.PI/2))+j+f},easeOutSine:function(g,h,f,j,i){return j*Math.sin(h/i*(Math.PI/2))+f},easeInOutSine:function(g,h,f,j,i){return -j/2*(Math.cos(Math.PI*h/i)-1)+f},easeInExpo:function(g,h,f,j,i){return(h==0)?f:j*Math.pow(2,10*(h/i-1))+f},easeOutExpo:function(g,h,f,j,i){return(h==i)?f+j:j*(-Math.pow(2,-10*h/i)+1)+f},easeInOutExpo:function(g,h,f,j,i){if(h==0){return f}if(h==i){return f+j}if((h/=i/2)<1){return j/2*Math.pow(2,10*(h-1))+f}return j/2*(-Math.pow(2,-10*--h)+2)+f},easeInCirc:function(g,h,f,j,i){return -j*(Math.sqrt(1-(h/=i)*h)-1)+f},easeOutCirc:function(g,h,f,j,i){return j*Math.sqrt(1-(h=h/i-1)*h)+f},easeInOutCirc:function(g,h,f,j,i){if((h/=i/2)<1){return -j/2*(Math.sqrt(1-h*h)-1)+f}return j/2*(Math.sqrt(1-(h-=2)*h)+1)+f},easeInElastic:function(g,i,f,m,l){var j=1.70158;var k=0;var h=m;if(i==0){return f}if((i/=l)==1){return f+m}if(!k){k=l*0.3}if(h").css({position:"absolute",visibility:"visible",left:-d*(g/e),top:-f*(c/k)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/e,height:c/k,left:l.left+d*(g/e)+(b.options.mode=="show"?(d-Math.floor(e/2))*(g/e):0),top:l.top+f*(c/k)+(b.options.mode=="show"?(f-Math.floor(k/2))*(c/k):0),opacity:b.options.mode=="show"?0:1}).animate({left:l.left+d*(g/e)+(b.options.mode=="show"?0:(d-Math.floor(e/2))*(g/e)),top:l.top+f*(c/k)+(b.options.mode=="show"?0:(f-Math.floor(k/2))*(c/k)),opacity:b.options.mode=="show"?1:0},b.duration||500)}}setTimeout(function(){b.options.mode=="show"?h.css({visibility:"visible"}):h.css({visibility:"visible"}).hide();if(b.callback){b.callback.apply(h[0])}h.dequeue();a("div.ui-effects-explode").remove()},b.duration||500)})}})(jQuery);(function(a){a.effects.fold=function(b){return this.queue(function(){var e=a(this),k=["position","top","left"];var h=a.effects.setMode(e,b.options.mode||"hide");var o=b.options.size||15;var n=!(!b.options.horizFirst);var g=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(e,k);e.show();var d=a.effects.createWrapper(e).css({overflow:"hidden"});var i=((h=="show")!=n);var f=i?["width","height"]:["height","width"];var c=i?[d.width(),d.height()]:[d.height(),d.width()];var j=/([0-9]+)%/.exec(o);if(j){o=parseInt(j[1],10)/100*c[h=="hide"?0:1]}if(h=="show"){d.css(n?{height:0,width:o}:{height:o,width:0})}var m={},l={};m[f[0]]=h=="show"?c[0]:o;l[f[1]]=h=="show"?c[1]:0;d.animate(m,g,b.options.easing).animate(l,g,b.options.easing,function(){if(h=="hide"){e.hide()}a.effects.restore(e,k);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(e[0],arguments)}e.dequeue()})})}})(jQuery);(function(a){a.effects.highlight=function(b){return this.queue(function(){var e=a(this),d=["backgroundImage","backgroundColor","opacity"];var h=a.effects.setMode(e,b.options.mode||"show");var c=b.options.color||"#ffff99";var g=e.css("backgroundColor");a.effects.save(e,d);e.show();e.css({backgroundImage:"none",backgroundColor:c});var f={backgroundColor:g};if(h=="hide"){f.opacity=0}e.animate(f,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(h=="hide"){e.hide()}a.effects.restore(e,d);if(h=="show"&&a.browser.msie){this.style.removeAttribute("filter")}if(b.callback){b.callback.apply(this,arguments)}e.dequeue()}})})}})(jQuery);(function(a){a.effects.pulsate=function(b){return this.queue(function(){var d=a(this);var g=a.effects.setMode(d,b.options.mode||"show");var f=b.options.times||5;var e=b.duration?b.duration/2:a.fx.speeds._default/2;if(g=="hide"){f--}if(d.is(":hidden")){d.css("opacity",0);d.show();d.animate({opacity:1},e,b.options.easing);f=f-2}for(var c=0;c').appendTo(document.body).addClass(b.options.className).css({top:d.top,left:d.left,height:f.innerHeight(),width:f.innerWidth(),position:"absolute"}).animate(g,b.duration,b.options.easing,function(){c.remove();(b.callback&&b.callback.apply(f[0],arguments));f.dequeue()})})}})(jQuery);(function(a){a.widget("ui.accordion",{_init:function(){var d=this.options,b=this;this.running=0;if(d.collapsible==a.ui.accordion.defaults.collapsible&&d.alwaysOpen!=a.ui.accordion.defaults.alwaysOpen){d.collapsible=!d.alwaysOpen}if(d.navigation){var c=this.element.find("a").filter(d.navigationFilter);if(c.length){if(c.filter(d.header).length){this.active=c}else{this.active=c.parent().parent().prev();c.addClass("ui-accordion-content-active")}}}this.element.addClass("ui-accordion ui-widget ui-helper-reset");if(this.element[0].nodeName=="UL"){this.element.children("li").addClass("ui-accordion-li-fix")}this.headers=this.element.find(d.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){a(this).removeClass("ui-state-focus")});this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");this.active=this._findActive(this.active||d.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");this.active.next().addClass("ui-accordion-content-active");a("").addClass("ui-icon "+d.icons.header).prependTo(this.headers);this.active.find(".ui-icon").toggleClass(d.icons.header).toggleClass(d.icons.headerSelected);if(a.browser.msie){this.element.find("a").css("zoom","1")}this.resize();this.element.attr("role","tablist");this.headers.attr("role","tab").bind("keydown",function(e){return b._keydown(e)}).next().attr("role","tabpanel");this.headers.not(this.active||"").attr("aria-expanded","false").attr("tabIndex","-1").next().hide();if(!this.active.length){this.headers.eq(0).attr("tabIndex","0")}else{this.active.attr("aria-expanded","true").attr("tabIndex","0")}if(!a.browser.safari){this.headers.find("a").attr("tabIndex","-1")}if(d.event){this.headers.bind((d.event)+".accordion",function(e){return b._clickHandler.call(b,e,this)})}},destroy:function(){var c=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role").unbind(".accordion").removeData("accordion");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex");this.headers.find("a").removeAttr("tabindex");this.headers.children(".ui-icon").remove();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");if(c.autoHeight||c.fillHeight){b.css("height","")}},_setData:function(b,c){if(b=="alwaysOpen"){b="collapsible";c=!c}a.widget.prototype._setData.apply(this,arguments)},_keydown:function(e){var g=this.options,f=a.ui.keyCode;if(g.disabled||e.altKey||e.ctrlKey){return}var d=this.headers.length;var b=this.headers.index(e.target);var c=false;switch(e.keyCode){case f.RIGHT:case f.DOWN:c=this.headers[(b+1)%d];break;case f.LEFT:case f.UP:c=this.headers[(b-1+d)%d];break;case f.SPACE:case f.ENTER:return this._clickHandler({target:e.target},e.target)}if(c){a(e.target).attr("tabIndex","-1");a(c).attr("tabIndex","0");c.focus();return false}return true},resize:function(){var e=this.options,d;if(e.fillSpace){if(a.browser.msie){var b=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}d=this.element.parent().height();if(a.browser.msie){this.element.parent().css("overflow",b)}this.headers.each(function(){d-=a(this).outerHeight()});var c=0;this.headers.next().each(function(){c=Math.max(c,a(this).innerHeight()-a(this).height())}).height(Math.max(0,d-c)).css("overflow","auto")}else{if(e.autoHeight){d=0;this.headers.next().each(function(){d=Math.max(d,a(this).outerHeight())}).height(d)}}},activate:function(b){var c=this._findActive(b)[0];this._clickHandler({target:c},c)},_findActive:function(b){return b?typeof b=="number"?this.headers.filter(":eq("+b+")"):this.headers.not(this.headers.not(b)):b===false?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(b,f){var d=this.options;if(d.disabled){return false}if(!b.target&&d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var h=this.active.next(),e={options:d,newHeader:a([]),oldHeader:d.active,newContent:a([]),oldContent:h},c=(this.active=a([]));this._toggle(c,h,e);return false}var g=a(b.currentTarget||f);var i=g[0]==this.active[0];if(this.running||(!d.collapsible&&i)){return false}this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");if(!i){g.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").find(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);g.next().addClass("ui-accordion-content-active")}var c=g.next(),h=this.active.next(),e={options:d,newHeader:i&&d.collapsible?a([]):g,oldHeader:this.active,newContent:i&&d.collapsible?a([]):c.find("> *"),oldContent:h.find("> *")},j=this.headers.index(this.active[0])>this.headers.index(g[0]);this.active=i?a([]):g;this._toggle(c,h,e,i,j);return false},_toggle:function(b,i,g,j,k){var d=this.options,m=this;this.toShow=b;this.toHide=i;this.data=g;var c=function(){if(!m){return}return m._completed.apply(m,arguments)};this._trigger("changestart",null,this.data);this.running=i.size()===0?b.size():i.size();if(d.animated){var f={};if(d.collapsible&&j){f={toShow:a([]),toHide:i,complete:c,down:k,autoHeight:d.autoHeight||d.fillSpace}}else{f={toShow:b,toHide:i,complete:c,down:k,autoHeight:d.autoHeight||d.fillSpace}}if(!d.proxied){d.proxied=d.animated}if(!d.proxiedDuration){d.proxiedDuration=d.duration}d.animated=a.isFunction(d.proxied)?d.proxied(f):d.proxied;d.duration=a.isFunction(d.proxiedDuration)?d.proxiedDuration(f):d.proxiedDuration;var l=a.ui.accordion.animations,e=d.duration,h=d.animated;if(!l[h]){l[h]=function(n){this.slide(n,{easing:h,duration:e||700})}}l[h](f)}else{if(d.collapsible&&j){b.toggle()}else{i.hide();b.show()}c(true)}i.prev().attr("aria-expanded","false").attr("tabIndex","-1").blur();b.prev().attr("aria-expanded","true").attr("tabIndex","0").focus()},_completed:function(b){var c=this.options;this.running=b?0:--this.running;if(this.running){return}if(c.clearStyle){this.toShow.add(this.toHide).css({height:"",overflow:""})}this._trigger("change",null,this.data)}});a.extend(a.ui.accordion,{version:"1.7.1",defaults:{active:null,alwaysOpen:true,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()==location.href.toLowerCase()}},animations:{slide:function(j,h){j=a.extend({easing:"swing",duration:300},j,h);if(!j.toHide.size()){j.toShow.animate({height:"show"},j);return}if(!j.toShow.size()){j.toHide.animate({height:"hide"},j);return}var c=j.toShow.css("overflow"),g,d={},f={},e=["height","paddingTop","paddingBottom"],b;var i=j.toShow;b=i[0].style.width;i.width(parseInt(i.parent().width(),10)-parseInt(i.css("paddingLeft"),10)-parseInt(i.css("paddingRight"),10)-(parseInt(i.css("borderLeftWidth"),10)||0)-(parseInt(i.css("borderRightWidth"),10)||0));a.each(e,function(k,m){f[m]="hide";var l=(""+a.css(j.toShow[0],m)).match(/^([\d+-.]+)(.*)$/);d[m]={value:l[1],unit:l[2]||"px"}});j.toShow.css({height:0,overflow:"hidden"}).show();j.toHide.filter(":hidden").each(j.complete).end().filter(":visible").animate(f,{step:function(k,l){if(l.prop=="height"){g=(l.now-l.start)/(l.end-l.start)}j.toShow[0].style[l.prop]=(g*d[l.prop].value)+d[l.prop].unit},duration:j.duration,easing:j.easing,complete:function(){if(!j.autoHeight){j.toShow.css("height","")}j.toShow.css("width",b);j.toShow.css({overflow:c});j.complete()}})},bounceslide:function(b){this.slide(b,{easing:b.down?"easeOutBounce":"swing",duration:b.down?1000:200})},easeslide:function(b){this.slide(b,{easing:"easeinout",duration:700})}}})})(jQuery);(function($){$.extend($.ui,{datepicker:{version:"1.7.1"}});var PROP_NAME="datepicker";function Datepicker(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._datepickerShowing=false;this._inDialog=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass="ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],dateFormat:"mm/dd/yy",firstDay:0,isRTL:false};this._defaults={showOn:"focus",showAnim:"show",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,showMonthAfterYear:false,yearRange:"-10:+10",showOtherMonths:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"normal",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false};$.extend(this._defaults,this.regional[""]);this.dpDiv=$('
')}$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",log:function(){if(this.debug){console.log.apply("",arguments)}},setDefaults:function(settings){extendRemove(this._defaults,settings||{});return this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase();var inline=(nodeName=="div"||nodeName=="span");if(!target.id){target.id="dp"+(++this.uuid)}var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{});if(nodeName=="input"){this._connectDatepicker(target,inst)}else{if(inline){this._inlineDatepicker(target,inst)}}},_newInst:function(target,inline){var id=target[0].id.replace(/([:\[\]\.])/g,"\\\\$1");return{id:id,input:target,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:inline,dpDiv:(!inline?this.dpDiv:$('
'))}},_connectDatepicker:function(target,inst){var input=$(target);inst.trigger=$([]);if(input.hasClass(this.markerClassName)){return}var appendText=this._get(inst,"appendText");var isRTL=this._get(inst,"isRTL");if(appendText){input[isRTL?"before":"after"](''+appendText+"")}var showOn=this._get(inst,"showOn");if(showOn=="focus"||showOn=="both"){input.focus(this._showDatepicker)}if(showOn=="button"||showOn=="both"){var buttonText=this._get(inst,"buttonText");var buttonImage=this._get(inst,"buttonImage");inst.trigger=$(this._get(inst,"buttonImageOnly")?$("").addClass(this._triggerClass).attr({src:buttonImage,alt:buttonText,title:buttonText}):$('').addClass(this._triggerClass).html(buttonImage==""?buttonText:$("").attr({src:buttonImage,alt:buttonText,title:buttonText})));input[isRTL?"before":"after"](inst.trigger);inst.trigger.click(function(){if($.datepicker._datepickerShowing&&$.datepicker._lastInput==target){$.datepicker._hideDatepicker()}else{$.datepicker._showDatepicker(target)}return false})}input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});$.data(target,PROP_NAME,inst)},_inlineDatepicker:function(target,inst){var divSpan=$(target);if(divSpan.hasClass(this.markerClassName)){return}divSpan.addClass(this.markerClassName).append(inst.dpDiv).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});$.data(target,PROP_NAME,inst);this._setDate(inst,this._getDefaultDate(inst));this._updateDatepicker(inst);this._updateAlternate(inst)},_dialogDatepicker:function(input,dateText,onSelect,settings,pos){var inst=this._dialogInst;if(!inst){var id="dp"+(++this.uuid);this._dialogInput=$('');this._dialogInput.keydown(this._doKeyDown);$("body").append(this._dialogInput);inst=this._dialogInst=this._newInst(this._dialogInput,false);inst.settings={};$.data(this._dialogInput[0],PROP_NAME,inst)}extendRemove(inst.settings,settings||{});this._dialogInput.val(dateText);this._pos=(pos?(pos.length?pos:[pos.pageX,pos.pageY]):null);if(!this._pos){var browserWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;var browserHeight=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[(browserWidth/2)-100+scrollX,(browserHeight/2)-150+scrollY]}this._dialogInput.css("left",this._pos[0]+"px").css("top",this._pos[1]+"px");inst.settings.onSelect=onSelect;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);if($.blockUI){$.blockUI(this.dpDiv)}$.data(this._dialogInput[0],PROP_NAME,inst);return this},_destroyDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();$.removeData(target,PROP_NAME);if(nodeName=="input"){inst.trigger.remove();$target.siblings("."+this._appendClass).remove().end().removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress)}else{if(nodeName=="div"||nodeName=="span"){$target.removeClass(this.markerClassName).empty()}}},_enableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=false;inst.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().removeClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)})},_disableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=true;inst.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().addClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)});this._disabledInputs[this._disabledInputs.length]=target},_isDisabledDatepicker:function(target){if(!target){return false}for(var i=0;i-1)}},_showDatepicker:function(input){input=input.target||input;if(input.nodeName.toLowerCase()!="input"){input=$("input",input.parentNode)[0]}if($.datepicker._isDisabledDatepicker(input)||$.datepicker._lastInput==input){return}var inst=$.datepicker._getInst(input);var beforeShow=$.datepicker._get(inst,"beforeShow");extendRemove(inst.settings,(beforeShow?beforeShow.apply(input,[input,inst]):{}));$.datepicker._hideDatepicker(null,"");$.datepicker._lastInput=input;$.datepicker._setDateFromField(inst);if($.datepicker._inDialog){input.value=""}if(!$.datepicker._pos){$.datepicker._pos=$.datepicker._findPos(input);$.datepicker._pos[1]+=input.offsetHeight}var isFixed=false;$(input).parents().each(function(){isFixed|=$(this).css("position")=="fixed";return !isFixed});if(isFixed&&$.browser.opera){$.datepicker._pos[0]-=document.documentElement.scrollLeft;$.datepicker._pos[1]-=document.documentElement.scrollTop}var offset={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null;inst.rangeStart=null;inst.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});$.datepicker._updateDatepicker(inst);offset=$.datepicker._checkOffset(inst,offset,isFixed);inst.dpDiv.css({position:($.datepicker._inDialog&&$.blockUI?"static":(isFixed?"fixed":"absolute")),display:"none",left:offset.left+"px",top:offset.top+"px"});if(!inst.inline){var showAnim=$.datepicker._get(inst,"showAnim")||"show";var duration=$.datepicker._get(inst,"duration");var postProcess=function(){$.datepicker._datepickerShowing=true;if($.browser.msie&&parseInt($.browser.version,10)<7){$("iframe.ui-datepicker-cover").css({width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4})}};if($.effects&&$.effects[showAnim]){inst.dpDiv.show(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[showAnim](duration,postProcess)}if(duration==""){postProcess()}if(inst.input[0].type!="hidden"){inst.input[0].focus()}$.datepicker._curInst=inst}},_updateDatepicker:function(inst){var dims={width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4};var self=this;inst.dpDiv.empty().append(this._generateHTML(inst)).find("iframe.ui-datepicker-cover").css({width:dims.width,height:dims.height}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){$(this).removeClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).removeClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).removeClass("ui-datepicker-next-hover")}}).bind("mouseover",function(){if(!self._isDisabledDatepicker(inst.inline?inst.dpDiv.parent()[0]:inst.input[0])){$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");$(this).addClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).addClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).addClass("ui-datepicker-next-hover")}}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();var numMonths=this._getNumberOfMonths(inst);var cols=numMonths[1];var width=17;if(cols>1){inst.dpDiv.addClass("ui-datepicker-multi-"+cols).css("width",(width*cols)+"em")}else{inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("")}inst.dpDiv[(numMonths[0]!=1||numMonths[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");inst.dpDiv[(this._get(inst,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");if(inst.input&&inst.input[0].type!="hidden"&&inst==$.datepicker._curInst){$(inst.input[0]).focus()}},_checkOffset:function(inst,offset,isFixed){var dpWidth=inst.dpDiv.outerWidth();var dpHeight=inst.dpDiv.outerHeight();var inputWidth=inst.input?inst.input.outerWidth():0;var inputHeight=inst.input?inst.input.outerHeight():0;var viewWidth=(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)+$(document).scrollLeft();var viewHeight=(window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)+$(document).scrollTop();offset.left-=(this._get(inst,"isRTL")?(dpWidth-inputWidth):0);offset.left-=(isFixed&&offset.left==inst.input.offset().left)?$(document).scrollLeft():0;offset.top-=(isFixed&&offset.top==(inst.input.offset().top+inputHeight))?$(document).scrollTop():0;offset.left-=(offset.left+dpWidth>viewWidth&&viewWidth>dpWidth)?Math.abs(offset.left+dpWidth-viewWidth):0;offset.top-=(offset.top+dpHeight>viewHeight&&viewHeight>dpHeight)?Math.abs(offset.top+dpHeight+inputHeight*2-viewHeight):0;return offset},_findPos:function(obj){while(obj&&(obj.type=="hidden"||obj.nodeType!=1)){obj=obj.nextSibling}var position=$(obj).offset();return[position.left,position.top]},_hideDatepicker:function(input,duration){var inst=this._curInst;if(!inst||(input&&inst!=$.data(input,PROP_NAME))){return}if(inst.stayOpen){this._selectDate("#"+inst.id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear))}inst.stayOpen=false;if(this._datepickerShowing){duration=(duration!=null?duration:this._get(inst,"duration"));var showAnim=this._get(inst,"showAnim");var postProcess=function(){$.datepicker._tidyDialog(inst)};if(duration!=""&&$.effects&&$.effects[showAnim]){inst.dpDiv.hide(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[(duration==""?"hide":(showAnim=="slideDown"?"slideUp":(showAnim=="fadeIn"?"fadeOut":"hide")))](duration,postProcess)}if(duration==""){this._tidyDialog(inst)}var onClose=this._get(inst,"onClose");if(onClose){onClose.apply((inst.input?inst.input[0]:null),[(inst.input?inst.input.val():""),inst])}this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if($.blockUI){$.unblockUI();$("body").append(this.dpDiv)}}this._inDialog=false}this._curInst=null},_tidyDialog:function(inst){inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(event){if(!$.datepicker._curInst){return}var $target=$(event.target);if(($target.parents("#"+$.datepicker._mainDivId).length==0)&&!$target.hasClass($.datepicker.markerClassName)&&!$target.hasClass($.datepicker._triggerClass)&&$.datepicker._datepickerShowing&&!($.datepicker._inDialog&&$.blockUI)){$.datepicker._hideDatepicker(null,"")}},_adjustDate:function(id,offset,period){var target=$(id);var inst=this._getInst(target[0]);if(this._isDisabledDatepicker(target[0])){return}this._adjustInstDate(inst,offset+(period=="M"?this._get(inst,"showCurrentAtPos"):0),period);this._updateDatepicker(inst)},_gotoToday:function(id){var target=$(id);var inst=this._getInst(target[0]);if(this._get(inst,"gotoCurrent")&&inst.currentDay){inst.selectedDay=inst.currentDay;inst.drawMonth=inst.selectedMonth=inst.currentMonth;inst.drawYear=inst.selectedYear=inst.currentYear}else{var date=new Date();inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear()}this._notifyChange(inst);this._adjustDate(target)},_selectMonthYear:function(id,select,period){var target=$(id);var inst=this._getInst(target[0]);inst._selectingMonthYear=false;inst["selected"+(period=="M"?"Month":"Year")]=inst["draw"+(period=="M"?"Month":"Year")]=parseInt(select.options[select.selectedIndex].value,10);this._notifyChange(inst);this._adjustDate(target)},_clickMonthYear:function(id){var target=$(id);var inst=this._getInst(target[0]);if(inst.input&&inst._selectingMonthYear&&!$.browser.msie){inst.input[0].focus()}inst._selectingMonthYear=!inst._selectingMonthYear},_selectDay:function(id,month,year,td){var target=$(id);if($(td).hasClass(this._unselectableClass)||this._isDisabledDatepicker(target[0])){return}var inst=this._getInst(target[0]);inst.selectedDay=inst.currentDay=$("a",td).html();inst.selectedMonth=inst.currentMonth=month;inst.selectedYear=inst.currentYear=year;if(inst.stayOpen){inst.endDay=inst.endMonth=inst.endYear=null}this._selectDate(id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear));if(inst.stayOpen){inst.rangeStart=this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay));this._updateDatepicker(inst)}},_clearDate:function(id){var target=$(id);var inst=this._getInst(target[0]);inst.stayOpen=false;inst.endDay=inst.endMonth=inst.endYear=inst.rangeStart=null;this._selectDate(target,"")},_selectDate:function(id,dateStr){var target=$(id);var inst=this._getInst(target[0]);dateStr=(dateStr!=null?dateStr:this._formatDate(inst));if(inst.input){inst.input.val(dateStr)}this._updateAlternate(inst);var onSelect=this._get(inst,"onSelect");if(onSelect){onSelect.apply((inst.input?inst.input[0]:null),[dateStr,inst])}else{if(inst.input){inst.input.trigger("change")}}if(inst.inline){this._updateDatepicker(inst)}else{if(!inst.stayOpen){this._hideDatepicker(null,this._get(inst,"duration"));this._lastInput=inst.input[0];if(typeof(inst.input[0])!="object"){inst.input[0].focus()}this._lastInput=null}}},_updateAlternate:function(inst){var altField=this._get(inst,"altField");if(altField){var altFormat=this._get(inst,"altFormat")||this._get(inst,"dateFormat");var date=this._getDate(inst);dateStr=this.formatDate(altFormat,date,this._getFormatConfig(inst));$(altField).each(function(){$(this).val(dateStr)})}},noWeekends:function(date){var day=date.getDay();return[(day>0&&day<6),""]},iso8601Week:function(date){var checkDate=new Date(date.getFullYear(),date.getMonth(),date.getDate());var firstMon=new Date(checkDate.getFullYear(),1-1,4);var firstDay=firstMon.getDay()||7;firstMon.setDate(firstMon.getDate()+1-firstDay);if(firstDay<4&&checkDatenew Date(checkDate.getFullYear(),12-1,28)){firstDay=new Date(checkDate.getFullYear()+1,1-1,4).getDay()||7;if(firstDay>4&&(checkDate.getDay()||7)0&&iValue="0"&&value.charAt(iValue)<="9"){num=num*10+parseInt(value.charAt(iValue++),10);size--}if(size==origSize){throw"Missing number at position "+iValue}return num};var getName=function(match,shortNames,longNames){var names=(lookAhead(match)?longNames:shortNames);var size=0;for(var j=0;j0&&iValue-1){month=1;day=doy;do{var dim=this._getDaysInMonth(year,month-1);if(day<=dim){break}month++;day-=dim}while(true)}var date=this._daylightSavingAdjust(new Date(year,month-1,day));if(date.getFullYear()!=year||date.getMonth()+1!=month||date.getDate()!=day){throw"Invalid date"}return date},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TIMESTAMP:"@",W3C:"yy-mm-dd",formatDate:function(format,date,settings){if(!date){return""}var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var lookAhead=function(match){var matches=(iFormat+1=0;m--){doy+=this._getDaysInMonth(date.getFullYear(),m)}output+=formatNumber("o",doy,3);break;case"m":output+=formatNumber("m",date.getMonth()+1,2);break;case"M":output+=formatName("M",date.getMonth(),monthNamesShort,monthNames);break;case"y":output+=(lookAhead("y")?date.getFullYear():(date.getYear()%100<10?"0":"")+date.getYear()%100);break;case"@":output+=date.getTime();break;case"'":if(lookAhead("'")){output+="'"}else{literal=true}break;default:output+=format.charAt(iFormat)}}}}return output},_possibleChars:function(format){var chars="";var literal=false;for(var iFormat=0;iFormatmaxDate?maxDate:date);return date},_determineDate:function(date,defaultDate){var offsetNumeric=function(offset){var date=new Date();date.setDate(date.getDate()+offset);return date};var offsetString=function(offset,getDaysInMonth){var date=new Date();var year=date.getFullYear();var month=date.getMonth();var day=date.getDate();var pattern=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;var matches=pattern.exec(offset);while(matches){switch(matches[2]||"d"){case"d":case"D":day+=parseInt(matches[1],10);break;case"w":case"W":day+=parseInt(matches[1],10)*7;break;case"m":case"M":month+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break;case"y":case"Y":year+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break}matches=pattern.exec(offset)}return new Date(year,month,day)};date=(date==null?defaultDate:(typeof date=="string"?offsetString(date,this._getDaysInMonth):(typeof date=="number"?(isNaN(date)?defaultDate:offsetNumeric(date)):date)));date=(date&&date.toString()=="Invalid Date"?defaultDate:date);if(date){date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0)}return this._daylightSavingAdjust(date)},_daylightSavingAdjust:function(date){if(!date){return null}date.setHours(date.getHours()>12?date.getHours()+2:0);return date},_setDate:function(inst,date,endDate){var clear=!(date);var origMonth=inst.selectedMonth;var origYear=inst.selectedYear;date=this._determineDate(date,new Date());inst.selectedDay=inst.currentDay=date.getDate();inst.drawMonth=inst.selectedMonth=inst.currentMonth=date.getMonth();inst.drawYear=inst.selectedYear=inst.currentYear=date.getFullYear();if(origMonth!=inst.selectedMonth||origYear!=inst.selectedYear){this._notifyChange(inst)}this._adjustInstDate(inst);if(inst.input){inst.input.val(clear?"":this._formatDate(inst))}},_getDate:function(inst){var startDate=(!inst.currentYear||(inst.input&&inst.input.val()=="")?null:this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return startDate},_generateHTML:function(inst){var today=new Date();today=this._daylightSavingAdjust(new Date(today.getFullYear(),today.getMonth(),today.getDate()));var isRTL=this._get(inst,"isRTL");var showButtonPanel=this._get(inst,"showButtonPanel");var hideIfNoPrevNext=this._get(inst,"hideIfNoPrevNext");var navigationAsDateFormat=this._get(inst,"navigationAsDateFormat");var numMonths=this._getNumberOfMonths(inst);var showCurrentAtPos=this._get(inst,"showCurrentAtPos");var stepMonths=this._get(inst,"stepMonths");var stepBigMonths=this._get(inst,"stepBigMonths");var isMultiMonth=(numMonths[0]!=1||numMonths[1]!=1);var currentDate=this._daylightSavingAdjust((!inst.currentDay?new Date(9999,9,9):new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");var drawMonth=inst.drawMonth-showCurrentAtPos;var drawYear=inst.drawYear;if(drawMonth<0){drawMonth+=12;drawYear--}if(maxDate){var maxDraw=this._daylightSavingAdjust(new Date(maxDate.getFullYear(),maxDate.getMonth()-numMonths[1]+1,maxDate.getDate()));maxDraw=(minDate&&maxDrawmaxDraw){drawMonth--;if(drawMonth<0){drawMonth=11;drawYear--}}}inst.drawMonth=drawMonth;inst.drawYear=drawYear;var prevText=this._get(inst,"prevText");prevText=(!navigationAsDateFormat?prevText:this.formatDate(prevText,this._daylightSavingAdjust(new Date(drawYear,drawMonth-stepMonths,1)),this._getFormatConfig(inst)));var prev=(this._canAdjustMonth(inst,-1,drawYear,drawMonth)?''+prevText+"":(hideIfNoPrevNext?"":''+prevText+""));var nextText=this._get(inst,"nextText");nextText=(!navigationAsDateFormat?nextText:this.formatDate(nextText,this._daylightSavingAdjust(new Date(drawYear,drawMonth+stepMonths,1)),this._getFormatConfig(inst)));var next=(this._canAdjustMonth(inst,+1,drawYear,drawMonth)?''+nextText+"":(hideIfNoPrevNext?"":''+nextText+""));var currentText=this._get(inst,"currentText");var gotoDate=(this._get(inst,"gotoCurrent")&&inst.currentDay?currentDate:today);currentText=(!navigationAsDateFormat?currentText:this.formatDate(currentText,gotoDate,this._getFormatConfig(inst)));var controls=(!inst.inline?'":"");var buttonPanel=(showButtonPanel)?'
'+(isRTL?controls:"")+(this._isInRange(inst,gotoDate)?'":"")+(isRTL?"":controls)+"
":"";var firstDay=parseInt(this._get(inst,"firstDay"),10);firstDay=(isNaN(firstDay)?0:firstDay);var dayNames=this._get(inst,"dayNames");var dayNamesShort=this._get(inst,"dayNamesShort");var dayNamesMin=this._get(inst,"dayNamesMin");var monthNames=this._get(inst,"monthNames");var monthNamesShort=this._get(inst,"monthNamesShort");var beforeShowDay=this._get(inst,"beforeShowDay");var showOtherMonths=this._get(inst,"showOtherMonths");var calculateWeek=this._get(inst,"calculateWeek")||this.iso8601Week;var endDate=inst.endDay?this._daylightSavingAdjust(new Date(inst.endYear,inst.endMonth,inst.endDay)):currentDate;var defaultDate=this._getDefaultDate(inst);var html="";for(var row=0;row'+(/all|left/.test(cornerClass)&&row==0?(isRTL?next:prev):"")+(/all|right/.test(cornerClass)&&row==0?(isRTL?prev:next):"")+this._generateMonthYearHeader(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,row>0||col>0,monthNames,monthNamesShort)+'';var thead="";for(var dow=0;dow<7;dow++){var day=(dow+firstDay)%7;thead+="=5?' class="ui-datepicker-week-end"':"")+'>'+dayNamesMin[day]+""}calender+=thead+"";var daysInMonth=this._getDaysInMonth(drawYear,drawMonth);if(drawYear==inst.selectedYear&&drawMonth==inst.selectedMonth){inst.selectedDay=Math.min(inst.selectedDay,daysInMonth)}var leadDays=(this._getFirstDayOfMonth(drawYear,drawMonth)-firstDay+7)%7;var numRows=(isMultiMonth?6:Math.ceil((leadDays+daysInMonth)/7));var printDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,1-leadDays));for(var dRow=0;dRow";var tbody="";for(var dow=0;dow<7;dow++){var daySettings=(beforeShowDay?beforeShowDay.apply((inst.input?inst.input[0]:null),[printDate]):[true,""]);var otherMonth=(printDate.getMonth()!=drawMonth);var unselectable=otherMonth||!daySettings[0]||(minDate&&printDatemaxDate);tbody+='";printDate.setDate(printDate.getDate()+1);printDate=this._daylightSavingAdjust(printDate)}calender+=tbody+""}drawMonth++;if(drawMonth>11){drawMonth=0;drawYear++}calender+="
=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?" "+this._currentClass:"")+(printDate.getTime()==today.getTime()?" ui-datepicker-today":""))+'"'+((!otherMonth||showOtherMonths)&&daySettings[2]?' title="'+daySettings[2]+'"':"")+(unselectable?"":" onclick=\"DP_jQuery.datepicker._selectDay('#"+inst.id+"',"+drawMonth+","+drawYear+', this);return false;"')+">"+(otherMonth?(showOtherMonths?printDate.getDate():" "):(unselectable?''+printDate.getDate()+"":'=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?" ui-state-active":"")+'" href="#">'+printDate.getDate()+""))+"
"+(isMultiMonth?""+((numMonths[0]>0&&col==numMonths[1]-1)?'
':""):"");group+=calender}html+=group}html+=buttonPanel+($.browser.msie&&parseInt($.browser.version,10)<7&&!inst.inline?'':"");inst._keyEvent=false;return html},_generateMonthYearHeader:function(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,secondary,monthNames,monthNamesShort){minDate=(inst.rangeStart&&minDate&&selectedDate "}else{var inMinYear=(minDate&&minDate.getFullYear()==drawYear);var inMaxYear=(maxDate&&maxDate.getFullYear()==drawYear);monthHtml+='"}if(!showMonthAfterYear){html+=monthHtml+((secondary||changeMonth||changeYear)&&(!(changeMonth&&changeYear))?" ":"")}if(secondary||!changeYear){html+=''+drawYear+""}else{var years=this._get(inst,"yearRange").split(":");var year=0;var endYear=0;if(years.length!=2){year=drawYear-10;endYear=drawYear+10}else{if(years[0].charAt(0)=="+"||years[0].charAt(0)=="-"){year=drawYear+parseInt(years[0],10);endYear=drawYear+parseInt(years[1],10)}else{year=parseInt(years[0],10);endYear=parseInt(years[1],10)}}year=(minDate?Math.max(year,minDate.getFullYear()):year);endYear=(maxDate?Math.min(endYear,maxDate.getFullYear()):endYear);html+='"}if(showMonthAfterYear){html+=(secondary||changeMonth||changeYear?" ":"")+monthHtml}html+="";return html},_adjustInstDate:function(inst,offset,period){var year=inst.drawYear+(period=="Y"?offset:0);var month=inst.drawMonth+(period=="M"?offset:0);var day=Math.min(inst.selectedDay,this._getDaysInMonth(year,month))+(period=="D"?offset:0);var date=this._daylightSavingAdjust(new Date(year,month,day));var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");date=(minDate&&datemaxDate?maxDate:date);inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();if(period=="M"||period=="Y"){this._notifyChange(inst)}},_notifyChange:function(inst){var onChange=this._get(inst,"onChangeMonthYear");if(onChange){onChange.apply((inst.input?inst.input[0]:null),[inst.selectedYear,inst.selectedMonth+1,inst])}},_getNumberOfMonths:function(inst){var numMonths=this._get(inst,"numberOfMonths");return(numMonths==null?[1,1]:(typeof numMonths=="number"?[1,numMonths]:numMonths))},_getMinMaxDate:function(inst,minMax,checkRange){var date=this._determineDate(this._get(inst,minMax+"Date"),null);return(!checkRange||!inst.rangeStart?date:(!date||inst.rangeStart>date?inst.rangeStart:date))},_getDaysInMonth:function(year,month){return 32-new Date(year,month,32).getDate()},_getFirstDayOfMonth:function(year,month){return new Date(year,month,1).getDay()},_canAdjustMonth:function(inst,offset,curYear,curMonth){var numMonths=this._getNumberOfMonths(inst);var date=this._daylightSavingAdjust(new Date(curYear,curMonth+(offset<0?offset:numMonths[1]),1));if(offset<0){date.setDate(this._getDaysInMonth(date.getFullYear(),date.getMonth()))}return this._isInRange(inst,date)},_isInRange:function(inst,date){var newMinDate=(!inst.rangeStart?null:this._daylightSavingAdjust(new Date(inst.selectedYear,inst.selectedMonth,inst.selectedDay)));newMinDate=(newMinDate&&inst.rangeStart=minDate)&&(!maxDate||date<=maxDate))},_getFormatConfig:function(inst){var shortYearCutoff=this._get(inst,"shortYearCutoff");shortYearCutoff=(typeof shortYearCutoff!="string"?shortYearCutoff:new Date().getFullYear()%100+parseInt(shortYearCutoff,10));return{shortYearCutoff:shortYearCutoff,dayNamesShort:this._get(inst,"dayNamesShort"),dayNames:this._get(inst,"dayNames"),monthNamesShort:this._get(inst,"monthNamesShort"),monthNames:this._get(inst,"monthNames")}},_formatDate:function(inst,day,month,year){if(!day){inst.currentDay=inst.selectedDay;inst.currentMonth=inst.selectedMonth;inst.currentYear=inst.selectedYear}var date=(day?(typeof day=="object"?day:this._daylightSavingAdjust(new Date(year,month,day))):this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return this.formatDate(this._get(inst,"dateFormat"),date,this._getFormatConfig(inst))}});function extendRemove(target,props){$.extend(target,props);for(var name in props){if(props[name]==null||props[name]==undefined){target[name]=props[name]}}return target}function isArray(a){return(a&&(($.browser.safari&&typeof a=="object"&&a.length)||(a.constructor&&a.constructor.toString().match(/\Array\(\)/))))}$.fn.datepicker=function(options){if(!$.datepicker.initialized){$(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv);$.datepicker.initialized=true}var otherArgs=Array.prototype.slice.call(arguments,1);if(typeof options=="string"&&(options=="isDisabled"||options=="getDate")){return $.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))}return this.each(function(){typeof options=="string"?$.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this].concat(otherArgs)):$.datepicker._attachDatepicker(this,options)})};$.datepicker=new Datepicker();$.datepicker.initialized=false;$.datepicker.uuid=new Date().getTime();$.datepicker.version="1.7.1";window.DP_jQuery=$})(jQuery);(function(c){var b={dragStart:"start.draggable",drag:"drag.draggable",dragStop:"stop.draggable",maxHeight:"maxHeight.resizable",minHeight:"minHeight.resizable",maxWidth:"maxWidth.resizable",minWidth:"minWidth.resizable",resizeStart:"start.resizable",resize:"drag.resizable",resizeStop:"stop.resizable"},a="ui-dialog ui-widget ui-widget-content ui-corner-all ";c.widget("ui.dialog",{_init:function(){this.originalTitle=this.element.attr("title");var l=this,m=this.options,j=m.title||this.originalTitle||" ",e=c.ui.dialog.getTitleId(this.element),k=(this.uiDialog=c("
")).appendTo(document.body).hide().addClass(a+m.dialogClass).css({position:"absolute",overflow:"hidden",zIndex:m.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(n){(m.closeOnEscape&&n.keyCode&&n.keyCode==c.ui.keyCode.ESCAPE&&l.close(n))}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(n){l.moveToTop(false,n)}),g=this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(k),f=(this.uiDialogTitlebar=c("
")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(k),i=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){i.addClass("ui-state-hover")},function(){i.removeClass("ui-state-hover")}).focus(function(){i.addClass("ui-state-focus")}).blur(function(){i.removeClass("ui-state-focus")}).mousedown(function(n){n.stopPropagation()}).click(function(n){l.close(n);return false}).appendTo(f),h=(this.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(m.closeText).appendTo(i),d=c("").addClass("ui-dialog-title").attr("id",e).html(j).prependTo(f);f.find("*").add(f).disableSelection();(m.draggable&&c.fn.draggable&&this._makeDraggable());(m.resizable&&c.fn.resizable&&this._makeResizable());this._createButtons(m.buttons);this._isOpen=false;(m.bgiframe&&c.fn.bgiframe&&k.bgiframe());(m.autoOpen&&this.open())},destroy:function(){(this.overlay&&this.overlay.destroy());this.uiDialog.hide();this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");this.uiDialog.remove();(this.originalTitle&&this.element.attr("title",this.originalTitle))},close:function(e){var d=this;if(false===d._trigger("beforeclose",e)){return}(d.overlay&&d.overlay.destroy());d.uiDialog.unbind("keypress.ui-dialog");(d.options.hide?d.uiDialog.hide(d.options.hide,function(){d._trigger("close",e)}):d.uiDialog.hide()&&d._trigger("close",e));c.ui.dialog.overlay.resize();d._isOpen=false},isOpen:function(){return this._isOpen},moveToTop:function(f,e){if((this.options.modal&&!f)||(!this.options.stack&&!this.options.modal)){return this._trigger("focus",e)}if(this.options.zIndex>c.ui.dialog.maxZ){c.ui.dialog.maxZ=this.options.zIndex}(this.overlay&&this.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=++c.ui.dialog.maxZ));var d={scrollTop:this.element.attr("scrollTop"),scrollLeft:this.element.attr("scrollLeft")};this.uiDialog.css("z-index",++c.ui.dialog.maxZ);this.element.attr(d);this._trigger("focus",e)},open:function(){if(this._isOpen){return}var e=this.options,d=this.uiDialog;this.overlay=e.modal?new c.ui.dialog.overlay(this):null;(d.next().length&&d.appendTo("body"));this._size();this._position(e.position);d.show(e.show);this.moveToTop(true);(e.modal&&d.bind("keypress.ui-dialog",function(h){if(h.keyCode!=c.ui.keyCode.TAB){return}var g=c(":tabbable",this),i=g.filter(":first")[0],f=g.filter(":last")[0];if(h.target==f&&!h.shiftKey){setTimeout(function(){i.focus()},1)}else{if(h.target==i&&h.shiftKey){setTimeout(function(){f.focus()},1)}}}));c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();this._trigger("open");this._isOpen=true},_createButtons:function(g){var f=this,d=false,e=c("
").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");this.uiDialog.find(".ui-dialog-buttonpane").remove();(typeof g=="object"&&g!==null&&c.each(g,function(){return !(d=true)}));if(d){c.each(g,function(h,i){c('').addClass("ui-state-default ui-corner-all").text(h).click(function(){i.apply(f.element[0],arguments)}).hover(function(){c(this).addClass("ui-state-hover")},function(){c(this).removeClass("ui-state-hover")}).focus(function(){c(this).addClass("ui-state-focus")}).blur(function(){c(this).removeClass("ui-state-focus")}).appendTo(e)});e.appendTo(this.uiDialog)}},_makeDraggable:function(){var d=this,f=this.options,e;this.uiDialog.draggable({cancel:".ui-dialog-content",handle:".ui-dialog-titlebar",containment:"document",start:function(){e=f.height;c(this).height(c(this).height()).addClass("ui-dialog-dragging");(f.dragStart&&f.dragStart.apply(d.element[0],arguments))},drag:function(){(f.drag&&f.drag.apply(d.element[0],arguments))},stop:function(){c(this).removeClass("ui-dialog-dragging").height(e);(f.dragStop&&f.dragStop.apply(d.element[0],arguments));c.ui.dialog.overlay.resize()}})},_makeResizable:function(g){g=(g===undefined?this.options.resizable:g);var d=this,f=this.options,e=typeof g=="string"?g:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",alsoResize:this.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:f.minHeight,start:function(){c(this).addClass("ui-dialog-resizing");(f.resizeStart&&f.resizeStart.apply(d.element[0],arguments))},resize:function(){(f.resize&&f.resize.apply(d.element[0],arguments))},handles:e,stop:function(){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();(f.resizeStop&&f.resizeStop.apply(d.element[0],arguments));c.ui.dialog.overlay.resize()}}).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_position:function(i){var e=c(window),f=c(document),g=f.scrollTop(),d=f.scrollLeft(),h=g;if(c.inArray(i,["center","top","right","bottom","left"])>=0){i=[i=="right"||i=="left"?i:"center",i=="top"||i=="bottom"?i:"middle"]}if(i.constructor!=Array){i=["center","middle"]}if(i[0].constructor==Number){d+=i[0]}else{switch(i[0]){case"left":d+=0;break;case"right":d+=e.width()-this.uiDialog.outerWidth();break;default:case"center":d+=(e.width()-this.uiDialog.outerWidth())/2}}if(i[1].constructor==Number){g+=i[1]}else{switch(i[1]){case"top":g+=0;break;case"bottom":g+=e.height()-this.uiDialog.outerHeight();break;default:case"middle":g+=(e.height()-this.uiDialog.outerHeight())/2}}g=Math.max(g,h);this.uiDialog.css({top:g,left:d})},_setData:function(e,f){(b[e]&&this.uiDialog.data(b[e],f));switch(e){case"buttons":this._createButtons(f);break;case"closeText":this.uiDialogTitlebarCloseText.text(f);break;case"dialogClass":this.uiDialog.removeClass(this.options.dialogClass).addClass(a+f);break;case"draggable":(f?this._makeDraggable():this.uiDialog.draggable("destroy"));break;case"height":this.uiDialog.height(f);break;case"position":this._position(f);break;case"resizable":var d=this.uiDialog,g=this.uiDialog.is(":data(resizable)");(g&&!f&&d.resizable("destroy"));(g&&typeof f=="string"&&d.resizable("option","handles",f));(g||this._makeResizable(f));break;case"title":c(".ui-dialog-title",this.uiDialogTitlebar).html(f||" ");break;case"width":this.uiDialog.width(f);break}c.widget.prototype._setData.apply(this,arguments)},_size:function(){var e=this.options;this.element.css({height:0,minHeight:0,width:"auto"});var d=this.uiDialog.css({height:"auto",width:e.width}).height();this.element.css({minHeight:Math.max(e.minHeight-d,0),height:e.height=="auto"?"auto":Math.max(e.height-d,0)})}});c.extend(c.ui.dialog,{version:"1.7.1",defaults:{autoOpen:true,bgiframe:false,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1000},getter:"isOpen",uuid:0,maxZ:0,getTitleId:function(d){return"ui-dialog-title-"+(d.attr("id")||++this.uuid)},overlay:function(d){this.$el=c.ui.dialog.overlay.create(d)}});c.extend(c.ui.dialog.overlay,{instances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(d){return d+".dialog-overlay"}).join(" "),create:function(e){if(this.instances.length===0){setTimeout(function(){c(document).bind(c.ui.dialog.overlay.events,function(f){var g=c(f.target).parents(".ui-dialog").css("zIndex")||0;return(g>c.ui.dialog.overlay.maxZ)})},1);c(document).bind("keydown.dialog-overlay",function(f){(e.options.closeOnEscape&&f.keyCode&&f.keyCode==c.ui.keyCode.ESCAPE&&e.close(f))});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var d=c("
").appendTo(document.body).addClass("ui-widget-overlay").css({width:this.width(),height:this.height()});(e.options.bgiframe&&c.fn.bgiframe&&d.bgiframe());this.instances.push(d);return d},destroy:function(d){this.instances.splice(c.inArray(this.instances,d),1);if(this.instances.length===0){c([document,window]).unbind(".dialog-overlay")}d.remove()},height:function(){if(c.browser.msie&&c.browser.version<7){var e=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);var d=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);if(e
').appendTo(this.element);this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow").removeData("progressbar").unbind(".progressbar");this.valueDiv.remove();a.widget.prototype.destroy.apply(this,arguments)},value:function(b){arguments.length&&this._setData("value",b);return this._value()},_setData:function(b,c){switch(b){case"value":this.options.value=c;this._refreshValue();this._trigger("change",null,{});break}a.widget.prototype._setData.apply(this,arguments)},_value:function(){var b=this.options.value;if(bthis._valueMax()){b=this._valueMax()}return b},_valueMin:function(){var b=0;return b},_valueMax:function(){var b=100;return b},_refreshValue:function(){var b=this.value();this.valueDiv[b==this._valueMax()?"addClass":"removeClass"]("ui-corner-right");this.valueDiv.width(b+"%");this.element.attr("aria-valuenow",b)}});a.extend(a.ui.progressbar,{version:"1.7.1",defaults:{value:0}})})(jQuery);(function(a){a.widget("ui.slider",a.extend({},a.ui.mouse,{_init:function(){var b=this,c=this.options;this._keySliding=false;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");this.range=a([]);if(c.range){if(c.range===true){this.range=a("
");if(!c.values){c.values=[this._valueMin(),this._valueMin()]}if(c.values.length&&c.values.length!=2){c.values=[c.values[0],c.values[0]]}}else{this.range=a("
")}this.range.appendTo(this.element).addClass("ui-slider-range");if(c.range=="min"||c.range=="max"){this.range.addClass("ui-slider-range-"+c.range)}this.range.addClass("ui-widget-header")}if(a(".ui-slider-handle",this.element).length==0){a('
').appendTo(this.element).addClass("ui-slider-handle")}if(c.values&&c.values.length){while(a(".ui-slider-handle",this.element).length').appendTo(this.element).addClass("ui-slider-handle")}}this.handles=a(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(d){d.preventDefault()}).hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){a(".ui-slider .ui-state-focus").removeClass("ui-state-focus");a(this).addClass("ui-state-focus")}).blur(function(){a(this).removeClass("ui-state-focus")});this.handles.each(function(d){a(this).data("index.ui-slider-handle",d)});this.handles.keydown(function(i){var f=true;var e=a(this).data("index.ui-slider-handle");if(b.options.disabled){return}switch(i.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:f=false;if(!b._keySliding){b._keySliding=true;a(this).addClass("ui-state-active");b._start(i,e)}break}var g,d,h=b._step();if(b.options.values&&b.options.values.length){g=d=b.values(e)}else{g=d=b.value()}switch(i.keyCode){case a.ui.keyCode.HOME:d=b._valueMin();break;case a.ui.keyCode.END:d=b._valueMax();break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(g==b._valueMax()){return}d=g+h;break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(g==b._valueMin()){return}d=g-h;break}b._slide(i,e,d);return f}).keyup(function(e){var d=a(this).data("index.ui-slider-handle");if(b._keySliding){b._stop(e,d);b._change(e,d);b._keySliding=false;a(this).removeClass("ui-state-active")}});this._refreshValue()},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy()},_mouseCapture:function(d){var e=this.options;if(e.disabled){return false}this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();var h={x:d.pageX,y:d.pageY};var j=this._normValueFromMouse(h);var c=this._valueMax()-this._valueMin()+1,f;var k=this,i;this.handles.each(function(l){var m=Math.abs(j-k.values(l));if(c>m){c=m;f=a(this);i=l}});if(e.range==true&&this.values(1)==e.min){f=a(this.handles[++i])}this._start(d,i);k._handleIndex=i;f.addClass("ui-state-active").focus();var g=f.offset();var b=!a(d.target).parents().andSelf().is(".ui-slider-handle");this._clickOffset=b?{left:0,top:0}:{left:d.pageX-g.left-(f.width()/2),top:d.pageY-g.top-(f.height()/2)-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};j=this._normValueFromMouse(h);this._slide(d,i,j);return true},_mouseStart:function(b){return true},_mouseDrag:function(d){var b={x:d.pageX,y:d.pageY};var c=this._normValueFromMouse(b);this._slide(d,this._handleIndex,c);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._handleIndex=null;this._clickOffset=null;return false},_detectOrientation:function(){this.orientation=this.options.orientation=="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(d){var c,h;if("horizontal"==this.orientation){c=this.elementSize.width;h=d.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{c=this.elementSize.height;h=d.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}var f=(h/c);if(f>1){f=1}if(f<0){f=0}if("vertical"==this.orientation){f=1-f}var e=this._valueMax()-this._valueMin(),i=f*e,b=i%this.options.step,g=this._valueMin()+i-b;if(b>(this.options.step/2)){g+=this.options.step}return parseFloat(g.toFixed(5))},_start:function(d,c){var b={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){b.value=this.values(c);b.values=this.values()}this._trigger("start",d,b)},_slide:function(f,e,d){var g=this.handles[e];if(this.options.values&&this.options.values.length){var b=this.values(e?0:1);if((e==0&&d>=b)||(e==1&&d<=b)){d=b}if(d!=this.values(e)){var c=this.values();c[e]=d;var h=this._trigger("slide",f,{handle:this.handles[e],value:d,values:c});var b=this.values(e?0:1);if(h!==false){this.values(e,d,(f.type=="mousedown"&&this.options.animate),true)}}}else{if(d!=this.value()){var h=this._trigger("slide",f,{handle:this.handles[e],value:d});if(h!==false){this._setData("value",d,(f.type=="mousedown"&&this.options.animate))}}}},_stop:function(d,c){var b={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){b.value=this.values(c);b.values=this.values()}this._trigger("stop",d,b)},_change:function(d,c){var b={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){b.value=this.values(c);b.values=this.values()}this._trigger("change",d,b)},value:function(b){if(arguments.length){this._setData("value",b);this._change(null,0)}return this._value()},values:function(b,e,c,d){if(arguments.length>1){this.options.values[b]=e;this._refreshValue(c);if(!d){this._change(null,b)}}if(arguments.length){if(this.options.values&&this.options.values.length){return this._values(b)}else{return this.value()}}else{return this._values()}},_setData:function(b,d,c){a.widget.prototype._setData.apply(this,arguments);switch(b){case"orientation":this._detectOrientation();this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue(c);break;case"value":this._refreshValue(c);break}},_step:function(){var b=this.options.step;return b},_value:function(){var b=this.options.value;if(bthis._valueMax()){b=this._valueMax()}return b},_values:function(b){if(arguments.length){var c=this.options.values[b];if(cthis._valueMax()){c=this._valueMax()}return c}else{return this.options.values}},_valueMin:function(){var b=this.options.min;return b},_valueMax:function(){var b=this.options.max;return b},_refreshValue:function(c){var f=this.options.range,d=this.options,l=this;if(this.options.values&&this.options.values.length){var i,h;this.handles.each(function(p,n){var o=(l.values(p)-l._valueMin())/(l._valueMax()-l._valueMin())*100;var m={};m[l.orientation=="horizontal"?"left":"bottom"]=o+"%";a(this).stop(1,1)[c?"animate":"css"](m,d.animate);if(l.options.range===true){if(l.orientation=="horizontal"){(p==0)&&l.range.stop(1,1)[c?"animate":"css"]({left:o+"%"},d.animate);(p==1)&&l.range[c?"animate":"css"]({width:(o-lastValPercent)+"%"},{queue:false,duration:d.animate})}else{(p==0)&&l.range.stop(1,1)[c?"animate":"css"]({bottom:(o)+"%"},d.animate);(p==1)&&l.range[c?"animate":"css"]({height:(o-lastValPercent)+"%"},{queue:false,duration:d.animate})}}lastValPercent=o})}else{var j=this.value(),g=this._valueMin(),k=this._valueMax(),e=k!=g?(j-g)/(k-g)*100:0;var b={};b[l.orientation=="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[c?"animate":"css"](b,d.animate);(f=="min")&&(this.orientation=="horizontal")&&this.range.stop(1,1)[c?"animate":"css"]({width:e+"%"},d.animate);(f=="max")&&(this.orientation=="horizontal")&&this.range[c?"animate":"css"]({width:(100-e)+"%"},{queue:false,duration:d.animate});(f=="min")&&(this.orientation=="vertical")&&this.range.stop(1,1)[c?"animate":"css"]({height:e+"%"},d.animate);(f=="max")&&(this.orientation=="vertical")&&this.range[c?"animate":"css"]({height:(100-e)+"%"},{queue:false,duration:d.animate})}}}));a.extend(a.ui.slider,{getter:"value values",version:"1.7.1",eventPrefix:"slide",defaults:{animate:false,delay:0,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null}})})(jQuery);(function(a){a.widget("ui.tabs",{_init:function(){if(this.options.deselectable!==undefined){this.options.collapsible=this.options.deselectable}this._tabify(true)},_setData:function(b,c){if(b=="selected"){if(this.options.collapsible&&c==this.options.selected){return}this.select(c)}else{this.options[b]=c;if(b=="deselectable"){this.options.collapsible=c}this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+a.data(b)},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+a.data(this.list[0]));return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(c,b){return{tab:c,panel:b,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(n){this.list=this.element.children("ul:first");this.lis=a("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return a("a",this)[0]});this.panels=a([]);var p=this,d=this.options;var c=/^#.+/;this.anchors.each(function(r,o){var q=a(o).attr("href");var s=q.split("#")[0],u;if(s&&(s===location.toString().split("#")[0]||(u=a("base")[0])&&s===u.href)){q=o.hash;o.href=q}if(c.test(q)){p.panels=p.panels.add(p._sanitizeSelector(q))}else{if(q!="#"){a.data(o,"href.tabs",q);a.data(o,"load.tabs",q.replace(/#.*$/,""));var w=p._tabId(o);o.href="#"+w;var v=a("#"+w);if(!v.length){v=a(d.panelTemplate).attr("id",w).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(p.panels[r-1]||p.list);v.data("destroy.tabs",true)}p.panels=p.panels.add(v)}else{d.disabled.push(r)}}});if(n){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(d.selected===undefined){if(location.hash){this.anchors.each(function(q,o){if(o.hash==location.hash){d.selected=q;return false}})}if(typeof d.selected!="number"&&d.cookie){d.selected=parseInt(p._cookie(),10)}if(typeof d.selected!="number"&&this.lis.filter(".ui-tabs-selected").length){d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}d.selected=d.selected||0}else{if(d.selected===null){d.selected=-1}}d.selected=((d.selected>=0&&this.anchors[d.selected])||d.selected<0)?d.selected:0;d.disabled=a.unique(d.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(q,o){return p.lis.index(q)}))).sort();if(a.inArray(d.selected,d.disabled)!=-1){d.disabled.splice(a.inArray(d.selected,d.disabled),1)}this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");if(d.selected>=0&&this.anchors.length){this.panels.eq(d.selected).removeClass("ui-tabs-hide");this.lis.eq(d.selected).addClass("ui-tabs-selected ui-state-active");p.element.queue("tabs",function(){p._trigger("show",null,p._ui(p.anchors[d.selected],p.panels[d.selected]))});this.load(d.selected)}a(window).bind("unload",function(){p.lis.add(p.anchors).unbind(".tabs");p.lis=p.anchors=p.panels=null})}else{d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}this.element[d.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");if(d.cookie){this._cookie(d.selected,d.cookie)}for(var g=0,m;(m=this.lis[g]);g++){a(m)[a.inArray(g,d.disabled)!=-1&&!a(m).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled")}if(d.cache===false){this.anchors.removeData("cache.tabs")}this.lis.add(this.anchors).unbind(".tabs");if(d.event!="mouseover"){var f=function(o,i){if(i.is(":not(.ui-state-disabled)")){i.addClass("ui-state-"+o)}};var j=function(o,i){i.removeClass("ui-state-"+o)};this.lis.bind("mouseover.tabs",function(){f("hover",a(this))});this.lis.bind("mouseout.tabs",function(){j("hover",a(this))});this.anchors.bind("focus.tabs",function(){f("focus",a(this).closest("li"))});this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var b,h;if(d.fx){if(a.isArray(d.fx)){b=d.fx[0];h=d.fx[1]}else{b=h=d.fx}}function e(i,o){i.css({display:""});if(a.browser.msie&&o.opacity){i[0].style.removeAttribute("filter")}}var k=h?function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.hide().removeClass("ui-tabs-hide").animate(h,h.duration||"normal",function(){e(o,h);p._trigger("show",null,p._ui(i,o[0]))})}:function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.removeClass("ui-tabs-hide");p._trigger("show",null,p._ui(i,o[0]))};var l=b?function(o,i){i.animate(b,b.duration||"normal",function(){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");e(i,b);p.element.dequeue("tabs")})}:function(o,i,q){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");p.element.dequeue("tabs")};this.anchors.bind(d.event+".tabs",function(){var o=this,r=a(this).closest("li"),i=p.panels.filter(":not(.ui-tabs-hide)"),q=a(p._sanitizeSelector(this.hash));if((r.hasClass("ui-tabs-selected")&&!d.collapsible)||r.hasClass("ui-state-disabled")||r.hasClass("ui-state-processing")||p._trigger("select",null,p._ui(this,q[0]))===false){this.blur();return false}d.selected=p.anchors.index(this);p.abort();if(d.collapsible){if(r.hasClass("ui-tabs-selected")){d.selected=-1;if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){l(o,i)}).dequeue("tabs");this.blur();return false}else{if(!i.length){if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this));this.blur();return false}}}if(d.cookie){p._cookie(d.selected,d.cookie)}if(q.length){if(i.length){p.element.queue("tabs",function(){l(o,i)})}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this))}else{throw"jQuery UI Tabs: Mismatching fragment identifier."}if(a.browser.msie){this.blur()}});this.anchors.bind("click.tabs",function(){return false})},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var c=a.data(this,"href.tabs");if(c){this.href=c}var d=a(this).unbind(".tabs");a.each(["href","load","cache"],function(e,f){d.removeData(f+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){if(a.data(this,"destroy.tabs")){a(this).remove()}else{a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}});if(b.cookie){this._cookie(null,b.cookie)}},add:function(e,d,c){if(c===undefined){c=this.anchors.length}var b=this,g=this.options,i=a(g.tabTemplate.replace(/#\{href\}/g,e).replace(/#\{label\}/g,d)),h=!e.indexOf("#")?e.replace("#",""):this._tabId(a("a",i)[0]);i.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var f=a("#"+h);if(!f.length){f=a(g.panelTemplate).attr("id",h).data("destroy.tabs",true)}f.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(c>=this.lis.length){i.appendTo(this.list);f.appendTo(this.list[0].parentNode)}else{i.insertBefore(this.lis[c]);f.insertBefore(this.panels[c])}g.disabled=a.map(g.disabled,function(k,j){return k>=c?++k:k});this._tabify();if(this.anchors.length==1){i.addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[c],this.panels[c]))},remove:function(b){var d=this.options,e=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();if(e.hasClass("ui-tabs-selected")&&this.anchors.length>1){this.select(b+(b+1=b?--g:g});this._tabify();this._trigger("remove",null,this._ui(e.find("a")[0],c[0]))},enable:function(b){var c=this.options;if(a.inArray(b,c.disabled)==-1){return}this.lis.eq(b).removeClass("ui-state-disabled");c.disabled=a.grep(c.disabled,function(e,d){return e!=b});this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]))},disable:function(c){var b=this,d=this.options;if(c!=d.selected){this.lis.eq(c).addClass("ui-state-disabled");d.disabled.push(c);d.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}},select:function(b){if(typeof b=="string"){b=this.anchors.index(this.anchors.filter("[href$="+b+"]"))}else{if(b===null){b=-1}}if(b==-1&&this.options.collapsible){b=this.options.selected}this.anchors.eq(b).trigger(this.options.event+".tabs")},load:function(e){var c=this,g=this.options,b=this.anchors.eq(e)[0],d=a.data(b,"load.tabs");this.abort();if(!d||this.element.queue("tabs").length!==0&&a.data(b,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(e).addClass("ui-state-processing");if(g.spinner){var f=a("span",b);f.data("label.tabs",f.html()).html(g.spinner)}this.xhr=a.ajax(a.extend({},g.ajaxOptions,{url:d,success:function(i,h){a(c._sanitizeSelector(b.hash)).html(i);c._cleanup();if(g.cache){a.data(b,"cache.tabs",true)}c._trigger("load",null,c._ui(c.anchors[e],c.panels[e]));try{g.ajaxOptions.success(i,h)}catch(j){}c.element.dequeue("tabs")}}))},abort:function(){this.element.queue([]);this.panels.stop(false,true);if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup()},url:function(c,b){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",b)},length:function(){return this.anchors.length}});a.extend(a.ui.tabs,{version:"1.7.1",getter:"length",defaults:{ajaxOptions:null,cache:false,cookie:null,collapsible:false,disabled:[],event:"click",fx:null,idPrefix:"ui-tabs-",panelTemplate:"
",spinner:"Loading…",tabTemplate:'
  • #{label}
  • '}});a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(d,f){var b=this,g=this.options;var c=b._rotate||(b._rotate=function(h){clearTimeout(b.rotation);b.rotation=setTimeout(function(){var i=g.selected;b.select(++i)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
    a",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="
    t
    ",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
    ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj; +return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="
    ",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&>(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:b.support.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l) +}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b(" + +- [Introduction to version control with git](http://swcarpentry.github.io/git-novice/) + +## General coding tutorials + +- [Software carpentry](https://software-carpentry.org/lessons/) + +## Python for Neuroimaging research +- [Lessons on using iPython notebooks](https://github.com/datacarpentry/python-neuroimaging-lesson) + +