From 5a066a3f5de5d2d2fff9df6c5847658643c1f4e0 Mon Sep 17 00:00:00 2001 From: Hynek Kydlicek Date: Sat, 13 May 2023 01:26:06 +0200 Subject: [PATCH] docs --- docs/build/doctrees/api.doctree | Bin 0 -> 4150 bytes docs/build/doctrees/cli/cli.doctree | Bin 0 -> 7226 bytes docs/build/doctrees/cli/download.doctree | Bin 0 -> 16083 bytes docs/build/doctrees/cli/extract.doctree | Bin 0 -> 17674 bytes docs/build/doctrees/cli/index.doctree | Bin 0 -> 2845 bytes docs/build/doctrees/environment.pickle | Bin 0 -> 447558 bytes .../doctrees/extraction/config_file.doctree | Bin 0 -> 18267 bytes .../extraction/creating_extractor.doctree | Bin 0 -> 15604 bytes docs/build/doctrees/extraction/index.doctree | Bin 0 -> 2848 bytes docs/build/doctrees/extraction/utils.doctree | Bin 0 -> 8169 bytes .../generated/cmoncrawl.aggregator.doctree | Bin 0 -> 5976 bytes ...dex_query.IndexAggregator.__init__.doctree | Bin 0 -> 16051 bytes ...index_query.IndexAggregator.aclose.doctree | Bin 0 -> 9377 bytes ....index_query.IndexAggregator.aopen.doctree | Bin 0 -> 4857 bytes ...egator.index_query.IndexAggregator.doctree | Bin 0 -> 37518 bytes ...IndexAggregator.get_all_CC_indexes.doctree | Bin 0 -> 6990 bytes ...xAggregator.get_captured_responses.doctree | Bin 0 -> 11632 bytes ...ndexAggregator.get_number_of_pages.doctree | Bin 0 -> 9861 bytes .../cmoncrawl.aggregator.index_query.doctree | Bin 0 -> 8979 bytes .../cmoncrawl.aggregator.utils.doctree | Bin 0 -> 6196 bytes ...cmoncrawl.aggregator.utils.helpers.doctree | Bin 0 -> 4914 bytes ...ls.ndjson_decoder.Decoder.__init__.doctree | Bin 0 -> 13989 bytes ...tils.ndjson_decoder.Decoder.decode.doctree | Bin 0 -> 6254 bytes ...gator.utils.ndjson_decoder.Decoder.doctree | Bin 0 -> 25998 bytes ....ndjson_decoder.Decoder.raw_decode.doctree | Bin 0 -> 6093 bytes ...wl.aggregator.utils.ndjson_decoder.doctree | Bin 0 -> 5490 bytes .../generated/cmoncrawl.common.doctree | Bin 0 -> 5824 bytes .../cmoncrawl.common.loggers.doctree | Bin 0 -> 2859 bytes ....common.types.DomainCrawl.__init__.doctree | Bin 0 -> 7639 bytes ...cmoncrawl.common.types.DomainCrawl.doctree | Bin 0 -> 17989 bytes ...common.types.DomainRecord.__init__.doctree | Bin 0 -> 12190 bytes ...moncrawl.common.types.DomainRecord.doctree | Bin 0 -> 36970 bytes ...ommon.types.DomainRecord.from_dict.doctree | Bin 0 -> 8890 bytes ...ommon.types.DomainRecord.from_json.doctree | Bin 0 -> 8994 bytes ...l.common.types.DomainRecord.schema.doctree | Bin 0 -> 11251 bytes ....common.types.DomainRecord.to_dict.doctree | Bin 0 -> 8412 bytes ....common.types.DomainRecord.to_json.doctree | Bin 0 -> 16752 bytes ...ommon.types.ExtractConfig.__init__.doctree | Bin 0 -> 6301 bytes ...oncrawl.common.types.ExtractConfig.doctree | Bin 0 -> 20553 bytes ...mmon.types.ExtractConfig.from_dict.doctree | Bin 0 -> 8905 bytes ...mmon.types.ExtractConfig.from_json.doctree | Bin 0 -> 9009 bytes ....common.types.ExtractConfig.schema.doctree | Bin 0 -> 11265 bytes ...common.types.ExtractConfig.to_dict.doctree | Bin 0 -> 8427 bytes ...common.types.ExtractConfig.to_json.doctree | Bin 0 -> 16767 bytes ...mon.types.ExtractorConfig.__init__.doctree | Bin 0 -> 8264 bytes ...crawl.common.types.ExtractorConfig.doctree | Bin 0 -> 25358 bytes ...on.types.ExtractorConfig.from_dict.doctree | Bin 0 -> 8935 bytes ...on.types.ExtractorConfig.from_json.doctree | Bin 0 -> 9039 bytes ...ommon.types.ExtractorConfig.schema.doctree | Bin 0 -> 11293 bytes ...mmon.types.ExtractorConfig.to_dict.doctree | Bin 0 -> 8457 bytes ...mmon.types.ExtractorConfig.to_json.doctree | Bin 0 -> 16797 bytes ...common.types.PipeMetadata.__init__.doctree | Bin 0 -> 7157 bytes ...moncrawl.common.types.PipeMetadata.doctree | Bin 0 -> 20439 bytes ...on.types.RetrieveResponse.__init__.doctree | Bin 0 -> 6895 bytes ...rawl.common.types.RetrieveResponse.doctree | Bin 0 -> 16512 bytes ...common.types.RoutesConfig.__init__.doctree | Bin 0 -> 5149 bytes ...moncrawl.common.types.RoutesConfig.doctree | Bin 0 -> 18100 bytes ...ommon.types.RoutesConfig.from_dict.doctree | Bin 0 -> 8890 bytes ...ommon.types.RoutesConfig.from_json.doctree | Bin 0 -> 8994 bytes ...l.common.types.RoutesConfig.schema.doctree | Bin 0 -> 11251 bytes ....common.types.RoutesConfig.to_dict.doctree | Bin 0 -> 8412 bytes ....common.types.RoutesConfig.to_json.doctree | Bin 0 -> 16752 bytes .../generated/cmoncrawl.common.types.doctree | Bin 0 -> 12267 bytes .../doctrees/generated/cmoncrawl.doctree | Bin 0 -> 6530 bytes .../generated/cmoncrawl.processor.doctree | Bin 0 -> 5962 bytes .../cmoncrawl.processor.extraction.doctree | Bin 0 -> 6244 bytes ...crawl.processor.extraction.filters.doctree | Bin 0 -> 6802 bytes ...oncrawl.processor.extraction.utils.doctree | Bin 0 -> 15336 bytes .../cmoncrawl.processor.pipeline.doctree | Bin 0 -> 9365 bytes ...ownloader.AsyncDownloader.__init__.doctree | Bin 0 -> 10078 bytes ....downloader.AsyncDownloader.aclose.doctree | Bin 0 -> 9400 bytes ...e.downloader.AsyncDownloader.aopen.doctree | Bin 0 -> 4897 bytes ...ipeline.downloader.AsyncDownloader.doctree | Bin 0 -> 24370 bytes ...ownloader.AsyncDownloader.download.doctree | Bin 0 -> 5359 bytes ....downloader.AsyncDownloader.unwrap.doctree | Bin 0 -> 7304 bytes ...ownloader.DownloaderDummy.__init__.doctree | Bin 0 -> 8595 bytes ...ipeline.downloader.DownloaderDummy.doctree | Bin 0 -> 21942 bytes ...ownloader.DownloaderDummy.download.doctree | Bin 0 -> 5359 bytes ...loader.DownloaderDummy.extract_url.doctree | Bin 0 -> 5116 bytes ...oader.DownloaderDummy.extract_year.doctree | Bin 0 -> 5099 bytes ...ader.DownloaderDummy.mine_metadata.doctree | Bin 0 -> 5744 bytes ...ne.downloader.IDownloader.__init__.doctree | Bin 0 -> 4155 bytes ...or.pipeline.downloader.IDownloader.doctree | Bin 0 -> 8781 bytes ...ne.downloader.IDownloader.download.doctree | Bin 0 -> 6867 bytes ...rawl.processor.pipeline.downloader.doctree | Bin 0 -> 8113 bytes ...e.extractor.BaseExtractor.__init__.doctree | Bin 0 -> 5883 bytes ...r.pipeline.extractor.BaseExtractor.doctree | Bin 0 -> 17113 bytes ...ne.extractor.BaseExtractor.extract.doctree | Bin 0 -> 7171 bytes ...tractor.BaseExtractor.extract_soup.doctree | Bin 0 -> 7645 bytes ...extractor.BaseExtractor.filter_raw.doctree | Bin 0 -> 6031 bytes ...xtractor.BaseExtractor.filter_soup.doctree | Bin 0 -> 6100 bytes ...extractor.BaseExtractor.preprocess.doctree | Bin 0 -> 5960 bytes ...tor.DomainRecordExtractor.__init__.doctree | Bin 0 -> 5597 bytes ...ne.extractor.DomainRecordExtractor.doctree | Bin 0 -> 17063 bytes ...ctor.DomainRecordExtractor.extract.doctree | Bin 0 -> 7283 bytes ...DomainRecordExtractor.extract_soup.doctree | Bin 0 -> 5960 bytes ...r.DomainRecordExtractor.filter_raw.doctree | Bin 0 -> 5876 bytes ....DomainRecordExtractor.filter_soup.doctree | Bin 0 -> 6220 bytes ...r.DomainRecordExtractor.preprocess.doctree | Bin 0 -> 6072 bytes ...e.extractor.HTMLExtractor.__init__.doctree | Bin 0 -> 5469 bytes ...r.pipeline.extractor.HTMLExtractor.doctree | Bin 0 -> 16655 bytes ...ne.extractor.HTMLExtractor.extract.doctree | Bin 0 -> 7171 bytes ...tractor.HTMLExtractor.extract_soup.doctree | Bin 0 -> 5832 bytes ...extractor.HTMLExtractor.filter_raw.doctree | Bin 0 -> 5748 bytes ...xtractor.HTMLExtractor.filter_soup.doctree | Bin 0 -> 6100 bytes ...extractor.HTMLExtractor.preprocess.doctree | Bin 0 -> 5960 bytes ...line.extractor.IExtractor.__init__.doctree | Bin 0 -> 4128 bytes ...ssor.pipeline.extractor.IExtractor.doctree | Bin 0 -> 8734 bytes ...eline.extractor.IExtractor.extract.doctree | Bin 0 -> 7407 bytes ...crawl.processor.pipeline.extractor.doctree | Bin 0 -> 9217 bytes ...ipeline.ProcessorPipeline.__init__.doctree | Bin 0 -> 6770 bytes ...ipeline.pipeline.ProcessorPipeline.doctree | Bin 0 -> 14259 bytes ...ssorPipeline.process_domain_record.doctree | Bin 0 -> 7149 bytes ...ncrawl.processor.pipeline.pipeline.doctree | Bin 0 -> 5401 bytes ...r.pipeline.router.IRouter.__init__.doctree | Bin 0 -> 4047 bytes ....processor.pipeline.router.IRouter.doctree | Bin 0 -> 8547 bytes ...ssor.pipeline.router.IRouter.route.doctree | Bin 0 -> 7889 bytes ...sor.pipeline.router.Route.__init__.doctree | Bin 0 -> 7921 bytes ...wl.processor.pipeline.router.Route.doctree | Bin 0 -> 19674 bytes ...or.pipeline.router.Router.__init__.doctree | Bin 0 -> 4031 bytes ...l.processor.pipeline.router.Router.doctree | Bin 0 -> 15623 bytes ...eline.router.Router.load_extractor.doctree | Bin 0 -> 5681 bytes ...pipeline.router.Router.load_module.doctree | Bin 0 -> 4902 bytes ...er.Router.load_module_as_extractor.doctree | Bin 0 -> 5103 bytes ...ipeline.router.Router.load_modules.doctree | Bin 0 -> 4892 bytes ...eline.router.Router.register_route.doctree | Bin 0 -> 9971 bytes ...line.router.Router.register_routes.doctree | Bin 0 -> 5445 bytes ...essor.pipeline.router.Router.route.doctree | Bin 0 -> 7593 bytes ...moncrawl.processor.pipeline.router.doctree | Bin 0 -> 7194 bytes ...streamer.BaseStreamerFile.__init__.doctree | Bin 0 -> 9351 bytes ...streamer.BaseStreamerFile.clean_up.doctree | Bin 0 -> 4837 bytes ...pipeline.streamer.BaseStreamerFile.doctree | Bin 0 -> 23368 bytes ...mer.BaseStreamerFile.get_file_name.doctree | Bin 0 -> 5197 bytes ...aseStreamerFile.metadata_to_string.doctree | Bin 0 -> 6582 bytes ...e.streamer.BaseStreamerFile.stream.doctree | Bin 0 -> 7136 bytes ...peline.streamer.IStreamer.__init__.doctree | Bin 0 -> 4101 bytes ...peline.streamer.IStreamer.clean_up.doctree | Bin 0 -> 4921 bytes ...cessor.pipeline.streamer.IStreamer.doctree | Bin 0 -> 10102 bytes ...pipeline.streamer.IStreamer.stream.doctree | Bin 0 -> 7218 bytes ...ne.streamer.StreamerDummy.__init__.doctree | Bin 0 -> 4165 bytes ...ne.streamer.StreamerDummy.clean_up.doctree | Bin 0 -> 4450 bytes ...or.pipeline.streamer.StreamerDummy.doctree | Bin 0 -> 10278 bytes ...line.streamer.StreamerDummy.stream.doctree | Bin 0 -> 6779 bytes ...streamer.StreamerFileHTML.__init__.doctree | Bin 0 -> 5696 bytes ...streamer.StreamerFileHTML.clean_up.doctree | Bin 0 -> 4837 bytes ...pipeline.streamer.StreamerFileHTML.doctree | Bin 0 -> 15596 bytes ...mer.StreamerFileHTML.get_file_name.doctree | Bin 0 -> 5197 bytes ...treamerFileHTML.metadata_to_string.doctree | Bin 0 -> 6301 bytes ...e.streamer.StreamerFileHTML.stream.doctree | Bin 0 -> 7136 bytes ...streamer.StreamerFileJSON.__init__.doctree | Bin 0 -> 7513 bytes ...streamer.StreamerFileJSON.clean_up.doctree | Bin 0 -> 4837 bytes ...pipeline.streamer.StreamerFileJSON.doctree | Bin 0 -> 19273 bytes ...mer.StreamerFileJSON.get_file_name.doctree | Bin 0 -> 5197 bytes ...treamerFileJSON.metadata_to_string.doctree | Bin 0 -> 6301 bytes ...e.streamer.StreamerFileJSON.stream.doctree | Bin 0 -> 7136 bytes ...ncrawl.processor.pipeline.streamer.doctree | Bin 0 -> 10726 bytes docs/build/doctrees/index.doctree | Bin 0 -> 5198 bytes .../build/doctrees/misc/domain_record.doctree | Bin 0 -> 10600 bytes docs/build/doctrees/misc/index.doctree | Bin 0 -> 2781 bytes docs/build/doctrees/prog_guide/index.doctree | Bin 0 -> 2834 bytes .../doctrees/prog_guide/overview.doctree | Bin 0 -> 24337 bytes docs/build/doctrees/prog_guide/pip.doctree | Bin 0 -> 8880 bytes docs/build/doctrees/usage.doctree | Bin 0 -> 9009 bytes docs/build/html/.buildinfo | 4 + docs/build/html/_sources/api.rst.txt | 14 + docs/build/html/_sources/cli/cli.rst.txt | 41 + docs/build/html/_sources/cli/download.rst.txt | 74 + docs/build/html/_sources/cli/extract.rst.txt | 84 + docs/build/html/_sources/cli/index.rst.txt | 12 + .../_sources/extraction/config_file.rst.txt | 132 + .../extraction/creating_extractor.rst.txt | 67 + .../html/_sources/extraction/index.rst.txt | 10 + .../html/_sources/extraction/utils.rst.txt | 27 + ...dex_query.IndexAggregator.__init__.rst.txt | 6 + ...index_query.IndexAggregator.aclose.rst.txt | 6 + ....index_query.IndexAggregator.aopen.rst.txt | 6 + ...IndexAggregator.get_all_CC_indexes.rst.txt | 6 + ...xAggregator.get_captured_responses.rst.txt | 6 + ...ndexAggregator.get_number_of_pages.rst.txt | 6 + ...egator.index_query.IndexAggregator.rst.txt | 29 + .../cmoncrawl.aggregator.index_query.rst.txt | 38 + .../generated/cmoncrawl.aggregator.rst.txt | 32 + ...cmoncrawl.aggregator.utils.helpers.rst.txt | 29 + ...ls.ndjson_decoder.Decoder.__init__.rst.txt | 6 + ...tils.ndjson_decoder.Decoder.decode.rst.txt | 6 + ....ndjson_decoder.Decoder.raw_decode.rst.txt | 6 + ...gator.utils.ndjson_decoder.Decoder.rst.txt | 26 + ...wl.aggregator.utils.ndjson_decoder.rst.txt | 30 + .../cmoncrawl.aggregator.utils.rst.txt | 32 + .../cmoncrawl.common.loggers.rst.txt | 23 + .../generated/cmoncrawl.common.rst.txt | 32 + ....common.types.DomainCrawl.__init__.rst.txt | 6 + ...cmoncrawl.common.types.DomainCrawl.rst.txt | 32 + ...common.types.DomainRecord.__init__.rst.txt | 6 + ...ommon.types.DomainRecord.from_dict.rst.txt | 6 + ...ommon.types.DomainRecord.from_json.rst.txt | 6 + ...moncrawl.common.types.DomainRecord.rst.txt | 41 + ...l.common.types.DomainRecord.schema.rst.txt | 6 + ....common.types.DomainRecord.to_dict.rst.txt | 6 + ....common.types.DomainRecord.to_json.rst.txt | 6 + ...ommon.types.ExtractConfig.__init__.rst.txt | 6 + ...mmon.types.ExtractConfig.from_dict.rst.txt | 6 + ...mmon.types.ExtractConfig.from_json.rst.txt | 6 + ...oncrawl.common.types.ExtractConfig.rst.txt | 36 + ....common.types.ExtractConfig.schema.rst.txt | 6 + ...common.types.ExtractConfig.to_dict.rst.txt | 6 + ...common.types.ExtractConfig.to_json.rst.txt | 6 + ...mon.types.ExtractorConfig.__init__.rst.txt | 6 + ...on.types.ExtractorConfig.from_dict.rst.txt | 6 + ...on.types.ExtractorConfig.from_json.rst.txt | 6 + ...crawl.common.types.ExtractorConfig.rst.txt | 37 + ...ommon.types.ExtractorConfig.schema.rst.txt | 6 + ...mmon.types.ExtractorConfig.to_dict.rst.txt | 6 + ...mmon.types.ExtractorConfig.to_json.rst.txt | 6 + ...common.types.PipeMetadata.__init__.rst.txt | 6 + ...moncrawl.common.types.PipeMetadata.rst.txt | 35 + ...on.types.RetrieveResponse.__init__.rst.txt | 6 + ...rawl.common.types.RetrieveResponse.rst.txt | 32 + ...common.types.RoutesConfig.__init__.rst.txt | 6 + ...ommon.types.RoutesConfig.from_dict.rst.txt | 6 + ...ommon.types.RoutesConfig.from_json.rst.txt | 6 + ...moncrawl.common.types.RoutesConfig.rst.txt | 36 + ...l.common.types.RoutesConfig.schema.rst.txt | 6 + ....common.types.RoutesConfig.to_dict.rst.txt | 6 + ....common.types.RoutesConfig.to_json.rst.txt | 6 + .../generated/cmoncrawl.common.types.rst.txt | 36 + ...crawl.processor.extraction.filters.rst.txt | 30 + .../cmoncrawl.processor.extraction.rst.txt | 32 + ...oncrawl.processor.extraction.utils.rst.txt | 39 + ...ownloader.AsyncDownloader.__init__.rst.txt | 6 + ....downloader.AsyncDownloader.aclose.rst.txt | 6 + ...e.downloader.AsyncDownloader.aopen.rst.txt | 6 + ...ownloader.AsyncDownloader.download.rst.txt | 6 + ...ipeline.downloader.AsyncDownloader.rst.txt | 28 + ....downloader.AsyncDownloader.unwrap.rst.txt | 6 + ...ownloader.DownloaderDummy.__init__.rst.txt | 6 + ...ownloader.DownloaderDummy.download.rst.txt | 6 + ...loader.DownloaderDummy.extract_url.rst.txt | 6 + ...oader.DownloaderDummy.extract_year.rst.txt | 6 + ...ader.DownloaderDummy.mine_metadata.rst.txt | 6 + ...ipeline.downloader.DownloaderDummy.rst.txt | 28 + ...ne.downloader.IDownloader.__init__.rst.txt | 6 + ...ne.downloader.IDownloader.download.rst.txt | 6 + ...or.pipeline.downloader.IDownloader.rst.txt | 25 + ...rawl.processor.pipeline.downloader.rst.txt | 32 + ...e.extractor.BaseExtractor.__init__.rst.txt | 6 + ...ne.extractor.BaseExtractor.extract.rst.txt | 6 + ...tractor.BaseExtractor.extract_soup.rst.txt | 6 + ...extractor.BaseExtractor.filter_raw.rst.txt | 6 + ...xtractor.BaseExtractor.filter_soup.rst.txt | 6 + ...extractor.BaseExtractor.preprocess.rst.txt | 6 + ...r.pipeline.extractor.BaseExtractor.rst.txt | 29 + ...tor.DomainRecordExtractor.__init__.rst.txt | 6 + ...ctor.DomainRecordExtractor.extract.rst.txt | 6 + ...DomainRecordExtractor.extract_soup.rst.txt | 6 + ...r.DomainRecordExtractor.filter_raw.rst.txt | 6 + ....DomainRecordExtractor.filter_soup.rst.txt | 6 + ...r.DomainRecordExtractor.preprocess.rst.txt | 6 + ...ne.extractor.DomainRecordExtractor.rst.txt | 29 + ...e.extractor.HTMLExtractor.__init__.rst.txt | 6 + ...ne.extractor.HTMLExtractor.extract.rst.txt | 6 + ...tractor.HTMLExtractor.extract_soup.rst.txt | 6 + ...extractor.HTMLExtractor.filter_raw.rst.txt | 6 + ...xtractor.HTMLExtractor.filter_soup.rst.txt | 6 + ...extractor.HTMLExtractor.preprocess.rst.txt | 6 + ...r.pipeline.extractor.HTMLExtractor.rst.txt | 29 + ...line.extractor.IExtractor.__init__.rst.txt | 6 + ...eline.extractor.IExtractor.extract.rst.txt | 6 + ...ssor.pipeline.extractor.IExtractor.rst.txt | 25 + ...crawl.processor.pipeline.extractor.rst.txt | 33 + ...ipeline.ProcessorPipeline.__init__.rst.txt | 6 + ...ssorPipeline.process_domain_record.rst.txt | 6 + ...ipeline.pipeline.ProcessorPipeline.rst.txt | 25 + ...ncrawl.processor.pipeline.pipeline.rst.txt | 30 + ...r.pipeline.router.IRouter.__init__.rst.txt | 6 + ...ssor.pipeline.router.IRouter.route.rst.txt | 6 + ....processor.pipeline.router.IRouter.rst.txt | 25 + ...sor.pipeline.router.Route.__init__.rst.txt | 6 + ...wl.processor.pipeline.router.Route.rst.txt | 33 + ...or.pipeline.router.Router.__init__.rst.txt | 6 + ...eline.router.Router.load_extractor.rst.txt | 6 + ...pipeline.router.Router.load_module.rst.txt | 6 + ...er.Router.load_module_as_extractor.rst.txt | 6 + ...ipeline.router.Router.load_modules.rst.txt | 6 + ...eline.router.Router.register_route.rst.txt | 6 + ...line.router.Router.register_routes.rst.txt | 6 + ...essor.pipeline.router.Router.route.rst.txt | 6 + ...l.processor.pipeline.router.Router.rst.txt | 31 + ...moncrawl.processor.pipeline.router.rst.txt | 32 + .../cmoncrawl.processor.pipeline.rst.txt | 35 + ...streamer.BaseStreamerFile.__init__.rst.txt | 6 + ...streamer.BaseStreamerFile.clean_up.rst.txt | 6 + ...mer.BaseStreamerFile.get_file_name.rst.txt | 6 + ...aseStreamerFile.metadata_to_string.rst.txt | 6 + ...pipeline.streamer.BaseStreamerFile.rst.txt | 28 + ...e.streamer.BaseStreamerFile.stream.rst.txt | 6 + ...peline.streamer.IStreamer.__init__.rst.txt | 6 + ...peline.streamer.IStreamer.clean_up.rst.txt | 6 + ...cessor.pipeline.streamer.IStreamer.rst.txt | 26 + ...pipeline.streamer.IStreamer.stream.rst.txt | 6 + ...ne.streamer.StreamerDummy.__init__.rst.txt | 6 + ...ne.streamer.StreamerDummy.clean_up.rst.txt | 6 + ...or.pipeline.streamer.StreamerDummy.rst.txt | 26 + ...line.streamer.StreamerDummy.stream.rst.txt | 6 + ...streamer.StreamerFileHTML.__init__.rst.txt | 6 + ...streamer.StreamerFileHTML.clean_up.rst.txt | 6 + ...mer.StreamerFileHTML.get_file_name.rst.txt | 6 + ...treamerFileHTML.metadata_to_string.rst.txt | 6 + ...pipeline.streamer.StreamerFileHTML.rst.txt | 28 + ...e.streamer.StreamerFileHTML.stream.rst.txt | 6 + ...streamer.StreamerFileJSON.__init__.rst.txt | 6 + ...streamer.StreamerFileJSON.clean_up.rst.txt | 6 + ...mer.StreamerFileJSON.get_file_name.rst.txt | 6 + ...treamerFileJSON.metadata_to_string.rst.txt | 6 + ...pipeline.streamer.StreamerFileJSON.rst.txt | 28 + ...e.streamer.StreamerFileJSON.stream.rst.txt | 6 + ...ncrawl.processor.pipeline.streamer.rst.txt | 34 + .../generated/cmoncrawl.processor.rst.txt | 32 + .../html/_sources/generated/cmoncrawl.rst.txt | 33 + docs/build/html/_sources/index.rst.txt | 27 + .../html/_sources/misc/domain_record.rst.txt | 56 + docs/build/html/_sources/misc/index.rst.txt | 8 + .../html/_sources/prog_guide/index.rst.txt | 9 + .../html/_sources/prog_guide/overview.rst.txt | 101 + .../html/_sources/prog_guide/pip.rst.txt | 56 + docs/build/html/_sources/usage.rst.txt | 35 + .../_sphinx_javascript_frameworks_compat.js | 134 + docs/build/html/_static/basic.css | 899 ++ docs/build/html/_static/check-solid.svg | 4 + docs/build/html/_static/clipboard.min.js | 7 + docs/build/html/_static/copy-button.svg | 5 + docs/build/html/_static/copybutton.css | 93 + docs/build/html/_static/copybutton.js | 220 + docs/build/html/_static/copybutton_funcs.js | 58 + docs/build/html/_static/doctools.js | 156 + .../html/_static/documentation_options.js | 14 + docs/build/html/_static/file.png | Bin 0 -> 286 bytes .../build/html/_static/images/logo_binder.svg | 19 + docs/build/html/_static/images/logo_colab.png | Bin 0 -> 7601 bytes .../html/_static/images/logo_deepnote.svg | 1 + .../html/_static/images/logo_jupyterhub.svg | 1 + docs/build/html/_static/jquery-3.6.0.js | 10881 ++++++++++++++++ docs/build/html/_static/jquery.js | 2 + docs/build/html/_static/language_data.js | 199 + .../locales/ar/LC_MESSAGES/booktheme.po | 81 + .../locales/bg/LC_MESSAGES/booktheme.po | 81 + .../locales/bn/LC_MESSAGES/booktheme.po | 66 + .../locales/ca/LC_MESSAGES/booktheme.po | 69 + .../locales/cs/LC_MESSAGES/booktheme.po | 81 + .../locales/da/LC_MESSAGES/booktheme.po | 81 + .../locales/de/LC_MESSAGES/booktheme.po | 81 + .../locales/el/LC_MESSAGES/booktheme.po | 81 + .../locales/eo/LC_MESSAGES/booktheme.po | 81 + .../locales/es/LC_MESSAGES/booktheme.po | 81 + .../locales/et/LC_MESSAGES/booktheme.po | 81 + .../locales/fi/LC_MESSAGES/booktheme.po | 81 + .../locales/fr/LC_MESSAGES/booktheme.po | 81 + .../locales/hr/LC_MESSAGES/booktheme.po | 81 + .../locales/id/LC_MESSAGES/booktheme.po | 81 + .../locales/it/LC_MESSAGES/booktheme.po | 81 + .../locales/iw/LC_MESSAGES/booktheme.po | 81 + .../locales/ja/LC_MESSAGES/booktheme.po | 81 + .../locales/ko/LC_MESSAGES/booktheme.po | 81 + .../locales/lt/LC_MESSAGES/booktheme.po | 81 + .../locales/lv/LC_MESSAGES/booktheme.po | 81 + .../locales/ml/LC_MESSAGES/booktheme.po | 69 + .../locales/mr/LC_MESSAGES/booktheme.po | 69 + .../locales/ms/LC_MESSAGES/booktheme.po | 69 + .../locales/nl/LC_MESSAGES/booktheme.po | 81 + .../locales/no/LC_MESSAGES/booktheme.po | 81 + .../locales/pl/LC_MESSAGES/booktheme.po | 81 + .../locales/pt/LC_MESSAGES/booktheme.po | 81 + .../locales/ro/LC_MESSAGES/booktheme.po | 81 + .../locales/ru/LC_MESSAGES/booktheme.po | 81 + .../locales/sk/LC_MESSAGES/booktheme.po | 81 + .../locales/sl/LC_MESSAGES/booktheme.po | 81 + .../locales/sr/LC_MESSAGES/booktheme.po | 81 + .../locales/sv/LC_MESSAGES/booktheme.po | 81 + .../locales/ta/LC_MESSAGES/booktheme.po | 69 + .../locales/te/LC_MESSAGES/booktheme.po | 69 + .../locales/tg/LC_MESSAGES/booktheme.po | 81 + .../locales/th/LC_MESSAGES/booktheme.po | 81 + .../locales/tl/LC_MESSAGES/booktheme.po | 69 + .../locales/tr/LC_MESSAGES/booktheme.po | 81 + .../locales/uk/LC_MESSAGES/booktheme.po | 81 + .../locales/ur/LC_MESSAGES/booktheme.po | 69 + .../locales/vi/LC_MESSAGES/booktheme.po | 81 + .../locales/zh_CN/LC_MESSAGES/booktheme.po | 78 + .../locales/zh_TW/LC_MESSAGES/booktheme.po | 81 + docs/build/html/_static/minus.png | Bin 0 -> 90 bytes docs/build/html/_static/plus.png | Bin 0 -> 90 bytes docs/build/html/_static/pygments.css | 83 + .../html/_static/sbt-webpack-macros.html | 11 + .../_static/scripts/pydata-sphinx-theme.js | 32 + .../html/_static/scripts/sphinx-book-theme.js | 2 + .../_static/scripts/sphinx-book-theme.js.map | 1 + docs/build/html/_static/searchtools.js | 566 + docs/build/html/_static/sphinx_highlight.js | 144 + .../_static/styles/pydata-sphinx-theme.css | 6 + .../html/_static/styles/sphinx-book-theme.css | 8 + docs/build/html/_static/styles/theme.css | 134 + docs/build/html/_static/underscore-1.13.1.js | 2042 +++ docs/build/html/_static/underscore.js | 6 + .../vendor/fontawesome/5.13.0/LICENSE.txt | 34 + .../vendor/fontawesome/5.13.0/css/all.min.css | 5 + .../5.13.0/webfonts/fa-brands-400.eot | Bin 0 -> 133034 bytes .../5.13.0/webfonts/fa-brands-400.svg | 3570 +++++ .../5.13.0/webfonts/fa-brands-400.ttf | Bin 0 -> 132728 bytes .../5.13.0/webfonts/fa-brands-400.woff | Bin 0 -> 89824 bytes .../5.13.0/webfonts/fa-brands-400.woff2 | Bin 0 -> 76612 bytes .../5.13.0/webfonts/fa-regular-400.eot | Bin 0 -> 34390 bytes .../5.13.0/webfonts/fa-regular-400.svg | 803 ++ .../5.13.0/webfonts/fa-regular-400.ttf | Bin 0 -> 34092 bytes .../5.13.0/webfonts/fa-regular-400.woff | Bin 0 -> 16800 bytes .../5.13.0/webfonts/fa-regular-400.woff2 | Bin 0 -> 13584 bytes .../5.13.0/webfonts/fa-solid-900.eot | Bin 0 -> 202902 bytes .../5.13.0/webfonts/fa-solid-900.svg | 4938 +++++++ .../5.13.0/webfonts/fa-solid-900.ttf | Bin 0 -> 202616 bytes .../5.13.0/webfonts/fa-solid-900.woff | Bin 0 -> 103300 bytes .../5.13.0/webfonts/fa-solid-900.woff2 | Bin 0 -> 79444 bytes docs/build/html/_static/webpack-macros.html | 29 + docs/build/html/api.html | 480 + docs/build/html/cli/cli.html | 529 + docs/build/html/cli/download.html | 605 + docs/build/html/cli/extract.html | 621 + docs/build/html/cli/index.html | 493 + docs/build/html/extraction/config_file.html | 656 + .../html/extraction/creating_extractor.html | 590 + docs/build/html/extraction/index.html | 493 + docs/build/html/extraction/utils.html | 537 + .../html/generated/cmoncrawl.aggregator.html | 484 + ....index_query.IndexAggregator.__init__.html | 519 + ...or.index_query.IndexAggregator.aclose.html | 519 + ...tor.index_query.IndexAggregator.aopen.html | 519 + ...ry.IndexAggregator.get_all_CC_indexes.html | 519 + ...ndexAggregator.get_captured_responses.html | 519 + ...y.IndexAggregator.get_number_of_pages.html | 519 + ...ggregator.index_query.IndexAggregator.html | 573 + .../cmoncrawl.aggregator.index_query.html | 499 + .../cmoncrawl.aggregator.utils.helpers.html | 481 + .../generated/cmoncrawl.aggregator.utils.html | 484 + ...utils.ndjson_decoder.Decoder.__init__.html | 545 + ...r.utils.ndjson_decoder.Decoder.decode.html | 521 + ...gregator.utils.ndjson_decoder.Decoder.html | 590 + ...ils.ndjson_decoder.Decoder.raw_decode.html | 524 + ...crawl.aggregator.utils.ndjson_decoder.html | 481 + .../html/generated/cmoncrawl.common.html | 484 + .../generated/cmoncrawl.common.loggers.html | 469 + ...awl.common.types.DomainCrawl.__init__.html | 519 + .../cmoncrawl.common.types.DomainCrawl.html | 576 + ...wl.common.types.DomainRecord.__init__.html | 519 + ...l.common.types.DomainRecord.from_dict.html | 519 + ...l.common.types.DomainRecord.from_json.html | 519 + .../cmoncrawl.common.types.DomainRecord.html | 603 + ...rawl.common.types.DomainRecord.schema.html | 519 + ...awl.common.types.DomainRecord.to_dict.html | 519 + ...awl.common.types.DomainRecord.to_json.html | 519 + ...l.common.types.ExtractConfig.__init__.html | 519 + ....common.types.ExtractConfig.from_dict.html | 519 + ....common.types.ExtractConfig.from_json.html | 519 + .../cmoncrawl.common.types.ExtractConfig.html | 589 + ...awl.common.types.ExtractConfig.schema.html | 519 + ...wl.common.types.ExtractConfig.to_dict.html | 519 + ...wl.common.types.ExtractConfig.to_json.html | 519 + ...common.types.ExtractorConfig.__init__.html | 519 + ...ommon.types.ExtractorConfig.from_dict.html | 519 + ...ommon.types.ExtractorConfig.from_json.html | 519 + ...moncrawl.common.types.ExtractorConfig.html | 592 + ...l.common.types.ExtractorConfig.schema.html | 519 + ....common.types.ExtractorConfig.to_dict.html | 519 + ....common.types.ExtractorConfig.to_json.html | 519 + ...wl.common.types.PipeMetadata.__init__.html | 519 + .../cmoncrawl.common.types.PipeMetadata.html | 586 + ...ommon.types.RetrieveResponse.__init__.html | 519 + ...oncrawl.common.types.RetrieveResponse.html | 576 + ...wl.common.types.RoutesConfig.__init__.html | 519 + ...l.common.types.RoutesConfig.from_dict.html | 519 + ...l.common.types.RoutesConfig.from_json.html | 519 + .../cmoncrawl.common.types.RoutesConfig.html | 589 + ...rawl.common.types.RoutesConfig.schema.html | 519 + ...awl.common.types.RoutesConfig.to_dict.html | 519 + ...awl.common.types.RoutesConfig.to_json.html | 519 + .../generated/cmoncrawl.common.types.html | 499 + docs/build/html/generated/cmoncrawl.html | 487 + ...moncrawl.processor.extraction.filters.html | 484 + .../cmoncrawl.processor.extraction.html | 484 + .../cmoncrawl.processor.extraction.utils.html | 511 + .../html/generated/cmoncrawl.processor.html | 484 + ...e.downloader.AsyncDownloader.__init__.html | 519 + ...ine.downloader.AsyncDownloader.aclose.html | 519 + ...line.downloader.AsyncDownloader.aopen.html | 519 + ...e.downloader.AsyncDownloader.download.html | 519 + ...r.pipeline.downloader.AsyncDownloader.html | 570 + ...ine.downloader.AsyncDownloader.unwrap.html | 519 + ...e.downloader.DownloaderDummy.__init__.html | 519 + ...e.downloader.DownloaderDummy.download.html | 519 + ...ownloader.DownloaderDummy.extract_url.html | 519 + ...wnloader.DownloaderDummy.extract_year.html | 519 + ...r.pipeline.downloader.DownloaderDummy.html | 573 + ...nloader.DownloaderDummy.mine_metadata.html | 519 + ...eline.downloader.IDownloader.__init__.html | 519 + ...eline.downloader.IDownloader.download.html | 519 + ...essor.pipeline.downloader.IDownloader.html | 561 + ...oncrawl.processor.pipeline.downloader.html | 487 + ...line.extractor.BaseExtractor.__init__.html | 519 + ...eline.extractor.BaseExtractor.extract.html | 519 + ....extractor.BaseExtractor.extract_soup.html | 519 + ...ne.extractor.BaseExtractor.filter_raw.html | 519 + ...e.extractor.BaseExtractor.filter_soup.html | 519 + ...ssor.pipeline.extractor.BaseExtractor.html | 573 + ...ne.extractor.BaseExtractor.preprocess.html | 519 + ...ractor.DomainRecordExtractor.__init__.html | 519 + ...tractor.DomainRecordExtractor.extract.html | 519 + ...or.DomainRecordExtractor.extract_soup.html | 519 + ...ctor.DomainRecordExtractor.filter_raw.html | 519 + ...tor.DomainRecordExtractor.filter_soup.html | 519 + ...eline.extractor.DomainRecordExtractor.html | 574 + ...ctor.DomainRecordExtractor.preprocess.html | 519 + ...line.extractor.HTMLExtractor.__init__.html | 519 + ...eline.extractor.HTMLExtractor.extract.html | 519 + ....extractor.HTMLExtractor.extract_soup.html | 519 + ...ne.extractor.HTMLExtractor.filter_raw.html | 519 + ...e.extractor.HTMLExtractor.filter_soup.html | 519 + ...ssor.pipeline.extractor.HTMLExtractor.html | 574 + ...ne.extractor.HTMLExtractor.preprocess.html | 519 + ...ipeline.extractor.IExtractor.__init__.html | 519 + ...pipeline.extractor.IExtractor.extract.html | 519 + ...ocessor.pipeline.extractor.IExtractor.html | 561 + ...moncrawl.processor.pipeline.extractor.html | 490 + .../cmoncrawl.processor.pipeline.html | 493 + ...e.pipeline.ProcessorPipeline.__init__.html | 519 + ...r.pipeline.pipeline.ProcessorPipeline.html | 561 + ...ocessorPipeline.process_domain_record.html | 519 + ...cmoncrawl.processor.pipeline.pipeline.html | 481 + ...ssor.pipeline.router.IRouter.__init__.html | 519 + ...awl.processor.pipeline.router.IRouter.html | 561 + ...ocessor.pipeline.router.IRouter.route.html | 519 + ...cessor.pipeline.router.Route.__init__.html | 519 + ...crawl.processor.pipeline.router.Route.html | 579 + ...essor.pipeline.router.Router.__init__.html | 519 + ...rawl.processor.pipeline.router.Router.html | 579 + ...pipeline.router.Router.load_extractor.html | 519 + ...or.pipeline.router.Router.load_module.html | 519 + ...outer.Router.load_module_as_extractor.html | 519 + ...r.pipeline.router.Router.load_modules.html | 519 + ...pipeline.router.Router.register_route.html | 519 + ...ipeline.router.Router.register_routes.html | 519 + ...rocessor.pipeline.router.Router.route.html | 519 + .../cmoncrawl.processor.pipeline.router.html | 487 + ...ne.streamer.BaseStreamerFile.__init__.html | 519 + ...ne.streamer.BaseStreamerFile.clean_up.html | 519 + ...reamer.BaseStreamerFile.get_file_name.html | 519 + ...or.pipeline.streamer.BaseStreamerFile.html | 571 + ...r.BaseStreamerFile.metadata_to_string.html | 519 + ...line.streamer.BaseStreamerFile.stream.html | 519 + ....pipeline.streamer.IStreamer.__init__.html | 519 + ....pipeline.streamer.IStreamer.clean_up.html | 519 + ...processor.pipeline.streamer.IStreamer.html | 565 + ...or.pipeline.streamer.IStreamer.stream.html | 519 + ...eline.streamer.StreamerDummy.__init__.html | 519 + ...eline.streamer.StreamerDummy.clean_up.html | 519 + ...essor.pipeline.streamer.StreamerDummy.html | 565 + ...ipeline.streamer.StreamerDummy.stream.html | 519 + ...ne.streamer.StreamerFileHTML.__init__.html | 519 + ...ne.streamer.StreamerFileHTML.clean_up.html | 519 + ...reamer.StreamerFileHTML.get_file_name.html | 519 + ...or.pipeline.streamer.StreamerFileHTML.html | 570 + ...r.StreamerFileHTML.metadata_to_string.html | 519 + ...line.streamer.StreamerFileHTML.stream.html | 519 + ...ne.streamer.StreamerFileJSON.__init__.html | 519 + ...ne.streamer.StreamerFileJSON.clean_up.html | 519 + ...reamer.StreamerFileJSON.get_file_name.html | 519 + ...or.pipeline.streamer.StreamerFileJSON.html | 570 + ...r.StreamerFileJSON.metadata_to_string.html | 519 + ...line.streamer.StreamerFileJSON.stream.html | 511 + ...cmoncrawl.processor.pipeline.streamer.html | 493 + docs/build/html/genindex.html | 1022 ++ docs/build/html/index.html | 601 + docs/build/html/misc/domain_record.html | 559 + docs/build/html/misc/index.html | 476 + docs/build/html/objects.inv | Bin 0 -> 13098 bytes docs/build/html/prog_guide/index.html | 489 + docs/build/html/prog_guide/overview.html | 655 + docs/build/html/prog_guide/pip.html | 563 + docs/build/html/py-modindex.html | 514 + docs/build/html/search.html | 438 + docs/build/html/searchindex.js | 1 + docs/build/html/usage.html | 536 + 588 files changed, 118832 insertions(+) create mode 100644 docs/build/doctrees/api.doctree create mode 100644 docs/build/doctrees/cli/cli.doctree create mode 100644 docs/build/doctrees/cli/download.doctree create mode 100644 docs/build/doctrees/cli/extract.doctree create mode 100644 docs/build/doctrees/cli/index.doctree create mode 100644 docs/build/doctrees/environment.pickle create mode 100644 docs/build/doctrees/extraction/config_file.doctree create mode 100644 docs/build/doctrees/extraction/creating_extractor.doctree create mode 100644 docs/build/doctrees/extraction/index.doctree create mode 100644 docs/build/doctrees/extraction/utils.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aclose.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aopen.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.utils.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.utils.helpers.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.aggregator.utils.ndjson_decoder.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.loggers.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.DomainCrawl.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.DomainCrawl.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.from_dict.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.from_json.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.schema.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.to_dict.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.to_json.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.from_dict.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.from_json.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.schema.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.to_dict.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.to_json.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.from_dict.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.from_json.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.schema.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.to_dict.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.to_json.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.PipeMetadata.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.PipeMetadata.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.RetrieveResponse.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.RetrieveResponse.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.from_dict.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.from_json.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.schema.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.to_dict.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.to_json.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.common.types.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.extraction.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.extraction.filters.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.extraction.utils.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.download.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.extract.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.pipeline.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.IRouter.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.IRouter.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.IRouter.route.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Route.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Route.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.load_extractor.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.load_module.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.load_modules.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.register_route.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.register_routes.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.route.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.stream.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream.doctree create mode 100644 docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.doctree create mode 100644 docs/build/doctrees/index.doctree create mode 100644 docs/build/doctrees/misc/domain_record.doctree create mode 100644 docs/build/doctrees/misc/index.doctree create mode 100644 docs/build/doctrees/prog_guide/index.doctree create mode 100644 docs/build/doctrees/prog_guide/overview.doctree create mode 100644 docs/build/doctrees/prog_guide/pip.doctree create mode 100644 docs/build/doctrees/usage.doctree create mode 100644 docs/build/html/.buildinfo create mode 100644 docs/build/html/_sources/api.rst.txt create mode 100644 docs/build/html/_sources/cli/cli.rst.txt create mode 100644 docs/build/html/_sources/cli/download.rst.txt create mode 100644 docs/build/html/_sources/cli/extract.rst.txt create mode 100644 docs/build/html/_sources/cli/index.rst.txt create mode 100644 docs/build/html/_sources/extraction/config_file.rst.txt create mode 100644 docs/build/html/_sources/extraction/creating_extractor.rst.txt create mode 100644 docs/build/html/_sources/extraction/index.rst.txt create mode 100644 docs/build/html/_sources/extraction/utils.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aclose.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aopen.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.helpers.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.loggers.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.DomainCrawl.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.DomainCrawl.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.from_dict.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.from_json.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.schema.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.to_dict.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.to_json.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.from_dict.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.from_json.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.schema.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.to_dict.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.to_json.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.from_dict.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.from_json.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.schema.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.to_dict.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.to_json.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.PipeMetadata.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.PipeMetadata.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.RetrieveResponse.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.RetrieveResponse.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.from_dict.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.from_json.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.schema.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.to_dict.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.to_json.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.common.types.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.extraction.filters.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.extraction.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.extraction.utils.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.download.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.extract.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.IRouter.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.IRouter.route.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.IRouter.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Route.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Route.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_extractor.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_module.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_modules.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.register_route.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.register_routes.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.route.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.stream.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.processor.rst.txt create mode 100644 docs/build/html/_sources/generated/cmoncrawl.rst.txt create mode 100644 docs/build/html/_sources/index.rst.txt create mode 100644 docs/build/html/_sources/misc/domain_record.rst.txt create mode 100644 docs/build/html/_sources/misc/index.rst.txt create mode 100644 docs/build/html/_sources/prog_guide/index.rst.txt create mode 100644 docs/build/html/_sources/prog_guide/overview.rst.txt create mode 100644 docs/build/html/_sources/prog_guide/pip.rst.txt create mode 100644 docs/build/html/_sources/usage.rst.txt create mode 100644 docs/build/html/_static/_sphinx_javascript_frameworks_compat.js create mode 100644 docs/build/html/_static/basic.css create mode 100644 docs/build/html/_static/check-solid.svg create mode 100644 docs/build/html/_static/clipboard.min.js create mode 100644 docs/build/html/_static/copy-button.svg create mode 100644 docs/build/html/_static/copybutton.css create mode 100644 docs/build/html/_static/copybutton.js create mode 100644 docs/build/html/_static/copybutton_funcs.js create mode 100644 docs/build/html/_static/doctools.js create mode 100644 docs/build/html/_static/documentation_options.js create mode 100644 docs/build/html/_static/file.png create mode 100644 docs/build/html/_static/images/logo_binder.svg create mode 100644 docs/build/html/_static/images/logo_colab.png create mode 100644 docs/build/html/_static/images/logo_deepnote.svg create mode 100644 docs/build/html/_static/images/logo_jupyterhub.svg create mode 100644 docs/build/html/_static/jquery-3.6.0.js create mode 100644 docs/build/html/_static/jquery.js create mode 100644 docs/build/html/_static/language_data.js create mode 100644 docs/build/html/_static/locales/ar/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/bg/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/bn/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/ca/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/cs/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/da/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/de/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/el/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/eo/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/es/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/et/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/fi/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/fr/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/hr/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/id/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/it/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/iw/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/ja/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/ko/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/lt/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/lv/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/ml/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/mr/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/ms/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/nl/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/no/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/pl/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/pt/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/ro/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/ru/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/sk/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/sl/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/sr/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/sv/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/ta/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/te/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/tg/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/th/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/tl/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/tr/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/uk/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/ur/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/vi/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/zh_CN/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/locales/zh_TW/LC_MESSAGES/booktheme.po create mode 100644 docs/build/html/_static/minus.png create mode 100644 docs/build/html/_static/plus.png create mode 100644 docs/build/html/_static/pygments.css create mode 100644 docs/build/html/_static/sbt-webpack-macros.html create mode 100644 docs/build/html/_static/scripts/pydata-sphinx-theme.js create mode 100644 docs/build/html/_static/scripts/sphinx-book-theme.js create mode 100644 docs/build/html/_static/scripts/sphinx-book-theme.js.map create mode 100644 docs/build/html/_static/searchtools.js create mode 100644 docs/build/html/_static/sphinx_highlight.js create mode 100644 docs/build/html/_static/styles/pydata-sphinx-theme.css create mode 100644 docs/build/html/_static/styles/sphinx-book-theme.css create mode 100644 docs/build/html/_static/styles/theme.css create mode 100644 docs/build/html/_static/underscore-1.13.1.js create mode 100644 docs/build/html/_static/underscore.js create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/LICENSE.txt create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/css/all.min.css create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.eot create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.svg create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.ttf create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2 create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.eot create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.svg create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.ttf create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.woff create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.woff2 create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.eot create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.svg create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.ttf create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff create mode 100644 docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2 create mode 100644 docs/build/html/_static/webpack-macros.html create mode 100644 docs/build/html/api.html create mode 100644 docs/build/html/cli/cli.html create mode 100644 docs/build/html/cli/download.html create mode 100644 docs/build/html/cli/extract.html create mode 100644 docs/build/html/cli/index.html create mode 100644 docs/build/html/extraction/config_file.html create mode 100644 docs/build/html/extraction/creating_extractor.html create mode 100644 docs/build/html/extraction/index.html create mode 100644 docs/build/html/extraction/utils.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aclose.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aopen.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.index_query.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.utils.helpers.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.utils.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode.html create mode 100644 docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.html create mode 100644 docs/build/html/generated/cmoncrawl.common.html create mode 100644 docs/build/html/generated/cmoncrawl.common.loggers.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.DomainCrawl.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.DomainCrawl.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.DomainRecord.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.DomainRecord.from_dict.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.DomainRecord.from_json.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.DomainRecord.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.DomainRecord.schema.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.DomainRecord.to_dict.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.DomainRecord.to_json.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.from_dict.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.from_json.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.schema.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.to_dict.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.to_json.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.from_dict.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.from_json.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.schema.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.to_dict.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.to_json.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.PipeMetadata.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.PipeMetadata.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.RetrieveResponse.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.RetrieveResponse.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.from_dict.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.from_json.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.schema.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.to_dict.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.to_json.html create mode 100644 docs/build/html/generated/cmoncrawl.common.types.html create mode 100644 docs/build/html/generated/cmoncrawl.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.extraction.filters.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.extraction.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.extraction.utils.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.download.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.extract.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.IRouter.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.IRouter.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.IRouter.route.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.Route.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.Route.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_extractor.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_module.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_modules.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.register_route.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.register_routes.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.route.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.router.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.stream.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream.html create mode 100644 docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.html create mode 100644 docs/build/html/genindex.html create mode 100644 docs/build/html/index.html create mode 100644 docs/build/html/misc/domain_record.html create mode 100644 docs/build/html/misc/index.html create mode 100644 docs/build/html/objects.inv create mode 100644 docs/build/html/prog_guide/index.html create mode 100644 docs/build/html/prog_guide/overview.html create mode 100644 docs/build/html/prog_guide/pip.html create mode 100644 docs/build/html/py-modindex.html create mode 100644 docs/build/html/search.html create mode 100644 docs/build/html/searchindex.js create mode 100644 docs/build/html/usage.html diff --git a/docs/build/doctrees/api.doctree b/docs/build/doctrees/api.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7b41a2df58b3610eb676567b2d4306aefcac5d25 GIT binary patch literal 4150 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 Lq_p?RhW&p52Z(uz literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/cli/download.doctree b/docs/build/doctrees/cli/download.doctree new file mode 100644 index 0000000000000000000000000000000000000000..533895023ebc3f9076504a0bc42185c596793ad3 GIT binary patch literal 16083 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/cli/index.doctree b/docs/build/doctrees/cli/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..fd32deb2940323708befc57c7d2f464c0fcaae55 GIT binary patch literal 2845 zcmZ`*&u<(x6i$=uW;fYvnv_;ZZ6FmYw4%u(!~yk$2p1X@p$c(oWqHTmwONln*q&r_ zs04?iM)IxZ59E*F&gYrg$!;VftulUoem}nVy=VW?`TJmJt@;alt`JhsPbg#BFz#aL zF_V=!*FJuT&;E>Wp$rjJ7gGor4hH9ZmE4tH;XX zW-+GO%<@UnDZ`eh)3g=Eo_Ht*;*r=8hv9T2OwLEME2d<|#pq{iegiUY^vYyf&dkNt zaV47h5khsNI>b??W4Sy?6e^gIC|QylTHcpe66!OW#rhO$bslO(8$rJ09- zhk?|YDjAyDz z>@~O@Us_re+(x>LQ96HoQ_y4wyy2~h@BlSQ)ICm|I+iVU=>qLm<0xqyEo(G&NItgV zW1}Wb6)Ot98s~CQEtSRdboNddW~EJ}CoRPX3rS7&&~w~-si)}e{kB;rwyFV(q5CUU zCF-{5cCmLJ`ctmCrQTRDpwB2;#M8XMVyAXPV0(t;cC#$4!fF?IlGGY$7w$T#Hdiqm zOpNi`c)qlGb|>tnNrB>$`NY^fLNauqVL=kEi61ceu$FMeD+#%jUXVqD!eeuw=~&R! z^1@h86u;mq(QaE%)h;_>pU)+*^3<1Zq0|W-#>eFp?uM7tYG4Ho%V`ctKk=NWq~iN9 zl)5NA;W{%6S~2uXKRN#P*hzdpTHPevT4RX-K@_Nk!XYw<7(zNr zL*YDhGovTS5pYOG3QRsZkD?ofwDgADh{C!Aqjp)D7o=q!P^|MCPkg$|=Y?^cET60>l6i6=ovit}N0@YUtWqLPlv|5#5YNK^$vE(zR>KFB zY1GJKT!jbe3r-xjNeAUk))?x&gZa`f!O#8FQlO2Vf`v-v(#Mx;|NPqt!-5wCuwYE- ztb%NiBx8!`Q*VTih4+PfF&aVaPKqlpj6N}TI*Q?b(yT&&Ch`Og>T(W^8ucE;_Av~C)$!L8Sgu_hGbW?C!w;OP- zK*Z@;S-?elKvYA$83VWhAdz|k7A)q%L7Eh<9N*HDd7^K+n5t$>cl#`YHMlMqI`|49 z2+lp6+|QsjBRr>45xjLQuWtDFVZV8;fUas%PqphXs4Z0H9Zqj>eUaV_p;u2Av@^(w zTUw%BJn_^{Ii?lf3;PHXWb=3tfk?O#)6*gxtVruu1jMj5X&2qpRCs_uzLkXaw;vbbMzwsX zR6n{UY_{&xC;tKa+G|w+ literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..4eb07cbbac633e31494f01c4d8c02e582273290e GIT binary patch literal 447558 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≻-`s?QfKS6xIU_ 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 RM$~Nz-Dd`xe5$0?_qp+%}?m9hH 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/extraction/utils.doctree b/docs/build/doctrees/extraction/utils.doctree new file mode 100644 index 0000000000000000000000000000000000000000..fc0814ad8f766cd5cd4b124f06ce6e4cbcd8811d GIT binary patch literal 8169 zcmcgx&5s;M6<_c7%zkxBK;K+p&2<5;%{{j*hBxK1}B*Y&OMFI}|UR8h1cz1R!+p)CrbbY*f z_1^FOs_MOabH97^+LZpM))9mm~ESeM46YC$?Z>dN>U-{i~u z9G~Im)vY#<2CTg|^a9^yy!~zx^ z4PDrtPCGC}13Pqji4*g>-G2K%XWC#s6IM4$tV)Oli&!4(V%MH^Jsw^kMBepXcMydx z92vCYByyP$QPQgB?6#WkNDDo8e4xPMEQncRb<@yzh8E~Vl3QIrkSy`Tp5=sIZOxW; z+ZDc{E+12|tn}jXr@+*0W9l7#0S@I;YB^@12Yu{)_@-{4E63e=0l0<0$JU&nCWL=i zgK?Z-fvCO_}MU6NfDttY7rkgD)5^GN+;9r$33g0Cy3Kpxa%1K5LFx4N}ENYTvpsndk??(X$GxUDFamLzrw5`iC% zw7e+1EG;(*B`{^VLRf+YAhsxJnmxA4-M{m~MCXjsP;2_ounD%HdK^O4M%9^vmMiRj z>gipMMe1*k?*Ih{+}BwC)?`aPx%c~nZB?zUzByUMA;!)~g}TPa!|f8L{bCZC5Waqf zK|iVRMdbSP(y2c*Rt}>v%uLwDfna$GEpNXV!8ufZT`K&_A#w|3oYlw}-%sTrP2+#9 zoBD7nChHM6KGEQ4Kch{mHPtgurA6yH9uE#HnD*yqhr{8*)x2S$Or6-$r`Jb0VG{5( zXQiELwrZ4jh|HlQk(h3@v33wPAtJwBm9#g3dz&}Qt5o6YdQ-)||AyRu)onM~zr?XjDixx^e`lPYwIXsO*4`%|=EbK5!tkp52tvsq!Tc37Hc7_ZLii$_AGu=z1Yma)}; zgH+n=UwtM|6qhV)qW?N(9zjt3ujxf-zZ31l|5G#07ckC$%QNCrgLT|!Y&^e0fj7=z zV&GwZ0Y$yk zWCk;@)x0TU=K6^3p_K~O#r4j*>*L{tr(&Gnx-2H$R;!hVasLD?QEuvkm$RuO1NjGI z&aMUWIs$pr$OWp_#yYAX(xLqBn9QR?nY7TM{QXIxd^|r^%BUA14X_@!(L~_Z1N&7> zzM;3)zl8q^XFnCs{L6w~;lM9v!6*0rSUIB~5-K+P0sW`5E+!Q)85{+>yn>m&w&cX| zIlJUWpXjHOVBjSF1!*)wGJl|W%#Yt=(M&#;9$rY|;Iy{7Ni@)3L;+3Yoj?qffT02P zr^zo}PZ`SDJ^a188@VEYyWhnCK6IRO(ZkhCYC9>9+r{0~~&63m8YsSD&KfRERKHOqux}9I6_wWg|>ZS=L z=It^Kzg)DKbi7&=OiBB_+X* zOh{)C<73GzgJ)Q{htFpInI-|gR%GPbl)k54EH?+e5~N>Gb)!fk3BYQd+b7ftRWQPI zVDHnFFhk3#K-D0&-Dp6C5do2#rUh9r-D1-n%`S=vSTUcFR~2^Da>C*$L86Y`VL`S% zt(x2k%Fj6kCi7t{>Bv+RgXYwn$2w^b%dJv|ma^QC%bWpP8dNf1w5jaATJ^&?MQ$c^ zBg%#2Ii1Sx)|*?x$M18aoi}-_s~HsnZE_qr|g4Mj3xB zgTe>wFpor27u$qIe9y+ax9jg`d|s_Osf_HZNlp6z)ryx6V!H$$467S_U@i%rfCR4T zmg*cWn_|IIFS7Rs1S!N$90_LEXKIwV(!S#h-#~QD_I%-V0@_Hf}SR#6x=u5A`aSG8Wg{Z8VEkJd`{NTT#+$XX-4C)GA=4jU+N0B;k-n zv~OMd`Zr+F)uii=iKmuI{Og5yy37!0_gK>Mne6H{5cq8_2LTpqNT-81@+8l;7u9*7 za$uJMS|)#O5ferpsFPxdbo9Q>{T>hS2L#Us5rKbM3><{o?G%wMV5-yl+kDzV^^xQvm5IBnYSis!olxnqnuKA+1|} zP^pRPq-bBDM)Uhh|DQNT`~RRr_%VOf|2uvCjSg1TpixwE(nVH1ZiheK(L;7pei8LB zGjEwc;(?yTKTFk0-P?M(6_luSa1g>w3x#zt&g`q+V#Xn#2y_fOQBVR%4?Q#1SdMOt zNNg0V>Pe?Y+$beVL9xw^P@vI8R2)1DH}dv}Fy_bEdk7yC scM*svI12#AELd{SNb^$JtbM%Xhi;I1gs~n~t&#EpJ?2beo*}LO1E+-GfB*mh literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.aggregator.doctree b/docs/build/doctrees/generated/cmoncrawl.aggregator.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bcafdbdf1c8b5d86caa9e7acabfbc43c648ceeb1 GIT binary patch literal 5976 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 I9+8^=10hO;_5c6? literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aclose.doctree b/docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aclose.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7f8c2a9d4df254e63bb7db129235765c1952fed5 GIT binary patch literal 9377 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 I>Wb9)FZdnB*Z=?k literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aopen.doctree b/docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aopen.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a80fd6b00fdd1a254e70bf0b72ccfda5f50de916 GIT binary patch literal 4857 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 At^fc4 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses.doctree b/docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses.doctree new file mode 100644 index 0000000000000000000000000000000000000000..353b2a0ae5d93a066dc5b76e99ebd9373c1696f6 GIT binary patch literal 11632 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages.doctree b/docs/build/doctrees/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d160284c7348279de896fc160331df50086333ba GIT binary patch literal 9861 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.aggregator.utils.doctree b/docs/build/doctrees/generated/cmoncrawl.aggregator.utils.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d71e7e2c8b035a46566b421229f8dbbc433dbeea GIT binary patch literal 6196 zcmc&&U2kJY8BR8_ojBiF5*2n+b_*?8v9a4O7brw41b1Cw!3t0*yFEKTXY4u7`C?{H zVyjv~L5ntM3KBa=fKcHM34Q=qe2BlmFW?%fQZFjR6@6yTIrg!;c2YrAOHMp9@60>% zemw8T4=TU7@ywk4s11=YKk7G#=S8tcg;q;m?4}`&q<*4rys01ReYMQVsfbhVQmy7d z;W9t)IF0mut=0{>^aIhz_tykWw$!pSd=6Vs)%+DLwHWvj)vdHm zRGmo4{dOwxdh^-^-xKC#H8&taU=qJ85ec(jOJ16c25sUVbJ{U9sj5lRHA|Xpuq$kp zU1bYwPrcq`aY&oT126Dh%9>y2aSsv_&AYK1`N#3e;J{8D%OuOhlApo%d3-;I?+x=n$cX#)S^H`+AwJjY zxiI$9fPU%Pbgo)m&xj6Y(6DMtYLc?gvxAW=TI^X!92%|iw9S3DbXQgTnq@39rSFc$ zBgK9NCw)1SYIYKt`ZmM(_J}dN2`PQjN@-J)b{Y`wxN+c!gqAOHp1>9@z1qC@>KiXT zeBiLk`S;Cf6 z-;+$=sT+laP)H9tk1`Z1U}&n%0M~{GyjDKIz*al<22Z`{0*_Chx==CR^}#)`{$;=u z>2i{=(nfXnFc}=i?cU*o^Hp)}=zN;n5AInN>;oEB6B>Db)OGp*t1{DX{NI@tYOe*p z1b_u4ZtOP}(0A2y=igqB+`bAu{%*S41G?<1)TLyg0sVsm2vO5A(ivsGjZ=ONxSy{6 zDr5r$*6Ont!CsB1Xy`-YN1FXn)i9ES1QBw<@K-As(|!WX_oaSpmrn_g^cmDYILrWa zc0^N4Aha<^w=6SBc$Z3G^aaFcp8QKhpN|2F?#x5f8jiQiszWWRc~~Q+%X*|!bzyG* zbGFC+4%jxQ{cM)v4Dnka`UzP6bi&u4OpK?+!i?b+_KyoPntk=hxXmNn=4_n%{`Bjq z2N!X~afqD>0^_73EcjJ%CFOj?95W#JZNZQIJ9qvYGpu*~))N@;pR(e!v);` zy;;gdPLjDl`%~Godkgb(a~F4R_Gk7N_SY8soB9yX{J4Gf-KYENyJdOLHhB1IZwG?P z-SwSWf-cUNMfL-lb2IFrA+Kv z5J%lCJ0g?e%EfMHa(9_XE%(FVP$a|@WlIUCg7On;Gtv9ln^zy~yIIP8Pi>SKI}%~8 zsP2Y&5zHL(lGAd1c3w)n>PK#ndbHyQc_DH0BGI$RDYd$FA@T`epkuX5s~5lyeym%) z(Eg`tDI|T5CP)Qe`7b_du^Yr~MA4c{5?hb2kT%`lx)VX>d@{&=9;#wLGd>ZhGSMz zRJ`n_**mY+-ISZ!*cn#BtHn%K5vwIZr9`fXR>0P%hPXbj^Ed;s@4qvIio3c$%i?ud1;t9Lz9DG?Sv0&;}HRvw$z55 zfpjBb)IXX^1Wmoz0STNcz$X-KJJMhSFXEl#Zk!6eMi` zpvl4WFMa_MUFRKl;&?MNI{t;?csMFCMte+o!>6)idBEkHOojoNEh9F;k8DM~r1oHy zp)+*Q;RDb_F*b6hHpL*4r0+1l%L061!HXusX|*cQrI60|Qh2t2s4m-aHgtm6C0XoH zdoDv|>_YXK$3f0kh}eCMKEau7Hrftijs$10pV;-I4y>SnhHV2DB5hC5`Jpl2ASRhV zn*QIhhSh{^>cNQzxB{c7uFlks3#wy>qOuDd^hFU`O&9R7+R8hdFxQ}yLE4#G%}%h# z3+!H?(TV9Rs-+BI;L$KnwB~%ci$wFq)Nr<^xP?o?*d!u>?VF&B_)x3uvDvKCh-sYG z84gUUYMPXoubIj0ckhQLFnu3?gjzP!rW`dycA+KMbuObF>B8j&vSr)sTir&dsFsKc#W8{f!g3?LPB znMTSp86DcBu2V74=PR=zT)>VQi(P7N5M zqk!ZxfDOS~5SwdX&F7y$!;kb`I6m4+fDrVlg%Po7TW=3hb8LELIBl(SCC}mD9bL1l SZhCm=J%f>MnM@;XH{J(^lvEf1 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.aggregator.utils.helpers.doctree b/docs/build/doctrees/generated/cmoncrawl.aggregator.utils.helpers.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4f78260a0add6382c225f2886d3ff6139bd14cf5 GIT binary patch literal 4914 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 VY-mcSb|_V&ngyeDq#y5t{{jz>KBE8t literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.doctree b/docs/build/doctrees/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e15bf38af0c2af14a32583a47d0b71f09c0f1c6a GIT binary patch literal 25998 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.aggregator.utils.ndjson_decoder.doctree b/docs/build/doctrees/generated/cmoncrawl.aggregator.utils.ndjson_decoder.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f4024918220a816d3b49b5532b012f32a1706786 GIT binary patch literal 5490 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 jL8({oUaz`c$gUSG4kr-Ca#p z^^C1(#Z8NLPz5BmkN_dz4T(HQJaG|!fnUHgQlvaYh$r}}y4!Ah$FmC&V97JCQ>V_U zI`?zFUHi$qyL0ZNH)YDgWY8o*knn&?qn85iXE9Bbd1#*dj=5*{^|BzRl4ruFM$ZAm zXJHfwnwYyrZ&-8{MzUF)Z%FE^kSC+#tj6lBao6m#WnELDifCm^Z}~A#d@zWbK9BL+ zSX`hkzD5W34(DLpH||~_d_~t&f}1GAw)L_%x;k6X_2R~Dy%>cFHSMfJ^a@c*gq=*` zrS@eDVIb`*8h%8i1Q5S#35oMxOF@>77aigs3);0fnQkc3vs;F3vTJOOU1tkyPrue; zJf^MVVGxBrWv#CY-iI_~>s9V2;W0lM9yrjkYT>G~m0z*dqX`v6(V#UgjHZxy+EceL zWgRxBYhe=5K}CAGVA&_|6!tWv_9=Xy!S~bnK4+f=$%xQBW?wI+Boszpjd_qo^z%2S zc^UoDeCyzm9ae8ELo)Umb})Wzn>_`YLQ{2-bwub_?xh=FaZF^c%-!*Nthz6O(id~N z<&?MgtO@I_12x&-+JNRTQA-#{~OD$ zJ!Yrre?zN>FTHqpL^8!?7RN*kZ$Zrvr`|0b62{-GY#Y5@S$TN&q#M1wg3q+xni22y zsF3IGsbNa7Q@UGinq(n9s8{s_&(ex|$Nt=a-2Y9nFX6~(7$|0LuUJXPkaQo)O!8n; zMvIxofbcUS@J5w@jV>J?49~sjg5am;Zq%%cJbDIZy^P30dV-{^a!}toOoxZO(?5K3 zmb7mi&Dy#3<{c;QefaWPN|PW=dfosrrOMz7ABsV#&PEg}#FVH)nf<~=)?Iyd*8R-b zJL}NOuV;HFqKUh=zLX9PV({<)A~CcYe5`7I2`WEF+?}n=I$n=ZX!OTt2SI}bWU*or zB0IdJ8(3NEHG08v)vH+3L5h$YD)Yc?pAwOnGpKNQn8&p9(uiKdwhR2G?N}%xdQ>4q z&J>V+)K3xU|7RiL_B=#r;2yiIKGKe!haCZ2)eoI1V|(Wxvpx1_L`_TWM;9r?BEJo! zAAsc#r#$lE)OuFh$r)Z_e|bVi7hnAWZgU^EIh*9ZKl^(6aJCD%sCSNsI{4T>e^xTn zpZkw#<*xXvk`nuS;eNZ1SeIiy<$V9BDtFR>_StWr!0$e|Nczaxx!Z@dS@f)MVsFZ%1?v^25dTgIlWUUOKwCw>E(3|8*erzizQ`=nZ#hN}^*U*k?zTp6j6K z%4peKRQAe_jg$?CHIo%6Ya#bESE!?PnG9bON-w)KcGI4n*BgE&Y(M9Xy0^6wl6P@> zNm8XyIH6VD9`&AG!4rjo3bn}BNR&ZyBWu`1ZZDL>g-!GUIxVS4oMN$>v++Rt7|WGn znTZIiby$yQyFR;%R_1Mexy!jqxS|#C?RmX!Tizs#y+N0Y*Z{I2(RZcjN@CkdOAx!3 zLuf=D#5)ZY^UAIhyov)w8`{=uf~H(3FQO+jf(PmqMxxQOrnl)Jgp?FfnJkfNx)#t* z)&si@TLIbf5_Bnv0a;c8u4SKt8fha;(oA_Y@wqKRQDJ4Od+_ps4DtK=HqfFZ5nVO_hb5xApo7$No(fky^QoIBpx7qT*7QZUlG*jBJki;une%Vjc{AneV%mjOh_aQJj9u9I54cPH*7rd z#vpwuggLDTS)6(!lY?L#AcVDvgdjGy^`?VBx{0*vAA?d!vw(XDYrxt5E)(bSRj8=Nr{sI#OPm2Q$TWSGR zzKY;6TEaxPtv|tX5V0BTKSu5R%G_T+sOgQArk*XS;fKBx8G4lz7LVIo$Iw@qQmH&_ zwE&jQbf_3lnq2f+M(N*~9`4&@g1ZK-fHSi zO;|>+Np#@K`(_5umJrnyx6YSd#C?*d0=?%mw1hrXpL-nS?1YHZ$7qnx+%U{dxQa+{ z2K(WDm~>$UWoWo;gN4jGQ+Q!)%{SsC_eVRkI!4n%;|>kr#6w(xQ8XuKddCOWu}9Gk zMIPpM$dq<+^+0bIlQ)=a)XhWMnO@5&IPwyw7ie-~XJL9N4>0g(7$*ixA>2h_uwYvt zHwW9sC1Gp|(>)jxGNK)s>B|$)d^!d&sC7pRTU^?~8sH5J%zyX4Ym?Bo@JH%p3(oW6 zJ>xdol0A(vmfJ^aIBfujN762)G{X{SZ2}F)-=f;N3^ZXhqHF z3YM&s>Gi5jI-#tiQFShC{UC?f;8Wt|(yu~tJPh<;!*K_rt_jqSOaVvO%M)nJC09rP z@&tY45ut42+L@+R?9AyEghrodHt?b4MqL=eUSJu>!;LQ&@P|@0D$D8JwdJ$q^;utB_tcebj?I?aCp?WVtx literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.loggers.doctree b/docs/build/doctrees/generated/cmoncrawl.common.loggers.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d6948d7c5e77ccce937383ed0f65d994763a09b8 GIT binary patch literal 2859 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 F{{gU{7)1a8 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.DomainCrawl.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.DomainCrawl.doctree new file mode 100644 index 0000000000000000000000000000000000000000..10acda06daf838588be85ca13612d97808c2db94 GIT binary patch literal 17989 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 D`Xzs? literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6bf33b8941cab393b65322742075e6764d46c4de GIT binary patch literal 36970 zcmd5_3y>T~dDcm~r%q4XvdLLyjWAl-cYA&iY%a2FVmk?veF@kkPIRjE-0s}X%v~Le%rEJs}-YOZ@G2T?~<{) zTkABvliHH zE6Q#STO-!!(QerqC&PgqG)&+w?2fx=q7wz22<3UcHOi zA@}B+%vG$GUZ#7xwD!RM3^LL-puR!Z+DXQ%Q3I__WQ4bCo@{Q|Ewek{Sv1Im5d@yS z*a<)$*#1p+-N&|$)*6QILn2%cw~Qvc8mo8O@y()9Tk*^#r0I~+z*xpdU2D5FWldV= zTAQprWO>$do967wTD@V{Ol$TxJl6r4`LnNgYb|@lJ+?MOlU9ORsH#89syMrBwoK0m z%=)Z`$SR%>tv&DX#?GR(fehQNy16QdooU2+DYVWyA7r~1{$Bw9_rd@D*isOdXVdnT zK}L3K8MHB(KkYO+8s7^Fi0>SQl9{v5@Ai^FS3)_03?EwM@;+@MIf4 zsroiZIOuo@qxzU=J>@04VWJl1N`Bx?mpWd9UX^Yy&ATmgy5ue``DQQ&EeWPeK)M`Q z{HAU%n?5{&e4M&;CC_BGYHl6mB7GRxU>kwaY|oYIpfS9ygcr$z_EX!&=4_|UFIrE%G4E?3?{(aPPNW>D(r{}=W42*0&bHSA%WYj&x#Z$m-wwMyJMe7I{4ss4muVDkY3F3b5>FnX$5ktI+8X-1dYoY;B4ysf{xN2HG zV_}9+HE}{xE$`1)3mIxik81;npou%)th|FDiNycsr~41~S<;TZrP-Rp_$?jqv_)H=)GI#{Hdw zzu1S4Ly>hlis_P#?KS9BApubb1`iCAVPFL*hPP}6UB-!QffT=O*6by_);&qa0iT*~ zy@S2)ZaJtRP_E6f0_V}qzXrm542CgDl>JynGF;X9XdL3kyP?4QL4*%RBHW(pL%GEY zG6sUsIyT{TQiMNIh)`b99|QkSMEvtj&lwxqut8D!XES0z+r!dzY|q)PE?sVZSb8j) ziFh!<#r8zlE``-OWi{sTb=b(A$zmFBQY%JVI5FcSt_iMfuQT#Lqi(6 zJ!wYHAvFW3u0sY|>b_acK-q$tvRL|tDR5Os99A}_qa);FnmTPT+y_nHl4XY`KlwsCIQ^@Mj=GIV8#IdGMPo4;1FB|~oJ z9o_jHW|?w|K*HCRT;wn7A%k%;Vz=m&yfD$jY=o``>?SgU`L>cH&XO$|okmbSW;8lx zvW?^nzte8JUQqR$h8Nu0adG5hdbHz_-GIf8HoTGsyyY6f!a=M2`}XH2V^3yRep6Zh3;l%X2BZ`4<- zt1OonXQ0(*%&Qs5HD06z3u*?+7U=aEj+%ppS_jr=Fu|k%L+O@UUh`&k3*|CoUgLZo z+&`RdQgsmbDS0@53&o^o(!w612mpLQ$tI_V;7xf-Y)a3b;p0k9&VQvF)Vn)i)ktYq zFt7aX;6nZN!A$Qk9_06}5_ zKb#XTy{6Y-xp1?%vNMw-HGcY$x?+MAX!acvj)mVo{+p>zOS0pem0i1BvYdfdPja@J zf!sEVwBQ0Y17!=c8kY?wFH>{SQ1ZZf5+;}w*2sI3BK~!Qx`lEXG6vc`$q^+FWlvJ1 zDYlYLPEW#{QmiLAuH@8DPr|B^(ym}$sh*@a;qSwm77vyPSNera2Mmn&fv_f6-0hMH zT$_g_1c*TDCc*~DNUxPg>nUr5j4gE<4Z1#U-AyK{fm^G>8h7A#o%f)i?!Fh+CTJ?B z!6nLTtUat=P|vGzwGMh5Sd67_vo*IBh|y4@^*V4%27!SlbS9Xa?F)7gm+}R%CP+XrI~{?Sc-SEcSg+}i$#WkeY;7VkQ~AM zX-bC4m4mWHthXmjHgpt-B5^(we^H zTI}E=QJlTQ%5kuKi1kv)q-$xHs2RvDjWf`)w5!w%W}N!rGb;Y3`)*SV)$dOTI^42@PY+cC_15@BOM!mV6w%E2FC;v~}>tK6E72iigy# zkn4&w$PP#(FE<}mGtdxI!2swYa$%oap_hny0?huKCNVvGu_J=IK`%WpI36~XS$bFBc)xzewE|X^TOzmxl)KH;-p>%$>ZRW zaLy$xAZ4h#M*A2_Y=ca?Ly3}_f!q@~11~nqRH1grMfUVeHQf%@1UB zm5=5(saqk}6=$G@=8I|u8e$q4nrG#bkLJhJ)mF(RGb7s=N1etVE{h!nfV*?j&xm9h}`i_k|e#;30ZLITyve5I8Yr1Lhcc8+{v(K>$w zLStbq&b#2!c>w+-LIa$KAtm=4dWdAX+j%cioFxs#=sJ&JsgFWsNOBhpA$H*{UFZE+ z#M#m!%KPa)CJ_1(X&Bn|NyxwgV4M%aWf&RIBfdcYL0NOTh=} zr}$GW7-kROZU#Q>@H&egY;Yia+A(?q4Z88e38v^i8qYXiW2W#p{?MJ2q`?7#4WXDG zW0~S;9BUe!Yby+IHjo{GvDj%CUbW^nVB;H8tWXaPkj<2y>{z(@wo6XjcIk=m7nSTh znPy5>Qz0lnuRWjUF1=#zfYAwDzte=zSk?|g&!}I&7Y6J^AxU%_rEu${aMz?G)1^wKa&$lDSn}LvwQkpf^2#xPx^y8tvs+81 zS8dup?k6QsIlkK}a~cR8^Udl~!!=+pCU!%&Ws1u6YnItG%9-+@F0IDebje(;H9B?J z)hWsmxU3#W=){LvMRtrkJfXa?Fn`5vub6944YTFLc2ZTtui17~3^PmIz$_&qZYN;V z!LsLe+Ja59N4V|TC>U5l`x=8R$L)Gxbq`OVN&PP~spsLRv*`RE{AgkYY}Xc*^gEf7 z=$>qgZhcK!?@gY2T>4;``FQNVkr>8tgPUc~Xj?)?a_b!IQ3BX9cS~qVr2|D`>ki(s zP+EwLZ-H7L{AD`^zy(`KTQ~xjp!bEN3*o+6QQt^jv+gQ{HZalg)Gw8jjWNHH^tjVl^u7A}nOe*#|$W-V+cOH=n6>$xNYbk7MYz{ZvA9ZTH*9LN=S9WP!$TnT zy;SNj%m0eV6qPs_zY~#*i`y^bCt6HA-bruRho*5pn#LYy9)Do?2=zUW);G1bnCc(T zMe-@SAey;ZD&JqP|GuEsm?i>DwTWHoGeA| zAN5Rn5EPL!41(SaKxW}WiZ!%HTL`-}DePP`0KOD>oN1xe&YMvn3~$Dx8piepa6IMQ zi!}Lw<6I8U_2A}BK&b^c&b3&ku=ADkPE3e*zG9oz>_v>|Xfd$7FM^WM*k!Bz$@y#B}jRqxIl=wDeJ%uPi#cYk zBbOp#6g9mm2N{YgS34O8kRM|v1|W~q3Tpw#S19S=0Ay@J-4h|!@F5Ljt!~@;0VIC2 zVQ;2-=)q_ibjZgN?0ps>gTK%!z~jmY!}_U$1U9BY$Q(9CSdp>KQOu|y!9XzM!XElm zV8#`Yb={b8q0Y#H%iy#Dj8{;h0brDM=Rsoqkyj#S6t}r42f2z$S9=ymjYF7;p~hZX zYc13$QPRPo#zIln>b9*PHQo@pET5gygAGp1af452Ezn6U>C4Ae>trLrhC5NAY)CQ6 zs}ma+1&22w#X!K}jvi`LfCGW7>jsC5big4L!fAsJze}YC=&-$b9-l%^RZs=@06`q>wl)z6S~&4VN;){4 z*t|viC4#Y5w=IDaYSLZ!5;f(pRh)cMvKbeQx^Q|6yv{twR(^g+SALT6B4-J!ccq34 zN0-p$sm#_)&$2T9Q&NVw^3S6eobNI6c+u4P4@|+8MCWO^BHIPNxVeL{6apxK00I67 z>49g82V?MOc@srs(r(e!JNzsjPtYloR~1^mh(EO_mlw+zPagJ_lVSjQWig)owSxR& zv25XhqmO*Fnr7m3pLyrkz#H!E&O5K=zlZqmVg7qP|Gk0!nq;hLtk%sotV|yI8T=!g zmmBV4cODiw4Z6z&Tu#7wPPjtIP7p#P{w2r^hJOY8s3wv_1AG-Dmm1(#!2rWG3NrDU z_^2k{F^Nf0-{jO-i3a}Uc2A-&V6ElB1LuJk{IgJr9#-vq2WXw|!XGU1MGOtN?A5Z+ z0OuK@Ddc)wyJsJN;Z^vp0A5F-s(2G_T!Ghcz61WS#aO&ztFaRkYyj~Cp?oGP=YKLu z<$jm6#l`VEsde>RlDIg|OF9GKIy5y_^>SZ}PY0uMAQP?L+a9BZQ6QCL*^1Y);~AfR z%9D)iK7ww+#&zMRf064z!>61-Q2I@|z*^FWsgjcYnCN$kVcj1?)^!i-v}SymSZTo4 zDP4J%xF}u8{Qwo3wc8qr)Ix^9E~XrOA_7|epaRi{55qo>nbOk(-9Nr{}04waiuHu#=FgXqggseIDA#-8KHcE3ypg zurDAEK+p47E^=-!iP#ZCk&~UK_b=G(6GsuZUdcwDEFmL{_*|iQ8U}I%K_U?gu;b zNHY+>J=8;23ctM>vaY+M)e72(a3xUUUgCG7gct z&;B7~UANC_^|hgJPal_kh>A_-viL+)joPfa%l;W=VlMjtEm_ND@28}LbJ?#JWvy=8 z`d#*lsIP@Lem&0uLYbpp-e*Y?_k0$0#oRM{(4_N2d^!-%{C*E@C_MA0kagXjxld;; z5>MKMA=s&nmd<-;{T`K=%qj7Ss1>#0a;My}HFC=D_Rxhe3jKFVIyk31A8MgF0A{S! zZCk%n##2jd{!Py>8LiAU7%9A+gb*MK!wZw{ym!0UF>aQZfKz#I?9?DVp=<6Ws zx_wk@YKhC>v~km`sL*6?icdtvs7;x>X$>>6zViSrS*!1SH6S)o$8Pc@j5$5cS60logqB(}$5@Aa43V59KJ_^uv(#)VL{^!D-{B_fetA+!UXP zicy;~chk>cCg!H^pe1X$DWRl;bJH&rWvy;o!cEnrd?B8#^W>At7UEAxrr(@tNX%Px zUz21IS3JT+&+MxED&(ZA?)f#uu@3tboSmc)o~)4b5ja12KKW_<7hpNg8QKPazKB;F z@#;&_)!)F?N$1P-?^p0I`UL;5+nTiaSKV<9$=+zFI#Y9-aNfcUenRfgu+IuTv*vnr zID3z8^DU597&!gcZ%1&T6{0c+};K3C2E*bevJUvj@jbZyd z8Ru*GZ~`OT;HD^kU^LrsvxTv#LfI?0G|q2vs6J1&;&B;^Mr{S3!jT!c(n5AExo*&c z;|GN&hlj{kACBl~b(+=HCD&_qA!Qrv^>4S~>-A<6+T%lcQ!K@7m^7t&+zza2tzq~+ z)EC(C3{k?QXVN1N8|E>y0r4he!ZP4^M1DI=cABeja0WCb==gE!aNS(&EJJzQ@XJpS z6i|4k(S(%oz%yzlwg|or-DbDiouC@c&6Dv?urzbU3_W+`+~mWm>3ObKwTxE1VZza? zBUsfMoH4!K?F7kEhG{8XvM2Q z)`rnq?ikA^NW2dB8_iaioWbn53K0=t9KZ%+9_GmiY=*D|$E$!u?0U5g-^|*pa6kyz zhJiEHIEieu!J@X-JI!`AvN{kfO@MEPOb<@&zyi0^6p(JqNA<@^ZQtzF-Rf!+?P&*m znd`y_^kPnGB{ewn()MjUAr#7j58{0c6oQ8ET8@U^U`>-rXp9f`Z{V3BK)#ieRdM16 z!*a-OyaFb^=^+hh7)z^z%C|t|M|2A&x)WUrEC(W!EO3D)d^3D#!?%7kOt!Vnb`?J* z23M?6kxgRCq5-u>-yr8$LD2T+W@jPUue8_TNS0Q`^_FM5~~hZQfEXRXnD|#lIpf9(>h6qg^q*ifslJwGbx6=mF&cl zQR%+fSYoIKyMeG0Xz_4pD%oVVj&*V0i7^H+;L%{5uy=?J?h?R06W+23fCZ+s6DkSD z768aXnQ%U<-#yVKyAr8*au7|1(w3qd{KVa^)AUhHWY^9X?7ha|k59%inRX^nCVepP zTj!tXmg#foyAD{_(Vb)H_B$Q2Rn#jjcq@G5PTc@)iKU!c7Yu<7hzkG z1nHTn#E5!4K{g(8rRDERln+?!1ql9UrOV<^HjoK`mzvu_@PK`PA(F7cGzQ(-=ruh3 zevrsL-PePouuV2Vz&@A;V;G@KRZQLzB~xu~;jwyPP0Ogri8^-d95b+U?kraRA8`4m AApigX literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.from_dict.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.from_dict.doctree new file mode 100644 index 0000000000000000000000000000000000000000..acd860e01181cdf92074bee894d0912966a09b71 GIT binary patch literal 8890 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 QRxQ}H%cq$_ABVdC1&Og2DgXcg literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.schema.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..dfa7284d39f2d0f1a88840bc0cb67febc3394845 GIT binary patch literal 11251 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.to_dict.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.to_dict.doctree new file mode 100644 index 0000000000000000000000000000000000000000..db6437dc3948882e11c62f8eb3adc1ce3d701228 GIT binary patch literal 8412 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.to_json.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.DomainRecord.to_json.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bb86e9c4a0ea9558a0f556172290acafe6b05ba7 GIT binary patch literal 16752 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 XZOsaG=0n?T)V$7i_?Rg~D%AcD5vI+L literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..df234aadbc8ce451b7d645e27f8f6dd5b022a4ee GIT binary patch literal 6301 zcmcIo&yVCr6`t9do|&GXJCp2a6?T(WfM^D#yA#178Yv(M3cd^`db(ec= zm)9=ub|dWqhbUPn0V2+c10XnZhy>v;KwS6>a^S$3GY4*bugZ4Y?&;2OV5Ql%%T@2a z`rh|m)q6i~ef+DNEBc>0NFwfqlb-Fmp>SD}sV!GHX~066eUzR4BzuybsCH~WPDC0z zEK@6(;c(A)V-{u)GPO_BrROKTeEnv^9O;R$T+Um3gKs{_PIz0jq$hn=`J`TV0uee; z;P)I6;JGKK5ledCnaJ37%QfMo}}N5ghAH&ciDuDyrPH|YekEo-|YQN z?~J#uxVWZYZA3P9FEf6q+Exh{UsD@7O6O|b_d=GPrvqDU+fv5fAeBIu&|LG}gpk{G zd^<@ni04*l2j*$ZO{3Y%z;-TTHl#VJ+LZQ)K4tuX-{QOcHecf}s)v0p0@lBny1wTy z-hVF^V|XCx-xW^iU5H21t{%FOeVCf`jfwpc3t4PS=Jv1T083+MS-m*HzF)d?EgkR` z)$&4@O)Bm*p5`6wlfMiveF=ZB;O_)~U!gq%w%F4(0kWQrnq_G1O``%rHhez#2D<9U6*$@M)o$2Zcz zdg%t_vfYS&UcxQEG zWr+zDS5{fc|5~Bsni!1hgxsl|#>@D~|9%Pa#+xvy?wNaq=U4AF%FOS7u&4wkxd{yvp%$lQi^+97x-&($LBuRE2a++5mXh6`nwRPwM|FYk7I-qGe`Eq{#pax^NYFN%cm3lLHBvC;EC zJJE%lx$IjpAjfVzAd}}%sX+OrO~nJMC7jWj+NNt0f)#~LR=;F!eBJ>8?(WrYd^j?O zsqdRh*m3RCtWZ$fmJ|+d?y*d=@y`gIIVt6Z@B`!!J>AH>dAZD!Q+@aSHh<~V-_tfX0kb}^ z$A6$#eM_ypZ-&AYeb3Zx{zx_56vy>JDDn*?`4An*-_SXl>eUxbMKQBXotBBDYcBF# z(v)=b+aRQ&`0rBTk6TV&OD-(=YKvx`w2R`CjM)b0Yv$14T~o$3ZVDBymgPL}(%MzE z@1!vm{#IG$?-nDb+*ex(lM;6;^idAW#>g<%Zgn%Y@jcs5QT>+pzJqhs&MR>dXLxZ@ zk|)v*BE0MvH5O!F;B`BHO=BN#dqhua571YrYZ=JZ(NG8(3dt%T@2sjl>dJ&^U`>W1 z4l<1FQ=Jr9ggcfd5cvf&!hEJjtjC_@R?(z@#(Y8EwK!M1F^fbjEuTGNes<@Y+UB-j zzP8jMn|Q!VqGV2rNiEfK*&rQ3-Tq@c4(T2Wxy%kQ(x!@;(WbHw)xH--skB(=2)eBz z#8NrzzR}hB;8y*k#o}1R7Pmv!XEAUlQ;{mv0qW+ul$Mr~soRY&4H4tdi2VCT?#zZ_ z^{x7c#$t7y_K*N54v2hR0Pp#BI7(5y0&y4j*=uN@spn$mh}gAUMt5?kq1MQ`+Azc? zL_F6*-RC7^h_V2C*n~*Q#WX)HUTp&$pSb?>J9~qx?g_n zYd~~A9y$&2G%^$aN+BNMY7=QMSlsiN9BLg1{63d~4`pp>4-iK#ir_n2>NZ#zSY?2g z8_27{XX<(~4W&J?xHm$lXvD$bbzczqcas1|k@YY|WG8^?IsI;4E!{CO;NEsPdIJs| zXd(_cYY?&eB8`xwsb8y`uz4nU2L1@g3x{Aqks6LDS)k@=%<}@GuPaq4&o7ipQ=QMXMGVI;^V(SQb#Txyg)$<$G8l+I*53~9siWrKnWeOOH2 zq(SpM{u82p{0aU`RGWtNafC_w!+FAAMq^Wd$8q*1e>+usRc~r>dyWTAkUdagMks8H zdB*PQh?$4xD7+sGgkKUwPkp{ISk7+OB(@8!deKo$J~D7DDdpd2%F4g2sBI(_N2C<^ zsCpdX`#>6dz`?TlRzCg_aCkqvi}1j$2!RGz6Y9oM|N5xREw$mDa#;It#|s@lb%{eG QTD9#``pYwgxeE3E3y^GTd;kCd literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4e4640c3af572d622f540b922ce78805604ded4d GIT binary patch literal 20553 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.from_dict.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.from_dict.doctree new file mode 100644 index 0000000000000000000000000000000000000000..59935a24948a14abdc282f3b3239c85f785e9c36 GIT binary patch literal 8905 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 SXiT#fZAyPxrqBnX{{I2v)fiv^ literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.from_json.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.from_json.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f529ea69c295bd6772cde34b7ec2a0bc474e36c2 GIT binary patch literal 9009 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 T$%lrtYQd)Tmu3omAnN`XCD|Ts literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.schema.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6087820c1bd2e41b3e7b9a458c2953755b1b4a1e GIT binary patch literal 11265 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.to_dict.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.to_dict.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cfa6cbf68305e858ff99156dfa52e65f777e25ce GIT binary patch literal 8427 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.to_json.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractConfig.to_json.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5274e0985390a8f191200d9212473aa3c39d2769 GIT binary patch literal 16767 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0d57a51f4badd32887e9080d83282cf4fdcf6f52 GIT binary patch literal 8264 zcmcgxO^oD56`uc@p5L8Gc8J1m(uznl3)|g6%K?ovpb*F*iv|>-Ty{5>+pg|%kK6Xz z<=vh`77(o1K_#+M%qfDv6%mO;;KCIlA;gIj2M#%N;KYF&->b6Sw!7QgD*`L^j$N*L zuip2*_p0jE_f~&;(p*sg;n;gkTXx@+f zIJ8(I7tq7vj%$a^OYS6cm%0nbjoRt>^@v%*@x6RFU*&6j{Z4Yk8*)`R!exa|@`g3^ zJqrrlw&f4;+!p5ni`w59iO{r!AHME;J*VHkZQM2-&k^)DA#sql@*Os!Y0fQV!B|j2 z=x_2cQP%O*xrdkLAlCvD7>I=L%Z8DI#+T(2{3>7OFUY9F{UPg| zo!hQsG2Z!h=nvqBsPmR@dCr-C@4Tg&&O`@OjXHXYoj&teXbNU`=5&Lh@H32d7{T%v zZ!X1Mz93f}&t{{7TeZh|6PEIq;H%H!_X>VT_MJ-`eH;5yddJRMCQj; z*5(G0$Bvtk2(LF`t%c_Y;5qDWe=DG9G2L4aY&b$VL)Ok7?le!Dr@qIoH--OH1Fkh& zUr{4fq|l_d)ubuPi8@(igZr1NQ`W(CIORhgF!1gb{!Pt14VYPS^^x2HJgorXLE7XF zDOWsK@2o_H#%SmsM}bMnWdlPZ7T#kCx#dl0c_ZcbMTOsO*SAc!<2v0=a1I7|H`-r( zwG%mlwIJ%u?6YW0h>p%I9i3T%^J5AD@XzZv{a$lEqO~(u66+TgMH&jzDxe$Vj+CVi z<+z~?pjijt1_7wi+aNWQ!13Gs4xwa>QR469b30ITLxzF_1PfgU;ac#zNAmuEe9UR6 zV<(?haY~JRN_lU^8;UeTnO~UyifT~Hz@gMHWpKYc8(g{QC1#O=gyOqE@mzWJS%n-a z4Pws{u~}Kn^vuTNj(TzGg+=FYEN(pVaqZs_%hb z*b)BAhyyJiIU-=5ji4|_SZoTeNt5}Z?p(I`ce7_ugcw^0*0cSg>3E4;3eK?tpn>8M ztDedXiRvQEu+K!IHOVbn^a5r%J;zEeWCM{q^zE3Iio@wqODW|1SPMKQzkUphe}nb6 zl%M#IXZfF%`xTa~EZpuxU<9I!atO18o+t8Z`cC;g27Og60hw3Rw=%AOufcWt?Ei*I zy_Zj_hNS$S`Q6#ru>X!kQk`3C0GfC+1;UPl-2R1El9y#aMFRpNYhM9o9{!Q1r{ zna%tKxu35#en2~MKP)6(xpjDeF;0L+U z6`vRQJv+BwrHyx%Xl`Zv&i3WXnxjJgS`vO{Aw8Du`>@u&>1)#90}LvsjhVZT!AJE9 zrpH67U@o5jzFxspLSzo^)o5>c2<%fJP#42^!4B8_&-5p*;%u5{3rDmOm|kQ zVE!Ec&w4F$;PgMp@slvk&hg7jwX1m@OqF<_n&UHe&PD&v)X$}k{sRU_WLucJwEl9f zj=^1ssqUlFy#7?C+^AJEJ+-F_20tvC^2DtETCJwR=*Nyt#+@uK3QTrhbu5T`9{-C77{9g~VX(#d3{^*r@1^c_rP;xsgg-QYG& zc>6Wv^0#!Xd5~yRJIo%jYT|$8{LF zX$apkP)ra}GI)p?Pm`2aV}67ky&9n9K0izD(KS_k`Z|9>lL0WiM&}76_NLf%)=vXMBdYoDp{HAxLbf!;i=BXYr3deg)%)q4}M0bt^;m$ejfasUR9B(@V@T( zx+Z%ex6?-|xt`+~z32I<0a4mS2j#D-GZPh*U(hAJ@yz5G^22sZSJGOfDQdB-Mh|(Y z(YL5RkBwPc?44PWtqdD`)XeI`G@(rZzpM{(yrnD6l~a6yw|UK-w`lC5+_mD6s`Ex( zi{H*#bWL7vL`(=&J8OI9XpDM(I84y8OU25- zAnY+Tg2>P67UnY5V%&EGH?o@qXiNvBR|}_dJ7j8m?6P~zO>Qp9O>SZ?6tQ+^CZuhALI&bCYE4VH>5|Wc%<@Cquo+d!poVTQPUV`WJ|W`R2Flkx zXM~#txogJ4H^xnJ$pNW$?06U$Iq?9jYH*NFLR=rUjm}L zVb7|Frtn_n+L|@l8bv)8NW?cjKL%4vU+sH?9KfT8VUEQ8eY*?w!9+X;XWme6Q*2`bkD5!8*itg*wsGkQP zA?gRe!hexeR|jfILMQd%G~zGe?ooZml6J!1h~-Yvn@Ze{<$x13AE?kR6t-DEJ?~xFwP{oO LOEZPu4z>RS;nf;H literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f76cf264d8a0e9ac257c20c0908a9b7de604cc6f GIT binary patch literal 25358 zcmd5_dyFKL_e_dV8kjyDeLGvgTh=A7GEzal%UyK}H(P<+b9PZV)`w0mcIx4U2#E{(&fo03nbdAc#$z1c;CoND%o8=V1{@;P+Kk zKc~C4XLo(RlkTP;RrP)KJ$_a7RrPmIjDBKobBO<8(|*^qob`s@YB_Gp@IyAya+|%5 z;RNA@@Ys{#qhXy*dir_a?RiZjWJ4&?G_7{aGo0{j$PQBRz-s#qS%2I&nt|myadmUl z95ctyhIMn2jRscGHd3$H_05j!G(n);WzGH4?MjYxZYi^vtq4=)B+k9 zdC*uV&MMb?Cggnp6PL5Gt`4q)&^*K@wYZz+UN$Csx5!4?mScpAy=9$E=|SLG%e??n zAt~&&T0Zr7yxG=$9}jUo>gXMDHPPyIlbdC|x#k%wRHnzq1AUcVh32$5YwkC%GWVKC zm_2X09bRRexTvIKOH*hNlNcYrdM` z8lI01UwwK{Z`mATqn6V$)>HBqsxf~S9W<|jgs;Wl>+ts|{vM;wLSCN5yI6;qEN2z! zV>jirQ>$~C)GVh~%+;~#3NyzRgHZ38?=t5SX)T&pLnr9K2yC?3$A2Af4$>RVw;<}E z=Vff{@f^E#(#Ar~54__wbg7B!$6$5nT;qdXvR%D>=CKxp99SKr5nY_Eovbaoj&Zye zxC2!<#*LSFoaQ|0j^hS;&PUkIXHHxjz_=G`N4YSMo;qGT5%o#)yE?HM7pWaRbqXrt zZZ*S3d5ti!^)ZOnLTqxq(_Y~H0hDw-!#BKhMo4wvkGgkD_jn@b9*wr!)Z6oIYk9uA5ty!XOXH>+ z=Y1HDmR-EtAv**;kG9Hhi)vjfBmS2n*l(tjhhb_LI`!}({a;#;k<(LA-2D3 zI4yXxwvGWdr3E>X%`jd#+qqX1^wXo=B${lw9o=$5wx_#+;SUc8L@?3|h{aq8Pjqk9 z2tq-L?ZXqlYc#DDs~K*xNx)6VZS`oJoGAtf!o7_J(cmJv>{lVozr&m(3z~n>CmE^g za&V0>;FDtF1X4H+c0Ud15o8FlN$Hc71~;yK(eNh!jYqyEJvIT4l3I-Oltvr%H2=4&at z-0LpeVa6(_b5og6VWH-K6qus@b6_j0r!$cm44=t$;iS3?g?fqz6bLG^${dx`YAO{3 zWqvy&q(c#*czU-RViGel6Vs@(xejRR4yeSG^Y(JTs$}`TnvrtLA7Y2%;l=IJ8pQQd z@XLlz#x`;?*ZHTFG}*A*H@w(SQk4N5`r}FxC4&q(^duXz9KPsFkI^*GkGeC$Z!*AV z|BjLzP19ENUOUjv>Fu78?H#+^?{&Mb7ifM*_ks`iTv}jmVi>T0JMMH&=PCOxNBASO zEQx^TOl05DszqW`f?sX8ZRgW&g}V8?^rfm9nr=I^D4UMopmDA0&ZFcK!`D zfkHcvdXNZdH$eVB)tsbs%MnV>Khhv?--aeK@U?S{{|=hWDytmhf2!_5v9ctA>KMO& zk8;GXAg4D0SObP^iWcIS9wMq3W+DY_Y^w!|`E7HIO|10VZLwN?noVhe+tjf9 z4gAo4iUjravzT}Cr?L#KWbQJL2)@AQdujd-jKP|X&m5Yr6QtwH>A>(LEv#2Py=$iD z6jzDhZx53VMCEELu2(~ZOvHubD2uvKJg(UvBc^BVk1Ca%4ye$O%&7Dcc46zYkX!-=Gqv^z1wk_WNbK{>PbA1Q6FZZh+Q zjDtq7fB>2O`M56Ie5+%ku?lEMf#QlEk7e=JgyoX>MqdmrnZ#`sakKwA7O}9(DsdS5 zFHtEwfhwQveqBwVcxE68R2n1yT}_~PxR(SHK_y|f{#jdpRLy=vO*A#kl}&7O6E;pm z5v}0kPAXtwJ}rZ1_V>9m2GCn-(9CUlMZSj+n*Haz**7_gX3y?bPJD|egKtNrs^)i0 zO`zEPB!Noicbl3(vH3{?iTUluV(a~CPAb^s&K6tcCVF?D!paw1XVtwZR+uEv@46FF zEFibYUsF@5Agi4J4i;1!L{#OAuE*7#P>Cvs0ZKoslq zNlB(;(Ip5Bxaj(_lG1h-U4o6Ac2m}@MEKo|qP?o@T1gb`WmKvP?Ej`FP;C5?KqZTQ zT}`0aq9uXd1@@5<wozaF$hAIj~=;?nSY}B!TL{e!ZGX1zEjGz}_#a za$sLjcS0qqoa+|@`yg(xsOClG29<$*Nl8Nq?1Oa0R+1?Jc0pi3U|&~K+77S_Hgeic zS#v+IZ(SAvwbT;Z{xe$BL}zA1*vd0-p3L#naj8@!vEM6;_KQBHltnt|R2{tpooy|b zJ^^<6jvMp~(!M}!m&hj(t^FAYO++5;U&W>UDE`UBGwdhvr1Ufdf{jnxPg992%R)Y( z{Sj*T3*d+KolQ!GU7ic=XQ`o|DQl>HjGr_^m@-y1I`~=C5y49Pd0a+8jV%Ie6d!z! zY9kvD97dc9>2XI4@hpW`3kfj&Rl8I14ac$WQ7!X~~! zKl~(XVaz0DOeCgPMWrZui6HTDc-a9An?vlfKws{)bx&)$Z5&NB(hO~(0XD+Rv&)t~ z^vF$*K63M;(Jv|4{!X4Kdn6Y?dlS#xF5GxPGsLecp{z2$|ssE1QuAt`Wy> zq+W;YQ0h*DNV3PIU!TICDBQ>cpl9USRXUD(_87fh@!XEqvYJ7C?VNwSb^}US&Whn_ z9m}VayQxyP?>co^29bB)&{o>69vrWU8_U6EqtOsG{HAGi^m<==$7`=buy{o$&BtL)0~*r=s+_l4ff=5jBKsK~<-WZKKfPsp3_lft0Vm|+mVUXf zC4LNk*==nU^1at{&lkQJ6%L&^tLUr!LJF{$wt$0WK#zroBU`DRs21XnL%XLQUaBo| z3tKv~By9}8fxC2eDLTm<4|?oc4#>DM1}wzmQqj%S$gJJKk7{HDXwnhEX2@-_!w~-sT>RKcxx4`5lJFIqRobX%Cv6hR zWF`NF1LGM>4`Ko)Z`Yp)JUTHUvr z;PQyz@|r#_>sxWotk}il0j4sj#5Dw}U|a%}EZxA7g^x{3(cn~wF2Arlq&dFWx1{=R z{~C!!z{+IIWMW`Y*R1^ll_|#+`xM?+LzPXGtb{7|X=*cd4B7r9JxGori{qZ9IAPz1 z;v69C`*DSN^#fG@#)@M=B8f{06rMpBFjJgi?}EobL2Yo>CW2|js~t{)$xo<~0Fzfa!wBil2rjD@7*aE1rTxzL@gm?OfZ{R z9>eXH*5#&CqBoO2V&UGaOIm(Of9)dInC9Uq;&JpB8vG2-2RAmT}9gt$W zo{e-S+F~;t5DF}5)~4!dC92&*y8Q1^CE@aqaq^X1{t;eu_gwyu2PLiU+s<9yO*`U1 zvwj#BmCsBYqR2GO6nJQQNyMfV^Mwo&Y>$BgB=~32c7g>IDV&=926eam2my67w|v}SFwkyBojjnJM^h*UX#Ph&2(s@ecyV4v#`;h{NHt<%gwoLT%oYi8^k# zGRFgU+rX6N>Vw@raLs5svc0ODUn7%TY0>^5{Nveh(Y{yy-Y0+Wm%k6l-v{}x!6rKT zdduiyyYim@!yh)X+IE-2MeKa)Jc$u5r;t~RwhcuBCo=0hQ5mjq2Y&KqU1X9cMe$_c zK4p?$he<{|9&GC8lVn+Pz)C-g$1K|xEt>RGI&7s`A+C#$4_pnu_-=}cE$rO>FO;=k z$3N8MTYEU*mUkB&4zPce>J57b?dkIz9CQ)5^e=sBH#H?D3jdobEV^zF1GFNQh)4D9 z?pvpKz@OvRvfY-_JK(aVs|xts&eqf&@vM)_sq!+9m&S~b3$kt|+u5gf)?mR5?sH`5 zVg^@~LdAYb=?L`!Hkm%lwNyT|E9P%sK-C@3-;P&Y$#LQHQ&<;!*SWy!_-^m-bIF-A z=2(nVY#7EdYtx%FOqEX_2vg*A>nl`AOt*fQw_L6hswFpxUgSl0Z@Tp_gOXPFO-{Ey zEx6o{v%V+xt-!79sexPMrnhgmsR9Qbnur~=KM%$pdRaP54dR_Y-9jA-@7xb2cI=(U zDtaeUfxsv)`hk!#*ZeUTTajzho3v`w<||$EYSO20%{R7CNXj*Tz>DslYtDlU)$FT} zw7PFQcg>TrKhXrEvU5`5BKJJ8ljaIs^a0YE7()vZ=GhO?>s@iu`?gSw!bvq$-LaFt ztD=+ggbSCFn|^=`uEQN<11;OW1YOu)rK>N~)ywhKE4bRU|B?UuHTsv_LLPWWu4Q@JJ>f8wIC@TGiJhaP z_5K_VWQ)WiI6zMcr}+mBB#2avY|e}R8b=X=LDpnqVG0RQ_6o!2XWfy1x!j231k~nn zsyoaMHhUhWs@CGf)cd0+B0)8q@QonAp>AaCK18Xkc?xbsQYghrD`aE8M487@AFWI; zvPl``K;Aao&_}_3pm(~s*(b(fVEML|q9LsuYz^wN|(2pXo= zT2T2uM8)D;nCKyLDOe8TxF%engR|H7488WlQFgFvbTvAX4OeV(ksm=RJBx(No zsCoFRPDZ^Z9LrH#lZx4Y<7+V04g&`qOPX8eQJDhn+Q!@S-t*yj2^tAx} zw*e?VP7lSk{Z}-G{RRH<8P8k8M<5j9FBX0C8l>ar?=ga%Fz@Cc*zvCvd+b13ue{*{ z_*j6u0ojsxLJl026Fo>j5#^vo*g0&q=ze_&90Es*k-Va9+UnN1nKIM5Q13Vm~jFx`9 dFMiCmxlitFz?xR6)>MmtP+|rR&b{Tv{{xnO3o-xz literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.from_dict.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.from_dict.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d7326db6461eff1b79af5d63729cba40ca8aac98 GIT binary patch literal 8935 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 UvB`$Uv})0&@RvmjeJSeyA2ebm%K!iX literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.from_json.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.from_json.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5a09a7eaac1ce311c09ea55d2605891936c7c3b9 GIT binary patch literal 9039 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.to_dict.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.to_dict.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b66cc13e96f5619b5d4dd9c63ed77757b966d52b GIT binary patch literal 8457 zcmcIpU5Fh?6`sF4Gk1P7vzx49k{uU!nMm%vD=N5wD3TZ<(NPwo582rC?XG*P@AU2J z?XJ$uJgh%RNCpZKw)a`|P4Hb%79VsGd=(!Q6?_sO1Yh=T5x-N_-P7HZ+nG$5z@2ng zSDjP!o$s8gI_C$i_x`svrT?k*IOJZi-?d#g5H5>Twde{b8M8p9@1|FNn7)&4t9E4X z#UhCumZ~ZAaJc8Y5ew4$sam7%((~hPHhv*yj`T!O4CgIA&lm2e+q|t>(vv@mYRZMLjOYthamM`kuph z@0*br0sFZ3rf>ppS3EfA=%!uS!&Kv*nPP9q0v6elxhIES1J{jWEd1p=GfAIMsg@VG zY`#$754t$hw_W>>a4U)=g0xQ&H(Z-U78Vi{d6TD}pI&)ELGyvyAH@AruDSGRmG z#$Vmv3-C1Xg^mCELiqRZ177W1Q))%elRTNIl6x~NbNFhX!Y-4^#|G(8+yew1rbvG5>a{X)7Nw5c&e)WNs~%(T;-25 zm2EZe1v;3QT&bmK_74&*oiN#2ezNEs&4f{oP?o>q!o|tNWPs2+BXgf zg`b)!v5E(lp~}g!hmJ9}o~L$v8yz#hE3wK%kcc771#ubPyLnhTqsSGqz=g9~``GeI zdb2&{f|?_}HM@Q=8Rs%IIK8leE5^1Lq-rKSz)pk)I%K43R`f@y?jY@G$YiRPOA#7x zv;&9C@dlog9;!A1%UHMxZCn?gy!lXkJGiDJ63zfH-R}VOZ#98mEC?JXfg=;Uc1lvy z_i|q0smiH;OkS&+4y!yOt$)k3{@$G6@*^06)hxndP56H%3!ele|5FLYmRW8EN3Es- zKmONAK>akm88hkV?)yy;UgOswv!TRH&x+ zj@e*zj)oZHA2-8dzTwyOe6mr`NzB3jTrtFYM(9G{^BQF$Nk^Y=p8I5@9EYc+k3ThR zZZyj;A2v%qU#4meo0SY3qwMT}`A+l1p9PpXIuX`zVa?)Cg3Cu0&KM=ni^pW|J!qcr zL_9_t7vK>dt&s=qYP_xVBpSEGW{fQ~z6jp`pZ>NpMPq~q+E-kv$#@!-S( z=A}jjrvSaB@ANg;Uv1QK3fMC(X9xTn%`<*}wtuxz!6|^Bqby1d_q&ZsPJz2o^1QH{ zOb^cR)Awr=_L?U=5q4fWY)_WHcc#)Go>KbLFT?L2zvGq$UAHMkiKHy90;yWU-wtkr z$e*Uw+|~TkZhZVBwO&iG;TAYZeBb1EUaEa8(oAZ}lESf&i;;0U`Z;iTf}kR~^avMK z-QP(4_ynojS9D(OCckX%^}yiEbW_q-P;;4Wrc72YJL#A3 z)L`oS^}NZ@)^W`4;G=~@$myu38BTAZkjEG%m0 z*>0NB65yIOmsH*{dGpD6nWBKeJ2ZA$tvN|Vr3R}gEUe@$rof;UVbyQYW~}lVk%{E)^}7p%l#vFh8LtoSuE{wh?ixf#)9l!ye?(0N#x^gm1s%@3Hl0k zEd#vT90(x;q^U|D?@X&zssIJa*xDb6Xq=*DjdHP}Md)K_43VEOEzD=S#oF^Ex3WYo zY0L&>b&?&m5;2_`^VtLDr*~%561R~?%U)Y*gYA33N+LraAGNkz)=!3zx3*_T0VS9q zm)T>qw5hzrXi@27wdMt3A}yWDL@#(+A_tu>baZIASp8_RC=!vy?ZEX}1e|HAh#G2L zB(f@{rKP0mQteAk#OS}|0&7O@(H!#87pos?gVi}&LkyreAo6vJebu*vVS@ZP5OlUCJ#AN=XrZ8rSD=d@((CZxA4@JzZ@<`1R2f0xXIetyibre%# zyYJIN$VD-5A$JJgQ7c$X3>Pq&G_WS?W(__ zbc4JK%n61dqVJ78ncklI=Z7t|7P8O+EDYZ0XvkKmrEg>QvgEk#Rq}3_bu)XxsM+hJm(7{|BB8( zTUi47G4j$!`DjbmWDK~M9FF>f1JfIi1I`*m^xjQEgleh{>w<3<2@b&@;dsFSEXYH{ zCIt(mtZV(eG0_)wE=mj2%qT8_HRC>W;lu~9FK0;D9;)*WdhJ>a30~hq@e9=@Dy=?N z8(AS5boB=&uwgeb60~?E*VQZw9#FAXEt&uWj|Mrh_jqs@X_>UJrqTu`39?BPyFn!6 z@u{Y(HY=^PHS1x&_cT5>7;Ws$-hh`Rp=Xv=~| literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.to_json.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.ExtractorConfig.to_json.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6a3eeba4c30e5ab92a6a069568034a3be498d62e GIT binary patch literal 16797 zcmeHOUyR&F8NYvfcYC=%$+fvQZPJ_ytu7(E+o~0!Ck0eeB9y>URVk{Jq{e5@p1tR_ zU3;9{Lv1M%Rhw#_S|gP{RYHIO(KmRYk$B*tK!u=rF+B!{>}0snFlLRp%i)I6 zWDROki==L`j@EZ<4FIgR=Jerro9?^BZ+~e(JyoNQcgC^1=1!YBmz16l)8bSx)64}j zz$Mn0U_wmre8{CT8a0MS*lgBSL2eovhgefd6lF}a*+@TIY{oKe5^e?CDqBz~^~~*n zf?iRN)28mD&gL{r^?hiB-wj*si(m74;0`agRc+TJUF;LEIjZj9t66axzHXTsF*=WWP7ieNcOG*z+uU`o?6-K+F73cl{f<~-XNTCtQz_A_tDY;a z?fD@1@$*x`wlTpPrmd4f%96s!#ySXU+zlrBH2mEQe;e?35`_l6c_tTi1Jq^OJKzZH zA?onSH%_c?RP%)OKB0!Ap9opI+5m8!$a7}5Xs8CpDWg5q;+An7Yy|?%fcI+!c{bqA zGTu>q6HGt@FYUcgT$r4gD0-@p=;Wz&f7f(($-ck2zU?^H`swwvs^ybY>%{h9B1QEz z(@gGN@B+A{8ARJvG}F@pOZ9R$Rm*br6kD}(?Pv>|ZmvHIu>*>2f6c`RRIQ6~!{atw zUo>qBYogxe%dnI!#|Ai`fJdtkX0XP%b7Ay_z_rLl7?>Zeldc+AGT<|?WOdsjDMZJk zN|{nlp4{C#vEKSTu8>DL>VA>y9@z=qKV~F|-Gh0x3u0I+xse1sxad*iD)N)ant4a)Jc+dx)0Uy|hT{07a=}xh;>_JB# zTz4R{5s3Y@a$ZdY<#CII4OE$Bjrn+F%of9jtTeC5q_KK0LdoS-Iqlp-i;7&mNkJ;7Vg;a!vA?G^EU8R2~|F~tmSY+`;O zYnRwM@RKrt%q8VEQEITpMDMK3?~GnU+8ZDVC0*U=tEL^YDR&bDA0$9jKuIQ8kosHbyA{kLT5mkLv37^34=S#@s#C|EN4=!G}gtZDPa zIOUiPo(;uvL{}N-=-nX�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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.PipeMetadata.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.PipeMetadata.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ad8e4685e672c750fcf752b36374235d8b97479a GIT binary patch literal 20439 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 E1E*nI^Z)<= literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.RetrieveResponse.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.RetrieveResponse.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b48a9e4c4a6d4ba3b4066bd43cf7c4c32bbf543e GIT binary patch literal 6895 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 L4BDKdZtH&m8WU3` literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5b55418c583009fe525ac0262ce1ded7db277cce GIT binary patch literal 5149 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 OBT9d>OyP^4{(k`6P{)1% literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b39aab05519d7dda741ca58960520b11e406c496 GIT binary patch literal 18100 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 R#x!f*ru3I(3Vj^v{~sM96AJ(U literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.from_json.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.from_json.doctree new file mode 100644 index 0000000000000000000000000000000000000000..46049c0fc3b5ec94bc39a450d3bb6138dfe3fc15 GIT binary patch literal 8994 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 T$%lrtYQd)Tmu3om9P0iT?<*M@ literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.schema.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d0b3e5e57eefa55e82dc61fc5d06737643e56820 GIT binary patch literal 11251 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.to_dict.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.RoutesConfig.to_dict.doctree new file mode 100644 index 0000000000000000000000000000000000000000..963154767290bbef13f89063c3e21e7f014fcd45 GIT binary patch literal 8412 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 a*zllfYgVX}4{g(^Ii2V)VTw2vYW@fF$j^QN literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.common.types.doctree b/docs/build/doctrees/generated/cmoncrawl.common.types.doctree new file mode 100644 index 0000000000000000000000000000000000000000..de3bdf2b7746fd5bb29ab043ee59cbf223fc8f2c GIT binary patch literal 12267 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 RsR^MCQb?@9S ztLkRDSptegGE%ExuAn07v#SWc_@uk~FDUrzvmorlB7&g5s{7f!J(EdRcc9Zsx}_(v8A$Icu;cYu!$FSz9%vD}7pj=H?mhBTEK*aAxNP_Iwl9R;Mpik@rP6wJNQ7uV^dMah>>;hY17uf>aQ7?5_ z6wvO$*zsMPvhJ67;W?Cyfm@BrtA&X!bpx|Tq+A%ojQv#9mPnbu1xQn=|jT9^ay?$?`L^y;#N>gpqo6N z_Ka*v_>ju<7<1?&{0KSw{}1__^RQHkh~H+-(g|uFAp&yU4fI%3>dpRu?XW)~9cpRc zKgsTz`E@XT7b?Fu1+oWI%j? zeW${Q_l1Yp{Wyrcf_0Ark(tMOe^KIn&YXG1ZDD5W7CkxCG*+1Qfw?oh&pgDGIb6K! znfmv5b9m!NQg`x6a?qU2^le-+cvl|Jq!#t#HAPK@3zC7GP9s`v)gIuN{U{t}k7P3a z_OY?rnqFOJQteUT?~9n|DtRg9R8W40ntJ0l*5(Bx`&w35-BRl{#g@dIsVKM0=P|+= zbjfMGV18KPv*L!fpEz{j`gt*UX~t8mR!XGmgR>a&%TMjhnym0oCkoG=_aqJsi)jDjJ;k<mGIy=<1flmU-Ii7En*@mGkSz>{TktmCPh`y}G} z-Rq!_AS4N549;e1EXY2O7}*#2pJTLS#UV?)LOl z(~iOcjtPsnj)lB4a7QU?sx_Totcs-0xCp0JCkbM!3^^Fq5L`qX4+(N*PpumYtQ!jL z{)!X}nmCb#GzYE?RBDl+R(++35?fk#T;ZZgp=DW)D|A-_2g!HYDxkows1+PWAoxk1 z0#|< zOW+VK5$p;DdW?w2?lmyf2bh$x*za~h7M*x3Srm36KJ2DyOLLknfYXvRfPr^IVYCH|R0Jb+4c&>m3Uaj6^_9e{k7$-sxQHm)Av$n;H?)DEIDuu6cI z2S6uG$H5b>57#q2)(5$*u;qV>9$W zY`8u{9PDh2h}8$^1|6B^uIbq3ncxWV6WMM!Kok_I;hatuBI!@@xq%K}KOz|(bw~C9 z-A5YqsRIy?u?0p^s~@Q?8(aq#MO(nP(1*s&sr$0`)n?vFM!5QeETtW(l}v&WFR*%n zhIe$QS1n};28c#*qI>EBE)p#@-4QTd-c4*0!6wnIMj+va)D2;EZi1TienEz`K{?Px znQj|{-qOVExA#|l?feD*2-VhP-OJESW}+w9Q|Q&2d0a-#)M`BnjTu(aqA{S=k)Kg?x+(ZFd)Fx$ANtgY z+Mthq?gZ--Q^bN&6CgkJh;8I^zThp@gnK`wLWN1f;PIYKD;brI}LJ$kM zd0Q{$^at?Yz4T?k8m&Pj2>ic*&<521O>nNvi4)|rCE3K@+57>9*dOXu%Z^Uld4|*P Ih@{{7FJ6kg+yDRo literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0c7a007b5479313d23be245f2c4dae3d821cfe22 GIT binary patch literal 5962 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 Lg|_0zx~+c!X_Rg* literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.extraction.filters.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.extraction.filters.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b5ceb20d02120b59defa83af35ffdd676459a374 GIT binary patch literal 6802 zcmds6U2j}R8Fpf??cMkzPKX60DO;fyM`U*sibQ3i2(=OyjkH2dRUvRVojqrE=j@&@ zX6D3RMUg-#B1Tiba*zNa;2M4aS3uR@fCOA}%Oz5!ULeHt&N*lIcoVxDXiJ5qwRgT} z-uHQ*cjoc8YCrkzCl~CG*;I+}qk}f{yeRg#%FL=4yJ^THojuB~d^@|J?U=e``zlVQ z%QLfp9B4{orx_|cP7Ua zi)OhvUDqrHe#EnG+GD1{w3dD^)vyX#VbS*#op{9!m{O?3_gcil{M)LRCeuQXxg*K@ z)F(A7nhmHa6Px0qSQD4TqPT2^9TA7TGa7q=?{d-kij0S_oa($9yOBSN?~YrxYNR{Z zs_Nuh>1Frx9%QEdr z->sa%)W4iY7A*x#wyQN$0KA0RzLZ-(pN$=RZd&~2ba8PN7F@R$JgZqR4VZM?IB-^1i+ zy!J|b?OA~BU9tYz0qLzJJo5Z#;2eOGt2=uAgV|9DjFrGg>S94L0ukGjnA6EPLsA>JVAYIQd7HfZOU&|fB(mf2unc=3w`Atp(`J{rOi@J(Ki1;}iyw>2;%%fe zTKNYj!Gk)#iB8|c_P#$uF^|f!dFB11@jPy}-`6RpLG@Q0<xu#p*5jQFVM{6RCw5GyH zs}x3f`DU+-I9W#UH3eQ9ZIt>LE%ik3@-T5 z2*pNGOl5%5x{h6kgcoXs67Z%u*NX$TffiZ!!^=P<0KnNC&N zsb*>(@1+AQw?VgKdZJ)n&O+4GNde<@9NeEb{3uEBxQ*PH9x}Lnr@G&Iv88-`zjU1e~uU~`tv zpkOEg69qO9)&mv|Qa0eQxQDPU+cS37ro!j>?+6_RSgZ~bMI2fEV%1y*Dnn-yppyeYQzMKVnzL#g zX?EZUe;@*UfZ!#f;>@fm2vyqoW{SvGFx7cm&WlbEyR0zoWmiClaN+tq;$UZMM2sFm zl{vK9wH2fbCO8CsV%LxQKtV|j=ZGv++MDU;hXmgsW_di4Y&^<C-%+{Y2=!!|&HtJWXGXFjd5cNYJ zzm%y{HNEetlWpiK@hmiB+m1ALgM``QRX(BeLieA(MsKh(SCttEg0zAfkUc~?8U6)p z;Yt3(8S%4iUD^r!UMC0d3+?OIItW4D0#ruugPLmLok_0jOmk(Y$dv&9E*wmR7!629 zoKHR=`J7(MHe08?)T~!wYwflUox?^sg-TvS{8aYK9aOE!`$1p_%)=g}t7us;4X~#hr^Jm=Y;Y+eJr&?Vs$O}ysDA{9KgeDM y4?xocqu{?CiY!k5{5Uru(IeGoCe;?KXZ*+wQjdaVK%*KS@q9svbn!@g?SBJCzB?2E literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.extraction.utils.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.extraction.utils.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e2ae09c10b02bcb4a59f3df4ac578d2f8f95d7e4 GIT binary patch literal 15336 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cde8ec34b64afddc1c5d3531e3cbbec86850afe7 GIT binary patch literal 9365 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a92601227c345d76b484999b70bd68da62ad0b75 GIT binary patch literal 10078 zcmd5?O^h5z72Y4u?#}*t*G}Ys9S;%2>&P=>1CgQ?7KyNOh|vlq5ht6br@LmVXM4Ik z-PQIkC=etfY*Y$JX>#EJ5lA_}AqRrQffI;JP6%<}7&vf10ttyD65p%p?&+SN_Us@b zERA=%y6U}pe_!{!uimKr;FT*2>Yv<+0`7RnEz`C=-)2!F*KFU42h0=6+sV~$C9fy@ zvL2fEBR>u;mdFLnu(;#eA@h>EiQJ~?!f~Tkx_&icmT-J8U(RcMg|FUC_IX{_gd<#5 zxFv5{1K+ctz->zg(UTQ5W>o^@+@eaE-cFnD#xt)CFTfNu|HZn~AcY*XEa3+NE3xOt?)Xd{@?u+|PVjuB7fglxN89SSSq3jvbN9S1s3!A`Iet%`*r3+nOB*!;6k-9fhn*b7HwF%pToJ_zu6w zH~A&L%%7CsZgYRY+D9k0>sXApzZCj?gf42o>|365Q=T9NLpTy^BeD?8qhTH&8hK@3R z9}aZ99x_Yb&ZO^OZS2pv!^VIK?%P)r`TU#`TG=iVzH%rMGv?QLYv}t!ei;#l(PvO{ z)|k!vxU)@njL1RYL>!h%=Kax9$dv7O%!nCr=pHm85jJi%u5clO=%C%UO<}eye~{Oj zANJZ;t~G3@$0A|eW1-V^ER*W?pwaPt7mHsFV|J}EFprIpiSXp0;dlbW&t7XpE@Oca z2^M67H?Ci6FwgRBL?Ku1LY~*WapkHiPcmv#8AVt_*_h!A>g(*NNxGsRpKv2DO612y z{zaY4+M#ACS@z`y+}8|HaimRdk#bc!>YA03seU|g52C;%h+D&wh=uo9LScIeT3$>` z=4T@%({g>wbla}eX$L1r8SgW#8`s;BBUlrnj!ZarSS9To-`W|zp|Em%3r-HG%#hMv zuihiTLYcf|42g)ust6aQBF4q2CBQ@i$<#+g9@}n{IBmWAj zUhi#B?G3Pq5D6B#4j`eB7w`OkW^|s=x=Qoy7q{L%<<@hVDo?5Mjj@nrBJ+^t1Lcr? zb9%_+qL-M()Th|Ij@X>2Tsg1eLCS;JvqY>Qp=j3PL8ctv%38l)r8OAW`c|$r2RlQT zU?Bq*8@ay5h`x8L^xYrV_oGzbH}q=_U}qWSro{uB0_G8X8OL~T7A#I5LyzmpWs83~ zeFsGs;{}R!ZGT`oULu!*6Fj>xAWi~+O-&(EqNWHl>@ksOO>%>t-vP4-nUjaI4uBZ= zc1#bsD>H%vVcE%n)^JFH{smm{KHe=#K*_&5H6ebSyQ(4%f2i=n&&Nb(QCN_>d9L{Z zy;AsL!R>PKW*+#PBZ2?RbcJ%!9}oOTY2atF=AYAr^Xb;q<%;8}SGPj$UVg;$H#6{& z^GaFQUs_yPn7&DR&UMY$#Z%pMV^;QtJQu}5;D^G924*N;i+y^ze2CQOFOXCP1FW1K zg?FwD%kN`i1iU!T)8mnE63W(nKCHcS6W%>ChfKUzcEZIx!?DB$oMj4TNwofR)e0u&TBcy=#xwM`rv3IoW>yYa`exa2FIB58M7s!E{I^5Q z;=e1Ql~z&#SNy{XFw}oh#bOpD%8Z`Lt9G?{m0taG=D-T@>4(({{yvr$K%Y}t@J6+Q zDhv9HSeqMhhTh<_lF}FDRCudWQ-2G$OV&IRJyJX80g%1%9~xtjQP1aORux9droC5b z+7x*B2^P%?4Hk`(#|ERXE(xo$D!@sK)OvZ-OSg^5F_2{4ce$v+p%Gj{@Y*s?}R?dMZDs{|* z3VH+cpu+h{t%fmNSRc;HtSSzb&HHqvc~g*~g+;R>!}HY&CL=?tU?yZZtX42NjZ+14 zBg0p#mHw}g;f@N#OvrE=mwv6o8U=fQ?2rZybM0Aekhnprj+DBJhzO8cgO!>_PtR&e;RTES#+NEOTk4u7gv zFgXuW1qE=(8zbXCDpb>??6$vEE1d%zNdKu{8~&;SF%vkP#-+98IUc&Hf|(sL&SA3>A-__!`<6X=^`gNf#E~G>LKo z?S^h>BG;+W?RSVFOUl&2%Bj0@_yN5$LU^E4*Nt6QchWD6+#Iq=a@`QVWuW0KqNM){ zTs%oq-r4^S`ig3Smiw`3a`&$)s^b=aQu_gZd4W1iK(&mtv3ySyN#Tsuo!Tp+p3+^) zfmBu|JMI*GtQ@R5qAQwn8})74HSHgfsjKk6>YDalx>STi;d<5cHHY|6Zl+&}B0NF! zbjR~k1EO?@x}l#}T{L1upVS1>aA)#!d5aYcQp!s=Gv1~-yP*ocoye6hQ%^A(_GxzxWj$qt(Z0n6m_{&)<{-euhE`)h_7N`E(@PMP zxZ0vbCYqY=LS0P5dQan}zA2}ZVwD+>%_HL)~;$dBt0 z<}x*6+;;>wGO`>R(*-GeekeCXrh1_+yT{z*_L5xZCi#^uIpKB^OxmdnwurTyPgPWf1 zGCcWKXsbXPx#P#8ETyKTB=XY8oe>fJcd10SwcOzzveg&MH%1oAvt&aAM{&5wRjlZi zYkIvHlqNiGgM(PY`44$6WR@S=hRujQfg0lD59JDqtqatIM;zM#o!WJd!Gz0gGZwxv z9Fj{8l4{G22cVO)#Dini06G^e^h}oo?x+!X*NZ6p!=WHzvF#gRZ!zmEI}Us>;Kh|H zODr_Q9ni8WMRyF_iOh~mhNQb(%?g4y-*74*DrT#%umQ zkry)N9>Y;flglk4?GyPJ%~V@JAsK=V5FnvwYZf#=b^WvO=yuq(M#R&|Q2f)GcsdwB zNqdA7HVzYAr2~cE=3?MNSzVYN)R8TCa(hi)LRJopyg+jUQrhmJJPR-sI5EJT9(VCU z2A^?#56{m{MK~BKmWm_magy23rWdt~mHvIT5pu;s8)i2aeP!q7(@p zB7c0#@w&)@3>x+bEI?3<%yR~mzI2`lRZBY~Tte0iI?P59pCG=Rfq;7`AG0v)$Y7xC zTm$D7a3FvV+&qxG>FFkAS~tH~p`yZhAWUDSLH)h|byR)-82?4GPQ&zg zq)F<=VZ@)pX&QAO551fG#aM0?qp8GgSq^f7_5&4qgvvIXr}teP(eqFki2k7CyLp1B zspm%q^V#*1#CoPxE!r!|2LgwJApfyZS?QexxeidV{FopEzZ)#yb>V5)fCtO!7t-;! z;fFVqmr)*ge?pH5ICSo&FXb&iCS3v1uSt&(jfkU)19{Ww6Cm!3i zpLY|f6k4gGkscCIBj8Xt1ETc61##fWi34!p#9_q&1P8bvfrJFV?>*aNduH6pE(cbc zjo-iT``+*S^Pa!YU!DKk+y;Es3PHf`JUZ5AbR(e|x)z&w$>mF&Ehd^y>c z&Ct9X`Eh8mM9yG_#U0lUnU~y7z_?`s@ZaWBli$#$iwgV?%uH&(`?ceoW-?UlS{$zCGS)U%ZP0RHomJnqSK7WfH zlf(~9?~O$58A4x@jlje%MZz~^)5u}rbFz`5u`kb)n8|+JHRX~iMCf#50Tc&ql5cs=k$>l8S9KkU4n&PQTExyF^H^vKW_KP8=yn(Zh{tZ8i@SVA z&O4sXjthF!D&`-=#`)vW$P@TIiQg6cb_fLE7&>a}+knsU4q*oJhF0SCPHX!qdKG_wMf=5oT*h<{vW{CAKKPUwu@{alrUq}{zS^RNcT9J$RT^o%(%SburiVp$ z0#z2ZZ-u7C$kd4X?bdT@*-mTsdh69`;lDBTK;?Rbz`8=f^gLgf70;I+J-GISfNSox zu9)P&SFT@eUCR(Nq5uNzwel&gE7z~XU{tW!l=EsuGW5s>6mwI%L#~({eod^PB01aA z(P5LG%2YmIq+*uLR?gl{%%bg*Nqmkt$6Z#MS)3%B#{+jy?FRue2wB9!J1n8KH?a1F z)QNvsapJb?Tc+D_oo**MfgyX(v_JB6CvpVa1vE$IA&Z87+sOlDCkv2p^*lfZCwt`h za5L|)<@Z|Cs&u@OlCRGy(_hi*#Q{MvDLWMSyu46dnZZ3eP)6UMjQ+M7ev2tBh za^YkFnu3L{gSc7%_3Qsv!6El??Pj^uMTxHrCC|VwkPi3y})^QC+xxSNfy`}F_aG9Er z^vlV_`Ip89B-+sTbJAPWfxi+k&qjnWj&a{8s4+djH|1hRr?UCq)yP*o>6@Ty`vcSQ z5_v8-!O@Qn9CJAC=lpIz!EF+4GdyG>k?R;Jo_~p4#%L5U%jr2*aw?mMY6IVn>9%lX z%7{h*_+(E74cyESAbtZq{2E~WGzV+;AXoB1WuJek+2=1t^gt>m(!b3}=Qy4xAE?m& zXASKM81j2V0QnzF;4P=%DMmHG@jpKZApMounVA~7&w|Nn>E2QXr~iR^K2zW$=e5#H zC{=hqC{Fr%!f~g#U6H?2FaKnm3T8Q(`g8Y5y>eyw(TD}7p|LWrfOdAweg~%h7EJxS znW@XI+WTl4?}rg;A)TJNUfwQ6+5SQOPRH(`|3xe+d-%jK-goL5j8#;|V46_gzgy2> zY&6dp4B>jH7G4%9zK;nPtSN%6Y5E`2b(6{U5 z9}j5Cpx|AvWR^GkO2v17T+d*pQrb|$`*cA&tVE3SB@9WB z)oUf3)H!WsYC+J+k>@FOQN*imc3C+X`))fDf*N{VW(Qfb>@9z-M{@jL{)9!-2B3e{ zGZ=4eDTAr}W#L@ykv-npQU=2S^u7t;PK-elu8#fp*Naoo_@wYtG0n4F8^_*$`j;V6 zSzQxvg#F!m@yDwxWiaZyt0haVIPu5pSxte|XrR7?YhpF|Q+Lmv7O=^8l^5%GQ3qHh z7}WaORIXsv%TntKGjbz;Tl51;qxxatl}XM%mjx0$m19U$%T~_%BX5iSmubl({j>P_ z>$P0QzcywJnzG?|DtleXKIoXQa_XCM+$r;|T8@;i>6x)BC`%c$@*d@-C=LQY6h<^K zL-BI#Q>OeBFKGR56t`Y6fr8Cf&V%=!_)T0{)6`obGo%w*Aw#;>i;DVu_P*1gW8VLk zi>cDGar~?n#A1qTQal{>@@J-eIc^ulI`iTFE+j{-V`3UK)lmN(rO+z&1%+KRsYHMx z2{JK>T%w#Bk^`t`B&8IeY@GS!UqiEA$xR|B(2HGH=j}EtgY7gaD3=W3TL!XRB1-zd z#~$P;oh)VeHDof>bWQW&@ie!0R1WxgzNHNi2Kfnkna0^OBefw~z9)+1wya(@5oGe1 zdm3OxE2CY_PjBn|OGB4Ps=%g~{Qlo)n+pJ+j)|oIcWSD{W}&^{`MTh9Dp%4+s^^>_ zL9_1p=?0>-i!v_PRl656}Ng!ZmU1%qN+SNxRakdqWB zy+`e^LMhX?nU$wVvvSRfL#h=Td1Y`V>(LcLxfn4a zkn2K;btA8t_Clq6JCThqP{b^RqxF5+OpA9obIjjAJIL` zWva)x>j-XSbxm+g7o>&GeYp}c73p1ehq=kkb8?BBI2F?7yxd^N4zNPKD2|4`^ET_o zhhVpM*9<*MQi3is2k2>vtag>WDc2k?h=svC%coQ(95EKX-H+|6Sn_Cj&|qQchXyx2 z+hrkeCQ%V)DzbvOt(A*zi;a9#BPT`wZ_54(bh#kOyttc6(@*l~bryHQ-J zti-}m@1S0#Omy9_oyhFEw2@TGh0G!NRk?!AL~sF}a);HV(~O?uVsmilO?mf_F;%;T0Ga&P&FEx}u(pM2j39M$&Wj37n1p4I+3I9`h z8A04UG8hU3u7R&kP${KvBi@u7>31VASGT7F8%`TdL6OH@QO+^%4t;GQ7j=MvN5eRA zHaTz?Vd%1gGNla&31buZHU)-+Ybkw{AupDC>Eu@3pw`P94RR`cx`F8n)Ty8Q|G~l7 z|2O`NWRtqpTNNg$f&GX-j!z%dI1asQ{DoMq7PYC!ty+$*kdp=J9&+1ko|e1Vqvydf zp#4GDcXI<#Qy;2y=Chk6ip`9xT6D2Q9}zed6!I@uX{94GatT4j@?#1acx$wL*9FqR z6bH+~^J)KEz~PPLCAbIfPH;598d2?OBPBXFDPpDbk|JPPIp(+ zRc((S0_;OXEY%B2^N4srNc;hQ1<(8d1V12B#5>=q>h9^8wFB&0vNUz7>eQ+4eCJaA zo7V3S9xT~Ev#U}rl4;)$!$gKm6=pq@K_0V27oQd<&x?vRKa)oYkZ48;;a17JRfiwv%%y#j6}fr;HQ~<2AtL4JsBioA}_Cd zRy5HAn5qWO#KD*)Eb}!B2d@NkKU2Wr@%c(V+r`L_3;<&$?9GpXo=C>vfccU2;PFZK_$6)Y#!Pb=p1iWxdHX^ae$Kzado#!{_+vO0 z*S&|Z2wu4DF=lpX#!~|R(s?#V>-TS^D=ynR>;CE`?`z3U=kD5b{UnjvUkEkxtzSHS zLn9bYyGK4n%+cAC?$gRnPo;jqPP_Gz?$Oy9oMfZ(z_jd+Vip8#z;W&vSi@0Y+9_)Q zW0t!v9uMf(yq2FgwfJ*XG0Rtl-{cE9;(a_{U}w{Otih zdz#s%!)?m4W7dS6KjRa^H=g0kBV+|vX`~ zR{i=`tM;u`$mGCMvn&!wWDQ7Hj!ztjcjd0?&cC}=yK_~>5dDd2>V5l_VjLm9h2j>1 zSKbtbp`p1ePMtR&}5_f%OhQbkPbdzEA9EB%44cy4mqnE!&;IlES}NiYmp6 z>H63)s_n}3BA6xX_&?1W(6*H0|3dePAg=~%iFB>TjoB)HQYUc@{_G~QG+LD+GU?2+ zp1P((SFdJXZghsoc4ed4tI~RJmezYdmCfeZ<}Aw*3Y~_c|I)E8C@P)nS8Wj)ya5bX zU8wRWuEDyS&2{6+pU~cAvlHYQwWwa*kZx5H*O;1h#k58mL0`XDH|nFzx;rdP`vX79 z(U;X3areS>%AQeX1qLCSN2UEZ#bDDN<3aZX!;Ny7XAwr*#8_%%X%@$|oLkKPNJ@=H zg*7J6m(4c45|TXjrX!if1tdFENK-G6F+DyMRKDgUEMivTT?x&-s-4D(<%Y7qzA#%E zOJ%0Lh+VR%IA1Xv+>h#E%j~hK09NRka#byAnO4Y#`54FTT=`i-DHnQ~A4Ag78QLYf zRPl+~5lNbBk0pVm#Ei(x^{DrD&nAsW^OGLSGMRbYPr`_0z?n=%J~6v8*YjFhR!dRG96^PsTa=9UvZJyn@G+d62O{ zW}z1{DnB@en)VCRMyQRD8-a)jJ@g7AF)eu8?D)Bs-b`dx1W2_V=5gxP!~?KaAdq6R z#E(efu9X1YM3MVvqExXwlpb0;th&#psZ`8s?zAikw09}cvssGndZAGMFrtf;R<2b6 z!Jn8dTt*=TT%!!ul*_!4i0q5R9MCTuf(DYBX?U2lg>d;Mo~88=6y2k!0&|ivh!}}j z=;9|!|M+*y?4&I901HDj;t31eQNL3#9@bNMn6GfHQ*}BRK&<+%^X$uPJSfaVT4_zd zN>8&G4$^SQI^?}K-}(*^-N{D5f_jq7)PKEFk8t&gv=cm-1=AyY1_FP;bsXWaj`oL$ zqfqnWeBB&^m9bX`XnldQv%fL-kqWgx^|%=G2>)R4y+{)Iw^WSkeL} zvpu#0_b}k-y#l!2MI3OpAY%6GOb%M|zA;3a};~vJgRh4gYe6uI0u&46thAG4wf+hff`NEzpzv6SG%-tN>l3kxOi- zHBN(7udsWSC71NbH|s9JAfiD|R3?FN(Vpv#>;r!fMuKb_A4EW;ke>7(6=r`0$T+7wjyVu0mqBy_*|=lnBeIwYW)NYniD3&mfjm-c5Ub5HrZx!G=d(5l!DgnJnh zYn+5awOZ$FZA#oa6gPN09?GaDgVJ1&$~tYwwiuPl3S4#d`<|G)D+7K&j}>MqgL<>wGdN-mJyeZ<`_s VqC6ztjA_?KNGY$(4z4Zg{|7!ybu$0} literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9437251c6ef21d855ec498d8a51a83447e3821bf GIT binary patch literal 24370 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a86158d0878bcc0a1a11ddef442ce7855da0f428 GIT binary patch literal 5359 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 Yy}x`|3WsPF3lLV2ve9Biz{T0Ldb(?-dbX## z-Cgb7ImCcOz>7+NNSh0XkOLtxG$gD>&r!)TW`WkXoPW`$4k zrZI9I0}Skr=eq_A0@v?&md9+%VI9*wc5GKSncumYJ>CpQqjBdo?KRDEEJ42!(Fgg( zFS8Sp`|+vHX>*Dy{YGy_N`KyXe0n7*<&viZHWBe{+0-(e`GQ_H?Bf=I`ZOn$%R(Q}r-*OyOMIPQ z<_r9a{AQQCBi20{o3>>z-o53!Lzph;zUmr|b>!Y1x7E;*=t9(>8;jT-Fo*fNU}pDm zEvG4jHLc?Zfa2=@xv-Bkqjlgq?0U|N8`d8AuN-JbjdXpfF$<15}UFK`CFPn5JBgw zLdP+Camt4*?BD^H_$#ry#*pbHci5F{0I2ODrih!|Am%DK)H^G=OY>x8?**PtNo)m6 z0_NXk5gF!XaCs>Sil0`3qGP*;Zg+uS*BiqroaZ~Aey$r>g0(^FNFT5ukArTO!MbS% zL+E4~%p31fAi-&!LCfv8{&U~Dx<9YnsHsq|LcWsvMGAF3P=;8qgLs7?j`3X~Hj~iu z*Z3jfsO32F*AdsTY&%LeBtDo(FyDqx7X9Mn|K+op%f^wG30M?vI}uI=l8T>fmGU); zPpt}jLoG@%Pu|Lae{DA4a^8vbqT>>>Zvfe`vhC+QmJ&fFJ)|0lY@6R0+QI;>J{mAOGMCxZqGgXTXbc z{;(qZ-)m%_i3=-jH2gag_$47(nODFf&5FkWIsnioDbVsGY73sW^(q~9c^&`@n3^i4 zo=Xuu+?=1AtI=+%)WcOQD*M#Tlrg+i&tNKiDT5zp3eV0F!)NOmygPwAl0?cNhiRh( zW`g3RXRoBw${sR&v0jLRQHu$p=-~YKCD-0cGDF6%COb^^?%@j)Mw%J;!&~*@Pd8G+ zU=pMS98fCwyk5`XEckp_!bkD=FJLk==!bs2$aR=hLb^7H&gA3Ys+XnK$LHjBw&S}V zUA$bsu<6P98)Ou$HZycPDn>VMI%^_&SqvKdI%yYn5xtCCgFw-NJ!lk?tU= zQt?Y!ulH*?(j}m;hqln}>UPM=I?5-4(DPhhXu(ML#huWlyY(ry+TkyYs#jc~;NY{f z`qlW>l!pB6>K!S`N_o;+q#2o_>ZPpcA8Qqzz9$Voz@oEe_dnM&m>whvgEKkD-|87m zcaDTX4%E&hrU{sn*=tsc|5v>v1q=VrQv5$BEHyjDZ=b8(=%-sMVK4=x)Hf>`<7z#Z zvw&32^V=z-tYYxU=e*%0OtZ88^YseU!Bh$P=~@3#eE*B}vefzh@Bv&SKRwM(@n5Os zF?kK`)VPH=BTSv4wGqm~}|Zpc5BTa_9b?u-4QG^QE{@Tg5iH!4H2%sxAY6b%P)NoL*H8 ztMI<;xN+h6RIVqFR97D33cuyJi2^|~M0fJfstXsD(XYfc$y_q|Vs_C-Q8H;}w9`^x zJ1+$m9!+Xyw5gGSqe@cZK6}|YC#mSk0>_xx&Z&dAUKoC?_0g zCwc-Q)wtFk-S{_QXw(?D}~5r zOgEPyU45zip|V(>CmjL+#Q~A63hf)V?hHay$$_|uO4vCx4doL)GhE-)Oh%hvYd6PPGAt_q5FM0IV9YkZ^o7G>G7q8Ueaa zK<3YfynuzKtDzx)S?Ae_=LQTtseGmK5(8HV3zdH5qFb721$xgWMG`5O(}3V@xejFl zgg{)5h1Vq0w73?GZq-G40u!_ysALNZ6EzbiUqkaVdxeW`Q&hoooB2DP%`2)Pu)EdI}Hu6c@q^_PSjR2c5WI(Q*AjH%-;L^u7uQ6WzwIr(Q&@(5R*oc0K9S&NCj;(@^Laxt>OtSR&!;>bi9 zaeqZ#hF6ZXEI=~_l3MbqJRgi5p`U2n8lX`%;PBu@+a>2;SJyNxxu@O7Zl7PqZV8A%yfU^P-vyVa#shqmhs`Z>?f>Zd9YgkSnUXZ4S9ZD9c)K%tLBXVDA zLaTVB{_If%uNn22i69=M*euUv@}3?drNiM`1}xCkvSIxB6rAtanlpzRJv!gZJ0!*ZuIN_)2& z2DN_nvP40JCNick(_s8O{0*Xh_-p(Z$R-Wb_DGY|hl7AWjTWr>j!o|de<_q3MQbW@ z8-@j+AbG$d9-**J=f!dtN8)*~9jrg`k9&#X+BT4e4%k?hzmSZ-1svXtUPXA|{DeRQtO0fX$nAEr+)^4| d%Z8N=*DS}dLz8@HK&w_wN`FbFh!0Gie*+14m-PSu literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.doctree new file mode 100644 index 0000000000000000000000000000000000000000..207df831b63f8ce72b5ce82171d8d242c27fadb2 GIT binary patch literal 21942 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 YwIKGw%%>Qd(5zLTUPub2utn40e{YBt;Q#;t literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url.doctree new file mode 100644 index 0000000000000000000000000000000000000000..01fe1103836e1edfdf3e53f6ea3a2f61756e3ffe GIT binary patch literal 5116 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f9da82df76594ef8478a8cd05990b8594389ef8b GIT binary patch literal 5744 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.doctree new file mode 100644 index 0000000000000000000000000000000000000000..74635b7baef3d18a54578e3ce0ee0b82b5706a54 GIT binary patch literal 8781 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..61103661b54954861f435088281728ad7c15409a GIT binary patch literal 5883 zcmbtY&2Jn@75Bs*+vCsJn^-H64{L$QLCnmqmIGKaX!%&74Kiqj5K>}VJ>4}^J?`%6 zbX6ywLzdmciWrpuX`2%V-~ty89Du)IZ-~Eu6IV`q;m+?>b@z17#G?=*P2Bam`n`I; z_gx>hfBo6PlKH21Wx|8_qUZX4EPN(&z3vMyi&(7kPxAX8<&ea=nBd z9uGo4WpRF%>mAyzf>8E~@7E;rR3PH&bKd5weC;eh;vL;qfeKmem43&IMC?I8*h^C3 zF)2mbOM--jLCkvWLZz;!K>DUD*>|edBj=G5#DSu}IWY(Cl^aHNbyg6-;@MeeJI5L2}RF*aZDv5HVHPqYu2n`(9T5^9?Qg~)Uu9GBuk&L zoB(_eQr<0m_K!0@+Y5!~hW#)Y^pgoJ7r)(m>&?Cl6zhW3xjSNV>ZbiFuk_2j(x2v) zWO7Vy4zG$whhlj6f7<`qagQ%*1P&B`^6hmiL>bAXi` zD!?j26R@9N4VZ4lxm$NSLgpEenHWpmFldnQB#S+jxiiH}w~kBUcxp=h)gr0MywqP* zQmcS>tn=6KZyi?h4rk>3ev!PV^YVUM$os$+as>N!!w{7Pwh|UoGI1_YJ!&Q_^6`OQ zFTa~P(ci8JD$rS2eVBjIP1{O`S7#8P^h9Gf(RG7As*3$Xb!Jm8lVHm!#h@DFFy{Ko<{e>3M? zWM*Rh*OGMw<1!M>4C{X`U|lbLH3a#mHTc?Arv`vV%mUE(-(La^lw4}84s`2m=E$Ed zIP#Tfutt&KKc7Rb49VY>sOhUCVZ72>T3T?5Kh1G3Lt#npRRJ#&YH37Tb9mi4snkAc zsy)83P^NB)xd0sR(UnqiKtyV{`2C?ZOYnfz)I)G9gyJ+OE@!JcLns;{8pv(jLmEATvn*3Ku4nMZ92ybHa^D2 zq8%tpS&jRNORXY$W#sW(Z%~0mRzX{vH`|TX|21pyf9vf=e}p_T%)-!?--E`hX&b0F z93?ylMN!Fo{A1uT&!uVweum^{wp*UBznJIIebW_vo8PhO1CDnn089d8elhRef*e~ra!5z*J5E?{!6`8 zJW@wLK~CR|MWKK!NR*|&VS=2dmpiuCoSsa7t;+mpHjB}*Tef)Js>SOLFgi|GG&aJO zi^<}p8~z59sioa=G@-+8z$nW$EAg%!a;|plYWU+_`nIKayey?L(W!>Qt&(DgL%lAU zQmE3H()X&ddzc!t`?+5I5rwIoX0zQ>-6`faBsna63~*ApQG&&$72|;SIhGs6GD}0O zw#j{In54H5*S03n`$HjAj8Lz=e9+R{H1o$<O%pY9S8{9=IDwb`%$1Vb3r7$qbDYfmhK{kT8 zou_UZQ%3{7%#A?l&{YB>rSj)`Cy0|wIaN2QJDD1GzuGnV<5u&f!_riw4tHZeWGQf_ zqawBFU6H9Km$u=O>)SJLW>}2>K*6zN`A*MJetoO?V&-Fgopg`@iUXq1j85C38;>%~ zJwV(?Q*;fNGy1iZc_Q^4pHX)QF*G=z>Q#i<5NQ&K1ipirYZzQ$aMe3*ri3#k>1zR; zYTM7E#Hkz)z#2k;RFh)XB!;_&0(4_Z=AV)h$ueI!81b;{I=e`OWVi>IerdeKLwyM_ zyBQbVb^JiOgOC&{PPtYF1n=rCC?gR9wn>NA6x*C(5JEZJ5FF4GgkX@QMjjR>Zaz%D ziA$zx2^Za?sDkIjBRFChL`VzoE&c017>E;=IDmyA8gU_ov!gvu;PE&;g@=BfE0xIO zejjAnvlD1fq@#YWZ_-Y41nhJai(nvSW?PnYzxd`?fap#-^k&!-Wy=0u$sXbAlGC2E zv==ZnG%^tQeXgPq!aB+wAdY;+^9SqtHoP)&ssODNC?)6OVVVdXTxj6d zfUd=!>%HRY5$+leZDK>6u^bG0G$?wR#ZTy>O|RPogNTN6qACRl7v#p%srm(G2@4vW%(?|dS literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4702cb366221a64baa00201e09cf451ed9285332 GIT binary patch literal 17113 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d4b3e616138f9ae9418f3b6e859fff17c8377142 GIT binary patch literal 7171 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 F`~QiWq#XbN literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9cf27604eb8e452b540399b126d6bd02d071d853 GIT binary patch literal 7645 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d8156fb7036116d26b15a08b7b20a874055dfa88 GIT binary patch literal 6031 zcmb_g&5s;M72glf?#_OCH?fJpc18iLG0My&3KD1~6FzgWVHHJ)1Bz+&bk|JvYWIMkPQ>bK(HpK;n=C@E4$5@)vO6z?m}#Zv0+Vf6jUrC&toRQ?IMutNOj) zd-Y!Zu=DGmerm=1(+4u)K|CM2z8?#p$y{&w!pkBStNi`^){pXsd0%%^_kk2y>akp} zV1~zo&`(*M-^=wrO;*5#xdsxN&PlcD*kG_Dwp@8;&* zyz^AL?C$hN;sPp_^F!TrDs1_>-Y6hF(U<6~`AIf*^|q^28jLdqR}l2;fiDT>O)qq% zgb=?wu^ZW6TYi?*gR$$KrffoUGQFwXDSgWM0l&s~`E|a|Z|I+lxQN*3bm51A$N1>= zRLtNmIeJ5Qad0Z`F9t?*sz%tV9N8_7rYvTutC&A}3U3j#!&Cx^=kKm%W4@w0LF}`6 zgAJA_yoZzX7vR;;;qNB?`uO_-p#UJ$z?{7g{DOE2GU+>(4Wz$+tJnV|TkJ(lapB*} z^{by``LNzW&Nog}?q>W&KCFR1;m^apIPxXLn0MyHeSF!cFOCf0HI=2U7;zp)eskQE z$wb7G9rvV4U!+sGzN_5h-rMytJP{$phH8;8IeZSA_6}^!T|FbN0tb$~#=mVzXV31oyxP}0IO!lkWRNAjM}`f>&6u^k-knF` zu}oY_KU-KLS$d!4gzz0$d99%KAD5^-429>0qc9kck_DU_zcPIJrI8F28$i{mJ7uzF z^Qg)_qcZo5>fDnojwu>Iy?ELalU|K&wd_e#mdP&&fK|hWuEBd5?CmC-D7jtLO;H zYgwpP7`jlbILp{=l?zIW)`B)}@0^dDUX63N$v^_=Aplw!r#)*xA>&CFdn$96Zackt zTpGu(w$)!LH;)}=);#{vK3*>qTC}-imGl?NLQW-zw*o?yUuFjQ?=~#*g3m-?5=zRvWs2u>ZP1 z^>5CALUbk7zpGWB&&~f_p!!c|R1-5vbq&w%8SwaDO1l*!+ml+b&30B-Rxa2>!FZC2?>Cnn2`T_;#+{cxLq4}f~^r!h9V`F zjU=EiRi(sZ{9r$}@&D5Q8-Hu$V*~uk;{a}Wzlh}7%e3D!kTh_-?NY^xq8*n*uD9v( z6=SNe^L9bA@o|$Bc(&K7z>u~kSs2=@{khhsW-Y3>9VI*mSF4iw?EBdN89mL);%CUQ zW`WiF>GSmVZ<*@roBW351wi>41roxutRX!St7Z>bHi74+OXS{}Zvi&CO5Mwh?%Ug8 z1Gy0e`!cY_4KhpVsG9)a+#oYaLsJ1Y#+$LQ{l_D{Tl}Q6? zsF}K9YueiNjkWvH341@4y&htNow5h z=X&FNZkVBAtICyw6WuM^Ns;ClpkHB9xlw|_jy2;z_bGA z=%a}cDi(@0KHgo`d-M(wXOT0Xh&0L}*{2FVaVRxosf5bUSP2W6kvIO`yWb*)6DRgkMoYc`BpN+FA%+IxI~^>ToyqLzV((+A0!_J`kB| zYv~v*xxT*iWl6>C4-_Q(R&TwBa`moqIq|;HZ zuh2}h12P-3|3ef5RMHBN#UzUqlxpRjHQy$_E489Z!BLA+8aBVqnWr%DE zsGc!nJ9JEMZ^6CparCDiTyG-|I2#bL`ZP=lf#q5VDkF`|C<4*rw6OJeg(gh}SZiR3TfEzW$$wRfAp zmg&8wH;uYIF90WKKQLh>6t?9&yYHsN&cjs)??+=1Rs=CqpIs7Gv%4*g-O{RAbkx$1 z44f)T`B#>86<=2LHj;`bGD;aJ$vqK`|3lTH>8bY<##A#9o;B#Gxsz+V&~^6`8`8OvC>I-C-6S literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup.doctree new file mode 100644 index 0000000000000000000000000000000000000000..87ed9c64f5d36b1cbe4393c508f7ae59f6c337a1 GIT binary patch literal 6100 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 Hrrv)6((C!Y literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ae3827852a5f53573b394c98a57211fc55cb9bdd GIT binary patch literal 5597 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 AH~;_u literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.doctree new file mode 100644 index 0000000000000000000000000000000000000000..de3cbe17c9515b971cf010c075f9a8b955aa3381 GIT binary patch literal 17063 zcmdU1U2GiJbtWbLiy}qYBHGeaHV6`}T5;EQ(#BqGm{256rO#Bk99L6HUp3iP3E z`kj04{4IBf%j~*P1V}q`=iYPAJwM+)_vh$^=`Vfd(FyT~FNeNqx%&;h-FCe;3ll!q z_Kdj8+$eb^x%lbi`J~S01N~O$#eu;RK7ksBX*unHxyf@0U!v-f<%A8@el}!AWO;7Z z+?+ON%-QFXx;f9MBP()P;S;}XbUoKV2TsEeJcEUy7c_j!XO88v2HTGU-H1?h#p~*p zdz~3x(7u|MCPWuxr=CVdP#uxli-{O77`}(k_&P=yCFTmB*D{fqC;5z$#5SKI7L)C` zrSkrkDT&qn$#eM-z_ zbIn{d?=w%D>->eL>2+Ci@1X5i1~Z#a1)dElht2Dr;aYp%&4Ue5v==qOYS@%4Hg}oJ z0zG2w<|smL1R=z5{@RJSWlr#E%Wbp$f(E5>&39nf<~yN{cj525@%IA$UL+Afih(5t zUWf23cNYf0Kh#&BwYrd3&2nqQaeQ%9m76o$QKHA@ub3OTytmEs&?*Ky1&=TejkS(1 zOY}txEhsCBgOWu*(06F{j^#uw&|J^eyuHm@%k!Mt!?mY_m|YZROjMTzRo!*HNbm6> z{@}+izbk^7Z`LjdAzj$IRJ)vVp@qI~u+3UlrFLO!3knc!x5}qQizK)284UKCG_Gv0 z*^nf$!m#;dO?uiYJ(a2aR*{NcG6Oz&E76O#Kw|zF^&GcYsb;YfpWp8~n_@hG8b4qm z3vRN6+CG7{SCvcrNsmi39M905ren35{y}7V?t2>#+}{kXh;2YLd-^U5b1!ISP}5AI zrkO*Hf3Qhj1gmv-YhGtaQyhd)=dVo)TUwO517%}Aq<+_OgX?)xz}%3_39t)^_!~K zr)7)*Kd1nizZ^{5ywMk8Xh46Ik)9&7O?9>CGq(-b*7h;$7Bro?;6pBKh8CJ(Kk~@4J2-Nl3F-?^3 z84eu?Di1a#%x{x_{vG7|w+KzjIQyrEgq3Q4C_Vh7LJEWRFu_+c!}5HJNW7pRcRu-W zW>pWDt;(L5oR}EgC!h2V8`l3G!?5h-O8OPHHP2@(SHyn>pqQfBJROUCDOr*Ij>_%` z20D7|MA}W=0ilwv_&s6l`(6-fVOI~LPsSd_ns=aTd!48XA09lbrm+2GRD9)-SrjZd zt@s60RC8^L?*;0Yb&B&4=K?GezCifvwJ0P_N|ObjIj$L-Z<#ZEt`j?sKtl62U(h1Y z&;YGbnAlfnsJCBA5R+4>szdhvn7Jg0T4;5B=b)xSg|HTxtY$`C1ud)mxXm)_u&)ap+D}y)NO2w}#cxyX zb^h}d3Yly6H8n;ksF5P{aTXEgCVxuPEZ2%Ot$qL_FyDL+YR zJ&_I7Tvt){Bjo|t%`0gE-|QPCWt4|lKfI99n#=j21@bD-3o?^~$k*(s(%$MOH-Eq6 z&?!0~jv+MLn2rj8mwB7Sg~-ePj?l+(R5z4le^5QdO3D5-6=GGq z^=4%U_9=WmWF82(Qtb^jh<~r_qkqh$I#|R?8*M+-q9QxV<|QYfl$wG zSBj4av+Ua-KV+m;z*74&#I%5?yc>H@uu379y@f~n5&TmEX8SRe482%Dly%#_N-fS; z&pL_yICXda1gZ{Lrx)gy&nEVViD<2wX#Jwt%|XPL4Hn|+qNR-6>?iS)KGji7Nja3yQ*!R!uzc2$&JuEd{I5pKIZ{e zZ_BQy0?tqs5h`qnWsHh`(r^H)h#+nSSo9TE5wpK3Vv;ajNM!HXJYhcqmN4Rn=|}7k z_nj&Vh(}`jfNYe8Ux=44!Ol*LIQdMZw_-;RG{bYS{l|(79iag}CF=7tJI{RTf#*N< z;PdG(DcQc(+bRD-Ppt6&zL≦CnYO>v80Ti1GE{U<=UzwtM-iItoE_-za=e_)6hT zgP_U>7=N{ZKWV&G|9EM?=DCaXQ7sqh*vj-hH)NM6>eSnMq!&MH*tGZS^iR)sMG;3N zgD9vPg9u<>PwjX1Cm;=t4rhACrZf*LjdlYtRw;VKT?Gm^n1LWwj$Sxwb$? zVoM|0#ZTO__wX~M_v0ukqx9?{O5(h!<+Ts`@_jP!ZuR{zExk7PNI6#fBL!6A;U>0Q z01=xvQq|W+I?2jH)2$mjwVnEovZEb3FWA9>!On9#=`leT4e@8+J|=NciL9Iq<^n zf}ltTj*0y`y3a#Iev()f8+L5p$7!4uB`=H5xAed*@7)~^4@=?Ym{y#S6hhARyAxNh zO+ta67Yf8Gbmb5{=G%Sz7c1;u(kL2K9vk%@IFjYajS>6L$$$__fd_ts5mBq(qw0ud zMOFKA_$k9s2?36n6*Df@?7ul~*VSWtQF8ei$>mFjxU3(=Isaq^8){}65xNu=iCpO< zx0BCeeUR&!w~GaVTlT93sn|aufl0WURjlS_2Q{wQ|3Nhdqm})~_&yv~{TMZe!YcdQ zM6-x9|4jw?X~7XVW50pw0$}X#;tApW_o)4qk#@0C>D>L0@*@luf$J*2w_iw;t5>4R z0GnL1iA+)P)t;wNW$7duNmTh)!A8$AzbEWgsPfOE>QTNqJgU^dMU|x$08MsXJ+{$N z~1le4!w>8e3X#KO=om<_cMbM43h9M}q6z76sHiPSwT&HIE))09jac z7;2tE(~+U(iE%)U6w%#}H(Ns3z?(C@E3{m{{2WCvee841rshShSNo#EnHDvYIP(F~ z{ZKgbkf=I7oQaOxb@kZBi8J}actn)R2^}Yf`9y{@dHXRk(g$N+C5w<4vyk_hTcALg zKcq@yL6|={LiH60^E#T2j4&S>31JEXy8H3vi$c^R$1_BxsQYSPR5{!c>MZZyllP!m{Ou zqU!h%=00#SWC{Yh`|)K{hGO;sxQ!X)|xHP(FRxLQ*>mPAfX4F-b}V>_1Ved=L!d(HOF&z$zW8N)uB-32nUB-!Cx41Rd}`P6TFEvJ z!gXIHZEf=f9M;n*vP^p;H~R(}!!=*WPgM+(y2#gM^?oig*srM{c^5|BfKG2j54Z)R z@)63{h<+9RXa56ww||YE{*j*EpFKTh7i`F@H-X6R%t~=JU#PkQRX#Tnu4hq<4M1oRZyWpuLCJ1@#&S4&F}F6?n=XrLVXgPbUrhY{&B= zPwdE$C1Wd!=r2+9LmR0XXBv_k#TTe`J={yzzZ}}ciRpNAY@_{$q0Pe zi=#4?X+b67>pfq3NZ8ZU5ayDkoAZ#izOVeDr!hZ6V+bKA6C!djri7n%bayvK8X_d# z#`_7RPxE`E#cO~Q7oz@qPUz*y}`W17crO+_AhhCU^S|mmd?6-m7dTE@;V7Fp<$xdhRRO? zHnUfl=nA(YP-YF8K||V zG2EbWH2l{BIDn-j_?P*L`p*Giu1-gy8ZJ;u3W7XRn)pfP-lVj8J|_VN9u4EfbxRBG z65$3O<<5!Gu7F7xTLh4WAtAD(?0bH;R7yEQq8QXV*$dqnq8xoxpQS?iZ2yqvyMMwz zA)lvWy75Vs#E0$Bd?&Kp#dpkhm(8oOGkURyKgMdRyuqFdMo1sjp_*7Obw0TN};;^P&YPHa& Nsb66RP0n$v@qchaIt~B; literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f8111f84a3191be3ea95e67d4c7b5f5821407ccb GIT binary patch literal 7283 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 CPz167 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b55da96267c510601e3e38d4a57cdb904011f964 GIT binary patch literal 5876 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c8e61aa85b8b97792be6577951b89fae60444fed GIT binary patch literal 6220 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 Rkan&6R0|ZD!WL28{{dLrVxa&4 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ac9ddc4814d15f0aa694192581fc281c89c0a887 GIT binary patch literal 6072 zcmb_g&2Jn@6}RKe*yGRG*#xAGgO}AVw#dwc4)&55Ql5xbPQn;KG$V5=VZosz1jc$!ZhH(e&%8_o{#I z_rB^UonQUw6LaRD-jE3o;*){v`?2tu%=MBlyewj|%0I~W-p!xnySkUUkEO^`kL7v} zD?A>Ae#+wfQLfi%xe7u#DE2Q(=BYr$)pp+DUB37z-{n2sQGp6ssRUewdA1z3eKL2BS;?SHf{2@Fiik=!LG75aM?y zb|d?1$TLa%bZ!C&U9{0?8>+xlliE+RHOI`zZAV|@5_DyG0* z4j&3H4vxg}Y2S#B)DTCNLwm&GgvBg%74wHL2>L-Pfymv1YuSj;=}r*)?4;ph>wW$y zAi!UNk6y*!Yxw&N{`LqB0Gb8{gI(Yl#1k+?KdfE5ySKCZagMqZF~xnVASNQrGi#BfcM^sBGI1&OEMbde=`qU*_;13> zgCY|CFcS%bP`yIfd`zFAP3+e<%aR`cQS`PMEC8Kdkc3u*^HdI`1T>`xHE2 zXgt{wT9lK7pJMa2lIv`J%j%&_{%lzOTe3=HpoA^3gjgM*&@6|rp|-Q zzt4X_NdB-!l0QNm+w*Oi^C91X9*U)5fFN(Mu8svU+d6hh7{ zc1z`k61iH?#_j3lxas*gcbg0(fPM^sPK?uDGN6$0B#S+jxighc&+nJU@vCk1mseR$ z&RhL?Wwpv0j*Wzd8|HT^dpk4ses`6<$LH<+rm*+KR()iGg)(1Ix=2{;BL=*$WduUR2jcO|U&f%Fw&SvXKNDnc}<~OcrUQ|D_j= zzOnI<(f#~I=r&wmgz@w~9rqj_4G`aOsjEeUkIIniWvaYlM7?<4?q<3lHA8`9w=QhQ zkh{iN7~1;2bKw%qQ`K;!mmMWM2X$7-eEL0n&!u{s?Z!`$c+Ey@=hM%!v%6Aq`AM;D0`&HgO#MR}RNL!Z6~ z=a}*`P3h6JM~&yjSlAinOs^I{X+$|imDz|z@d2_BQQdgcWD*+8wr#^(Q=>74qT?;* z+kV++_NzX#Zx5K7`L>oeTxcjpWwW93>XG?El}%Q-h;y)324*s12=)ly>TVZ9`oQfMG>#jsi38H`gy2S3-{@48`zA+YLgHV$>K z7*$1@;{me{lgf<}JgitV4s;*kak+TR(hyH;M0J{<=`GB4tgH0aSO^sh#TqXU=Jgs~ zSj1W6oQy>p<&dmXyPr6e$FWsH<;zyWLS`h+<3MqzoZ?}z*iel1hk6yECsO5v?3ji5 z!8N_i-LQJ>=uLJK04s$lP?n22y5qA^Hi5bI$8H)^vjx4(jUegKJqV+Z%HP-PL7ZgD zVX-HuB}0&AYTW;F-(;UV?UxQqQ;|B{js1|Nz?qJU#H2SwrrKIMMoX@@XWq=HnEsxE zX5H$o&rt5Z(|$3tS>K>Mp`>j3f(00^dP+jDwS$clElPDdE&2eJuc~*8D6=oQik=)(8Tmpfq+vQn+CxKsT1; z{#uksmifZL{E1aJ*hwNJbDBF1OFZQq2N*03MK>HjknSj?4=GN$SOx^Yr&sYY5+PuR z2C$}B=8S{TTz}}>^b1BX<b7S@j5tZcbJ#{-d0hPl2)E6owG(ormegOnM( zS<-*){uhDhdOG%I)RUxE|9YvOt|o}IM=Tu#OpT2V1pbh#D1@<|az}_GU-A54NpFLd zky8a|^#R4ibEa>|(^$DD4i6?g#2*-ZJrqR#RT-hIIqzhMYze4tnrHjyn2P`l?zYD< z%zALWjX2EF&{yE3jcD3+2u^%^04a2VYtl<9o)WPW~H0J_w{CRZwk7GW1HAef2;?wgo|?QgkY+

0m2}BO7ra|lZfS{EDzWk5N)UTt U<`ah|v}@U?PN2vXwuKt}A46m)H2?qr literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b9297f55c86d3de15d5237c7ad11a0c12f924f92 GIT binary patch literal 5469 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8059d9c96ce2789753215f989da39d3bf28c02dc GIT binary patch literal 16655 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5238827979bdf2dcd6a9c9206823bf3ec2c4bdf3 GIT binary patch literal 7171 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 u1CQnkFGKDRhy8i*vw#@ltgo7j% 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 KWC~j}b^i+`i!PD? literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a78d28baefffc8e2addb285f77a8fdcf852c5cd3 GIT binary patch literal 5960 zcmb_g&2J<}6}Q(rV~;=A-s}>Q_2MW>u*J^I@*#w*Bp{-dASPB6MMx;wG(FulQ$6nK z>U33m#}d0DLJ_f4z#+|r18_r#Lk_@SfVl7%aNxp~I}%5Juc|+1)@H+IC9kGlSG`yD zd%yQyz4~$Mm#=(o!Ti%(GUh=v?YX`m37^SKulT}CCoEFg$JxOL*~4sKcM|u36lvnI zOfO)D$Ai#MSd`t*^d?PLK`49q`en&H6^N)@&Re|Am+xo$yrWwxP$8>*(%Rf+2@ABZ8SSh2d-Xql}ds^s(>TmwiNi1Fk1FPS4s%+yA`<; z`)kEd<7zN)y_19uX-=w_l{=zO8QX? zzr?#0@W=c%+>0Y$MSys7C*H@GP5R=<0A5pR(jfSI7cqA~VKNqxWQTiFC3ol)uJ0=M zaPLutf+r@3kDfY+;*OZC$lNdUM!(1#{VH$7XNMFFU|uxZ z6T`g<+H%?B(#^MB$sV6>ZXYcgGIR{yvtX}QbS{9di<%(+@G_8B2xN=!3YnS*m%qc` zB_!XgkmUCfpLTycW`D?Epo3yb7$A6Sta#dsUuy?9s{$FHWW zrR&)^XLkktN-?i+ZzX7A{Etg8e*Dh=jt%|1+|VV2{nsU`e>DdR(UnyHrc!+|H~({q z>Oah>CT5cA3ZC^j@c5q!yCox=lNzv%R~Hu+F4;rPmvwgXzf{!Ze{GQRg^F_**4*q8 z((=DOhK=Jkw)upF1VB$r$p1Yt2IP5ltmtDH8;=+!~km*&bykbCi>#TX3X@A-b1(Izvu3yMm z!!!(SU4ORm3H?vm)aX@53C}@YRWcj@0Q;ZQQ@>XH6baTWuzEj#k>33SbM<u}8NbTASZRPq}yNDZY-hXzB zdt|q~M|QcIgw?3#DnlJAhc#7~x3UdYb+5ZcuSA<(g>#l{isN@|*ELhvYD_QtQGSQk zF6vD$O{jBq%06|ykl21zuSlj8E(B=#x62-Wm>Bo_nQnjI4O290Tl^Q%(bj*^v+NS6$!;^ACDIG20b7|>BN~1 zMKZ}C*`(`x>`-3DQVEsMSqTf7kvIQ+mIxI;<;&3C-ksHyWjAvVgdc>(~{%^yupe^F-o1KBJ2y%upwPtlJ2; zA(AE#348}(F$|^|Z|hArRl=!6`bq#&ZTRUVc1q#_SR)9Ka+1gmN#T}}0NqHE`zui_ zS?UW1{Ul~xW7Akj=G0djmUzlJ4bUhWif%c6Al*So2g!H2Tm%Haqt|g5i4d?&09cbx zbA~}^o+x3G8I#A7fXyQlEb&vK<=dD!nmEPJ-y?TKX6&-4wNX|{lwj$#uyNSQ{O#oZV0 zehr9jCPQyVJxMC{FBR(PX@N+4!jfLV)X>;K;P)vV!B|JR1H_T9cy_d+cfrbuQwC^x zfV_h_*Vp7(q}-{)gAot$2L@ja1(APUPEfX-_ftf+1XS0}*bW`j*jsRSJ&xwogX?X? z0cQguR-dFXk~uvsn)kvy6P$xT!V97ySWu*f9ZD859n8!NCPd#*xHcZ?jqW4^YbFEc zBZ$x7U(V2roa-ANW}P?;-Am};^#naAz0`fAxAS*Q&@~*|#D;ofH5m00tCv`GN^gG} ztturLL^Q~W>J%Vclw&&{^X|8eO@eF+Z>1oTPcMBBGriN0QuQ`sXd9M;HU$+P5;1+5 zg!cFN14RA!5&o09Lt^tpgh}SZvEQPGQw7+G*%V22K>E{2Q~n@-GW|6-mVtDWweD z$2}2-KpJO2VOf4HmwyZ#KFr=ic;E(wKm)9j9*yV$cBjlO4e?qjHa=VnA}>sR;?Rgz Pt@@Py@=Rf`OuhdCy2tja literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..be26c73851904d39f5b397e13e58fcc13e106285 GIT binary patch literal 4128 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

00i!Z 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.extractor.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d3a8859395e4dea0461998f0daaac1931f1263a7 GIT binary patch literal 9217 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 Psx_CwUlu7$!qojAv^FY+ literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.doctree new file mode 100644 index 0000000000000000000000000000000000000000..142a115acadacca8413ff1581a0c8d95d34c10c5 GIT binary patch literal 14259 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 t?S()CtTA8s6tky|R{t%9s?6uO-1{u^j7vQPj3 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.pipeline.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.pipeline.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b5d6dd138305f2e96fb20196b731813c19bc05f7 GIT binary patch literal 5401 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 M^6Kmmx}WiX0Vs7bmH+?% literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.IRouter.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.IRouter.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7bb70701b2cc7640b38adfef06ab602c8a8216d6 GIT binary patch literal 8547 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 Bpl1L8 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Route.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Route.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f1e2e00144de4e16b161250b4be62c72d00a7a17 GIT binary patch literal 7921 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5430e629b96ef83f98d1d6abab07d5714b0a3fe3 GIT binary patch literal 4031 zcmbVP%Z?;D6|Ju7tgNg@R#y!@LZTm~0Y=$~%p5dGpq2)NK(m-aCDcN!y0Ic7oN1Ge za7@@yU9}hq76a3gH)za;4Sc{zv*B0x06u~}=h_jGk4C7QltLN4wy&?xJ@*m6@BQT; zr#s>2PE9FfaWhG>tk4-Z-W_B*t#e*j|D}KO2mhHLxj~h@G`g-*?%fVnq(Z8!;)Q?V z-H?`Bsm!F=-#0w9QWxEJ(G&Zk|H6;N!1b)Oimy$%AEmi2QXHTrWu;SYjIJi7EV+^e zpH#ZGyqY|Vf6v)-CJSll-;+vcy!&f@L#Do!q8+vq6w$x`+=p9=-dm~Iu*L0{3GlF9 zoVfw(02F&}zrpRw-K7ipt9q8W!^GN3&Tuso@ZFP{AuRi;N{oRJ@4X_)GC#HGUa0Wt4jY4J~7j0IxXZ{ zXlbV~)l8#_(*-Yhl~|rl-@+v<;KfLF} zVzL7DN<4<^aJ9P#lJvEkjW9E$8D=CrV(V&yyxWh|1X1R-QW1^QEsEnk8JiU8uuKO^4+C&#!+bz#>_Ra1E~F@>ga>>i8ODP|C$i&yppt8nG8DwR(mlZ#5m^n z%_Or<&aT>tG3~wMhG|_ei8oC3+twqqI@i^-`iFp;=n!yFXNmPxp(1pn9 zl^ZmLN>?6(3>C}RBrh>IipMbMUSfFI4C_i^bV5X<>PfRWt{35V=X0%Xp)FsVyu9O1 zsEsM=oZZZIm3v5rl%7hK>YTbG1C`&360UfVu$R&b*4A*G*lcKu`jtDbc&RJP6u;)m zU+%g?k*IFib7%ZU0xOI9VcJDK*UR{HM6Bc{L>Ai z(v<=2)(4vtTRYu7x_|*n0{Ey>!1%os}7T;8CFyJ1pW%~m3}E5WFftj&uV9&NNU-&LEY~#$^onpM;JX zlxdc+xm2MWa_`a`4naMpHE=I!%i!-LG|k-*{5+$O0&R)~Sg2%nS$eH-)vOc{-g!Y$magPjt1IdUu~z1{1K7S)Ri|Hna%59DnzN z9|F-~HBYzHlVqj-{Z>6(b7w9=iv-Q{Z!ao;jn>CW(cCp3V(Uv9)glN>!P!} z0E=D9D|gS_7B;zILN0{D1Nz=onwWoVa+DqRX^pTpfa;wvjzbn&mI&^{RG<>4a9|8K z;2c22?qyvfThrG~_+)9)z$@@ar?QxX1#Mn9r%Yk$+15Il6MdCVVlYzszw}^DKI0i8 z_!j;ZoLd}nKgFsg<0vbNp%X;&MIQlQxU=R{3UpQTnAK2FqK2T}VD}y`uIaPF9mMQ{ za0WS1ek8)hGMiKjj%WzJ?iqmLM{79d|bPebq@v=C#eJv$Ofp55(?FJU9@#w64&7d z@OVDcsv|{M`i(7Nw|cOlanPO`Hl1(iN6M`%<@o#Cx|*3CcZfui>Y9SxyQ5Sq1$1!- zRFeMB8~K+&;B)^BA%U(3!38J{wZH`ad6!Q%#7CVt`0Yp*sj4&L&4P9vW|Z=p>=1jO G$$tR$mMo?K literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0df3896faa4103576cea04c6f7a6518ef0871d48 GIT binary patch literal 15623 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 Rn$oHrpVD8EDQuZE{4e7Pm5u-a literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.load_module.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.load_module.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c3d3264fb9c760bb744ca6543bcc32a1f82bd967 GIT binary patch literal 4902 zcmbVQTW=&s74~h$9$&_5??s60#R?>{BW5ND6p*C|MW8&y$ck2or!1|W?wYBxySqAF z)%Fb126%{wQ3)ZXc|?eRzysnZ@IQFt8HsnkQ`OzmJ;tkDR`Sl&sj73TzVn?+&96Iu zeCz&-{b%-7%0)68`eB&Jkg39Kg)+!vmgwT^;^a5Q%i`GdGXGl1JPTN1R z6fX+Xr{!8iYFO^yR4mX!CiQmS;a$G@qB!O~)6qgltTAPN5X3SGU?3W%nGBdxG8?8M zWsykOFq64v+3>mhh@>BW=EXA1p@URHa&<`>H`m5 z@B`EHY5@7V>6W;in+>{9ah{KTv+Zl0i7~FGEWYa^RD|Vb5cx_$i0_@mkKMPeFi#hQ zu^(J!Y(i^tv#I?lO%;5fKjypq318<=%`Zn>#%y#s4^=5H&s#2da!4|eCmR+%eAo>JWJ}wFPrzHXc)xeKNxYj70!zs!4hTnaEq=aSz zsJis0Of5J!s?)%zN&}-Z4W#o^A}nZPTWv$Iv}!k$HS8Pc5=2Pn%tGA&sf zTK`qhZV|K&*DW%38&dume?jE^rMJVI&Y@4ex*RZtgfjRAj6* zGg>Ox2^uZwpz!o=UCnVd-bTcceG^hFR!w9ecRrjOM73q0*g4_ zsNtt*PgxRziSPs;#RA=9eh|61&8rJ~=$S$3UM^x(Fl;}e^nf5M-- zTjJIq5mRi8xv~<-L^u1rs$shmYjWJbD@B#!eB6M~VrSXab!B)NwvvGtE2}FjW)sj_ z241Yv&}PcUcr%f%nYb~#Vj&89>P^`^`aB zXa=s(R3B6b2Bm{7A1II-8eY+{Iz_E^!mnB#I^s6qTXzx52d-&aih%}Y>n@THXz!}& z2YE*QrdM~DyOqRsnPy8dt&u{|&>z$t`XsZS4hz%$xgX`|wd(Y?e{OnZ11PfsgAkpd z(tey`u;a{l(0z&Fb~((m2%|lsDRreZ3v(Uk2y-}*QYTWg#^l+m*`wz{lE>a`BD1)F zq)!Ds^#U2wt3yHMTTa3vW+mRW(A=wfV^}OVl+E(F+09rgGwns}ibciQn%U-lR1Z7m zfXxK3(rCw2wWwn{AsgpYnCoBrSwiU+dYK0O+m+Woja zv9#ITqdO=7#Q{-d+qS*PPo_C~E+8Hv>964(XYOY#kXh)3j7ks8P$PbBx(Kcb5+D!} zp@)8NB4%idP2bP8^cEtsCP1paFppEOCLVyb0)gz3C4NK-_pJozCW_p@5T%Ocq4dyR zV%0r1OQm97bEjoVpuH=BzR^;2-wTEE#}QqmJmqE;5PV>EaT$dWaD4+xE#P6&7Q*E_c#qaYQ1pPJ3d~8SAYvq9p^Hye{`sGd>8C9901HDj;_ZsF zqjslYJWfyHVZOn&PSxpX1hE>r?sq7&>8LOdX{9{^R(hJnaFDirHA@HYy#IY5+RrAz zl6sOX)W2J)N4WY#+Dp8a1=AC21A#x{I*wqhr~NVFC`6BUwq>4xm9bX`XnldQ>A5lY z)I8Dt%;RE;*T|HE!5fhz^6#n`CCU3dM`SBNb>EKN(6fEM1NTY5(X|F}y^A>DY(d2C z%REKurXLRMuK{HyxB-7;Ad(4KP^E@LN*1W*OY1~T^rh@<XyOtZs*BTL)hp~?XUP@4*v*zpFoP%Fz#&04jbB1Qq>$d{FAHkmckZUdtwV)_ z_v5jQYJ%9M50-@W>RwA@ud-@49k%o%18162{=;Qm<;;rNMp6l6PALP;W+0;oNaGGD zESo3%oMIW G8vYmN-fai~ literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a2f81686968a569e0cdc5db3185caf718f6ee480 GIT binary patch literal 5103 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.register_routes.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.Router.register_routes.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7c73bdd68908e9c1b09314b04d6f2dc0e969a4e0 GIT binary patch literal 5445 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.router.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f23e97ae6fce4f64f400a4fc768f13136b00a674 GIT binary patch literal 7194 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 K^vaR68~*`%n7Q!) literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bc307ad9832b114b2cf564c942ea0090aa9a78b4 GIT binary patch literal 9351 zcmd5?O^75(74HA;>fh;}AC>tlhS}Zj-KnaT5s{W*(UoPLmS$OhK$tPj&Wx(a>a5J% z%*dH;an@aAaaw|1anqBC>q)@{J*WrIB7z4Gg5bf!o;`T-pdk3Yh|H|as_LBTQpAPX zu8fF$FXDUOdlB(ozA^v3uiuYW zUGhb%=X(|uxXmE+Efz(7*bJP2xsJ!0kqDXDV`1~tX2d?9KD^|(ta;D4XE>fC=x;*e zA${%(?1-j4vCt`FN(rUE$y;D0v@q4ErKi~HFpq_% zV0LRlvl$9s!)S&Pkhs1#6Cdy?Iq!HjJ1WpZGlti(a()B0y@`KM!i!<;O#AkZIcveP8U>Uk^;dUFV?r3jW@z_sk>1c0w4|504@8 zYizgfctUry;YP(a_zv?Tcu=6f$KDB^v{7?DIg z;!y3V=k7*d@@4sP7xCJfyX?E3>0V~|DR}_vsim%KI!6w zm-U3n-SXjzb>zUtpbh3|bcVlvC}aPP)3KM+USbvrOdvl3$j8d)7Zk9hG>AP*#OA;r zET?xf#rRd$`kgAR!LZi1bFF!-GPENVOgUZ8_0^L{28-+C!b{n zpZ{7R`ujsj5t~W$dwtQTQ}-VgqTe49O~fV9eaL39{c4PUnW@WZs`^SGbyudRrYbZR z%vmHV|4pBz{I?~3DjgNHGWIG5C_i!z3ooK$bTtAjK#>aKzg})b(N4#$<6$t z;Rlop^25TBTTb7}sEJ=?Eg{{mc{K>YT=cOtH}k&Qz^K@J!Z9- z@5mNcZY;0!ZsiOpC($-zR~QdWH)iEE%kxnj1b!%tsAq=awb-Zh-wDqB-It3{OcHr6 z(CKL~Q!^B4RtlrC#g^L2YqcxaI{I4D{VHA>^C;g9s}+onFR6mD;>#P=3P$rKRZxg8 zXFJw^w_520J09sj^N#nnGQ?Q%L%!)Y1Lo;8LC(B=iKv4iZlu_!{o9X+kv1Ca;WZ9W!pk1$ z7T=)q9rnMpwli+QWl&7t=4MtNq6sep%vqf};SF7A8VGd7D4Uhwc!S=Zmg`m=QnAj+ zOLMDPi!Ra0rHBcEq$4V(n|TSe9V*k?iCp*+?e0;-sO z(P|9HKE&g4`WS~Up4N!SRMMkfsGHYjky~vflRcae3Y~k?a*gV*UfeT|+J4we(6SEH zoxrgC9+h%=Go0dX6N-We3i<#`n0{LnURM#*ZZq2lGfT!5>!5jBB` zV;lNLh{B;s)YG07c+<84Y`WNL~sFJX#i`|VJbzZ zs?wKKvd-~PS)*zMEKJgDn0y5V|NIdY-6XF9bG#0S=sGml^7Fi!>6PfIq(Fcx|vC3k_QoERg*l80YkezOHX-f27Y64im7Z zcff2o@v+My&QR_+kryqDIy4vxB(8xvFUqL&al&J{nSKTWy1H#0*s#}V2}(TfHFB1D z59o6TxugROJR0Q0&ZKJAhAyh8)ox;vAe+FaCLj{7Q1n%V+$y!w)~%W$t(`wC;DNrK z!0<(C)W5qo;Pu_>_+KPz)J&Tr4N@KZ5x;>?4^%(4ygU4*SgsYVsl=^W4md&cfePJ1 zZkvtM^DegNaj+e%-#hT#oFHoGg@ML=bgd+@mT6TlZI$FB0*8V^{>4FAY0s2gMo_W* zm>eG$2FrI{FaT@7#`uHSE}G1@3NVIRpb+&ITPMV-ProFOE^Du3|T-t}0fF ztkLwrfRn(82jD4Yu0ak#kROwKfZTFOet-ep^F6YvdeMv#TLTPGd?X(qzxTa`{b}n@ z|2kfCf96o-Tx92iFpe`BGiA+oETb}InYLfp2fwwS*q-SW;WH)6B4XC8VMWA65*IA9 zA6s)k%e6?UfOS+-@+6U~MY<@Y7Yozfr>+a24FQ>~{ zXWDrPsI=urrV}*S@=epOAU!qL=&ts(9ED~l)VdI(Qo|Jl{icW&!MqhEp;8dyyOjYF z_q83D`Ft=6qiMm$G*g-_9ZqP<@}m+=;$9TW;k+_c!i8?4C-{$A{RO zIdpo$ER#B1i9_>)kKTSwBTP=Z_d_+yqWcfu?7m%}8>l>t*h#lp(!KxiA%J(Gd(*Vs zj(KdrSGW0lo>$HFnoD?P3l}x(T_348>8pt_r{%*%E#Z>;&H6JNE^>f?{eVs`M{H^3 z;v&;IPm>dOAEc|iV2TxI%+lV+*!!r8hQF^w!yu7Sm<$s!8s;`E(5w$= zrs0ICc>oNXbTzEg)v!rd`Rs(^2V~7AT{-T)G^y@AS$F)|^WH_arr54CG&0rE3mmE8 zzGP+@{`_kAduA7m>;pk}p4q44T`F>8wg@_(@`Mo1<_Pl?vF;7;IKx-1-mXKpHg+yp zw()mgW#cy4=ndSaW3IOC(@SkTcD5l;15?e4L?B5mK)ca<;LW=#FV#2y~uYl(- zC~{YZZH?ofU&L`C*53)KE}%5R>(=a$?{NoIF}p-Z)Bd{Vw!E$8`f4cQCgUSEdR%)iWUhSUx(cpqJzqYZ_{ zf~v3VIagK99Uayk2^qZu95;O+^1knFuBLd?_3=LKT{j0&Sx|o%G~M7{E%9BU*;Y(z zWCrx+M@_RmE}Y9_YuX=%Nr{%INmz%crc*U+valG$=-iYJ(;S0ce@p<~Qw(>iVOb;? z?Gt;ci=UMmX>dN4MQR~Apo*6Vkxc0Up`h}Xm#~C6 zN$^Z)9@M=oPOLUm&F!h#D_AZI9VG0GCHBdN+2LW*3{mFTxd2vZZAw)yYMEBdM&$&@ z9Xtz*jIyYw03;nv{-XzWoAXi(_8Cn=<~eZxefL1+shLxo6U8)g91<-5GA;iHTy}J zO-i&SKs?5H15YyZO2Hyo#6ircqTm?nmrqR_;WkFX1R^31P|(NX-14?L2um%4xyWn? zkZM0J(>!R12Vk8*Ak7q6n2^FlCjq*dBKOZlxngB319V_mb)B8(Qn6rhr(;Q^gEN8F z%2D(%h=mGA30#bu63?XhC_(e zz&D5kSxko3+@O`t1gs1+OW`05hipUMfBmf=0nvkE9IdD)$z1&#wR(hWNTi+O*(;bH zyE72@L$1>Vhjnx~LL9}K+b7%R4p^B6O@KBRs2cDKa~+Mo4$lKFCOpAERro{_`S(eP_ZxtF*jJh00{oGY$i`qn zof?iQS*UWfvQDH#-$aH!9_b}KwO~y;Vljev2LEz~uH?eph_GrJFmy3VfS)VS)YE(T zb8}Sv-~hTNW1rYiZ@dPlUSanp%g*S9ZMJ=aK}3U`s7?amq66RiI4T{%NRUnAM-31u zruXzG)*LTMsbo7bw2hlVn}Q0@bu8Z^q5tO3`IpLcNI-Rwrup+z#b2dI?w2Ta@9;;Z z**}*31qPNhC{36V~iTGD(0ga6~cL`gtY)0tkF&-$zKGQ9^J5N<~jA`f201 h$tO$V-A3&EwkxtIDP!Wzgm&%3l=7y3k}eRTf+?y6hYCVt$`MW z)898U`?}j3?j31C6(HW-?96=gee;{&%+5FSeR}K*7p@HPf9#OoHcV%`sx_OA+tmGt zO*Y*|*wURKdNn%rLUbcqVpE=W-FHK;p+{^8IU0s(H$B~nu10K*vInN^S7rGLUvC7a z>m}uO{8@lhiUbStub=!3Gsvmf|*3!M| zhcsV*LjL%ui7Kc@R5<#izD+G1xSp3Ht|JMDN zYhhhu(^?RCW<3mGHL}u(+4RXG6AfGQeI(-hn1j~yZGiT|fa zdDzc0xynm0o9S$#uh<7WyRWjujZ`t6N~va^8oYyz@wFh*LgW3$a%$Z*<2d>d3XTHv zjV}F`@MMmj)O-_N6NFw4v#)ikv*fvMuv+<4TMG=^tXCh$=jlpI+paZD51rf}Hh^Mo^W@5f%E|P>Nl}xhbBpu3k>P<;d~A>k zhqwxwE8+W0h-uTWg@TNtVjVix<(ud=xLRFLQCY^uY`7wZ?*e_x*YZ@h7A=P}HhewOvS6b=eS##1bv>6en~6|V7Sf$)w5?-d^6COVVW&% zQ}@#WwvsT{O3Yj<33Ih~R%v{qkDSelyHO7B1$=k>@-Rp2jObMGHBm;)(Z(1%QEDVr zW7C(-p6?&GcmFK0gBUH#Ffnf#o27%|26j!lRzr&rQ zF4m;`LB7o|sMtYJ~N%dZYO4t132ckq|w<1 zPm2ZxB3e&lWc<=(bu!%p{j{t}G*TO8+ia>J6)cIY&Mu#3Tl zS7X8WmY4dvN@}}X>hDUaPl^Q(29tuK{;+rD#&d-PMGC!^R6Uy578E_x)}1Dpp|%Z{ z&-89#b}iP(Ym4rXU01Uqfa$dbabv_p#KZR$aUwq&NS zh#kZuzpXdS4YLv5WK$rrmfH+zKEJ;d)eztAtctl}jYj)lz|4P!rBj})ztLqg34-3F z9@EEfqQX~U+%G1^eNT@`S7JHsg(KY=V>lH(%6Gv3C_126oww1-Zzrwn4P9$;cxXsb z`|o!di?BvdtQ0+OR=d9!^_Ep!01k&M1c?oW6} zltP=(co4L`FMR>+{bt&Q!NZ-UVkmY$$eZ@x)TS*)a%lHd1?_f6gr zrDnW-O!}v4?NlbU9!1&s#Yjaa-&e}8p1|YIcfFWR`cdTvN-;gyLN$j5S*YTDt_j==v#!R8}8aXoH!ohY^#HMLW(5;iVCCcqu zvhhAQK#aGHaW=UT+BV-fGhSrVwZLuEu=5u9k@cPtOb#!;9KqW}sWK1klssY_6U{`k zAExa9unjhg_{7z49k>dzyNs!SZHo5vHa)FvWT&)8KUl|lQfma2N60l*xo(&ZqXHI( zFUzk4hF+;_zS*d3&_)|v5SncUJG57=Rp@1v91`3M7Xx75>Px8Dx}Qw3Xx&F2-2Wx~ z2puCkLn}0++)KHSvHur)_fYP*R1SSvjTxdJf10t%F4bzLV+OU_(kZym2J)O%uupBc zO?cEE8mxk9+=eLUT1(V3j!7TTLwO~aj1R{N>}#ES`AMa>r7P{zNy8^o<;elPz|w>S z%;?ia>ro|=mkefnHpeaTmL|Lm)+0$-_VwG`FO~Eg`HabX^ZCS7x1;ML-6-z%bEIpb z-Mkvsvq=XP(p2%H@fj27?_+*>e88%*&9trCe-Y*?9jj9VX3x|&55Ah&|U&4BtS9_~n6V~f$ z3m5D4Ez#Ce4vIfe3n+%B6i^D9-%|@HhNcvdLbFdd#T#m&{R4A1H$`te{w?o}Qg{?v z4~WNi$zgF|RJnvJ2H-nf=W-i%ht&d#0VoBO0^o7AfMNhj0Rsc@j9Tce1mI~jrR1ia z(0V`s?xWx0NwxKgLH9V@S~C4^YI8h%P&%Y zSuJz`(2)$qE>3UO`xNhtQmiMm9uRc5*nRO;wS|j;`4w)9a=`qKT0k){rGQev{H|I+ zF)*cofr0tgYN59hn19YYqZBavG3&poHB_0k^cLg)DrG3Q82eFWdQ3UvD^| zoW>SdJ~7WA634f6w|{=Aq13m zQv8lm#voiF8qg0{?4B2Xip=((^%T99@{P5$sC5yE!eL>}9@2!5 z;zjE&D)8Q(o3fGhUJ~?2Fd^$cZJpTz{Y+#nQdNsRt6Dn6&)&nqkthe1A4VbJ=CF?8 zYrKcJ%kDV&0PdlZX$6^TJCE@#i8HX{V*k6-vm>{ftiK^0C*b|z=VYz#(@%adJo9_P zamBrun`}mYrE4!cI3;_?aixF8mr1nEbdmcsqz5409*3{q3+o;Z*Jgb66CdZh^M34V zNq#32pY;O*@}l(?eUx^UyeSGDmv)AG=`?UPi#Y;48ff*<*1TH7wQ*TP&o*e69$=$9 zKRdks3!glD0HLadIw|ZU+1J@5*IGV6?5j)nn1H=~O z4LBTavnM8noKrxv!C_%9s0 z7RN!!^|u6IYE3QB_@np-JcBj7RN;vD5?V-3JiS>@4J#T{HZzeiu$#pl*5>l`NQ z94G7P&9HTT4GhVE%K8=gd38O$#+AItvnSt;X2tlJfX^3)q3n#+te>T>Q@gnyqAWdG zXo-#TdkvC#+dJe|&oeJ|>;GjpUmc`gR+aFU=r&g+IQoc~1T&ME9aEcUFDR9#&WfwE07NJHTKN0<&04mqeY{PzhAxaDeq3VGAoLH2B;u_@Yv0DEp$d%(Gf&@sVe% z98v5tIVP=Gw7h;rt95(7XyuY<<>{_gF74KG_DsSh@r*Pu#l;l}ic|7doOK^$ao(~n zW>mL+gRCOyDwdRj4xP1VeUY;CrYq|)JTFI95ptFyE9+^hGfOvLp@j4*)-H5ots^_< z8S5&(VX^)!l^>K^62sii)bcrKh^6TQJAl`PWaZ1oi8cseix%a`cBFc|NG|ve6%t(V zSuUaDojfzwWVqm0c-GxURCzA=<9?k7o;qL9 z$+&1}2ZcnGVP7cZbG!7gfdbb$db~+4d7TOgF1g9uREkSp=2`cTOTOE$Xti!RE>UMaL5sdcOKe8>&dNq< z-#bDOG;9eS6lEq0)_d$|#z#=GU1wA5vUgqF8W(jOD5#?#ERr=OvZvk}>m72XkiWwE zF}|@w8M$_p)kd-rWiU?iFCVf2!;7>%X&v^=R$%A)p zc>GpjGh*XU)2(hlWt2l}Y)ZlyH|6mIZ(T5e)@tL&K_RAwy0`FiTK)_@8^31hRwISF zq^G#=NSo{I$Ob}&AtIrkd2)G}%~IG=4^%tYzT`t@%sScyRthFz0&pIaMmeK8N?7ttg&&NaoE6BSy;qu)>ww z82&id*Kq|hEy+>RKr8|i!5KL|55cwSld~I&$W~6oqro`MW}u7@{EK*UK#k1C9q~L= z>jIC^WIBixNfe15rrMh5@`Iqt6HPeTgG!Mtx^2(;iSyfpOYe~q!Zw%$glf(;!* z5ixDib_9BB1Mz4*jSY5}5d>|2b!7#~epQ5+th(OjO2m#*PTmCMtOa@t9TcELCXv2; z|CyhHMd!SYMo0COl2(5ruAX*C2((*>p=;{F2A6?RzhVR}8^WfrV8J-z?)ph~45)0? zk^!11AVYZGWQYA7CqNVi!`wum(@g^i9;Iaug2(ZA4>cL^;T2r*PUAn+crZ1^T=nf@v)@>28(3>4gl$B=`8 neG1u106dbgOfLCglFWPapj-(9O`B9|x=BPRIfEwWuwMN?XhgMW literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name.doctree new file mode 100644 index 0000000000000000000000000000000000000000..89d9f8d0e4255b45dc601c7471a03b6fc16b06ad GIT binary patch literal 5197 zcmbtYTW=&s6&~9=w#S$8CA$_9yBjNzXdE#!K_G-IMTijXLl%Z8Af9&9>gleTYEO4p zr>okYdDs9C5o=UJNNJuCKLCjb#82RV@WwL|?|i4KyQinUw#a5Bucl5_om2Il?_8>X z)Be*3_gm(lK9C6y;`zY!{aE-+=6c%~UKX)f5y&D=D(nW4Uf&g~x-? zPg$Hl&vloUt00tvV*i$8o(e=8J>Jo66{wKart}jp60rvZ;UGzc$D|bL zAPEu{1~D5*l`=PC>EHubvR@Q~Cqc*tQ>LCd6a0GS#8{D&1sJ&ZOE#yIe;vIoqqk-C zevumtc>C*UTsf)UOk9Aca(<*cPK7q#(3=IwBYlrWprEEeonchm>*4QRf&yr!fdQZg5QBIMj_IF+B1;p!v(w(|9rZL~ ziVOcN*B`!~0^;iOAUWS0soc%@clcoGhY^1h-p1wcAqc%2ckf}QOEZoP;6#`?E~k%nbP8de!8 zS)5ZqfOzrrR7_5nz*f8d&pftt6ve=rp+UzW--La?!6eFgC%PeBh1OG=#|#G#*?MSI%6xs8pcqJ z*yLS1%XYc5BZZLv7xq54Edf%%-VFy(!bn)`BOshP z%1+I3MFu}<>{`X(AGe>W4m#QqHt|K|263*}lLhiW1eC^52u-%g%@XCN2$x)cYZ;lh zro3G5Qk_hg7fb>#zt$aucO?9b3d!3`1$TrtWue8nwLcMFK2?wWj@jmkKBv2{1L+JCp*%m}-8$nqW7-;{EwQ^cO=IC1Q6+fx>S%9$zu_#V23lW{|M<%AI-Fs{+?($@{b_ON4XubPoq3f50 zu0KZWT@I+>?jx%D=7&Muu!-Wcrti*HzNxRl0=I1I==eK;cEhFx-nR{6Bc5vXuli@+ zr@d>s>t!i*+D_G1@0AkUU+ZnjltRA3yXUBS$V^hh0zcQAzjDJ2ePxwX4@SCEw7w$E zF+f)ZaNH=tVAq;)pnHblPBF~V5TkvfHud8)3v+GjBz-&)Ld8O{+T_zUy-%;GIE$S5 zM5Iv;NtarU#Gw?1tr9A~X(cRVM&euriaX`202Yf4#WP`~_fnRKR5>BLWMTevUGH!= ztcGan*gODM3hkvV7qxZUXX9)NbKNU9jVZTVGCOB-rEB#r&rt4u zxH{3;tPkl9554rb`lG18j|ya|#i z5D9z-z33#Eqs`Y{H&en{iu8H_QtkU$lsFaf0IU%N$UJH6hNSSoNPuoE$^A=FB3b4O z2dytw9kO{MBy;LJ4NE-bTn6ZA4Mh(eKalP?q>B`%+$sZt_w^nwBM}0&SpjQ`Wu_@L zPs$UDbr?Z|O$`k^Oxk?7d>7C5Y6yxRQB;9B@f1W1gD6n>N3DPTx2?MgOB}$$5RG`^ zj$*b904mG#UeOJnVz2|{kPxyJ`nAu z6R)A3Bun-0lZ9Ug4(J+AY+^&@u^NneiQOA4zNBvzdfO%# zL^Q~WIu#&Xlwx`Qt?DaDFdymC&Ca& z;|?e+TR$n}Ujm0O@=p*R=%^5AfK}4_mS}fe<(3ukZY4H8+znzc%zWa|ly>d-l>UlL JVLPY6{{T#^-Bthq literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string.doctree new file mode 100644 index 0000000000000000000000000000000000000000..148389c3c063e51f050d39b3b9612e2e6fb48a3d GIT binary patch literal 6582 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 Ibh*^|H}EE&g#Z8m literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d651258378c5f28f5867eb7c4dcb7507babe6120 GIT binary patch literal 4101 zcmbVPTZ<&O6`q~hp6;GY&(7Fu0@=%8V$&Pa-8S)qSzPIMpRd+TXL&P z<&tW)8)8TvoOnSm!OC-zcY}XTen5UiUh)K#lW4$J`iQjB}ZDB{M!Y zw%}39i}5dh-F!V`&zQ`lrT?DvLhaq(@Fm%Mdu@AcFKDCx{!1V3D>}E=vt^Y#%p<^K zy*PJ$*5WA+++hvlwYy9A^Vj7xaz~N1g`Aca@DtnzGBE^gH&&4`5aPR&0fz9^OUisb zm`3rU;4_*jUDrl)n)2dIJP;@1p*Rqa-0vnrr+l(lB}&FzOnz19&)_06`9#N=TjSB+^9$)R3Q?chdGE4Y!!}S#_#3imQ-h>-} zfZyBr4e|RST^|S*GF*BH;AA!jbKHlG_TiJu;Vmt@Ot}?0dE(vsx7;~yPW9sO+WM#z zKN90L#@FI8Jc&!*MF_>O+;NDR0nIQY;UHTUTOsiJn%vDX!zY2-wDBZtr1&JyHZci~ z9<8@kaqz~Ls3kLSejt8Xk)bj)+5&y(j$zg)2V?03cS;8a>V+}ia!P-hs;4H8C>8Xu z#qi>WdxGO*obpjkxxepFZme`1sfm))Nxp&$vLBD%eP?2%VAAA) zNt*}q)l(uVh>^`N_3ZNh_v7QMJHciBfbTB2y~Yy_v}?gOu+jelwnxBLsP^cXR{<5z z#B)NAtzXyL2}WG*Wu-knAI`Em96pOkK0>Y zpZp0r!@5e*e-9vn_2=SI1t$Rb8F?zWyb7sUXLhs9HFatY%uYrkg@0}oHHypW29g2B z{e0!!VU=oj5lnO%$;^wtx-KBLs~oxdZz#FoMl|fu*F4$oUpq2t@;I4z z1k?_yKoO&=B5dcNP13eSQjBQt9XE)}g32jti|0ursfwuU8E!2y0@|1JwjY@l!NCcf z@oA(=6p}V{&aPd*u5Y^V7$hik#ztw5!EtpAgYE@}NA<8Q6h^1SPAa-Ii{m<#BizMI zYny4yHzu#{xKnC|vNC1MnJ!Wf$$)ZK&SITXk7c0p`;~+%9wh9Aw1PFIA1Bru>R#a5 zofJIRg=LE0aOJP|-I0h?JM6e~zLdbqqRyCRQO9)>J}u`sZtx;1GGK)j+wm?3o zOZl(dKxTPq8P8&!U=;$bw6oFsqmUaOY)>*?6uMv{$`Zv3;7q0>ZMZXC+HEbJpvAj~ zJ2N{f#6R4iQo1&v+4^96VrQqjM;95JvU!Q>0=N_8t$nnt?zMu)x=2{U zbB>NAi>bx9c87?p8S)?CkO@O&o5>}Ly&FWO)od+t`x1;gP0BQ9E$e`45J+T{B8wC$ zJPQ&)n;G)`T9g}JCYqs;V%0sq%(da@nAST3MPkctBr0U!=NU_+iKdD!Qd`+=qCt$@ z2`*#6|0wj`piI4t&7=zblY4`{a0tpZt$}+L2Al(k*u5xoG7ARC~zl2E8N z>nd9}CDl6I03J`LTD7DIOJCm+wyXPF8vD(uVbjHyex%&OQjWjBtE-;bb4N%du`Vgt zy*rMzQa~4XKqcvZSj)c#0$=)15EAHu5L|%LP=`$5U$psTOMKjlgWry27OOHL-ppy& OQ9>!N&JI-QazF42O#kS5D$o7gTy000Kp^Qsp{_OnTuH;qMsj5?_zVn?+&1aoI z4sS2He`ZhRTx6HSFpe`BGi6OTmQk6qOxrK*qu<)6_Q>>#@QIRT5ix6)up;6ji3^t5 zPp#RdwM!=d&GODqlHdbYs&l}N@W(|fMl2#GGa=}Vwj7Z zB_d-(r3)6OtQh{}XZ2TT~OE$~!Nq#Mxuk^AM}fd;&1R@|A;zT!>V)#Dh!r8a5hbBg5aPR&;r8yU8<+WP zFb<>hf=y_qG#fgc(v;c?Qp@(T6h1#JRk< z8aUCp9>G*K@+OX^EMrBeSv-0v#{kS>p#Z^yla+GJmrO@wF}rMe+>?R#ab^B09QbYg zy^g;l{C$V64+IP0E`0>xL^cIs%)8F*(0=r&fAoTu^;4#~j2~I^)(h?&)~8y&eyVL) z@;CT!hVdzX08iqQYlxianL8d~W|w9HCEy@k7IVzMyTECGxxwT9sRTuQ#4MRTry$HS zsl$b^GSg4q{+0&$kNXe9F+wGb^uxz*^xv+}3{)OQ?6}{o>OXu;^UWr8l|^5_1CDXw zduY1#F|&YyJMZ$Jdd@X?G`IE^w2(2&eIK`n^wor&)ADg!OE||6v;4${ZJLlLKBAL> z|DoxGbdv>j^G5yL=Q2e2b1V=yTfoDc&S!I$wv9Bs%QQK5PC(Yo3#M3c!7SPSK5T!l ziqt)^leW^R0~Qtb%g+`n=>}o4sMI)J^j0zaXvCzh?W7sawnJ_I?!cA zH)d^o`BVOD0`s#OnEW@$Jl@ovGj-9cdbb+NKM;0%VH2CxI`ss zt*R3Aq4BHdQThALsI)zUmVr%TnT8^>W+lHuT8BVi`i4{Qu=@G|6(o$+10Tl3rZ}A@i)NpSJc`YBecfxFVEuG3hQ@5s#2)X z@VYgd4ZK(Wv z0PNOzMXx-o2n-{He$4OtkO2TcBHy;6Jd&Ai_kndIcO#ml@L#o}T5&mUA?aXrd|3BI zc@e>iGyFeh0}wmH@c*JGMU2&hjZFHU;@WIipVTs3fiioUtc+Hbh)nvS<1BSX_kD$$ z8Pw_skaDW_b5JMJL7hkkh)>^$4jjY-w2Y1u#QBzv=eDqoj+ryVy6Yh`H-X%$4=+CO z{nO3FZCXk`puNjxH!2HiK7*#!+^!|QL5#Lg=`hVP*z(5&(0z{KW;HB}1fv~dD7C0Gi{m=p8RlRjrA8yeT9YTs zW`|x3S(yfx6IrAdl3glUc@W8z9wG`Vzv(3`VNMb}5t;{eql^=)4OQoSYPJiO%R&bU zyI_euSuvYDOqyZG?6XS&tk6@Hs$SGFotTZwDUREH5*8WdM(=k>demMqx|IFG?20Te zb-=PnQU*n^m3lIGYvA(3-TBFY6@@GU9%gaE3gAqpB6XNOS?YN$9jC>bdkZrQD$WMW zOXw`U-kA;c?z{673!BX?x`P5x91tbAlQla@m`zLc6+k@3cm+>8bGu-XEaD($R3~r@ z_2j2!9RW5$8U!LD4p62i;u77l*$qoAgPF*z2#{(gF4H_{hzDSuKp?RcS(uQ*JtqOW znIiYkM7d&RECaMqSapkC=2Eesz0iNZf+%>}9s{@UC^i><@UfQu*eGQlk|wj8stPh5(pO^_>RUs*!N*1$foh*2#6HZWBsW$2Xj)Y&Q1(%lV-3^L51G} zuzZ7r{`+hLQGd3E|CH&GnCc-daucVDzls;Nn@6F0hrd^vowhffx}8Y)S0pjWODJsX zb>8l_#IHk*gZI<1Od5i?rLQaqo7KHJjlKF*x9MO`KQeHkDdpc;)K$$anN1{>NS2f` ztl5fWk^pI7io&w-ZYBQ`IDBqDM0lVvLZAUwMeii~4dtN8Epy_nM(ljJC9)_fW8%=1 Qc5TL#{;Evj8>8X>050Kbq5uE@ literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e7c881e03ce101304cc8823804cb102ba5215074 GIT binary patch literal 10102 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5993eee9861e8850af5774c69463c1c67cfc616c GIT binary patch literal 4165 zcmbtXTW=$`753UI%ko8DJKaTq?8OM0z*|I8isT_!G-!(kDG(P%krsX0Eisy*L`Iz9 zWXSPa4*}ALv{`^JLD=W^rEdZ9Yx)EFBl_O&a4yowXc4#u1P>3%!^7`<=fW?0e|>gu zEBv`*lM9($kE0~Xbi$2ydx?(AlxNm|>!1F~f8o#Fpom@?T^2F-ZVM}7AyrcF%)jt% zNXxBMW?b*@8y;J!vv#}aiCxiu;m^gu^{ljtuT8mM#Hr3=9H7Q|p<`~0F2=dcxsn+l z8(Z)w<;D1S^~XnLnl8uB*>ff{Y3aWw-B5k^_xze{zMaM`wiPtefB%&a_ZGd|>FQYL zcJl~OSual9fVJ3)9k*LUdg<=cUHxS_jof}@Z6T+ng)0d99hn${xgV>@7zpv*%K%CE z+DpoOHJC>6qTn-{DP7-2bDHwvSUePm;*r=9kKLCOp;JCtEE6STE+)S%^k;CFnS83_ zOfK}*auh@hJAtWYQkgiJ^Nbgf<;mnW-eLh+#>RyK3{Nh$%cpio}J&qy0es9p_8ZH{p=RI$Ia

|R|KObeB-X?m>JRxGZN0SWzh+Z*Sn-|jyiuDC{LRY!)A(I z@^llg;O(%xwTh7kH^eQ`f&D}An~Efr(NV_{=k5R|j&d-WPI5Tyam(e1cOxuBrHs4JwY6jw3ZuayrSEa7p&w_^0nqjI?|NRf}lO&5C`K zHdjoVTrp{LMZSDS`I(-b{eOOaa&afPa1gNG1bVOWN(1pq&;>X8U*PT$xD~Q{ zbj(dq#dGn35M(O^#UBw%m2IcNHY6H2$MQl+1lk%Kwrk3CT)OVEM*HVCwe!`c4rYCUOaICp zXSz1p)FLwJ=Yf$_8y;67zcR>u(0UFrUsvT(6KSI+(%O%Ns`7{`vJV^~ZvD`F+9(S; zR*sFDyica?1HGLpfW)Y(Al>}5PUg0-iV^L-urayL}O{X?C|*Y@%H}0158zIa&$iL> zy4MOG>mp$Z&pA4nET)#^((NL`X2^?xLnaJWZziwN6u4njTFq7>w=Kb_Bd|SZE$e`4 z5J+T}B8wC$JPr~-n;G)`N|YO3CYqthV%0rCY_*M+sYc{Z6qY{pd&FxJI<;@y2( z8BD-RW_bz++0b3^eDv14?*q|cF^f0UlVqj-?M6LfH6q3?@T`#B&cYdp`iZcq!eIj& zO%X(i75-w+Jpv_D)<$Q00ai6QuiQPe%xrYcgq#b7ALx5mX=47NNl}*A=Ox100IJu* zxEiw1?Ns1CiUlfn32Al(k*u5xoyw+MU!7I?z?ks;q_* zQ)vk54R-JF?22A6Zm-HN2xpKJ1xX@YEVEHD=g3wl3nwrVWV3iQf=CIySHAG>v?HYw z9mLQ!YX`d&RCo?yd7p&UxAndBY*!CD8VAj(Vbf_xKT>XCDaYU6)K$-H zxqT#(SeF#+-W|kRDWHoxppx`|Rm;Bx0$=%05fbQ%5L|%LQ1?vWpSJm=BR*)w!EXmL Wi&dErZ|1aXKcSRYXNRgA8vh3{v|=d$ literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e33497acf801e0ed2ef8714e2942fffe0e9390bc GIT binary patch literal 4450 zcmbtXTZ<&O6`srX^z>YMcE;Joki9f^?ClNiZYS}B8Fn{>7zaFIFt)KD98*+Rsar~` zN|lmocKX4v37B|5PqFe7Lf-QWk{@93U&xP0p7R~mr7!C-VYi{7bR-=eedjwDJ!}2- zv*Qi_vqw7PBE1}jah$4{X=it16%`3fjr+zu{GH?l=WongFQLfWWp}a= z2pPwZZ6|0T<=b|rLh{_+pewrbVjSAN(3o6|3j+@j;@cwDgl;>Mq1F)MyOjb7|Fs(z z*c7>}|!7?A#A__Mc1S{OC}G_!EZ^n&c8CL@jN zj5KO8QZ_%OSOGWFX-`dhFGr*MXPcfe2c>I~jVXxh42*o#U1dcL^tyNz_3V1o`*t7f z8vr{H+TFVAaVqUPg}vKF#7taWyeY*u4R zuxG zcBoLawp4h1`XLIu$M2P{2Oz&9&n>YwQmI+)8|uP;Z48sbf7FU<#p^-ew_DlV0Xv_t z*Ab0X5{lIEf7&)6H}edY?_cO)z?FK?PE}cRuIxeeNhM|OuIy2&Dx-BJB9ngU8A;Xi zUYYe4u3oAZ2%V~38Pv&PfNbE~mF6R+c4gq99-zJOJfX;1(({9DPp#1FSvWVWt0S4a z2L!jvAmW3v&aNidFv+|mcq$AJ>ZS@ORvW4= z>)amXEK|7&B)eeJoo(4Y9?E9evd8RF04vnpLf4C0wiUB+F~xD+r(vD~E36eQmoU%?cB+G*U5EA@B+_8N562dE?INWWe%VC9H8b*#HHgqwi^~k1q+eg5@6IJ*q#Lq>wu~k2xON$ z4J9c&@)AIsYV!R;lxbGPDnM_5RX5pXrZfwdcY2CMCb$qN`ktRhK`eAQmUNNI%61(M zd|(f784doIofarlEej?>`mWU8rY{_V4urZfxRlhET*C2(}-PWE{eJiVgcJHzw1kqY=b1gs1U zOW+^_hwMT=c;oGNfM_?LL~H6vvQYnKtsb!&5@Tn0a|vc9{tQI@h?_*>u#O4G2%^|< zceZQqf|5zlL}zn>sx`c_H_?Kc@G{_H$|e4w?+vMl`3E{dX$t;OAgnc@dc}{+Vc?sz z65P8HNA-^2`ZC;rvj-8oXUM2m{sHP=l~o$J0)JE_(g|2l=Y6uKC%trH2+SE{fK zMtYCU99WZ#S&Rst!@ry{gF|jbSTze6ij55LRz|x?ud=W0arN2-UFD?AYA7?M2CrUY z_clu}=$&VG%j|-1202lb1j5AxCd{V{*$QRh7)F9@1}|z5DW+H5m(HH7NU2PFF|b6ScJFp)c4mck zq#nD&jVF<+!_r)OVFUr8IX z7MZ(okVF)C`@Fd5+JTv51)2V^Q;&?B!C@>+PpR4%8-|WqZWt(TKdB zs@Z|PyW~`8Vm>0}%d%z^0^s9vDx3GVoFInM?WAqWSyPC}X(s~mBKeFvc1*IEwmdVA zQHl3SAAGB~89NF4g|=z!M65$!5;-l*E`3V*5?|x<{9ZoJ*X3@D2R+u>*|$B%V!ZWK z6u6LS+!T#x2catIK>AnS$A^BZ#ya#hCqlmro{benL(K1-^P>HC2& z2aH}``0m9A1PpYuenw6F%+|U3#e57S4o!<~){7?fGh15_rt*_jIjMT2eG{F+R4!}# zD5g>{tcjH-CCBR8M^@>rO69pS6|*IV~%M+YGMnWi=jurT#yn2?GzZ%Gz z-N+1i*|J({QLE?jukUil;`JTI!niIts|Se)6H#~KdXM#jC|mwkhXsl)qDz;Jb&#FaAS*jlVBfZ?5u`|A_xf4xo2Q$#16o$0N)o2RX$! zCi17uuYQ^v&?jsNssB&%egMlG1)wnfWVoLKxRuWg!nqyvOvg|8f8{jrUhIe1C4Y?5 z36_$)Fzp9=qk16cvsc=O?xzQG$qzChjg*9Uy@|8=t1yl{T=qM3*w#_`RJ_P5|} z*pAE9?DUCUaUk+f6vsAJ?X8J}F>Qbyuiw%&CObaI>!#0I^ zj=k^SQ*TMrKg`ukn;E8o`x=H1ij&;7rCRPzrnCc3QDyLDQ zkW`KnhjI>OwihDi;E43P`n+pKKESjF)n~hF{vM8a`w^@RB3>(cmTT zU4<97UE-$%D0%DSj->#_<)uN~KcbN1NIp#8bfBX(_d{wj97o(3-w%f(e?ZGap@{n` z(JVv3U#Q~HP~g6S=KMYPO?q5&uT$qEEdzx}?qs+BJ*J2K*$B6%7G)KV^bzIu|DYb) z?SH4pAIj~2tD25s#^DOF)(bkl7D z%r#dZl!iBz6Lcm^k-)-c=@H%M{7tYt5h@^$Bn=@8LEzjnCeMM)_Qyg?rqF zYM!6%-G``1XI%FT-sDngPzolOP8=C-!~0N=b89*2@CleM=N;ej5}S1#FU!4s?O3OT zemG1XlTfj~%S*@OC_@NVNilA_*I|!uq}%R6_Iyh{nVjjFdo~Mk%zoly{K<)~7qruD zoY>7!CFr*0ERxN1+|}tyGMAUp878)e$0+#BRee=8zfsl0jT3{YaM)wo>GNDnwL?Si z^|G`?B`WBS!-(9UV_bKF-aeqW$>MDaZwKzQ`aeVeX}mnvHJ``2`lFTd<;W*xN%xIB zv9_T_&Z6SQR!Mgiu_V(kbsw3t&*|jd&*)?^F*l3Y;CLns3WFi-JRH!9Bs@PyeaGaY zl|+=TH;Ux^d|soI^l~OOcC!`+LpDCkO;`!mRY=@|awps}X+E zGxj<`)Jsvb2pKsc!hSuvaS?;wnyz6UQ#Hn}BeYHAcSV>BZK0Tvw}sV9T^ zRzR^CL=h6v*?4qA<>KzGel%DV1(Cr`-}YDpArq@e)5#^Bz$#IhR8&&AKJaCLg!@<6 zxm?tA`#j{m@2!3q=qyjs9AXHHLqs0tl*$Fq^t%aC%aFK@@=4rbk#|MR3L?Y^8AYHl z3<1NooI?D#gOnpA;@Ae#t{rC&c^SD#P;T_AwE!azjl$|6SXJR57Z~{_7N%|7 z6`&@Nt{;>7`&D7g5<4)EMMtYs2*Cs~LmH~zQ(1{6jH?dPpKasnyi_TFBEc>-Y^Jq^#qI14Nz$Td6!vEfouB zX$aPXf&>&YgZhmJ&wm~gU5q-`0C}qElYb~DPa$10+8x{za+v6-G2rzrE_xmYt6_zQ zAF0^uj9iCR_Kdis=HKK z7Y%it0oB0Ab&Df?gurv8Jq~hKLPYN!M3fKIr73k2Dno(;*iT?Neg{^NL&FMzMVzz; z+BrQkUoSAVKhmwFofKBnYa`4Zi+yYaI72kjjc%STo8 zS1R;@!jT}@KRrk*`*K3g0$8jdA?HU#7F${m(uQ2IkWD|H)xQl{yq-P{7eSU1&IZxO mbX|r_Z>7MOO7&b(t@JpT?Hgf7UFtP!69i^xLCbQ|ZvGEF%G>n- literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream.doctree new file mode 100644 index 0000000000000000000000000000000000000000..df97d299fc26feb56fe7dcb476311c3ca4001881 GIT binary patch literal 6779 zcmc&(OKc=Z8TM<&9zVuw@2-WC_2Ou?>{!?{;c-CLY6VL602Wr1gdA9{nx5{Osh;T< z-PK-?L;{hB*p=#nwo%{!9Jp}+jz}DkxFZobBN1^y+>to){Z-vP-EDht5(!qCRoCmU zzrO!be|`R5<455ObLyYmj6?4DXI;~_{lI2%Dp%~lN<8L^^m)4fZu)lGk*&yl5(i0S zu~g1shQ%G%j+mc5PGy^>3&)MS+4|*}S;7hYVmWW{CSQJ>c6duRgd<#58j?qr7x)%7 zaJyj?SS*f%s2e&Va~+>`V-YdaV^Q~w?BmtM^Cnq$N>U+o=}mS<+I}Kg@1^RjQ1-fP zh9*uYQobcyMga$3l+6r<6S+j{r6)<>l&hu?k<(8E&?B@K9XlpumMzzeV|3!X;o}tQ zYsF5&X`^pi<@j}w)bF$(1HajcXPMei~8i(dD z!4h}yyNlmF{Pqa|U>G^-*d0LU_(PapKGZht?C*6xhGu&n6Fji@Kbf(4^F*X(!avIo zr%0dh+ps4Nx`a5e&YiP^kv5GOu>&)SB&zuFcP{eK4jeNwEm*;@O<^AGy(1?+3!H1)==> zqx*LR6gt|wXT}rXy7%B+K8YL;D!EcOQNob*{`W_glqoq6t&IuCMH7_pc| zr!1wlU&Y#oSzP_17FS(2uuQk-I{jWafsgrL=zi|yUhD{V2x!LUkj2wb>J_=Fm*=Wp zk*mVV5k(?=-yiM;gT1K*i&a<7aJP@=l~1l~!y-#lg2*#7Z^(Al?{b*y-Brwk%Q5fB zHTd@-U{gEE4cb^`GSy~fr1^-C307|kD|eAEw8|}|a$Vo1hAG!GZ&vktcb0xDq@Px9 zg|@g{ukT){*S69NDIQ1)7P$_RTnW&@|0ZU$(8_a4p-x$q+jUh`+ED3&(nKLb*@)7T zQAfL7m5`%e@2;Z%^UKkf^ZxmW{3&4miSp7L3R+SmOngfu=W@{eQLX~Ms=NMX)~@0C zU4NDB`lc>Y5DGJr%KUUdkHF;D1t#;43R^y^o$#MCPWZcXaFZoT^q+Il z1$v8c^P1>?&k%hHc>KdDa{TWV)K)XpXrCFN@qb(aj)MY@gR0J>_4&EE8ERjS$W?rM z^ulcE7rXaW@g8+%OaK2uu2UdKRq?n6`Tf~yUkZ7xtoY?QXU&pbZC(k6{8D@$Ui}&OYRY%8%Z{qG}vpnv+L-_68TCm~U_; z-#wkZ!G*q?Z!pcy>*wISAeU4pRe^juTaA)+Rrbh|ayhTahR&6h>~d$CYA>zbKXTd` zeP0={S}F5cw!X5j{`ZMLgi~h)bYAI|7Tq`L4Tu*oDu7h3Qk{l-3Xj#aQZ~xwN4$$h z@8igFqf+VOf*K^QtLwlUm7$y-kgJ9WECZ#Lh||$;FOrd$pFhB5swQiBI~U38?5j7# zD|}ZU9Z-CkvO0okPU`yH3Vcy!PIBtw(zgn3*3lox`7&9#?E3qrqYHp0G6P<}bvQGB z9Q}!oxD3cukudsznyN%DwU_-szvG|D_3V?L=@V25n|_cTAkMnz;(wrSF5)A0^-FJR z@DkyI2SY~Q9Oe(ALtW{!sQ9pnyvbT9=rX>bBxNQAl#5eRavPgD+d!(W0>(vs(eeY$ zThzj&9LYJE!w+cfylh)ZM6{1lkUZ;ok0yKMO3Z{nwFj1LtDwCGkutiS%H~_9n}F^p z9uu14j*l>1_K^7Y)nhzy1UGVu3Oi;CGS2Emu172k zB4N1fl)35gf?VaMTQnPTi=8>Z3Oqv+=aU+;VY7ZR#CGi`X5>?4tj&g=7EvLL4wXKY zZO0E2VKCncsD4KHC1P;+r9+iDZdC^j7DYj1aMQP476E5c6-h;I28pOjX(%bF+^vn& zM2wmX2#vOuJJlgyeXBZ9TP&~98Dap%0g;O{rEH5vU(V zuLNvET-b?hBFF|vkU+$-4Lr05&RNQvvTY_JFs5B{!GTk4z}-Wma6AC3IvgaL$TwXQ zxT$)8t{;>6r(I#p5<4(JhhWwvIxV-U~|69cse0>8(F=VG&#F#Cuj zTk!OFMef2YJ);QF;s6;N_Do&_>n6-IgF8d+;s+02aszVy_1MEDWqdn9WXFK&x@zmD zp?E0`?yki_TYyiDbi@H?1tM0DlMpGK*my;;XPMv`{3oy+e*iDYQ^PhTi#X}m<~bg@ zuN#;;9*N){r|=rD5B4$^6WEtCyfmN5n-*q`4ThJgYv2zDVAzP}ek!*z>L2dv4s>F} zEu$qU@iA5}GXIo_bGf1u3?drNi95+bxClePXBAbx1tsBZ0)JkBBiTfgzn#kMN-y2l zsvFVjG(Dii>6Wm8}0caCk3$9pQm`34sP!W8ysNuNT`zZmD#y c72V2)YmRTZiA_E{IQBiG)A78AV5Nkq6j52$QxFX6LGRB^>o)v)oyoJ zr@MMRgX9205jH9TQkoM7;KqRi2jDM2T=)w(aNwMC4&3;?s_vfY*$*6JX+2$E?^XTY z@4b4je%$)?H?A+(e`Y63gp9{MF9>24@T@Rvf%5Z+$GZ5Wxbu_ZNzpOw)O(z%JoR~D z7BIsXG7M547mo_FP1CguvtGG=HRHaPDz2A{mRJ$1kBW|Ho0gV3`>9_c}u%{QT7Z%spqghEjV5SSPYuc;^SuB~A65AuQOouLx@_}d8J*`tY$Te(2 zHdvBDMtHCKp_gUo#CIzOHuh^R$dhSf;Q1#hAJRx}R<$>xp+fA48)8%36ieck`DtIM zi1$w>K`4DL`tPOc74W``5>Jaz4tnq5_wIh=jaeX57*?edi2NZx*q5=sV;zQcZCYLA z{KSyT;X(P`Gn$-}T|aN6_7s@yhIrRe%$?M0*sxa1Z&#?w4huepX*7R))`aI%ml_@KrryWgvz02@jBYYjW zYoz8ZuHvD1L?E&$h~fwEM7Os+yEjBC*hlj;lyK7-THO6SG^<(W7+njU6}avM5?$-* zmKEdxY#yU!nqA@J8cl3|bTKw&F)qAWf)NN$0K&u?HGa<`W~Ov_uEq6NA5m{doS03QxHga9Dw9( zj7ww2IAsvNUe0cw`L7r6VHRZM4tyA>$dhqlt|SwLZgl8L0;g_S&oAs0?WH5G3+!bk zfE8wguCavsawz@cnQ6l(BNgNn>|c8>f27bcIdF=O$l`wn7JtG8+lWiz=NB=9H|NdV zL6sjphQJII8rR@{;exPR5`1cfy|WW5o1Zt-G{CdpcOGN+ijA$Y*iJn5XgzL*;^p{FqO;bD80O@#Rabe*SjWgz)C93$_ zl%?YD4Srf3m(WuD;~c^ruVNd|$vGVNxjFa0Cw>S3%bT(a@-vIx^eC}HZi%p0n02~3 z)PT~!qInaqd`_POW>@F)2RPy|4?}k~eQADlnl+hqrj^fdS?H`dJ^*m%%BnBRpCNwO z6;ARi7fSBjvAM%L;+8`K$b6fq0eV$=kgsArTliF!%Y`uj0p<7|qF5=bl09$3jthM& zF1egXw+xTR59qL~uz(GZ$L~|qUg9(D)mXV)`I*@)KPeTSAUN*Csyskec2T^0%hI0` z|6492o7&%es}7+^$;#TRTO~qWWInd`sy~LPy@Za!F4bMQWy+-dc{AloUL|H~bFa$l zX~XLPbIJLv=(-AFE?CccZB;voF0EZO+kT!>mBs3sYP0HbwUt@RxYoGsQ0ng1wd*jo zrVk3U@_jGNQCQSB@y?NHmt~Ji3p4`MKbiKT1dR=+hC%iTn(JjVPeZh}h{#ln(J0il zoLS7?5LryDG@ltfTr^u$ILCR!#zU1x1$wptnM|0kBC5wTh7cs)`UA z%LQeLcw{zHo~Tr_ke~9fIJ{!kg%{RMr1^X-ft5z3kyVpgrWNo(K7zXK$6gv!X5egx zp0-Yrkkg@xr)FEmNv;`>eMR{LJTce9?l-$OoZM&*GM=U?Wx|Vtkf*?zwu(q&c2usL zQd(9@VQ$Wi%!xRDN)EE^+)qi;S(%i$^&s1Rx$D!?=PM z4)YSKCzS>);FKjn4ON{-W(BS`MAQT#GGM4qhH{LG&un|SR&3g3u1Jt-E6AgS)x-m^ zwgYz=Ph&46fjhPb=*AhDf7+E~JP#B@F@#xH`8ZJ-M-e?;X<6cHb}CWjSc>kT=*zr8 zNCzo*xmr1d=$cI&CW8yO6c?;1r!n$O`Av>H*MaDEI`rqnQ_ocV>y>!8t4E|g!7GyFdT4dP@%t3Y zpscOE0sJUH0dlxzZi1B&s~xmHK$)LEGgq@otWj1AIYOa55@7IhsEGWVS%gcAeVD_u zGeGr{ZM!D3RjC8_rY}%l`7ogKIN)qS#OjkgK_I6mHTzChMuKPHkMd@{EG{}jY$v!qPm(5!$?P8N4o5mXrH|lO{!wnhxVIB~NMzm@@pzv2l3YRYR{tL&uj`jcm literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up.doctree new file mode 100644 index 0000000000000000000000000000000000000000..af7428c61a801da7834a96740b66d183b9200878 GIT binary patch literal 4837 zcmbtYNslA974BuEZuL6d&I}UFCfKn@6Ihb79D;^D&W1rS?KA>s;EQ7vN>!A|QB|>0 zWc5e~15N@XZh)t_at(3_g8Z1=1LT%N@&gRa-QOdtN+r45ussblP<$jGAHVm#h5D%V zm;W5E**|lrQZAC&zz@SjhD;S^JCs2lvqTr477u=3d|32MC-a{vnP&kj%ohrMjAgZ?7eyG z#dKNgOgr@fl`i;^>3B7^eABc`NYBhQx@&Qkk9@P^Yn_QvuHg!Tep7^sVBQKMUnvOj z-AVw7{n`%mbTJtD!8BuIn#s+U_9rw|@I!u^@9{f)lixLe9C8`6;dCBGB4B*@>r6g{ zyVUSq86;vV&*yzBn(84;RYPauaKaLn`I?2p7x5OL9b^hf+&kUKM|{n+L=v)DgAI-- zyo;Ojm*Lg#;{P@L_wfHcLIFT#!rr|H{6sPVnapF$1!(U*==Q#uf!&yCF2e_fdHb6w zaD23MY@g}E&-v?oumJvy--CN`)_uqU)BTP=Z_kA@_g8L6&@4i``>#5Wa*h#lu(!KxiA%M4` zd(*V+jzw(1SGV~)j#u^d>Pt9fjfQ9(j1i-LPSHmh@4eNB3&QB0(=k`u_R*!b9b4Owr-7+vStO988qjX^9ys%^ z%1hPF|9q)-=dz3;suR`Jd##RJg#TX3k`Qe1W=P?URb@)NY24~%RQ_=_DoxLzfU|KZ zV_zhN*+}O|q!8$NisZQ|M^6j8K>OK*>7qQy>{2O7Ss=zDC@xF~l#XSXQ^I}qE76%E zZ+>FQg4zaR{2lQ84MpzCu&r?X>lbls#QIx4)diGBc)c(?zYR@~|-N_xvbFOH?PU!!y$<8#b907=-BDl=kBk zgI#xw2i;Q)cgkU&MHuZ9d#Q`0Ssd4Lt}(}BDK+{D)|fn9H~ZA-Cwc76#xjcwNDcs* zNWDPD^ng%MdCN&y#H_@7CN%e|UKS^o8_MSP%m6`S;cFv;Wbi?d$KdOf)b8IGn z6U;-DM`!42=u*We=0GHAu056nl5#B~FxTV$kNY;0 z++LpaSeD7m<9-rGECbGDDw2#jl(}Bk(z03#b7y5{Ma9!w>uc!qoZf{E)$ZHN6Dym| zb-IHBP#h3NxKm;FBR`qsXiI>2i17xVWag!e1u_f0kWod!G1M=gnKr_0jD!h9MChTQ zkHxIuZFAt~T6znS*$^PrewfFpR}&AwT7f{C$r3*zg@;xGbQ4AHUx-r0@=$u{z_98% zo261QuesB*B+%ZuKx<_wdgz5h`J;#~Qd+rH1qAP#JzPd11YAE0)|AUUicI?ux=CL+ z1brU$yznq-3*quzJT2=XD0)Ou1?D6Z5HS+5(8c4m|2}V-gOsHnU}11h_jK^hL(hP?mk8$SY~2iZ7SQBRVE z`qwJ;2v?s-JH@kCFg>q`y<3rsCjX^ZSH`Tu~!FZeSxw8zcAO)=xcxG zaWUZ${;9%8lE}ZOVpJ;ccR3aB^X3B$cgGC5H8wt zy^p2R5sU=cG=9_okwSV;e^{8~B`K9`D~7glJ!n%<;kl0GTO@Sf{5k(jnGOl4F48oA zex~@#^vL}TrS2{MC^!2}4_X!bfp8BvVvUnfs8;Kotxbtrhw=uG$0Hflq_9iBwIZxn zca}7Es#EQz<0bvbx|yale`8fwIkRSVkVpcVQ<^BuZXlxw=mJL+ldYeZ@=t-l$Hlt{ u2{cLwE1P<5=41OyqVChosd#qnH^kfH256Go>vI~ literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.doctree new file mode 100644 index 0000000000000000000000000000000000000000..89dce44d88fa44e010a0cad4c4a6b64ad0ac60fb GIT binary patch literal 15596 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 NfH1}knw-N{ literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c5ad8ba58d6f8dbcd4bba8bf94f093f913bc771d GIT binary patch literal 5197 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 W3sawLXhf&hd}sOjmhnd)&* zchg<%*oR$+#EL|!11OCa4#15A2Nn*TIPe#60EEPK;et590f`F|zgN}W)7_pK93nv^ zD^p*uUj5#Czk2oho3-!#;p&|FCpV&iJKjmhv~AC~S(M0S+qdEo^F;C_*?E|}m9%9e zG#^BM99k@qbC_Xq$F)P|CHE8Ar0K$OqfWYhDPopzd@oDkTu~5mlcNO zr>&9iS=hks1fg%SDDuNj-~`NdJl2Us$jlK7JFlldzTmj*l{a4faypWbV8~s3gPoAV z&noVnM4cEaUy}8}#2H1xH)X@fLE#Iso?>w*7fH$FFz%Uh#S|iRda(e8gxP{)M}*Ik z<(g51PW-NUIE(tVY{$X4(KD^1ko9RKmP^7M&``oR_*K5fuki)GEgyEdKVsdZQ`>bc z#=Cbze+ZnT?rXl~IY<8S>7MF35?!bob+wA!0rOaB3TAho3Fb~10f*}c7vdhDlQqY) z*-62O+P?fFI5&SD_PBw+oA|qhza7E=Foupgc^l|C-T*!zU(v>G@3h+gopP-a6Wq6V zp4sZWekc+%<{#yIW5^Hrbr=@MT|`(|XHMJ3NRvj4$br2?9G2YrJ5wCC4L=P{3l=eK zQ<(d$x5a4yKsujyEO9SueAYYN%}3C#s4Z&Na+owwCQ=iFe`B?KYs7_4FL`JTer;U)U$5g*=^m<4rxSzX|erQ zKBaZ*&K+1-h4vL$Q!A2j1l57%fp*^<%N#K+tbnSVZ|PvZLchvVzEYH8mi$c4KS<1? zvyl~Fr=8;-E6prUl8uv*yRXgzItxM;vGABBwDyZw`*Ip|KdA&=$Mr4K?E=zna0=J+ zKGFHui`~c(Y!A>JnFAJ$-TV$e#@kvR&JTLn6B41ChE1N^uk2|JOv9~ z2RvASwg10~<}}7K!pYSss&c)miXs$6Bt#&&2xTMUETf8cvn(M)z1m$y|HsqOm-F7) z(EK4_{($dYu+6Wh3+G>( z$Tf7JALXK(Q;=T^m}ev2jT7AU1=FRs=M}j~3o9r6{S0M_S8M|^ZGU7sULr39r?_*` zLH9x;7yRBZK@Nwu84j38hEV>Ew7C8y<%Rc+@@V1o8@d? z=1}8~5@im*I{T0ll^?!|Mddi2%E?1MdxME6W*eN#caLXpFwu9j4aV%eb_UJ~TvDD? z2J+EtH44^M?2(dkkym6*b7hHLZj7mRYF7W$v@`scGGIAn=Cf>lZeRV+6Tb_mPBZC3 zrl(WXkm14PMTJ{XuAhCbOt8$Nddrk8^2=wo$naf=D4Aoe^mck$x*z^x67B`pNCSWP z9;to?rUJINO?pkEoPb0rkt>wW;yTC6KPhF`vi_7;wm$L2>aze>c|UetoiTr)I-0#V zIoy6@~Va z=j-aoW4V_8q~gaZ5~~f*PY)2KU6d=`QI|axdbaf|d2IYbF$-_3v^KVvJtp_`6s&ue9Tm)6e9 zrWJ=&RWtG$+FI75YiV*hVnQHIMk#VLuPydNWqLc2^*2p7Mky(Og>4+lMq1|b!vqaf zNmwMzQGmv(-o}9JBQ#giW*oX`t&M{lH3vz{< zZr;SZot-$q3YD5T$|luh&1SuLfbE(O%+RAJg|-}e8dP0kbg1N!Y&u>L3xj!0s^F|<&Jg8 zR$nU*R2IvNbcP5(aX{qaOo?1~O>YpR$^yh~v@f6nEiZ-4@SBWgVf` z2W0{g$2L%*=sPC~ugj(x3*Q)b$qNpgYTb@Ufss2NfK?q1=qB_`mjrI89-!+*Wd3ni z5V6?y4HT3x>moY|{D>LFmC8#jVH`WC6e$doCR$)p98d2)--VaF_@opkKuB znsk~$ajDA3SLhcuLD`B*c(5=@vtja8RMPV%Ty&G73ZCN);E1j>azyf_x%dB3lg)qy z24G=`MpWIQJKm=OJRaIpc*qZOA%bYX+eLTO(eSyi7Bd3YcjKHiCf!46=;= zy_+w75{Nd#zEu%VJ!A1NWa6o)Nltr&D!;=-U+saw?-G?^vxYExh$9;%%!6gQ4X+#- zd4T2zNb8A@p4qT!slnH+?RFmxe6xzZ+-gtG~J!+|5&^cCW*L~fOO>Ec%1kk-!| zbqXqceRo7bBOxkzi>B3vO(Q+InpFGa2WCD@s&W0MdAjAhE|3PMxLB56O8cJxhj)_K5FW^#5NLokqN*`{9NNmcrPRHecPksN XI-cdmHu=ziR;}1Xe<@SwbgA=i7T%k2 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__.doctree new file mode 100644 index 0000000000000000000000000000000000000000..42021e9e7c30c0636957f2b1a9f37c899c356e46 GIT binary patch literal 7513 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.doctree new file mode 100644 index 0000000000000000000000000000000000000000..40525d3817d5b238dce586fbf7a724bccc4a3089 GIT binary patch literal 19273 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0c98619ba1779884013ffe210bcc36641d65b826 GIT binary patch literal 6301 zcmc&&TW=gm6}IDy?eS$CdpFTaeND zyeWByKRrM2@;mZ>bjkC z>N~eO=liW+{QR{A^QX6D%!BBp=lXsmd?qu!>I*NOut;T}WVb%Zo@RTxow!e=NE44` zdI38;9)y0vqUrEd`Ws(@j_QhOyav00WZkE+FmS!&gbisW)ho&!(Ne~@_*K5aukj^* zUH`bx#f0^br+yfCjQ78th%xjj`|k=b3Xa9&Y1d30t3E`PeJf&r#3GisiuwJQR3`w> z@$MxOnA|wHkPi5QZUvFgPAZ0DZHnO7U+{yF^Kz;6$~&l4ViGzkm}dq5J_0lU)= z3bUE<*}Jv7_hLftf*2S6txSL8#R!x}Jd-Bl%ZDm+Q+}KGW@$q|^h652l zy-DniCzvs-nMC_!67I{`r7*UNBa$VLSw>Lb1DCtG2mHR_0liRoZrBflK|h{C-_aL) zUwE@G1I4-^b?lCqoEd$;jA8vEhV=oDjbZV0pM1uIs$DVM{T~|5je|vFA8iAF6Z@Uh zR$qXB)>0jPcOLqyguaD-l~|ufoj>A71hF%Nn12^;ZROoD@*)62dx|At0H3cI&6i)y zD(&S8pD3wUDPM0=Hg<08o9w!@XJb(0R!$StPMtylXmh#_=J(DAQ!hrDTeVk0?I}>3 z8qL0HkRn0iH1bsHHgc?9+%H7HSDoum=W&fsbN#sFT1FMe`b|YQi@PPi-3Gtk%;Wdu zG{0Zv{NA_k4MdC1IqKMmS>z)uIVZ?t6@BK};EKLT2OHx2>3ngjc;lJFhQ64%L6qqW z@f0}(69|I{7fWI=&ddhoCL^XYyR^v=%oqDyyjd-g^BQ*E$jH$I`07&?;!BgNhoA4op&7wpB+H{ycGwKOg{BpdypF#y_B; zd74$mE0M6})HA)2e^RwHMdsRyM1BF8Pf;>@+r%ZR60h4=_)M}&?Sp4{Uch&Y$8Q&I zVjjQc#}EblSc<4yyh*!C&?1%Z#?&Y!SBTE-3KY}}qG#EMTa<)!ku@l6$p%^8wZ-N6 zVWTX-d6&*E>W-HtRH{2=VZKq!*aBUzN~RR9f zx-wBZaZZLJnPiyh5a_Yvi3v4(BuIY7&ajY~8Rto$xKp$hz%f6N_ZbfLM#5r|C?{l( zS(qJM&}-Zc%OOfWb`k(9g@RNTn_9Z%vq3rnyUr6giRdk7wTPKEm7t6+m3^c;K@_LT zVUZ{3#Rp$a)v)`Ou8Bie>x&Lc5|KFEjr@=$z?novh|*gkRdp&YLnYJK8Y>MF<3E$* zbS&MO48`fI^@YY^eTnWM0Tc&Bp(!{wLpK_ws1|{^k7wZpw9oV_3G+mPlAF=H7Hp_t zaj2K!fl6)sx0bJmowNQ1KcQ-E#aux`U7|l1sT#I0WzN4O~XT z1#Eo+tI4-H7(;h+CT zc@VSM0W1vOh?XH_M_~}d;vqe`hklJK70dm8AJejD>-L^VM*U1*rkzFv>~s{HKtalM z1X$d?`R12^XeSwZ4e~TIBmYK0o_Zx@w8v;s222eN4>*3Gt4RoEZRHN&N510O!K%In ztDHEcgO(S_i>qh)lAK1$J#lz2;vs&p;ESOks)hlLfhmPq`Sa7d- z9K|&HIEnQ*;A}v|>Ekp;fTw<~X~O1_;2G>kctJFT6%?Uihk^xORE>SXgv>V-uJuQ1 zN*-shn#llNBdMm)FK4KYp6SaTb{#tmwN&V!8H8R7wI)B(+j(;s<{A!dU_%bF6byNZ z(@QLROwCTcY6A>B8per?6~JATV=FLYO4|?;#-`AKh9UXX+I*Vno!TrVcQXxY!*Z}p zPKC}Xwy)5n{T}}eUO)aA|DiWEKu3e;w^cvyN2w7QdV7&8jvHxlJ#CO^`fb zVQ0u~i+xt^>WtloqzCO!1|lpC#B6=FFW(ia6O2; VF!jlXMs#Y;r|_3Y3j2)e{THOec#Hr5 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream.doctree b/docs/build/doctrees/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8afce5e23e9bf7b12812cfbb6e74b15e33b14883 GIT binary patch literal 7136 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 Ef4zsxVgLXD literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..68f64384215919da188327958e791795acb266c0 GIT binary patch literal 5198 zcmds5TaO$^6<&KiyEC&l?U34_&P0j`4?(dgBp}UAfCN0lU*H!YgoMNcPr!fR74e+Vx|qx zyrGQvO)tneGd%PLlWuv$-aEMrjZ z{g%qTfF&LaS!z5Zq;?`b94n2u;nBo1%A4RmUL=oYGP>yva^p$kX`%8c^qBD?jO2TM3KHuXdQHv%!D`#~B|wp3XRq_I1h# zYwa}SnrA1x$nC0OBU(|2uDC3gZO5;{Q(&}G!}G1aP%-ZxPr^tBT=c)5sUsLl_wTD9 zk;m#}(sQI^)5m(D67un0rcGflL^9#UK`S4?sH>W+tdglO(9Ox9u+!n8iWpVvb+&F|m#7nS( zxB_Ti#qSz^pTX~yhea-46@9SZEZN1bxN)%RF54y#QF#(Ju2kMuEJ6Pz^q-u2+D78C zZ8^OH1i(oqo#}TEZ7bJo#Eb72hqe<$vQ)ksUW5x#Xn@9>)HG8gf0WCRH>llM>Yy=R zW~qb_Zr5cJM0v<5ju51F#eMNWye+;dzAe7PZ98V;kf%lz2g^VwVg%XOcJ9I1aZJ4r z2#g{%C?4AtA;S=1?y=pdWKId~B##F?<6&{IWV;RsS|!m0yj=vj*?rxx-bD;Z`(F~* zoz^?B!WS1!Ww$Ct_f9jGraUXyqV?XIw;rs`r`EQ&PD=>(jOxLj2)Y3U-Cm_xmGyM5 z_8b>>A-_V1yGhG{~bg_HiF4SgIkodOLjfwxN9=<$5{O&L&vVj#KoP)L26yJ>%EGZ23DYf z-#=XgyY_;}l_68h8OspRz0|K6LAlwnrS%b#@u@gkM#ja0SQs#aYK7=ASi~fATEm zA3@>|XEukAh#yaZSJ^ODFbU#*Wy7D>^WrZKg}+`H|88NtjZjiaSg_3B&#;X6!*dzs zZ)aWbX-4_y^BYC{sd4(IDLxIw{q?NPo2DS?xZ=(0I6?FFIBJuarzXeU=QGJs3sTOy>rFJlOSZDb+oGb6T5V)b9OVxGb&B}ihgLY zbLDLo<;X_UXxvAsf-uZ8hPH+3mJrPedXYHAV6EH+nIt*Juv-oDEW&65>D;FRmu9hD zi%Nq@VRwdTC=z9OWAfmf-JpUKwS_+(sw^%*+0-bVQlIiMl_wB+wWRQfJBoiQjqvL- z8#`7Ds=6DO&v>dbWIBGrqvGJa?Ftr6hb_C!#}c|S%;dUeYS~uE2l)uwZBiJg+y%Lu z#h`SkNaJ)VME6aZq`C2V5>PN4p_0nYu=i$9OMJgPKk4%|TbNl8aTJhuZI*IpXQ)@dJU_9p*j}VNXedfRMUm?{HX@dca@42Lc!=b7 z9`&Dn0nMJuLLYS_@;J7kTK3Scpg|nsn$U<0eKadWIWEu{ZL-`be@3$BB|xq4LoifeTe~sxL?PdDHCg{MZM23Y)S_qS`p`x4)0nu&pDj+8r z0f>=|Q2=~(>0ke8+0B%vKGg;AMg#+#9feQ|#N+hj9`;khm{jlg`ylJRbYg@`_Ea|N z7xofyx+8$oM->JG8P^o@wD;<*H=xnYY#1zvC(2CxYqfZ|DI&NS8c-SgQwN=1z%TpK$M&M0;ALR!3po-Iey(j)1paj$Ti zsOkkbE{A@k0#^1U_F5oNF9tAu>2c7rQzBL$=PBwZdRB35MHLCqgMcEFAy80eZ_PB)}DScMF#sPe(y{{Ws-#B%@u literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/misc/domain_record.doctree b/docs/build/doctrees/misc/domain_record.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bcc3f768fb52003132e536e67d530bea319d64b2 GIT binary patch literal 10600 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 SjoIqaIIYx;A-=%H`20V;*Hym& literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/prog_guide/index.doctree b/docs/build/doctrees/prog_guide/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bd10a0c89982996c9a49bae13c7c5982693cba9a GIT binary patch literal 2834 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 C90W7~ literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/usage.doctree b/docs/build/doctrees/usage.doctree new file mode 100644 index 0000000000000000000000000000000000000000..18bf858648bcb4525f58ced9cc78270717c78792 GIT binary patch literal 9009 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 n!y@0XG({85i)FJp@`_. Thus the only method you need to implement is the `extract_soup` method. + + +Extraction +---------- + +- `extract_soup` method +It takes a BeautifulSoup object and crawl metadata (see :py:class:`cmoncrawl.common.types.PipeMetadata`) and must return +a dictionary of extracted data or None if the page should not be extacted, for example if you haven't found all the data you need. + +Additionaly, you might want to filter the pages you don't want to +extract. For this, you have two options: + +Filtering +--------- + +- `filter_raw` method +This method take the raw HTML and crawl metadata and must return True if the page should be extracted or False otherwise. If you can +decide based on raw HTML, this is the most efficient way to filter pages, as now soup parsing will be done. + +- `filter_soup` method +This method take the BeautifulSoup object and crawl metadata and must return True if the page should be extracted or False otherwise. + + +Finally your file must create the said extractor and name it `extractor`. + +You can also set `NAME` variable to a string that will be used to name the extractor, otherwise the name of file without extension will be used. + +Example +------- + +Here is an example of an extractor that will extract the title of the page. + +.. code-block:: python + :caption: ext.py + + + from cmoncrawl.processor.pipeline.extractor import BaseExtractor + from cmoncrawl.common.types import PipeMetadata + + class TitleExtractor(BaseExtractor): + def extract_soup(self, soup: BeautifulSoup, metadata: PipeMetadata) -> dict: + return {'title': soup.title.text} + + def filter_soup(self, soup: BeautifulSoup, metadata: PipeMetadata) -> bool: + return soup.title is not None + + extractor = TitleExtractor() + NAME='title' + + +Now in :ref:`config_file` you would refer to this extractor as `title`. +If you would't set the `NAME` variable, you would refer to it as `ext`. \ No newline at end of file diff --git a/docs/build/html/_sources/extraction/index.rst.txt b/docs/build/html/_sources/extraction/index.rst.txt new file mode 100644 index 00000000..f8433c41 --- /dev/null +++ b/docs/build/html/_sources/extraction/index.rst.txt @@ -0,0 +1,10 @@ +Extraction +================= + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + creating_extractor + config_file + utils diff --git a/docs/build/html/_sources/extraction/utils.rst.txt b/docs/build/html/_sources/extraction/utils.rst.txt new file mode 100644 index 00000000..c2da4958 --- /dev/null +++ b/docs/build/html/_sources/extraction/utils.rst.txt @@ -0,0 +1,27 @@ +Extraction utils +================ + +The utilies for extraction are defined :py:mod:`cmoncrawl.processor.extraction`. +It provides helper function for both filtering and extraction. + + +Filtering +--------- + +- `must_exist_filter``: filter out the ulrs that don't contain css selector + +- `must_not_exist_filter`: filter out the ulrs that contain css selector + + +Extraction +---------- + +-- `check_required`: Creates a function that checks if all the required fileds + are present in the extracted data + +-- `chain_transform`: Creates a function that chains multiple transformation function, + if any return None, the chain is broken and None is returned. + Especially usefull with soup select etc... + +-- `extract_transform`: Creates a function that extracts the data from the soup + tag using the css selector and transforms it using your transformation functions. \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.__init__.rst.txt new file mode 100644 index 00000000..fef313d9 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.aggregator.index\_query.IndexAggregator.\_\_init\_\_ +============================================================== + +.. currentmodule:: cmoncrawl.aggregator.index_query + +.. automethod:: IndexAggregator.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aclose.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aclose.rst.txt new file mode 100644 index 00000000..500caa67 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aclose.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.aggregator.index\_query.IndexAggregator.aclose +======================================================== + +.. currentmodule:: cmoncrawl.aggregator.index_query + +.. automethod:: IndexAggregator.aclose \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aopen.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aopen.rst.txt new file mode 100644 index 00000000..d35a21f7 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aopen.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.aggregator.index\_query.IndexAggregator.aopen +======================================================= + +.. currentmodule:: cmoncrawl.aggregator.index_query + +.. automethod:: IndexAggregator.aopen \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes.rst.txt new file mode 100644 index 00000000..ed93fe5c --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.aggregator.index\_query.IndexAggregator.get\_all\_CC\_indexes +======================================================================= + +.. currentmodule:: cmoncrawl.aggregator.index_query + +.. automethod:: IndexAggregator.get_all_CC_indexes \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses.rst.txt new file mode 100644 index 00000000..e886f5e9 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.aggregator.index\_query.IndexAggregator.get\_captured\_responses +========================================================================== + +.. currentmodule:: cmoncrawl.aggregator.index_query + +.. automethod:: IndexAggregator.get_captured_responses \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages.rst.txt new file mode 100644 index 00000000..cd979bfc --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.aggregator.index\_query.IndexAggregator.get\_number\_of\_pages +======================================================================== + +.. currentmodule:: cmoncrawl.aggregator.index_query + +.. automethod:: IndexAggregator.get_number_of_pages \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.rst.txt new file mode 100644 index 00000000..e6608354 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.IndexAggregator.rst.txt @@ -0,0 +1,29 @@ +cmoncrawl.aggregator.index\_query.IndexAggregator +================================================= + +.. currentmodule:: cmoncrawl.aggregator.index_query + +.. autoclass:: IndexAggregator + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~IndexAggregator.__init__ + ~IndexAggregator.aclose + ~IndexAggregator.aopen + ~IndexAggregator.get_all_CC_indexes + ~IndexAggregator.get_captured_responses + ~IndexAggregator.get_number_of_pages + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.rst.txt new file mode 100644 index 00000000..bd80f902 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.index_query.rst.txt @@ -0,0 +1,38 @@ +cmoncrawl.aggregator.index\_query +================================= + +.. automodule:: cmoncrawl.aggregator.index_query + + + + + + + + .. rubric:: Functions + + .. autosummary:: + + crawl_to_year + timestamp_to_datetime + to_timestamp_format + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + + IndexAggregator + + + + + + + + + diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.rst.txt new file mode 100644 index 00000000..f75b27e4 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.rst.txt @@ -0,0 +1,32 @@ +cmoncrawl.aggregator +==================== + +.. automodule:: cmoncrawl.aggregator + + + + + + + + + + + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + cmoncrawl.aggregator.index_query + cmoncrawl.aggregator.utils + diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.helpers.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.helpers.rst.txt new file mode 100644 index 00000000..a926057b --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.helpers.rst.txt @@ -0,0 +1,29 @@ +cmoncrawl.aggregator.utils.helpers +================================== + +.. automodule:: cmoncrawl.aggregator.utils.helpers + + + + + + + + .. rubric:: Functions + + .. autosummary:: + + unify_url_id + + + + + + + + + + + + + diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__.rst.txt new file mode 100644 index 00000000..660d6336 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.aggregator.utils.ndjson\_decoder.Decoder.\_\_init\_\_ +=============================================================== + +.. currentmodule:: cmoncrawl.aggregator.utils.ndjson_decoder + +.. automethod:: Decoder.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode.rst.txt new file mode 100644 index 00000000..6f80324f --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.aggregator.utils.ndjson\_decoder.Decoder.decode +========================================================= + +.. currentmodule:: cmoncrawl.aggregator.utils.ndjson_decoder + +.. automethod:: Decoder.decode \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode.rst.txt new file mode 100644 index 00000000..c5843517 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.aggregator.utils.ndjson\_decoder.Decoder.raw\_decode +============================================================== + +.. currentmodule:: cmoncrawl.aggregator.utils.ndjson_decoder + +.. automethod:: Decoder.raw_decode \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.rst.txt new file mode 100644 index 00000000..73bef32f --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.rst.txt @@ -0,0 +1,26 @@ +cmoncrawl.aggregator.utils.ndjson\_decoder.Decoder +================================================== + +.. currentmodule:: cmoncrawl.aggregator.utils.ndjson_decoder + +.. autoclass:: Decoder + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~Decoder.__init__ + ~Decoder.decode + ~Decoder.raw_decode + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.rst.txt new file mode 100644 index 00000000..99cdf4d3 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.ndjson_decoder.rst.txt @@ -0,0 +1,30 @@ +cmoncrawl.aggregator.utils.ndjson\_decoder +========================================== + +.. automodule:: cmoncrawl.aggregator.utils.ndjson_decoder + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + + Decoder + + + + + + + + + diff --git a/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.rst.txt new file mode 100644 index 00000000..188fe2ab --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.aggregator.utils.rst.txt @@ -0,0 +1,32 @@ +cmoncrawl.aggregator.utils +========================== + +.. automodule:: cmoncrawl.aggregator.utils + + + + + + + + + + + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + cmoncrawl.aggregator.utils.helpers + cmoncrawl.aggregator.utils.ndjson_decoder + diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.loggers.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.loggers.rst.txt new file mode 100644 index 00000000..f9b33e8b --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.loggers.rst.txt @@ -0,0 +1,23 @@ +cmoncrawl.common.loggers +======================== + +.. automodule:: cmoncrawl.common.loggers + + + + + + + + + + + + + + + + + + + diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.rst.txt new file mode 100644 index 00000000..ed3ea823 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.rst.txt @@ -0,0 +1,32 @@ +cmoncrawl.common +================ + +.. automodule:: cmoncrawl.common + + + + + + + + + + + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + cmoncrawl.common.loggers + cmoncrawl.common.types + diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainCrawl.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainCrawl.__init__.rst.txt new file mode 100644 index 00000000..3d395776 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainCrawl.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.DomainCrawl.\_\_init\_\_ +=============================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: DomainCrawl.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainCrawl.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainCrawl.rst.txt new file mode 100644 index 00000000..7d12fe6e --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainCrawl.rst.txt @@ -0,0 +1,32 @@ +cmoncrawl.common.types.DomainCrawl +================================== + +.. currentmodule:: cmoncrawl.common.types + +.. autoclass:: DomainCrawl + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~DomainCrawl.__init__ + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~DomainCrawl.cdx_server + ~DomainCrawl.domain + ~DomainCrawl.page + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.__init__.rst.txt new file mode 100644 index 00000000..7b0cb880 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.DomainRecord.\_\_init\_\_ +================================================ + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: DomainRecord.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.from_dict.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.from_dict.rst.txt new file mode 100644 index 00000000..babcac7b --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.from_dict.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.DomainRecord.from\_dict +============================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: DomainRecord.from_dict \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.from_json.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.from_json.rst.txt new file mode 100644 index 00000000..f9e138fd --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.from_json.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.DomainRecord.from\_json +============================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: DomainRecord.from_json \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.rst.txt new file mode 100644 index 00000000..c716a379 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.rst.txt @@ -0,0 +1,41 @@ +cmoncrawl.common.types.DomainRecord +=================================== + +.. currentmodule:: cmoncrawl.common.types + +.. autoclass:: DomainRecord + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~DomainRecord.__init__ + ~DomainRecord.from_dict + ~DomainRecord.from_json + ~DomainRecord.schema + ~DomainRecord.to_dict + ~DomainRecord.to_json + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~DomainRecord.digest + ~DomainRecord.encoding + ~DomainRecord.timestamp + ~DomainRecord.filename + ~DomainRecord.url + ~DomainRecord.offset + ~DomainRecord.length + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.schema.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.schema.rst.txt new file mode 100644 index 00000000..c5324724 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.schema.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.DomainRecord.schema +========================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: DomainRecord.schema \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.to_dict.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.to_dict.rst.txt new file mode 100644 index 00000000..a62d5832 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.to_dict.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.DomainRecord.to\_dict +============================================ + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: DomainRecord.to_dict \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.to_json.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.to_json.rst.txt new file mode 100644 index 00000000..b8145369 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.DomainRecord.to_json.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.DomainRecord.to\_json +============================================ + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: DomainRecord.to_json \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.__init__.rst.txt new file mode 100644 index 00000000..884d54af --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.ExtractConfig.\_\_init\_\_ +================================================= + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: ExtractConfig.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.from_dict.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.from_dict.rst.txt new file mode 100644 index 00000000..d15d8405 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.from_dict.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.ExtractConfig.from\_dict +=============================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: ExtractConfig.from_dict \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.from_json.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.from_json.rst.txt new file mode 100644 index 00000000..4b572184 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.from_json.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.ExtractConfig.from\_json +=============================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: ExtractConfig.from_json \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.rst.txt new file mode 100644 index 00000000..746e9cd0 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.rst.txt @@ -0,0 +1,36 @@ +cmoncrawl.common.types.ExtractConfig +==================================== + +.. currentmodule:: cmoncrawl.common.types + +.. autoclass:: ExtractConfig + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~ExtractConfig.__init__ + ~ExtractConfig.from_dict + ~ExtractConfig.from_json + ~ExtractConfig.schema + ~ExtractConfig.to_dict + ~ExtractConfig.to_json + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~ExtractConfig.extractors_path + ~ExtractConfig.routes + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.schema.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.schema.rst.txt new file mode 100644 index 00000000..9630421b --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.schema.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.ExtractConfig.schema +=========================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: ExtractConfig.schema \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.to_dict.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.to_dict.rst.txt new file mode 100644 index 00000000..9bcdda95 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.to_dict.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.ExtractConfig.to\_dict +============================================= + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: ExtractConfig.to_dict \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.to_json.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.to_json.rst.txt new file mode 100644 index 00000000..ee8a1af3 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractConfig.to_json.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.ExtractConfig.to\_json +============================================= + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: ExtractConfig.to_json \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.__init__.rst.txt new file mode 100644 index 00000000..7b9199db --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.ExtractorConfig.\_\_init\_\_ +=================================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: ExtractorConfig.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.from_dict.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.from_dict.rst.txt new file mode 100644 index 00000000..2c6447a3 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.from_dict.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.ExtractorConfig.from\_dict +================================================= + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: ExtractorConfig.from_dict \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.from_json.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.from_json.rst.txt new file mode 100644 index 00000000..79a5ed37 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.from_json.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.ExtractorConfig.from\_json +================================================= + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: ExtractorConfig.from_json \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.rst.txt new file mode 100644 index 00000000..fee3b756 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.rst.txt @@ -0,0 +1,37 @@ +cmoncrawl.common.types.ExtractorConfig +====================================== + +.. currentmodule:: cmoncrawl.common.types + +.. autoclass:: ExtractorConfig + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~ExtractorConfig.__init__ + ~ExtractorConfig.from_dict + ~ExtractorConfig.from_json + ~ExtractorConfig.schema + ~ExtractorConfig.to_dict + ~ExtractorConfig.to_json + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~ExtractorConfig.since + ~ExtractorConfig.to + ~ExtractorConfig.name + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.schema.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.schema.rst.txt new file mode 100644 index 00000000..3fd498b5 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.schema.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.ExtractorConfig.schema +============================================= + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: ExtractorConfig.schema \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.to_dict.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.to_dict.rst.txt new file mode 100644 index 00000000..6f1ddfc3 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.to_dict.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.ExtractorConfig.to\_dict +=============================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: ExtractorConfig.to_dict \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.to_json.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.to_json.rst.txt new file mode 100644 index 00000000..c15c9367 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.ExtractorConfig.to_json.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.ExtractorConfig.to\_json +=============================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: ExtractorConfig.to_json \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.PipeMetadata.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.PipeMetadata.__init__.rst.txt new file mode 100644 index 00000000..1baf163f --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.PipeMetadata.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.PipeMetadata.\_\_init\_\_ +================================================ + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: PipeMetadata.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.PipeMetadata.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.PipeMetadata.rst.txt new file mode 100644 index 00000000..a149bd8b --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.PipeMetadata.rst.txt @@ -0,0 +1,35 @@ +cmoncrawl.common.types.PipeMetadata +=================================== + +.. currentmodule:: cmoncrawl.common.types + +.. autoclass:: PipeMetadata + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~PipeMetadata.__init__ + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~PipeMetadata.encoding + ~PipeMetadata.name + ~PipeMetadata.domain_record + ~PipeMetadata.article_data + ~PipeMetadata.warc_header + ~PipeMetadata.http_header + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.RetrieveResponse.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.RetrieveResponse.__init__.rst.txt new file mode 100644 index 00000000..3c2a0b2a --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.RetrieveResponse.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.RetrieveResponse.\_\_init\_\_ +==================================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: RetrieveResponse.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.RetrieveResponse.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.RetrieveResponse.rst.txt new file mode 100644 index 00000000..3490394c --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.RetrieveResponse.rst.txt @@ -0,0 +1,32 @@ +cmoncrawl.common.types.RetrieveResponse +======================================= + +.. currentmodule:: cmoncrawl.common.types + +.. autoclass:: RetrieveResponse + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~RetrieveResponse.__init__ + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~RetrieveResponse.status + ~RetrieveResponse.content + ~RetrieveResponse.reason + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.__init__.rst.txt new file mode 100644 index 00000000..98ab4e92 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.RoutesConfig.\_\_init\_\_ +================================================ + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: RoutesConfig.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.from_dict.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.from_dict.rst.txt new file mode 100644 index 00000000..4eb46230 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.from_dict.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.RoutesConfig.from\_dict +============================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: RoutesConfig.from_dict \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.from_json.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.from_json.rst.txt new file mode 100644 index 00000000..fa7e30f7 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.from_json.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.RoutesConfig.from\_json +============================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: RoutesConfig.from_json \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.rst.txt new file mode 100644 index 00000000..469ef051 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.rst.txt @@ -0,0 +1,36 @@ +cmoncrawl.common.types.RoutesConfig +=================================== + +.. currentmodule:: cmoncrawl.common.types + +.. autoclass:: RoutesConfig + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~RoutesConfig.__init__ + ~RoutesConfig.from_dict + ~RoutesConfig.from_json + ~RoutesConfig.schema + ~RoutesConfig.to_dict + ~RoutesConfig.to_json + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~RoutesConfig.regexes + ~RoutesConfig.extractors + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.schema.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.schema.rst.txt new file mode 100644 index 00000000..89b78084 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.schema.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.RoutesConfig.schema +========================================== + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: RoutesConfig.schema \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.to_dict.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.to_dict.rst.txt new file mode 100644 index 00000000..5a7c5d86 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.to_dict.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.RoutesConfig.to\_dict +============================================ + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: RoutesConfig.to_dict \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.to_json.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.to_json.rst.txt new file mode 100644 index 00000000..8edfaa4a --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.RoutesConfig.to_json.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.common.types.RoutesConfig.to\_json +============================================ + +.. currentmodule:: cmoncrawl.common.types + +.. automethod:: RoutesConfig.to_json \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.common.types.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.common.types.rst.txt new file mode 100644 index 00000000..34d4ec45 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.common.types.rst.txt @@ -0,0 +1,36 @@ +cmoncrawl.common.types +====================== + +.. automodule:: cmoncrawl.common.types + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + + DomainCrawl + DomainRecord + ExtractConfig + ExtractorConfig + PipeMetadata + RetrieveResponse + RoutesConfig + + + + + + + + + diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.extraction.filters.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.extraction.filters.rst.txt new file mode 100644 index 00000000..bafedb50 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.extraction.filters.rst.txt @@ -0,0 +1,30 @@ +cmoncrawl.processor.extraction.filters +====================================== + +.. automodule:: cmoncrawl.processor.extraction.filters + + + + + + + + .. rubric:: Functions + + .. autosummary:: + + must_exist_filter + must_not_exist_filter + + + + + + + + + + + + + diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.extraction.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.extraction.rst.txt new file mode 100644 index 00000000..13d6f460 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.extraction.rst.txt @@ -0,0 +1,32 @@ +cmoncrawl.processor.extraction +============================== + +.. automodule:: cmoncrawl.processor.extraction + + + + + + + + + + + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + cmoncrawl.processor.extraction.filters + cmoncrawl.processor.extraction.utils + diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.extraction.utils.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.extraction.utils.rst.txt new file mode 100644 index 00000000..0721a0fc --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.extraction.utils.rst.txt @@ -0,0 +1,39 @@ +cmoncrawl.processor.extraction.utils +==================================== + +.. automodule:: cmoncrawl.processor.extraction.utils + + + + + + + + .. rubric:: Functions + + .. autosummary:: + + all_same_transform + chain_transforms + check_required + combine_dicts + extract_transform + get_attribute_transform + get_tag_transform + get_tags_transform + get_text_list_transform + get_text_transform + transform + + + + + + + + + + + + + diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__.rst.txt new file mode 100644 index 00000000..74c95fac --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.downloader.AsyncDownloader.\_\_init\_\_ +==================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. automethod:: AsyncDownloader.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose.rst.txt new file mode 100644 index 00000000..7857c0b2 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose +============================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. automethod:: AsyncDownloader.aclose \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen.rst.txt new file mode 100644 index 00000000..a072cff1 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen +============================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. automethod:: AsyncDownloader.aopen \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download.rst.txt new file mode 100644 index 00000000..eb8d3c19 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download +================================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. automethod:: AsyncDownloader.download \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.rst.txt new file mode 100644 index 00000000..29f8a93e --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.rst.txt @@ -0,0 +1,28 @@ +cmoncrawl.processor.pipeline.downloader.AsyncDownloader +======================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. autoclass:: AsyncDownloader + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~AsyncDownloader.__init__ + ~AsyncDownloader.aclose + ~AsyncDownloader.aopen + ~AsyncDownloader.download + ~AsyncDownloader.unwrap + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap.rst.txt new file mode 100644 index 00000000..5fccb74b --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap +============================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. automethod:: AsyncDownloader.unwrap \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__.rst.txt new file mode 100644 index 00000000..1614225f --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.downloader.DownloaderDummy.\_\_init\_\_ +==================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. automethod:: DownloaderDummy.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download.rst.txt new file mode 100644 index 00000000..a8211da2 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download +================================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. automethod:: DownloaderDummy.download \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url.rst.txt new file mode 100644 index 00000000..5ca483c1 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract\_url +==================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. automethod:: DownloaderDummy.extract_url \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year.rst.txt new file mode 100644 index 00000000..efde13c8 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract\_year +===================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. automethod:: DownloaderDummy.extract_year \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata.rst.txt new file mode 100644 index 00000000..d0d9d412 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine\_metadata +====================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. automethod:: DownloaderDummy.mine_metadata \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.rst.txt new file mode 100644 index 00000000..7d6d8b53 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.rst.txt @@ -0,0 +1,28 @@ +cmoncrawl.processor.pipeline.downloader.DownloaderDummy +======================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. autoclass:: DownloaderDummy + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~DownloaderDummy.__init__ + ~DownloaderDummy.download + ~DownloaderDummy.extract_url + ~DownloaderDummy.extract_year + ~DownloaderDummy.mine_metadata + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.__init__.rst.txt new file mode 100644 index 00000000..c54ca5f2 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.downloader.IDownloader.\_\_init\_\_ +================================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. automethod:: IDownloader.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.download.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.download.rst.txt new file mode 100644 index 00000000..b51358fd --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.download.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.downloader.IDownloader.download +============================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. automethod:: IDownloader.download \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.rst.txt new file mode 100644 index 00000000..60365b33 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.rst.txt @@ -0,0 +1,25 @@ +cmoncrawl.processor.pipeline.downloader.IDownloader +=================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.downloader + +.. autoclass:: IDownloader + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~IDownloader.__init__ + ~IDownloader.download + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.rst.txt new file mode 100644 index 00000000..92888008 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.downloader.rst.txt @@ -0,0 +1,32 @@ +cmoncrawl.processor.pipeline.downloader +======================================= + +.. automodule:: cmoncrawl.processor.pipeline.downloader + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + + AsyncDownloader + DownloaderDummy + IDownloader + + + + + + + + + diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__.rst.txt new file mode 100644 index 00000000..47418743 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.BaseExtractor.\_\_init\_\_ +================================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: BaseExtractor.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract.rst.txt new file mode 100644 index 00000000..56770b48 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract +============================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: BaseExtractor.extract \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup.rst.txt new file mode 100644 index 00000000..d1a6cf81 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract\_soup +================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: BaseExtractor.extract_soup \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw.rst.txt new file mode 100644 index 00000000..a464396d --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter\_raw +================================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: BaseExtractor.filter_raw \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup.rst.txt new file mode 100644 index 00000000..3af53452 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter\_soup +================================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: BaseExtractor.filter_soup \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess.rst.txt new file mode 100644 index 00000000..96742773 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess +=============================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: BaseExtractor.preprocess \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.rst.txt new file mode 100644 index 00000000..21a5a383 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.rst.txt @@ -0,0 +1,29 @@ +cmoncrawl.processor.pipeline.extractor.BaseExtractor +==================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. autoclass:: BaseExtractor + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~BaseExtractor.__init__ + ~BaseExtractor.extract + ~BaseExtractor.extract_soup + ~BaseExtractor.filter_raw + ~BaseExtractor.filter_soup + ~BaseExtractor.preprocess + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__.rst.txt new file mode 100644 index 00000000..ece52598 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.\_\_init\_\_ +========================================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: DomainRecordExtractor.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract.rst.txt new file mode 100644 index 00000000..a1635d3a --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract +==================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: DomainRecordExtractor.extract \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup.rst.txt new file mode 100644 index 00000000..03e84cba --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract\_soup +========================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: DomainRecordExtractor.extract_soup \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw.rst.txt new file mode 100644 index 00000000..9cdfc179 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter\_raw +======================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: DomainRecordExtractor.filter_raw \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup.rst.txt new file mode 100644 index 00000000..721088f8 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter\_soup +========================================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: DomainRecordExtractor.filter_soup \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess.rst.txt new file mode 100644 index 00000000..3395ec7a --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess +======================================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: DomainRecordExtractor.preprocess \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.rst.txt new file mode 100644 index 00000000..084fb0e6 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.rst.txt @@ -0,0 +1,29 @@ +cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor +============================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. autoclass:: DomainRecordExtractor + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~DomainRecordExtractor.__init__ + ~DomainRecordExtractor.extract + ~DomainRecordExtractor.extract_soup + ~DomainRecordExtractor.filter_raw + ~DomainRecordExtractor.filter_soup + ~DomainRecordExtractor.preprocess + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__.rst.txt new file mode 100644 index 00000000..c01d3a21 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.HTMLExtractor.\_\_init\_\_ +================================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: HTMLExtractor.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract.rst.txt new file mode 100644 index 00000000..aa5e348e --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract +============================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: HTMLExtractor.extract \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup.rst.txt new file mode 100644 index 00000000..a53d56d9 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract\_soup +================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: HTMLExtractor.extract_soup \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw.rst.txt new file mode 100644 index 00000000..f23fdc81 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter\_raw +================================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: HTMLExtractor.filter_raw \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup.rst.txt new file mode 100644 index 00000000..de34dc0d --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter\_soup +================================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: HTMLExtractor.filter_soup \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess.rst.txt new file mode 100644 index 00000000..b299dfef --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess +=============================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: HTMLExtractor.preprocess \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.rst.txt new file mode 100644 index 00000000..ad49d45e --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.rst.txt @@ -0,0 +1,29 @@ +cmoncrawl.processor.pipeline.extractor.HTMLExtractor +==================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. autoclass:: HTMLExtractor + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~HTMLExtractor.__init__ + ~HTMLExtractor.extract + ~HTMLExtractor.extract_soup + ~HTMLExtractor.filter_raw + ~HTMLExtractor.filter_soup + ~HTMLExtractor.preprocess + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.__init__.rst.txt new file mode 100644 index 00000000..68ed1849 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.IExtractor.\_\_init\_\_ +============================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: IExtractor.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.extract.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.extract.rst.txt new file mode 100644 index 00000000..0ca6ad15 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.extract.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.extractor.IExtractor.extract +========================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. automethod:: IExtractor.extract \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.rst.txt new file mode 100644 index 00000000..e7e5baea --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.rst.txt @@ -0,0 +1,25 @@ +cmoncrawl.processor.pipeline.extractor.IExtractor +================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.extractor + +.. autoclass:: IExtractor + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~IExtractor.__init__ + ~IExtractor.extract + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.rst.txt new file mode 100644 index 00000000..d3ab5ec5 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.extractor.rst.txt @@ -0,0 +1,33 @@ +cmoncrawl.processor.pipeline.extractor +====================================== + +.. automodule:: cmoncrawl.processor.pipeline.extractor + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + + BaseExtractor + DomainRecordExtractor + HTMLExtractor + IExtractor + + + + + + + + + diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__.rst.txt new file mode 100644 index 00000000..c1d04a21 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.\_\_init\_\_ +==================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.pipeline + +.. automethod:: ProcessorPipeline.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record.rst.txt new file mode 100644 index 00000000..eea84086 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process\_domain\_record +=============================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.pipeline + +.. automethod:: ProcessorPipeline.process_domain_record \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.rst.txt new file mode 100644 index 00000000..08da1666 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.rst.txt @@ -0,0 +1,25 @@ +cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline +======================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.pipeline + +.. autoclass:: ProcessorPipeline + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~ProcessorPipeline.__init__ + ~ProcessorPipeline.process_domain_record + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.rst.txt new file mode 100644 index 00000000..23610bb7 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.pipeline.rst.txt @@ -0,0 +1,30 @@ +cmoncrawl.processor.pipeline.pipeline +===================================== + +.. automodule:: cmoncrawl.processor.pipeline.pipeline + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + + ProcessorPipeline + + + + + + + + + diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.IRouter.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.IRouter.__init__.rst.txt new file mode 100644 index 00000000..79eb6403 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.IRouter.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.router.IRouter.\_\_init\_\_ +======================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. automethod:: IRouter.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.IRouter.route.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.IRouter.route.rst.txt new file mode 100644 index 00000000..0a302bcf --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.IRouter.route.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.router.IRouter.route +================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. automethod:: IRouter.route \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.IRouter.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.IRouter.rst.txt new file mode 100644 index 00000000..ea253024 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.IRouter.rst.txt @@ -0,0 +1,25 @@ +cmoncrawl.processor.pipeline.router.IRouter +=========================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. autoclass:: IRouter + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~IRouter.__init__ + ~IRouter.route + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Route.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Route.__init__.rst.txt new file mode 100644 index 00000000..e49ea007 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Route.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.router.Route.\_\_init\_\_ +====================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. automethod:: Route.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Route.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Route.rst.txt new file mode 100644 index 00000000..4832a6d3 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Route.rst.txt @@ -0,0 +1,33 @@ +cmoncrawl.processor.pipeline.router.Route +========================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. autoclass:: Route + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~Route.__init__ + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~Route.name + ~Route.regexes + ~Route.since + ~Route.to + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.__init__.rst.txt new file mode 100644 index 00000000..2a8815c0 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.router.Router.\_\_init\_\_ +======================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. automethod:: Router.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_extractor.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_extractor.rst.txt new file mode 100644 index 00000000..1dbf9b43 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_extractor.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.router.Router.load\_extractor +========================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. automethod:: Router.load_extractor \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_module.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_module.rst.txt new file mode 100644 index 00000000..af6aded6 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_module.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.router.Router.load\_module +======================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. automethod:: Router.load_module \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor.rst.txt new file mode 100644 index 00000000..1961de15 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.router.Router.load\_module\_as\_extractor +====================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. automethod:: Router.load_module_as_extractor \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_modules.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_modules.rst.txt new file mode 100644 index 00000000..3a34c754 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.load_modules.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.router.Router.load\_modules +======================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. automethod:: Router.load_modules \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.register_route.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.register_route.rst.txt new file mode 100644 index 00000000..4855973d --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.register_route.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.router.Router.register\_route +========================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. automethod:: Router.register_route \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.register_routes.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.register_routes.rst.txt new file mode 100644 index 00000000..0fefdef6 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.register_routes.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.router.Router.register\_routes +=========================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. automethod:: Router.register_routes \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.route.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.route.rst.txt new file mode 100644 index 00000000..c77f7de7 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.route.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.router.Router.route +================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. automethod:: Router.route \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.rst.txt new file mode 100644 index 00000000..a7d2ce61 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.Router.rst.txt @@ -0,0 +1,31 @@ +cmoncrawl.processor.pipeline.router.Router +========================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.router + +.. autoclass:: Router + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~Router.__init__ + ~Router.load_extractor + ~Router.load_module + ~Router.load_module_as_extractor + ~Router.load_modules + ~Router.register_route + ~Router.register_routes + ~Router.route + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.rst.txt new file mode 100644 index 00000000..5173e5d6 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.router.rst.txt @@ -0,0 +1,32 @@ +cmoncrawl.processor.pipeline.router +=================================== + +.. automodule:: cmoncrawl.processor.pipeline.router + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + + IRouter + Route + Router + + + + + + + + + diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.rst.txt new file mode 100644 index 00000000..111dae15 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.rst.txt @@ -0,0 +1,35 @@ +cmoncrawl.processor.pipeline +============================ + +.. automodule:: cmoncrawl.processor.pipeline + + + + + + + + + + + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + cmoncrawl.processor.pipeline.downloader + cmoncrawl.processor.pipeline.extractor + cmoncrawl.processor.pipeline.pipeline + cmoncrawl.processor.pipeline.router + cmoncrawl.processor.pipeline.streamer + diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__.rst.txt new file mode 100644 index 00000000..ffe80a2b --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.\_\_init\_\_ +=================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: BaseStreamerFile.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up.rst.txt new file mode 100644 index 00000000..e0c5ceab --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean\_up +================================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: BaseStreamerFile.clean_up \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name.rst.txt new file mode 100644 index 00000000..41e207bf --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get\_file\_name +====================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: BaseStreamerFile.get_file_name \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string.rst.txt new file mode 100644 index 00000000..08aa014f --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata\_to\_string +=========================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: BaseStreamerFile.metadata_to_string \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.rst.txt new file mode 100644 index 00000000..edf88fbe --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.rst.txt @@ -0,0 +1,28 @@ +cmoncrawl.processor.pipeline.streamer.BaseStreamerFile +====================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. autoclass:: BaseStreamerFile + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~BaseStreamerFile.__init__ + ~BaseStreamerFile.clean_up + ~BaseStreamerFile.get_file_name + ~BaseStreamerFile.metadata_to_string + ~BaseStreamerFile.stream + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream.rst.txt new file mode 100644 index 00000000..3437ec8b --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream +============================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: BaseStreamerFile.stream \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.__init__.rst.txt new file mode 100644 index 00000000..608fd805 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.IStreamer.\_\_init\_\_ +============================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: IStreamer.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up.rst.txt new file mode 100644 index 00000000..eb3b4f84 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.IStreamer.clean\_up +========================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: IStreamer.clean_up \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.rst.txt new file mode 100644 index 00000000..940c44bb --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.rst.txt @@ -0,0 +1,26 @@ +cmoncrawl.processor.pipeline.streamer.IStreamer +=============================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. autoclass:: IStreamer + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~IStreamer.__init__ + ~IStreamer.clean_up + ~IStreamer.stream + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.stream.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.stream.rst.txt new file mode 100644 index 00000000..8e92a607 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.stream.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.IStreamer.stream +====================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: IStreamer.stream \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__.rst.txt new file mode 100644 index 00000000..c492eafb --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.StreamerDummy.\_\_init\_\_ +================================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: StreamerDummy.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up.rst.txt new file mode 100644 index 00000000..605100d9 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean\_up +============================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: StreamerDummy.clean_up \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.rst.txt new file mode 100644 index 00000000..f9cd0096 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.rst.txt @@ -0,0 +1,26 @@ +cmoncrawl.processor.pipeline.streamer.StreamerDummy +=================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. autoclass:: StreamerDummy + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~StreamerDummy.__init__ + ~StreamerDummy.clean_up + ~StreamerDummy.stream + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream.rst.txt new file mode 100644 index 00000000..cc087d17 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream +========================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: StreamerDummy.stream \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__.rst.txt new file mode 100644 index 00000000..04a17fa5 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.\_\_init\_\_ +=================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: StreamerFileHTML.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up.rst.txt new file mode 100644 index 00000000..cfe541f1 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean\_up +================================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: StreamerFileHTML.clean_up \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name.rst.txt new file mode 100644 index 00000000..d0d8c8ca --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get\_file\_name +====================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: StreamerFileHTML.get_file_name \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string.rst.txt new file mode 100644 index 00000000..012ff877 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata\_to\_string +=========================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: StreamerFileHTML.metadata_to_string \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.rst.txt new file mode 100644 index 00000000..0ee71247 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.rst.txt @@ -0,0 +1,28 @@ +cmoncrawl.processor.pipeline.streamer.StreamerFileHTML +====================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. autoclass:: StreamerFileHTML + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~StreamerFileHTML.__init__ + ~StreamerFileHTML.clean_up + ~StreamerFileHTML.get_file_name + ~StreamerFileHTML.metadata_to_string + ~StreamerFileHTML.stream + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream.rst.txt new file mode 100644 index 00000000..54e24ca6 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream +============================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: StreamerFileHTML.stream \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__.rst.txt new file mode 100644 index 00000000..8de761e3 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.\_\_init\_\_ +=================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: StreamerFileJSON.__init__ \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up.rst.txt new file mode 100644 index 00000000..0fbc6c87 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean\_up +================================================================ + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: StreamerFileJSON.clean_up \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name.rst.txt new file mode 100644 index 00000000..5cbf1241 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get\_file\_name +====================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: StreamerFileJSON.get_file_name \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string.rst.txt new file mode 100644 index 00000000..ca270ae3 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata\_to\_string +=========================================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: StreamerFileJSON.metadata_to_string \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.rst.txt new file mode 100644 index 00000000..0070cfa4 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.rst.txt @@ -0,0 +1,28 @@ +cmoncrawl.processor.pipeline.streamer.StreamerFileJSON +====================================================== + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. autoclass:: StreamerFileJSON + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + :toctree: + + + ~StreamerFileJSON.__init__ + ~StreamerFileJSON.clean_up + ~StreamerFileJSON.get_file_name + ~StreamerFileJSON.metadata_to_string + ~StreamerFileJSON.stream + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream.rst.txt new file mode 100644 index 00000000..d91edea2 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream.rst.txt @@ -0,0 +1,6 @@ +cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream +============================================================= + +.. currentmodule:: cmoncrawl.processor.pipeline.streamer + +.. automethod:: StreamerFileJSON.stream \ No newline at end of file diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.rst.txt new file mode 100644 index 00000000..e8ae0a22 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.pipeline.streamer.rst.txt @@ -0,0 +1,34 @@ +cmoncrawl.processor.pipeline.streamer +===================================== + +.. automodule:: cmoncrawl.processor.pipeline.streamer + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + + BaseStreamerFile + IStreamer + StreamerDummy + StreamerFileHTML + StreamerFileJSON + + + + + + + + + diff --git a/docs/build/html/_sources/generated/cmoncrawl.processor.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.processor.rst.txt new file mode 100644 index 00000000..e8d23eca --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.processor.rst.txt @@ -0,0 +1,32 @@ +cmoncrawl.processor +=================== + +.. automodule:: cmoncrawl.processor + + + + + + + + + + + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + cmoncrawl.processor.extraction + cmoncrawl.processor.pipeline + diff --git a/docs/build/html/_sources/generated/cmoncrawl.rst.txt b/docs/build/html/_sources/generated/cmoncrawl.rst.txt new file mode 100644 index 00000000..642a90d3 --- /dev/null +++ b/docs/build/html/_sources/generated/cmoncrawl.rst.txt @@ -0,0 +1,33 @@ +cmoncrawl +========= + +.. automodule:: cmoncrawl + + + + + + + + + + + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + cmoncrawl.aggregator + cmoncrawl.common + cmoncrawl.processor + diff --git a/docs/build/html/_sources/index.rst.txt b/docs/build/html/_sources/index.rst.txt new file mode 100644 index 00000000..ff1fa92a --- /dev/null +++ b/docs/build/html/_sources/index.rst.txt @@ -0,0 +1,27 @@ +.. CommonCrawl Extractor documentation master file, created by + sphinx-quickstart on Tue Nov 8 17:40:35 2022. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to CommonCrawl Extractor's documentation! +================================================= + +.. toctree:: + :maxdepth: 3 + :caption: Contents: + + usage + cli/index + extraction/index + prog_guide/index + misc/index + api + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/build/html/_sources/misc/domain_record.rst.txt b/docs/build/html/_sources/misc/domain_record.rst.txt new file mode 100644 index 00000000..201c4d60 --- /dev/null +++ b/docs/build/html/_sources/misc/domain_record.rst.txt @@ -0,0 +1,56 @@ +.. _domain_record: + +Domain Record +============= + +By domain record we refer to a strucuture that cotains the information +about how to download a crawl of an url. It contains the following + +* **url**: the url to crawl +* **filename**: the warc filename +* **offset**: the offset in the warc file +* **length**: the length of the html crawl +* **digest** [optional]: the digest of the html crawl +* **encoding** [optional]: the encoding of the html crawl +* **timestamp** [optional]: the timestamp of the crawl + + +.. _domain_record_jsonl: + +Domain Record JSONL format +========================== + +In order to use your own domain records with extract mode of cli, +you must format them into follwoing json format + +.. code-block:: json + + { + "domain_record": + { + "url": "http://example.com", + "filename": "crawl.warc.gz", + "offset": 123, + "length": 456, + "digest: "sha1:1234567890abcdef", + "encoding": "utf-8", + "timestamp": "2018-01-01T00:00:00Z" + }, + "additional_info": + { + "key1": "value1", + "key2": "value2" + } + } + +Each such json must be on a separate line in a file. +You don't have to provide all the fields, only ```url``, ```filename```, +```offset``` and ```length``` are required. +The Athena SQL keys are: +```u.url, cc.warc_filename, cc.warc_record_offset, cc.warc_record_length, cc.content_digest, cc.fetch_time``` + + + +The ```additional_info``` field is optional and can contain any additional +information. It will be added to extracted fields as is. It's usefull +when you for example want to add to which set the url belongs to. \ No newline at end of file diff --git a/docs/build/html/_sources/misc/index.rst.txt b/docs/build/html/_sources/misc/index.rst.txt new file mode 100644 index 00000000..849aa3cc --- /dev/null +++ b/docs/build/html/_sources/misc/index.rst.txt @@ -0,0 +1,8 @@ +Miscellaneous +================= + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + domain_record diff --git a/docs/build/html/_sources/prog_guide/index.rst.txt b/docs/build/html/_sources/prog_guide/index.rst.txt new file mode 100644 index 00000000..b1dde9e7 --- /dev/null +++ b/docs/build/html/_sources/prog_guide/index.rst.txt @@ -0,0 +1,9 @@ +Programming Guide +================= + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + overview + pip diff --git a/docs/build/html/_sources/prog_guide/overview.rst.txt b/docs/build/html/_sources/prog_guide/overview.rst.txt new file mode 100644 index 00000000..0c1ce10d --- /dev/null +++ b/docs/build/html/_sources/prog_guide/overview.rst.txt @@ -0,0 +1,101 @@ +Programming Guide +========================== + +This section provides a brief overview of the project. It should give you +and idea of how to create your custom extraction pipeline. + +.. note: + You probably don't need to read this if you just want to use the utility. + This is for people who want to create their own extraction pipeline. + + +How to extract from Common Crawl (theory) +========================================= + +The process of getting one parsed web page from CommonCrawl can be described as a pipeline. + +1. Query CommmonCrawl to find a link to a file that contains the web page we want. +2. Download a file +3. Choose parser for the web page +4. Filter out the web page if not matching the conditions +5. Extract fields from the page +6. Save the fields to a file + + + +The first step is handled by `Aggregator` while the rest is handled by `Processor`. + +======================= +1. Querying CommonCrawl +======================= +what WARC File how + `WARC `_ is a file format that is used for storing multitudes of web resources. + In our case these files contain a bunch of downloaded web pages and their metadata. + It's possible to get only part of the file by specifying the offset in file and length of the part we want. +what + Common Crawl Index +how + A CommonCrawl index is a collection which maps crawled urls to WARC file which contain the crawl of that url. + +Every month a CommonCrawl releases a new index which contains all links to web pages that were crawled that month. + +.. warning:: + It is important to understand that even if the index was released in a certain month, it can contain the links to web pages that might be older. + +Thus in order to download an page we query the index to get link to respective WARC file, offset and length of page. +Since there are multiples of the indexes we should query all of them to make sure we don't miss the page. +With the link to the WARC and offset and length we can continue to another step. + +All this is handled by :py:class:`cmoncrawl.aggregator.index_query.IndexAggregator`. But for basic use you will not need to use it directly. + + +===================== +2. Downloading a file +===================== +The Processor node than downloads the url and related information from queue and downloads the appropriate WARC file. +This step is handled by :py:mod:`cmoncrawl.processor.pipeline.downloader.AsyncDownloader`. +It simply downloads and extracts the page from the WARC file. + + +=================== +3. Choose extractor +=================== +Once the page is downloaded we first need to choose a extractor for it. +Extractors are dynamically loaded based on definitions in :ref:`extractor_config`. +All loaded processors are then matched against the url and crawl date and first matching is used. +This functionality is handled by :py:class:`cmoncrawl.processor.pipeline.router.Router`. + +For development of extractors refer to :ref:`extractors`. + + +============================= +4. Filtering out the web page +============================= + +Once the extractor is chosen the filtering function is used to either drop or pass a page. +In order to filter your you can use either :py:meth:`cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw` for +filtering based on raw html pages (fast). Or wait for conversion to soup and then filter using +:py:meth:`cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup` (slow). + +=============================== +5. Extract fields from the page +=============================== + +The extracting function defined by the extractor is used to extract the fields from the page. +Just extract the values and return them in dict. + + +============== +6. File saving +============== +With the field extracted we need to save them to a file. +By default the fields are saved in json file. +The way the file is saved is defined by streamers. +All of the currently implemented streamers are derived from :py:class:`cmoncrawl.processor.pipeline.streamer.BaseStreamerFile`. +Which defined how are the files saved, but the content parsing is left to the derived classes. + +Currently we support 2 streamers, one for json (:py:class:`cmoncrawl.processor.pipeline.streamer.StreamerFileJSON`) and one for html (:py:class:`cmoncrawl.processor.pipeline.streamer.StreamerFileHTML`). +The json one creates a json per line output, and outputs all extracted data. +The html one creates a html file (assuming the html is defined in extracted data['html']). + +If you would like different format you can create your own saver by inheriting from :py:class:`cmoncrawl.processor.pipeline.streamer.IStreamer` and then changing pipeline creation with your new outstreamer. \ No newline at end of file diff --git a/docs/build/html/_sources/prog_guide/pip.rst.txt b/docs/build/html/_sources/prog_guide/pip.rst.txt new file mode 100644 index 00000000..a4d0bf1e --- /dev/null +++ b/docs/build/html/_sources/prog_guide/pip.rst.txt @@ -0,0 +1,56 @@ +.. _custom_pipeline: + +Custom Pipeline +=============== + + + +Pipeline +-------- + +The pipeline then all but querying together. +To create a pipeline simply initialize :py:class:`cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline` with Downloader, Router and Streamer. +You can then call it's :py:meth:`cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record` method with the query and it will run the whole pipeline for single domain record. + + +.. note:: + The exceptions are not handled by the pipeline and are passed to the caller, to handle them as you wish. + +Putting it all together +----------------------- + +We now show how to create very simple custom pipeline that will download and extract +data into json programmatically. + + +.. code-block:: python + :caption: Using the lib in code + + from cmoncrawl.processor.pipeline.pipeline import ProcessorPipeline + from cmoncrawl.processor.pipeline.downloader import AsyncDownloader + from cmoncrawl.processor.pipeline.router import Router + from cmoncrawl.processor.pipeline.streamer import StreamerFileJSON + from cmoncrawl.common.loggers import all_purpose_logger + from cmoncrawl.common.types import MatchType + from commoncrawl.integrations.middleware.synchronized import query_and_extract + from pathlib import Path + + downloader = AsyncDownloader() + + your_custom_extractor = YourCustomExtractor() + router = Router() + router.load_extractor("ext", your_custom_extractor) + router.register_route("ext", ".*bbc.com.*") + streamer = StreamerFileJSON(Path("extracted")) + pipeline = ProcessorPipeline(downloader, router, streamer) + + index_agg = IndexAggregator( + domains=["bbc.com"], + match_type=MatchType.DOMAIN, + limit=1000, + ) + + processed_urls = await query_and_extract(index_agg, pipeline) + +The code will try to extract first 1000 pages from bbc.com, which will +be extracted using YourCustomExtractor and save the results to json files. \ No newline at end of file diff --git a/docs/build/html/_sources/usage.rst.txt b/docs/build/html/_sources/usage.rst.txt new file mode 100644 index 00000000..1eb21a03 --- /dev/null +++ b/docs/build/html/_sources/usage.rst.txt @@ -0,0 +1,35 @@ +Usage +===== + +The library is designed to make interaction with CommonCrawl's indexes simple, +while also providing a framework for extracting data from the downloaded +HTMLs. + +You can use the library in two ways: + +1. :ref:`cli` - This should suffice for 99% of the use cases. +2. :ref:`custom_pipeline` - If you need more control over the process, you can use the library programmatically. + + + +Workflow +-------- + +The workflow is two-step: + +1. First download domain records (see :ref:`domain_record`) from the indexes. +2. Extract the domain records. + +.. note:: + This will further allow you to share the domain records with others, + so that you will not run into author law issues. + +.. note:: + First step can be skipped by using AWS Athena, which is under + current cirmustances (CommonCrawl api is completely throttled, slow and dropping most of requests), + the prefered way. See `How to get records from AWS Athena `_. + It's also super cheap. + + +To create your custom extractors you likely want to download HTMLs not domain records. +Both download to HTML and extraction from HTML is also supported in parallel to the domain record workflow. \ No newline at end of file diff --git a/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js b/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 00000000..8549469d --- /dev/null +++ b/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,134 @@ +/* + * _sphinx_javascript_frameworks_compat.js + * ~~~~~~~~~~ + * + * Compatability shim for jQuery and underscores.js. + * + * WILL BE REMOVED IN Sphinx 6.0 + * xref RemovedInSphinx60Warning + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/docs/build/html/_static/basic.css b/docs/build/html/_static/basic.css new file mode 100644 index 00000000..c5dde73d --- /dev/null +++ b/docs/build/html/_static/basic.css @@ -0,0 +1,899 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 270px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} +a.brackets:before, +span.brackets > a:before{ + content: "["; +} + +a.brackets:after, +span.brackets > a:after { + content: "]"; +} + + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} +dl.footnote > dt, +dl.citation > dt { + float: left; + margin-right: 0.5em; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} +dl.field-list > dt:after { + content: ":"; +} + + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/docs/build/html/_static/check-solid.svg b/docs/build/html/_static/check-solid.svg new file mode 100644 index 00000000..92fad4b5 --- /dev/null +++ b/docs/build/html/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/docs/build/html/_static/clipboard.min.js b/docs/build/html/_static/clipboard.min.js new file mode 100644 index 00000000..54b3c463 --- /dev/null +++ b/docs/build/html/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/docs/build/html/_static/copybutton.css b/docs/build/html/_static/copybutton.css new file mode 100644 index 00000000..40eafe5f --- /dev/null +++ b/docs/build/html/_static/copybutton.css @@ -0,0 +1,93 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +.highlight:hover button.copybtn { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/docs/build/html/_static/copybutton.js b/docs/build/html/_static/copybutton.js new file mode 100644 index 00000000..40ac3310 --- /dev/null +++ b/docs/build/html/_static/copybutton.js @@ -0,0 +1,220 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copié dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for two seconds, then changes it back +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + setTimeout(() => el.setAttribute('data-tooltip', oldText), 2000) + setTimeout(() => el.classList.remove('success'), 2000) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, 2000) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const codeCells = document.querySelectorAll('div.highlight pre') + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + return formatCopyText(target.innerText, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/docs/build/html/_static/copybutton_funcs.js b/docs/build/html/_static/copybutton_funcs.js new file mode 100644 index 00000000..b9168c55 --- /dev/null +++ b/docs/build/html/_static/copybutton_funcs.js @@ -0,0 +1,58 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/docs/build/html/_static/doctools.js b/docs/build/html/_static/doctools.js new file mode 100644 index 00000000..527b876c --- /dev/null +++ b/docs/build/html/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/docs/build/html/_static/documentation_options.js b/docs/build/html/_static/documentation_options.js new file mode 100644 index 00000000..d0469114 --- /dev/null +++ b/docs/build/html/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '1.0.0', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: true, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/docs/build/html/_static/file.png b/docs/build/html/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/images/logo_binder.svg b/docs/build/html/_static/images/logo_binder.svg new file mode 100644 index 00000000..45fecf75 --- /dev/null +++ b/docs/build/html/_static/images/logo_binder.svg @@ -0,0 +1,19 @@ + + + + +logo + + + + + + + + diff --git a/docs/build/html/_static/images/logo_colab.png b/docs/build/html/_static/images/logo_colab.png new file mode 100644 index 0000000000000000000000000000000000000000..b7560ec216b2d1b6f77855525fe966c741833428 GIT binary patch literal 7601 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 diff --git a/docs/build/html/_static/images/logo_jupyterhub.svg b/docs/build/html/_static/images/logo_jupyterhub.svg new file mode 100644 index 00000000..60cfe9f2 --- /dev/null +++ b/docs/build/html/_static/images/logo_jupyterhub.svg @@ -0,0 +1 @@ +logo_jupyterhubHub diff --git a/docs/build/html/_static/jquery-3.6.0.js b/docs/build/html/_static/jquery-3.6.0.js new file mode 100644 index 00000000..fc6c299b --- /dev/null +++ b/docs/build/html/_static/jquery-3.6.0.js @@ -0,0 +1,10881 @@ +/*! + * jQuery JavaScript Library v3.6.0 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2021-03-02T17:08Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.6.0", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.6 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2021-02-16 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); + } : + function( a, b ) { + if ( b ) { + while ( ( b = b.parentNode ) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( ( cur = cur.parentNode ) ) { + ap.unshift( cur ); + } + cur = b; + while ( ( cur = cur.parentNode ) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[ i ] === bp[ i ] ) { + i++; + } + + return i ? + + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[ i ], bp[ i ] ) : + + // Otherwise nodes in our document sort first + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + /* eslint-disable max-len */ + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + /* eslint-enable max-len */ + + }; + }, + + "CHILD": function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + "not": markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element (issue #299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + "has": markFunction( function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + } ), + + "contains": markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); + }, + + "selected": function( elem ) { + + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos[ "empty" ]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo( function() { + return [ 0 ]; + } ), + + "last": createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + "even": createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "odd": createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rcombinators.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert( function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + } ); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert( function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + } ); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; + } + } ); +} + +return Sizzle; + +} )( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +} +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the primary Deferred + primary = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + primary.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( primary.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return primary.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); + } + + return primary.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + + // Support: Chrome 86+ + // In Chrome, if an element having a focusout handler is blurred by + // clicking outside of it, it invokes the handler synchronously. If + // that handler calls `.remove()` on the element, the data is cleared, + // leaving `result` undefined. We need to guard against this. + return result && result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + which: true +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + // Suppress native focus or blur as it's already being fired + // in leverageNative. + _default: function() { + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. + tr.style.height = "1px"; + trChild.style.height = "9px"; + + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is display: block + // gets around this issue. + trChild.style.display = "block"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + + parseInt( trStyle.borderTopWidth, 10 ) + + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml, parserErrorElem; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) {} + + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( !xml || parserErrorElem ) { + jQuery.error( "Invalid XML: " + ( + parserErrorElem ? + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) : + data + ) ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ).filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ).map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + +originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script but not if jsonp + if ( !isSuccess && + jQuery.inArray( "script", s.dataTypes ) > -1 && + jQuery.inArray( "json", s.dataTypes ) < 0 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " +{% endmacro %} diff --git a/docs/build/html/_static/scripts/pydata-sphinx-theme.js b/docs/build/html/_static/scripts/pydata-sphinx-theme.js new file mode 100644 index 00000000..0e00c4ca --- /dev/null +++ b/docs/build/html/_static/scripts/pydata-sphinx-theme.js @@ -0,0 +1,32 @@ +!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=2)}([function(t,e){t.exports=jQuery},function(t,e,n){"use strict";n.r(e),function(t){ +/**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.16.1 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +var n="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator,i=function(){for(var t=["Edge","Trident","Firefox"],e=0;e=0)return 1;return 0}();var o=n&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),i))}};function r(t){return t&&"[object Function]"==={}.toString.call(t)}function a(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function s(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function l(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=a(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:l(s(t))}function u(t){return t&&t.referenceNode?t.referenceNode:t}var f=n&&!(!window.MSInputMethodContext||!document.documentMode),d=n&&/MSIE 10/.test(navigator.userAgent);function c(t){return 11===t?f:10===t?d:f||d}function h(t){if(!t)return document.documentElement;for(var e=c(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===a(n,"position")?h(n):n:t?t.ownerDocument.documentElement:document.documentElement}function p(t){return null!==t.parentNode?p(t.parentNode):t}function m(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(s=(a=l).nodeName)||"HTML"!==s&&h(a.firstElementChild)!==a?h(l):l;var u=p(t);return u.host?m(u.host,e):m(t,p(e).host)}function g(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===e?"scrollTop":"scrollLeft",i=t.nodeName;if("BODY"===i||"HTML"===i){var o=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||o;return r[n]}return t[n]}function v(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=g(e,"top"),o=g(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}function _(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+i+"Width"])}function b(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],c(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function y(t){var e=t.body,n=t.documentElement,i=c(10)&&getComputedStyle(n);return{height:b("Height",e,n,i),width:b("Width",e,n,i)}}var w=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},E=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=c(10),o="HTML"===e.nodeName,r=N(t),s=N(e),u=l(t),f=a(e),d=parseFloat(f.borderTopWidth),h=parseFloat(f.borderLeftWidth);n&&o&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var p=S({top:r.top-s.top-d,left:r.left-s.left-h,width:r.width,height:r.height});if(p.marginTop=0,p.marginLeft=0,!i&&o){var m=parseFloat(f.marginTop),g=parseFloat(f.marginLeft);p.top-=d-m,p.bottom-=d-m,p.left-=h-g,p.right-=h-g,p.marginTop=m,p.marginLeft=g}return(i&&!n?e.contains(u):e===u&&"BODY"!==u.nodeName)&&(p=v(p,e)),p}function k(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=D(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:g(n),s=e?0:g(n,"left"),l={top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:r};return S(l)}function A(t){var e=t.nodeName;if("BODY"===e||"HTML"===e)return!1;if("fixed"===a(t,"position"))return!0;var n=s(t);return!!n&&A(n)}function I(t){if(!t||!t.parentElement||c())return document.documentElement;for(var e=t.parentElement;e&&"none"===a(e,"transform");)e=e.parentElement;return e||document.documentElement}function O(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=o?I(t):m(t,u(e));if("viewport"===i)r=k(a,o);else{var f=void 0;"scrollParent"===i?"BODY"===(f=l(s(e))).nodeName&&(f=t.ownerDocument.documentElement):f="window"===i?t.ownerDocument.documentElement:i;var d=D(f,a,o);if("HTML"!==f.nodeName||A(a))r=d;else{var c=y(t.ownerDocument),h=c.height,p=c.width;r.top+=d.top-d.marginTop,r.bottom=h+d.top,r.left+=d.left-d.marginLeft,r.right=p+d.left}}var g="number"==typeof(n=n||0);return r.left+=g?n:n.left||0,r.top+=g?n:n.top||0,r.right-=g?n:n.right||0,r.bottom-=g?n:n.bottom||0,r}function x(t){return t.width*t.height}function j(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=O(n,i,r,o),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},l=Object.keys(s).map((function(t){return C({key:t},s[t],{area:x(s[t])})})).sort((function(t,e){return e.area-t.area})),u=l.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),f=u.length>0?u[0].key:l[0].key,d=t.split("-")[1];return f+(d?"-"+d:"")}function L(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=i?I(e):m(e,u(n));return D(n,o,i)}function P(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function F(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function R(t,e,n){n=n.split("-")[0];var i=P(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[F(s)],o}function M(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function B(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===n}));var i=M(t,(function(t){return t[e]===n}));return t.indexOf(i)}(t,"name",n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&r(n)&&(e.offsets.popper=S(e.offsets.popper),e.offsets.reference=S(e.offsets.reference),e=n(e,t))})),e}function H(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=L(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=j(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=R(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=B(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function q(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function Q(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=Z.indexOf(t),i=Z.slice(n+1).concat(Z.slice(0,n));return e?i.reverse():i}var et="flip",nt="clockwise",it="counterclockwise";function ot(t,e,n,i){var o=[0,0],r=-1!==["right","left"].indexOf(i),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(M(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return(u=u.map((function(t,i){var o=(1===i?!r:r)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],a=o[2];if(!r)return t;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return S(s)[e]/100*r}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r}return r}(t,o,e,n)}))}))).forEach((function(t,e){t.forEach((function(n,i){K(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))}))})),o}var rt={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,a=o.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",u=s?"width":"height",f={start:T({},l,r[l]),end:T({},l,r[l]+r[u]-a[u])};t.offsets.popper=C({},a,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,a=o.reference,s=i.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:ot(n,r,a,s),"left"===s?(r.top+=l[0],r.left-=l[1]):"right"===s?(r.top+=l[0],r.left+=l[1]):"top"===s?(r.left+=l[0],r.top-=l[1]):"bottom"===s&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||h(t.instance.popper);t.instance.reference===n&&(n=h(n));var i=Q("transform"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[i];o.top="",o.left="",o[i]="";var l=O(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=a,o[i]=s,e.boundaries=l;var u=e.priority,f=t.offsets.popper,d={primary:function(t){var n=f[t];return f[t]l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-("right"===t?f.width:f.height))),T({},n,i)}};return u.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=C({},f,d[e](t))})),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!G(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,l=r.reference,u=-1!==["left","right"].indexOf(o),f=u?"height":"width",d=u?"Top":"Left",c=d.toLowerCase(),h=u?"left":"top",p=u?"bottom":"right",m=P(i)[f];l[p]-ms[p]&&(t.offsets.popper[c]+=l[c]+m-s[p]),t.offsets.popper=S(t.offsets.popper);var g=l[c]+l[f]/2-m/2,v=a(t.instance.popper),_=parseFloat(v["margin"+d]),b=parseFloat(v["border"+d+"Width"]),y=g-t.offsets.popper[c]-_-b;return y=Math.max(Math.min(s[f]-m,y),0),t.arrowElement=i,t.offsets.arrow=(T(n={},c,Math.round(y)),T(n,h,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(q(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=O(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=F(i),r=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case et:a=[i,o];break;case nt:a=tt(i);break;case it:a=tt(i,!0);break;default:a=e.behavior}return a.forEach((function(s,l){if(i!==s||a.length===l+1)return t;i=t.placement.split("-")[0],o=F(i);var u=t.offsets.popper,f=t.offsets.reference,d=Math.floor,c="left"===i&&d(u.right)>d(f.left)||"right"===i&&d(u.left)d(f.top)||"bottom"===i&&d(u.top)d(n.right),m=d(u.top)d(n.bottom),v="left"===i&&h||"right"===i&&p||"top"===i&&m||"bottom"===i&&g,_=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(_&&"start"===r&&h||_&&"end"===r&&p||!_&&"start"===r&&m||!_&&"end"===r&&g),y=!!e.flipVariationsByContent&&(_&&"start"===r&&p||_&&"end"===r&&h||!_&&"start"===r&&g||!_&&"end"===r&&m),w=b||y;(c||v||w)&&(t.flipped=!0,(c||v)&&(i=a[l+1]),w&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=i+(r?"-"+r:""),t.offsets.popper=C({},t.offsets.popper,R(t.instance.popper,t.offsets.reference,t.placement)),t=B(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=r[n]-(s?o[a?"width":"height"]:0),t.placement=F(e),t.offsets.popper=S(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!G(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=M(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};w(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=o(this.update.bind(this)),this.options=C({},t.Defaults,a),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(C({},t.Defaults.modifiers,a.modifiers)).forEach((function(e){i.options.modifiers[e]=C({},t.Defaults.modifiers[e]||{},a.modifiers?a.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return C({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&r(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var s=this.options.eventsEnabled;s&&this.enableEventListeners(),this.state.eventsEnabled=s}return E(t,[{key:"update",value:function(){return H.call(this)}},{key:"destroy",value:function(){return W.call(this)}},{key:"enableEventListeners",value:function(){return Y.call(this)}},{key:"disableEventListeners",value:function(){return z.call(this)}}]),t}();at.Utils=("undefined"!=typeof window?window:t).PopperUtils,at.placements=J,at.Defaults=rt,e.default=at}.call(this,n(4))},function(t,e,n){t.exports=n(5)},function(t,e,n){ +/*! + * Bootstrap v4.6.1 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e,n){"use strict";function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var o=i(e),r=i(n);function a(t,e){for(var n=0;n=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};d.jQueryDetection(),o.default.fn.emulateTransitionEnd=f,o.default.event.special[d.TRANSITION_END]={bindType:"transitionend",delegateType:"transitionend",handle:function(t){if(o.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var c=o.default.fn.alert,h=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.default.removeData(this._element,"bs.alert"),this._element=null},e._getRootElement=function(t){var e=d.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=o.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=o.default.Event("close.bs.alert");return o.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(o.default(t).removeClass("show"),o.default(t).hasClass("fade")){var n=d.getTransitionDurationFromElement(t);o.default(t).one(d.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){o.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.alert");i||(i=new t(this),n.data("bs.alert",i)),"close"===e&&i[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',h._handleDismiss(new h)),o.default.fn.alert=h._jQueryInterface,o.default.fn.alert.Constructor=h,o.default.fn.alert.noConflict=function(){return o.default.fn.alert=c,h._jQueryInterface};var p=o.default.fn.button,m=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=o.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var i=this._element.querySelector('input:not([type="hidden"])');if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains("active"))t=!1;else{var r=n.querySelector(".active");r&&o.default(r).removeClass("active")}t&&("checkbox"!==i.type&&"radio"!==i.type||(i.checked=!this._element.classList.contains("active")),this.shouldAvoidTriggerChange||o.default(i).trigger("change")),i.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains("active")),t&&o.default(this._element).toggleClass("active"))},e.dispose=function(){o.default.removeData(this._element,"bs.button"),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this),r=i.data("bs.button");r||(r=new t(this),i.data("bs.button",r)),r.shouldAvoidTriggerChange=n,"toggle"===e&&r[e]()}))},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=t.target,n=e;if(o.default(e).hasClass("btn")||(e=o.default(e).closest(".btn")[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var i=e.querySelector('input:not([type="hidden"])');if(i&&(i.hasAttribute("disabled")||i.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||m._jQueryInterface.call(o.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=o.default(t.target).closest(".btn")[0];o.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),o.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide("next")},e.nextWhenVisible=function(){var t=o.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide("prev")},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(d.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(".active.carousel-item");var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)o.default(this._element).one("slid.bs.carousel",(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?"next":"prev";this._slide(i,this._items[t])}},e.dispose=function(){o.default(this._element).off(v),o.default.removeData(this._element,"bs.carousel"),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=l({},b,t),d.typeCheckConfig(g,t,y),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&o.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&o.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&w[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&w[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};o.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(o.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(o.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),o.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n="next"===t,i="prev"===t,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+("prev"===t?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(".active.carousel-item")),r=o.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:n});return o.default(this._element).trigger(r),r},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));o.default(e).removeClass("active");var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&o.default(n).addClass("active")}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(".active.carousel-item");if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,i,r,a=this,s=this._element.querySelector(".active.carousel-item"),l=this._getItemIndex(s),u=e||s&&this._getItemByDirection(t,s),f=this._getItemIndex(u),c=Boolean(this._interval);if("next"===t?(n="carousel-item-left",i="carousel-item-next",r="left"):(n="carousel-item-right",i="carousel-item-prev",r="right"),u&&o.default(u).hasClass("active"))this._isSliding=!1;else if(!this._triggerSlideEvent(u,r).isDefaultPrevented()&&s&&u){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(u),this._activeElement=u;var h=o.default.Event("slid.bs.carousel",{relatedTarget:u,direction:r,from:l,to:f});if(o.default(this._element).hasClass("slide")){o.default(u).addClass(i),d.reflow(u),o.default(s).addClass(n),o.default(u).addClass(n);var p=d.getTransitionDurationFromElement(s);o.default(s).one(d.TRANSITION_END,(function(){o.default(u).removeClass(n+" "+i).addClass("active"),o.default(s).removeClass("active "+i+" "+n),a._isSliding=!1,setTimeout((function(){return o.default(a._element).trigger(h)}),0)})).emulateTransitionEnd(p)}else o.default(s).removeClass("active"),o.default(u).addClass("active"),this._isSliding=!1,o.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data("bs.carousel"),i=l({},b,o.default(this).data());"object"==typeof e&&(i=l({},i,e));var r="string"==typeof e?e:i.slide;if(n||(n=new t(this,i),o.default(this).data("bs.carousel",n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if(void 0===n[r])throw new TypeError('No method named "'+r+'"');n[r]()}else i.interval&&i.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=d.getSelectorFromElement(this);if(n){var i=o.default(n)[0];if(i&&o.default(i).hasClass("carousel")){var r=l({},o.default(i).data(),o.default(this).data()),a=this.getAttribute("data-slide-to");a&&(r.interval=!1),t._jQueryInterface.call(o.default(i),r),a&&o.default(i).data("bs.carousel").to(a),e.preventDefault()}}},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return b}}]),t}();o.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",E._dataApiClickHandler),o.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e0&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){o.default(this._element).hasClass("show")?this.hide():this.show()},e.show=function(){var e,n,i=this;if(!(this._isTransitioning||o.default(this._element).hasClass("show")||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof i._config.parent?t.getAttribute("data-parent")===i._config.parent:t.classList.contains("collapse")}))).length&&(e=null),e&&(n=o.default(e).not(this._selector).data("bs.collapse"))&&n._isTransitioning))){var r=o.default.Event("show.bs.collapse");if(o.default(this._element).trigger(r),!r.isDefaultPrevented()){e&&(t._jQueryInterface.call(o.default(e).not(this._selector),"hide"),n||o.default(e).data("bs.collapse",null));var a=this._getDimension();o.default(this._element).removeClass("collapse").addClass("collapsing"),this._element.style[a]=0,this._triggerArray.length&&o.default(this._triggerArray).removeClass("collapsed").attr("aria-expanded",!0),this.setTransitioning(!0);var s="scroll"+(a[0].toUpperCase()+a.slice(1)),l=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){o.default(i._element).removeClass("collapsing").addClass("collapse show"),i._element.style[a]="",i.setTransitioning(!1),o.default(i._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(l),this._element.style[a]=this._element[s]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&o.default(this._element).hasClass("show")){var e=o.default.Event("hide.bs.collapse");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",d.reflow(this._element),o.default(this._element).addClass("collapsing").removeClass("collapse show");var i=this._triggerArray.length;if(i>0)for(var r=0;r0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),l({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data("bs.dropdown");if(n||(n=new t(this,"object"==typeof e?e:null),o.default(this).data("bs.dropdown",n)),"string"==typeof e){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll('[data-toggle="dropdown"]')),i=0,r=n.length;i0&&a--,40===e.which&&adocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var i=d.getTransitionDurationFromElement(this._dialog);o.default(this._element).off(d.TRANSITION_END),o.default(this._element).one(d.TRANSITION_END,(function(){t._element.classList.remove("modal-static"),n||o.default(t._element).one(d.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,i)})).emulateTransitionEnd(i),this._element.focus()}},e._showElement=function(t){var e=this,n=o.default(this._element).hasClass("fade"),i=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),o.default(this._dialog).hasClass("modal-dialog-scrollable")&&i?i.scrollTop=0:this._element.scrollTop=0,n&&d.reflow(this._element),o.default(this._element).addClass("show"),this._config.focus&&this._enforceFocus();var r=o.default.Event("shown.bs.modal",{relatedTarget:t}),a=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,o.default(e._element).trigger(r)};if(n){var s=d.getTransitionDurationFromElement(this._dialog);o.default(this._dialog).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a()},e._enforceFocus=function(){var t=this;o.default(document).off("focusin.bs.modal").on("focusin.bs.modal",(function(e){document!==e.target&&t._element!==e.target&&0===o.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?o.default(this._element).on("keydown.dismiss.bs.modal",(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||o.default(this._element).off("keydown.dismiss.bs.modal")},e._setResizeEvent=function(){var t=this;this._isShown?o.default(window).on("resize.bs.modal",(function(e){return t.handleUpdate(e)})):o.default(window).off("resize.bs.modal")},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){o.default(document.body).removeClass("modal-open"),t._resetAdjustments(),t._resetScrollbar(),o.default(t._element).trigger("hidden.bs.modal")}))},e._removeBackdrop=function(){this._backdrop&&(o.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=o.default(this._element).hasClass("fade")?"fade":"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),o.default(this._backdrop).appendTo(document.body),o.default(this._element).on("click.dismiss.bs.modal",(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&d.reflow(this._backdrop),o.default(this._backdrop).addClass("show"),!t)return;if(!n)return void t();var i=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){o.default(this._backdrop).removeClass("show");var r=function(){e._removeBackdrop(),t&&t()};if(o.default(this._element).hasClass("fade")){var a=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,r).emulateTransitionEnd(a)}else r()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:B,popperConfig:null},X={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},$={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},G=function(){function t(t,e){if(void 0===r.default)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=o.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(o.default(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),o.default.removeData(this.element,this.constructor.DATA_KEY),o.default(this.element).off(this.constructor.EVENT_KEY),o.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&o.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===o.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=o.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){o.default(this.element).trigger(e);var n=d.findShadowRoot(this.element),i=o.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var a=this.getTipElement(),s=d.getUID(this.constructor.NAME);a.setAttribute("id",s),this.element.setAttribute("aria-describedby",s),this.setContent(),this.config.animation&&o.default(a).addClass("fade");var l="function"==typeof this.config.placement?this.config.placement.call(this,a,this.element):this.config.placement,u=this._getAttachment(l);this.addAttachmentClass(u);var f=this._getContainer();o.default(a).data(this.constructor.DATA_KEY,this),o.default.contains(this.element.ownerDocument.documentElement,this.tip)||o.default(a).appendTo(f),o.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new r.default(this.element,a,this._getPopperConfig(u)),o.default(a).addClass("show"),o.default(a).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&o.default(document.body).children().on("mouseover",null,o.default.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,o.default(t.element).trigger(t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(o.default(this.tip).hasClass("fade")){var h=d.getTransitionDurationFromElement(this.tip);o.default(this.tip).one(d.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(t){var e=this,n=this.getTipElement(),i=o.default.Event(this.constructor.Event.HIDE),r=function(){"show"!==e._hoverState&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),o.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(o.default(this.element).trigger(i),!i.isDefaultPrevented()){if(o.default(n).removeClass("show"),"ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,o.default(this.tip).hasClass("fade")){var a=d.getTransitionDurationFromElement(n);o.default(n).one(d.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(o.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),o.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Q(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?o.default(e).parent().is(t)||t.empty().append(e):t.text(o.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return l({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:d.isElement(this.config.container)?o.default(this.config.container):o.default(document).find(this.config.container)},e._getAttachment=function(t){return z[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)o.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;o.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},o.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),o.default(e.getTipElement()).hasClass("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=o.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Y.indexOf(t)&&delete e[t]})),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d.typeCheckConfig(W,t,this.constructor.DefaultType),t.sanitize&&(t.template=Q(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(V);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(o.default(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.tooltip"),r="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new t(this,r),n.data("bs.tooltip",i)),"string"==typeof e)){if(void 0===i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return K}},{key:"NAME",get:function(){return W}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return $}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return X}}]),t}();o.default.fn[W]=G._jQueryInterface,o.default.fn[W].Constructor=G,o.default.fn[W].noConflict=function(){return o.default.fn[W]=U,G._jQueryInterface};var J="popover",Z=o.default.fn[J],tt=new RegExp("(^|\\s)bs-popover\\S+","g"),et=l({},G.Default,{placement:"right",trigger:"click",content:"",template:''}),nt=l({},G.DefaultType,{content:"(string|element|function)"}),it={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},ot=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,u(e,n);var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-popover-"+t)},r.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},r.setContent=function(){var t=o.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(tt);null!==e&&e.length>0&&t.removeClass(e.join(""))},i._jQueryInterface=function(t){return this.each((function(){var e=o.default(this).data("bs.popover"),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n),o.default(this).data("bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},s(i,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return et}},{key:"NAME",get:function(){return J}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return it}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return nt}}]),i}(G);o.default.fn[J]=ot._jQueryInterface,o.default.fn[J].Constructor=ot,o.default.fn[J].noConflict=function(){return o.default.fn[J]=Z,ot._jQueryInterface};var rt="scrollspy",at=o.default.fn[rt],st={offset:10,method:"auto",target:""},lt={offset:"number",method:"string",target:"(string|element)"},ut=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,o.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,i="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,r=d.getSelectorFromElement(t);if(r&&(e=document.querySelector(r)),e){var a=e.getBoundingClientRect();if(a.width||a.height)return[o.default(e)[n]().top+i,r]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){o.default.removeData(this._element,"bs.scrollspy"),o.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=l({},st,"object"==typeof t&&t?t:{})).target&&d.isElement(t.target)){var e=o.default(t.target).attr("id");e||(e=d.getUID(rt),o.default(t.target).attr("id",e)),t.target="#"+e}return d.typeCheckConfig(rt,t,lt),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t li > .active":".active";n=(n=o.default.makeArray(o.default(i).find(a)))[n.length-1]}var s=o.default.Event("hide.bs.tab",{relatedTarget:this._element}),l=o.default.Event("show.bs.tab",{relatedTarget:n});if(n&&o.default(n).trigger(s),o.default(this._element).trigger(l),!l.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,i);var u=function(){var e=o.default.Event("hidden.bs.tab",{relatedTarget:t._element}),i=o.default.Event("shown.bs.tab",{relatedTarget:n});o.default(n).trigger(e),o.default(t._element).trigger(i)};e?this._activate(e,e.parentNode,u):u()}}},e.dispose=function(){o.default.removeData(this._element,"bs.tab"),this._element=null},e._activate=function(t,e,n){var i=this,r=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?o.default(e).children(".active"):o.default(e).find("> li > .active"))[0],a=n&&r&&o.default(r).hasClass("fade"),s=function(){return i._transitionComplete(t,r,n)};if(r&&a){var l=d.getTransitionDurationFromElement(r);o.default(r).removeClass("show").one(d.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._transitionComplete=function(t,e,n){if(e){o.default(e).removeClass("active");var i=o.default(e.parentNode).find("> .dropdown-menu .active")[0];i&&o.default(i).removeClass("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}o.default(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d.reflow(t),t.classList.contains("fade")&&t.classList.add("show");var r=t.parentNode;if(r&&"LI"===r.nodeName&&(r=r.parentNode),r&&o.default(r).hasClass("dropdown-menu")){var a=o.default(t).closest(".dropdown")[0];if(a){var s=[].slice.call(a.querySelectorAll(".dropdown-toggle"));o.default(s).addClass("active")}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.tab");if(i||(i=new t(this),n.data("bs.tab",i)),"string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),dt._jQueryInterface.call(o.default(this),"show")})),o.default.fn.tab=dt._jQueryInterface,o.default.fn.tab.Constructor=dt,o.default.fn.tab.noConflict=function(){return o.default.fn.tab=ft,dt._jQueryInterface};var ct="toast",ht=o.default.fn[ct],pt={animation:!0,autohide:!0,delay:500},mt={animation:"boolean",autohide:"boolean",delay:"number"},gt=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=o.default.Event("show.bs.toast");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),o.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),d.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var i=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains("show")){var t=o.default.Event("hide.bs.toast");o.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),o.default(this._element).off("click.dismiss.bs.toast"),o.default.removeData(this._element,"bs.toast"),this._element=null,this._config=null},e._getConfig=function(t){return t=l({},pt,o.default(this._element).data(),"object"==typeof t&&t?t:{}),d.typeCheckConfig(ct,t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;o.default(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add("hide"),o.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.toast");if(i||(i=new t(this,"object"==typeof e&&e),n.data("bs.toast",i)),"string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'+e+'"');i[e](this)}}))},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"DefaultType",get:function(){return mt}},{key:"Default",get:function(){return pt}}]),t}();o.default.fn[ct]=gt._jQueryInterface,o.default.fn[ct].Constructor=gt,o.default.fn[ct].noConflict=function(){return o.default.fn[ct]=ht,gt._jQueryInterface},t.Alert=h,t.Button=m,t.Carousel=E,t.Collapse=D,t.Dropdown=j,t.Modal=R,t.Popover=ot,t.Scrollspy=ut,t.Tab=dt,t.Toast=gt,t.Tooltip=G,t.Util=d,Object.defineProperty(t,"__esModule",{value:!0})}(e,n(0),n(1))},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";n.r(e);n(0),n(3),n.p;$((function(){var t=document.querySelector("div.bd-sidebar");let e=parseInt(sessionStorage.getItem("sidebar-scroll-top"),10);if(isNaN(e)){var n=document.getElementById("bd-docs-nav").querySelectorAll(".active");if(n.length>0){var i=n[n.length-1],o=i.getBoundingClientRect().y-t.getBoundingClientRect().y;if(i.getBoundingClientRect().y>.5*window.innerHeight){let e=.25;t.scrollTop=o-t.clientHeight*e,console.log("[PST]: Scrolled sidebar using last active link...")}}}else t.scrollTop=e,console.log("[PST]: Scrolled sidebar using stored browser position...");window.addEventListener("beforeunload",()=>{sessionStorage.setItem("sidebar-scroll-top",t.scrollTop)})})),$((function(){$(window).on("activate.bs.scrollspy",(function(){document.querySelectorAll("#bd-toc-nav a").forEach(t=>{t.parentElement.classList.remove("active")});document.querySelectorAll("#bd-toc-nav a.active").forEach(t=>{t.parentElement.classList.add("active")})}))}))}]); \ No newline at end of file diff --git a/docs/build/html/_static/scripts/sphinx-book-theme.js b/docs/build/html/_static/scripts/sphinx-book-theme.js new file mode 100644 index 00000000..a8a305eb --- /dev/null +++ b/docs/build/html/_static/scripts/sphinx-book-theme.js @@ -0,0 +1,2 @@ +!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";n.r(t);n.p;var o=e=>{"loading"!=document.readyState?e():document.addEventListener?document.addEventListener("DOMContentLoaded",e):document.attachEvent("onreadystatechange",(function(){"complete"==document.readyState&&e()}))};window.initThebeSBT=()=>{var e=$("div.section h1")[0];$(e).next().hasClass("thebe-launch-button")||$("").insertAfter($(e)),initThebe()},window.printPdf=e=>{let t=$(e).attr("aria-describedby"),n=$("#"+t).detach();window.print(),$("body").append(n)},window.toggleFullScreen=()=>{var e=document.fullscreenElement&&null!==document.fullscreenElement||document.webkitFullscreenElement&&null!==document.webkitFullscreenElement;let t=document.documentElement;e?(console.log("[SBT]: Exiting full screen"),document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()):(console.log("[SBT]: Entering full screen"),t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen&&t.webkitRequestFullscreen())},o(()=>{$(document).ready((function(){$('[data-toggle="tooltip"]').tooltip({trigger:"hover",delay:{show:500,hide:100}})}))}),o(()=>{var e=document.getElementById("site-navigation"),t=e.querySelectorAll(".active"),n=t[t.length-1];void 0!==n&&n.offsetTop>.5*$(window).height()&&(e.scrollTop=n.offsetTop-.2*$(window).height())}),o(()=>{var e=[];let t=new IntersectionObserver((t,n)=>{t.forEach(t=>{if(t.isIntersecting)e.push(t.target);else for(let n=0;n0?$("div.bd-toc").removeClass("show"):$("div.bd-toc").addClass("show")});let n=[];["marginnote","sidenote","margin","margin-caption","full-width","sidebar","popout"].forEach(e=>{n.push("."+e,".tag_"+e,"."+e.replace("-","_"),".tag_"+e.replace("-","_"))}),document.querySelectorAll(n.join(", ")).forEach(e=>{t.observe(e)}),new IntersectionObserver((e,t)=>{e[0].boundingClientRect.y<0?document.body.classList.add("scrolled"):document.body.classList.remove("scrolled")}).observe(document.querySelector(".sbt-scroll-pixel-helper"))}),o((function(){new MutationObserver((e,t)=>{e.forEach(e=>{0!==e.addedNodes.length&&void 0!==e.addedNodes[0].data&&-1!=e.addedNodes[0].data.search("Inserted RTD Footer")&&e.addedNodes.forEach(e=>{document.getElementById("rtd-footer-container").append(e)})})}).observe(document.body,{childList:!0})}))}]); +//# sourceMappingURL=sphinx-book-theme.js.map \ No newline at end of file diff --git a/docs/build/html/_static/scripts/sphinx-book-theme.js.map b/docs/build/html/_static/scripts/sphinx-book-theme.js.map new file mode 100644 index 00000000..dccd768e --- /dev/null +++ b/docs/build/html/_static/scripts/sphinx-book-theme.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/sphinx_book_theme/assets/styles/index.scss","webpack:///./src/sphinx_book_theme/assets/scripts/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","sbRunWhenDOMLoaded","cb","document","readyState","addEventListener","attachEvent","window","initThebeSBT","title","$","next","hasClass","insertAfter","initThebe","printPdf","el","tooltipID","attr","tooltipTextDiv","detach","print","append","toggleFullScreen","isInFullScreen","fullscreenElement","webkitFullscreenElement","docElm","documentElement","console","log","exitFullscreen","webkitExitFullscreen","requestFullscreen","webkitRequestFullscreen","ready","tooltip","trigger","delay","show","hide","navbar","getElementById","active_pages","querySelectorAll","active_page","length","undefined","offsetTop","height","scrollTop","onScreenItems","tocObserver","IntersectionObserver","entries","observer","forEach","entry","isIntersecting","push","target","ii","splice","removeClass","addClass","marginSelector","replace","join","observe","boundingClientRect","y","body","classList","add","remove","querySelector","MutationObserver","mutationList","mutation","addedNodes","data","search","node","childList"],"mappings":"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","file":"scripts/sphinx-book-theme.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export default __webpack_public_path__ + \"styles/sphinx-book-theme.css\";","// Import CSS variables\n// ref: https://css-tricks.com/getting-javascript-to-talk-to-css-and-sass/\nimport \"../styles/index.scss\";\n\n/**\n * A helper function to load scripts when the DOM is loaded.\n * This waits for everything to be on the page first before running, since\n * some functionality doesn't behave properly until everything is ready.\n */\nvar sbRunWhenDOMLoaded = (cb) => {\n if (document.readyState != \"loading\") {\n cb();\n } else if (document.addEventListener) {\n document.addEventListener(\"DOMContentLoaded\", cb);\n } else {\n document.attachEvent(\"onreadystatechange\", function () {\n if (document.readyState == \"complete\") cb();\n });\n }\n};\n\n/**\n * Toggle full-screen with button\n *\n * There are some browser-specific hacks in here:\n * - Safari requires a `webkit` prefix, so this uses conditionals to check for that\n * ref: https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API\n */\nvar toggleFullScreen = () => {\n var isInFullScreen =\n (document.fullscreenElement && document.fullscreenElement !== null) ||\n (document.webkitFullscreenElement &&\n document.webkitFullscreenElement !== null);\n let docElm = document.documentElement;\n if (!isInFullScreen) {\n console.log(\"[SBT]: Entering full screen\");\n if (docElm.requestFullscreen) {\n docElm.requestFullscreen();\n } else if (docElm.webkitRequestFullscreen) {\n docElm.webkitRequestFullscreen();\n }\n } else {\n console.log(\"[SBT]: Exiting full screen\");\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n};\n\n/**\n * Sidebar scroll on load.\n *\n * Detect the active page in the sidebar, and scroll so that it is centered on\n * the screen.\n */\nvar scrollToActive = () => {\n var navbar = document.getElementById(\"site-navigation\");\n var active_pages = navbar.querySelectorAll(\".active\");\n var active_page = active_pages[active_pages.length - 1];\n // Only scroll the navbar if the active link is lower than 50% of the page\n if (\n active_page !== undefined &&\n active_page.offsetTop > $(window).height() * 0.5\n ) {\n navbar.scrollTop = active_page.offsetTop - $(window).height() * 0.2;\n }\n};\n\n/**\n * Called when the \"print to PDF\" button is clicked.\n * This is a hack to prevent tooltips from showing up in the printed PDF.\n */\nvar printPdf = (el) => {\n // Detach the tooltip text from DOM to hide in PDF\n // and then reattach it for HTML\n let tooltipID = $(el).attr(\"aria-describedby\");\n let tooltipTextDiv = $(\"#\" + tooltipID).detach();\n window.print();\n $(\"body\").append(tooltipTextDiv);\n};\n\n/**\n * Manage scrolling behavior. This is primarily two things:\n *\n * 1. Hide the Table of Contents any time sidebar content is on the screen.\n *\n * This will be triggered any time a sidebar item enters or exits the screen.\n * It adds/removes items from an array if they have entered the screen, and\n * removes them when they exit the screen. It hides the TOC if anything is\n * on-screen.\n *\n * ref: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n *\n * 2. Add a `scrolled` class to to trigger CSS changes.\n */\nvar initTocHide = () => {\n var onScreenItems = [];\n let hideTocCallback = (entries, observer) => {\n // Check whether any sidebar item is displayed\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n // If an element just came on screen, add it our list\n onScreenItems.push(entry.target);\n } else {\n // Otherwise, if it's in our list then remove it\n for (let ii = 0; ii < onScreenItems.length; ii++) {\n if (onScreenItems[ii] === entry.target) {\n onScreenItems.splice(ii, 1);\n break;\n }\n }\n }\n });\n\n // Hide the TOC if any margin content is displayed on the screen\n if (onScreenItems.length > 0) {\n $(\"div.bd-toc\").removeClass(\"show\");\n } else {\n $(\"div.bd-toc\").addClass(\"show\");\n }\n };\n let manageScrolledClassOnBody = (entries, observer) => {\n // The pixel is at the top, so if we're < 0 that it means we've scrolled\n if (entries[0].boundingClientRect.y < 0) {\n document.body.classList.add(\"scrolled\");\n } else {\n document.body.classList.remove(\"scrolled\");\n }\n };\n\n // Set up the intersection observer to watch all margin content\n let tocObserver = new IntersectionObserver(hideTocCallback);\n // TODO: deprecate popout after v0.5.0\n const selectorClasses = [\n \"marginnote\",\n \"sidenote\",\n \"margin\",\n \"margin-caption\",\n \"full-width\",\n \"sidebar\",\n \"popout\",\n ];\n let marginSelector = [];\n selectorClasses.forEach((ii) => {\n // Use three permutations of each class name because `tag_` and `_` used to be supported\n marginSelector.push(\n ...[\n `.${ii}`,\n `.tag_${ii}`,\n `.${ii.replace(\"-\", \"_\")}`,\n `.tag_${ii.replace(\"-\", \"_\")}`,\n ]\n );\n });\n document.querySelectorAll(marginSelector.join(\", \")).forEach((ii) => {\n tocObserver.observe(ii);\n });\n\n // Set up the observer to check if we've scrolled from top of page\n let scrollObserver = new IntersectionObserver(manageScrolledClassOnBody);\n scrollObserver.observe(document.querySelector(\".sbt-scroll-pixel-helper\"));\n};\n\n/**\n * Activate Thebe with a custom button click.\n */\nvar initThebeSBT = () => {\n var title = $(\"div.section h1\")[0];\n if (!$(title).next().hasClass(\"thebe-launch-button\")) {\n $(\"\").insertAfter($(title));\n }\n initThebe();\n};\n\n/**\n * Use Bootstrap helper function to enable tooltips.\n */\nvar initTooltips = () => {\n $(document).ready(function () {\n $('[data-toggle=\"tooltip\"]').tooltip({\n trigger: \"hover\",\n delay: { show: 500, hide: 100 },\n });\n });\n};\n\n/**\n * MutationObserver to move the ReadTheDocs button\n */\nfunction initRTDObserver() {\n const mutatedCallback = (mutationList, observer) => {\n mutationList.forEach((mutation) => {\n // Check whether the mutation is for RTD, which will have a specific structure\n if (mutation.addedNodes.length === 0) {\n return;\n }\n if (mutation.addedNodes[0].data === undefined) {\n return;\n }\n if (mutation.addedNodes[0].data.search(\"Inserted RTD Footer\") != -1) {\n mutation.addedNodes.forEach((node) => {\n document.getElementById(\"rtd-footer-container\").append(node);\n });\n }\n });\n };\n\n const observer = new MutationObserver(mutatedCallback);\n const config = { childList: true };\n observer.observe(document.body, config);\n}\n\n/**\n * Set up callback functions for UI click actions\n */\nwindow.initThebeSBT = initThebeSBT;\nwindow.printPdf = printPdf;\nwindow.toggleFullScreen = toggleFullScreen;\n\n/**\n * Set up functions to load when the DOM is ready\n */\nsbRunWhenDOMLoaded(initTooltips);\nsbRunWhenDOMLoaded(scrollToActive);\nsbRunWhenDOMLoaded(initTocHide);\nsbRunWhenDOMLoaded(initRTDObserver);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/build/html/_static/searchtools.js b/docs/build/html/_static/searchtools.js new file mode 100644 index 00000000..e89e34d4 --- /dev/null +++ b/docs/build/html/_static/searchtools.js @@ -0,0 +1,566 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = docUrlRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = docUrlRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/docs/build/html/_static/sphinx_highlight.js b/docs/build/html/_static/sphinx_highlight.js new file mode 100644 index 00000000..aae669d7 --- /dev/null +++ b/docs/build/html/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/docs/build/html/_static/styles/pydata-sphinx-theme.css b/docs/build/html/_static/styles/pydata-sphinx-theme.css new file mode 100644 index 00000000..cad32211 --- /dev/null +++ b/docs/build/html/_static/styles/pydata-sphinx-theme.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v4.6.1 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:540px;--breakpoint-md:720px;--breakpoint-lg:960px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;line-height:1.5;color:#212529;text-align:left}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;background-color:transparent}a:hover{color:#0056b3}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:"\2014\00A0"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:540px){.container,.container-sm{max-width:540px}}@media (min-width:720px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:960px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1400px}}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width:540px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:720px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:960px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:539.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:719.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:959.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:540px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light.focus,.btn-light:focus,.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3}.btn-link.focus,.btn-link:focus,.btn-link:hover{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:540px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:720px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:960px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label:after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3),.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label:after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;color-adjust:exact}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);overflow:hidden;font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:539.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:540px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:719.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:720px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:959.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:960px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:540px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:540px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:540px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:540px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:flex;overflow:hidden}.progress-bar{flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:540px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:720px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:960px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{flex-basis:350px;max-width:350px;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:540px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem);height:min-content}.modal-sm{max-width:300px}}@media (min-width:960px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid;border-right:.25em solid transparent;border-radius:50%;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:540px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:720px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:960px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:540px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:720px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:960px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:540px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:720px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:960px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports (position:sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:540px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:720px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:960px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:transparent}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:540px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:720px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:960px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd}blockquote,img,pre,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:960px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}html{font-size:var(--pst-font-size-base);scroll-padding-top:calc(var(--pst-header-height) + 12px)}body{padding-top:var(--pst-header-height);background-color:#fff;font-family:var(--pst-font-family-base);font-weight:400;line-height:1.65;color:rgba(var(--pst-color-text-base),1)}p{margin-bottom:1.15rem;font-size:1em;color:rgba(var(--pst-color-paragraph),1)}p.rubric{border-bottom:1px solid #c9c9c9}a{color:rgba(var(--pst-color-link),1);text-decoration:none}a:hover{color:rgba(var(--pst-color-link-hover),1);text-decoration:underline}a.headerlink{color:rgba(var(--pst-color-headerlink),1);opacity:.4;font-size:.8em;padding:0 4px;margin-left:.2em;text-decoration:none;transition:all .3s ease-out;user-select:none}a.headerlink:hover{opacity:1}.heading-style,h1,h2,h3,h4,h5,h6{margin:2.75rem 0 1.05rem;font-family:var(--pst-font-family-heading);font-weight:400;line-height:1.15}h1{margin-top:0;font-size:var(--pst-font-size-h1);color:rgba(var(--pst-color-h1),1)}h2{font-size:var(--pst-font-size-h2);color:rgba(var(--pst-color-h2),1)}h3{font-size:var(--pst-font-size-h3);color:rgba(var(--pst-color-h3),1)}h4{font-size:var(--pst-font-size-h4);color:rgba(var(--pst-color-h4),1)}h5{font-size:var(--pst-font-size-h5);color:rgba(var(--pst-color-h5),1)}h6{font-size:var(--pst-font-size-h6);color:rgba(var(--pst-color-h6),1)}.text_small,small{font-size:var(--pst-font-size-milli)}hr{border:0;border-top:1px solid #e5e5e5}code,kbd,pre,samp{font-family:var(--pst-font-family-monospace)}code{color:rgba(var(--pst-color-inline-code),1)}pre{margin:1.5em 0;padding:10px;background-color:rgba(var(--pst-color-preformatted-background),1);color:rgba(var(--pst-color-preformatted-text),1);line-height:1.2em;border:1px solid #c9c9c9;border-radius:.2rem;box-shadow:1px 1px 1px #d8d8d8}dd{margin-top:3px;margin-bottom:10px;margin-left:30px}dl.field-list{display:grid;grid-template-columns:fit-content(30%) minmax(0,1fr)}.navbar{position:fixed;min-height:var(--pst-header-height);width:100%;padding:0}.navbar .container-xl{height:100%}@media (max-width:1199.98px){.navbar #navbar-start{margin-left:1em}.navbar button.navbar-toggler{margin-right:1em}}@media (min-width:960px){.navbar #navbar-end>.navbar-end-item{display:inline-block}}.navbar-brand{position:relative;height:var(--pst-header-height);width:auto;padding:.5rem 0;display:flex;align-items:center}.navbar-brand p{margin-bottom:0}.navbar-brand img{max-width:100%;height:100%;width:auto}.navbar-light{background:#fff!important;box-shadow:0 .125rem .25rem 0 rgba(0,0,0,.11)}.navbar-light .navbar-nav li a.nav-link{padding:0 .5rem;color:rgba(var(--pst-color-navbar-link),1)}.navbar-light .navbar-nav li a.nav-link:hover{color:rgba(var(--pst-color-navbar-link-hover),1)}.navbar-light .navbar-nav>.active>.nav-link{font-weight:600;color:rgba(var(--pst-color-navbar-link-active),1)}.navbar-header a{padding:0 15px}.admonition,div.admonition{margin:1.5625em auto;padding:0 .6rem .8rem;overflow:hidden;page-break-inside:avoid;border-left:.2rem solid;border-left-color:rgba(var(--pst-color-admonition-default),1);border-bottom-color:rgba(var(--pst-color-admonition-default),1);border-right-color:rgba(var(--pst-color-admonition-default),1);border-top-color:rgba(var(--pst-color-admonition-default),1);border-radius:.2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1);transition:color .25s,background-color .25s,border-color .25s}.admonition :last-child,div.admonition :last-child{margin-bottom:0}.admonition p.admonition-title~*,div.admonition p.admonition-title~*{margin-left:1.4rem;margin-right:1.4rem}.admonition>ol,.admonition>ul,div.admonition>ol,div.admonition>ul{margin-left:1em}.admonition>.admonition-title,div.admonition>.admonition-title{position:relative;margin:0 -.6rem;padding:.4rem .6rem .4rem 2rem;font-weight:700;background-color:rgba(var(--pst-color-admonition-default),.1)}.admonition>.admonition-title:before,div.admonition>.admonition-title:before{position:absolute;left:.6rem;width:1rem;height:1rem;color:rgba(var(--pst-color-admonition-default),1);font-family:Font Awesome\ 5 Free;font-weight:900;content:var(--pst-icon-admonition-default)}.admonition>.admonition-title+*,div.admonition>.admonition-title+*{margin-top:.4em}.admonition.attention,div.admonition.attention{border-color:rgba(var(--pst-color-admonition-attention),1)}.admonition.attention>.admonition-title,div.admonition.attention>.admonition-title{background-color:rgba(var(--pst-color-admonition-attention),.1)}.admonition.attention>.admonition-title:before,div.admonition.attention>.admonition-title:before{color:rgba(var(--pst-color-admonition-attention),1);content:var(--pst-icon-admonition-attention)}.admonition.caution,div.admonition.caution{border-color:rgba(var(--pst-color-admonition-caution),1)}.admonition.caution>.admonition-title,div.admonition.caution>.admonition-title{background-color:rgba(var(--pst-color-admonition-caution),.1)}.admonition.caution>.admonition-title:before,div.admonition.caution>.admonition-title:before{color:rgba(var(--pst-color-admonition-caution),1);content:var(--pst-icon-admonition-caution)}.admonition.warning,div.admonition.warning{border-color:rgba(var(--pst-color-admonition-warning),1)}.admonition.warning>.admonition-title,div.admonition.warning>.admonition-title{background-color:rgba(var(--pst-color-admonition-warning),.1)}.admonition.warning>.admonition-title:before,div.admonition.warning>.admonition-title:before{color:rgba(var(--pst-color-admonition-warning),1);content:var(--pst-icon-admonition-warning)}.admonition.danger,div.admonition.danger{border-color:rgba(var(--pst-color-admonition-danger),1)}.admonition.danger>.admonition-title,div.admonition.danger>.admonition-title{background-color:rgba(var(--pst-color-admonition-danger),.1)}.admonition.danger>.admonition-title:before,div.admonition.danger>.admonition-title:before{color:rgba(var(--pst-color-admonition-danger),1);content:var(--pst-icon-admonition-danger)}.admonition.error,div.admonition.error{border-color:rgba(var(--pst-color-admonition-error),1)}.admonition.error>.admonition-title,div.admonition.error>.admonition-title{background-color:rgba(var(--pst-color-admonition-error),.1)}.admonition.error>.admonition-title:before,div.admonition.error>.admonition-title:before{color:rgba(var(--pst-color-admonition-error),1);content:var(--pst-icon-admonition-error)}.admonition.hint,div.admonition.hint{border-color:rgba(var(--pst-color-admonition-hint),1)}.admonition.hint>.admonition-title,div.admonition.hint>.admonition-title{background-color:rgba(var(--pst-color-admonition-hint),.1)}.admonition.hint>.admonition-title:before,div.admonition.hint>.admonition-title:before{color:rgba(var(--pst-color-admonition-hint),1);content:var(--pst-icon-admonition-hint)}.admonition.tip,div.admonition.tip{border-color:rgba(var(--pst-color-admonition-tip),1)}.admonition.tip>.admonition-title,div.admonition.tip>.admonition-title{background-color:rgba(var(--pst-color-admonition-tip),.1)}.admonition.tip>.admonition-title:before,div.admonition.tip>.admonition-title:before{color:rgba(var(--pst-color-admonition-tip),1);content:var(--pst-icon-admonition-tip)}.admonition.important,div.admonition.important{border-color:rgba(var(--pst-color-admonition-important),1)}.admonition.important>.admonition-title,div.admonition.important>.admonition-title{background-color:rgba(var(--pst-color-admonition-important),.1)}.admonition.important>.admonition-title:before,div.admonition.important>.admonition-title:before{color:rgba(var(--pst-color-admonition-important),1);content:var(--pst-icon-admonition-important)}.admonition.note,div.admonition.note{border-color:rgba(var(--pst-color-admonition-note),1)}.admonition.note>.admonition-title,div.admonition.note>.admonition-title{background-color:rgba(var(--pst-color-admonition-note),.1)}.admonition.note>.admonition-title:before,div.admonition.note>.admonition-title:before{color:rgba(var(--pst-color-admonition-note),1);content:var(--pst-icon-admonition-note)}table.field-list{border-collapse:separate;border-spacing:10px;margin-left:1px}table.field-list th.field-name{padding:1px 8px 1px 5px;white-space:nowrap;background-color:#eee}table.field-list td.field-body p{font-style:italic}table.field-list td.field-body p>strong{font-style:normal}table.field-list td.field-body blockquote{border-left:none;margin:0 0 .3em;padding-left:30px}.table.autosummary td:first-child{white-space:nowrap}.sig{font-family:var(--pst-font-family-monospace)}.sig-inline.c-texpr,.sig-inline.cpp-texpr{font-family:unset}.sig.c .k,.sig.c .kt,.sig.c .m,.sig.c .s,.sig.c .sc,.sig.cpp .k,.sig.cpp .kt,.sig.cpp .m,.sig.cpp .s,.sig.cpp .sc{color:rgba(var(--pst-color-text-base),1)}.sig-name{color:rgba(var(--pst-color-inline-code),1)}td.text-align\:left,th.text-align\:left{text-align:left}td.text-align\:right,th.text-align\:right{text-align:right}td.text-align\:center,th.text-align\:center{text-align:center}div.deprecated,div.versionadded,div.versionchanged{vertical-align:middle;margin:1.5625em auto;padding:0 .6rem;overflow:hidden;page-break-inside:avoid;border-left:.2rem solid;border-left-color:rgba(var(--pst-color-versionmodified-default),1);border-bottom-color:rgba(var(--pst-color-versionmodified-default),1);border-right-color:rgba(var(--pst-color-versionmodified-default),1);border-top-color:rgba(var(--pst-color-versionmodified-default),1);border-radius:.2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1);transition:color .25s,background-color .25s,border-color .25s;background-color:rgba(var(--pst-color-admonition-default),.1)}div.deprecated>p,div.versionadded>p,div.versionchanged>p{margin-bottom:.6rem;margin-top:.6rem}div.versionadded{border-color:rgba(var(--pst-color-versionmodified-added),1);background-color:rgba(var(--pst-color-versionmodified-added),.1)}div.versionchanged{border-color:rgba(var(--pst-color-versionmodified-changed),1);background-color:rgba(var(--pst-color-versionmodified-changed),.1)}div.deprecated{border-color:rgba(var(--pst-color-versionmodified-deprecated),1);background-color:rgba(var(--pst-color-versionmodified-deprecated),.1)}span.versionmodified{font-weight:700}span.versionmodified:before{font-style:normal;margin-right:.6rem;color:rgba(var(--pst-color-versionmodified-default),1);font-family:Font Awesome\ 5 Free;font-weight:900;content:var(--pst-icon-versionmodified-default)}span.versionmodified.added:before{color:rgba(var(--pst-color-versionmodified-added),1);content:var(--pst-icon-versionmodified-added)}span.versionmodified.changed:before{color:rgba(var(--pst-color-versionmodified-changed),1);content:var(--pst-icon-versionmodified-changed)}span.versionmodified.deprecated:before{color:rgba(var(--pst-color-versionmodified-deprecated),1);content:var(--pst-icon-versionmodified-deprecated)}blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}dt.label>span.brackets:not(:only-child):before{content:"["}dt.label>span.brackets:not(:only-child):after{content:"]"}a.footnote-reference{vertical-align:super;font-size:small}.topic{background-color:#eee}.seealso dd{margin-top:0;margin-bottom:0}.viewcode-back{font-family:var(--pst-font-family-base)}.viewcode-block:target{background-color:#f4debf;border-top:1px solid #ac9;border-bottom:1px solid #ac9}span.guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}footer{width:100%;border-top:1px solid #ccc;padding:10px}footer .footer-item p{margin-bottom:0}.bd-search{position:relative;padding:1rem 15px;margin-right:-15px;margin-left:-15px}.bd-search .icon{position:absolute;color:#a4a6a7;left:25px}.bd-search input{border-radius:.2rem;border:1px solid #e5e5e5;padding-left:35px}.bd-toc{-ms-flex-order:2;order:2;height:calc(100vh - 2rem);overflow-y:auto}@supports (position:-webkit-sticky) or (position:sticky){.bd-toc{position:-webkit-sticky;position:sticky;top:var(--pst-header-height);height:calc(100vh - 5rem);overflow-y:auto}}.bd-toc .onthispage{color:#a4a6a7}.section-nav{padding-left:0;border-left:1px solid #eee;border-bottom:none}.section-nav ul{padding-left:1rem}.toc-entry,.toc-entry a{display:block}.toc-entry a{padding:.125rem 1.5rem;color:rgba(var(--pst-color-toc-link),1)}@media (min-width:1200px){.toc-entry a{padding-right:0}}.toc-entry a:hover{color:rgba(var(--pst-color-toc-link-hover),1);text-decoration:none}.bd-links{padding-top:1rem;padding-bottom:1rem;margin-right:-15px;margin-left:-15px}@media (min-width:720px){.bd-links{display:block}}.bd-sidenav{display:none}.bd-content{padding-top:20px}.bd-content .section{max-width:100%}.bd-content .section table{display:block;overflow:auto}.bd-toc-link{display:block;padding:.25rem 1.5rem;font-weight:600;color:rgba(0,0,0,.65)}.bd-toc-link:hover{color:rgba(0,0,0,.85);text-decoration:none}.bd-toc-item.active{margin-bottom:1rem}.bd-toc-item.active:not(:first-child){margin-top:1rem}.bd-toc-item.active>.bd-toc-link{color:rgba(0,0,0,.85)}.bd-toc-item.active>.bd-toc-link:hover{background-color:transparent}.bd-toc-item.active>.bd-sidenav{display:block}nav.bd-links p.caption{font-size:var(--pst-sidebar-caption-font-size);text-transform:uppercase;font-weight:700;position:relative;margin-top:1.25em;margin-bottom:.5em;padding:0 1.5rem;color:rgba(var(--pst-color-sidebar-caption),1)}nav.bd-links p.caption:first-child{margin-top:0}.bd-sidebar .nav{font-size:var(--pst-sidebar-font-size)}.bd-sidebar .nav ul{list-style:none;padding:0 0 0 1.5rem}.bd-sidebar .nav li>a{display:block;padding:.25rem 1.5rem;color:rgba(var(--pst-color-sidebar-link),1)}.bd-sidebar .nav li>a:hover{color:rgba(var(--pst-color-sidebar-link-hover),1);text-decoration:none;background-color:transparent}.bd-sidebar .nav li>a.reference.external:after{font-family:Font Awesome\ 5 Free;font-weight:900;content:"\f35d";font-size:.75em;margin-left:.3em}.bd-sidebar .nav .active:hover>a,.bd-sidebar .nav .active>a{font-weight:600;color:rgba(var(--pst-color-sidebar-link-active),1)}.toc-h2{font-size:.85rem}.toc-h3{font-size:.75rem}.toc-h4{font-size:.65rem}.toc-entry>.nav-link.active{font-weight:600;color:#130654;color:rgba(var(--pst-color-toc-link-active),1);background-color:transparent;border-left:2px solid rgba(var(--pst-color-toc-link-active),1)}.nav-link:hover{border-style:none}#navbar-main-elements li.nav-item i{font-size:.7rem;padding-left:2px;vertical-align:middle}.bd-toc .nav .nav,.list-caption .nav{display:none}.bd-toc .nav .nav.visible,.bd-toc .nav>.active>ul,.list-caption .nav.visible,.list-caption>.active>ul{display:block}.prev-next-area{margin:20px 0}.prev-next-area p{margin:0 .3em;line-height:1.3em}.prev-next-area i{font-size:1.2em}.prev-next-area a{display:flex;align-items:center;border:none;padding:10px;max-width:45%;overflow-x:hidden;color:rgba(0,0,0,.65);text-decoration:none}.prev-next-area a p.prev-next-title{color:rgba(var(--pst-color-link),1);font-weight:600;font-size:1.1em}.prev-next-area a:hover p.prev-next-title{text-decoration:underline}.prev-next-area a .prev-next-info{flex-direction:column;margin:0 .5em}.prev-next-area a .prev-next-info .prev-next-subtitle{text-transform:capitalize}.prev-next-area a.left-prev{float:left}.prev-next-area a.right-next{float:right}.prev-next-area a.right-next div.prev-next-info{text-align:right}.alert{padding-bottom:0}.alert-info a{color:#e83e8c}#navbar-icon-links i.fa,#navbar-icon-links i.fab,#navbar-icon-links i.far,#navbar-icon-links i.fas{vertical-align:middle;font-style:normal;font-size:1.5rem;line-height:1.25}#navbar-icon-links i.fa-github-square:before{color:#333}#navbar-icon-links i.fa-twitter-square:before{color:#55acee}#navbar-icon-links i.fa-gitlab:before{color:#548}#navbar-icon-links i.fa-bitbucket:before{color:#0052cc}#navbar-icon-links img.icon-link-image{height:1.5em}.tocsection{border-left:1px solid #eee;padding:.3rem 1.5rem}.tocsection i{padding-right:.5rem}.editthispage{padding-top:2rem}.editthispage a{color:var(--pst-color-sidebar-link-active)}.xr-wrap[hidden]{display:block!important}.toctree-checkbox{position:absolute;display:none}.toctree-checkbox~ul{display:none}.toctree-checkbox~label i{transform:rotate(0deg)}.toctree-checkbox:checked~ul{display:block}.toctree-checkbox:checked~label i{transform:rotate(180deg)}.bd-sidebar{padding-top:1em;overflow-y:auto;display:flex;flex-direction:column}@media (min-width:720px){.bd-sidebar{border-right:1px solid rgba(0,0,0,.1)}@supports (position:-webkit-sticky) or (position:sticky){.bd-sidebar{position:-webkit-sticky;position:sticky;top:var(--pst-header-height);z-index:1000;height:calc(100vh - var(--pst-header-height))}}}.bd-sidebar.no-sidebar{border-right:0}.bd-sidebar .sidebar-end-items{margin-top:auto;margin-bottom:1em}.bd-sidebar .list-caption{list-style:none;padding-left:0}.bd-sidebar li{position:relative}.bd-sidebar li.has-children>.reference{padding-right:30px}.bd-sidebar label{position:absolute;top:0;right:0;height:30px;width:30px;cursor:pointer;display:flex;justify-content:center;align-items:center}.bd-sidebar label:hover{background:rgba(var(--pst-color-sidebar-expander-background-hover),1)}.bd-sidebar label i{display:inline-block;font-size:.75rem;text-align:center}.bd-sidebar label i:hover{color:rgba(var(--pst-color-sidebar-link-hover),1)}.bd-sidebar .label-parts{width:100%;height:100%}.bd-sidebar .label-parts:hover{background:none}.bd-sidebar .label-parts i{width:30px;position:absolute;top:.3em;right:0}div.doctest>div.highlight span.gp,span.linenos,table.highlighttable td.linenos{user-select:none;-webkit-user-select:text;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.docutils.container{padding-left:unset;padding-right:unset} \ No newline at end of file diff --git a/docs/build/html/_static/styles/sphinx-book-theme.css b/docs/build/html/_static/styles/sphinx-book-theme.css new file mode 100644 index 00000000..2dbb3598 --- /dev/null +++ b/docs/build/html/_static/styles/sphinx-book-theme.css @@ -0,0 +1,8 @@ +/*! sphinx-book-theme CSS + * BSD 3-Clause License + * Copyright (c) 2020, EBP + * All rights reserved. + * + * This follows the 7-1 pattern described here: + * https://sass-guidelin.es/#architecture + */:root{--pst-font-size-base:none;--pst-color-primary:87,154,202;--pst-color-admonition-note:var(--pst-color-primary);--pst-color-admonition-default:var(--pst-color-primary);--pst-color-info:255,193,7;--pst-color-admonition-tip:var(--pst-color-info);--pst-color-admonition-hint:var(--pst-color-info);--pst-color-admonition-important:var(--pst-color-info);--pst-color-warning:245,162,82;--pst-color-danger:230,101,129;--pst-color-admonition-warning:var(--pst-color-danger);--pst-color-link:0,113,188;--sbt-font-size-regular:100%;--sbt-font-size-large:112.5%;--sbt-font-size-small-1:87.5%;--sbt-font-size-small-2:70%;--sbt-sidebar-font-size:var(--sbt-font-size-small-1);--sbt-header-article-font-size:var(--sbt-font-size-small-1);--sbt-prevnext-font-size:var(--sbt-font-size-small-1);--sbt-footer-font-size:var(--sbt-font-size-small-1)}.sbt-scroll-pixel-helper{position:absolute;width:0;height:0;top:0;left:0}.visually-hidden{clip:rect(0,0,0,0)!important;border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.d-n,.onlyprint{display:none}@media print{.onlyprint{display:block!important}}@media print{.noprint{display:none!important}}.col{min-width:0}.content-container a.headerlink{opacity:0;margin-left:.2em}.content-container a.headerlink:hover{background-color:transparent;color:rgba(var(--pst-color-link),1);opacity:1!important}.content-container a,.content-container a:visited{color:rgba(var(--pst-color-link),1)}.content-container h1,.content-container h2,.content-container h3,.content-container h4,.content-container h5{color:#000}.content-container h1:hover a.headerlink,.content-container h2:hover a.headerlink,.content-container h3:hover a.headerlink,.content-container h4:hover a.headerlink,.content-container h5:hover a.headerlink{opacity:.5}.content-container h1 a.toc-backref,.content-container h2 a.toc-backref,.content-container h3 a.toc-backref,.content-container h4 a.toc-backref,.content-container h5 a.toc-backref{color:inherit}.content-container h3,.content-container h4,.content-container h5,.content-container h6{margin-top:1em}.content-container ol p,.content-container ul p{margin-bottom:0}.content-container p.centered{text-align:center}.content-container .footnote-reference,.content-container a.bibtex.internal{font-size:1em}@media print{#jb-print-docs-body{max-width:90%;margin:auto}#jb-print-docs-body h1{font-size:3em;text-align:center;margin-bottom:0}#main-content{max-width:67%!important;margin-left:5%!important;padding-top:0}#main-content h1:first-of-type{display:none}.container{min-width:0!important}h1{margin-top:1em;margin-bottom:1em}h1,h2,h3,h4{break-after:avoid;color:#000}table{break-inside:avoid}pre{word-wrap:break-word}a.headerlink{display:none}blockquote.epigraph{border:none}.footer{margin-top:1em}}body{padding-top:0!important}#main-content,#print-main-content{transition:padding .25s ease-out;padding-top:1.5em}@media (min-width:768px){#main-content{max-width:70%}}footer.footer-article{border-top:none;padding:0}footer.footer-article .prev-next-area{font-size:var(--sbt-prevnext-font-size)}footer.footer-article .prev-next-area a{margin-bottom:1em;padding-left:0;padding-right:0}@media (min-width:768px){footer.footer-article .prev-next-area{max-width:70%}}footer{font-size:var(--sbt-font-size-small-1)}.header-article{height:3em;background-color:#fff;transition:left .2s;font-size:var(--sbt-header-article-font-size)}@media (max-width:768px){.header-article{height:3.75em}}.scrolled .header-article{box-shadow:0 6px 6px -6px rgba(0,0,0,.3)}.header-article .header-article-main{height:3em}@media (max-width:768px){.header-article .header-article-main{height:3.75em}}.header-article .header-article-main .header-article__left,.header-article .header-article-main .header-article__right{display:flex;align-items:center}.header-article .header-article-main .header-article__right{margin-left:auto}.header-item{width:100%;text-align:center}.header-item:empty{display:none}.header-item.announcement{background-color:#616161;color:#fff;padding:.4em 12.5%}@media (max-width:768px){.header-item.announcement{padding:.4em 2%}}#site-navigation{padding-top:0;width:275px;font-size:var(--sbt-sidebar-font-size);top:0!important;background:#fff;border-right:1px solid rgba(0,0,0,.1);transition:margin-left .25s ease 0s,opacity .25s ease 0s,visibility .25s ease 0s;overflow-y:unset;height:100vh}@media (max-width:768px){#site-navigation{height:100%;position:fixed;width:75%;max-width:300px;font-size:1.2em;z-index:1100}}#site-navigation .bd-sidebar__content{overflow-y:auto;flex-grow:1;display:flex;flex-direction:column}#site-navigation .bd-sidebar__content::-webkit-scrollbar{width:.3rem;height:.3rem}#site-navigation .bd-sidebar__content::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:.25rem}#site-navigation .bd-sidebar__content::-webkit-scrollbar-thumb:hover{background:#a0a0a0}#site-navigation .bd-sidebar__content:not(:hover)::-webkit-scrollbar-thumb{visibility:hidden}#site-navigation .bd-sidebar__bottom,#site-navigation .bd-sidebar__top{padding:0 1rem 0 1.5rem}#site-navigation .bd-sidebar__bottom{margin-top:auto;margin-bottom:2em}#site-navigation nav ul.nav li a,#site-navigation nav ul.nav ul li a{color:#5a5a5a}#site-navigation nav ul.nav a:hover,#site-navigation nav ul.nav li.active>a,#site-navigation nav ul.nav li.active>a:hover{color:rgba(var(--pst-color-link),1)}#site-navigation nav ul.nav ul{padding-left:1rem}#site-navigation h1.site-logo{margin:.5em 0 0;font-size:1.1em;color:#000;text-align:center}#site-navigation div.navbar_extra_footer{text-align:center;font-size:.9em;color:#5a5a5a;margin-bottom:3em}#site-navigation.single-page{border-right:0}@media (min-width:768px){div.navbar-brand-box{padding-top:2em}}div.navbar-brand-box a.navbar-brand{width:100%;height:auto;flex-direction:column}div.navbar-brand-box a.navbar-brand img{display:block;height:auto;width:auto;max-height:10vh;max-width:100%;margin:0 auto}@media (min-width:768px){div.navbar-brand-box a.navbar-brand img{max-height:15vh!important}}nav.bd-links{margin-left:0;overflow-y:visible;max-height:none}nav.bd-links .toctree-l1 a,nav.bd-links p.caption{padding-left:0}.bd-toc{padding:0!important;right:-1em;height:auto;transition:margin-right .25s ease 0s,opacity .25s ease 0s,visibility .25s ease 0s}.bd-toc .toc-entry a,.bd-toc div.onthispage{color:#5a5a5a}@media (max-width:768px){.bd-toc{z-index:1100;top:0;right:0;position:fixed;height:100%;width:75%;max-width:300px;background-color:#fff;border-left:1px solid rgba(0,0,0,.1);font-size:1.4em}.bd-toc li{font-size:.8em}}.bd-toc nav{opacity:0;max-height:0;transition:opacity .2s ease,max-height .7s ease;overflow-y:hidden;background:#fff}.bd-toc nav::-webkit-scrollbar{width:.3rem;height:.3rem}.bd-toc nav::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:.25rem}.bd-toc nav::-webkit-scrollbar-thumb:hover{background:#a0a0a0}.bd-toc nav:not(:hover)::-webkit-scrollbar-thumb{visibility:hidden}.bd-toc nav a:hover,.bd-toc nav li.active>a.active{color:rgba(var(--pst-color-link),1)}.bd-toc nav li.active>a.active{border-left:2px solid rgba(var(--pst-color-link),1)}.bd-toc nav>.nav{border-left:1px solid #eee}.bd-toc nav>.nav .nav{border-left:none}.bd-toc.show nav,.bd-toc:hover nav{max-height:90vh;opacity:1;overflow-y:auto}.bd-toc.show .tocsection:after,.bd-toc:hover .tocsection:after{opacity:0}@media (max-width:768px){.bd-toc nav{max-height:90vh;opacity:1;overflow-y:auto}.bd-toc .tocsection:after{opacity:0}}.bd-toc .tocsection{padding:.5rem 0 .5rem 1rem!important}.bd-toc .tocsection:after{content:"\f107";font-family:Font Awesome\ 5 Free;font-weight:900;padding-left:.5em;transition:opacity .3s ease}.bd-toc .toc-entry a{padding:.125rem 1rem!important}.bd-toc div.editthispage{display:none}input.sidebar-toggle{display:none;position:absolute}@media (min-width:768px){input#__navigation:checked~.container-xl #site-navigation{visibility:hidden;opacity:0;margin-left:-275px}input#__navigation:checked~.container-xl #main-content{padding-left:4rem;padding-right:4rem}}@media (max-width:768px){input#__navigation:not(:checked)~.container-xl #site-navigation{visibility:hidden;opacity:0;margin-left:-75%}}@media (max-width:768px){input#__page-toc:not(:checked)~.container-xl .bd-toc{visibility:hidden;opacity:0;margin-right:-75%}}label.overlay{height:0;opacity:0;position:fixed;top:0;transition:width 0ms,height 0ms,opacity .25s ease-out;width:0}label.overlay.overlay-navbar{background-color:rgba(0,0,0,.54)}@media (max-width:768px){input:checked+label.overlay{height:100%;opacity:1;width:100%}input:checked+label.overlay.overlay-navbar{z-index:1099}input:checked+label.overlay.overlay-pagetoc{z-index:1019}}.headerbtn{justify-content:center;background-color:#fff;color:#5a5a5a;cursor:pointer;border:none;padding:.1rem .5rem;margin:0 .1rem}.headerbtn,.headerbtn span{display:flex;align-items:center}.headerbtn i,.headerbtn img{margin:auto;width:1em;text-align:center;font-size:1.5em}.menu-dropdown__content:hover,.menu-dropdown__trigger:hover+.menu-dropdown__content{visibility:visible;opacity:1}.menu-dropdown__content{position:absolute;visibility:hidden;opacity:0;transform:translateX(-75%);transition:opacity .2s ease-out;width:10rem;border-radius:.4em;box-shadow:0 3px 10px 0 rgba(0,0,0,.25);padding:.5em;background-color:#fff}.menu-dropdown__content .headerbtn{justify-content:left;padding:.1rem 0}.menu-dropdown__content ul{list-style:none;padding-left:0;margin-bottom:0}.menu-dropdown__content span{display:flex}.menu-dropdown__content span.headerbtn__icon-container{width:2em}.menu-dropdown__content span.headerbtn__text-container{flex-grow:1;margin-left:.5em}.menu-dropdown__content i,.menu-dropdown__content img{font-size:1.2em}div.header-article-main .header-article__left a,div.header-article-main .header-article__left button,div.header-article-main .header-article__left label,div.header-article-main .header-article__right a,div.header-article-main .header-article__right button,div.header-article-main .header-article__right label{color:#5a5a5a}div.header-article-main .header-article__left a:focus,div.header-article-main .header-article__left a:hover,div.header-article-main .header-article__left button:focus,div.header-article-main .header-article__left button:hover,div.header-article-main .header-article__left label:focus,div.header-article-main .header-article__left label:hover,div.header-article-main .header-article__right a:focus,div.header-article-main .header-article__right a:hover,div.header-article-main .header-article__right button:focus,div.header-article-main .header-article__right button:hover,div.header-article-main .header-article__right label:focus,div.header-article-main .header-article__right label:hover{color:#000;box-shadow:none;text-decoration:none}.headerbtn-page-toc{display:block}@media (min-width:768px){.headerbtn-page-toc{display:none}}dt:target,span.highlighted{background-color:rgba(243,119,38,.25882352941176473)}.admonition{border-radius:.4em;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)}.admonition.seealso{border-color:#28a745}.admonition.seealso .admonition-title{background-color:rgba(40,167,70,.1)}.admonition.seealso .admonition-title:before{color:#28a745;content:"\f064"}code{font-size:87.5%!important}pre{border-radius:.4em}pre::-webkit-scrollbar{width:.3rem;height:.3rem}pre::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:.25rem}pre::-webkit-scrollbar-thumb:hover{background:#a0a0a0}div[class*=highlight-],pre{clear:none}.highlighttable .linenos{vertical-align:baseline}div.highlight{background:none;margin-bottom:1em}.cm-s-default{font-family:var(--jp-code-font-family);font-size:var(--jp-code-font-size);line-height:var(--jp-code-line-height)}.CodeMirror-focused{background-color:var(--jp-cell-editor-active-background)!important;border:var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);margin:-1px}dl.field-list dd,dl.simple dd{margin-left:1.5em}dl.footnote span.fn-backref{font-size:1em;padding-left:.1em}dl.footnote dd{font-size:.9em;margin-left:3em}.footnote-reference,a.bibtex.internal{font-size:1em}dl.glossary dd{margin-left:1.5em}img{max-width:100%}img.align-center{margin-left:auto;margin-right:auto;display:block}img.align-left{clear:left;float:left;margin-right:1em}img.align-right{clear:right;float:right;margin-left:1em}div.figure{width:100%;margin-bottom:1em;text-align:center}div.figure.align-left{text-align:left}div.figure.align-left p.caption{margin-left:0}div.figure.align-right{text-align:right}div.figure.align-right p.caption{margin-right:0}div.figure p.caption{margin:.5em 10%}div.figure.margin-caption p.caption,div.figure.margin p.caption{margin:.5em 0}div.figure.margin-caption p.caption{text-align:left}div.figure span.caption-number{font-weight:700}div.figure span{font-size:.9rem}label.margin-toggle{margin-bottom:0}label.margin-toggle.marginnote-label{display:none}label.margin-toggle sup{user-select:none}@media (max-width:768px){label.margin-toggle{cursor:pointer;color:#0071bc}label.margin-toggle.marginnote-label{display:inline}label.margin-toggle.marginnote-label:after{content:"\2295"}}input.margin-toggle{display:none}@media (max-width:768px){input.margin-toggle:checked+.marginnote,input.margin-toggle:checked+.sidenote{display:block;float:left;left:1rem;clear:both;width:95%;margin:1rem 2.5%;position:relative}}span.marginnote,span.sidenote{width:40%;float:right;background-color:unset;font-size:.9em;border-left:none}span.marginnote sup,span.sidenote sup{user-select:none}@media (min-width:768px){span.marginnote,span.sidenote{border:none;width:39.85714%;margin:0 -42.85714% 0 0;clear:right}span.marginnote p.sidebar-title,span.sidenote p.sidebar-title{margin-bottom:.1em}}@media (max-width:768px){span.marginnote,span.sidenote{display:none}}.cell.tag_margin,.cell.tag_popout,aside.margin,div.margin,figure.margin{width:40%;float:right;background-color:unset;border-left:1px solid #a4a6a7;font-size:.9em}@media (min-width:768px){.cell.tag_margin,.cell.tag_popout,aside.margin,div.margin,figure.margin{border:none;width:39.85714%;margin:0 -42.85714% 0 0;clear:right}.cell.tag_margin p.sidebar-title,.cell.tag_popout p.sidebar-title,aside.margin p.sidebar-title,div.margin p.sidebar-title,figure.margin p.sidebar-title{margin-bottom:.1em}}.cell.tag_margin div.cell.tag_margin .cell_output,.cell.tag_popout div.cell.tag_margin .cell_output,aside.margin div.cell.tag_margin .cell_output,div.margin div.cell.tag_margin .cell_output,figure.margin div.cell.tag_margin .cell_output{padding-left:0}div.figure.margin-caption figcaption,div.figure.margin-caption p.caption,figure.margin-caption figcaption{width:40%;float:right;background-color:unset;border-left:1px solid #a4a6a7;font-size:.9em}@media (min-width:768px){div.figure.margin-caption figcaption,div.figure.margin-caption p.caption,figure.margin-caption figcaption{border:none;width:39.85714%;margin:0 -42.85714% 0 0;clear:right}div.figure.margin-caption figcaption p.sidebar-title,div.figure.margin-caption p.caption p.sidebar-title,figure.margin-caption figcaption p.sidebar-title{margin-bottom:.1em}}@media (min-width:768px){.full-width,.full_width,div.cell.tag_full-width,div.cell.tag_full_width{max-width:142.85714%;width:142.85714%}}.margin-caption figcaption{text-align:left}div.math{position:relative;display:flex;flex-direction:row-reverse;align-items:center}div.math .headerlink{font-size:1em;padding:0 .2em;margin-left:0}div.math .headerlink:hover{opacity:1}div.math:hover .headerlink{opacity:.5}span.eqno{font-size:1.2em;margin-left:.5em}.MathJax{overflow-x:auto;margin-right:auto!important;margin-left:auto!important;overflow-y:hidden}.MathJax::-webkit-scrollbar{width:.3rem;height:.3rem}.MathJax::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:.25rem}.MathJax::-webkit-scrollbar-thumb:hover{background:#a0a0a0}p~div.math{margin-top:-1.15rem}blockquote{margin:1em;padding:.2em 1.5em;border-left:4px solid #ccc}blockquote.epigraph,blockquote.highlights,blockquote.pull-quote{font-size:1.25em;border-left:none}blockquote div>p{margin-bottom:.5em}blockquote div>p+p.attribution{font-style:normal;font-size:.9em;text-align:right;color:#6c757d;padding-right:2em}aside.sidebar:not(.margin),div.sidebar:not(.margin){background-color:unset;padding:1em;border-radius:.4em;border-color:#aaa}@media (min-width:992px){aside.sidebar:not(.margin),div.sidebar:not(.margin){width:65%;margin:0 -35% 0 3%}}div.tableofcontents-wrapper p.caption{font-weight:600!important;margin-bottom:0!important}div.toctree-wrapper p.caption{font-size:1.4em}div.toctree-wrapper>ul{padding-left:1.5em}div.toctree-wrapper>ul>li>a{font-size:1.1em}div.contents{border-radius:.4em;padding:1em 1em 2em}div.contents p.topic-title{font-size:1.5em;padding:0 0 0 .5em;margin-bottom:0}div.contents>ul{list-style:none;padding-left:1em}div.contents>ul>li>ul{padding-left:1.5em}div.contents>ul>li>p>a{font-size:1.2em;margin-bottom:.5em}@media print{#jb-print-toc{margin-bottom:1.5rem}#jb-print-toc .section-nav{border-left:0;list-style-type:disc;margin-left:3em}#jb-print-toc .section-nav a{text-decoration:none;padding-left:0}#jb-print-toc .section-nav li{display:list-item!important}#jb-print-toc .section-nav .nav{display:none}}ul.ablog-archive,ul.postlist{padding-left:0}ul.postlist>li>p:first-child{font-size:1.5em}ul.postlist li+li{margin-top:2em}ul.postlist li>p>a{font-style:normal;font-size:1.3em}div.bd-sidebar h2{font-size:1.5em}div.bd-sidebar h3{font-size:1.4em}div.bd-sidebar>ul{list-style:none;padding-left:0}@media only print{div.utterances,hypothesis-sidebar{display:none}}div.cell div.highlight{margin-bottom:0}div.cell div.cell_input,div.cell div.cell_output pre{border-radius:.4em;border:1px solid #ccc}div.cell div.cell_output{padding-right:0}div.cell.tag_output_scroll div.cell_output,div.cell.tag_scroll-output div.cell_output{max-height:24em;overflow-y:auto}div.cell.tag_output_scroll div.cell_output::-webkit-scrollbar,div.cell.tag_scroll-output div.cell_output::-webkit-scrollbar{width:.3rem;height:.3rem}div.cell.tag_output_scroll div.cell_output::-webkit-scrollbar-thumb,div.cell.tag_scroll-output div.cell_output::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:.25rem}div.cell.tag_output_scroll div.cell_output::-webkit-scrollbar-thumb:hover,div.cell.tag_scroll-output div.cell_output::-webkit-scrollbar-thumb:hover{background:#a0a0a0}@media print{div.cell.tag_output_scroll div.cell_output,div.cell.tag_scroll-output div.cell_output{max-height:unset;overflow-y:visible}}div.cell.tag_scroll-input div.cell_input{max-height:24em;overflow-y:auto}div.cell.tag_scroll-input div.cell_input::-webkit-scrollbar{width:.3rem;height:.3rem}div.cell.tag_scroll-input div.cell_input::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:.25rem}div.cell.tag_scroll-input div.cell_input::-webkit-scrollbar-thumb:hover{background:#a0a0a0}@media print{div.cell.tag_scroll-input div.cell_input{max-height:unset;overflow-y:visible}}div.sphinx-tabs>div.sphinx-menu{padding:0}div.sphinx-tabs>div.sphinx-menu>a.item{width:auto;margin:0 0 -1px}.bd-sidebar div#rtd-footer-container{position:sticky;bottom:0}.bd-sidebar .rst-versions.rst-badge{position:unset;font-size:.9em}.bd-sidebar .rst-versions.rst-badge .rst-current-version{display:flex;align-items:center;gap:.2rem;height:2.5rem;transition:background-color .2s ease-out;background-color:#fff;color:#5a5a5a;border-top:1px solid rgba(0,0,0,.1)}@media (max-width:768px){.bd-sidebar .rst-versions.rst-badge .rst-current-version{height:3rem}}.bd-sidebar .rst-versions.rst-badge .rst-current-version:hover{background-color:rgba(var(--pst-color-sidebar-expander-background-hover),1);cursor:pointer}.bd-sidebar .rst-versions.rst-badge .rst-current-version .fa{color:#5a5a5a}.bd-sidebar .rst-versions.rst-badge .rst-current-version .fa-book{float:unset;margin-right:auto}.bd-sidebar .rst-versions.rst-badge .rst-current-version .fa-book:after{content:"Read the Docs";font-family:sans-serif;font-weight:700;margin-left:.2em}.bd-sidebar .rst-versions.rst-badge .rst-other-versions dt{color:#ccc}.thebelab-cell{border:none!important;margin-right:.5em!important}.thebelab-cell .thebelab-input{padding-left:10px!important}.cell.docutils.container{padding-right:0!important}button.thebe-launch-button{height:2.5em;font-size:1em}#search-documentation,#search-documentation~form,#search-documentation~p{display:none}div#search-results>h2{margin-top:0}ul.search{margin:0;list-style:none}ul.search li{background-image:none;margin-bottom:1em;padding:0 0 1em;border-bottom:1px solid rgba(0,0,0,.1)}ul.search li>a{font-size:1.2em}ul.search li div.context,ul.search li p.context{margin:.5em 0 0}ul.search li div.context a:before,ul.search li p.context a:before{content:"#";padding-right:.2em;color:#aaa} \ No newline at end of file diff --git a/docs/build/html/_static/styles/theme.css b/docs/build/html/_static/styles/theme.css new file mode 100644 index 00000000..22779d96 --- /dev/null +++ b/docs/build/html/_static/styles/theme.css @@ -0,0 +1,134 @@ +/* Provided by Sphinx's 'basic' theme, and included in the final set of assets */ +@import "../basic.css"; + +:root { + /***************************************************************************** + * Theme config + **/ + --pst-header-height: 60px; + + /***************************************************************************** + * Font size + **/ + --pst-font-size-base: 15px; /* base font size - applied at body / html level */ + + /* heading font sizes */ + --pst-font-size-h1: 36px; + --pst-font-size-h2: 32px; + --pst-font-size-h3: 26px; + --pst-font-size-h4: 21px; + --pst-font-size-h5: 18px; + --pst-font-size-h6: 16px; + + /* smaller then heading font sizes*/ + --pst-font-size-milli: 12px; + + --pst-sidebar-font-size: 0.9em; + --pst-sidebar-caption-font-size: 0.9em; + + /***************************************************************************** + * Font family + **/ + /* These are adapted from https://systemfontstack.com/ */ + --pst-font-family-base-system: -apple-system, BlinkMacSystemFont, Segoe UI, + "Helvetica Neue", Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, + Segoe UI Symbol; + --pst-font-family-monospace-system: "SFMono-Regular", Menlo, Consolas, Monaco, + Liberation Mono, Lucida Console, monospace; + + --pst-font-family-base: var(--pst-font-family-base-system); + --pst-font-family-heading: var(--pst-font-family-base); + --pst-font-family-monospace: var(--pst-font-family-monospace-system); + + /***************************************************************************** + * Color + * + * Colors are defined in rgb string way, "red, green, blue" + **/ + --pst-color-primary: 19, 6, 84; + --pst-color-success: 40, 167, 69; + --pst-color-info: 0, 123, 255; /*23, 162, 184;*/ + --pst-color-warning: 255, 193, 7; + --pst-color-danger: 220, 53, 69; + --pst-color-text-base: 51, 51, 51; + + --pst-color-h1: var(--pst-color-primary); + --pst-color-h2: var(--pst-color-primary); + --pst-color-h3: var(--pst-color-text-base); + --pst-color-h4: var(--pst-color-text-base); + --pst-color-h5: var(--pst-color-text-base); + --pst-color-h6: var(--pst-color-text-base); + --pst-color-paragraph: var(--pst-color-text-base); + --pst-color-link: 0, 91, 129; + --pst-color-link-hover: 227, 46, 0; + --pst-color-headerlink: 198, 15, 15; + --pst-color-headerlink-hover: 255, 255, 255; + --pst-color-preformatted-text: 34, 34, 34; + --pst-color-preformatted-background: 250, 250, 250; + --pst-color-inline-code: 232, 62, 140; + + --pst-color-active-navigation: 19, 6, 84; + --pst-color-navbar-link: 77, 77, 77; + --pst-color-navbar-link-hover: var(--pst-color-active-navigation); + --pst-color-navbar-link-active: var(--pst-color-active-navigation); + --pst-color-sidebar-link: 77, 77, 77; + --pst-color-sidebar-link-hover: var(--pst-color-active-navigation); + --pst-color-sidebar-link-active: var(--pst-color-active-navigation); + --pst-color-sidebar-expander-background-hover: 244, 244, 244; + --pst-color-sidebar-caption: 77, 77, 77; + --pst-color-toc-link: 119, 117, 122; + --pst-color-toc-link-hover: var(--pst-color-active-navigation); + --pst-color-toc-link-active: var(--pst-color-active-navigation); + + /***************************************************************************** + * Icon + **/ + + /* font awesome icons*/ + --pst-icon-check-circle: "\f058"; + --pst-icon-info-circle: "\f05a"; + --pst-icon-exclamation-triangle: "\f071"; + --pst-icon-exclamation-circle: "\f06a"; + --pst-icon-times-circle: "\f057"; + --pst-icon-lightbulb: "\f0eb"; + + /***************************************************************************** + * Admonitions + **/ + + --pst-color-admonition-default: var(--pst-color-info); + --pst-color-admonition-note: var(--pst-color-info); + --pst-color-admonition-attention: var(--pst-color-warning); + --pst-color-admonition-caution: var(--pst-color-warning); + --pst-color-admonition-warning: var(--pst-color-warning); + --pst-color-admonition-danger: var(--pst-color-danger); + --pst-color-admonition-error: var(--pst-color-danger); + --pst-color-admonition-hint: var(--pst-color-success); + --pst-color-admonition-tip: var(--pst-color-success); + --pst-color-admonition-important: var(--pst-color-success); + + --pst-icon-admonition-default: var(--pst-icon-info-circle); + --pst-icon-admonition-note: var(--pst-icon-info-circle); + --pst-icon-admonition-attention: var(--pst-icon-exclamation-circle); + --pst-icon-admonition-caution: var(--pst-icon-exclamation-triangle); + --pst-icon-admonition-warning: var(--pst-icon-exclamation-triangle); + --pst-icon-admonition-danger: var(--pst-icon-exclamation-triangle); + --pst-icon-admonition-error: var(--pst-icon-times-circle); + --pst-icon-admonition-hint: var(--pst-icon-lightbulb); + --pst-icon-admonition-tip: var(--pst-icon-lightbulb); + --pst-icon-admonition-important: var(--pst-icon-exclamation-circle); + + /***************************************************************************** + * versionmodified + **/ + + --pst-color-versionmodified-default: var(--pst-color-info); + --pst-color-versionmodified-added: var(--pst-color-success); + --pst-color-versionmodified-changed: var(--pst-color-warning); + --pst-color-versionmodified-deprecated: var(--pst-color-danger); + + --pst-icon-versionmodified-default: var(--pst-icon-exclamation-circle); + --pst-icon-versionmodified-added: var(--pst-icon-exclamation-circle); + --pst-icon-versionmodified-changed: var(--pst-icon-exclamation-circle); + --pst-icon-versionmodified-deprecated: var(--pst-icon-exclamation-circle); +} diff --git a/docs/build/html/_static/underscore-1.13.1.js b/docs/build/html/_static/underscore-1.13.1.js new file mode 100644 index 00000000..ffd77af9 --- /dev/null +++ b/docs/build/html/_static/underscore-1.13.1.js @@ -0,0 +1,2042 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define('underscore', factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () { + var current = global._; + var exports = global._ = factory(); + exports.noConflict = function () { global._ = current; return exports; }; + }())); +}(this, (function () { + // Underscore.js 1.13.1 + // https://underscorejs.org + // (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors + // Underscore may be freely distributed under the MIT license. + + // Current version. + var VERSION = '1.13.1'; + + // Establish the root object, `window` (`self`) in the browser, `global` + // on the server, or `this` in some virtual machines. We use `self` + // instead of `window` for `WebWorker` support. + var root = typeof self == 'object' && self.self === self && self || + typeof global == 'object' && global.global === global && global || + Function('return this')() || + {}; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype; + var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; + + // Create quick reference variables for speed access to core prototypes. + var push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // Modern feature detection. + var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; + + // All **ECMAScript 5+** native function implementations that we hope to use + // are declared here. + var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; + + // Create references to these builtin functions because we override them. + var _isNaN = isNaN, + _isFinite = isFinite; + + // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. + var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + + // The largest integer that can be represented exactly. + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + + // Some functions take a variable number of arguments, or a few expected + // arguments at the beginning and then a variable number of values to operate + // on. This helper accumulates all remaining arguments past the function’s + // argument length (or an explicit `startIndex`), into an array that becomes + // the last argument. Similar to ES6’s "rest parameter". + function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; + } + + // Is a given variable an object? + function isObject(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + } + + // Is a given value equal to null? + function isNull(obj) { + return obj === null; + } + + // Is a given variable undefined? + function isUndefined(obj) { + return obj === void 0; + } + + // Is a given value a boolean? + function isBoolean(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + } + + // Is a given value a DOM element? + function isElement(obj) { + return !!(obj && obj.nodeType === 1); + } + + // Internal function for creating a `toString`-based type tester. + function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return toString.call(obj) === tag; + }; + } + + var isString = tagTester('String'); + + var isNumber = tagTester('Number'); + + var isDate = tagTester('Date'); + + var isRegExp = tagTester('RegExp'); + + var isError = tagTester('Error'); + + var isSymbol = tagTester('Symbol'); + + var isArrayBuffer = tagTester('ArrayBuffer'); + + var isFunction = tagTester('Function'); + + // Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old + // v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). + var nodelist = root.document && root.document.childNodes; + if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; + } + + var isFunction$1 = isFunction; + + var hasObjectTag = tagTester('Object'); + + // In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. + // In IE 11, the most common among them, this problem also applies to + // `Map`, `WeakMap` and `Set`. + var hasStringTagBug = ( + supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + + var isDataView = tagTester('DataView'); + + // In IE 10 - Edge 13, we need a different heuristic + // to determine whether an object is a `DataView`. + function ie10IsDataView(obj) { + return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); + } + + var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); + + // Is a given value an array? + // Delegates to ECMA5's native `Array.isArray`. + var isArray = nativeIsArray || tagTester('Array'); + + // Internal function to check whether `key` is an own property name of `obj`. + function has$1(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + } + + var isArguments = tagTester('Arguments'); + + // Define a fallback version of the method in browsers (ahem, IE < 9), where + // there isn't any inspectable "Arguments" type. + (function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has$1(obj, 'callee'); + }; + } + }()); + + var isArguments$1 = isArguments; + + // Is a given object a finite number? + function isFinite$1(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); + } + + // Is the given value `NaN`? + function isNaN$1(obj) { + return isNumber(obj) && _isNaN(obj); + } + + // Predicate-generating function. Often useful outside of Underscore. + function constant(value) { + return function() { + return value; + }; + } + + // Common internal logic for `isArrayLike` and `isBufferLike`. + function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; + } + } + + // Internal helper to generate a function to obtain property `key` from `obj`. + function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; + } + + // Internal helper to obtain the `byteLength` property of an object. + var getByteLength = shallowProperty('byteLength'); + + // Internal helper to determine whether we should spend extensive checks against + // `ArrayBuffer` et al. + var isBufferLike = createSizePropertyCheck(getByteLength); + + // Is a given value a typed array? + var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; + function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : + isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); + } + + var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); + + // Internal helper to obtain the `length` property of an object. + var getLength = shallowProperty('length'); + + // Internal helper to create a simple lookup structure. + // `collectNonEnumProps` used to depend on `_.contains`, but this led to + // circular imports. `emulatedSet` is a one-off solution that only works for + // arrays of strings. + function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key]; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; + } + + // Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't + // be iterated by `for key in ...` and thus missed. Extends `keys` in place if + // needed. + function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = isFunction$1(constructor) && constructor.prototype || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } + } + + // Retrieve the names of an object's own properties. + // Delegates to **ECMAScript 5**'s native `Object.keys`. + function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has$1(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + } + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || isArguments$1(obj) + )) return length === 0; + return getLength(keys(obj)) === 0; + } + + // Returns whether an object has a given set of `key:value` pairs. + function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; + } + + // If Underscore is called as a function, it returns a wrapped object that can + // be used OO-style. This wrapper holds altered versions of all functions added + // through `_.mixin`. Wrapped objects may be chained. + function _$1(obj) { + if (obj instanceof _$1) return obj; + if (!(this instanceof _$1)) return new _$1(obj); + this._wrapped = obj; + } + + _$1.VERSION = VERSION; + + // Extracts the result from a wrapped and chained object. + _$1.prototype.value = function() { + return this._wrapped; + }; + + // Provide unwrapping proxies for some methods used in engine operations + // such as arithmetic and JSON stringification. + _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; + + _$1.prototype.toString = function() { + return String(this._wrapped); + }; + + // Internal function to wrap or shallow-copy an ArrayBuffer, + // typed array or DataView to a new view, reusing the buffer. + function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + getByteLength(bufferSource) + ); + } + + // We use this string twice, so give it a name for minification. + var tagDataView = '[object DataView]'; + + // Internal recursive comparison function for `_.isEqual`. + function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); + } + + // Internal recursive comparison function for `_.isEqual`. + function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _$1) a = a._wrapped; + if (b instanceof _$1) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { + if (!isDataView$1(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } + + var areArrays = className === '[object Array]'; + if (!areArrays && isTypedArray$1(a)) { + var byteLength = getByteLength(a); + if (byteLength !== getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; + + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && + isFunction$1(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } + + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; + } + + // Perform a deep comparison to check if two objects are equal. + function isEqual(a, b) { + return eq(a, b); + } + + // Retrieve all the enumerable property names of an object. + function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + } + + // Since the regular `Object.prototype.toString` type tests don't work for + // some types in IE 11, we use a fingerprinting heuristic instead, based + // on the methods. It's not great, but it's the best we got. + // The fingerprint method lists are defined below. + function ie11fingerprint(methods) { + var length = getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!isFunction$1(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); + }; + } + + // In the interest of compact minification, we write + // each string in the fingerprints only once. + var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + + // `Map`, `WeakMap` and `Set` each have slightly different + // combinations of the above sublists. + var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + + var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); + + var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); + + var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); + + var isWeakSet = tagTester('WeakSet'); + + // Retrieve the values of an object's properties. + function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; + } + return values; + } + + // Convert an object into a list of `[key, value]` pairs. + // The opposite of `_.object` with one argument. + function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; + } + + // Invert the keys and values of an object. The values must be serializable. + function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; + } + + // Return a sorted list of the function names available on the object. + function functions(obj) { + var names = []; + for (var key in obj) { + if (isFunction$1(obj[key])) names.push(key); + } + return names.sort(); + } + + // An internal function for creating assigner functions. + function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; + } + + // Extend a given object with all the properties in passed-in object(s). + var extend = createAssigner(allKeys); + + // Assigns a given object with all the own properties in the passed-in + // object(s). + // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + var extendOwn = createAssigner(keys); + + // Fill in a given object with default properties. + var defaults = createAssigner(allKeys, true); + + // Create a naked function reference for surrogate-prototype-swapping. + function ctor() { + return function(){}; + } + + // An internal function for creating a new object that inherits from another. + function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; + } + + // Creates an object that inherits from the given prototype object. + // If additional properties are provided then they will be added to the + // created object. + function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; + } + + // Create a (shallow-cloned) duplicate of an object. + function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); + } + + // Invokes `interceptor` with the `obj` and then returns `obj`. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + function tap(obj, interceptor) { + interceptor(obj); + return obj; + } + + // Normalize a (deep) property `path` to array. + // Like `_.iteratee`, this function can be customized. + function toPath$1(path) { + return isArray(path) ? path : [path]; + } + _$1.toPath = toPath$1; + + // Internal wrapper for `_.toPath` to enable minification. + // Similar to `cb` for `_.iteratee`. + function toPath(path) { + return _$1.toPath(path); + } + + // Internal function to obtain a nested property in `obj` along `path`. + function deepGet(obj, path) { + var length = path.length; + for (var i = 0; i < length; i++) { + if (obj == null) return void 0; + obj = obj[path[i]]; + } + return length ? obj : void 0; + } + + // Get the value of the (deep) property on `path` from `object`. + // If any property in `path` does not exist or if the value is + // `undefined`, return `defaultValue` instead. + // The `path` is normalized through `_.toPath`. + function get(object, path, defaultValue) { + var value = deepGet(object, toPath(path)); + return isUndefined(value) ? defaultValue : value; + } + + // Shortcut function for checking if an object has a given property directly on + // itself (in other words, not on a prototype). Unlike the internal `has` + // function, this public version can also traverse nested properties. + function has(obj, path) { + path = toPath(path); + var length = path.length; + for (var i = 0; i < length; i++) { + var key = path[i]; + if (!has$1(obj, key)) return false; + obj = obj[key]; + } + return !!length; + } + + // Keep the identity function around for default iteratees. + function identity(value) { + return value; + } + + // Returns a predicate for checking whether an object has a given set of + // `key:value` pairs. + function matcher(attrs) { + attrs = extendOwn({}, attrs); + return function(obj) { + return isMatch(obj, attrs); + }; + } + + // Creates a function that, when passed an object, will traverse that object’s + // properties down the given `path`, specified as an array of keys or indices. + function property(path) { + path = toPath(path); + return function(obj) { + return deepGet(obj, path); + }; + } + + // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. + function optimizeCb(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + // The 2-argument case is omitted because we’re not using it. + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; + } + + // An internal function to generate callbacks that can be applied to each + // element in a collection, returning the desired result — either `_.identity`, + // an arbitrary callback, a property matcher, or a property accessor. + function baseIteratee(value, context, argCount) { + if (value == null) return identity; + if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (isObject(value) && !isArray(value)) return matcher(value); + return property(value); + } + + // External wrapper for our callback generator. Users may customize + // `_.iteratee` if they want additional predicate/iteratee shorthand styles. + // This abstraction hides the internal-only `argCount` argument. + function iteratee(value, context) { + return baseIteratee(value, context, Infinity); + } + _$1.iteratee = iteratee; + + // The function we call internally to generate a callback. It invokes + // `_.iteratee` if overridden, otherwise `baseIteratee`. + function cb(value, context, argCount) { + if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + return baseIteratee(value, context, argCount); + } + + // Returns the results of applying the `iteratee` to each element of `obj`. + // In contrast to `_.map` it returns an object. + function mapObject(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var _keys = keys(obj), + length = _keys.length, + results = {}; + for (var index = 0; index < length; index++) { + var currentKey = _keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + } + + // Predicate-generating function. Often useful outside of Underscore. + function noop(){} + + // Generates a function for a given object that returns a given property. + function propertyOf(obj) { + if (obj == null) return noop; + return function(path) { + return get(obj, path); + }; + } + + // Run a function **n** times. + function times(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + } + + // Return a random integer between `min` and `max` (inclusive). + function random(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + } + + // A (possibly faster) way to get the current timestamp as an integer. + var now = Date.now || function() { + return new Date().getTime(); + }; + + // Internal helper to generate functions for escaping and unescaping strings + // to/from HTML interpolation. + function createEscaper(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped. + var source = '(?:' + keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + } + + // Internal list of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + + // Function for escaping strings to HTML interpolation. + var _escape = createEscaper(escapeMap); + + // Internal list of HTML entities for unescaping. + var unescapeMap = invert(escapeMap); + + // Function for unescaping strings from HTML interpolation. + var _unescape = createEscaper(unescapeMap); + + // By default, Underscore uses ERB-style template delimiters. Change the + // following template settings to use alternative delimiters. + var templateSettings = _$1.templateSettings = { + evaluate: /<%([\s\S]+?)%>/g, + interpolate: /<%=([\s\S]+?)%>/g, + escape: /<%-([\s\S]+?)%>/g + }; + + // When customizing `_.templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; + + function escapeChar(match) { + return '\\' + escapes[match]; + } + + // In order to prevent third-party code injection through + // `_.templateSettings.variable`, we test it against the following regular + // expression. It is intentionally a bit more liberal than just matching valid + // identifiers, but still prevents possible loopholes through defaults or + // destructuring assignment. + var bareIdentifier = /^\s*(\w|\$)+\s*$/; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. + function template(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = defaults({}, settings, _$1.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escapeRegExp, escapeChar); + index = offset + match.length; + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + + // Adobe VMs need the match returned to produce the correct offset. + return match; + }); + source += "';\n"; + + var argument = settings.variable; + if (argument) { + // Insure against third-party code injection. (CVE-2021-23358) + if (!bareIdentifier.test(argument)) throw new Error( + 'variable is not a bare identifier: ' + argument + ); + } else { + // If a variable is not specified, place data values in local scope. + source = 'with(obj||{}){\n' + source + '}\n'; + argument = 'obj'; + } + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; + + var render; + try { + render = new Function(argument, '_', source); + } catch (e) { + e.source = source; + throw e; + } + + var template = function(data) { + return render.call(this, data, _$1); + }; + + // Provide the compiled source as a convenience for precompilation. + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; + } + + // Traverses the children of `obj` along `path`. If a child is a function, it + // is invoked with its parent as context. Returns the value of the final + // child, or `fallback` if any child is undefined. + function result(obj, path, fallback) { + path = toPath(path); + var length = path.length; + if (!length) { + return isFunction$1(fallback) ? fallback.call(obj) : fallback; + } + for (var i = 0; i < length; i++) { + var prop = obj == null ? void 0 : obj[path[i]]; + if (prop === void 0) { + prop = fallback; + i = length; // Ensure we don't continue iterating. + } + obj = isFunction$1(prop) ? prop.call(obj) : prop; + } + return obj; + } + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + function uniqueId(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + } + + // Start chaining a wrapped Underscore object. + function chain(obj) { + var instance = _$1(obj); + instance._chain = true; + return instance; + } + + // Internal function to execute `sourceFunc` bound to `context` with optional + // `args`. Determines whether to execute a function as a constructor or as a + // normal function. + function executeBound(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (isObject(result)) return result; + return self; + } + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. `_` acts + // as a placeholder by default, allowing any combination of arguments to be + // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument. + var partial = restArguments(function(func, boundArgs) { + var placeholder = partial.placeholder; + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; + }); + + partial.placeholder = _$1; + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). + var bind = restArguments(function(func, context, args) { + if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); + var bound = restArguments(function(callArgs) { + return executeBound(func, bound, context, this, args.concat(callArgs)); + }); + return bound; + }); + + // Internal helper for collection methods to determine whether a collection + // should be iterated as an array or as an object. + // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength + // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 + var isArrayLike = createSizePropertyCheck(getLength); + + // Internal implementation of a recursive `flatten` function. + function flatten$1(input, depth, strict, output) { + output = output || []; + if (!depth && depth !== 0) { + depth = Infinity; + } else if (depth <= 0) { + return output.concat(input); + } + var idx = output.length; + for (var i = 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + // Flatten current level of array or arguments object. + if (depth > 1) { + flatten$1(value, depth - 1, strict, output); + idx = output.length; + } else { + var j = 0, len = value.length; + while (j < len) output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; + } + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + var bindAll = restArguments(function(obj, keys) { + keys = flatten$1(keys, false, false); + var index = keys.length; + if (index < 1) throw new Error('bindAll must be passed function names'); + while (index--) { + var key = keys[index]; + obj[key] = bind(obj[key], obj); + } + return obj; + }); + + // Memoize an expensive function by storing its results. + function memoize(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + } + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + var delay = restArguments(function(func, wait, args) { + return setTimeout(function() { + return func.apply(null, args); + }, wait); + }); + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + var defer = partial(delay, _$1, 1); + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + function throttle(func, wait, options) { + var timeout, context, args, result; + var previous = 0; + if (!options) options = {}; + + var later = function() { + previous = options.leading === false ? 0 : now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + + var throttled = function() { + var _now = now(); + if (!previous && options.leading === false) previous = _now; + var remaining = wait - (_now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = _now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + + throttled.cancel = function() { + clearTimeout(timeout); + previous = 0; + timeout = context = args = null; + }; + + return throttled; + } + + // When a sequence of calls of the returned function ends, the argument + // function is triggered. The end of a sequence is defined by the `wait` + // parameter. If `immediate` is passed, the argument function will be + // triggered at the beginning of the sequence instead of at the end. + function debounce(func, wait, immediate) { + var timeout, previous, args, result, context; + + var later = function() { + var passed = now() - previous; + if (wait > passed) { + timeout = setTimeout(later, wait - passed); + } else { + timeout = null; + if (!immediate) result = func.apply(context, args); + // This check is needed because `func` can recursively invoke `debounced`. + if (!timeout) args = context = null; + } + }; + + var debounced = restArguments(function(_args) { + context = this; + args = _args; + previous = now(); + if (!timeout) { + timeout = setTimeout(later, wait); + if (immediate) result = func.apply(context, args); + } + return result; + }); + + debounced.cancel = function() { + clearTimeout(timeout); + timeout = args = context = null; + }; + + return debounced; + } + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + function wrap(func, wrapper) { + return partial(wrapper, func); + } + + // Returns a negated version of the passed-in predicate. + function negate(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + } + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + function compose() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + } + + // Returns a function that will only be executed on and after the Nth call. + function after(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + } + + // Returns a function that will only be executed up to (but not including) the + // Nth call. + function before(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; + } + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + var once = partial(before, 2); + + // Returns the first key on an object that passes a truth test. + function findKey(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = keys(obj), key; + for (var i = 0, length = _keys.length; i < length; i++) { + key = _keys[i]; + if (predicate(obj[key], key, obj)) return key; + } + } + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. + function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; + } + + // Returns the first index on an array-like that passes a truth test. + var findIndex = createPredicateIndexFinder(1); + + // Returns the last index on an array-like that passes a truth test. + var findLastIndex = createPredicateIndexFinder(-1); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + function sortedIndex(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; + } + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. + function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), isNaN$1); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; + } + + // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + var indexOf = createIndexFinder(1, findIndex, sortedIndex); + + // Return the position of the last occurrence of an item in an array, + // or -1 if the item is not included in the array. + var lastIndexOf = createIndexFinder(-1, findLastIndex); + + // Return the first value which passes a truth test. + function find(obj, predicate, context) { + var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var key = keyFinder(obj, predicate, context); + if (key !== void 0 && key !== -1) return obj[key]; + } + + // Convenience version of a common use case of `_.find`: getting the first + // object containing specific `key:value` pairs. + function findWhere(obj, attrs) { + return find(obj, matcher(attrs)); + } + + // The cornerstone for collection functions, an `each` + // implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + function each(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var _keys = keys(obj); + for (i = 0, length = _keys.length; i < length; i++) { + iteratee(obj[_keys[i]], _keys[i], obj); + } + } + return obj; + } + + // Return the results of applying the iteratee to each element. + function map(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + } + + // Internal helper to create a reducing function, iterating left or right. + function createReduce(dir) { + // Wrap code that reassigns argument variables in a separate function than + // the one that accesses `arguments.length` to avoid a perf hit. (#1991) + var reducer = function(obj, iteratee, memo, initial) { + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length, + index = dir > 0 ? 0 : length - 1; + if (!initial) { + memo = obj[_keys ? _keys[index] : index]; + index += dir; + } + for (; index >= 0 && index < length; index += dir) { + var currentKey = _keys ? _keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + }; + + return function(obj, iteratee, memo, context) { + var initial = arguments.length >= 3; + return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); + }; + } + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + var reduce = createReduce(1); + + // The right-associative version of reduce, also known as `foldr`. + var reduceRight = createReduce(-1); + + // Return all the elements that pass a truth test. + function filter(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + } + + // Return all the elements for which a truth test fails. + function reject(obj, predicate, context) { + return filter(obj, negate(cb(predicate)), context); + } + + // Determine whether all of the elements pass a truth test. + function every(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; + } + + // Determine if at least one element in the object passes a truth test. + function some(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; + } + + // Determine if the array or object contains a given item (using `===`). + function contains(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return indexOf(obj, item, fromIndex) >= 0; + } + + // Invoke a method (with arguments) on every item in a collection. + var invoke = restArguments(function(obj, path, args) { + var contextPath, func; + if (isFunction$1(path)) { + func = path; + } else { + path = toPath(path); + contextPath = path.slice(0, -1); + path = path[path.length - 1]; + } + return map(obj, function(context) { + var method = func; + if (!method) { + if (contextPath && contextPath.length) { + context = deepGet(context, contextPath); + } + if (context == null) return void 0; + method = context[path]; + } + return method == null ? method : method.apply(context, args); + }); + }); + + // Convenience version of a common use case of `_.map`: fetching a property. + function pluck(obj, key) { + return map(obj, property(key)); + } + + // Convenience version of a common use case of `_.filter`: selecting only + // objects containing specific `key:value` pairs. + function where(obj, attrs) { + return filter(obj, matcher(attrs)); + } + + // Return the maximum element (or element-based computation). + function max(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = isArrayLike(obj) ? obj : values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = v; + lastComputed = computed; + } + }); + } + return result; + } + + // Return the minimum element (or element-based computation). + function min(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = isArrayLike(obj) ? obj : values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = v; + lastComputed = computed; + } + }); + } + return result; + } + + // Sample **n** random values from a collection using the modern version of the + // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `_.map`. + function sample(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = values(obj); + return obj[random(obj.length - 1)]; + } + var sample = isArrayLike(obj) ? clone(obj) : values(obj); + var length = getLength(sample); + n = Math.max(Math.min(n, length), 0); + var last = length - 1; + for (var index = 0; index < n; index++) { + var rand = random(index, last); + var temp = sample[index]; + sample[index] = sample[rand]; + sample[rand] = temp; + } + return sample.slice(0, n); + } + + // Shuffle a collection. + function shuffle(obj) { + return sample(obj, Infinity); + } + + // Sort the object's values by a criterion produced by an iteratee. + function sortBy(obj, iteratee, context) { + var index = 0; + iteratee = cb(iteratee, context); + return pluck(map(obj, function(value, key, list) { + return { + value: value, + index: index++, + criteria: iteratee(value, key, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + } + + // An internal function used for aggregate "group by" operations. + function group(behavior, partition) { + return function(obj, iteratee, context) { + var result = partition ? [[], []] : {}; + iteratee = cb(iteratee, context); + each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + } + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + var groupBy = group(function(result, value, key) { + if (has$1(result, key)) result[key].push(value); else result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for + // when you know that your index values will be unique. + var indexBy = group(function(result, value, key) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + var countBy = group(function(result, value, key) { + if (has$1(result, key)) result[key]++; else result[key] = 1; + }); + + // Split a collection into two arrays: one whose elements all pass the given + // truth test, and one whose elements all do not pass the truth test. + var partition = group(function(result, value, pass) { + result[pass ? 0 : 1].push(value); + }, true); + + // Safely create a real, live array from anything iterable. + var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; + function toArray(obj) { + if (!obj) return []; + if (isArray(obj)) return slice.call(obj); + if (isString(obj)) { + // Keep surrogate pair characters together. + return obj.match(reStrSymbol); + } + if (isArrayLike(obj)) return map(obj, identity); + return values(obj); + } + + // Return the number of elements in a collection. + function size(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : keys(obj).length; + } + + // Internal `_.pick` helper function to determine whether `key` is an enumerable + // property name of `obj`. + function keyInObj(value, key, obj) { + return key in obj; + } + + // Return a copy of the object only containing the allowed properties. + var pick = restArguments(function(obj, keys) { + var result = {}, iteratee = keys[0]; + if (obj == null) return result; + if (isFunction$1(iteratee)) { + if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); + keys = allKeys(obj); + } else { + iteratee = keyInObj; + keys = flatten$1(keys, false, false); + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; + }); + + // Return a copy of the object without the disallowed properties. + var omit = restArguments(function(obj, keys) { + var iteratee = keys[0], context; + if (isFunction$1(iteratee)) { + iteratee = negate(iteratee); + if (keys.length > 1) context = keys[1]; + } else { + keys = map(flatten$1(keys, false, false), String); + iteratee = function(value, key) { + return !contains(keys, key); + }; + } + return pick(obj, iteratee, context); + }); + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. + function initial(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + } + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. The **guard** check allows it to work with `_.map`. + function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); + } + + // Returns everything but the first entry of the `array`. Especially useful on + // the `arguments` object. Passing an **n** will return the rest N values in the + // `array`. + function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + } + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. + function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); + } + + // Trim out all falsy values from an array. + function compact(array) { + return filter(array, Boolean); + } + + // Flatten out an array, either recursively (by default), or up to `depth`. + // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. + function flatten(array, depth) { + return flatten$1(array, depth, false); + } + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + var difference = restArguments(function(array, rest) { + rest = flatten$1(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); + }); + + // Return a version of the array that does not contain the specified value(s). + var without = restArguments(function(array, otherArrays) { + return difference(array, otherArrays); + }); + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // The faster algorithm will not work with an iteratee if the iteratee + // is not a one-to-one function, so providing an iteratee will disable + // the faster algorithm. + function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; + } + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + var union = restArguments(function(arrays) { + return uniq(flatten$1(arrays, true, true)); + }); + + // Produce an array that contains every item shared between all the + // passed-in arrays. + function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; + } + + // Complement of zip. Unzip accepts an array of arrays and groups + // each array's elements on shared indices. + function unzip(array) { + var length = array && max(array, getLength).length || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; + } + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + var zip = restArguments(unzip); + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. Passing by pairs is the reverse of `_.pairs`. + function object(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + } + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](https://docs.python.org/library/functions.html#range). + function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; + } + + // Chunk a single array into multiple arrays, each containing `count` or fewer + // items. + function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; + } + + // Helper function to continue chaining intermediate results. + function chainResult(instance, obj) { + return instance._chain ? _$1(obj).chain() : obj; + } + + // Add your own custom functions to the Underscore object. + function mixin(obj) { + each(functions(obj), function(name) { + var func = _$1[name] = obj[name]; + _$1.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_$1, args)); + }; + }); + return _$1; + } + + // Add all mutator `Array` functions to the wrapper. + each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _$1.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; + }); + + // Add all accessor `Array` functions to the wrapper. + each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _$1.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; + }); + + // Named Exports + + var allExports = { + __proto__: null, + VERSION: VERSION, + restArguments: restArguments, + isObject: isObject, + isNull: isNull, + isUndefined: isUndefined, + isBoolean: isBoolean, + isElement: isElement, + isString: isString, + isNumber: isNumber, + isDate: isDate, + isRegExp: isRegExp, + isError: isError, + isSymbol: isSymbol, + isArrayBuffer: isArrayBuffer, + isDataView: isDataView$1, + isArray: isArray, + isFunction: isFunction$1, + isArguments: isArguments$1, + isFinite: isFinite$1, + isNaN: isNaN$1, + isTypedArray: isTypedArray$1, + isEmpty: isEmpty, + isMatch: isMatch, + isEqual: isEqual, + isMap: isMap, + isWeakMap: isWeakMap, + isSet: isSet, + isWeakSet: isWeakSet, + keys: keys, + allKeys: allKeys, + values: values, + pairs: pairs, + invert: invert, + functions: functions, + methods: functions, + extend: extend, + extendOwn: extendOwn, + assign: extendOwn, + defaults: defaults, + create: create, + clone: clone, + tap: tap, + get: get, + has: has, + mapObject: mapObject, + identity: identity, + constant: constant, + noop: noop, + toPath: toPath$1, + property: property, + propertyOf: propertyOf, + matcher: matcher, + matches: matcher, + times: times, + random: random, + now: now, + escape: _escape, + unescape: _unescape, + templateSettings: templateSettings, + template: template, + result: result, + uniqueId: uniqueId, + chain: chain, + iteratee: iteratee, + partial: partial, + bind: bind, + bindAll: bindAll, + memoize: memoize, + delay: delay, + defer: defer, + throttle: throttle, + debounce: debounce, + wrap: wrap, + negate: negate, + compose: compose, + after: after, + before: before, + once: once, + findKey: findKey, + findIndex: findIndex, + findLastIndex: findLastIndex, + sortedIndex: sortedIndex, + indexOf: indexOf, + lastIndexOf: lastIndexOf, + find: find, + detect: find, + findWhere: findWhere, + each: each, + forEach: each, + map: map, + collect: map, + reduce: reduce, + foldl: reduce, + inject: reduce, + reduceRight: reduceRight, + foldr: reduceRight, + filter: filter, + select: filter, + reject: reject, + every: every, + all: every, + some: some, + any: some, + contains: contains, + includes: contains, + include: contains, + invoke: invoke, + pluck: pluck, + where: where, + max: max, + min: min, + shuffle: shuffle, + sample: sample, + sortBy: sortBy, + groupBy: groupBy, + indexBy: indexBy, + countBy: countBy, + partition: partition, + toArray: toArray, + size: size, + pick: pick, + omit: omit, + first: first, + head: first, + take: first, + initial: initial, + last: last, + rest: rest, + tail: rest, + drop: rest, + compact: compact, + flatten: flatten, + without: without, + uniq: uniq, + unique: uniq, + union: union, + intersection: intersection, + difference: difference, + unzip: unzip, + transpose: unzip, + zip: zip, + object: object, + range: range, + chunk: chunk, + mixin: mixin, + 'default': _$1 + }; + + // Default Export + + // Add all of the Underscore functions to the wrapper object. + var _ = mixin(allExports); + // Legacy Node.js API. + _._ = _; + + return _; + +}))); +//# sourceMappingURL=underscore-umd.js.map diff --git a/docs/build/html/_static/underscore.js b/docs/build/html/_static/underscore.js new file mode 100644 index 00000000..cf177d42 --- /dev/null +++ b/docs/build/html/_static/underscore.js @@ -0,0 +1,6 @@ +!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define("underscore",r):(n="undefined"!=typeof globalThis?globalThis:n||self,function(){var t=n._,e=n._=r();e.noConflict=function(){return n._=t,e}}())}(this,(function(){ +// Underscore.js 1.13.1 +// https://underscorejs.org +// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. +var n="1.13.1",r="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},t=Array.prototype,e=Object.prototype,u="undefined"!=typeof Symbol?Symbol.prototype:null,o=t.push,i=t.slice,a=e.toString,f=e.hasOwnProperty,c="undefined"!=typeof ArrayBuffer,l="undefined"!=typeof DataView,s=Array.isArray,p=Object.keys,v=Object.create,h=c&&ArrayBuffer.isView,y=isNaN,d=isFinite,g=!{toString:null}.propertyIsEnumerable("toString"),b=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],m=Math.pow(2,53)-1;function j(n,r){return r=null==r?n.length-1:+r,function(){for(var t=Math.max(arguments.length-r,0),e=Array(t),u=0;u=0&&t<=m}}function J(n){return function(r){return null==r?void 0:r[n]}}var G=J("byteLength"),H=K(G),Q=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var X=c?function(n){return h?h(n)&&!q(n):H(n)&&Q.test(a.call(n))}:C(!1),Y=J("length");function Z(n,r){r=function(n){for(var r={},t=n.length,e=0;e":">",'"':""","'":"'","`":"`"},Cn=Ln($n),Kn=Ln(_n($n)),Jn=tn.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Gn=/(.)^/,Hn={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Qn=/\\|'|\r|\n|\u2028|\u2029/g;function Xn(n){return"\\"+Hn[n]}var Yn=/^\s*(\w|\$)+\s*$/;var Zn=0;function nr(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=Mn(n.prototype),i=n.apply(o,u);return _(i)?i:o}var rr=j((function(n,r){var t=rr.placeholder,e=function(){for(var u=0,o=r.length,i=Array(o),a=0;a1)ur(a,r-1,t,e),u=e.length;else for(var f=0,c=a.length;f0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var lr=rr(cr,2);function sr(n,r,t){r=qn(r,t);for(var e,u=nn(n),o=0,i=u.length;o0?0:u-1;o>=0&&o0?a=o>=0?o:Math.max(o+f,a):f=o>=0?Math.min(o+1,f):o+f+1;else if(t&&o&&f)return e[o=t(e,u)]===u?o:-1;if(u!=u)return(o=r(i.call(e,a,f),$))>=0?o+a:-1;for(o=n>0?a:f-1;o>=0&&o0?0:i-1;for(u||(e=r[o?o[a]:a],a+=n);a>=0&&a=3;return r(n,Fn(t,u,4),e,o)}}var Ar=wr(1),xr=wr(-1);function Sr(n,r,t){var e=[];return r=qn(r,t),jr(n,(function(n,t,u){r(n,t,u)&&e.push(n)})),e}function Or(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o=0}var Br=j((function(n,r,t){var e,u;return D(r)?u=r:(r=Nn(r),e=r.slice(0,-1),r=r[r.length-1]),_r(n,(function(n){var o=u;if(!o){if(e&&e.length&&(n=In(n,e)),null==n)return;o=n[r]}return null==o?o:o.apply(n,t)}))}));function Nr(n,r){return _r(n,Rn(r))}function Ir(n,r,t){var e,u,o=-1/0,i=-1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;ao&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))>i||u===-1/0&&o===-1/0)&&(o=n,i=u)}));return o}function Tr(n,r,t){if(null==r||t)return er(n)||(n=jn(n)),n[Wn(n.length-1)];var e=er(n)?En(n):jn(n),u=Y(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i1&&(e=Fn(e,r[1])),r=an(n)):(e=qr,r=ur(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u1&&(t=r[1])):(r=_r(ur(r,!1,!1),String),e=function(n,t){return!Er(r,t)}),Ur(n,e,t)}));function zr(n,r,t){return i.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function Lr(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[0]:zr(n,n.length-r)}function $r(n,r,t){return i.call(n,null==r||t?1:r)}var Cr=j((function(n,r){return r=ur(r,!0,!0),Sr(n,(function(n){return!Er(r,n)}))})),Kr=j((function(n,r){return Cr(n,r)}));function Jr(n,r,t,e){A(r)||(e=t,t=r,r=!1),null!=t&&(t=qn(t,e));for(var u=[],o=[],i=0,a=Y(n);ir?(e&&(clearTimeout(e),e=null),a=c,i=n.apply(u,o),e||(u=o=null)):e||!1===t.trailing||(e=setTimeout(f,l)),i};return c.cancel=function(){clearTimeout(e),a=0,e=u=o=null},c},debounce:function(n,r,t){var e,u,o,i,a,f=function(){var c=zn()-u;r>c?e=setTimeout(f,r-c):(e=null,t||(i=n.apply(a,o)),e||(o=a=null))},c=j((function(c){return a=this,o=c,u=zn(),e||(e=setTimeout(f,r),t&&(i=n.apply(a,o))),i}));return c.cancel=function(){clearTimeout(e),e=o=a=null},c},wrap:function(n,r){return rr(r,n)},negate:fr,compose:function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:cr,once:lr,findKey:sr,findIndex:vr,findLastIndex:hr,sortedIndex:yr,indexOf:gr,lastIndexOf:br,find:mr,detect:mr,findWhere:function(n,r){return mr(n,Dn(r))},each:jr,forEach:jr,map:_r,collect:_r,reduce:Ar,foldl:Ar,inject:Ar,reduceRight:xr,foldr:xr,filter:Sr,select:Sr,reject:function(n,r,t){return Sr(n,fr(qn(r)),t)},every:Or,all:Or,some:Mr,any:Mr,contains:Er,includes:Er,include:Er,invoke:Br,pluck:Nr,where:function(n,r){return Sr(n,Dn(r))},max:Ir,min:function(n,r,t){var e,u,o=1/0,i=1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;ae||void 0===t)return 1;if(tli{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\f95b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\f952"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\f905"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\f907"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\f95c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\f95d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\f95e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\f95f"}.fa-handshake-slash:before{content:"\f960"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\f961"}.fa-head-side-cough-slash:before{content:"\f962"}.fa-head-side-mask:before{content:"\f963"}.fa-head-side-virus:before{content:"\f964"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\f965"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\f913"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\f955"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\f966"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\f967"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\f91a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\f956"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\f968"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\f91e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\f969"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\f96a"}.fa-pump-soap:before{content:"\f96b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\f96c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\f957"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\f96e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\f96f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\f970"}.fa-store-slash:before{content:"\f971"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\f972"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\f941"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\f949"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\f974"}.fa-virus-slash:before{content:"\f975"}.fa-viruses:before{content:"\f976"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.eot b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.eot new file mode 100644 index 0000000000000000000000000000000000000000..a1bc094ab14d8c7d84d8c59aa511de9e69440d0a GIT binary patch literal 133034 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℘oIO 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 |xk~oikk&D!xjeU;p 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.svg b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.svg new file mode 100644 index 00000000..46ad237a --- /dev/null +++ b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.svg @@ -0,0 +1,3570 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.ttf b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..948a2a6cc76a4d7cb692d0d08e352f126ec48a9d GIT binary patch literal 132728 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 A-~a#s literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff new file mode 100644 index 0000000000000000000000000000000000000000..2a89d521e3fadb6ad3bc1738830a2c039bc57272 GIT binary patch literal 89824 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

3G|%UO|%AX>y_DrlqHm5G}x0qqtuK)rJSvbj0n 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 + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.ttf b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5b979039ab28aaae305074541fe39258753ba624 GIT binary patch literal 202616 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%0Dsnd=jSXVj{o3VuMbQarZKj?n9Yp? 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“gU2Ebm7^-Pz)Op! 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
    Bi7ET==w0ED@om}nElpl z`&_a)ga|lT<`MBF0uhNEJkro88uLcdN1N2WxaL+`mw{O<_H}{cDX$E5RP0MZxxKDS z`D@x%uN-6wioaYccIoR!)iRCbDgB4=Nmb(9Dt3vJYa^appFT;7c{sj9r{+(kk1~vD z1g%Sv8jo^se9V2k5<2bVI$7BSmI zJobTPcE!G5!h5XNuB4o@3|@I|g>3E;AAh<24)IeJ_f7J8$zKFz)l%`;rA{B^k8@wo zIXY$i`Fg!_C+7lReTEeo-10NM@?0L}#wYab(%z*H+;Rxq@}u{|@?s9DnCGsu^o_N%>-}f9k9N4zU>tk6nm`CvNyY$>AXkeZ zwO4fd0S`_HxjDd-B7}J!bgVELZXh&e(3c{tSRDeiA;qOX@GH)t2)=b#bsdVFk92r{DqU*Zw?7Z2!D9-6`Et$A^Y0vPKMP^U`lsTi0)aw!+3-al_ za%b+CQoFg|j~?%c#Yu`7SJEJ51WKaF;@?s;37*Ol-}12u#0_!QB-&E+<3yQK>}#S8 zW8w_~RU}s9*bR~1!V6>24O!l@De)=|NkxB#Nz-YGZ{kBpE4IBl|#5@zcBoW&)ohjUq3DeqcU8)>#Y=11)&rU6wH~pwf|%zln?T75+bQvf^H=9lACa+RLi6)27_ozW z!|+7{YAS17SCQ01tkN%RR;^dH1-_we-8z5Xu5aDG>|e12ST4+8KWx887~Hf!euQ-4 zf9^ke0l6Zb{{PY-(7!wn?4H%t4V8r};X}E(tp3Et$G6D0=yY|7%QL!Nn4O)z+>Bja zlYC?hmq3Rjp|{aM7Hxb8!Z^~0jjITWV3LW6QbUHgf6F3Dgd2)saK(v0K@=<1cMD8J z4CNuOw;k0B!N3G+*6XM0GW$4HWAZWj@==t1UU7cj5%;5utM#+?j?GZWHgm)oZ2Xk& zK7}O_GGgt-W2rJR?deM%`~9`n9$v{?+ZNw$UL79wJrCS zMu;G~M=`7R^edy~G|A&*6YqCh$^t$?YN>?&FW0PltGVuFuaVq^rqYp{a`ffM0~M9i z#M}4OH@Z^?dZBj{vos2ib_Wk^!}cy1A%q)YNyW+6iU}noZW$Y@WXEgw7N% zxEJv2t4*(bxVe7DvV$@vm_-xFqizakUlL*ID6Wn9Dfy(A9A9qq^-YFsikJ`N9xHkmLrT<1MrgW9nuhFLR0el?DUwwUkE7>`ETaLBAd@XGZ98W@ra&->U30x8>n3(m2B zQ#w3<;M48#^$RWA(rU3atL~pUaWgoJMCj4tec0+c>BMO7>h-VVo;74pNelbr2rDRgn)C~^~w7I-sW)Y+-4SeoRcFJ2$zQ3ez&@4cAFpvq_dSU5} za)265`ZY_#bh|s_H|p?|$Qdhvid-7)-}=A-J#Oxk4O4hAXQP93@AyRmyol$Wa@h{j z{`1;aG18pm`Pr7Suutvr9I`rtaub#>o9{(m+z#G~LM;@lOMI7yIjV8n%C- z_0CKJy<9pyNAnI#h2=OJ_p@s>*Oqf2_CO*$uMa{T0t#sZ+HOJd4{(j%t~jZ1kq{# zDc#JtMJHXjbB=f5YmzW@X6g7^p#J2Uue>}9JCRmtNR7Ebx7Tk6j)aRgG6l7BWy#UR zHy~(R)qQ#f<%MCh$L(?7Lp^0F8aX*SUzn`rCiDV91)j91EJ3OGCgE_l5sk_L%HLF8 zn9u7X-U{wo4`eUFkG-L>Zrd~d)~&u`AKM|NgJ0#sbJliWTlEgxBe1b*-*g|$Ty8kq z>G1+L=B8?{4;tps0J;Wg9ebBXsmR8d zHNS|b_|-A;bu;?pma&P~r#Z*aVcTJLwG7)Q664#HDKj%8OD(J_8x2~?$)ZOkE|MZx zEWUGJW_KFiOeL_-7jJEFl#U^hy^NHDvhc{7aZNo3-u!mw5gy#pR}xkk8ddRzuH5~d zh!4u}-a|<$CWZV>A^NQ#lr&sK_&q=yTr;we6+90*EARIB%xU1=PZ;O}kU}%Jh%1i! zo-fS8rUW}^WVbeFb~%*4H!Th(Xnu-{?e80)ay`XM2wa8EbZMfLy%SLwPvL@ggH~T8 zfEBUtM)Uj>NNTd@)?Mwb72MrIZ45d~Z7ZZcR>2D2+CVcxhSKG(h-gq)z;`$G#cmR91!Km9+KI2x98AM$$o~v0Oq#!Iz^u#`utp7 z^72Wa#VR3^@m^;=j!>y}S{7lp%UBr?_OqLEtKmKwl;II)h!yI>@kCoz#2f(+CGK|X z%hLHZDlRMY7N@pchs$6FJ6KD*vh`H;lr0d!J5;)-0usa)rhqb+`~Fb>l%51CSv_I+ z@#$ew<4J4?ge^9I+eQGAxRu`iZz!4eaukFtNii@oths4nMrwjE}TRiljabxv7f#3}60CZjUQem3;WH&(??%o}^ zWeGi|KZqj$h+S3;`B3PoN!?8%PR9G~k{t6)-jiuQkKHxsUDo=C*Ljv~Q)Vzk1IzT8 zQka^JpBG`oAVWVcNx5F4zj)kIi+HeY1jQ5&d;T~>1X40>3xwN$2@L=Su5bfJ{b#r1f`C(JY0P(h7t7ZsJRbo6GUBMng|HPp`dyzqRWPH6J3V>l>(3pDze zeqe+5>^c~q;iI{dLSmPnLmH2tbxA0GJv5e>0cB}Q0%Qq~5wb*k69(r`<4Dde=J~`8 zr&`5Akv)PNm~vKG3nkAGtgTz-bd#FMqu&)#SFL0SQ2Am?5WDw?hfgHfxy=H>AP;&q~3vH|7D994p;6>pBM6t<#Z;% z2*9h9Djj4^pRYpRnQzqmq7K!`<2Vmp=CZ@tzvBN2BRuV}dX)%$-O27l^3c7Ao7~Fo+q--3R zc9O|V);>?>nPus-#`hNq2Q~;8>KBqZ*yQXnK${ip zO%!Yn8`vY#Mq`t}>b9+;1Mzvfp3vTYNQtD?j78n?P%`}(?>f|2K$)zSok%EHZ(w3( zVq-EIa}`ZUoR-6uchF7ysRUpd`$r6B!O`SH`Y_Ho@F?-AMJ(e~dsh9mL^Uq!A0UGi zse=@{@6`y{S(o-Qh0B6>P^53ovSMg;;(FzgFj~K2d+nDw*B_^=JyLUQ$2E63qwT+6 ztV7qtD>1bD-Cy1sb;TtTI zuw6JAlZWsvb#>*3b%GQ7Mz{DGsu?osvn*SZ;c<^64-Tvv9z4o|g}gRguGYmX@loz$ z&GkW82KrY9%xr_zh!f^rz!$2ii^78G6E@;qmimc8TN2H87vuELK0#jbH@m1exsTGj zlrr9oHqJM`W-wBEkX9f6aT{OO`p#qV-(zR$&drHMC#>r7z&zlwI}I1xnn-k@0*%C8 zGPfUJBFJn%$Tio~vVbQ|-Fd^GAm^*|tn#h%u?CWx(rfP2$u+9Xd2OUK0znOhD327az|=iEx5Hm^h<9HlanWe zB`qBm2}#aXYunktk}j~87-udwuAm<1Sr>3$#vf`IPdF?<>khr@W6f?>&FQ#x69u{nqptp}G%pL%I_Sm4}}C zIlb_esMB=I)e*(!Dc6rk@#Q(U{(QI+Rje$P-9Deh%AHV-$!EKEo=9+1=KopuIGyUA zLr^Lk^-+u?3N0M$i3*a?D8kGGAFm^c7orjmhariemogVULz}i+$ol=QzvEd?`}vgo zxHNNwtp2TPy*hU38!2Ca>w~+^?YPA(`!m!2sq&4=(>s&TzLYQd8+6XZ(D(r4NpLPj zS7s4k5Bsr@MKNqfE3aIy(dYe%%NOD5AqWJ~hN&TcNRmkqwz7~P7eGCT$Qigbgb5Ef zJf%uCBb#-er4GekN;8pQ5h)W{uxi;4(0Wol*EvZSOt#`en7+<(xlJIYGd$5*J!n3# z>uzt%$E%0CvUqF_nlH6bcHC87N9}ij)N@*?9MFxp_Lkl}T88bmtfPi67bqsxDD_+x zF!cZpo$<5XwuE$NwOkLSkLh5Ol);7U{JJ&5g9{b`EfryQ;1RfZ6OgS~%-@Pu^ZGUw zqfT7i1zi4pf>0ahUVX4r+v&fD7<>lMakV8#f?iz3uyuwK0%o7MC|f<66>(%#6Ckr( zYEJy5zHq$a-w{Hq^~6BXeqIgySbo~|$bu>zidPpe0`zv8dO%)Ua=S^onL7b{3ac_;Z6Oz&1=!XqAX3dV$WI6G?{^=BYt*+2E?Si%+cI%p=O)F0$^2PIzRzGwTL zb_+DXdQCB3GFf#nV_~*#i^6#73wxPpVMsUrm~JG7wisBTSawA}*OgEfY4*O|uP+uN zgg|*;Iw*DC79JjG!!?Npu!C2B_EDn_wiYDYg8DO<^6ghS$%_g+B7u{5af0ScpmN%x z+Q^6Xy@?m&iXW~j=)JzG;KzO?S{#)XWaa!y5>tbvL8dz%zxZ*O@H=~W>lNRVPd(VA zYVZFGMh-MUAa^N?_V~x%@+k>%0j4|~D$5c*E|zsa#Kh!msk~US0nsiRm(KFbc@}Y$ zjp{{n_X1lL@Kfz z4Bm_z$ItJGF-JY)5F0%8Rzt36 zsPYc>1vbV^sW38+iIMX9vNMq7A0IZ5C5~QPx;IBVdT5HtxHD-}ffj(mhu|~9G#4O< zg zCrf|sjl!2A<*vL=@x08PE_sVipUGRcUU)Q|AsFbnXY!P{w^g?es7_Ii;}I#GnF|rd zJ>-jE!6j{3{_G#)%tGL4baEP`Mo^xcvs{JPfqzCAbk?-8?~C(go)h}nxL5CwogEe=BK>d$|NAEk=J3W`jxwF5Un*>SmFs+( zdnwx`*zbX0&fHJ>gBH#PLGfW+nfl4#gIEis$|)o-5pr{;e9z>vipwk~hAeEu23aoa zUCnK}VP&)0nRnqrK$z@NXh7X;%^jE%|Cv$S8<>YP7U_EzqCY}p7wRZe!QecI@*Z9! zp}$KyNng4xQ6)IcAz^-wJpJq2EFJ8n$H@Ogq^wUj0$W<_wha0SEAGK*y=^2dDEH-- zQ@{>E6l?YI#O~$Z?ID;Fs2fJJ@$*^~+M1T(^{p$FDREZ2S30UL7dE9Xcn%EXI3OY$1k)*$bZ;rh|x|MK3(U zK~XGq6MnY7m+Y!;_E6%eRM6#Fw>OkPc_s_}oNLpu2lY3(apDcKJ!SnO#kQ9iy*?{_ zr5M@;5d|t1v_t_C#5*lpmey4A;+f-m5%`*9yF^`^P zViWGFel25u>PI)b>YS+oUP})n7|lZ?NRPWe12R^`I_5hf&>8IP z7f&>6)eUXFXQ-ECA9hQPhzoX`v%vake~V+VN6K2PfQjFMT_;+8o%FG|{Kk9nIRxYH z9hacJ6~8a%n=8%Vg+?qz6qjR)(vp0Bzxg#;YK}zhb{%GJ-hKI`Ypu!Pwqnk5D`=5o z>_}Gky=w4<@OH72N=mdLr9Lw!`8dqYkhD$?;Po+pry{-w z-!VML_aR|lGS6(SAUI6nd?~zTQ_mdI!>u8D5|%{A3@et$pz~^UsmDoBP+$tB(C9)$G88^c&D+81j$vEF4v67$v(KPjlFaz-11L@x?S1r0Deixb z#)bvC4+t>*>KtW+Pds2V-z-eu<+ARYy*2u2#tET+Y`}5J@$@Xxsg*2KqSByf5GU~| zkYdEGSu}25c+Q)BD|VT2xsV+!!WR9TFic$Y!M^8X@W<)9E;rB=B{(J$2-+$YbA@d5 zF_=+pJl=N%{z&*aJ?G`EAM&`E*~HvH-7BY052p-)l>wZm4z_IYI024x_$QDdGih7e zJ#-ONl<;X?j1ar!l~=RKkTU@Dh~rX*7D)aHL^Z*BT*+5NutaY~j`TBhUog6;=Y+3Y zU1Rj?#x~WuIZyh2Z)ZjB*U!~p1E`R8$K!%6uQ#%H{azR5dA4zvo1Th}BR8v-ti>Qt z6Z~S~nI+gRBbba0)Ca^-<0GLKPxVEqX|&H~=EA<|U!KyoY7_Bg92ZWv31r?p^(!Gg zhxACyA>Dx~3fxccY{oaaA<%Y6W$+VGTR3na2dk!&bb|!Ej5#xjhF@ooDy}AK7oP`c z!`>=!=hr)8Ivhr#j^oLy8+svzA~rmt<8(5N&h_zYn`4r;u0sykza{aBtQ~lj3miA} zfx2Suvd;|ZQ)%oA1|ya;FuFT-nKO;2(a)MLKlC|XDx3#X5}#hJ?uMe3Pl>P|L|;b)>KwEj}~@8$^f6d7LdhmMt6&^Gek#mqw*9k8q%v zWgofX-gMRx>}B<7*kdIm5LwI|I9zpj9}Md${<#W!ed3a31_Pg;uX|N<|-$T zwp^tXdio`jn(B()D&$E;1#^0la{|scuub7A+6oVM!)cwVO$MdKrY^L{7!tRl4|uge zS}y@P6l{h)m9<;*zqaccd9}%RE=im$5}D0(D&c8cN)oM35v=r2_BAx9&wq-QFvl!> zC0>KAZ@okHQ7E2DD|h+p?tU(E(f|XqwxLf~4ih)H zCtWM9V_I^bhCC2wn+SK5qKzuD{alte7I=@@qw_|Z1mzKR@cv@N11 zbFycxrf0^xwe%3v!`HLDaka{Omh7sC?RV4#BusVD#3D~82;1^!*#rO2`ON~VEauP5 z!z0G)~>|m9A_SuEJv3QNno#+07j2XK8|Yp(u$~l_5XnGGPaW zjHhcS>9rlJqh_~LkYQH}xIs}5gLG|(2r~Xg<2$mPI~ssTro&KmSY)F`jZQ=W$O7!{ zrxG&94^3(*AvM(4DeP)77Gh_>$k@t0$F9G?>)(L^pYwx`&&zNZn_-RQr<>m@IokBx)9^~+XOB>3iC0R1w&Mm+%cjJ-^{>APxGR^@CH|K`jYwPKJRCxk5cfv*j9go5 z>GA<9y_;#PIdYA_S*jX8Tt8;c1XcNbL4Sn`Pw%MADd}Pc))OG~FGat?gCS@~&sjb% z?1DG#h5&#e`=>aS;XuQm2s1UJvV)liAEC|M=R*hLfU7?k2l{;}Ic&`Y(TT0{yqJCc zCOO|Lz?WdZ=70mo6ot(;1tubOa}m=B2SM-pyU5nFZ^kK$GP|-S6^=;!(117^b1O=- z6otDYeYY4xAg**&6hfnH`EST+X@qjxAv+SFz0M{~RLna7(It3i2j@%`Sr-v(ijfVZa8$zop3i-Dn9W(vIBlhu-W@l71WQ3z^F{I$`F) zyAX`yx)vgAp){a?I~*He_u_+7iaf)`_Dkum^Bi#Dg(5?=MLz}De~WE*23?V*A$JTJ zQ&TRq)YLv4$r1mgIMP^xb{SS|F<9h#QJ^Re}EmDxQIVjYr`xxfs-cnD(m>7t)Tho_dFBvW%|s z6$3ceCzVz}7>pJE7f?(WR5OW-O!5a+DHocRD5aTZ4`k&)5ihZuUS1%Z-ftO(P+|+7yuo5?0tWb*KOZmNZO#=#8QC{tUPK6Hw8+lZv}gkLt@ga8ZL*~onz2P z3zk*w16PwHsgkgvvkq2W>np%U53Zx0Akqw>oQ^#=6m;K<$;%k%`i+YB>O)?zR&J>g zHS`z=9262?j{2w}3ZuTzf<6v6_~A@erO8yC7rNU`N@FDCM!Q9APS|fxqDM1Q4Cx}k zr5OLG+(_hFEw~Hn4K0Af2aU+t6_|mxFQX+Qm;}Qg!@wI#n$>vl)YX`8D4^^VuxURW z`~HdwL>jEo=KWGA5U{A5R5EhGvrd7c^bqvh@SEvNibbqk}m|Uy@PVrVzDwcjz+Gg-H-i>iqDj_ zJeJC-jWCKiQOH;yi#@%Ni=l?}N7;q41)}t5^<$4;i{oP=_=~}ZJ%XyRqLiA~Pfa|m ztD(+RxTpA{UKqc>mh}mpL+#a8R1F#JQq%m~Yx8mF zPRZLtbS%S+?#%1e7y&A^>mjlfo6mqTGMIliezoz;pu#FyU3MOthU3l$D)V}*2_!?z zOdhMm`FYZ0ms`aB2q1Mp-43$FBY$*i$Yj@j?7f_Muxd&BbNMT!-t?n#fk#&7m-S<3 zLHCNsHvexLHtTCi{YD${xU5L&9`CGCnXL6OxhC_nK*fB?rZl4&M(g3^28{6bJHkeX z^BM)LPNdohP14lJuuw8u$PdHSQvqonn%s^_{}_{AKnxDQ3hg*0jV15;)%-PN&MT)n ze{YH43nN8UhRW^GB+*4^bCCZQ)Qa#rTLx_)yMy&w$_dk)`xvH88|_n*BY6>OfH z=}9#}>kyDYRT^nXz`!6CzRnosL!NG<~owDzsq2}^!cCNbs%=a4>a@YQ# z+vScta?aotG=%LB<3&`>rX>2iuO*3JQv$;-`XVE?xUO1q zuiDqPflaN8quOgn&BDCP9=B=QrqC9CqgR->fGS^yzFx@`=JRSZm*7hulx@m^IIipy zM|lP26i?`q3T4Y2m^IZELe!kq;L#xvT&;@Md$EP-rx+(ypolJh0t zJCD?k9ABces14R5A}I!T`e^#I)r||QR-v*D zIChdUO71?(rgt=yc!3V~N!K_*k;-d3_|>i|-$woKG1%LCnY!#Zc4=xCY3e}TAWIuX zIh}$%Y4#{h=RimD9=AITDPR4rw0Y|5!CMInG^eE80CcKpgZOv>U%2g0Y%)J<%Egn< z79CG&q;T+;iTla#KCq}q_W_1>S^bpig>zv=TR)E?@1wwUJ(qrLn@jCnn8W>=8T;a1 zeW^8kj#KXtPucv36lv#@9N}4!bmXH-3ZPW{FsBAF8+_E0Gx(*7K}ZalVdh zjvqBiN2CZp7^!}y?z`GMAyjZ+IY9GXkQg-l=f`bf|P)fy+@B=r{ zS(%8#qd**15zmJa--(K$T&`fO&wu`qRqPj#L9&fe(?;Iu?vIk}hR_m8s0MQ&K0zdD z8FhgMm^FRp0)AxbRy9%Y;Yg_cAfG5oVLWG;9~p|H$*yF$=ND(r_0K&+FJ~I~n#7m+Xa0)d*^cR9H>h9bKTnin zi^8s%Lyqq9Aagr5ZC6>lda_c2+nGv+#a-_b3|-|4Gh6E0XL(#)5F*3g1>g=lhBYrJqmMoe}+ zKc}hB;+TAP(*sIj_a`TgL(`7MXtk^NSHfXErWWI*A zgtY=KxfDQTboq4}!?Qeo7AeOYhPTEOhE%1=S$f#a+KU$c%yo!VNu@wswsA)9wOP9H z)`ar3&D8rHLJZP8vsyC_Oo6K$J{LPfn!wU|=8|(0m#2l%L5Y@0CHq7BcTu_xE_avl zdqEv3Ep8@e{c(j-2gWz3L6n{12U{`ys1t@IEaiBg$?y~OqT0ae!`->Y$yvSSr_0jy z3d_>#3I=}lxQ$1F`>nwp%}r@3tjqS#xeS_(i|Vhx>!N%B8w<+g`LuXzb6vflxIPW^-*c15W#8R(`<^W6V z&G60SjcINK`H#5h-iI+mjF2Ts*v`@{JUcEAr)72tQA4<(n2uPD-JtgKqwQG!PiaZz z7YZBXWDI}Gr9&9ZyP;%DxuO`N;|e3}&|{At-WWzU?l2>JR|yOLn5(Gv>%)dkTfWvR zKMfxivOdp`w~A8iaKB{>=iA$S_jZUDv3%#%jKX~hN!EI=VZ($C&JILNXR}4O*=A)w zj>OMVg!|eiFYpI~M)Kx)ZcDB;PNhK_qqEMLPt))9+fN~|MuhaLDj^ONV2wC|1M`+Y zpybjTx^Dj>hWbM!41G{!_=)Ve0=zt}FY@BSi(@-yl=4Wt=fAT2wv;*tkM?VLkeY9a z{mv1{hfJ1@1Crb^52A7eB8TB6xb(z&hrsiD*d=}rE91Gx|3i7k(&Ou7TayR8bWCh> zc{6)+5O?+7nuqCKy^CLjOases3WFpYOIY;yKumQMd;m=$p;{v^fsBu-m6+b0xpNqJ zPbx`!3bxo7T2{K5(=H=IbV}J&bD`cytALmY2)Ln=QriW}=W@97x2h7Ym=H7rS-3gF zuK1tavVrTE=_K2*=0D|ykp;3*El43>I?F1WijZK+{SB}?r$fRsVH{U8c@39blIv>j z_|zV#U6mb}QrMwo;gQkxM#dXU#N6ZS%AW5{Q{TgTa%IkkmzkysR!f|)i8F@J@c?4% zx!Z`2C!*JLw6fcR-{Fd2A#hd1k=O`#IdM@fwL$^o@#uUe?B_%Gg?-{ zjK)z#JKp&h_anrISmQ3f%Dhh{(h*og=vmTRuh5oU40!Lx@`unSaIlA5x%^Q!=-fa5e*G`-|jix*=aocS;9{?!Y}73(azG9kx(Xj@A+;K38qW~LdXNI8>4G=@1GRW{4Q zCUvppLi>v=V2&#=e9M%kLzA>}uK3Ylx{!z?Ud69X&u$=u>Qj)sR&0%>8OBd9tD@-$G8Hgu*^=FGKlfF7-VHSnZm4_bf<}7)PQ~q;kV~CZbq?7URIN>UuOWqjElf-X9Mw|y|^P#j8Fpv(0V-D1zv4DC>@B`Z=3;r5$xNkn zXC&*KeGW+kUlG*TLnZ!-P!lMe3L@NgC3RzU)q2Ck)s}$C+Q{+_2z9;?U+4=oGhZ4) zG5)x7P2uWGyc5~TL5`@q>Qcg!45h9bkA2vVpP^<5*5z+jDJPy6+Ktz5j>|=6Dv;kwATOj6z zQT00AI%>;2OHJIv`1ePu5$7no94sF6XY9z|RG-_?O!J(7#wdPE!sgCFcoQe8w>ZY7 z0`vF7&gzSJmE&15m(~+5N(lx#M09hII~-f#!W-LB{6m44m>B zi^fo(f(S5JB~8AhdNT^i#5fvu!+p7*azjxK$2k z;Cwey-_5t3=Z0*pYuVKQdqnHfJ^9UI!m!*DvgOLK={mS!*}SgIP;z1~`|LlSBB%Vu zSy4=cQpwj$C0pH(rXkucrW#8rz!XIa?8ivWj?@vi=&`!HF{Y>-qo&Mi5K0qi8(Mg7 zzl;RSw3Z=910LD^f-SgT<6(EQu@`PCcamrvX+o+iwN(G!2`DiY9(I6bOv=Z}AXbIO zjEhUds-oi9tQM21E?nPoOF!PYUlfT@6lR0f9R|`CWU>uk18y+Z1yfG*s``Lwu)7$m zcB9Mom~v)zeRS8(KlWpY(?jjnVNvLOW0L05;XA`3T-i6m5eo+XsI3NYyXwm?yIAOm~8sj^SgL68`<@n{pcLO)wy`>-l#8Lj{chJ;NlN-%f||s0dyWEuVK!m~xjbTy zPiVRPOLi~=W`72hoNJ*`p8i8?TN8B?NSg`8qnT12n{kFkkpp=gR)2t)qJ(k0=Byl7 z`C4eW(drxcDn-CbFR6j2*R*uKIXp9WVze+cXARsRbRs%!5SkaQQ?0R_0t0)T@!_O5 zkMBq6dtsy~TY4=~8=fjvMua_HsxGWZ{WcJs@iK{(iPi8P(4q~^P~{y zVl0B99LF({PtgWOj1)(?AJDxfqvv%+bE+HH~-)I?5{h`-3!{z8d_FL|BISGy^Tny#D_ zf!?B5CnWs{Il{e_CWCV594@sY8Yzm8kL8vosk^tOVI;VUXHrF>Bjv&V;gI2og3n979s@D^KQi7Q$9)z>Ppzk&%)3rqcS&MxoS z*L$?$WyIe>%}ulpH!1Jz`#rB4FW|Qr>F!Dm*l6gT18C^zb<&A9cgtpQuhVC|7tuJF_b+dUXMP`5C8V= z+CzLCoKKD8YNF4R!}Ckm7|viWUD`e2<9}Rmh`xc~|8<;mV~ET5$tcR^DLv$wgmd;= zbZNG;gLGi;qT#K>d)mKEt+76>`GkUTs&&P6gYau>VJGE95V@&&`T1e`{BlvP@SEcGQ;P z@-wP)@rvy#YIj|!*%nfis{X$O7&UC1^29&*I+V~ei=4zHR`+}+lgk+Wq6xGmF%Xee zP}gkt#V5U;gP#?b@zTPIm8RV__=uMZ6_nYm#|>@BFDqWF?BBL{F2a*0Jtn)!$Dw!_Y8hTp0o^O0xNr6Z@K?Q^X~&qe?IY0C zW#3kw%PI#&6Rwk@TTU_8_PZr6o~sc2TnD?Lg$|T7f;eaH7{7uk0=_2ywD{ako!iE! zgop~_104zdFz1$-VG(i6lntE@-JZPQ;-1NjyC2!xG&w!xLzc+bui(=y3_w~pp;WXL z+0MBFj8#tGuQ!EpoJ}3YXg(d@gqFLA|A+$xdeynePMf}$5=S1A@NPY=(t6^1;Zj9u z*@(|NuREIuD8>ZNnZ;xq*aIJOpLDbkr&X8o9>KyZC-bRwz>(E|$r73l1Zc^-w5ezg z{~QOqW+*+1h8ZtKunY20w*dI1H8qxv;~6h?%*(ebXI`*EC?pTy?8Mp59RVO-3!_wV zaV@1*+ZBlq?jE$g&w{>NnV21K^F0Ocq8vJuoq%dSk?Z=u1`JI&G==-}*5(YBZ?0{C0HFJ^N{*uAApJwA={ zTyvw5lx8!{ZA&=x=QADKVSRn#%T%s!y(ZW{cSUZ6@Qe0z>XDD00Hf|Zvc4BzxH+zY zg7M4x+WHrh@Ru?sE7E^Ij~;ot3wuL{q1qSF(2nbzMfqli|W*~RNsil;)kNW>KteH5+}I9i4=z0(<~n-2A~74 zSo{0#Q~tz296KGDZ#>`eJ4S>r9&kp%??zCOrpB=tx%>&R8=T!O&UTwT{vaIYST>oV zWSSU9GBq=%YK_I1;Vp4oUb^t#tbSE9!FxA1w4OZum5JROP*b9qL{xseCKb3>iLqj<<{y!(X&~;EzKJecBPj|c;g|FgcKwV-%{=_cT(jbcPHkJkXU9@7h z-GPeR0qSSNPjp#Z*UC|A|^qpIP^Y(`Pvr8r*XQad#ezT;q z%|%)@B?Z-`<07-bj+gWKqYmFM?Ee5WK+L~O5$dN+Cjqs@LCDI@a>bLu!@d|Ez|^rV zPMqErR5^Xt$kZ>L&)152Ow4ROoH5QScTwX(zpCiE@~gyV5HT3^N-;LNe|q9bQZbFI zU!ffihqQ-re8@8=WF5l^T~FX+7BeD5_YBR~(@&WS}@fMd7VNW|D3 ziB)LigUoTNtYCSzkeVv~wuRX2t%}yJZs)e7otQ3@ zX`{spX+sak!tqSVjzF?JB!5-sH%7OPj&AM3`5b}si3}>&s`qoX1{5y*x;T!b7>066 zG3fJQaGE>D#&(P)&KOFKM19M9f`c9zBk$PVXKUP93WvHq%`We*&6waVslcqgOFYJp}rPp$T z7}lAz4HZ4H08!#CQLABU25 z*&TP_!Elg|vBKJxf04Ec|G&3wvz8I*oEK>tJ1?2MeTtlyOd>4b6^0=PW(iu+LjUJI zXAGnBA;(-cO~jd1bJgtp@jXko@BPesh*h&?h=FK`t!{bq(jH$gnd0S#$Ug0fzR{Hg z=S#ul>4xX6EyA&YrH6>Iy_y?`*oMcOlgX=jeiy1?xjxh6aWriVrJOC1NEC^JpyhKT z!%1_bn2roZ90y=JJK8>#t7KBekyvqTtf1==dsLnIs67-(7e|uCV#p8$k(aGdq!vpK z8L4P=*i{_|iK2)u(exR0#!Y3RgjzHb6+}Z9#eJ_C?&9Ce^sdMqR4$whA01wgAB{J; z*?=**d}AB+H7zHRVifYR@=AYG@Mvmc2u_rW%ol=mju4gF%FhJo9HoFhxo69-dxvN| z1{<5f&11>bAc`|OKc{fLXiON!h?61c3;9tq#f%?M%bnxeU3nBD^jC~! zgJ%K&z+=2AF#~GNR+(xZ)@NJY%O5{W?(2I*tA^9IPVZ$J9Tu~4LXP5)DhYN}5wkn= zd^S^1wrTgWoD#Kf8F`5{*sO0m1)hB_2O`P%VgT(quyD} z_9f)&o-*rhF+%B=i_DOYXQ+=|dB?;sh#e0%-mUFV@!lPle!T>zQ(RA}brmV@NvzAl z7SW6-Co9Jn>pAT-!va5@pIJO!IT=byTLe=(=|bANmR94kj%DcvY~Y=HF#l183kG$u zGCe)FQdjFMpyuYOw{;#O4Nn{7aSO*vmKSDmk5ZZQ9VO<%8D0;+1BirOXx_$CWC_FQ*P z^9um0QT}_Y;NcxIGfnH?!b_o1m+sJkJuF6T+xEU7!(kKJ^|8ag@Zd9A?qs$`<*nus9`cX1KZ)p}ETNj3&|R zLB1+)srac5UU}s~l zK(t7Kx;rV<*ZDL0_yKhTe>A_u`cvE^-Fo}A-odl#^4>&W82lC~8w=q2??oY$zwPIz zO}jHqY8ilx12q;vrKtO2`ZN_7pZRGKORsySg!LUqMEzY5_=C4V;HC#eeNZ5hkuI_H z%GXI)Eb8Ks9XgiY{8<)w;3mCq&BX$H#ym_DSafuL`1i@)BE!G4Mk3*xj()3P7>4i~ zY?{xQWu(0*CD7K^%S%P8_ zpXlQLTR5jqZ-rzsB%2e}EMRe>)Dj_;(}l5jqdx(>r%mlZ!RiGtF<`&gR|>?lRNS)F zf5`;9{|nPwCiuBC`q1RATFej~b$C28x&NZ+A^nW923wM37_#Pf{u@EUg(>5X^j+(_jE;PO&9v8x*i_Hx(t_+5@c0W#Vn!03bb?|@!h)oqF&r5l1M?%b zk#{apL`OrOzau4jq|E|b=jPX?(PYrzz}5dIa|Hx zK*j_44%$q!>71skueQne14|{)4xb)$4iOtp`#illN)h+ubjw|dT?+POc>)#tQo2+S zPc;;vDc&;{j+{aDHvP8>^FqrD^{5epMKFIJ1HJfzvKDrZzX7Z1sN;BL95XLp`~ zxD>1O%u^GY&$w4}Q}i@@JT2Keg2T7-U4UpahLO2!XKPx;Ls-qG)rhHM@vvbWeiN3K ziIy0Hg%?@}idY*_WLs3Ukf{(Eq_@^3?Az@@V*pR?rrJuxj8NB_Mu7_E!OCO0FN79S zDF@}RW~g#FRMJzQalbh+X&Ku_m~>28=H-H>h3$nUTniC-W8W z*7vMrN`U!jkx*RDYO{qc2L|I+O9=EKfr5*~78~s#Y6{L1_Vk&0zM@sxgAZVWlP!Ao zpek)QjD~da*7wV@@=8hg9XM(Z4_Bm*8pZ?8=nd1ZdDFzWN*uLnEiUd#pw`)FT7$3vXO$>7aD9`wK`|`^_bje7y zT3jI_Z28k3suh7uWr+IdMWn`?rQEhcan^je^~-%16A~& zUa$1`4yw0;PrrAiR*~FhqKw^E5f=Ow(w{|_pWTJwS0^;yxz*&gDOlNd&FI`^lyw;)BxIG#<+r7Hfj4;JUZY|N z0z!NiUycz+TK`2={UZ6%4yYQJOR9Rs73?Qn4iOJEo6|<(-ds-A4MTrxv#BSH_;@0M2}&XX7P@*ILO zZ%|t_8*;V-oUfpL;y`qxwQ1>X;}K)vZ+Wu{b>2g5*JxmC>ggxwu|A8@$_*DQ?0~-$_X?D_!45k&2Us zARQ1zJqc;Hi~5)@&gQITdM(;AAX_zN3$(4`sHyGuh;Ci)5nh1ILLptn0>7&3H&UCZ zo3zmmnmXtTT}Z!78?B9PTz)xiL^;2aooA?OUv1@OG*TjM^mLj^zLv(|{d1KIjO_XE zAKY-~W6iq+5S)!|rZ3mLHhT`@h`UbR;B~Wuqq??1evoDvykqkvwNu!1bO*IfUPe35 zZEWYMm)=gq4UX)Kx0B4-AD};gb`DcX147U5qi}B|bh=Gu7@Lut2tNx21orW!V^7-X z5xT7&^;@gX+oh}=;x#E`s3YT=l*>`$Ngvu|j{DT^!1b=}kLz11dU2)@;$_(hOOhh) zEJug0p*EY8!BG#imFTe0ww5l~mdcCtM8)kJcux}!U9_QD`C;0u%x0bN?Or3jt7*S- zfmXe+SvPDC3^{3aS9T3~GGBW)YEpF-EF20T6B9+A#Wig5)Q%n7ji`Mss!7gMwVfs6 zWSOm>qd9bAvS=ek49S`y8`@ZYNT@9qBY=lH4a?L`M~@}L=RCz8aG0_RdSh}Ih7;S4 zOhuegGZi&WK4)R+SxJap5)Mynlfok#+OVJFBK@|!8ck2uht#%0jE>Tl%}{uON;&{s z3x9RCol?F7@3jD&Dys|cKt0XOumwP1q_|iUV#$$&LRuq-L zhREA)M{%No>E1}qLVQs$jX6rRnlntH#)lNWRMM3YkJhMJh|V7yQ93FoqsAK6BN5Lw zmd{u0E3dl`ZM=0R-r7gYJLP0d%`&yNW?Gt=aiBD>q}OB|X#Z)ZpQW94GLcAtKa817 zTbIhhDB|kq9{^g{-XB2*X_UgA(6MF)UoEVH%9reoE>xf>@5+Soh6Q|cW;jf zTI?J&?2z*>^jjqu+erfjE`}izs3F__A%&zM8AF9awrB5$tchI|3ufa#N3+Fx>idwm$9VD)m`-x%vB-bLzb`0gLXvnm;Pti9tZfd)Y?1ibR zjdX_%R4A(9#>D>5Y(lxnosSy94cLSW2V??0X+V$Kw@6vs9;NRzd~FBhrj8@C1Z=Msx9gOVtOw;-$|YQ*JEi7OUF+ckL!^6sKy&v-?Ps!>O;(* z&HA2?Ua}}+Uv`+_rgdr$Ax;F<@^A#1BGKKY)CYp9H<$}GiPal3S-}NVKR<(Knq?~N z$X`A^J-e^-_gHs$GY_bHiy+E*LeGv%GB(A+ zlu#jJR&kii%|?(A{5BL(!dh5~0A#?V(5omBKZq>V3d4VhKNx2UH~sXle=-Sw#cbq~ zWZO;V)JOvvvMP$IY@kNuJxnT%)Y*bMKM!>#vam$@IYyCvN?oEzwFjjNK|9^`7U^2= zH$!c~ZAa*NB|)&@gd#nMMD(1L&`hOMQ%r5HP5zA-on>PLwJn8cuPK(qA4TXW-}!Sm zHWUR~@cbJ2XE=`G-}`(ox{oVT8_x8WT4Ji7nziz+70`>Kh*m(WL=Fd+icYoMIDcz2 z+WBYKebVMFGlf)TPEk?Hv{0lLjUv}|wfoIetEbHS^Qa;hf$0k}+%rVP1CQ zuFNjYBzMiwD6r6p$(wfm?DYJbDFsw@v`Wug1Q5KP!oQupypKJ zTjg>-w!-EYYTsosW8#((i)*?niz0@MR8`hY9qVSu00(l{ip5(1Z(oD)1@K259#%E^ z_Y@^4w;t=_KgYORH>?Lrp^3+Y4H{hiVfRJed$33`RvA!EKwDuSac>}ca4YSg^^(BdQ9jLOCwCC~ z=sK8Q{$lE$Yv??8Lb<&-CeIDN)_JHjK|lJO!IV^qa(w4pP%wCwKJOg7FN*!;$ht&S zfxa_`-bdqZq3$Y6uu5pij|SqI+vUZsP?(a){CliJYDqBCg(thRnLSYBF3L*$b6dUE z4p|}FqVBZ>D!AgND>QU9WiBp3@L1>nlHNUaiuSR7jDQbUUP)~Ut^X&S84~&(E((2J zrLyK+GazRqv%|L>CkFEA4TW)d0@gy5qg`UUgP?Uho&o@yKzhR8Tzt)Zxsbfrj$V>1 zl;@L{6F0N2q&O2FnVyU~iSTezR{wY0vBoAGMRK$6NjTBTX-5?!vBbGO*OpV+WHOs7 zUwiZHq$KFcNNQ3WGRnJKvKY?A^25^P?2tB@iX`>C+}d3>T6rrS!QQ=bL}r`VjwN@T zHa*pMCO65H6# z0er0rb|vqL{@HboTh_^wmUY~5uXB%wLdV_0kvH6Q(@oJMN5Dl_(8qsMlefmT8AX|$ zRg@Vmerr-4xh1KVC8?|?Z$Sq~_PrO4j-qnsi-#(geXvp)+wVPztm)6!ze4*a!_864 z9}Inn`!{kHde=?I-4^ z_UEk$4aa1S6W2Si$au5@4o6Ef(F{h&|eC+Gw;? zbBp4Ubb;NcT1fvf<@Nr`9!W7j>kF|E8ThZEUxRr~^}`9a)`ff;p4A-cFjK75Ivt_; z(nRQP%?ST`R#eqxRsDaddlUFLj`L2mtFP*7dhY4LU@({iGXvrV1~UVaATR_^@dPD` zq;6Q0MC!6&N!H~{lr zQjRyPc&*{9@2l>a9ss1JuCDH`uJfz!_IG%9MGP9WY-jiK6scGhkn3rabwzXIt2XR+Ko2 za^*!=a}bf@5?Lqi#mLH=ui0{9njfBd^DZ*6iwET1k<4H$7sKQ0PGklLGbhIHa6=c< z0oDvvu!NXUV(qzCILOBK2&3&MVif488m-lBIa=wUDL|yiNGgts;{Y@@*8)I)p5;>A z!x@dL<=SUNQB+ksZdC#Y2y6pf-TB?*z^l3p^z5@7@E;CfP;^MY|>I(V0^-=%e5XXxq^x_;bp zj_LXnGL_%v%4_`JF$w#ibtF}&dk`d(-WTxMniIvG=v}}3(=w$6Diw63@-gfQZ|V?;J(n92 zB}IG|HgX$9)eLualv5K@tenFz3f+pLYX*Yn)WoTlU1gv+S>pBcu&JH8JT%AV-7Ua7UfX|RZ47#QJ10@Aqmk$&cyVJi zM4boRa&+q_;h+scN4!W%a4* zl$lcX_~w|&cHT7lYJ&yo18Fm*=mW3)P^)iC9erlf-(%M6(Lu6i!^OU^>UErD|5q$z z%sPVI;Gu42+`g0SC^DeV*Gq0D+bGq!A6BKKToqxLuyE1dOzWsn!jIfz6X?CNzBX22 zlinmGk3n)Q9&@;YY|FkWXrVnpok7fFmTN@A-hZe=7!mB?g9PUGG1oIC7w;i8sYTqnDR4>yL`(oJozy4z`y6a%(HS# z%=6!5W%)F&@vhD}CO0p5_(9LsqZaeW9x%rS8jcnR?+vB(G+Y}-1 zw`?i?)+5{Q+;-~3k+;Pq+X_dN(Dk$XZo6&Y?DZif;$l3U|2(UWuM3Hmt=}l;I!0?H zs<5TJPJR^V5_gMn;|&cX`+}s&&A+|H76ar@XgJuMH!Wpyf4~eMB1MHtFAb>~&(Fs< z$-lBXExK0og}m#FzJGd`0f@(h~AA}eC))r?HbWcHA*KMQ1naK9Gz2FqUH=_*`S>)m3wQspr_sK>IY;L&Kr^UTi z3e{?{)wZ6D=J(8aTY2gimS(lRYIDry(^yo50h;I4;fpsB;E&9=^PIuxnRb*{9=Buh zMVDVuvS-hVv^U2RaUBY~VE=&okA5h*FKe0r3m&q7X#L_%sXUknJfGa`-SmYkuG*Sge$2MyLSq#x43S<&tK7i;PY5iuCu)k1S+kwfGvA$sY}$$vy8%q zi`2CVc~xpQoG;JVd-vKi4%2!WKT@CmRto{}9ZJ*!!YlNGH*9vbE-XXkS_ygfnjAlaA zQ8Y0^Nc8b~i8^C0csiyyT)`1!N%2=2SN7O`qcAQB0X zH<73lBbbm~U|qO*4sA^r8|2g&$f55IM390r6s(Cd{7soB*th{upyce_6SGTkzqich!eoTuKQT>IbXbdf%JOY z_M-wGZP{em@8l3*pg$D)g=IZ%S>z-JQ~ne7*Mu_=*gP9c=Nu6KX^hT3t-bi7W})1l z|1ET$xD0s-?RnosJ}E@lw+(rof6ApSvUWjjC*heS6x~aC_fl;_e4V1?P4m^w@4ebI z^NMoxr$0T93LwP93$stm^7Q9PQMMuFh8rNkmJe;**!)M-2)Q5hvJInFGYob?+2_ab z^nAh}6s`jd&$YP!|2}Ea>g(Z_D3(iK2|B4_9h)8JUFYx}hoxVe*!%$;35yfgA65_R zbJ3pW{#Ks1wqmbaFYRLxg9A}+f+!p~#wxenEpVNg4(r`EvMb@puIQ6uyy$SN&iah# zASkR&I?Z(-D{f(9Vrn;_y%L=?-}qNQ2P9bAO8jA}v=q*C80s#L2RQVrd1MnJzY@bD z(!(D`bl9Lh@pr}Ua3$Y+A^2%fO!PS0IHMa5f#_?3~GbB zo2T0)u}iWfq6F-OSt$4C`%7e zvggEOj~$8^BVng6MxK8C4YP-d8nnWRjpK7i5?0u{KM*3)MDLy>Y}eAGNYv8fYCqVG zp4reFO>D?U<1Jg_FAFB@4jG*R9A`#qR3`-=0;M1Gu=2*GH%7aMr?Oe{#8i5JfYEb| zBKimq0{hcdqLiz)}?)0Mu((q2Mx= z(-t$dUi-siWap+vL$m_6DVcJL+>*%Jm(PzFRzoM67K@dOvzf@-_fT=FacrBYgMfQG z*_2L1yFc_QsTz&xcF1xfh2E*|kjtxp{#+0y+3d6jb$auR^!0>@dDVrN_p3&rpS%e` zWWygzsGy2$tqPsAvTl^DSmn`jvYd4K%>av8=~xIAC=iO4rQ_Ana=iSH4cX8=p&o{+_I>-wG%G^pIcVtcaa zYSHxp3^azx>ZHd-YJ>BH%2|FD}lnz+nlM68|TFW{;1LlcmMwMfUf0 z)Kok#utWV_b+0|W=XX54h1=MECcoQzR+EFg3kn-|=NYZA#AeoMVK1ZfPjJ5tHbHYs za3?WHd~+E0Q_Q_3^^i&jfJsfEl@dkcDp20R`E8aID9mqsR--N5In~J!kyQ5*vbQ?9 zcSG<94NRIlhN^q_v5iA!+_0%hk5c{4U=UlS(k{TbE6CQ^=HQx#IbyCRNT#;q_ZdPO7`{+x&9|$ewt+Uv=979kq$0H ze6^y(mNkqA$S<_SkDPSzNRyTn5+SKH+fq>mxq`<)lp{<&^o56-Z$^>h7!hEZJ`YC{ z;*fz2)Lj0U8O*i?k&Jd<#^ka5$Vh&yd5()AU6&T@u-NwL*P0v3phK}nw@u~#oQPEMyJ>ExQ6xAwSUvx}ZtMf3Yp^PrD~MjMQHN56JZ zwlAWekBV>I1>gHHxDOTvF^!ZY}vtY7bg)fhfRT6Q~pkiNK11)(LkfojicQsPXbjgOc zDbmviUJl9Q5pKV7&t$;0^3C zEopDUiQ8h^D^0EBc}4d5J@$r(r}jq{w;p`oci(q#tES~D=?9*CU`s{Yk9-BT3Z-LK zxD>WxX|~h_SdYKQ8cCzuh!IPd9VHkwft4KUrjGm^G8q0Y8el7nrln&Gfhf9Da&d0X ziX!>25CA>IqEkVFuTlrEIZ-zF3gs4}PJz3PMT--MG!nOeMhz;Txi+&=j>&)4C+F@> zv&i@+B`){fl#~0U(yKv+{_4`74Lzf(&+L9s*GZswbAMgeuYX84j`ZJL6#M(rJ>_!C zjvYc%NnUF)AB^@!7-o9X`uV5<-;&=A@ers+{J5%JkvG z-JXd8rv(Z4=t~M&=;1EK+u=F51e`3F&bZqOD&a#3_J+gL1BLmpqH3SvaDGeHK{jKC z=L-Yu4fh>R911JJ<_Z?W+xKT#zu1hn5EuWpI{J~uafGgmYV{UA2fgrDS7fQAFgm^8 z5aqD5(+SI>(XUdXlw_&G>*L(o>ex0YN!d|FGory*EEqL3Wi%^`gLz&>Z5`Edjsfng zpNqE6g(_}!ORcKJl~yIPlBNOb*Rn9chFh;r8Ra6(16J?LE1Sq^a}FfS4L3Me|MddXDdC4P)yg-x*mSKsL~`Z;5@`2?q|m$e7Cc(tA^J)5!w_YThy9<%#LT zvlkt6Kk{Fou~cu8B_^|7y@#hO2L%883H~w9PJ3?J+3T0hCV(WTZ*X#&1QF*RBP>2L^FxX-LWXq}>MjXoxW6+LZ zlT5SxiHNP~n6!GXI7@QmYaHvZ&RL;sVr?r3RQ+&mJ|MS*XHxku1FS>?nf@4Pp2d>v z_27U>Rkb8f=`TakM!z?}y4HOIJ$eek*pfk>&F;d}l>XePyZS(#jgh}2^Flx1OCu66 z-w5-@RjDh^OgNP`USrMi%0qsn>r+ZF2@{FlCuf@t&!Qz- zL8IgYcs%wB)4@0fudu^0?hJ)HTYN>y?Kxu!d8~to8T~T!G(5yex>~}($O-PAjC180 z?P&AwkkwVHALQx@2kYU&zQVcH*?4pe`CzvmtPcR+VW5666l$0CH_+!?0qrBa37`YJ z9oJfV(J~$wwk*dqM@CH3v8>^av*riZE9sf_vbtw8>lBys0fF|TAVsZt7@K~*B2T5p z$Ls*&<}cmeKQhN_&IkW+R;PT@IW#wd7!xSqr3587XHHSwr!VfHmIl`%Vf!DbfLY(m z=qeeUr?yH~4ouFlpsQd390gVu{a9${HoRCaYn%Gz-EWYuR zo=&1&10|9Xp`~x=l?TS!u8Wt+FDI<8I`_)hcd@d*XdB$b-msr-M>zmt^QYX)%Eijw zK8*N$u6Vp-Zih&@e<9X_IZ&Rhcfd`=eKzCZ4N=TCv*c_x8)BOyWErx4CAcn)7D#rb z(O62yLdaO~Jo+pwE&YG-zQyLs|LgB7T;zSBvln~azvX?-#ol*%>B6rQJKps&-gM!w zTK64-t1tFNvYpWZaqzRpQi#8c8lxTVDdal+k!HVhP^I3A8aYl#!$Tn%_Upa>cRTmNjzQRIeeKh+E{LoqOrVx@ znN}38D$Or}XZqH)N;$fk00@`b>_g8HHgqqQh6%{=j7%yTm=45JJ;u`RQ{?IV=0cSv zDvGI@ihJSNQ@cZL-HFpB4Iv^c)glmQRJ)j*X`p zMm&@-y(^(p&2v8O-*RXJ*OTJ< zib^vA#*WciwGeYIUM3|lF+CA@#yn%boRTf|4Gr}XA(PK%*4EXpFBYfSZ9vd0#K_4D zl?l*@etcxh8M1V-!rw;I7mtPX~;$?Ul@AuyQU(k=lEcf!wEsF6=UF~+) zlDXn~o#m0r+Q?*${AC~>(8e^?r03Yux0vmTMbp~q16i~afw#sYcSoWUHC5Z7ar=gz z!MRwvCpJbOhM;#0j-y$OuR{r8=47I4Y4I18S6 z$_h!c)))O^m);Xt)U2@mu&m67^}M4w?8higdxsM13PeJ5Z?C1$h7vQ**$F92ytd?P zREbTHXpqx3P?)H>;KHpw~|Y>vHSH}L`q18@%NzbNDdfD_4k9>EjHan z*(%drw6uyI$~mmx1oY-hPWo=wpA*m@U?(B98Uw4m7dsBGeKhi^PFBk$*PR6>fKP)8 zN1lz1$M76|LBz=U?b>wy!9+cDTfhm2%q`Y{=!7jtDiKw$5GSmKEpbZJG_fR_VO>>& zK`BpFu}5+OVTX)1|28+82;O9c!;ZOeL;op74YS+dplXDCO;N&*W@|stw5N4j7nSbN z9}rD_T_ECwkuH(lezqbE3*$l+{b9zvp5}G5FxLyHR9A%%D1~^X?*7_^EPmd~>Q>CU* z!0i?9CV`qsbYjwsq)+H#Z-j^x3fn+ck=>UCl7e4G zT>!hXmLFG-|L60J(BT6YU6!8n>1Lij2PtBxDR>@meJGOI4llUv{eKUmWOpG?%j4dx z_R7M_pmg|fQ7-JFvPwR^+HFg7U)!n6Zflw)f`}dilI`^3(r0DcE?ypO=VN~zHtta7 z`YSB6Pr3WzWn`~=+PZkrRy=j>e`h^*dIF$aRf6l|T)d2dFL!O0ea^8M3`M;rfrbYb5{MvIcd#`5=736FA1-Z|mnc zgB0hN=7Y9Ah?(BsAh(+4kdFFft_@pr<09~2iGzvy5M0k@-8%RQqaQvj7=jHu!tf-( za)*IGQD;kNw8jY2Fe40u1Qv%!e^awpRz9KX6i&z<)iT7X=F+TWXk%ol(Oe>55+zM- zehe>=C2Y4paWSacvmMGoTl3orxY9oL1~sq%5wcQBHP5C>*UFS0W~bRyY1N$V_$_i* z+Yzkh4|1jQ=TRSwD}}YAt^)aIms{qStwX1-IQ4m6nN-$&13A{dd(Cs(x;-l>^Wgdh zZNqB5Sc9!SV!e3sftDO(VPQ1aJewO`U|Z3ZrP5^SeaNnV%4PgF&*8>0lm$i9EUU26 zyZkJD*`*Ob!q&Q)Fb7i3B6c=vi}3!@Haou#;7UPK@rVgV+xT4Z)P3=?FD^E~t+p75 zTg~@Gx}_8{9k$)7r4q6>|4;LpoJeW6ZUc4#FVi9q&hp@SMqYl_jG9j5v$#chw<(8G z=IytesgP{G+kR#pE^PbY>7<_}UuJW|Hk_5=%RDa;)WvBjv?6&vsOqhVhfLpws0Ssg z0wtdljf2i!MI#z9=7U_f!M;93j14Rj+{+I1*XDS}Iqnd{Skje#1LhuT9$*+i zISs*?QSl6*Q8J9?XPcvHjU0IrY%!bP!U6OI>O22MCLYhkFIA~z(%t)ZQ&Xa9wMSPC zQMCh7L^kAz6tGp%Q1u>i3JgM@{0I)VD^Op0dmQfHPpkkH!(ovIOwp1@w?>oHR#X)P z5UQ%!G#TAGD&x5L6WoJ?UUoMd8G?dFk+nML)0LeBx;TuuUx-TaB?L1741+kjlmj$Q zt}D5P_aukBUKADa4Vv;s^1`fQCcBhAxi6LKOWmQ08jaDLh$xfZIXT&7DYX!2eQlv^ z^`o;y{&R_*VK;yE16G$|TF1zA3U2(W7E{@+ZxUsZlyCcE%hHp9_dXhf4ZnHaK{mN4 zEuCPM&EXkFE$u=qL_l$=!{!RWQ&u~kDRbZ#H6!{k4rfSxk^@h9liTm>DP0uBClXzw z_SZcV2BDkq}9ddUQ#f)Fiz}R;AA-hcg=yEM=tnmzj)e7^$x0`1RMd zS$pYUJfUe%NUAL9nT)Q`!qXuqS9V#ImX~IZ}JHX6UM>4c|SiX{uf?94oMMs-@;q8dcdkVYxEG z<<@xf?5cNp5@~OjqPF~(d9y)h*uu`eK>CI9FQMjMKPsy$sQLFC#-qLz5?zzz&&2`*77B%ws;Rw^!m74SP*VtJ>6AzobXgW*pyh}zJdA3L~Y;d zJA&Hu9DTi(%&G+Z$^Iw2_V5NqTjoy!)xTJe96^rV_ zv+RaUqN^A!bxrKtIRV!%c`JVR?RfkPND&Fyen&!%n~E+IvHQ^@(jT*jBLCu-=f5Go zjXWbv2wR1_g@@Q0Sfb!HvVaC6g)*PFW<`Wk1f@PO>w)PFq8vDzmRgp0^;)G=Oaw(l zVuVSXn*t$-yo!~>_AT{1=+dAnZpDG8(L7ZP2?X?D^-K!c+?FH_*^B};2UFK>qqa1p z1vhOlc4`S*)M9~rzZoG!v8WRt9yF+;#EV8E7&Ah8!l2+l@yJ+jR9a_`YyeeEx~`s%ZQ z3*xlBE3b~!AyNkLPQu7-w{D!_2Z#$$kb#6FaI>Gd@cq)p>jg#$Bhw8CNY z!4I&b^?^575fZXK-fPHqQh&W2wB|#hTdmL~MJnlfQVRrFga5Cy>Lww;G@xPt!JB6bG)Hit0n+En9}j1gNmdD7^(29SmcY5a3Znc-caBT zubB=8+n1{S16REF;r#qmDj6LpMY_zG73s2-$oI{Zd3bP>7Gs+_Nh3Gvf#wUMwCRt+ z(Wm-vN+#Qvb{j`OU#?8e>*+wOD`G{hu1IQ2mp1@ZK&!tuzl6FiT|!pq$2AMIMcFDH zF9B8*YIDb79+|9H*$m@U06wR>iEt8D;Zj16!c|}wg6KnVfM1~s7& z%ksNYmZ1cc`9R(<0@v$-uP!tK(GBRN_obDEXh7%wdOvEgKA?3QN>=Z+BH?Q6sz_ZA z9KJLm#$ub<^Op4bR}|@% z6j#HSo~`S9W7FV(y}Km~{W9B2gJ0(s)x{cf48`u^I9O}Y5^MJ{5Yi*$cnRULKtL%^ z%t#=~tWK6iffHPj4X;nzj;1+w`t=(kb22ULf^!-Q2O{FG0+n@9>f0$MY$qOzJ9a|c z*(Zspgg|K0&R!YUO;e9wnYEL1s@z>+r>d#jq|z;`wkXO{YC;Sf0aXncVR0fQ$)f1z z4FUbJ9Xx-vbV1vm$ov$gtB26id&6Ba+XDb%sYgwcPlKo(f1GE@`IIs1d+1qptejS& z15qW?8wu#2)&nF9;`s(=CvmcqbC|N|ZuOhdWM0#P-Jz&vnu6bF8Bk8ZHQa`1G^^y% ziM1v4a}Rzkax<^mCeX354|J3}UB+Uc)lO-v{yIV77ktIfC!zFP0C`>8?K=vq{Z#rq z)_S^5;zWIfZD?_)1x^yV$6Au!Jvq61@>5T3v?sHY9Pf|IQg+gInG)lZaJBiP?cF&- zDam#Fu?&Nr7Tp@FLU(vsnty|lPEFY>%YidT|m=wHS zb+)SZV$05gXD-6+y1|Q6%UehB0yy3NxYtKH*kug?X5F3&jr$TS*_hbiZA=!{w&wfr zd;WuHXwPVDW15d^?7K9(D+0|N0`u@iGS&p)$*gM)DbD{cY2hJGB+h2{R!Maa_*GfRjfx_;dDRGLw`t(X zRTSgJ_*O<@gMa2MS@_SzvFhG^)v><++&?wdJUNVEhRZr{&l z_<~J394kz4!Y~82L=z6-gbzQ~*TjDtkDP|dV*KVcd7L%zOYm5d%~{sskB^Y`eA4r(bP#B7_{``5L48de;;344(;8*4m{$T=)w9#G< z^(}yRk$^aCBG~AH{kQFXv zV)yWYq$owZWLfOKZSI;LoEBWYOwV3p4XvV7IhdCp*?^n^sIE>b3>{_oWQ)QASdOgr z@a2EXLOO<2UzY3kwr$74u0$uyF;q$%NCog2SK~EuQltW;{n%*k4CjY-z$t9Eero-S zoPvZixltf|-{a$)j#<{EXS3qzT>5dk9u$7dD@R*6>cm|Wu4-k%r!M@m&x@6K!Dsz7 zS$~D+Q153w#cMU94h*ovg~Dd$qL!lD7AMV&J+r-NgCrPzujTw6!00To|e#Ay2E46ry%c6;(B;S|mDK#R)@>87iBIVk~AU zN^LeOn(VqtXwIe~&CaK&D$2y9I~$Fi)FiT~(p28o_@g964$7L!9#&(Mt!c(^f{XFl zpFN9M@GMb$*{s{1_ljEg-FagM(v>f~EO3}o`) znxNcj&Js+H)4J$Ki(6OT1CmV*vlzhl>NLWTy+jBUIvWSM1$U`}i2#*wVIpkgw;Kzz+w?c&#EJxCf7;v30@j({}Qg4%`1eDgG$K}hT@ zBEVeW@bON#yH34;Gi_h09&J87Xb7JL1I+aa*BV{)+gpKU#pws0eBj2tY0J9LveHvS-Kay)WtmVg9IXn%J7R3cKA0onf zx~trL!s9H&$qP@I8Sc9@V?IHf&sv9p)Q2@3_9%y~Pd>rEdBHXo410mq+!HkR32Ul< zrGJW*DjHY`L|f(f1>|NyPc2^h}BINk49oG*~c3EpY_UDfYK3uFZluPXMkV23;VI6|A>RmJy;68G@ zeCj)TY$xtCL`6uMlBc5b)l^|1(>#?KD5QD@GIpYr3gt$Fy4pXbs;N@K&I~mFZND@2=~nl56>LAk%1E&7@6emPOd3`BcUrO{khT%76;hD)iQ=s>1$6^g;`lPQ(s z+3W%r3CbPY z+sVQ)O?#Nld|A#{6_7Za_u}c;c2u!g7+ZAnaamCF{1?&BYXEhA`T-fcjcS*Om9dGr zZ`~RKCk4f7fi3Y>^79d0yF=GU?0$RN{wc5FX#s>`c>+7?!4KgvJ>vw1@ zAIsLC#(49W2{B?lkahE&9BX8)KCUO@m4~t#6Ntm#j3h@HcaVjp=0DzPg-C$>oo#Pi z+Q{Bcje}sKQ)`h!^hnlAn7|{QTvYeLa8Y zD0_`k&p+?}h@EDP3tVLw}gDtJG4FgD3OjO7q#@ooO> zkFS0h>=oGkUuO5SrN4;tR)(m2ojb9-Tc-8xhR)i${ zZP3vmUK@UiwIT2rz)MlPD^@!iH2%E{K4$0Imv-tMg5rbA8KUtvz?!R*?V`%RdzYrF zcWK&Ps;cd>8kUP8|CYOh3ZyE*yRFswjO@9dH9X?gaXnrHsAGMFoLKXKsdeA9`k5`Q zOfYn01!dKtx{BlPU-L*;BJt~)SSp8C)mU;*atr zIE>-D?>(8wMG0aZIsflrQO*yI11wWvesFJKHT>2%5KlH6Q>WfA;$*v1kJ zh+j~aGe-Zp&&+iC(k`sy-=UEAD~ogNzz%N?$6%0UzpCrKn*P-+5QlyT4t*K8ruFJ@ z4M(R-1N}3ri+8ZGI4B6=s_T@aJvLYg6rYce_As#xax!DiQ##M4p~nrI!(cWa_tHo* zWY}Y@MDy$m=h+*_?02G4XGdDgwsr|IAb}pth(20ml5^l3mjvP6y$z`dUVFt<&q(*) zYV*|e;o88pb3=RL$)5hHw^PmBimJU^O^x1Snm<lDfb zCs!|2Xdzw!j-8Z~)O>lCRM-qp{{G4vcZ}_5{^O3N`5iaj_&TDHT_pJk+c9r@-HktF zXW)5sc{%$lQ4)po&98{!+^^1ylHl6eeTnQq3?!h;z4g@dO9?wv_Vr}bNiC+GG^|kL zup$A>%hwFM5wfNhHEq%CAt8B639`=cbWh86ZwH$jyKs-)Lij|T+ps%7I%E?(&NjXV z;5L$Sm_5#bw~*at4>)uRDpN8E^_Yu5Q4zOZz6|?Tp~D+b31yILZD=OR&2P98q4Wkb zJp*HHf8K1&T`>zPl*W8!U@)^Q9Ybj}JM3(D`-CsydIj*&r<2|fqZDk{GYO5?6o&Z;m5;KxU|PPMe!r?wtN7W3Tr#=|;2iN2{WH_gkv z9}!qDojb1Q+uZ29e)D$ZunbfV$m;$n@WwpVzYO~>Eu>}LpNE6NzNdlwNC#)KRZgHi zq~m%RE%?K@vU^Ag>DY1H37oQ?wb);$Xt@Jrw1%dI0Qf)?<)BJ!jf7y= z_Y(S#4mFD1-NnZ9Sc_zlMH|Is4F$Y)BB54=A#2CZ`u$BePj?rWi{0l1)V02zJ>hJl zyNI+j_!D>&`6k;Zu*xjf>JBeEFl0~@#&s^>keY{N1#=Oxg35K`q9>y_ZlmVRQ5Mn0sQri>P*RpbzJZk0gUKldZHKK%h8Bt~&}oRMA8#S9sd%kGk-owm}G^ZO<; zV+AuV>umI7Mr!%Aby_3h<3=DjPxP)0b3;RycWJiOJ5lP11{88E7%(2E2|flx=f6PC zp?wY;8Ok3?rb)ckEDRWXr~MBr>qSQI-^{t1E1litIfuo+h^` z$>8i=mu=f%YFc>Pbr0=QO+%yNyev0&7C&;^o(_Ml{;|=jPv6*JY3veP`pK#GWcB+v zIL=s2uvOdr>xPFxkawqGx@e$$yqt!g1yV{6Y zE~&tHj>nt|Fa_FJah~nL$A9+mvL0z}kLYCrN*vLEuInO^Lf^+iZ{wKP4k0p?jfk|R ztDwJHclH@!7#4~;!mlrX{N4lGg28PE?gi0dAgZQ`B$|QdS)V3wRWUSGlyv=RvDg(3 z2E#qk2ZNw)`;!iAY`|HUP$nWobMags`@$B63zog==_}>Sop49hCDLfFkW=XxSN(t* zW_8TEa%`Vxa1VC&B)f7q+v{_QkQYI8Sj0o}(V7%?27MPnog&j{OBSl`hh%mJanq zv%8<&osIT{(zSYbxOu*-t2Yt7PD^&K8&30) z{rin=+fK3L92hogt#ZkN!TJh#v4j$`J`+`Gx#j@oqoaW1W`&JtC?EJRF0y2`=l}|& z1540%#eoCWn@2X1%VwJ&IZ)qkkm->RPRiH6Z)8fmY?fRLNzJce(ld~id}e?Bz|fzL z?7Uu{%pVvKcl`Fq2WKx6hgKz!{|mAqf2>2l&GBovd9zE+#me)}xrW=VIB9S$pbM(c zw~}Q{x)PI4x9kR#)_B}3TqfKlyiRyG>n-J$abWL479Y-`SX^~?wr%>~t8yW5G zqtRx40=#m`W2#qHnb3kumO|aN@4L|bd-6o58bHB64kTrGl6Q;sU%&AB;MB9*{vA) zm24zXSI>|wPXE0tZrGbSkP!Sf+eZA-d30O(`)l&L^lSs|+AFMf0ldWfFj%@14n-%i zY_WkgC|;}R z%WW)^C5ksr4{i$&4TZ1qImXPk+MVyCf^42}*jVUA+xtPbLR1*-xS3IpU^fU}%`X#< z3Rel&3CD#K!mYv`tgqb5ddq_XdOV|*I6Cu=varm4=pmQ=AXHqZ$zaACWg)>U-1`hj z&%t{eWpR843(IaCu0eiq=2m7QNX{X>49|pnS?Iw1LIV)S*nbGg5<50mSZ#wlnk6_i zAqf*3q~WIGg+}AN(BSv2v{Tvhns{^T5iHjdB)d1PxFNwuczK0K@%at+ ziqG#<5Ria!tFKG)si;qHr$VsmEhD8wM?P-2*4~Yhr!S%H^ra|BXNrJwwDBt^@ zq6DI2?qwE?wQ1UA)b*N0|MfWdpa7daMba4*+=FmGh)i8JnNNDSf~&rOk*ZX;Me98W zU(;N%V%A18lmM;pprtZGHDp+2L-q*#=gEBg-?_S1M@%G-@r)5*CC@sbOP6*L*NB;E@MiF#t%&=jJunn<+!I+!) zxEn6DlUS52Fsc}l6;852#vZW513(VL)D?CeEw!I`qK&@*asS${qMz+Uz$J3ZtV57e z8H``bY~$tFghr`H&aMu9)^G$(l&2|s?~`|Nj9Pg+$hMd@+U zs%olgI?^h+iGZT4HlebbV}VV|IG}h6i!Gdu20|!} z#*j4ZRA1sp!_^0#eBje|G(me}+U|s6IswhGqYXS~5p+oeMj9;qad&m7WT&sGA9>(` zhoZKl#d>IB)X@TtAtz${`FYIe--`+nL6|0-XI}=ZZ*I}{zVE(|{nfwqtvU-{M8=8T zpUL#U8rVtL$NvO#2zORdl(pXxo}UyB3lE-rv?>^Shv>|A`d>Lw`6Y~Z6PSRa84AO?E4#{ zXBQ{x?3#hP#X_;f$Zqa@g@Tz+$uC$KA$89}mz*1WP5!%6vro;ACV#G)8+!V#P{V3f zr6&qKdYsH)r9GaFjj}wmqi=d75$Q=O>An+`Aw#j z2?ld|cwu|IZ|1tL;I18o@6^Xgy*O5xoP5i^%Qo~|nVs*Nu}2Ty^Y)%=NixFbU3;i(s}pa(yq^$bd_z1n7#TQvX{;+B z4~~*|hPPi=B{H#hycz0TLq0Xo6r0%S*dtsjTq#^H+#=lRaf4SucDX9@uHDCl;;XqH zi3^;sPABh9MLDiqGRR@&l5Co1)V2Tk*QkD^`&6m@algVgnU4leCt|M&#bX?NF82bA z!pAl3X$YUzw8!1^-GSzR!>1g@<0HQK2A{t4y?7KjKgh+o)sX`B^xcK9=f%F-mVW`- zl=r#ns?Tqorxq4cC9whW)`jL-BJ6CVjo7dD#R0sfxl&3Ip_E!lm5{x{e$V68OY!(> zU%W%7R>yuTkTHjQK6V&QTpNc;faW~;3~7@8@eVU$OF#S{Y;NcZ9rsM;2&F4p(8#UO z$Agix2$kjcg%A@q2s1uhbB`kvuRGPE|HP9h(DibPV=Y38?Teac+{k>3IsmMr9_|HYt*>KuWoJ7Kl$BoqqRY?snNP=-W9gNptTx5gY48z% z0crTPk5NQ2md$2g^kvbeeAt-=YAm$93`KASV$<5n<+tAYiCb?OI$T>=AS?U-VAHkt z+;i=wKWM(AIxuzf%~Jy|9kYvlSC3Ex{#=oJQ)T0|j8AhRC)q3nekeTT83k=0!17ZZ z><*QC`lj=5rYbPeM}`|>pa&9~FM?r6;nJB#`+YQz8cx^wkR85=UQ#MdRwP_=Il=^S_7i zcyb-X#xu(zI@PG$YL2pHS*&e*bHT8T}DQNy(Pt>Z= zH`D~ITwE!d(TZ%B4C_|kn(5lTcQu{>{p{4Zks@{9#P%sZTcb15mvEG?;6%F%?JCc8vzAwlSXXa0(N&NV0h={#x2dR^ z=v7xmGpf?-oAgw?@mn3VzKk~YUnXA`rdhl10^61Nj8q3BVb?uV&U4OW%am;b!JAHo zyGF~in#j4DsL@)zkf`SpPNgR0O67to+1a__;km3W5rbxJQ54A(JJ?xj5YfmC>>nS> zKNyg+-2)rLm?cPv)O^;>^0$5IrSu;*f2mtPvR)#J7Wknx5+B`uNl(uu+ehQnv^B%f zY?DU%XE!#w5)~72T)<+zQIQ>1<5}ThzmAy|a%NixIog&S_{^+q zu(&!DWOp5NOY~x}kM{%aH?1QWI2VgN+gP=z90j;=`X<8$DL&i!onf)>`&Sgr@0)xS z5q^DzK)lTf)*UL`?XK$(t|i-rB065_Nw!szodwYlHzuxxFXr)>sJw%{jur9!SZahd z$1**!QVq*}(ewj^2&l~p5SZ=|mTdJd%x{9A#0-bfVGj7!h&Ze#UDti0vFk4I6 zin>G^=Y>@jgj4PqSp;9w5Lsz9I+t8m%LiM_qg%SziZISb%O%2%!fS*#T#Pax7nt{* z3#8XCLPcC?4H2{8jQORrpc=n~YR~5dt_IHkmi;FoHKoQ>U?yX5%72Y4L<7xJoXZ!8 zavn(YNxbwZ9`E+WKjV9fnri;YcS-1wy%jnz`}mi2d`ShrkZ(-MBCGcW_HzTWg6aSD zoTeQ+rfEFz^r#!?|GZlm;mFjh+JMnyEgShx>vF0lD$#hsZ6rUCz^Rp;C@k;kG$@xv zL;JlYWQupLv&7K)D%tfCk9&0=QW8+4IMde%$fvsG8_S+Wum60;hI%clK=U zH2htNb1o8>SmTKVA;Ojxjkw5tokw=_2^IN<#<&p zyXGFf-1M%(9kX*=FwvzQ#r1qHvF`G)roBTEV-s>rPTvH{4F$OL{>)va9Ux6e;f%ho4`;NE3^wxz2vX;p87Ay0gH zeOVpfEjF8l}4yN`}%G%Zt_i$#kw znl@uLUqI<m184^fP{|AfEr#`7ekv`I^uRT!(1gp`8xO zI(XORy6eDTOi+PE8?qxjxLpmpD^-_!5<^KuY-G zFb_8lbM7+~Pg|raq8X z6iMtoj1wW77k55~lOsDN!v0N+pqDlsXTSaNzVRMOCAZ>S2vg%uoFCzo>#;)F2>B{n z+JG)|0X-VdlIj}qfEUgX^5a6fdBYVnX45N%C$Kgqd?9>xWu$vQc`|ot`lTzV9ivy= zI8wn1oLCd4Rn+Hu>HJ@ipOR0r^|#AKeTMc18_TvSaJ@{)PZX$L^ItN9qrKf~=I17! zYda6Vhp4K1sV{qJ<^@)myrTSU$HDis^cj|r1_3N&kYEeZ4tqX#qF|KB>Uo)5Am45r z_TYhYj8VPqrIH-;Us&P<65=#*hjPA^RIiN?m2xoa<`NuJsn>k)HK`lk za_zNmxpq11IC;m+i;87QWQk?LjHHn&4Ob4n<~0W^!{>!-A?v1O2>dMst%EA-dTK{| za~!A&Q2whCN!G|<*SI*!h09exZO}>YtqoOfc3X*aUP=d5@ejxa`79pKv^xt@R342b z3Jco9CpGOPuzOg*R!lr)(kD&O}AxToGTl4p>X6wY^0%o#j$0JJnAb{ZlAsAj_#z zR;LZtZNK4ck{ zWl`}O3&W}h@cLRtAfVsiI>Lbxg3Pj9Ds!_HcIz6CV+jXG8vAM-Q?A0>kj;AlNdikoL3mah9L4ffH zAhJ%q!kdaMa3x&eN}%|`#hu_g%Imu%d!QQ5(x_+*EiPuSo!h_Fux=euRP9tEe0fTa z%b7PE7)^2ZYFB9Ucu`Z09aDQ7%X8OGY4UCw68l2oLnpV?bz{ddWjZ&y;7Yi-EOx7~ z1pXq6IG$Gl1c22&2-2~!K(AY@TEzP8NTT^W&F zxaP=AW-aRZ0^_ZTiabzow$eE+?soh0W(e2kiLd^`U?e3;*)D@ds1Xe*q8L?mMeWmR z&58v?c16+T)tAnh{t5^Th1q_uvjWJN(iKh?#Rw!tL|s-TiHKoU7BxzOk{vbSA{!lR zuYTOHgN9dCW-uC%#8z#!>&k>4-j{c~aRQJzUsi+eo}ao*2`QKT@vm>hm3nz-QB@a* z$`4+=pTRtt2Odtnr8ZhFx&GPEJsa>zYh32-IfinD0I1-`Jvyjd_p&?8E*JsDmaqK5{`?@@Dp{8P8-ef- zV19VdZK@K`%?h|__}ysW2jRePz-78PnBQ-J2ZxHO2mT-4-UQCEqr4YYovqHk=tw%P zrPW$mOYiDdOX`{F>Cx=_Onb&2k8K7EV{GGfY-1K-Nt=~UIJ`s!Q%pD5k> zZX@FJ#Gm8NkvUTW-A>Qm9B0BUO$ow~a=>TINBp33nUc`JJm_a^NO&ypP<9QwoO^#K1CQVD{n_{gv%&G^#_Ddrpk-t`dhS=G+i5YEB6BOz(NU5 zGhY5QuwJi^DsdHV3ds~}RL22U7R*ut`u*F2ypb)kXiM>;M|Dv_CXYF*s~5Pn5wX~$_G!H-GY3Js%J;iSh@Ji2qz z+;i*w+{%gDZ$GiZ-GA$zIK`|I{r+S;VJh;n$nB8zoUK(sWUm|8S9fp;ivzIPB0v*0 zXgd0kXa6K~Nmv|x#?kD`wyO}EBdb&F%YPuvP2zhDW;5g!$vA^OgLC_>yoyrN%bhk&V<3M$ToPSM>%zO0=qanoE|kao0`mR%_yd` zS^V7h$GEgOl+;Aj2`LV`XZ57W#rC?>*XNQ)&d3JlV&;ot*6jYcYvculguLO#_s?3f z7nw26*3TSC=9Y7YZpAAFmBEp!g-YDgjoinl-MzY|CTU(Lh*hLIU9de~9n!jl5aWuy zqiL?e-g%JXmFji3AxZ>c4B&(pWNxVx@O*&%JzFj^kAYbuO4$>}q`1R&HCf;}CuvF& zl2pubmNucC-nxSA;mMpkWH6k*Rc{C_EH7x{d8&4Z8khAIOqZFJTB@8hJza`Pq9W=} z>mXM+lE^Z~`jY^h1pE&|0S?5c(3j8`BQiwd6E2u>y=>{M@Y9Go!m@O#%o0b|`f>qF z_Z+{*jP6l*^cl=4d!xoL3>}Nyq@)&Z8BwK42geJ?=Y{;$dEx%kH`scH3<^0RWpo?4 zRxzDc_=CEXNJ#p@Oxr78xlM{j`+6_nxgb^vEWq#vfLUs`eESc}sn|nNw-6Oi>QSFH z7W`7cTI#VIG)}Sm59#>dQFaE-rlv>_)`o^CgTui3yRW7tTCTw${6P_xA0Y>1-_F68 zhL$rKV5=jPb^b6b(95TWss|V|9gfRMQSZ#Y=8>!+rFsm)E0*~7nR8TlYDL*TlN!%DAv;EpCyud?y^zW;MgcrD0zbZ}FNKgbs9B-Ffn>sscip?!?qsiAR>CYUR)2s3=aobxKXD#oJkoK1$O*w-rfN$mExXqKYg5h>2j! zO~NAR;{i{8-p`2vl6l{%(`TyLz`#LZ?$@Xm)(2%gd*o$#6w?Ic>;&U+TYa1KTws%y%7`kqiL544-B!t=J}~sLbF&;T2}hGl$)h|L z1vEz}$ak=Yj-be{>8YJu_f;}ya5B2ueUOs01D_UTiHp6+J`;y5Dt~}AZYzh;>$_*C zckP(Em6NAs?!{=2;da};%~|aA1=Mhhuj}5_#_Wr8VSMhM!918GrFgwkE(X+!yUhiT zX=c|9_uJe|zB)8i&Cj?7A`DoW%oIB;WY%6ZAxbuJV_OG!_ z?smK2=+Au@-EKHwpHivhsXT=887g~j&%~Y@dhoF3#4bdPD6;>p`+b$=XNP7R9$qp5{zt-6qjJsis%&_^Mg{ODWjdo!_R z!rmC}axAmAUOQ{ii4N#>D9%N`whxb`|{rUH@;=k-8eoFf%b} zdi{tr;sd?W1+g#3|FR#0IdSPI%uuck=13gB`S9VJ50_iVnGy4N%PAfyqRVCFZL)G1 zb?%yaxgxI}hTCpA-Wmt%!FcPqZLi2Ox#fhcq!nfACRqvTKrxM_uJeSc6fM>C=mw8rOY;OH)0ZK~=K)t)>u>vKPig#&KqmEdVjfn#SVw*#QDAoDTsSR%`}XdVhs0<}OI@~F^AnL)s{3n)iW zPnU>FgMCXz8(IJ2klsV`z=gk)V6^o;JPiYy+scqx|@ILpLY2>|b< zEH*7pNaiFSGN)YXYK_v|SI~~@KBJ0Q_Inc{i8E4I5Cjn?jmn5F3cSC5e!+j&pxc`X zk2;S$YT)&HEe}=`GWY;Gi=koo<8Is7F&SYbbblPQZt0=@4{nz=gpwGK9}r78hW*hu zeN@)AtD0Z4UwLr6!&ln&W~<7;OCw+|i~ARa2WsxogofpW>$lVOmJ?US=5bC=O@r z2B7pW36h|QOR{d@ZG*b_wC}Ijf6HX_4~+eqCvEUC_Px@jo*kBX3;6For*!|mH>8Oe zMME*pQ}rHMme0_2v`s$j?Z0K!v4Re3}f1v3>>N9AAJj54;^OpEJ(}$NUQmY`v0i*-% zo!`%%wSWF)YZDW*!+2=8=)zl?+^uJBG~89!_zm&MJbU2$5%Gqv*N2DeRXZKkNM#yh z*^Uq1Npt?uK8R9J_!e+a0qg@}@oE?_9|DSoV~I^DT210^k47`21xM2w%h9_vP0Mc+ zI)BODVQW%RLzD@L2z?YsN82;y1R)ynyN^Zjlpy@bI<~d!(7w8R&uv8^ATCnmd3gtl z8cTR0k?2Q4njdb4^@I(Rka96H5LON!b@q4)~CF!rh zKfb?KIW!}1o8~9-QOyF+OFXxP=BJtbRVhp(Kf61rjTak1>wC)MUZtonBCFvw(WrSm z9et6cVXR52X@0x7t#G&jo5Pu{mKW+SCw`KA;fzAQlRi$y?p~}Jnqhmt)0`?%hv)8Hhxq7os*V0;1Vryxu z4xv1KKhpn&g|+)>DmSf8@7j507g=qPtf-Fe8Hl?5hOxh#%PYLyUK^`twll_ zX^P;8NOg59=u46D$garV$Ti?Wlkd~GhEwhXa+m4A?W1W+*eS(m$Wx;RxL=Tki9$73 z>J<@O&Ev6Iy7bVipc}#U3KxXZV(IOY&Z)eFSI|s;+Iyvc_C_s-a&*M1SqVcTxkck7 zLVx)1f$j%msbQ52I5nGcjl~-tKHw8jbR{p;I7u2IKQSS5`I%~koMo}bPv*_;pFf-^ z#ffkwdyBf6Oq!|G2QaTbd~>z2C7~di2AEu$FQ?WX_WR?PNPkR3mLfYNSAuSf=4f-u z46qym=X~QHbEfBDBnLW%O0TINwG)umld*=vrM+$;7djBts=X0Qyvpg)E4}Ib3|fIR zgk|CF5~dy1Q8Vcn>jcvFg@+HIh&r5t5;v7qSrO?}R5A0DyhcWe#8s*@c}|`nzd1sd zZd4Qa?h|w^LP~r~vzki%4(24%^4W*G=aG`w(jZ0U`9)7gv@on+f_0C2ORPuv?`6_u zyf`kd+vh7iA44qGD@C-LE-`GUQkq#{56JR+qi>bvH%9N0<(E4bBFc@_r|4;?d)Z~$ zzIG{1m-1Y?#BeLn+d|HD?GBC2X|JpVwCuYyC$|$R^s}AQbc{5U7^Ve;$S~>NOK@2; z<`{21E)wc`^tITMkH6J$V&;3$DvFxj-_xUVh36Cz-Kq#PGlJ56x2y;iIjW-*W)vxb zFV^RM+7G$P4@X`exfQ%hAYU6Zc7VN8DpqJpUuK2yuh1lRq=06Iq=_O)DdeAw`KZ{C zbhTN>t`Db=ikKnhw_J$iWLN-XHa)8IvdrrRS>a@vQ{-!POYj6mDXKy`C1^#3l&9c8 zQV^FAEuFMUDr&D;_q7xE^P-fMbbj`cSzaecB7eW;WD8m6Y^R1ITB@1S3^_g-myIV9 z^JgYxOWAVY7R8caOBScGYnmSE$aeU~>$_hg)6w8W>6NdPL~@`@XsaD_vJUx+edrbR zodxl$V;75FExquN)yI@gB2~??P^7BN(MZ)lFqEfQcxqGPL>ivjk4rFscW|9z0Der4 z*87R%8})dn?K$XK$7?T#{C?~;w9;KguLg@q_W?BE>(izfdAv_=nJ@G_#Xt=lEh%xO zdci<~4SeFu6#&JkJNY<+VtRUJC&hrh(K4NWMvrM-(n7Agf#EKNkSm%{8JD@z>!^!kCatej!?oPP1H<99wr-|fjT zWY3MeUYxu0c!$2vkUssh^!+hU12S?jOQ}HBG=*Ye0{O>9vYr#xigBSms|%N_E_9A= z9}~2ME=(ehLzOZ+e#vXBVI93t8Zev?bvZF1(o9Y zncRUOHkAv>Pun(PnnZj*9;C!~~qKnS@(fhHJz@r#H$J*nyh;iunWC1AEBtalLlKcT8IKaP;r)s77L zqY5%6FNbWeG-vq|s`QLi;iOZ|es`{qd|n?J%`N*djt@i?m8adBFwKuxRqG>c_hDN0 z_6<>mtOP}T49MvRqqB)m(Muohf0^w5ftJ0UZtn_hSqbCKeGJ`Dbo0ef_MSJedj%$N zcMZ1nklWPVp{?tCS_Su^cDmGEWdu|fuI2O9?wJ=>uV)5oG>AXE zNiL=6CQp6WCeOGK@qZC-`Yv`ne>*SM-sfxg#@1h=4~~Ym&ul0OY+!@+--v#Bk@2&! zhT#!2SfAAmgCwwXg`WMqPu}>%XD<3I*4)rD{G6h_Y<7VZx{j)`JYFoz-U@X#quUNm z#r1uOFjmprh{;b*oI1CM*Sb2gUwftBo1{GDY}eG{cbz8`aYIM)3r`hpO% zyLnc0n-=AN9G)|g8tKDj)`RP1i47UVR{PzCLS6W9zuVSAJs9}2iG-IdP*hS2)d|m7 zH#rbrAvqxBC~2Z1@|Qr*RMh;r>*UJ2u1oLVyEU;3T-lMJdD_RM;W3<_p1k%l^sdT{ zTPEeoY-&Unq+Q^}j(9zxJ=J){xKx;$%)3xU*?DIQO$NhO)G%w6dkl$KJnXO1kEgyB+Y zH(Lkzket_soW&bZ$5>t$iu?smMR{kC`=d@raJAyEfEdC`C{x^}nosmycP5`Md5+vY zUrw#2%JL|r8;E7fEHUAKUk#1gE8O(oT+XT`NuR;`vdY-!)yT?dGP`-J>=Uw?!h`m{H3XDq~~YT8CQO#>OgwZADEY z0EwI=*`vGF?x%%fu{4^EmttAe94!@#0?Nip@$BQWyl-ar_Q^_Ra{KO?eX{)f<&puv z2sy(92`kQf^i)cJkE38oU}?)Z(I}O>|1@S8rTB2#D;dU^n;vGi+2<}ihkgm2gO!Q( z2Nrt?)tLUmL$^mY-2JAW6irFd|MD*kMKZ;t{u4P~AiVZFNZGKSly10zlns+>!J79p znZF;SoKeJ`=IJkq@Pz&Y))T@ORz<|=V%k8{p4WZGOpCf`7*BqYMzB$sD|9(8Ylf87 zb@A2MvpxK3QP;D^kg(@`IC>8J3_vflMo~inhomsWmsujK`ubo-GECVNtHkTmoSR_y zy}>O+f~?ug#ZE{|PK}Ac@qo zChQL-ubLm*Q_iTITbtf~m=FX(QbhH4Ug{{6mOqEi`D54ztSB*Mbg7rg?>2wbcE3pm zGpYxJ`D%aAzGK~B9vH(3@SSK;U&P)I2FMs2#<1t1X~Q45PZ|a}NSk~51Na~MqgEdh z_v{gd3>eJ224g?Pp8x(384tP0D3L27$m9XfFP?8KL8zV|ei(un%)rtJp48R(wpY5h#{WSS%%Om5GyBCZxzD-8| zSQv1BY*I{VbhyQi^zecfc3wHJE{vLj!4&qSwgg1?f z0S7KNOn?Pzl)HdnD^QJR=t`svb+28Hrw$Ity-OV~O$n$8wbDfN#u83O9Wvcia$ z%Ay>4NKSOWOuow*O9?rFwwqCMbp3YObTzK~4;r5ub*L`j@~wQ@<^OJ0<%f!aoYHH@ z^VL5Ra%kGTn%%!=HQTg0-8COYE$F`$iUSd#FYJ#*X2bdB2mEKkC<){mi|?TMX#3^; z2o`RIWfVYb)Zc|}WXPu>cUNRoljZKyen36Ajy?ylA8ndZ;JX3cR^C8EG){+5bs#GZ z_=Wm&)vv!5IUKn%@=_WFus#z4dE4RW6&8nDuK3O=gOM+k$Dolf5Dm}@Ik2<_VIo+g zNe6J9e&U3O6_S3TZ zccRtn4u2Rb^s|$Sku=nL3r_Ao{7qU(?}Q44^F!q9*$!p$ZzcpmF?Q4AjU~*M^|K3~ zCcNw)hj5@GZZqqHdrIJt#=r$G1^^XEJb$wMjw{OP<#N@rQX?}rEsq)2?K4!us&5P( z`;5K)4ad^ub|JG(#N*4a+kNP^?w?Y@=Qg^XqT7?}Wl4+4VH?L)vo|UHNz!65_Kk3Q zgEb&-oxphj`mDANhWE|aS%xU3HNO^k-JNA>(B_;@{DjC%!K z38DF{zln){bkjb6zCG$5?Dz#tKxCJLJt@uQ+O@Mezr^idU_K0Jg~n1aG?>6fE z8~PG_Yy-M+UI-T04RSOpmz$z0HtD9k?i`>22LI6KBt`A!R7IMa;(7KVCFp#(r2B`P zpnrw+l#oY|VRCOL(&u47KaKm{Sy~Tq3bIiY+zw=AtOLO z_DqYMll@{VL-+KYT;H~r+>erE)BQX0tv72)TzMH5h{%7#$PC@rMsARJS->04E9Cx2 zWWeuyKV(S6A<&FXV}`x}53?rw$4_7E_j7c(vF=!3tB@}m@Ft*V-5H5ALYSVz{cK3& zxCQpVzBjKksO0ZsR*@$yV+Gwr;V*3YedY>-95Ywtm|SOU(^=5mET1RK?;5Zqu$;DK zx!P8p?ps(i1G>jiZxO}+pyng;o84!@b`ct13e`7zxCnr>tp*0=qtzqXYwga`No;E; z*Ahz;iF>rH*3dLkx^hyp@yVr6CMK3hDJjfqJ)f>G)3qQE6xwA0BXN#y86p=X5Q50L z2F=Ax5iBVOIn5Ot;Lku6rn&RvlS`w?gEt&FIyGOM+M1cL+}gK}9+*2evru!biOkli zVjbl`9oqdq*{sb?mv=d;z!~<6rsz48bas_TCgV9>(N=7O6GD2a@yHx_I7XT0H$|{E zxqc{qFC-u25bBP$N&L4rKJ4%c;snee^GCul(zOcjOwPTDy6^lQ3w~HTcc!qj8Q0uh zJQn$2(r9>>tL3hqKl3?i@+gsBHaowAgB_6zIPOy=)4juO@_7=**@3(x6wQA%hfZZcOKt9ci%Y}HO0xH zqJTJ_voYeLnw@cYk#{6={BRp99R;;0C|CE}qez?Ee*Dh0T<#9okKRW^sn$k@kic=0 zW|>Kwm&l&TdH+h<^$MEfsm`b|)m*SYc>56PM3_{MpKDPQDxn@A#WB|^BF-kbtI3Li z@#Jv!be8-LPf2*DoZ6{G(YvDx)LH>DMxDTYza!@5kT?Ke|Xdr1kjm7sHc(p7VZPT4aMiJ2f@+-YNF)W;Vn>!*Rnt$oq7`p@1?@u%j?L zPGQOigZFn+>^9LEygTos@BDB4wZ}*`e@s4m$mjRT2i-|0);oEL|Np--FYwpuq@JO% z3%ugdzHf)Ws)dheuyDx1!>cq1m)_{71FQFB_uvTqOkr*=!FF0P>eM%@ZYU3~tgSGx zh44K;RE(2$A5X$QX^<~bi}kxLHe?_Z+E(me#D5i;v3%c^nm|QhQWt*CEl{wW9 z_Wh`oBzJ0h(%Czw*;g5!WEh7meOI!us0o^>!BfnfNtQf`=QE@X-1BRd}4fXpsi?@EHCrZ^gUwQ!G~!l`Q8Km&gdl#im!T)DtuT0$1^3)SWS?nLjS#0c@w+V50*q z$x}L4sc`z#DM6LV9Iy)HT%MYeE8G!eVJQ5W%5kctbw54UYK@_NDHffS>k{rbYCby~ zA0Eq%4ac)$v>4BhbHih^kH%-m#XC8 zRpv{Q!_Pa>Y=Us53P;#CLqDWubY)1xvpj;FXR9 z6}}@$nCt`q{UHA(FRs{5BB91T@|Xl^o{Tj16k8N=!V*mKR4=Y35{|9JJ;H1v9tq+% zmdWr-O{SP#yoXmbfDrF{O4Y?nWM1Uj)JNlODfdxDdDKmz?9!61Cv2@nb`a24C<8?L(z~=GD=qIncX!5?jju7zm%BdjcrbxyC znK-Z{E+KdQU1xn@AR;14O=nKqGQP~~ma9S&V>w*vUFITw(en5fZO&;*SKwT%cNH|a z0mjh60aLH+s2xu#mMRgUDiQrb|01$!N%DAYM@2UeL=)X-`xpI~kFTRIMrOeuPo!pm z`DUvT(!%*B)P&bdoXf!YXd={#g!3Q}7UO98ugcNX{A52hmK~2)6kXReeV%TWiF7LZ zS0#V}C=GSm`N{hHRmt}dVkD__^B&zH_mdmR{jgOgrW^Ii{Bwy)C1HHx6Ft9F#N_p~ zp9j{r1Mm$7a^>TkkOl-fb`fc5m#`f<7#nTU9b`QH5%ZE*bB*&<1SbM(i4L=N>8S6l z*ypY1so&p;$crM^ug6{41l+=Z`aq~!Dc)BS2HIxmWTw{T0^3K=SByckn7S15Z82P# zmfru_`@3t*qOqN>tgCcPJxsS}eOIZrsV=ML2Q-U0#jvewtkU9IVS2hyTc8@mE=%%w zCN!SN2nqaj7W@0KJlVl#=D6HV;1P z6wXSB$Kp#IO-?~5B!?4(T~rniDvB=hSil@#0vlbm#B=0~7j;EBxTq+($;^btE0{xC z;bcCakcFrqC~@1!pDbvIqhHh}GE=8TR~$(=3Ko%`Zp(5zqahJ1PGW>yaFqP1qDEv} zKxu zVVD>N^b3r;-@!5bIL1}7yW?3YhP&T8tLsyuA+{b93~@@=pB4ZuECzRy8)M{7eD+z4 z-+5NorbMyzs3=Zp`qRuz4Dt1pU+{o-iUSe$5EVc;2#dm_QICRNeql zctX=1bi1Q#PpmCoe)(dxIO@i#lt3Hv)*(Lv|8-C3*{uG=>(JAezxwj{C~z35#6%;M zn<`1Y7qTdx-;_*jz);McxV_uH{eXQ80`(U5KDV|4q)@ycG+bHz~?>wMg3=@Zc-sx~sb*DA#!haNL^!m2vX#*ttizP1Ff(w#cls0ccc^n;T9P0l0hU%}4moHWQdGf70H?4bL z*Ej@ziDnVdpaX&#I?(-82Q)9e zE7Zo}`_EW}?pH`J?w~nNZrmh?^8g+|kLt#~7jWEa3>w?S&~JrJu*jCr%jE9|%m~`v zY*$q<9qD8f+>Sa-@Px(z&_5u3$OqO#KKp-uN<*@F4ZUwbM#_^}xU(-Kkzv1tC=~BB zB;Bl(O~9X!vZ&{@*`na8;Y+|=Eg>cuJvNLT5oaWdH0|6vlsTFF4S3V8yQLX2RdPH>TH!|-n-U${n+-L`&thPlCbr@OhGbu zTQ=g+S0)&wM&hbbycwDOGpg+{y9=`K(Q_90U3S}wC%yV zIKonYGMS;`CwBtk03T8XY!|6%2obbx3o#bOlJ!ZVk;CUleF5iaZ87om%C)2~paBjgoIgxz#Um}kAc-E~T zqDZEyeUUyS=&jM|DBpF zcSKYC@Fw-_z8}Y^SMhQTcSI4LVAWxEqWzSfc+^?}Iiz7u(P$^&%o~umz!Ra4@o*if z`V!D{<7fq*cOCwWu6J;(-6mYx_Z9qPuZEr71T`cF zD+-RR&&O9Eu*z?iJ&37N86YLIGLqWaXTj?pJ-aS#&p>~0%p4St zZ(_rtEMQD(1v716Ht*H7Y(8H~FZ=AhyDh5`*%mVC6F zF8O-S+O{lJ4G3AsipLRH$Z|Mz`+e(M)BK< zygy?!m!p_X5gNB$4&$B7_Y*acesfzD>;bzv12`-g_TENAY?WUf6$b#tdq0LaPg zZ*AMAMAOQ)%S@5`ds6b(8FJ4uxru7-$W2Q3hc&n<9aXlSFvJj6S)0^BjTES)5}+KB z7y7~~#6>_glmj{RdF!=urU<$syFK)V7gj@w+N%)yQp6x~?9RxGBDY6=g+`9WsV=45 zYF6gSNR5M11o9b^(=ud6NHDNiLVKEJNCo002!n#y9iVU_vTlsgcj9QCo3DO&LN_$y8O+VVWwa zpez*Zn5bt9~6R7&jU+siLheY-t@w0;k3tPP{iW zshXBj@l=OHoG71?V;ZkGnS`yN#Vsd>Bu%o^_zedRA$xe7>RY-*)@&15bBNi#vRn+L z5sG{QBZxu|Ci>A3Xn*Y`?P|6ClG@VQ@@XZ;C6ioCy|R4vt*&Je9vt(iGuEo7>aDTG z@m*L`Z@*pD@UHR2PX%!fRM$8d6HX&rgV^+P5MdZ(tnk$V-W;q)v3f7U^B7fYK1H_< z744SC7stmJKX2PBwtYVwj{iIqKm31C`E87q=W;jEnzk>)aNf(KpMHBG&~bg+c0BZ1&pFh6poWIfo4&oq)LLubw#Ub%8k5U{cHJC8L4_YB zbBC?x76=T%qDK}02F%Xz4cTS?8i+j%ijPb%3JM+gu>0|2bp4>$8?0N--t;T zAx*r_bF!c^S{n4xwG19hUQtWvY{(v5G#)2<_tv}QPV^$HnG58FI(EoxWtQD$&}LaK>sZO z|Jk!-w|qH{3=*~)F_GS*BP8MXBfCg@)}#H+SW?EM^hO{XgzPKzR_`s4ud)97u|o(l zC-O2OntXj^=yC|Oukg1#f&$qVu^RggG^FRS;Qv>fuwNSLCgXZFiC3}HbhlDR;{P0kPzA-y&y zsXV8P5+XlHeht=bBh*(W_0!KsN<@C1B5OEkd-s4BbFcpzMZ(9_eY;6BphKjzMZHo6 z_W?bE^Lk)liL>5$xau0RY`8f}ZyL2)?X3S{Xv&?c3|czbZ}89HbOFBe-{|G@)#}3F z-%U(!Dp%bSxwX0h35rOe@)|F`3ZtGbbbpy0k7Z2LfNP1#a@NStT3u%0@jh036fNf^S$WMQ}cZgIG?|=L?v9V;%8R0_5)oUb` z^SBri=T+`m@`G24SU|L(Q+UZJM)Kq>9$CJv%)oohMW!LfqBjP7re4e+|9wuLPyy;N5f_{2}*Cq>V5Rnvs2xQ{a2h3cY&~nhbaaO(GKl zjNmK&VYET1Sqgf$q7XKM=T+^sT8#5)a&^4t4ywVwuB(wCT%(r-^~STk8!6hdyOLJdi&@etyfIJzL1HpCDs{&v#2edfB0Q>*Mh4$@|dA5F&wi}*Y2M+!)oFaY630wm~W(E)fXWN)I9^E5}kQm1?w z;j5N7@>;Jtpo~kshDhVefvbKkv{3U1VhV(E+VC7TinKV7IFrbnnnec1jmKY~j>V?a zqd|Q~)6=n7`t`?eyfU*X>=r1ASTgBbzpQZ9{4f?Ez{jH7-5`WGZog{t~TU z9?apP)Ts6JZ5JOB8}g0JZjx_gecLhV8R`*DmW9ELBcIvWsvp9Hy$Yr;;V5Pv8^}3= zB}EQb_a!h1o6U-(5*dy9PepQQjoR!XMq)?gIFTnKt@RQAmp-p=K>vQ8`UJEOH_(E8(ivgsL`7rLh#B=7yuy{y*Ho(1&V zTDs)^x@!c-sPpK{KTv8=aKfbX+uW&p?>)u5qk?+p34h3wUQS0M@s@{!Y}l0+IB!yf zlnTVZ?%7>Tj(xajCnoBhy1}7Ui?e?BiLcuec5dJ9BC?Ag9(S-ou1$!N{UK8P^(TJU zf|(n{6h|m7DP%|9A2~_J@hy?NY1T?$I;c_1>*3gLEL#@=MOA6|B2WhxI}VUL(R;=8 z1V$>hO|Exz`zB={fX42Ff8hJ(k%jd&OX=au#OW(IGq zdvzF(0qHUPJ-Lw7h8xGv>y5Eq+vM8_Htn?4-z4H1R%?Y*H{b z9~`dl;5XH~`(?eOYkEhIg&tg8Sa{hcHwX9}YktnDY@`+06S)jV>Gods`cP7Pu{i?q zs?BhsdvNIQ-OLl7d4z^t&Y-zaXvPdepM{L}Rhrzs`?sS*cV6}A%GK!q9GfQRb~Zjt zcAu18TYBYHu)PPNQ(!l9jEwwBr1|OWGeLg)UzO5tB%PK|UpWis$(afnxJ%>~t@}@8 zp?wHGrg~O24dtPY>pVrW=;`AFR%X7!T!w(Hqb9GIzfZK5xB=xn<5?ds7M(&|;w2{@ zcSI4kiy1(?x2(lh;u+sk^~_emf2ihz@^n$@YAb+#AbB zgPS8gozH)gwnb@%y`zzr1bK34+EA9fwn+rBcnG+*Tm%lQJotjRUZbftBxrPBI^%tt z3i>zfL{F-`$K$B(WCUKeM?UDy%u_Xvqsj5hJ!h4^tH+8()lJ)^+RzOG>i34NY86c( z;yz{T42XZSrlWZ=!6_$o&*nJSRyfhpE@zt28>c7v5?9Q;q5sxp(~vjsrY{keFUUHl z#&kvAFit&)&byf2)1yKs#E^l*>n3W?h1O+2)Vu$TRfI2V`7aWOgr(;WG_j`P=7Dwk zsp-gKSho|FeEq%+sotPO>{SFPqhA-Bw7Mt37F~TP`o2&J)wf|%NC-*4l6LDdzn;yo zPBEH~ty3yS^RHr6Kkz@Rm)f+>7u8FVp|)8qol9t@elMut2K`?iY?GVzFU;EB3*M}P zI+H7Og-jjJO&PJ$)%0b4ebeeSWJRK*Op*1NI+USr{SBddh4CBQ$j-!4OD6{c=z8gg@iIMz<$@fbtFm*{x+_ zomi&US)o~k&I14nNF8*!lV#um!I_usdr2fA-z3VNM>dq#YBfI(R-5KgPLeS(B|DP9B&le}*=7TS&wj9kx$#khXmZKHsKE&-sm^V+w zN2g)|94|h+a=38UjBX>bh2GIfzklUA_ex#!H0|YDUN6Pd?}Zy$BC_?FyU?D-VYnl9 zr3QE0r0b*cG>bJ{<9L5OQbd0j646lBxCC(;Wx|@*rJhA~Q%&Ug9W!@Gih4&>MOUbb zbjQq&y=wH2-g)DV@4OKiqKM~*$P68t$D&wPkS@*4NIFu`c6H)6WXHB0`8OuiyY1B* z;R{XCK=KU6Gcx&RX`aX&$s`e;<|Bi4UW#13o})-?!ZdtrBXi(x62l8LqP{VPw>Raa zkmtfcdE9^6=`wjVgxzw5^VE0YO}+EL;tg;@<*3B5c--i>bGfqv1?5!VPwMM5uk83H zc(!idZL+`-ypCZ;R9Nh?R1VI_g~$k!k80Xc!sv8rS1sf9+;LA{?;ZIqF1DX`0hB!abM{By5TcM7Adi|q+qUZ{CM4G7G-rbCegi@X- zgi?$(cQX`;b1(f>EXboQW9{Ng;^`dLb(~AbU$W?j(S+hSEbtZ^$X)@tIYU6H1BwOa z{n%_!z&I+7Loi(~U0SHF_7n)E^eX5Gda;SQQo3DT$o1j2a**j|UA!@1>Vx$RaFX`{ zE?Wycv=d(0BWz*aL>0nRL5z2^RhQiLAszuJ8WDB^GcTbx#q$0ASYvEKsBzX0FpfgV z@y#@(p9*xSAEmgB#u`5X;mFADg&O1WYpAJ+r)JbbC-m^-{OOhu1p9+ zM)wESBdSJIB#4h#XE-dY8oI+Yx2$Y2t0rnptUPKa#WU6;B2_?W>LV5!5;d|0?;_XX zE|bPI1++Cv5dxYt)2|;GM_okcXbRK{i;Ig@JVc$Rdd`78Fp%4>SCp%jv{G1-B*I;C zOOxH{JEzH`rp&M0+5NLyG@EnL_t-txzj<mRLc|H^QP9P3ID7aFH;o4G|Rg)zb$LL!z*iPZ8$rtY5Fm6wV`X& z8uuXjO;VrPP3ptKUSN5u^c;$4q&Ws0X9y+@Rchx^k(aB2EF8G$*Cj#TDF~AAmoJ@| zm>x=clilx{_Wf4BZnvD2qC$-0M(3}?Q6bOqC*~47KU*11yc@HA`g8PVv`X=oAV(XE z`DN>6rMM29i>4N#fR4BnXW@rv>KOH&Ja&wFMIKuT(C8noF4RUZXQkb*vY1o<9{(FF zR9k=|SXro!HpRz&+Swwr zdiwflvTg1B#KsKVTPRG&*YLVx!q0+bhTr{m1in?z(aRy42j?pj!Qh z`2khGBKb0AupUEn^YljPNuui|_-@2|p@9qqqexcMxdAcid%hC^iv;{5$rZ(^eYV{i z@F4ka&qd(f^!&p#ad>V3w{@7tn}OD0OCMF8uGmGk?ZH2IV!creqL{%8C+O@-y;9`v z(a7Sku)F{X;%P)O`rU-tJ<;hLp}qQa=SOs3d*|}59~;gch6^!P@F91S`<-`mx=&Jg zlRxcrp7jqPM)?;MTi_f-hXxwvBBZ0FLCG{Yxy({XNeqppndK}5LVFg)AQY}X*IMGZ zJFrR^N^`7GRd*LByrg*aO{(GA;&nJ_Zj}r^DjTiL*0O7iA3hX!;{xJ2O-nS@z1tD6 z_W~A?6B`n;$;`s`H!E55r)FHP2)vXwl#(MB>%%wgZ<19c@5oV48xkw2b#fKNHEtR3 zs~C_{C9iMSVn&^fDw4As1XQ>93z{sxNVZdNtwZ@H+L3+hq|>oqg~ajWWYhc*DH~LV z$dMpNZ!A)cOcH)#KC(b0?)D&-2~+qt>Tx$posDUJ19yo7hC{^l3g0T?9jJ&sGBR3Z z!$VHEC;era5V6|IH(H9NJohEjZ6U>!(YN$y_jBr7)h}x|yZ5Ud=YbDtk9+cSv~tOJr3f#&vQG`ZvSd|;PyXQKaK(~jyRu_XX2SC(GJAGZx<7YQ zseEdmEbmViQb`n%t2IRCnu+r|g*;o{&TP`^DKTP^LL$L(l4MQqG3NlN{6RhtXneJR`hIdBDn@7*NhIMn2kC`$)cMi*Dj8EQd z8ScAwDph4?^2A+9t)95S6;O;Tn>W7GN(g)Q2np+*H=1QW{>EtZjlXi4EqFI}zpOX! zN)E>TfIeXx#k^e?&mD%b2xJiPB8az@V06%k5|(Vv4uN`6T?VqlD7R16m~sT=Xu7H} zh>ffNVB1=O{?L)Si^0}6q9Q14UpF-3XiFj7*=161nxQzW8K|2|pws6ccxbuCzc zp)*9-)Mt=&L{a{Q87z798II{P;`%Gc7C?Xh2_cV9lazV|~+7U?dtv z#&G`^+PgBOnl?r1B257-hS0HXszYm+Y;R66r0>C4V2`2Pa%b@T`=X(AB9Tx&h9S^* z4di2>xn{F`Jcdj2EfFZrU}A;OkQHJ|vYV56)cs8tIdi)X-Z+px;a8U0iNyT1&4Xo0 zbE@TMrf%Axx1M`pdg}ym+*uld1-@s`r?~#;iK8MC6=CfDF{~l+1$b1hEKNz8$T<#g zs8bZf=HCe2`(yMChF%H|bg;HE8y{Gu;0!E$)QC+{y`b_C+SsJB7W%AJ%1W{!bB>C2 zg)0b&3>mh(9d|fVDrL#qK3B*UuP02RVhpROHddHJou%38?vq;znjxw9Ek-nIyhSw( zt+3_f?&{q3LS0tew!n*~Oh|Z9lk0x$;{E6=G){OJE!(fWQ8xCIh5@_(w7zgF!9s?eFTK@7R>^DCDSE^)J7l@^wmcprFuP3 zsK@JM<*hdyLM8L$6-xuB9YQ1tueXx(0g~7bwJ&lz zJEfBhzL(2&`d@-wuttk?jUJ`eJ?Pn%3v6t;m!lmsugX52%P1@4`=EAH(M!{mRx;q9n-psn(VHJ!qAzq5OsaB+q#x zeRnN}K-25(@Ca&9UW9J?I2&+lpbvJ7@j7~~qMHvf?I;~gXCE?k<;Am_itmz$SSH!;?(#nqR%%Ih^yLB%xf^@_VjRcYPV(+XW2U^Ms-q>NLGf%N0Z6X z@e$LrU5n!cmmVNdLOXDAWM*Pwe{HKO%j(wJ{)vg1ks=l}u;XhbLlTi09d%)ExwaQk zF8qk}>7P=50g!!~G+yNhS(B-kTNcHGJPJ4gv5&AYQSd+rxFpoCi4qWaQIP;Qi>9h4 zle~bTRooo8BH^BZPg{u-l_ty8Li*%9$TwsZ{cX0@$_`&Sdf%uPuNKta*_GW7;F1Ue z>Ld^0Vblk}#IK@29)Nbb;PMiWN7G{(I5TQ7oneIP(m{=Q!X?`hFP{ zGH;#;xcP!f@j2K~1cXKEHAbhM7t0DnZd?)@OF_aA?n;c^#AJ4;B1@cvRowlFC`+OM zjg>1y*~x^wq61)D#yv?hlaXCAg@sI<7bsUccRn$2zGntj+qiXL4 z!?XN5BtaK!|K%!yzf5E zis}!bMcI@s?Y_ODDoK0L12os~KMC?ru`CoNWNCk++entNF8_^YAzXlny`Rd$SO`EWiLBkPLYM3OO-h-qK_#3gy$@-BJYRnl4fQ3tq6TG>M`?u|8pvjcH=tUDL700-Vacon z$35_SmKed$&@hM2vosO3dMptE-Cl_J4r~#bg6_%w4zG8x@cR`3#V@g2Iz6-AA+ zIQ5vsi#ruOCt&HQiZIfJ2?=i}*EEsOX+tIS14AHF-Q)x#HewK#?&mV^86$Br%}tII zMO_|N)M!qWbPLOtErT{ zDM%7oFnC074RY1_veu}t?OP0K4hGf0bS5Ikvyj!KFBIc#sM1pmLvnF4ntV+#8CvOh z4d>l&8^iK#-TSBx_|-?tzx9EmSACqGfPQ6}P!V4nOc)MAYwnFEO!a|44crM-!+k6W zuytM*xoH!dufK!|u1QQJmXBj1Ew2 z1Xx4;^J+>x&vvhsq$_y!tl`Qzxuf!b*1tk_KbE9pydXARV_BBlO;O+@ z;at|0UiS3Ukq(vE>B3X=*QW;KuxS=nxKbYo{Vx6jRocucJ3U82awO4-NV&f!{e~o7qeHqK~Uf?QE@b52u96 z@Zx$do%tuUTqo~?vGe38a$&2kZ>6X@qoaVab475Vu?vL6Dr8xXq{<5Z$C$C*jG`}f zBbgXljb+;1l}~Tev~6%V{TB6mVFwz!@E$T|!R3MsYc1|r=xp~%s`Tsr6^dM-dZ`N+ zE_{yKgiX>mz@!OA7aeUCHt5)x^T0mrtuN4Z{fDA1{*df6EpmbG$jP?f)Q9xgMQ|Jar7f;!?eTj$DM zpgPqa#>|!ls?e|n)WU3%<~Y~y7*I9TE3KNRFzg?ugo!VcvG`TZ8vMQG9xx)bIZD!- zI-Paa(5(@BVX)Rf|Lp6=baEnz3UqLcNz&JJ*P1iMn0b>L(NMCnj#Jwp$vwN(T`$t7 z9cNb%OD4xK2OCUUU4NQwjv`haM$;_TmKdA~8JnWdr^-{g!MWU2IhCEt*?uMM6z3wk zQtx1#uK0Ft>X=+l=ccA|>ALKfb5m|MU70H;J+V`dL@Vj6JC!T1V?~^Dj+GVxcUD(GLyZ`sXQsl7*jS-`JDbqDvBf^2xDk zDnd)66%WXk(xGF`vG>AzdG9eg0(GdOcJ%02y+mc~^);c-i}%4rR&M^AS2L`P3@xC*v|_fbjrh7Wi2*hhuY zbBE{6apdcr^97djHGGmmXJcu!_KlS^d+UXCWu-7&lSx1+0b7qskms&@eg z4i@UPr##5KL3c6Ti&S?(>OZ)wxt$vzzyNa{97AM^3VNgw_X3{<#MY`Uf2r+PAS%KZ zdH>K}qGRC_v#`w~s$(s+F}GALv8)ZM-7WcFRtqs?r(Yx=s9Gr^m9IO53vw*>;)f?D zQcfY6^Qjtf+jXxNiDNh!5yfUK3BBKRuvj1`Zr*cji4^3l_ns&D3dt>G(kBk+v#%{l z-=OM8xD$%bd}-QV!lD)X+3U>k{ea%pc=t>;$^H) zOdc#6dwP=}_i|G5*Z2x0n#S%kk(pX1n5rMciV?TzNgcXU9rukwMA0sYNJMd4B3?7j z&=N{u$Z0iO>yweP02_Gt5(nf6kgHF%#JJIo=3VW;jR&+`rJI?6KSos8b+Ya|SX&+c zLxP!zM=iPPRnmB7>(&`|{%edVzB&w^uC6n-E)5wXmfEA|;|C$puRr2R ztc|ij|D6xaeREN})<{+N`pf>_BYXWQ8?QBT-nH(h`sIm3!1nOE=5f@3aYQ2uov{#Z zS?7^^h8`{}vI6`5xD6g>FKm^?s{lYizrXxD9Owe8j%S=wE>|k$hM99c%eD18U8~#c z4lcl8_ER4GvJF<)=duX#GOB#phP3cg9*MUfZX;+jOwq$*-`wUI7tjCcdCl6;n=Ws7 zu?ynzjmzRbHeCoM%2oba?`^J(zw;)x;&yCMiWDw4kX`Q&JD8lKELCahfIwe-TT8h4ZbJ!x8-G z-WOP?MFCizE%iO@YkZGt8J=f2OuU_tr*=$Xtc5W!s2j$BT!!aAMqDy-|FB?Up8=DRw6Mf>* zlP4cN`HWuGOgld$o!sW0jJ5q+&d z*Eig3)@@|ndDJTuE+i6D)vS9iLi@_jT~^w2k{b+W>GqXJN4QI%^hPKDG68fKY4J%}f6Jmsf4F)rKmdo*4Xq8Nli3 zcX$&JTOlo_Kc?ICxGpfoCgoyAe8 zw~HKvy2^r9!WLkQ0i-K)r!j+}_8I622i^ug%DXzvJx5egiDdCslnAntn20W5jjFeb zilZ`O09*9=MG~eMuEHDFpw-7d@|fFHB}t|lrSO97X#Ihia>S%*l78;Ccaj1hWt!I7E;xNJkM6=NB=La=d1aCIoxXh-!0)E6_ zcX7ArCQUYFXYkSYh^~{UI$)O8$C{sIqzY1&Rm6_^awlI z8(8%tEE?q8`pSbctPSIVfPV^X#ap0{Xm2!jl}T&d@>Qz(+;GWtkg)JkE(3KxG`bjJ!#P^de~xjHf}d?%?AUnT(>m_z z7=|2X4xwkldKc@LU&Cnqs3d%C+^BIQh2mM*VJf1tz5Y>1XMjb$3SbaVc0`Ami zT_L9n-$+C78@sRGu9lq@=aZ4Bhc0;0$je`M=FIEPoZpmaKywTN)uN<`8yN^v&WraR z-|A?_4m17>UyRghkvE-z1O414eH*jknvTZnMMW0J)~wqm!A5#J?R{Q8CV{rf@ZW3F z|KkkAP5Qs=vHzFr3>%zso6JX(n%4}Exo$N=4Dw`!MTBvF?XVmwj1KqFb;o}6P13&~ za4Rqm;-p_;pJ=Q7Ua!B(MFd`E)n}Rdc6Kbxd2D)?0iv8e&-`_trQ14H8`iT}!Bj-*lN_O0BS$FRsQR~iE)|2W&w%N=ssL8syG&Qxv z%HXY9CSjWTGT8w>wO(4A_kKD!P z{DSAUxi28X-C=w;cuWBtkAtMZn{O@hIg0`fNYkIETZ@U}6UQ;R>hXMiyNuA>q_%qk z_?jf7ZzFhe>$I2_MOhS4e2S2%I8sG1XVNE^r?v91l5LR|D=k$tTmzGBI+A2fktcR* zlXFPf-aB|&KDB?l8&?!vpParaArV=Tq-5%fX+fnNhi{mCD@O&Z9fEgecM5 zmnw=UNvfEZotUQEx?{#o(LzYpVv-co=xem;8#EEbu|bWBB!rM5(#;&Yxs@hqk&2(5 za^MmTcJPUaL6ueHAXE@#RrIR!^Hom-uz0aRj~eq~zm(=imnOsk{_J-38NQF0QdA5}9}EJCtY3U0uUaeL$E7~e{SVX^KM4nwRK zFz!^UL}BzB06Dl6DBPi13Vp6E#?KC8?QUk&3zu@J*9S1YZvSp+eR_l_$S@h|H-iXSYE;KJBQ^SrXyJopT{dQhTl2dqXqgy_mE(Ig^-nb zJt`ejlzV0Q>TelQX-O29q^R+&k|Qg~M^t^GGjR)@i7C1y$tWd89W44tk)xPyp-eYmxa`^sB^JZ^G24i77uxZkh~zoqhNF$ z5cSGN_ZC<_;d|pYP_UOW*CMl=dTo#pc*j8CBd20`EgnGVI!3FV1xL@fRAVJOr|32| zh^!KM(t*5#Nn~lD$|`f&6+`WKdU9@uK}VouwRqJG-7b~SC9$k--%gu)GM7)O5}r9y zswQd2a7|jZES&9U7276h^s3y0yK56WbvzX>B3ma0mN1nqa#{=&kC>LrXeKc27UNS` z-;+r0@6%CJ*Xwij1O8Hcf@sl5GoNcl42`r}L^C4IT)r8JYGfk5YH8XW1J%i1>F$#fet<8xjR?N0-D?G|~5U?!MOlr(!B!>h|b= zU?K(Cjb|i=Y^Ar!MgjI>l4i$8*l&Yi%pv<3v7ukmVH(BDlF5Aqr*`F^=GE03t@y_x3FfpB$$~LOB#vB(d0}( zfH|6ZYo&=K&}bIAg9|+#7=IyEE%=QmVC@qPf7P{I94qF0%|Y2xOmV2P$lMZ7B#Q;h z?RUGq0%N=ERmW^efNPSa_q9Op>!5H#I79WwhlG!X7?lzhqi)Ewx~pv#in{%KX6-hY}i zP^a8(f{K_<8nXGBH>)qHe$=LdWC3*t@V)(MCcn2c-O}~ebZ2jV2g{1%IHL!>38G4R z)jPutt;6}oe1H`!%5g7mR~M^DEvS)9J!23Omm|2UOTmO!o6wW*#+p7sJ9JYcRIjrl zSTv)mtVR@T_?*H2{L8|x3IDesOhEc!6(p@$3Gx~UWY+uqX+rvgE%A|VVTsv;Ab1x9 zV{kwNJ@_twVurk{Hj7%HWtaxlFadzRBf3d#7LBq}X!kzif(2biWLf;-2??W*#S9m{ zy-O0qAi+_v;EP?A#9Tk`nSrBIVOGi%X$yoAF{meP#d0jgPSyjca0^;7BS|v$B8KVZ zeK#fn@RaUS^;q>?Aj}orz)6{^&G^}Qi3C&0XtG>csu*s1TiP{fsZ4980;*T5X3F6N z?@&s_L?F&}eN~OxZ(#w0gMVSOJLxs5B;sjy+%ha2808KfN;6w3E<$c)O9paC%SM2$ zNHnP^UWBNcqN@bRTvSDgkW|)Iq^M(C9^KN3m|k%)S`sTsh)-~ximFx|7s|lk7{oY^Q(+4+CZUfpDOGD;utZwKZ+lB^32YQW$oPQH zpW5^4;Oo~_A8c0NHNC$cygJP0d-2{E8y|e}yTT4)%- z^5d4#Ic8Z}h3VP#9=o?`5v>k4MZI`taJ~=q{Sl54n{k18&? zW{|on6}-ksVS@GZiR|$a4glA!=Y^xf zwa@E;jff>i5zt&{wu6P{0%O!D1FK{$^kpwmg}G7U-SjpzPpcNo)#r7}zTHTQ2*n^p z3;8~1xN;03F=-%q``o^LbDpaZ+TCEbF_nOGI$I3+e#y!M^c!8yu9_u_nl}AskONf$eeK-y!36ZVR;-Nm}jAI0%iyj zhB0Ut7#UeeEGHIbsrF#?LH|lfhQ!Hjq;v4v#~%C0V>6CU1{WVaSzE5{IQd~amW-(m z?dMfuQgxJM6rydhW2S3fTC325WC%Tu?#$4`Ja+BD4$)5TsO_zue00B(h{RId!DJ}J zkR@4FbjhOCX56~8dW8KjdJYYq0r~=-#L^hFV=zP(%b_2Cm-p|Q-b+Q0y@zxNaKPq| zyOm#<&QBbZq+=8L7KAf^{>ZME@&AEt=Ll(`0=E0M4Qb@y-vf&w)#zG70Ez&&N7{u% zR}330DAIpf_kAx_NX}ZZXztW1z{HDKUE^uLYdP;hx^4@sdt>g*WYkRt#e@Ey^Q#vi zjZ3s0p3gOS_WU!cosm;~^*W9i@Jy%qvkXJ`*CDcoJfpz~1z)lmZQi;@l1DE6j>PR$ za-U@oSF^JW2WxCe0x{w9x8Q=4kDZ=@h2yTi?HVy=d||WA!=-Q8dPBDdZ}j4s53pkN zF0|LMM%OK}9OtccC|?N8jhw0qs7M>bI2GU)eLj#9gicabeR}q;r=GfNcE*%Mi-@OQ z@rqL-`6VLBZ3_`ul=kfdK?zxHSt3VDk|~v98a8C-sjoccD3*y{@$0WZKSHLwbcAj- zF@dmhWJxxWu^;38@QhXX2GG~&wPuBaP^CTc3?0Q5;9ID$5rH`*hu5{8+mD-ou~`mC z4SujrawiC>LDju)b<8KLO z&(-5=*SQmCVzDz5?scOQDz;CbK8@^Zr&v5+e4NhKb*evRI&uv%JJ=;f>4(`a!Uq}! z(1RM)si3M#fa{@d*A*qHmP8mOYmy{xT>PP;Ob?#@TS#aATjWeD%4hG;BZDV;*_t9(6E8xKMf5wI z@8t8MQWwR#B92OeG13o3D(^+9>;*iW2k4l1jc^)xS1Pq;o75(_{KG~Jw;j+?LWvfm z2zx`5>Gm+Yf)5pQ%%aV1v^>vlb^HJ%C`V9@K8j{QP&YPlJmwDG$6~VnCg#4vjSc<= z^#`Aqq-<6)wH;Y(nmD_|#Fti}2YD=AY+}ZZEf8_^d?r zBS1p{hC=jcZY4!~o3Uu65Hy(A&|WCDl2d!DJ%HluQH^*Vw*Of^<;p(CM(DynrV9^3 z9jz8XNFhOlfYh&X&nK9`jFl6?(x+u~igbt|Fwi*-2N&rfsOc zuB~a0q_IRk`AH(-^dp+q9;~fh6hOnDqbiCVAI~b~)3~ha%6vB_$K{2tgB|(WYh^m? zF3^ft_d=Kc@&4nCIDX%<~~GQI(qwpkEzB#o}7g|76ZKb*0m( zube%*QtzA?hbsCubE@6jS?QczJ=E2x`rvk<>pbiLOgcK=XGA~ApgyoSz z2y>fd-|~>#fDTTVnnH&cjGk20_r>0R^K2!} z!*AN`Sk#1nD2X6Z+2|_V7HY6Dd zn2x)8iO~Ad<+%b=XbPW~$Q4)6?^#lBxkaTja^S#d>3?%c^$~Um)M2{vw=WZ0bJbMA zwcvBN+(PQrs+7w~s;x@X(`*(lO-)Ja_dtFPk28i_`iFEREMJz z22FmirCCW!pPba`Oly5_@IM~<&X{I-=#Ztkn$_vB*`dL2uC5BB_>)!I(%Re`jldkX zPL)GOeI0uTRW3%*s$J4F3^!ut#|vf1rY2O-JNEV`j{rYdMg~$Y_mHZl`{2wr0z{?h}wh@kDoJ+*%_sD zJksqkL_01n0)$za{xG6a&L-V8gN+1K%d?Hct#0dZquyvV>gcHAI^#XG6UVw5pt}MU zb^CqDf9v;WgD*Vu%ol>ek0NOvRm!L7NP%G}^7pyS zB`~Q1c?6gqtF6rgXX~AbEb7$LGgd5>s(uv{xpgvHp*3!l=;Hmy zqA@Hg<;i<*5@++pxlTPluTurA-bn|sYARZz8p9rC!U0<&A;dCQ&PvFV;s+)V+z|R& zIOb!H^Q&ykZ(FP`Zn$Jz@dM0}3qzOpxPKqP-LSlHz7M3N%p!4jcA`@s(EC`dpyk=p zlI_G&RW!Id;zhJ0nk8jVsOpKVWND`-m6$SlnpWkamSz`kT+Ymwlau;()wHs;$MpF; zdF z{JNhPWl4PaE~@`Nlf3P=+y2LAeO2zz`d^epH2ZB4`^&N-qU+|7EZ!n%%DXps{e)a=h^%I9oqkXiSbXCLlnHB9etRO3Bm&0 zJ4>alw$KM<`49d;mOof1d_q2O@%Yb4it-0l_eF}X zU$|FMq=zo(y7D5o%6)nT+Aa#{m*{uKa0V*DCK5_$1*Uy>h09!E#?LdpOQr$fu){%9 zPqChRm1k#7us#N@(oVQfHPRL~GznImWqrkkrN3Hls9&QW5$j#f7E;xT*{2LuO)IKm zYc}gy7@pGSm|W!udjUzY4c|JvU^)OXl|*69lQ$5E=7rZiYzs{HV=*6$3T+N<%@5iT zyxWeMn)YyXD)wmPoAjhNpvMbkQ99TdSgLMcam{D0-_qP6%R6>Svhw$iei%y;DXQje zEz@-jTe1yTS)-E9!?tLinx2}Bll{xij`CbrS8d6OCZ*g>OZO(}Ye+80x^=6jt0bf9 zT2L{Q_}9%SLT(s~`Z*TAGt2PO7-KBtk%7h)F#j9C>eg6*Zj(i&v0J1M9(}nf<`1TF zD3_%=;Q7ZGiG#V(mz`wQWUyu z(_b zs17cy+j9HsMU*jBtZJkw+jt@&DdcOmZCP|t#?!Mz|0Qh8O`_3F%S-%U9KzSkm@I z!&FssR02}D3B^_>=-hE$PWo6UsH5A1Pr)(JGqm&_M`Z+n5N*lK-+|+pE)of?7%M)i zs$RRMD7CgnOZikP{|TbwJ{fy91|5TW8xSCqGZbmOfLXr0Vhi}p;K8){gbl?bU<2A0 z4WC%JV~s_?@?$8ML>MI+wXP*rIow2v<Qz6xeAt3aGzz^+R!z zH1%o2n51uX(lDlVGfCq25T@C@o$EJi;{C@5&(bbBrWp;>oK=)r(`*=8OjQk}uDt9U z8@N$K#_P@Pg*9$33>8$&BY#=EJYgys?Oiy>mhiU(Q$_6UWl6 z33I}|!lS}#X>a--;X}g5h0h9qEPRbVwdMj7lFQ+oS-Z#PfyWn$;rimgH41}um}5~P z@_MmSVnaPE+i1N$STEXWVST~hw76kw+6oID`h)pF`s)Gm!~ja7^FksxG?I$jCdP^9 zKE~%rB?g9q{S2?D>uiRNy?puS_-x^lwWy#zO56G-KiXn04dCF~gXQvwch{oJ1;@Z? zU9Z`OGb$Ab?VQ8P#^vi(lWelnCMCL|uz@2Lke@DRr=Sup_+U9|N_jV$ql0dnB#unXPj=gQ0Vpx1;?SkvAZn%Z>OZ){j0ienO`i>O}d3Owuw{V z_KwemeP3EQ1ira|ah{Y*wOO$Z@$)=y9kil=8x@BpH!udxb7KKFZ-EPM2p>XkqZ;b} z$IFXJDQd{FYAR9DAYBI7IkPF$;7vV3gGotGFTvu3$H@d}eYU#x)y9(ord*t!%VYKs@MS;RL;Qk5PT$ z>YV5`yfN^;p--2M(+q30)y5knD39ISuL5>3OVNxfxdUw}ehlvBsi6B3)iiG-s%h-Y zPKuIbxg4rtVi6Tvhq3G$bmSj_I04Qw_n#D4Q~RQ1o0r1W~(fPxXdE$ChqKvz<)Y}XT}!pWMW(5APY2w$w8E$!d<`L@AlAI z?^8spuhW0k$IGmFZmf8;JLr%675^IEAM|}k$8sS_FuI-EnB5VxFWTpK2{6FJk9WIB z+Z!I^8ZA@lO6&oFLvUj|0|WWW;h*oq{6aXmy4F3phC*`nvn!oeb<8UHL z<*G;QJHYo+sCO1#%1n^wR@jUq@m8`^x$3OAa`v=JYgu1$DrRrbw8yYL!IqL`-hts@ z1QBUeKmj!1)}li7k!tDffA#jKzVZ}WSv_l9`SmM}!Kb#qZ|k;SK>e$C-Ln0}iS4)S zip>=*Yii1}iq{80a+oWz%49kZ^3q3u{DIRq$-~qAWu;%~|onF56V{B%vs#DP^wlB6=lanRPwoNJgzPbH!9V zg?el>``1hads+H;`t+BcJUXG}B6s+rl(0@MShM~qMbdMsF#uhV+H3H+MvFl)L@lEoE;?^$vtC zL7G>5@OYvsE43^-oANvLivsOgW|uqlkkbtP9?QWE?cK@{#p-hKsu5(>dQ2iFBND$$ zxNgxWu`Jn=rTq49D;6!t_^offtmf^7>d8k>Rts1()K{sx_ztE$aCeGARr(Cws0pn6Q@`PFL5wTpW*4~+>a+zpi2V*f22QvtIvu0Vg)|lI=u>R$c z*uJ_g9%5x>=UhXxElXR}qeu7aq@`K5r7i57&_xo-Ok^TN)F*Z>u-X>U_aBYw4<vr}LW_&rS zsW%_A=qC0tJ0WW;Z0jTOMeGETNZ{bb_z|{tMUxZuM-F0BR1m`QQAHtSNlRhOFrEfs zEe;ia=U5!x zMof(e)j=N?9$UxM7+xUygNsKQEX$pAU}z@O+b51wnOPwU#(5IMiXE}E8O@5=3XYLH#&iv# zpWbj2JCcdNUW?gs=Z>5lQG89c2KOYNFWoE1`w|(9un~*)R zL{&J*4);pcaCoSV!j-~EjV2wGkazvnk#0SGeS3EF9%16rR6ZC2F1NFFM5=3#@+GeHIg3H8|+gV^J3TJ)S zg8Tw4YVOQtcSb#)6Z0(l8Y|&931iQH7IpLi`rP&iHvo=5N0z9D9KI|Lox_W7ptu0Q zObCuF4b9NI#2gErqRJ=FCx`BvyXn1FTE zjEkZh35aYK6jeqFJxd*H+qN{8_E}^uKYh@abhV_*b_U+ULq>LOZenK7OoE@6bHOAyYQ|JrF_EB4$@2R<^=YhmId2F3X?VKcsbt0F z*+R=sREl#VLiOGlVpJ6NiCR(+NLGv=fF0{SD;-n!=s(Ts)bk6vq0cTCGugSKMn+g| z%Pc0dBkUKh7H$&mxzw`?$*Z8)^E+YBpb91rIt&gOVHlphNPI5RF$cv9TtH{CmAT?Y zp*UAbck1(5CzhT0rXowz`y~a7lACp%Y3bxP%Th!omG>(PAG6g7`T@zdT9K?9Uf9An zl$mUCZmyV}p~G9fQ&%f#q{=OX+;WmkyW3Voq>GVOE;XC8e@C^usz@hv6#7ZUvF`>@ zC$|F+DANSSL031te+4*@&@g|j9WHU|gY{*$mOh(R2E@5`*_$7HN;E}WqA$MmK~}PS zD?TjKTH8Yqzi{ab|31dvLe$G3)b;Huck6G9Lu}|n@rX+RY&Cw^_mG0fJ^zjW#=q(!-Pi$D){ydNFIJWRv zRiu*ZSuFjO<$v1bnSy-872!p~UBV+Eqdspd$|1!E5H5e7JYRT1qcmRv zuP2oYFbRV#u<~zdUxQ)$n#l0><(B-xt0jWbcGVD*R}gYVl1lrB%d#Vv57R15tQ0a= zrZTsrV_r2Cb5dyEzekgc=2{|-#Y82(;cTM|NO^&r%BRD7jor7cZT>6acJnO-dOO#=PWIz*|Mbo?vyMYy{D`J|HrL}Zf};U#78dy z$V(bVcq=E+4=gOdbE&VoS5`~ zV@$c=>It{TP=%Q4Cf0z(m7-^?!QVNF2~YJTH>xN1(^FsTBzDC#qUov{-AR`plEoqt zo&5e`<Mq=W4@%RJ91XW1){hTD5 zGLmn&S(J#zvAJ7A=B9$Is;aCJSw$bd`3Aa`ANRVJDo$|zlyC)^TtQW@ns;SS(VZHDd39a)vUV3<}5kuHsD%L^C8 zFxg?~XKA;ZJmh+E0*l&~>zD|3 zevO6pSTTfCwkPMQs9)#;L>iBvJ`dgt1bo-FcYLSibS%iO>P#baJ1edBQdM^gm+1Bt z1|eHq%*+Lm_k7cG*VaF#XGeKzYb>VlDu!UhP0PC(rC^KEOVX-#7}Ez9<{?=KxaY^D z(@ntO(IO%8X*xm>6l|w`gCpwuXgT(Z{PbKgr&^YkbTCf&`<$fYG>UW6dA*tfpm+@f zP<*O-*2GU^4c|<^%tv(%@41hK``NzlC%uyIJSxr=^RuE8O;tzO@zqpxXm`6n-}NsG zIr;?yHr3KF*^-lB)~Xv^G{KVpW7lrnxwK&|GEcnq1baF6ow(y^R(Q`nr(VMf%kx`L zvcgSAbFIRVDwEBp(fje?Hy&r5+mqM6-mspyot2+>=-00|AG(&6-_$%R@K_Z?Ck-8y=0q4|Y{c?0*dW6);C_ng zAcQ(*oCTYC@aTx;hc0lj@Z5zn%NLf<49-cSoVJjPth6jjaRp&Hk)WNL@`0av#V3fC zm<;lhocC#sO-1I)B1q_Vm(QG;q3WKTl%%ALh!{`HvS?YNET`i?Wj%d)-Jlj1<@v(& z+0p1j&YulqJ;r<&JRkLnb2^^UQ{lw5-lUSls`|J}QmT4pk_EBBwO*wC z=&OYp;dH2ruuh;{4cUopM20MfZ5FZ+PJt4)ed)&d-)CEK0jmm8rY9!vnWlfyNss6% zE+&kWo;{t_>GZmck=B#N4V#r`{tvcFbdiPuVqEr9^q*mgv=he~l4F{v1t?JYRCV9H zVLM;`KiiDwk3L7o=-0Au-4`lUauJ4U9unvs+$RjYLv3zN9y-I8n5~O=jc(zG+V|%c@ zSv=>(!NuPcm+3v|f+rM&7Yp}6rV?Z`P@S4orCC%9c_~7%n6`~-8+1bmwzWCiAC;jQ zo(P>XIwtyJz^~6qUl~@79|E*-IIJZmcaK6wP$8L#Yqe`@T0Hafl^Mw}O&hoHpDp5u zX&BPXMC|URxMa$9WV*MInvTQ?*}0UA$CFFDF!mzTsfFHj#FkCbTT0~hNm?KW7K-fx zp(^8~p8s=hR9w-WWHg#|^uedoD|3>vcPg2j+N(%&E9uyOFYLrbakNzW^erh(Mm91F zkz_JbFlkXyQ@5N>r_`uI@Xmsbv+3RQ3MTPb^I)-4iqV@_8r^gjzio`)?h`DRyC5vG z*mGtCBzQxN-9m^R$hreyP~}4PEE+PBZm28q%8zW@XK6bo_us{`hUxiKTZ={;k9`!g zSC8LxGuCu+;$?hMIk6RhQ2xfaZRg|;%|5m72M`nV1L(Q+m@Q#v!LCuna$wq30#L@p404C_x5l8~k2MT=pyZ+n!>#W5%<>mXj6;FAy0DZ1-1 z&%jVN=w{-LVc-*_>mX|*#itZNIMs8n7e3}88s+BE`9 zoA7IMG-kR2R8{m(smZ0m2UInt7YH`d%_b&VOjFY;ofZi(GL@OxWA8N`&#~hl&hN~B zD8D2BVfs66Yg=@4f=D}&h|z6ZA1QuWc9zT({!b)jIC4~uw2c&Tg82?XyCkx6@LRE3 zEJ=UqSj~OEYR_8QyKE;8@h$?#5dCau+npLA>CwTPgE2y+hs(mZ=NMOw&k=OtLq}7y zr65+jW2<2(%KQ^*OqS(-Q??Y-Y^P7WF1Ig{KV4Kyay9FqvVY4g)nK=pwC&6D%QDt9 z9gzh^F^o>Zbs|o-Dwova>3m`z;Ab;iBeXk^Kn@Ex2shE*>~Y~|g!c#^28$Pr#o`El z4#3OT18&BHV*_%@XHC`-Vb~W{D{ri*HCyFiBN9t9*mwwU98~`&!p>YoAnZV5GfJbF zc@1j`NMP;ZpUtTFC+i|`VI&VXMxycC*4FBy>caZAUsuno^e-{SlD1yluP8SV17xNf z6lK+njJ48k#LSKke#IE9^m_5>!Wi6icXaYT6UQDM?R;ts`x(a1PqS~xqi?JWI47ZV za}JH1#Q?b+qH2dGV2;9y%VbDTIM%Tew661pwqw}kk90d{bSjWSMT;y}as4c39J7hdm1?LgKJAI%PQaa?E{I zFa?M9VbDjEYY_PA)sz!R8+`p$sqds- zHMpQ^C?T7-rqJi$`P0#s#rm&>d^S)QmqkHFg}&KS%|82Qsy(yMO+2gP=*T>eoT*zZ z{sH9v|46kLO~_D5Zntn0@CT@jR&F)R^d^)!7RtMT=Nk}C0;!Utdtz)G<<0J*GN#8+ zRWg9yvPQ)cmQmSUK);kt?!4`FuS%gJebAPeK=9A=h!G5G!<+qYt@%ISc!#92c;T_ddmm(U1pDVA;@*HkBP zr+V+)MBV?3*zPnTb0?Hy-L1{@{H!pZtT`4R#}Zk`ew#7uglO19evgieyM+BiH1D=8L0(OHn5PqFB{L8Kh?i;)V}?f2Q{Y+w z%oe%}H!7B+JUMq-3UhTs2TW)rD>osJ9^jSRVLohg=^u@lMYLZ96)l^iGO1=4Oi{rO zHpO_H#R(~*S-_U8$s*2W1mdh=;1LvO+KK9w-ihEW7)w+dwtjK)2&f~ zDvo_9nPz6@@Zp(^VKpL}p-Pf!Xpx2}NOY|G9r3kPMh2|VJwx9Ki#7wh;vC{}?hv-e zLZ{eMY+n+H2Du|X_~ZdbR(xC{zo<&siug4X)pr~5xUsvA%$gsuu%!MXk#NrOYn8Zv z3J1mm4;TSH<;N>E-^mT$8jjl$g2KS{Z#4>jS39H6}9f{Y_|quIJ8}n_CHbD1H+d}BsM-$c~hd@u2Kw& z=t9I5J7O#o8GO&lM5T`CM$mf(Z_1;sXw|m|?{Sj0opjLcw%=V7HexN@Dm*Cs>;~jH zo}xGeL~nzAh{cg%hM^vgemssj#7w6P8^d5hU}Bpw^f(3`upKQ;4EGFSBHdjOC{14l zK$-BJvOo#TVo|*i?QZSi6G#%X5@dvVGLh1vSf^sWq7h%0by1OE=)!qJBNdrYQCN|5 ziO3GjOie4uByJ3TFRUP%lzL_BRMJwFm}a@tX0%`$(|*i%;&IwyLm0gi5Bs7FiE6Yv zky9eFM69cEnIws(x{9NMlS(!etP@33u&hZsOsFWJsYN;evpSYEnVyfx$-x(-&K4!A zR}7M}QVHLV8an2-Z=px~o&vKVU1q<#ba^}p1YKA!udb(k^f!ROiID#*TnKH1LNM}8 z@$5ABlI7l}$7x)8I$mbo=EWag{B6dmG0l2U{(%6QJaf~4Ryiv&6|>Din1kJjBUlgB zXkf&i!|KElTd~S^+=?SPQNH_xQBG9tgp4DlcHBE+O3Iv;)&_saHN$t&@|+@>N4$8u z6v1-Bt|m*yiMz`Q8M$`cE?bIyq(YmvrVW0TD|x`B`c2w)J|HBR^c%+CEb%5!f?B&q zgo2KDWs*77J=gEvnI>f> z7hJsf85ZZtbHKX589B6$EDX^}hB3sLnM)u8*yknSM6OkLp(Z>fP|}y09Nv!U;Gn4U zB-(1NR9mW5TRTvQq{^NyJ;(>xQ{mYzbzVjZNu~0ZK_8qZ5z=1J+&~nG;s?X3t&6Jj zcSMzaS6gV)xkjI-foxriJL=+ALL^oZAb}qij>`Qxzp}GQEF=;sZU!EZ0B7DjD(^3rTz^9;s_q*D54sQ8E=JTNTmOPR_NC@4n@l?XknMzLb&uV!Xow3?bh4 zM`0d!iY`dFRFjz4JDjjixCrjWQ^-ckv!W@MU@|j7C#PiBL2D5gy?Zc&F}mj?7{C4t z7=PxKih^R1Q~>x~p}%OAN&^P{lHv>(x*>F!7X_k|h*yRz#-L1xcHbk5HSRTZy^w&i zMMr)PAG{PIa-i?YwfcpH=(Ypfq6_^G$bHNG!AfTh zz3)}q_pkQ%?tEA3rq%w=yf-mQF8_J-MS7jN z%lj=BF;j%E8ibT3#M}uyVGG?}SE2_8UuxLhhiTg@$KzWh)-(s-p##*?47R1?)wP*KA4_tf*CG18KDGb_$HINHz?yGdC!JnFmT*5Y z6Uv=@{5M%{0B36*UY`$ywq@ckv`3fNuJN27c3FOStwT6qJVgHKSVUM$K}%XGITUEfPZOvjNe z{BoTvPf=lTuUq~B8<|o59=6*k7GGgF7q1Qb;7Ka^UAx`~%i-Mh@kS0X2%zyHp?iay zoPH=|$kci%(iq+R-HTN~c)p&^c1sbn&5V0(Ga}C7M52>O;K5*&iv0>RZUQi|zM=!1 zanen6P`AqVWq*Son6W#-%y(zZ{IoAQj^zL9_%M48*`E2NZa)dzJP8DwY0=?W(Vt`O zVu(Y=dm&E4!7?nk>6*#^auq7;qJO!W4z4SD6dPEID0jzD zEKSt_5y$SKLb(Ii*yHvwo1Y{V+=VAnt&N)OiW4j}j_-dPWW_6Gb_(6~hZT@v?~G z$OZS7C$|z2Ka^&7mU2;g8qvK+R#{-e#UFhP!CWTtwyPB#OttuBW4y=~lj4(?U>>&t zyRI4jP#56KFAAw@ztHH@|7fk68uXzOb^EJ5_K%Mn>&Hw`Ij<~C(U#m21SZ!7!=ty^ zaiIsyiY!l@pN8d+*Sum2py;SFSWT_<`Drh7S2XG%k7`;$*dh8#NNou(%{REs`_KU+PSDMPEQ_=wHxl`Rnf03~oJ?pqtI@mL znuwai@wdzFZI+I{N5}3i%oO8q$8A(w)ls@z$iM`l`J}y`5J#jYd#z2T?D4cYbQ`k0+@Jux-1L&DN_w5=z0Fu|Jas^~zndJU#nmugOzbja{`8lVMM$3888Ma7-G0E< zb5l0Ul1BO{4bHWE^<#FtbbOQ~CyRq0zAmO)H=GZ%=#GSW;;*Ih7qjeD{19(wn2x|u zP(bjkw8AekCj~iiNNeZwl=7j;XcmdLXGL))_uP+I>;x4RG~lGw&F8)VUytWjOZkKr zncG?LQdQ;;@6@|%-KnLUgKDz?l$fx%m?hF``KoWvVAcGk9x% z6Mz>miR*GKChPP@sp8I1l<2&%$+jV7sw67Jn+M9&r#3*nM2)bhf)BP_rjPqhRo&N- z<<35J^DTuDmZ!-4!NBIb5g|Ro5~CO>I&Z{PCe8-*`wbD3nYEif2@rBcKhJzBCXp%~B~9y4c`E8^S*#_JIJGnc14b1NqL2*A0K3^vI z0U08r=&H6Fv^k4hYi`lOHZ=6id%@C(JOb!Q8;k2^AW&u}LNzURNigeh&Ww+o7<*WS zE{Y0%1CooXR<1bStud=uosrQSWXS51Oq_winehf%erKiQTfiVlmowNB2NziQ>f~iP za}Hz@t8$jZ7u2ySwUHu=mQ&g?dpv2X-roA|8OJi)^ed5VuybZ*MG-YJi%<|T(?t;O zODQuFAT$f@It!N3DR%I|x7n;cHa!+-u#xQG1&($=F2jqtLFhr2$}mIc`Q}P61}|Rr zN3r-+MHsV4Gb3BG6}nOU&`O8ApjmSnWGYAKd@0j^&s;V|WI|DV#ZoGh)5h}bMPYW? z$+}eO$;8hU%wtM-vO-t-iZT%l`rXI&Z3B(yB1>31$du&E|H{KXrnb3367(s*p3`oK zXQ(!n{iJC%-EC9Dllp}_3g|?yyE^FeOrQ|EgJCbYEPrZ&-VR9R3`o9Ae~Zlu)X^J* zGJ41~-)wg1&qQ~c=HO{MFVN-xX41co*{47HH}XZpd#DKWfZR=Gq4A7kP7&6=)ZeIh z>-^ax{LQmYVXp2|{eI1HWxqaGV9o~w(#YUHs|}U@Ej@Jg)el{b&b`-h7fz~;Z)lpeZnXW z026TS2BG{kvXT6=VYKwT@o-c%?%vhw_V122qKlS!HJVCaSs{{g$k=ySu|zGNc9U-Y z9mITv+p4%vKg{0cqLDLN2Hm+4zq{Yl@s7g2TQRzWbq%edl_Qy8u1TCOAjHX$iVZWeG9fu4W57zT!~L+`_cR z&q|p5xAQQ74j2f+`Trt{rX&)KF5tmudr0W@d%asj6kYasEmPcaqibiFW0`sgRlLq*WPsH)~U2U;nFU6+l?fhi5>1t zqqj8PJblv}-f+{>>b};t!r%{6*VQy*@55@LUUxhDxh?f#i1h+-Zs7Z2?-62h8el>V zBYLRfO>BkOVuihENYJz8AuI>oOa^qsT?*a!uPr}eTdnehhV+THxIZIHF{e;&=F(IZ zwX{lZ*7d8E6kuWm=m^^gq5T;uKUVhEN86aD9}UbH-HhsggR5Ibr(`}^l(!g%Z0Mrvnpf%9IVksO?02tp$B ztPQV=vsedz9|K-g{8zDtd?9KO^2d(ArWope05)u zL`PB-@h6fY{e-Tx#0g8L*g8I{4&do*?RbxmNQx{aB=K7!`6CrskzSxei2oj_+&bPN zvoe%V(xP*9q9tl#UZjF1n(J(;Cpcn35QyNo{-XWIJ6aXAqu7KKjQT4Wo-+ePun{V1 z^WGkwg15tppiI|X(Qg>%`U^>NiN?s+Mvg~&Ph7`1-gUi7^!P~4)V69eADvZ^Oipnn zaxxtLZ+f!QdmX#Obtii1$#>C{)!8VEfjRT5Ge6=5^cgNk^m#TTVC8~AXcQP8aMe?o zJrE*STn16#5&!1~<=k|NmxP_^T2E$sp&Uw?k%BW^+?jPodv>cKrN7w>Ao4Nc=@ny3 zq~A_W=aTW^sA8*={p*s6$@Drw=Hp{YJ3G~@Uk=prEeu%Q19d_HY(?@_+hp^hqgR*a z7v@W7@%Be*6ra8Jh`;{L#(@rqeq(?b!VUV-m0-N>LQA744Ty!4cVjd7I5ojc<23VR zA=z9=7F4A-nXvoc_QALH+lk~f^z+?;lGy`N4Z@bGiG%Rwg~>!|W~P*wWYD(5P`a(Y zW=LO`$ULl*7CW9r3IsKZlIO%IjhZH^FN@$PwMc=6C$X_Vd8*-NQJOtg1n{C;vomSiLwN(SR^#!@I9 zdluu2Zqx7r8H*)VaDw^UqZEaB5TY|`ZJ0Ca+1S12xYVrAREEK_GF+Jn1y&vF^$kbj zdl;79p7@cEcIKaAadLM9&(Dx|vzu_W+qedIlH&$^O^fIY<1M6a8dEw^0yi`o;zbU) zErilej|*7|cxSZ`N5NC8naeii06k@Al!qefN5Opl1Sr#cu zQ^t%MUpIz~*57zimXmT!_I_rA#~R?8e_&=5MN_FL8l6Fkg0#qn9+Y&5Y&h>{V2qkS zRwm(!lTh9lxM5QMRp5w+r$c0@r-|OMncKzf1N?X@w4zot9HKKqp%a0vzqbBp^eug{ zHAoET{Z%Cv#2oJz`WUPnLO&N(La5Z{f|j$gW0r>Iv}`InB&w!lxS66XCj2tC!oKEP z^(Y@c9WF=pkGE>*vyx?p6f3KdyINyeD@X3CTGow{sY!+?7c*|cFQY5$ds2^<$(?w( zr&sgVwx2=^WZpRx1q!uk1#@x%T~sJ$6^eApR&Sb1Knc*^6MNC;uSMLoVmK5=Y-J>c zF%6)=xcO(_`HrINf%qDlF=?2};5Djc(7_0xo#hT~WH6ld(!dF%CUwiQp6B4d;~bi2V0a%4<^y>qVwyG}S!kYS zj)@^~QM{jxZBlq^yUb^Bg3z0?+e%tVL{t}|UzB3L0#55yhJ(bg_+_-~*kE+mO%LsM zvspJiF_2Eg5_;ucCoNYG?iv{COF1!Ka4DLtW{7`P%@fQ7;KP#i={AL@ zzFsS}ukF+Qn%b8^4K_WmypYy~&}{P*nFwDyck9}@`MyTn=SuObLp1m!d?RFX9hfcWd7VoWB zqURsAojJ!o$zF`zv6XRbbk$?F122jE5?$p}fz6g5BIVh>6t<(wGTI6J3L2>wIY?6h zcSOH+qfa5`t1>yfVHI6|*<GK2GQm+;UCI8J; zEo`fESXoD-vmsdfc34pTNTANms3S4?@+v|vO?X$$v;|X8xzo6qp=8n zo1~<0h2CzOLz(St&~fH0%ME&|=gs~Q_i^rv+*90lxqszeKAyw=1LczyJ%m$bfFh5p8N3Jif67|Z3Z5S8W;T7#q&LFZlxP|eorgRop&soA?5sQ z9O36nD-m7!`g}I%4ALG}?JvG`f#asDXg=(5r_2Sv)wAR-&UEi?LL@$VnDIS^k56SB zAN`G}$zu$$9dLR)2)2I2pqk<~sR zYG~Vt6g=KKf58`IB+vf)G#3GRYd7_g1h*8=jh#WL=DhfRzWs%3;MGOljlAYDdg*6RZkMz;o?$@OUBrIL7NXJwxmC+m@wQ0WUp%gzJxtUdt84*y? zQA=*7S~^Q@!{>8c1(I|F&xM^tU56-7^h+BhkfKS8&6gxqx`7u$@;I+3E`agS%1Xy>%8g2gjCkNHhs+zBK%86ct(ONwSsqqC{)K zyxVA2-7W}<)Zf3^DoChL)OfVn_}mFY=t{W#ZNzJ0ACd~z=Kg+35rplkEf^<0XS8ew z4aiZG;)b|M$Wn8FW*lxI8HV!^(NGTR_0m~%{9s+_>RjBD>7`1M$TtoPXKySLUcXcA zQ^_AuR^d1J_jp@Gcmtaa+*~752b>(DB%ykp+~#^X^&3#$5-7*XNwD~UsKX4*k#En@ z%QL>r{}k9wqAVBYU^msPxr*eQZ;PlchE=+SguGI$(~1QjaX4Z+Ml1YdlXIa>gT*b7>YI&c=_!RS5mw1GL-s zvfhAv2lH^v2d(X(;5PEteq7HjXpF+zGP4ky>ht)6`W( z;1_iLP2(%|FACHLV!u|S7Qb*`Pya&8`nU92`iC-p2b-sX8I0F2xPw5WU-fLTJ|Er( zz3j+WqjYU|TMH{)$FnPrf|pv{wB8z;jkb_R{}fG}A zh(ayOKy5*MNYu!yuMSPGS|gjhCYgphuv(L{{UO5$8OtVQy`zVskRkPX^oROHQ7=zN zX$E^+lCU^ci1c4&&|93PuTi(-Q!qiHv`jyFEqy)K?&LV@HX42{eMKJ)d?MQKX5+W$ ztlY{6!g395CEEE_ghRAPq#N@vEGR@;(E)VayyE>9S0q2ojfc=5Y1!fzT?~Xzx+_x> zRL$l~+42x|(i>V!%O7lIw8%I>{wXcm%Bv<#Gqq{dMgJg4r^(=$m!uKNlxmNPrnCr> z^QwM9j78ME#S59$-yFAM)*LPF`616MsxdHNs0z>jP}XGg-fe$RE2i)iZIl@N90mFlbE85lov2(cO$+oG`o)fC zcN8~7qV|v-jcoX`f&^=F=C*g;HZy6_WmZ|@aXLF$+f}T-aZ@cUO0x7J*ZsL=7}nQC zmB>uxPvP2DD#p(Crh-*&KL%#fd%%p$Yh;WOVv|KsI>rsI8C9%#O6`v?1{ruI)UXQoRbyxN)B3R5{f;GkKfha)IRWPp~o>`a&1K9Ulmi4!Q zC4SNKQSt2ld5GO;dsdTX(6x^setV_nI&rt?XIX78{CQbb5p5lNglUGRc29+_rmg>d zH=$L5fR`>=)#2<1*0-lpA(bE5Mo zNm@Jt5hpY^$^Jkb5sPOEzU@IzvZw16tkPQ0i~E(b_nYY+CM^EwPvz;o({hQ{dBTI6 z6nx6Qg%k$9nUvu-(=3iOd)aqk+B4fdqteui#77%>Y4^<-H;mqc7#~DK4NNZH`Xt6r z(tn^7o0-`ST=AH;69eK0Bcw@>kIiB$Rq=b+9v^5Q?0jsizu#dp6F3+iKlZ}wIkxi z*D$i3nmBcRQJ97ffxVQ#f$mTTL8soXq60W|e=67fG~HDjGuMO{D8?5eqNfZA9!{Ll z%@_)4a_~A?BY$Mq0)>ToV@#7t7Yn*Ask%bfRTPo*>Hu!XhBaVq=_q#x_aNyP4Itnt zQ{xHy;weo=uIw$x16l58$wgXP;W_Im;)Gv88wzIMvzjaaA$G$tBSF*Chj3SE%E&GtgiRBp6FlE%@FH*Y`4v=e z-_EZfZ$lLMcCGnLC~e@+>t@&uXMRa%@uOr|(qA$>AN95&&Cn^tBUwk(k3@>aVj_Aw zFCq3sB(X=&2Jh_Es0>15t+He+Q7o{%+()@jQoI&_O~0rxbB^O>nP5mrG@T~w=jnbT zqd@9R|2%)2XWP7m(r7$4$fOzi{bIgovuvZtaG4+>p_eQhw5`_3t$g%;=m{?Z?frSk z5eTt0kgaO?g`Pp14C;-%txB4Vidg2y1RJX+T7zYj;}u=TCdysBW)qJ-t6IFJEnxh1 zs1O2h4OC8N({i{kT*}`ph?=D-W8d(PZv#rwd<>qu1e81?%@A^kD7fyp@I7lfeT!yV zTIs7Q*{Nu zcn!KfDN)I$H;Z<4n;UL-RCDj{qI<8absL6(h|AMsHK~h^a+z+H}KL-a}}@ zD+!6HN@7pnnQkM*m5#bCb{SS{@VkONw|Z&LRk|7Hnm``(#yDm z?YS#^Q>4&hpq*am{{CW|xj8v`#sq+I|gt4PgmY{qv;2_TSlm*g_ z48w#hB5Jam`!swXP~JbFJpdLCBo9R2hqw^Jmi38eo|r&GNvN(QKHq>Nak2%ErYio$uw8S-hUx6AzO#qbgDr(HGT zA<8XG3ELFTe8|SscS*HFapT;FPs0-~g7T28P@$-vEYzP!Ts}aDt@Eh!nr^r3u&;-K zzcR(;fan3pTCET|)$$NlVAFH@4d?>ClM6(PF*GzHnDQG$goL;x%TkD$zC)6vNWSwg zORV`UEZ2|I#J_c#>-YQM_e(FdzDK9`_lUxaMBo3{%dm-IvHlmTLNy*Q_hgG!l?iX! zLp>GqtjT#l$7x5C**u2a-EBy>Wj4gQ)VdH9+o_fD9=b*lt605eJmAH~H$JJCrvl1UcGUV5x#Sv!#^ z=P4lMPC-)|iYDxAS3Q)2XA0&xTTmkmE?G!~Xr_gS;n4O%k{kj1$K1GCFljo4P~v`3 z6SoSAG%z43!q(tMTaUdP^7m~a`ragEy=_Y-GiuUkj7n`qp{-c(Xh6$nDZ`^}Gm<(Z zYiQ#7)e;_}LHikgeK!mL>L3mApHZb7Z|$3z>05`^@I)*6&Fz>PD?d+87iEFxZ~j&{ z$A14km!KPhO!q!x<*>}(CDHZ^GP87|k8+9rzId&xvp(M(q}MJ{ya zDfE(O=ew0=NA&H9;1fursB*@Txb|i(zw7 zC93H0*CktA$?nYo!MR;Znw6uwH;-jhQ4DXn=AIp9QkoUTS6-id;l(|)@$actMdSG{ zYT+ja{hnQqT>*l!Km<--hW4Rus@|{UyAhJjcDk^&Lk(Ly2%tJcYh}VfG&8atXc5z= z-wQJ68IHkGkOFb!61Z+?tzFO|&y^l`B9>?jj{)Vm6Et8Eq|yIkNGu?SnrFU>o`Cqf zecT*(qaW{Ag!F^86>>a-`vr@%b|vt(hA{b30RmTZ zQwTk1#ol_w{y*UP@!8RUQ<1wNk|1N)6~*3XCWM5gX=~Tw9*hj4Fh`H zZlx?$T;J6;Ty`P{E{;ZYe*H4in%C7Z`e0byuSKHGr-v&IB5T*9CJmaaqpe$Wq2@0~ zy2)y9$g&!tTxR&%lMB72i&%Kwf@gC*0$3<@Hi{7;tTlf|_!1IK0rUKFepgNAQ7V-w zMacYFoy~eaE_V3k{;Fz{3k6;+7(Hf8JKWumRU_#)O=Z3YzvItf}3r2MU%iqgA!Jy*lJ>0S8K z?h&*TpXD`?lP$-*kw>wV5Xg6YDR%|;8SabRUwRRP-iV65e&wj_dmR>kS9fHuJm0No zu_dbCn(hA)%+EKa<1s@vBC-*y7!jjFHX>v@7Egy%!%#zT*bD~_ht2lk=inYUf&el1 z`XmGvK>z5<4d`fJumN4|bKoXrPuk%A4+V{Es{jCaoMT{QU|{rS;%QHm*No@4`O3h} z!~g=f=5=X6Y5o6i{%>KL%6JyYA({{RC6Q^Wr^ zKyoSrPy`t;KLr4hOa^awoP}4*Z5uHVo!!8&FGhs;5COStDJ;dul)+MRP8C~1N>Bp< zgdk3A*%Cu?es8!kB4EJfayh>@Z%EA~zwbmdmDict*q<+RqL0(6^C;6}nBUHs_I2FV zJ#BtBr}EakM$1#htM2VMWn3@k zCYTG$NfK=H_>eqTIn+>c8Ts)LalkOdY&4V z17t zk45bS(Rdk)JK`9|x?_FEAzqDhsdbRLFAv5w!MxhNG~s&SXP%4yL^p~}l`mI0oIP)y z|JgBc4nzHLZE}t0@}}SXPsH9W05pOm0XeGn0#L4JZmn&Ug)3QuX56T)(=*<+x4_} zYAcr~=UqEP7}wt0%pa&z!KL^AK{l9#cYHog-<$(7BEN1u?uHLb)qQWV>a+Srz29v5 zJLXt9Kehgy`q{|&euVzi>MNTcyV!FrhLdvI`U!c@F+S*A@jqJJp)QrT_73-{kE%oc z(OMb(OaAS+*LiI9qgYt^J*vRw1nImumWuyVe&pR7L1lm}g{R>Pg4;-dTZwNGLmbKFz;@CP{b)@r|Eb#DE)%1^9e zJ8z)I%+IktFph)z&UF>|PIB(7@m;_%*4Oy|!FwQ;-y6PR9cAEC9=OE%UM;2{^*QK} z`vlaqpF6c*DeeckXQz5^$a2=xwnlBQ+UWHly*-y-h?AX1-CyZ@sY?kx2lJGmZqkr9 z^?%G0xi6FP-~KCTzqsJto_&y>D){!ZQ29gc{?xb~{(qd=hw@i*D)=n2{sQ;MlgD6u zF?)C)F&h|P$OUr)>T2;??R%FokMH&0;XjDw$iI2#-itZU%*|Qv_~r{>lf)+!f;%ME zPt3m!|-DoMqR0m{;Q#2k^D`DT-7oluD^|Ar*}pRFY_<%Sbd` zbTctsbvIp27gR!O%Ag2??m`G1k|HFfs0g7F^5_skhx76Gnde#0{_Xc&Yke>4{q6mm zi2wWRAXY~tl|^5%E+VZI@vq#766GUG&WJeSpV%33VwN}@QEGTZY5Ap(M4YrS;^gUK zUqqRO5vRyGWkp2U?1*wr#PNvoIbuu1sa?gKhzccy^@;?zEZ$_GyPAPKS3! zDIvEqE|uj~X&Z5-wKLa7RLzU12EW?oi0b03qKF#SYOIf_nIYuYr0HxqXWOq;M%b^V ze=VGA<5n9+?Y$9oS_u5>;D1g-kuP>f)Ky!zP|#b?e!Zg+^{qFM(*Umq?$4#?Tzt-} zCiu{Bh@kU)`p#by(FpfO+aem%*qA3xG9xaqc0obJg=}xi-=;Wa$j`txgC`fsZH8|% z*v-^7$1f9?Ogt{8;ZoNYqlNsIxU}R~EBY_v&t-gUU0TCd^LHOCwg^&R1L;(sUDo$2iiD;u|L`m=d@ zE#JD}a2@?!X}`XgP-slb-m46zFFt{JdVfX&2YSa6YNjm=|nS_WPQ?-h{-&djMHR2Z`ZHD3=3#1a3-g~ zn&O;JwKi4lRQ;yWG##($a;Nk24(IR=dhYbSywm+%e4Sy|Gt6)%-)5QFEZ*Pke9ku0 zd(_^`hx_<)AFt-jthABfcqlaiu8Pt2M^No zuzm}9w8*>`(ewx|kLdNN87&r%ng8RweO%us)D+|Vq?#x7eTtr^ad}$)622@o%Vl^j z!)v*jFE5T*fy+ucEA?2V_bT2zWA3YIT21qF>Ylgvy!AC^^n&^q@qEc#UV^`tk8AOK zS?$X-ze2~W)?USR9lUig);R~Snf+__U#EM$9&hks1Kk_U=1sB5_jZ%Lw`hHf=WmT{=}L3)I2}s)m}b+X74i^KZo@>JzwCp&;CAK zzl8TCkH50^HH@$A?|0qryLQ*9mhZL{==O9bS94D_7@NT((CV| zkwjZDQ5=gT&5EQ%hL|2nN!OAqA~|7nBq!DsOCl-NM68LVbbWC=l9Luja&kkFFOEb~ z#(tUMVy&=$ikh-&%j#ctXC&q1mMaiGm)E2G`bbWNbE^CbcvP@n(Y0ccI2=i(9AWRY z83NbSH%4+sS0S%*3sD?Nl}eGESw<8JHC16%g2cn+NE*`65dQgjfvL zX=&nmfj$?)ZYs~aCdr^7L;q&w1#g<;)Lj2ezGl*NF`P?Ei7k;_D!&CyE#Qn-Y`3oZanCwJ_o<<^mW(2hrJ$p z_0*#m9o`{HZ?%1R?cI^|iho~6}Zy20myu6jx;j|6s$B0}((@4BW(mhJP_eJ7;k&HPM z$yk2e=5szj^6?&r&p3JG)s5GG0$vmOJ_+_@KhGxPJ=uA>o#zGk6`0QydZy|zm0#1~ zPIJA3e|N&a3)dO+&EWA&`ey1q%UPSP|7?Bk5%2K{A(DbNN0Gze4MU zaOU%O0e%lS^F{nFqWeL-AL7qLe0f;z!#FSWc@g|aTpz_@vHiv7^cc)1oVzD*DaNUo zu3~5TDQi#Dw?yxydM|ZumpO;aabJPQ3O=ng?^QHEqh__f&*Ji&c%IfZ&h!iXe~}L_ z!heaLwfev8{uTbciu*dB|EI8-?$@h-L(dKLY~cT!_TS{uM)@1faT86O z%i`RSRvW0hB;Jt5sEACtM`GD3Bc)X2Ie9cfZO(zGzr5-lPvnHA{?Ya>0; zdZ{{*mOdKkN!ubVlNo8*CSqZv<>Z&!9clR)k)B#c9Er5T-bgF%_b-S(r)7x4k)B=@ z=^6U@Um&ewt%{s8S43L1wOA8rHM!M`BR#9KuvcSrq%~ps{h!uSQwzV^>gtpiizBV; zzTT2Z>*LcPSHNf}x1k>A&xy2Ahe#Xa*w}uP&5>S^Bj8=Au4!MfKGF<%7nKr+B5hVP z(&qGJ=0|$*mPjv|9_gj@wD>0qB5i5C6)!GR(|TQ`ZScNgU!+&Ijr6K&k+y@CrB~Lm zNZaQ{dQC&2ZwGuj@~_j*NIUZ&yH}*wu8y>ep4Z`fozGoqzn+gb@Uff7!K1tN9`yE< z*9-SvxcAnxH~zh8?W3j-ulvF6r>4J|^ym3abm#IYSN;GV`VF1lf@>a*dBY`aY;&h+0001ZoMT{QU|@d67{H*w00K-v%m{=G3=UvE0{|tN0iXbQoUM}0Zqq;% zg^%r|66vNtG$^QxS>;D+oF6x+WJOgeV!;NrLTsJHZLG!_%bq6c10WuQ1xpsdGw=W` zSnv=mc>#`{E7~AhffQTvd^7j@oO@>mz`peg7M9OrJQ21~!5d*4MSKu;pzu?;fQt28 zxQMFtNq7TgyC_`3fjt-A#3TEg@D_HRUEysM9Zz@%6(@cq+ zV+&op6t?O1PT0XSd=@UCYdsV$;)OL7-oSzNUATnT_P+2YT>HK77OM6S;cb+hn(z*~ z&Qsw%RGqiNW#)Xr2{d9{BSDA@OklWcb&Sy9IACm+uN-5604e7YN1W*RItec(M%70R zHPADoju%0yBgXFfNuifZCgf~(%JnHt$Nc4%fao*y3(SgTr z`yRJu&+T|_d)+N~d^@>y8%O!>-mO39H{m?YGy1vXP3aAac^$XiK2r4+!+DUTp`P{C zvV+D=3#$gb-^DloEMBB~S>;Ws{EYV@t16QiqDC1-8O<@PJ;z|%KrMn{Eme_Djf!=AHT4q}j`U2Wfl>Z!tc=#v%g``8yOf4j zDL16W_gs4OS9)`E`-thr#A(0PI%ik@vMYC_qklctza8az?%{oxWUaOR0^NPOM-R|n)nT6Xk2kmg8#BmabnVA_iQqM>?qEkydHy38dcF197W_FmFnVFfH z{#V_a-Py~3-*=j-megvfdiAP$*W{Z0_up@>owWA<{G*@XBG#mkf`k$+(H0%i6+O`x z12GgMu`V{mrq~h(#I`snjuXd=6U2$)ByqAhMO;8!P+Uk{SX@M0RGcbK6BiQ~7ncy1 z6qgd07MBs16_*p9xV*T6I9*&(oFT3xt}L!1&JJ&Esp4tk>EapUnc`XE+2T3kx#D@^`QioQh2llx#o{I6rQ&7c<>D3MmEu+6)#5ec zwc>T+_2LcUjp9w>&EhTMt>SIseDQYi4)IR$F7a;h9`RoBKJk9>0r5fcA@O1H5%E#+ zG4XNn3GqqsDe-CX8Sz>1Iq`Y%g|$<~7sZ#vm&I4aSH;)F*Tpx)H^sNax5anFcg6R_ z_r(vy55gCGRcoBkwEkCw)1VfefXV6FHTU zjO8IYlZi}aCUaTH!?KiS?cBAqWhHC5Bj@snT*#yH{_+9xf$~A}!SW&Uq4HsCUHNeN z2>D3)DEVl4mVAsnTb?7&m5-H=laH5AkWZB7$tTGt%csbv%BRVv%V)@E%4f-E%jd}F z%IC@F%NNKO$`{EO%a_QP%9qKP%U8%(%2&x(%h$-)%Gb%)%Qwh3$~Vb3%eTn4%D2h$ z<=f>u_VRZv`q);I69tApcCmNI+;$P3(y7WLUdue2wjv;rPJtQbaA=_U6L+E zm!`|mW$AL{(dFq1bUIy;&Y&yNmFX&UCS8@TMpvh6&^75=bZxp0U6-y$*QXoM4e3U7 z@eVRT)pQX>y=jjXdMfwtb znZ80_rLWP~=^OM-`WAhgzC+)o@6q?^2lPYw5&f8cLO-RS(a-4@^h^2`{hEG5zop;N z@97WpNBR@}nf^k5rN7bN=^yk@`WOA1{zLy&Yf31oNGa7)ZPig-)l+>nP(w9R>uN)7 zsx5UuZL5RoICZ=_L7k{hQYWiZ)CJT9)rHiB)kV}r)v4+)72H#8R|;v%IYfWOm$UtHFb4$4RuX*Ep=^m9d%uGJ#~F`gSBs~8>$C)L~UBqbgOa9W_@+)IuFq_g4>44^$6Q z4^|IR4^XSoJvdc=ZJJM0K8el6tawih8PgntHl= zhI*!YmU^~&j(VZ;g?goWm3p;$je4zmoqD}`gLt^;UA;rSQ@u;QTfIlUSG`ZYUwuG*P<=>!Sbao&RDDc+Tzx`)QhiE& zT75=+R((!=UVTA*QGH2$S$$S=m zNxN0#C4M>8vWhw^$EIopkq&09Do(W-xOcrGsm-vF(>SY5ugK@R^zzB1ZQ^O>ClusZ z+dS2+AjyN7Dsw;VhWR{8AhhCaoF7r84s&G|SE zweC_-MdB}7g^x|c?&U>il9${*w2vo^dTKoL+s;DnY+o1mWrLhfcMi2;xb6| z(C+6_vAe!htRXbY#^G9HzUaZ}gE*Vyjoc5)+?dFZOG9Hn>-%My&+TUiPP8BGI=L>I z`@E+uyjAM9K2rEu*bVZuD77&M^pPO(Q-9@iY8p>qE!v;JZc9yip?mo68Q6PtaP|4B zjQwny=oXeO!yNoXXQ5xRwY5upB~Lr}PRg5w?a6f2UoK5u>@FFPtyAi1t~E9(%8Me- zrd|LCYENK8um|_!<%Q0A0Vcs4R}P)Ad3dwTX{HwnUSYb;_e_tS&x`zI(yO969aq@l zHl8e^MY}Gnqa-@bvzGOPp}l(MaLr3pXY4A2pk%w@k%UwlLs1Arsgoqi%WM#6xcwv! z{7P>|n5tLgur#;&8!HXgAXfCcSiQ@0-*Q{z*4{pUU|);ta$i$j?0?B_?=;EBx;-y- z1^}vjGc#?#4*aP%E@M3je50K;7~Y>2xDOt zlcbMj)d6l1k?w8*x=w_#I>8#V6Ybn#Lja@9D3g~}k1x(wS}xSS6iAbUTxwn zUe$TVeb?fg-HMH~TbZ4`c>{|RYBK|XwG+SKAG;Os!W?U_`-khiYWi`aTW8EM%K)9u zs#+$+v#kj%CZkkGohclyK%{}MjdM7~I>!>v0+)uXbg>M;H$PDvD0-zXk_9X+S%)(@ zxUklz0AR&{AMwV(h#+EjgB2*Cl~dF9(Y zr@ZVt5MfudpkaWZeOOdnnAmvHp19Kow(QxAzt|ru+>ItYIHeC9T((dO(L5P8>7zhDu@O)9C$X)cOu|^UM@OJBk^F*B3er(KK>&>R0)c(GmdPTZ&m{9J?(T z*KngGH#+1^dk|-B0P@^l499+j*B9Od z5O@4i0TTdH@U}xWyU#Eg+gK{i-O*ClX;CdkaD1a3H$o_lJuC$rewdG$WP4K(jAFe} z>ddNG(Kwhb*h+0WlxcKnBeZ82`ZuDyE?uU^jIdhY(|J6jJryg^+tqrOq;Y`gJG#b} z>3Ez8VuL}Mfz^`uC_fxJU1>u1?W_4q5Gtb_p`C>-w%{k$z9LOTDLB=uW|t^-5XwR7^eI?6fCGB4>8)n3@yr5JYEJVlX!|Zq zcuQRL>_Qz%3ruo`_`eDeqjK}HduEM0TXm4&-AOR`TXy$Khz$dRZ>^I_l&$8icuQoJKZLPLhgKlG$fykiE$oY#r z1hK3(=2%b6DFwo(@ln02$C=gF8y%AXZ0Me4G{EknXR>?_&V}j2XEPHgY;k$kZ8Xzm z0?a1Rvp8wF2bTbB6C1+Z2b2%(@*;`m=7Ck>%s$IC0~QFqwr%Jz%rydh$hPXN!_))v zHXLo*U>;*UwBdPzOlZ-YoYcXk#~1?b1J)`tK7E$S%PC$ElbAx2uwP$ znIBIOx-ietMTYIq1!$WK=(gwugvT|UbUT$1cjhLeVdJ~T?8xB==_2D?5 zCk}0rgsWc04DA&IXCxXl3h#K|$urAAoS50tkyAjLvgYx_wbohFTyi}s1O;TeFq-7~ z-p6~>JegQ&5HaOncmG>eG&{-|FtjV5P@VF!rYz7T8dj`7LJN zi;=y0@Okir(DAsY@6A=knhx?CF7(CWaG9-I0=}!5MGEdUXu!{I83#?X?4(`r?5b7) zOETNM#Y?EiwlL{E;s0r~Mo<8sbXeo=h`EoADqJw@m^9~I?3e`;O5Jf*X9g=csdi#N zY4OGM=GcUY89;k(YlW>NUgcshkA z`q`{q#^Z6GwZKp+-8EW=Z2ZdROg63d=A80YU=<@<8Sxk)*x;R(<~z(cEjM>F?BfOP zS#Gkv^h?TIxcJttu%qr@+7U&q%PV$#P7K-EJ1N1 zBKje}VYe1eT(iR)#}xf(BgC#F!{0rykCjNBUN3}L08aw4k% z6EJ_EM5_e)mFxBjOGuIU>2TAjQC`MJb99n4_jkCg%3x#=lz>*i8$Az8rliQea^wbl z&|q3-2CN=5_`)vNa%9O~ZT*=uEkEUiD`(;}(MhL5k8s*{13-e#U1q>DCUg5735B3e_gacNmM zfFo7l$Lm23GKByF>~O_J3||l25B3C5!8>TlL>NykYTM|HMJ=LM7#}^l*bGa5QrQZ* ztM;g{tkV%+kl<*5l%EY6>$4c&WcC?|K+tGQiZW=*2TT(NO}&6+7ii*aCx@+XuPUA^ z2yMAy!%8?vsP%yrxp{SSwTThmjf5p0NwH%8BdagXe|_(SjwfI% zEk;*^2pE~TigPD|XIAyNgOkYpu&KAv3Gw&IejDCK4+ zk1B{pI{;S%7)Mjr9Xawi@jyT8d&I!{yB~8<*YKze;lnQqN79sEDBJT64GfM`|Jw^xe{BjB2i zmMI@_fjjw=NgR0ACq_%|lmQ6KhDjAjXX-)%hG3adYa9cRM}TWA8VAuh)hghs?H;#e zfZJFeBQ|==p1KZ0ECApo@@J)gU|$Ks<74e%b5LpN((=@jOFg4WonZ- zK`&F|x5j?t$LbI$+4>={4^A`Z5p(d?%=gEBd&d0J=Q?u8{?>K0c*f}+C!9%PK5fHfVXW&MI&BfrM&M2e8`XK{s_lWgqwipwWi3Xsy6m5 z<&!=?t7kE$5&8TV4O|CoM=?{17H2^@khw&@Y%>}x0M}DGQMuU3VqdZOcI`0-{BM+L z5Xy3fP8b4mcEC;vlVNrOIKvifTEgR5Gh`<=ZDe&JTRB_^>AI~?c5IB#OULX%)PZi{ zaHq5hpC!nOGx>o<441#HH_HX5vT6I?>hYAbW;I#dZdTJ4v^X8|cNXirD{LR>h9IKA zjH+u-25aNDImg3*_#n^bi~zSDoZVxd2A=5iAFIs!r7l2}xHhOj>86{NPVt6CXOBbP z#%e>7&$~N(Xt~gS%jRin?2i{CzSu+zBotN>=aJ7_qQ*%+-TTvo5azzC%(b4uin7pR zyKeK_d4>B10ZdQ1f?00w)jM`;Ph4jx_~vLSczn9p)y%rEnJxYc3ebED%AkUnee>5s z@N6^Fi-ykdnOmXzHuUqEgxTH`_o(m`;l(e9HiUa)uG?pW$QB01n$u2eX1pO`Cl2BO z*+DBt|9Lx&VM$pht>M{u)kAU@Tkjq1N=@0%lH{~!u$Ty7m0sVKIBAMH#?=hECQhx; zF*Coi#yN{QCw4y`&?w};fl4?)kx7B&Sw6RhXR82EQa|hRFXHMP;0{-7I}7H(mly>L zPP_J`mj6Zp#5>Q1*5R8X#bC^V3lS53+~$=vY{DRk!SabEbnlimg0e;ohUWvrj3zyu z_98yU2MsS>(x1j*m~a-z#1w9gL=rAN+O3?hJGHTb0F55wN5GlIdK2WD&$J3yU5TWK zPo;Rd2LXH&>5s9lmd#`OPR#gkRvOt< zi-b=Xvlep3%=C6Mz|GY^YFX9>tK6OVjY|0H4kx^bXw~*H$FvU3SC4AB<>0Z$wKh}P ze`L!|$NkT-t*sd!b9C#<&jlau*=(t2GYpPy7ElAWoW;hTXgNsBo)8T|J1}|7BwHlR zUVJdR_QbCPT`>s4pvpd%jVch}S|8k3+G#edIn3c~79P`gMV>h}W_$OPVI_^;Yio3C zg%}V92iAPtF?v&(*=uFIUwLUKM%vhSk%9Mq*cg*-8CaU+o*6X-CWk!(M|W-KL#`++ zC)2Zv$^By36nX92%C#&j|K1s=Z|vHf>t*0{D<4>mB@HRH-3;v2wREhk&Hn+P(f}g> D#gX8w literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2 b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..978a681a10ff0478581436eaca5c5695c97445d4 GIT binary patch literal 79444 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 + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    API

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    API#

    + ++++ + + + + + +

    cmoncrawl

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/cli/cli.html b/docs/build/html/cli/cli.html new file mode 100644 index 00000000..0a647f6b --- /dev/null +++ b/docs/build/html/cli/cli.html @@ -0,0 +1,529 @@ + + + + + + + + + Command Line Interface — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    Command Line Interface

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    Command Line Interface#

    +

    The command line interface is a simple wrapper around the library.

    +

    It provides the two main functionalities:

    +
      +
    • download - Downloads samples of either Domain Record or HTML from common crawl indexes

    • +
    • extract - Downloads an HTML from Domain Record and extracts the content. It can also directly take the HTML and extract the data.

    • +
    +

    Both functionalities are invoked using `cmon` followed by the functionality and the required arguments.

    +
    +

    Examples#

    +
    # Download first 1000 domain records for example.com
    +cmon download --match_type=domain --limit=1000 example.com dr_output record
    +
    +# Download first 100 htmls for example.com
    +cmon download --match_type=domain --limit=100 example.com html_output html
    +
    +# Take the domain records downloaded using the first command and extracts them using your extractors
    +cmon extract config.json extracted_output dr_output/*/*.jsonl record
    +
    +# Take the htmls downloaded using the second command and extracts them using your extractors
    +cmon extract config.json extracted_output html_output/*/*.html html
    +
    +
    +
    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/cli/download.html b/docs/build/html/cli/download.html new file mode 100644 index 00000000..015e4388 --- /dev/null +++ b/docs/build/html/cli/download.html @@ -0,0 +1,605 @@ + + + + + + + + + Command Line Download — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    Command Line Download

    + +
    + +
    +
    +
    + +
    + +
    +

    Command Line Download#

    +

    The download mode of the `cmon` command line tool servers to query and download from CommonCrawl indexes. +The following arguments are needed in this order:

    +
    +

    Positional arguments#

    +
      +
    1. url - URL to query.

    2. +
    3. output - Path to output directory.

    4. +
    5. {record,html} - Download mode:

      +
        +
      • record: Download record files from Common Crawl.

      • +
      • html: Download HTML files from Common Crawl.

      • +
      +
    6. +
    +

    In html mode, the output directory will contain .html files, one +for each found URL. In record mode, the output directory will contain +`.jsonl` files, each containing multiple domain records in JSON format.

    +
    +
    +

    Options#

    +
    +
    --limit LIMIT
    +

    Max number of URLs to download.

    +
    +
    --since SINCE
    +

    Start date in ISO format (e.g., 2020-01-01).

    +
    +
    --to TO
    +

    End date in ISO format (e.g., 2020-01-01).

    +
    +
    --cc_server CC_SERVER
    +

    Common Crawl indexes to query. Must provide the whole URL (e.g., https://index.commoncrawl.org/CC-MAIN-2023-14-index).

    +
    +
    --max_retry MAX_RETRY
    +

    Max number of retries for a request. Increase this number when requests are failing.

    +
    +
    --sleep_step SLEEP_STEP
    +

    Number of additional seconds to add to the sleep time between each failed download attempt. Increase this number if the server tells you to slow down.

    +
    +
    --match_type MATCH_TYPE
    +

    One of exact, prefix, host, domain +Match type for the URL. Refer to cdx-api for more information.

    +
    +
    --max_directory_size MAX_DIRECTORY_SIZE
    +

    Max number of files per directory.

    +
    +
    --filter_non_200
    +

    Filter out non-200 status code.

    +
    +
    +
    +
    +

    Record mode options#

    +
    +
    --max_crawls_per_file MAX_CRAWLS_PER_FILE
    +

    Max number of domain records per file output

    +
    +
    +
    +
    +

    Examples#

    +
    # Download first 1000 domain records for example.com
    +cmon download --match_type=domain --limit=1000 example.com dr_output record
    +
    +# Download first 100 htmls for example.com
    +cmon download --match_type=domain --limit=100 example.com html_output html
    +
    +
    +
    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/cli/extract.html b/docs/build/html/cli/extract.html new file mode 100644 index 00000000..ece6a86a --- /dev/null +++ b/docs/build/html/cli/extract.html @@ -0,0 +1,621 @@ + + + + + + + + + Command line Extract — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    Command line Extract

    + +
    + +
    +
    +
    + +
    + +
    +

    Command line Extract#

    +

    The extract mode of the `cmon` command line tool servers to extract your download files. +The following arguments are needed in this order:

    +
    +

    Positional arguments#

    +
      +
    1. config_path - Path to config file containing extraction rules.

    2. +
    3. output_path - Path to output directory.

    4. +
    5. files - Files to extract data from.

    6. +
    7. {record,html} - Extraction mode:

      +
        +
      • record: Extract data from jsonl (domain record) files.

      • +
      • html: Extract data from HTML files.

      • +
      +
    8. +
    +

    To create a config file, see Extractor config file.

    +

    Both modes yield the same output format, which is a `.jsonl` file containing the extracted data, +one per line. For each file a new directory is created in the output directory, named after the +file.

    +

    The files created by the download mode, can be directly used with appropriate mode +in the extraction. If you have an html file, you can use the html mode to extract it. +If you have a domain records, which you got some other way (AWS Athena), please refer to Domain Record JSONL format, +which describes how to create `.jsonl` files from your domain records, which you can then +use with the record mode.

    +
    +
    +

    Optional arguments#

    +
    +
    --max_crawls_per_file MAX_CRAWLS_PER_FILE
    +

    Max number of extractions per file output.

    +
    +
    --max_directory_size MAX_DIRECTORY_SIZE
    +

    Max number of extraction files per directory.

    +
    +
    --n_proc N_PROC
    +

    Number of processes to use for extraction. The paralelization is on file level, +thus for single file it’s useless to use more than one process.

    +
    +
    +
    +
    +

    Record arguments#

    +
    +
    --max_retry MAX_RETRY
    +

    Max number of WARC download attempts.

    +
    +
    --sleep_step SLEEP_STEP
    +

    Number of additional seconds to add to the sleep time between each failed download attempt.

    +
    +
    +
    +
    +

    Html arguments#

    +
    +
    --date DATE
    +

    Date of extraction of HTML files in ISO format (e.g., 2021-01-01). The default is today.

    +
    +
    --url URL
    +

    URL from which the HTML files were downloaded. By default, it will try to infer from the file content.

    +
    +
    +
    +
    +

    Examples#

    +
    # Take the domain records downloaded using the first command and extracts them using your extractors
    +cmon extract config.json extracted_output dr_output/*/*.jsonl record --max_retry 100 --sleep_step 10
    +
    +# Take the htmls downloaded using the second command and extracts them using your extractors
    +cmon extract config.json extracted_output html_output/*/*.html html --date 2021-01-01 --url https://www.example.com
    +
    +
    +

    When you are going to build the extractors, you gonna appreaciate that you can specify +what the url of the html file is and what the date of the extraction is. This is because +those information are used during the extractor routing.

    +
    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/cli/index.html b/docs/build/html/cli/index.html new file mode 100644 index 00000000..48d9223b --- /dev/null +++ b/docs/build/html/cli/index.html @@ -0,0 +1,493 @@ + + + + + + + + + Command Line Interface — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    + +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/extraction/config_file.html b/docs/build/html/extraction/config_file.html new file mode 100644 index 00000000..44c562ea --- /dev/null +++ b/docs/build/html/extraction/config_file.html @@ -0,0 +1,656 @@ + + + + + + + + + Extractor config file — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    Extractor config file

    + +
    + +
    +
    +
    + +
    + +
    +

    Extractor config file#

    +
    +

    Structure#

    +

    In order to specify which extractor to use, you need to create a config +The structure is following:

    +
    {
    +
    +    "extractors_path": "Path to the extractors folder",
    +    "routes": [
    +        {
    +            "regexes": [".*"],
    +            "extractors": [{
    +                "name": "my_extractor",
    +                "since": "iso date string",
    +                "to": "iso date string"
    +            },
    +            {
    +                "name": "my_extractor2",
    +            }
    +            ]
    +        },
    +        {
    +            "regexes": ["another_regex"],
    +            "....": "....
    +        }
    +    ]
    +}
    +
    +
    +

    The extractors_path is the path to the folder where the extractors are located.

    +
    +

    Note

    +

    The extractors_path is relative to the current working directory.

    +
    +

    The routes is a list of routes. Each route is a dictionary with the following keys:

    +
      +
    • regexes: a list of regexes. At least one regex must match the url, for this route to be used.

    • +
    • extractors: a list of extractors that will be used to extract the data from the url.

    • +
    +

    Each extractor has the following keys:

    +
      +
    • name: the name of the extractor. This is the name of the python file without the .py extension, you can also set NAME variable in the extractor file to override this.

    • +
    • since [optional] : The starting crawl date for which the extractor is valid. It must be full iso date string (e.g. 2009-01-01T00:00:00+00:00)

    • +
    • to [optional] : The ending crawl date for which the extractor is valid. Format is the same as for since.

    • +
    +
    +

    Note

    +

    If since and to are not specified, the extractor will be used for all crawls.

    +
    +
    +
    +

    Example#

    +

    Given the following folder structure:

    +
    extractors/
    +├── a_extractor.py
    +├── a_extractor2.py
    +└── b_extractor.py
    +
    +
    +

    and the following config:

    +
    {
    +
    +    "extractors_path": "./extractors",
    +    "routes": [
    +        {
    +            "regexes": [".*cmon.cz.*"],
    +            "extractors": [{
    +                "name": "a_extractor",
    +                "to": "2010-01-01T00:00:00+00:00"
    +            },
    +            {
    +                "name": "a_extractor2",
    +                "since": "2010-01-01T00:00:00+00:00"
    +            }
    +            ]
    +        },
    +        {
    +            "regexes": [".*cmon2.cz.*"],
    +            "extractors": [{
    +                "name": "b_extractor",
    +            }
    +            ]
    +        }
    +    ]
    +}
    +
    +
    +

    The following will happen:

    +
      +
    • A domain record with url http://www.cmon.cz, cralwed on 2012 will be extracted using the a_extractor2.py extractor.

    • +
    • A domain record with url http://www.cmon.cz, cralwed on 2009 will be extracted using the a_extractor.py extractor.

    • +
    • A domain record with url http://www.cmon2.cz, cralwed on 2012 will be extracted using the b_extractor.py extractor.

    • +
    +
    +
    +

    __init__.py#

    +

    You might want to put the common code of the extractors into +a common python file. The problem is that during the execution, +the extractors directory is not in the python path. To add the extractors +directory we also load __init__.py` file (But don’t add load extractors in it).

    +

    Thus you can create __init__.py file in the extractors directory with the following content:

    +
    import sys
    +from pathlib import Path
    +sys.path.append(Path(__file__).parent)
    +
    +
    +

    which will add the extractors directory to the python path.

    +
    +
    +

    Arbitrary Code Execution#

    +
    +

    Warning

    +

    Since the router, loads and executes all files in the extractors +directory, every .py file in this directory is executed. Thus +you should not put any untrusted files in this directory.

    +
    +
    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/extraction/creating_extractor.html b/docs/build/html/extraction/creating_extractor.html new file mode 100644 index 00000000..40534558 --- /dev/null +++ b/docs/build/html/extraction/creating_extractor.html @@ -0,0 +1,590 @@ + + + + + + + + + Custom Extractor — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    Custom Extractor

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    Custom Extractor#

    +

    All the extractors that are used within CLI must implement the cmoncrawl.processor.pipeline.extractor.IExtractor class.

    +

    However for most of the use cases, you will use the cmoncrawl.processor.pipeline.extractor.BaseExtractor class.

    +
    +

    BaseExtractor#

    +

    The BaseExtractor` assumes you will want to use parsed HTML using +BeautifulSoup. Thus the only method you need to implement is the extract_soup method.

    +
    +
    +

    Extraction#

    +
      +
    • extract_soup method

    • +
    +

    It takes a BeautifulSoup object and crawl metadata (see cmoncrawl.common.types.PipeMetadata) and must return +a dictionary of extracted data or None if the page should not be extacted, for example if you haven’t found all the data you need.

    +

    Additionaly, you might want to filter the pages you don’t want to +extract. For this, you have two options:

    +
    +
    +

    Filtering#

    +
      +
    • filter_raw method

    • +
    +

    This method take the raw HTML and crawl metadata and must return True if the page should be extracted or False otherwise. If you can +decide based on raw HTML, this is the most efficient way to filter pages, as now soup parsing will be done.

    +
      +
    • filter_soup method

    • +
    +

    This method take the BeautifulSoup object and crawl metadata and must return True if the page should be extracted or False otherwise.

    +

    Finally your file must create the said extractor and name it extractor.

    +

    You can also set NAME variable to a string that will be used to name the extractor, otherwise the name of file without extension will be used.

    +
    +
    +

    Example#

    +

    Here is an example of an extractor that will extract the title of the page.

    +
    +
    ext.py#
    +
    from cmoncrawl.processor.pipeline.extractor import BaseExtractor
    +from cmoncrawl.common.types import PipeMetadata
    +
    +class TitleExtractor(BaseExtractor):
    +    def extract_soup(self, soup: BeautifulSoup, metadata: PipeMetadata) -> dict:
    +        return {'title': soup.title.text}
    +
    +    def filter_soup(self, soup: BeautifulSoup, metadata: PipeMetadata) -> bool:
    +        return soup.title is not None
    +
    +extractor = TitleExtractor()
    +NAME='title'
    +
    +
    +
    +

    Now in config_file you would refer to this extractor as title. +If you would’t set the NAME variable, you would refer to it as ext.

    +
    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/extraction/index.html b/docs/build/html/extraction/index.html new file mode 100644 index 00000000..6783939b --- /dev/null +++ b/docs/build/html/extraction/index.html @@ -0,0 +1,493 @@ + + + + + + + + + Extraction — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    + +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/extraction/utils.html b/docs/build/html/extraction/utils.html new file mode 100644 index 00000000..bf0bb475 --- /dev/null +++ b/docs/build/html/extraction/utils.html @@ -0,0 +1,537 @@ + + + + + + + + + Extraction utils — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    Extraction utils

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    Extraction utils#

    +

    The utilies for extraction are defined cmoncrawl.processor.extraction. +It provides helper function for both filtering and extraction.

    +
    +

    Filtering#

    +
      +
    • must_exist_filter`: filter out the ulrs that don’t contain css selector

    • +
    • must_not_exist_filter: filter out the ulrs that contain css selector

    • +
    +
    +
    +

    Extraction#

    +
    +
    check_required: Creates a function that checks if all the required fileds

    are present in the extracted data

    +
    +
    chain_transform: Creates a function that chains multiple transformation function,

    if any return None, the chain is broken and None is returned. +Especially usefull with soup select etc…

    +
    +
    extract_transform: Creates a function that extracts the data from the soup

    tag using the css selector and transforms it using your transformation functions.

    +
    +
    +
    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.html b/docs/build/html/generated/cmoncrawl.aggregator.html new file mode 100644 index 00000000..17ef94ff --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.html @@ -0,0 +1,484 @@ + + + + + + + + + cmoncrawl.aggregator — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.aggregator

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator#

    +

    Modules

    + ++++ + + + + + + + + +

    cmoncrawl.aggregator.index_query

    cmoncrawl.aggregator.utils

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.__init__.html b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.__init__.html new file mode 100644 index 00000000..d5becc93 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.aggregator.index_query.IndexAggregator.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator.__init__#

    +
    +
    +IndexAggregator.__init__(domains: List[str], cc_indexes_server: str = 'http://index.commoncrawl.org/collinfo.json', cc_servers: List[str] = [], since: datetime = datetime.datetime(1, 1, 1, 0, 0), to: datetime = datetime.datetime(9999, 12, 31, 23, 59, 59, 999999), limit: Optional[int] = None, max_retry: int = 5, prefetch_size: int = 3, sleep_step: int = 20) None#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aclose.html b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aclose.html new file mode 100644 index 00000000..f32ac167 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aclose.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.aggregator.index_query.IndexAggregator.aclose — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator.aclose

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator.aclose#

    +
    +
    +async IndexAggregator.aclose(exc_type: Optional[Type[BaseException]], exc_val: BaseException | None, exc_tb: Optional[TracebackType] = None) IndexAggregator#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aopen.html b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aopen.html new file mode 100644 index 00000000..04a33e93 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.aopen.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.aggregator.index_query.IndexAggregator.aopen — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator.aopen

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator.aopen#

    +
    +
    +async IndexAggregator.aopen() IndexAggregator#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes.html b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes.html new file mode 100644 index 00000000..7d6efd45 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes#

    +
    +
    +async static IndexAggregator.get_all_CC_indexes(client: ClientSession, cdx_server: str) List[str]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses.html b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses.html new file mode 100644 index 00000000..8c70d78d --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses

    + +
    + +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses#

    +
    +
    +async static IndexAggregator.get_captured_responses(client: ClientSession, cdx_server: str, domain: str, max_retry: int, sleep_step: int, page: int, since: datetime = datetime.datetime(1, 1, 1, 0, 0), to: datetime = datetime.datetime(9999, 12, 31, 23, 59, 59, 999999))#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages.html b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages.html new file mode 100644 index 00000000..be5e9c38 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages#

    +
    +
    +async static IndexAggregator.get_number_of_pages(client: ClientSession, cdx_server: str, domain: str, max_retry: int, sleep_step: int, page_size: Optional[int] = None)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.html b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.html new file mode 100644 index 00000000..a1769074 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.index_query.IndexAggregator.html @@ -0,0 +1,573 @@ + + + + + + + + + cmoncrawl.aggregator.index_query.IndexAggregator — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator

    + +
    + +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.index_query.IndexAggregator#

    +
    +
    +class cmoncrawl.aggregator.index_query.IndexAggregator(domains: List[str], cc_indexes_server: str = 'http://index.commoncrawl.org/collinfo.json', cc_servers: List[str] = [], since: datetime = datetime.datetime(1, 1, 1, 0, 0), to: datetime = datetime.datetime(9999, 12, 31, 23, 59, 59, 999999), limit: Optional[int] = None, max_retry: int = 5, prefetch_size: int = 3, sleep_step: int = 20)#
    +
    +
    +__init__(domains: List[str], cc_indexes_server: str = 'http://index.commoncrawl.org/collinfo.json', cc_servers: List[str] = [], since: datetime = datetime.datetime(1, 1, 1, 0, 0), to: datetime = datetime.datetime(9999, 12, 31, 23, 59, 59, 999999), limit: Optional[int] = None, max_retry: int = 5, prefetch_size: int = 3, sleep_step: int = 20) None#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + + + + +

    __init__(domains[, cc_indexes_server, ...])

    aclose(exc_type, exc_val[, exc_tb])

    aopen()

    get_all_CC_indexes(client, cdx_server)

    get_captured_responses(client, cdx_server, ...)

    get_number_of_pages(client, cdx_server, ...)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.index_query.html b/docs/build/html/generated/cmoncrawl.aggregator.index_query.html new file mode 100644 index 00000000..50a2ad17 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.index_query.html @@ -0,0 +1,499 @@ + + + + + + + + + cmoncrawl.aggregator.index_query — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.aggregator.index_query

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.index_query#

    +

    Functions

    + ++++ + + + + + + + + + + + +

    crawl_to_year(crawl)

    timestamp_to_datetime(timestamp)

    to_timestamp_format(date)

    +

    Classes

    + ++++ + + + + + +

    IndexAggregator(domains[, ...])

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.utils.helpers.html b/docs/build/html/generated/cmoncrawl.aggregator.utils.helpers.html new file mode 100644 index 00000000..6731d0cc --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.utils.helpers.html @@ -0,0 +1,481 @@ + + + + + + + + + cmoncrawl.aggregator.utils.helpers — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.aggregator.utils.helpers

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.utils.helpers#

    +

    Functions

    + ++++ + + + + + +

    unify_url_id(url)

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.utils.html b/docs/build/html/generated/cmoncrawl.aggregator.utils.html new file mode 100644 index 00000000..205b12d2 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.utils.html @@ -0,0 +1,484 @@ + + + + + + + + + cmoncrawl.aggregator.utils — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.aggregator.utils

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.utils#

    +

    Modules

    + ++++ + + + + + + + + +

    cmoncrawl.aggregator.utils.helpers

    cmoncrawl.aggregator.utils.ndjson_decoder

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__.html b/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__.html new file mode 100644 index 00000000..79f3e82d --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__.html @@ -0,0 +1,545 @@ + + + + + + + + + cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__#

    +
    +
    +Decoder.__init__(*, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None)#
    +

    object_hook, if specified, will be called with the result +of every JSON object decoded and its return value will be used in +place of the given dict. This can be used to provide custom +deserializations (e.g. to support JSON-RPC class hinting).

    +

    object_pairs_hook, if specified will be called with the result of +every JSON object decoded with an ordered list of pairs. The return +value of object_pairs_hook will be used instead of the dict. +This feature can be used to implement custom decoders. +If object_hook is also defined, the object_pairs_hook takes +priority.

    +

    parse_float, if specified, will be called with the string +of every JSON float to be decoded. By default this is equivalent to +float(num_str). This can be used to use another datatype or parser +for JSON floats (e.g. decimal.Decimal).

    +

    parse_int, if specified, will be called with the string +of every JSON int to be decoded. By default this is equivalent to +int(num_str). This can be used to use another datatype or parser +for JSON integers (e.g. float).

    +

    parse_constant, if specified, will be called with one of the +following strings: -Infinity, Infinity, NaN. +This can be used to raise an exception if invalid JSON numbers +are encountered.

    +

    If strict is false (true is the default), then control +characters will be allowed inside strings. Control characters in +this context are those with character codes in the 0-31 range, +including '\t' (tab), '\n', '\r' and '\0'.

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode.html b/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode.html new file mode 100644 index 00000000..efa625df --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode.html @@ -0,0 +1,521 @@ + + + + + + + + + cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode#

    +
    +
    +Decoder.decode(s: str, *args, **kwargs)#
    +

    Return the Python representation of s (a str instance +containing a JSON document).

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.html b/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.html new file mode 100644 index 00000000..ff13ec24 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.html @@ -0,0 +1,590 @@ + + + + + + + + + cmoncrawl.aggregator.utils.ndjson_decoder.Decoder — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.aggregator.utils.ndjson_decoder.Decoder

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.utils.ndjson_decoder.Decoder#

    +
    +
    +class cmoncrawl.aggregator.utils.ndjson_decoder.Decoder(*, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None)#
    +
    +
    +__init__(*, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None)#
    +

    object_hook, if specified, will be called with the result +of every JSON object decoded and its return value will be used in +place of the given dict. This can be used to provide custom +deserializations (e.g. to support JSON-RPC class hinting).

    +

    object_pairs_hook, if specified will be called with the result of +every JSON object decoded with an ordered list of pairs. The return +value of object_pairs_hook will be used instead of the dict. +This feature can be used to implement custom decoders. +If object_hook is also defined, the object_pairs_hook takes +priority.

    +

    parse_float, if specified, will be called with the string +of every JSON float to be decoded. By default this is equivalent to +float(num_str). This can be used to use another datatype or parser +for JSON floats (e.g. decimal.Decimal).

    +

    parse_int, if specified, will be called with the string +of every JSON int to be decoded. By default this is equivalent to +int(num_str). This can be used to use another datatype or parser +for JSON integers (e.g. float).

    +

    parse_constant, if specified, will be called with one of the +following strings: -Infinity, Infinity, NaN. +This can be used to raise an exception if invalid JSON numbers +are encountered.

    +

    If strict is false (true is the default), then control +characters will be allowed inside strings. Control characters in +this context are those with character codes in the 0-31 range, +including '\t' (tab), '\n', '\r' and '\0'.

    +
    + +

    Methods

    + ++++ + + + + + + + + + + + +

    __init__(*[, object_hook, parse_float, ...])

    object_hook, if specified, will be called with the result of every JSON object decoded and its return value will be used in place of the given dict.

    decode(s, *args, **kwargs)

    Return the Python representation of s (a str instance containing a JSON document).

    raw_decode(s[, idx])

    Decode a JSON document from s (a str beginning with a JSON document) and return a 2-tuple of the Python representation and the index in s where the document ended.

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode.html b/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode.html new file mode 100644 index 00000000..ebd04aed --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode.html @@ -0,0 +1,524 @@ + + + + + + + + + cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode#

    +
    +
    +Decoder.raw_decode(s, idx=0)#
    +

    Decode a JSON document from s (a str beginning with +a JSON document) and return a 2-tuple of the Python +representation and the index in s where the document ended.

    +

    This can be used to decode a JSON document from a string that may +have extraneous data at the end.

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.html b/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.html new file mode 100644 index 00000000..7f7dc581 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.aggregator.utils.ndjson_decoder.html @@ -0,0 +1,481 @@ + + + + + + + + + cmoncrawl.aggregator.utils.ndjson_decoder — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.aggregator.utils.ndjson_decoder

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.aggregator.utils.ndjson_decoder#

    +

    Classes

    + ++++ + + + + + +

    Decoder(*[, object_hook, parse_float, ...])

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.html b/docs/build/html/generated/cmoncrawl.common.html new file mode 100644 index 00000000..338fb178 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.html @@ -0,0 +1,484 @@ + + + + + + + + + cmoncrawl.common — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.common

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common#

    +

    Modules

    + ++++ + + + + + + + + +

    cmoncrawl.common.loggers

    cmoncrawl.common.types

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.loggers.html b/docs/build/html/generated/cmoncrawl.common.loggers.html new file mode 100644 index 00000000..f23441f8 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.loggers.html @@ -0,0 +1,469 @@ + + + + + + + + + cmoncrawl.common.loggers — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.common.loggers

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.loggers#

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.DomainCrawl.__init__.html b/docs/build/html/generated/cmoncrawl.common.types.DomainCrawl.__init__.html new file mode 100644 index 00000000..b9a0241f --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.DomainCrawl.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.DomainCrawl.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.DomainCrawl.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.DomainCrawl.__init__#

    +
    +
    +DomainCrawl.__init__(domain: str = '', cdx_server: str = '', page: int = 0) None#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.DomainCrawl.html b/docs/build/html/generated/cmoncrawl.common.types.DomainCrawl.html new file mode 100644 index 00000000..946f4997 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.DomainCrawl.html @@ -0,0 +1,576 @@ + + + + + + + + + cmoncrawl.common.types.DomainCrawl — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.DomainCrawl

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.DomainCrawl#

    +
    +
    +class cmoncrawl.common.types.DomainCrawl(domain: str = '', cdx_server: str = '', page: int = 0)#
    +
    +
    +__init__(domain: str = '', cdx_server: str = '', page: int = 0) None#
    +
    + +

    Methods

    + ++++ + + + + + +

    __init__([domain, cdx_server, page])

    +

    Attributes

    + ++++ + + + + + + + + + + + +

    cdx_server

    domain

    page

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.__init__.html b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.__init__.html new file mode 100644 index 00000000..508f1dd0 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.DomainRecord.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.DomainRecord.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.DomainRecord.__init__#

    +
    +
    +DomainRecord.__init__(filename: str, url: str | None, offset: int, length: int, digest: Optional[str] = None, encoding: Optional[str] = None, timestamp: Optional[datetime] = None) None#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.from_dict.html b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.from_dict.html new file mode 100644 index 00000000..fa3ee73a --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.from_dict.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.DomainRecord.from_dict — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.DomainRecord.from_dict

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.DomainRecord.from_dict#

    +
    +
    +classmethod DomainRecord.from_dict(kvs: Optional[Union[dict, list, str, int, float, bool]], *, infer_missing=False) A#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.from_json.html b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.from_json.html new file mode 100644 index 00000000..77474be2 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.from_json.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.DomainRecord.from_json — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.DomainRecord.from_json

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.DomainRecord.from_json#

    +
    +
    +classmethod DomainRecord.from_json(s: Union[str, bytes, bytearray], *, parse_float=None, parse_int=None, parse_constant=None, infer_missing=False, **kw) A#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.html b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.html new file mode 100644 index 00000000..ee52ad63 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.html @@ -0,0 +1,603 @@ + + + + + + + + + cmoncrawl.common.types.DomainRecord — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.common.types.DomainRecord

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.DomainRecord#

    +
    +
    +class cmoncrawl.common.types.DomainRecord(filename: str, url: str | None, offset: int, length: int, digest: str | None = None, encoding: str | None = None, timestamp: datetime.datetime | None = None)#
    +
    +
    +__init__(filename: str, url: str | None, offset: int, length: int, digest: Optional[str] = None, encoding: Optional[str] = None, timestamp: Optional[datetime] = None) None#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + + + + +

    __init__(filename, url, offset, length[, ...])

    from_dict(kvs, *[, infer_missing])

    from_json(s, *[, parse_float, parse_int, ...])

    schema(*[, infer_missing, only, exclude, ...])

    to_dict([encode_json])

    to_json(*[, skipkeys, ensure_ascii, ...])

    +

    Attributes

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + +

    digest

    encoding

    timestamp

    filename

    url

    offset

    length

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.schema.html b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.schema.html new file mode 100644 index 00000000..37c71eea --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.schema.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.DomainRecord.schema — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.DomainRecord.schema

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.DomainRecord.schema#

    +
    +
    +classmethod DomainRecord.schema(*, infer_missing: bool = False, only=None, exclude=(), many: bool = False, context=None, load_only=(), dump_only=(), partial: bool = False, unknown=None) SchemaF[A]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.to_dict.html b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.to_dict.html new file mode 100644 index 00000000..f583c047 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.to_dict.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.DomainRecord.to_dict — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.DomainRecord.to_dict

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.DomainRecord.to_dict#

    +
    +
    +DomainRecord.to_dict(encode_json=False) Dict[str, Optional[Union[dict, list, str, int, float, bool]]]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.to_json.html b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.to_json.html new file mode 100644 index 00000000..93a25bea --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.DomainRecord.to_json.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.DomainRecord.to_json — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.DomainRecord.to_json

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.DomainRecord.to_json#

    +
    +
    +DomainRecord.to_json(*, skipkeys: bool = False, ensure_ascii: bool = True, check_circular: bool = True, allow_nan: bool = True, indent: Optional[Union[int, str]] = None, separators: Optional[Tuple[str, str]] = None, default: Optional[Callable] = None, sort_keys: bool = False, **kw) str#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.__init__.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.__init__.html new file mode 100644 index 00000000..b6d4d3e0 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.ExtractConfig.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractConfig.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractConfig.__init__#

    +
    +
    +ExtractConfig.__init__(extractors_path: Path, routes: List[RoutesConfig]) None#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.from_dict.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.from_dict.html new file mode 100644 index 00000000..c7dc7ed8 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.from_dict.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.ExtractConfig.from_dict — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractConfig.from_dict

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractConfig.from_dict#

    +
    +
    +classmethod ExtractConfig.from_dict(kvs: Optional[Union[dict, list, str, int, float, bool]], *, infer_missing=False) A#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.from_json.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.from_json.html new file mode 100644 index 00000000..d63f6b5f --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.from_json.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.ExtractConfig.from_json — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractConfig.from_json

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractConfig.from_json#

    +
    +
    +classmethod ExtractConfig.from_json(s: Union[str, bytes, bytearray], *, parse_float=None, parse_int=None, parse_constant=None, infer_missing=False, **kw) A#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.html new file mode 100644 index 00000000..0c80a102 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.html @@ -0,0 +1,589 @@ + + + + + + + + + cmoncrawl.common.types.ExtractConfig — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractConfig

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractConfig#

    +
    +
    +class cmoncrawl.common.types.ExtractConfig(extractors_path: Path, routes: List[RoutesConfig])#
    +

    Configuration for run.

    +
    +
    +__init__(extractors_path: Path, routes: List[RoutesConfig]) None#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + + + + +

    __init__(extractors_path, routes)

    from_dict(kvs, *[, infer_missing])

    from_json(s, *[, parse_float, parse_int, ...])

    schema(*[, infer_missing, only, exclude, ...])

    to_dict([encode_json])

    to_json(*[, skipkeys, ensure_ascii, ...])

    +

    Attributes

    + ++++ + + + + + + + + +

    extractors_path

    routes

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.schema.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.schema.html new file mode 100644 index 00000000..88476c16 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.schema.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.ExtractConfig.schema — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractConfig.schema

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractConfig.schema#

    +
    +
    +classmethod ExtractConfig.schema(*, infer_missing: bool = False, only=None, exclude=(), many: bool = False, context=None, load_only=(), dump_only=(), partial: bool = False, unknown=None) SchemaF[A]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.to_dict.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.to_dict.html new file mode 100644 index 00000000..5d1e41fa --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.to_dict.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.ExtractConfig.to_dict — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractConfig.to_dict

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractConfig.to_dict#

    +
    +
    +ExtractConfig.to_dict(encode_json=False) Dict[str, Optional[Union[dict, list, str, int, float, bool]]]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.to_json.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.to_json.html new file mode 100644 index 00000000..07b7603a --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractConfig.to_json.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.ExtractConfig.to_json — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractConfig.to_json

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractConfig.to_json#

    +
    +
    +ExtractConfig.to_json(*, skipkeys: bool = False, ensure_ascii: bool = True, check_circular: bool = True, allow_nan: bool = True, indent: Optional[Union[int, str]] = None, separators: Optional[Tuple[str, str]] = None, default: Optional[Callable] = None, sort_keys: bool = False, **kw) str#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.__init__.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.__init__.html new file mode 100644 index 00000000..ec05dbff --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.ExtractorConfig.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig.__init__#

    +
    +
    +ExtractorConfig.__init__(name: str, since: Optional[datetime] = None, to: Optional[datetime] = None) None#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.from_dict.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.from_dict.html new file mode 100644 index 00000000..cbec99df --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.from_dict.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.ExtractorConfig.from_dict — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig.from_dict

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig.from_dict#

    +
    +
    +classmethod ExtractorConfig.from_dict(kvs: Optional[Union[dict, list, str, int, float, bool]], *, infer_missing=False) A#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.from_json.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.from_json.html new file mode 100644 index 00000000..99d182ea --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.from_json.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.ExtractorConfig.from_json — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig.from_json

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig.from_json#

    +
    +
    +classmethod ExtractorConfig.from_json(s: Union[str, bytes, bytearray], *, parse_float=None, parse_int=None, parse_constant=None, infer_missing=False, **kw) A#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.html new file mode 100644 index 00000000..735e206c --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.html @@ -0,0 +1,592 @@ + + + + + + + + + cmoncrawl.common.types.ExtractorConfig — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig

    + +
    + +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig#

    +
    +
    +class cmoncrawl.common.types.ExtractorConfig(name: str, since: Optional[datetime] = None, to: Optional[datetime] = None)#
    +

    Configuration for extractor.

    +
    +
    +__init__(name: str, since: Optional[datetime] = None, to: Optional[datetime] = None) None#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + + + + +

    __init__(name[, since, to])

    from_dict(kvs, *[, infer_missing])

    from_json(s, *[, parse_float, parse_int, ...])

    schema(*[, infer_missing, only, exclude, ...])

    to_dict([encode_json])

    to_json(*[, skipkeys, ensure_ascii, ...])

    +

    Attributes

    + ++++ + + + + + + + + + + + +

    since

    to

    name

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.schema.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.schema.html new file mode 100644 index 00000000..4119ce4e --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.schema.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.ExtractorConfig.schema — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig.schema

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig.schema#

    +
    +
    +classmethod ExtractorConfig.schema(*, infer_missing: bool = False, only=None, exclude=(), many: bool = False, context=None, load_only=(), dump_only=(), partial: bool = False, unknown=None) SchemaF[A]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.to_dict.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.to_dict.html new file mode 100644 index 00000000..c8da41e8 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.to_dict.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.ExtractorConfig.to_dict — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig.to_dict

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig.to_dict#

    +
    +
    +ExtractorConfig.to_dict(encode_json=False) Dict[str, Optional[Union[dict, list, str, int, float, bool]]]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.to_json.html b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.to_json.html new file mode 100644 index 00000000..507ba6ec --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.ExtractorConfig.to_json.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.ExtractorConfig.to_json — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig.to_json

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.ExtractorConfig.to_json#

    +
    +
    +ExtractorConfig.to_json(*, skipkeys: bool = False, ensure_ascii: bool = True, check_circular: bool = True, allow_nan: bool = True, indent: Optional[Union[int, str]] = None, separators: Optional[Tuple[str, str]] = None, default: Optional[Callable] = None, sort_keys: bool = False, **kw) str#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.PipeMetadata.__init__.html b/docs/build/html/generated/cmoncrawl.common.types.PipeMetadata.__init__.html new file mode 100644 index 00000000..9616e705 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.PipeMetadata.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.PipeMetadata.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.PipeMetadata.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.PipeMetadata.__init__#

    +
    +
    +PipeMetadata.__init__(domain_record: ~cmoncrawl.common.types.DomainRecord, article_data: ~typing.Dict[~typing.Any, ~typing.Any] = <factory>, warc_header: ~typing.Dict[str, ~typing.Any] = <factory>, http_header: ~typing.Dict[str, ~typing.Any] = <factory>, encoding: str = 'latin-1', name: ~typing.Optional[str] = None) None#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.PipeMetadata.html b/docs/build/html/generated/cmoncrawl.common.types.PipeMetadata.html new file mode 100644 index 00000000..21dfb608 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.PipeMetadata.html @@ -0,0 +1,586 @@ + + + + + + + + + cmoncrawl.common.types.PipeMetadata — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.common.types.PipeMetadata

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.PipeMetadata#

    +
    +
    +class cmoncrawl.common.types.PipeMetadata(domain_record: ~cmoncrawl.common.types.DomainRecord, article_data: ~typing.Dict[~typing.Any, ~typing.Any] = <factory>, warc_header: ~typing.Dict[str, ~typing.Any] = <factory>, http_header: ~typing.Dict[str, ~typing.Any] = <factory>, encoding: str = 'latin-1', name: ~typing.Optional[str] = None)#
    +

    Metadata for a pipe.

    +
    +
    +__init__(domain_record: ~cmoncrawl.common.types.DomainRecord, article_data: ~typing.Dict[~typing.Any, ~typing.Any] = <factory>, warc_header: ~typing.Dict[str, ~typing.Any] = <factory>, http_header: ~typing.Dict[str, ~typing.Any] = <factory>, encoding: str = 'latin-1', name: ~typing.Optional[str] = None) None#
    +
    + +

    Methods

    + ++++ + + + + + +

    __init__(domain_record[, article_data, ...])

    +

    Attributes

    + ++++ + + + + + + + + + + + + + + + + + + + + +

    encoding

    name

    domain_record

    article_data

    warc_header

    http_header

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.RetrieveResponse.__init__.html b/docs/build/html/generated/cmoncrawl.common.types.RetrieveResponse.__init__.html new file mode 100644 index 00000000..1e5c9af7 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.RetrieveResponse.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.RetrieveResponse.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.RetrieveResponse.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.RetrieveResponse.__init__#

    +
    +
    +RetrieveResponse.__init__(status: int, content: Any, reason: None | str) None#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.RetrieveResponse.html b/docs/build/html/generated/cmoncrawl.common.types.RetrieveResponse.html new file mode 100644 index 00000000..a94af50e --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.RetrieveResponse.html @@ -0,0 +1,576 @@ + + + + + + + + + cmoncrawl.common.types.RetrieveResponse — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.common.types.RetrieveResponse

    + +
    + +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.RetrieveResponse#

    +
    +
    +class cmoncrawl.common.types.RetrieveResponse(status: int, content: Any, reason: None | str)#
    +
    +
    +__init__(status: int, content: Any, reason: None | str) None#
    +
    + +

    Methods

    + ++++ + + + + + +

    __init__(status, content, reason)

    +

    Attributes

    + ++++ + + + + + + + + + + + +

    status

    content

    reason

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.__init__.html b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.__init__.html new file mode 100644 index 00000000..299d5545 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.RoutesConfig.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.RoutesConfig.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.RoutesConfig.__init__#

    +
    +
    +RoutesConfig.__init__(regexes: list[str] = <factory>, extractors: list[cmoncrawl.common.types.ExtractorConfig] = <factory>) None#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.from_dict.html b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.from_dict.html new file mode 100644 index 00000000..0601124b --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.from_dict.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.RoutesConfig.from_dict — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.RoutesConfig.from_dict

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.RoutesConfig.from_dict#

    +
    +
    +classmethod RoutesConfig.from_dict(kvs: Optional[Union[dict, list, str, int, float, bool]], *, infer_missing=False) A#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.from_json.html b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.from_json.html new file mode 100644 index 00000000..b2adc9a5 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.from_json.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.RoutesConfig.from_json — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.RoutesConfig.from_json

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.RoutesConfig.from_json#

    +
    +
    +classmethod RoutesConfig.from_json(s: Union[str, bytes, bytearray], *, parse_float=None, parse_int=None, parse_constant=None, infer_missing=False, **kw) A#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.html b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.html new file mode 100644 index 00000000..252772b9 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.html @@ -0,0 +1,589 @@ + + + + + + + + + cmoncrawl.common.types.RoutesConfig — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.common.types.RoutesConfig

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.RoutesConfig#

    +
    +
    +class cmoncrawl.common.types.RoutesConfig(regexes: list[str] = <factory>, extractors: list[cmoncrawl.common.types.ExtractorConfig] = <factory>)#
    +

    Configuration for extractors.

    +
    +
    +__init__(regexes: list[str] = <factory>, extractors: list[cmoncrawl.common.types.ExtractorConfig] = <factory>) None#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + + + + +

    __init__([regexes, extractors])

    from_dict(kvs, *[, infer_missing])

    from_json(s, *[, parse_float, parse_int, ...])

    schema(*[, infer_missing, only, exclude, ...])

    to_dict([encode_json])

    to_json(*[, skipkeys, ensure_ascii, ...])

    +

    Attributes

    + ++++ + + + + + + + + +

    regexes

    extractors

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.schema.html b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.schema.html new file mode 100644 index 00000000..ec348b16 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.schema.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.RoutesConfig.schema — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.RoutesConfig.schema

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.RoutesConfig.schema#

    +
    +
    +classmethod RoutesConfig.schema(*, infer_missing: bool = False, only=None, exclude=(), many: bool = False, context=None, load_only=(), dump_only=(), partial: bool = False, unknown=None) SchemaF[A]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.to_dict.html b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.to_dict.html new file mode 100644 index 00000000..4072ec99 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.to_dict.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.RoutesConfig.to_dict — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.RoutesConfig.to_dict

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.RoutesConfig.to_dict#

    +
    +
    +RoutesConfig.to_dict(encode_json=False) Dict[str, Optional[Union[dict, list, str, int, float, bool]]]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.to_json.html b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.to_json.html new file mode 100644 index 00000000..b54e197a --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.RoutesConfig.to_json.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.common.types.RoutesConfig.to_json — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types.RoutesConfig.to_json

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types.RoutesConfig.to_json#

    +
    +
    +RoutesConfig.to_json(*, skipkeys: bool = False, ensure_ascii: bool = True, check_circular: bool = True, allow_nan: bool = True, indent: Optional[Union[int, str]] = None, separators: Optional[Tuple[str, str]] = None, default: Optional[Callable] = None, sort_keys: bool = False, **kw) str#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.common.types.html b/docs/build/html/generated/cmoncrawl.common.types.html new file mode 100644 index 00000000..1e75b549 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.common.types.html @@ -0,0 +1,499 @@ + + + + + + + + + cmoncrawl.common.types — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.common.types

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.common.types#

    +

    Classes

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + +

    DomainCrawl([domain, cdx_server, page])

    DomainRecord(filename, url, offset, length)

    ExtractConfig(extractors_path, routes)

    Configuration for run.

    ExtractorConfig(name[, since, to])

    Configuration for extractor.

    PipeMetadata(domain_record, article_data, ...)

    Metadata for a pipe.

    RetrieveResponse(status, content, reason)

    RoutesConfig(regexes, extractors)

    Configuration for extractors.

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.html b/docs/build/html/generated/cmoncrawl.html new file mode 100644 index 00000000..08614bdf --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.html @@ -0,0 +1,487 @@ + + + + + + + + + cmoncrawl — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl#

    +

    Modules

    + ++++ + + + + + + + + + + + +

    cmoncrawl.aggregator

    cmoncrawl.common

    cmoncrawl.processor

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.extraction.filters.html b/docs/build/html/generated/cmoncrawl.processor.extraction.filters.html new file mode 100644 index 00000000..83d937ff --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.extraction.filters.html @@ -0,0 +1,484 @@ + + + + + + + + + cmoncrawl.processor.extraction.filters — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.extraction.filters

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.extraction.filters#

    +

    Functions

    + ++++ + + + + + + + + +

    must_exist_filter(soup, filter_list)

    This function takes in a BeautifulSoup object and a list of CSS selectors.

    must_not_exist_filter(soup, filter_list)

    This function takes in a BeautifulSoup object and a list of CSS selectors.

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.extraction.html b/docs/build/html/generated/cmoncrawl.processor.extraction.html new file mode 100644 index 00000000..ea9fced2 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.extraction.html @@ -0,0 +1,484 @@ + + + + + + + + + cmoncrawl.processor.extraction — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.extraction

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.extraction#

    +

    Modules

    + ++++ + + + + + + + + +

    cmoncrawl.processor.extraction.filters

    cmoncrawl.processor.extraction.utils

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.extraction.utils.html b/docs/build/html/generated/cmoncrawl.processor.extraction.utils.html new file mode 100644 index 00000000..4fe7c175 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.extraction.utils.html @@ -0,0 +1,511 @@ + + + + + + + + + cmoncrawl.processor.extraction.utils — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.extraction.utils

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.extraction.utils#

    +

    Functions

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    all_same_transform(dict, fc)

    chain_transforms(trans)

    check_required(required_fields, extractor_name)

    combine_dicts(dicts)

    extract_transform(tag, extract_dict, ...)

    get_attribute_transform(attr_name)

    get_tag_transform(tag_desc)

    get_tags_transform(tag_desc)

    get_text_list_transform([sep])

    get_text_transform(tag[, recursive])

    transform(dict, transforms)

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.html b/docs/build/html/generated/cmoncrawl.processor.html new file mode 100644 index 00000000..2f05fb6a --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.html @@ -0,0 +1,484 @@ + + + + + + + + + cmoncrawl.processor — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.processor

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor#

    +

    Modules

    + ++++ + + + + + + + + +

    cmoncrawl.processor.extraction

    cmoncrawl.processor.pipeline

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__.html new file mode 100644 index 00000000..9ef1b5b6 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__#

    +
    +
    +AsyncDownloader.__init__(base_url: str = 'https://data.commoncrawl.org/', digest_verification: bool = True, max_retry: int = 5, sleep_step: int = 10, encoding: str = 'latin-1')#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose.html new file mode 100644 index 00000000..4c42f287 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose#

    +
    +
    +async AsyncDownloader.aclose(exc_type: Optional[Type[BaseException]], exc_val: BaseException | None, exc_tb: Optional[TracebackType] = None) IDownloader#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen.html new file mode 100644 index 00000000..491d6760 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen#

    +
    +
    +async AsyncDownloader.aopen() AsyncDownloader#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download.html new file mode 100644 index 00000000..b2db5e7e --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download#

    +
    +
    +async AsyncDownloader.download(domain_record: DomainRecord)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.html new file mode 100644 index 00000000..d81f1815 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.html @@ -0,0 +1,570 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.AsyncDownloader — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.AsyncDownloader

    + +
    + +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.AsyncDownloader#

    +
    +
    +class cmoncrawl.processor.pipeline.downloader.AsyncDownloader(base_url: str = 'https://data.commoncrawl.org/', digest_verification: bool = True, max_retry: int = 5, sleep_step: int = 10, encoding: str = 'latin-1')#
    +
    +
    +__init__(base_url: str = 'https://data.commoncrawl.org/', digest_verification: bool = True, max_retry: int = 5, sleep_step: int = 10, encoding: str = 'latin-1')#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + +

    __init__([base_url, digest_verification, ...])

    aclose(exc_type, exc_val[, exc_tb])

    aopen()

    download(domain_record)

    unwrap(response, domain_record)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap.html new file mode 100644 index 00000000..481c5502 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap#

    +
    +
    +AsyncDownloader.unwrap(response: bytes, domain_record: DomainRecord) List[Tuple[str, PipeMetadata]]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__.html new file mode 100644 index 00000000..72f4c750 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__#

    +
    +
    +DownloaderDummy.__init__(files: List[Path], url: Optional[str] = None, date: Optional[datetime] = None)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download.html new file mode 100644 index 00000000..bbc1e056 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download#

    +
    +
    +async DownloaderDummy.download(domain_record: DomainRecord)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url.html new file mode 100644 index 00000000..84cd6ed2 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url#

    +
    +
    +DownloaderDummy.extract_url(content: BeautifulSoup)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year.html new file mode 100644 index 00000000..823adb37 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year#

    +
    +
    +DownloaderDummy.extract_year(file_path: Path)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.html new file mode 100644 index 00000000..83654aa4 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.html @@ -0,0 +1,573 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.DownloaderDummy — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.DownloaderDummy

    + +
    + +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.DownloaderDummy#

    +
    +
    +class cmoncrawl.processor.pipeline.downloader.DownloaderDummy(files: List[Path], url: Optional[str] = None, date: Optional[datetime] = None)#
    +

    Dummy downloader for testing +It doesn’t download anything but return files passed in the constructor +and extracts metadata from the file

    +
    +
    +__init__(files: List[Path], url: Optional[str] = None, date: Optional[datetime] = None)#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + +

    __init__(files[, url, date])

    download(domain_record)

    extract_url(content)

    extract_year(file_path)

    mine_metadata(content, file_path)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata.html new file mode 100644 index 00000000..16c39bdd --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata#

    +
    +
    +DownloaderDummy.mine_metadata(content: str, file_path: Path)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.__init__.html new file mode 100644 index 00000000..d5253fe8 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.IDownloader.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.IDownloader.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.IDownloader.__init__#

    +
    +
    +IDownloader.__init__()#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.download.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.download.html new file mode 100644 index 00000000..5ccadcd1 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.download.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.IDownloader.download — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.IDownloader.download

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.IDownloader.download#

    +
    +
    +async IDownloader.download(domain_record: DomainRecord) List[Tuple[str, PipeMetadata]]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.html new file mode 100644 index 00000000..bfad07e3 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.IDownloader.html @@ -0,0 +1,561 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader.IDownloader — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.IDownloader

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader.IDownloader#

    +
    +
    +class cmoncrawl.processor.pipeline.downloader.IDownloader#
    +
    +
    +__init__()#
    +
    + +

    Methods

    + ++++ + + + + + + + + +

    __init__()

    download(domain_record)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.html new file mode 100644 index 00000000..01143f55 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.downloader.html @@ -0,0 +1,487 @@ + + + + + + + + + cmoncrawl.processor.pipeline.downloader — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.downloader

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.downloader#

    +

    Classes

    + ++++ + + + + + + + + + + + +

    AsyncDownloader([base_url, ...])

    DownloaderDummy(files[, url, date])

    Dummy downloader for testing It doesn't download anything but return files passed in the constructor and extracts metadata from the file

    IDownloader()

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__.html new file mode 100644 index 00000000..cc1d0167 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__#

    +
    +
    +BaseExtractor.__init__(encoding: Optional[str] = None)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract.html new file mode 100644 index 00000000..83bc1602 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract#

    +
    +
    +BaseExtractor.extract(response: str, metadata: PipeMetadata) Optional[Dict[str, Any]]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup.html new file mode 100644 index 00000000..72450446 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup#

    +
    +
    +abstract BaseExtractor.extract_soup(soup: BeautifulSoup, metadata: PipeMetadata) Optional[Dict[str, Any]]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw.html new file mode 100644 index 00000000..cff07f5d --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw#

    +
    +
    +BaseExtractor.filter_raw(response: str, metadata: PipeMetadata) bool#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup.html new file mode 100644 index 00000000..6ff9c6af --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup#

    +
    +
    +BaseExtractor.filter_soup(soup: BeautifulSoup, metadata: PipeMetadata) bool#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.html new file mode 100644 index 00000000..70708e94 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.html @@ -0,0 +1,573 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.BaseExtractor — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor#

    +
    +
    +class cmoncrawl.processor.pipeline.extractor.BaseExtractor(encoding: Optional[str] = None)#
    +
    +
    +__init__(encoding: Optional[str] = None)#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + + + + +

    __init__([encoding])

    extract(response, metadata)

    extract_soup(soup, metadata)

    filter_raw(response, metadata)

    filter_soup(soup, metadata)

    preprocess(response, metadata)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess.html new file mode 100644 index 00000000..71e41bad --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess#

    +
    +
    +BaseExtractor.preprocess(response: str, metadata: PipeMetadata) str#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__.html new file mode 100644 index 00000000..09c074cf --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__#

    +
    +
    +DomainRecordExtractor.__init__(filter_non_ok: bool = True)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract.html new file mode 100644 index 00000000..d8872af8 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract#

    +
    +
    +DomainRecordExtractor.extract(response: str, metadata: PipeMetadata) Optional[Dict[str, Any]]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup.html new file mode 100644 index 00000000..c10345fd --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup#

    +
    +
    +DomainRecordExtractor.extract_soup(soup: BeautifulSoup, metadata: PipeMetadata)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw.html new file mode 100644 index 00000000..8c6b4cf5 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw#

    +
    +
    +DomainRecordExtractor.filter_raw(response: str, metadata: PipeMetadata)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup.html new file mode 100644 index 00000000..9c4789a8 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup#

    +
    +
    +DomainRecordExtractor.filter_soup(soup: BeautifulSoup, metadata: PipeMetadata) bool#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.html new file mode 100644 index 00000000..5046f924 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.html @@ -0,0 +1,574 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor

    + +
    + +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor#

    +
    +
    +class cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor(filter_non_ok: bool = True)#
    +

    Dummy Extractor which simply extracts the html

    +
    +
    +__init__(filter_non_ok: bool = True)#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + + + + +

    __init__([filter_non_ok])

    extract(response, metadata)

    extract_soup(soup, metadata)

    filter_raw(response, metadata)

    filter_soup(soup, metadata)

    preprocess(response, metadata)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess.html new file mode 100644 index 00000000..0ffce529 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess#

    +
    +
    +DomainRecordExtractor.preprocess(response: str, metadata: PipeMetadata) str#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__.html new file mode 100644 index 00000000..182f1ab7 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__#

    +
    +
    +HTMLExtractor.__init__(filter_non_ok: bool = True)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract.html new file mode 100644 index 00000000..3afc3769 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract#

    +
    +
    +HTMLExtractor.extract(response: str, metadata: PipeMetadata) Optional[Dict[str, Any]]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup.html new file mode 100644 index 00000000..3b1a11e0 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup#

    +
    +
    +HTMLExtractor.extract_soup(soup: BeautifulSoup, metadata: PipeMetadata)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw.html new file mode 100644 index 00000000..a51c95d8 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw#

    +
    +
    +HTMLExtractor.filter_raw(response: str, metadata: PipeMetadata)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup.html new file mode 100644 index 00000000..bae2c70a --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup#

    +
    +
    +HTMLExtractor.filter_soup(soup: BeautifulSoup, metadata: PipeMetadata) bool#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.html new file mode 100644 index 00000000..6202602d --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.html @@ -0,0 +1,574 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.HTMLExtractor — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor#

    +
    +
    +class cmoncrawl.processor.pipeline.extractor.HTMLExtractor(filter_non_ok: bool = True)#
    +

    Dummy Extractor which simply extracts the html

    +
    +
    +__init__(filter_non_ok: bool = True)#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + + + + +

    __init__([filter_non_ok])

    extract(response, metadata)

    extract_soup(soup, metadata)

    filter_raw(response, metadata)

    filter_soup(soup, metadata)

    preprocess(response, metadata)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess.html new file mode 100644 index 00000000..ffb49a2f --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess#

    +
    +
    +HTMLExtractor.preprocess(response: str, metadata: PipeMetadata) str#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.__init__.html new file mode 100644 index 00000000..4c295575 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.IExtractor.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.IExtractor.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.IExtractor.__init__#

    +
    +
    +IExtractor.__init__()#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.extract.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.extract.html new file mode 100644 index 00000000..917b7f02 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.extract.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.IExtractor.extract — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.IExtractor.extract

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.IExtractor.extract#

    +
    +
    +abstract IExtractor.extract(response: str, metadata: PipeMetadata) Optional[Dict[str, Any]]#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.html new file mode 100644 index 00000000..d1940371 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.IExtractor.html @@ -0,0 +1,561 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor.IExtractor — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.IExtractor

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor.IExtractor#

    +
    +
    +class cmoncrawl.processor.pipeline.extractor.IExtractor#
    +
    +
    +__init__()#
    +
    + +

    Methods

    + ++++ + + + + + + + + +

    __init__()

    extract(response, metadata)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.html new file mode 100644 index 00000000..9afd535e --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.extractor.html @@ -0,0 +1,490 @@ + + + + + + + + + cmoncrawl.processor.pipeline.extractor — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.extractor

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.extractor#

    +

    Classes

    + ++++ + + + + + + + + + + + + + + +

    BaseExtractor([encoding])

    DomainRecordExtractor([filter_non_ok])

    Dummy Extractor which simply extracts the html

    HTMLExtractor([filter_non_ok])

    Dummy Extractor which simply extracts the html

    IExtractor()

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.html new file mode 100644 index 00000000..165ebd4e --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.html @@ -0,0 +1,493 @@ + + + + + + + + + cmoncrawl.processor.pipeline — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    + +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__.html new file mode 100644 index 00000000..5b5bb79a --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__#

    +
    +
    +ProcessorPipeline.__init__(router: IRouter, downloader: IDownloader, outstreamer: IStreamer)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.html new file mode 100644 index 00000000..c3ad39b8 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.html @@ -0,0 +1,561 @@ + + + + + + + + + cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline

    + +
    + +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline#

    +
    +
    +class cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline(router: IRouter, downloader: IDownloader, outstreamer: IStreamer)#
    +
    +
    +__init__(router: IRouter, downloader: IDownloader, outstreamer: IStreamer)#
    +
    + +

    Methods

    + ++++ + + + + + + + + +

    __init__(router, downloader, outstreamer)

    process_domain_record(domain_record, ...)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record.html new file mode 100644 index 00000000..21d7ee8e --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record

    + +
    + +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record#

    +
    +
    +async ProcessorPipeline.process_domain_record(domain_record: DomainRecord, additional_info: Dict[str, Any])#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.html new file mode 100644 index 00000000..161f9f45 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.pipeline.html @@ -0,0 +1,481 @@ + + + + + + + + + cmoncrawl.processor.pipeline.pipeline — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.pipeline

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.pipeline#

    +

    Classes

    + ++++ + + + + + +

    ProcessorPipeline(router, downloader, ...)

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.IRouter.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.IRouter.__init__.html new file mode 100644 index 00000000..d044b6da --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.IRouter.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.IRouter.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.IRouter.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.IRouter.__init__#

    +
    +
    +IRouter.__init__()#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.IRouter.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.IRouter.html new file mode 100644 index 00000000..656f28b4 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.IRouter.html @@ -0,0 +1,561 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.IRouter — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.IRouter

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.IRouter#

    +
    +
    +class cmoncrawl.processor.pipeline.router.IRouter#
    +
    +
    +__init__()#
    +
    + +

    Methods

    + ++++ + + + + + + + + +

    __init__()

    route(url, time, metadata)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.IRouter.route.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.IRouter.route.html new file mode 100644 index 00000000..949a0249 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.IRouter.route.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.IRouter.route — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.IRouter.route

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.IRouter.route#

    +
    +
    +abstract IRouter.route(url: str | None, time: datetime.datetime | None, metadata: PipeMetadata) IExtractor#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Route.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Route.__init__.html new file mode 100644 index 00000000..26495f2e --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Route.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.Route.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.Route.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.Route.__init__#

    +
    +
    +Route.__init__(name: str, regexes: List[Pattern[str]], since: datetime, to: datetime) None#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Route.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Route.html new file mode 100644 index 00000000..2fd6a24d --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Route.html @@ -0,0 +1,579 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.Route — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.Route

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.Route#

    +
    +
    +class cmoncrawl.processor.pipeline.router.Route(name: str, regexes: List[re.Pattern[str]], since: datetime.datetime, to: datetime.datetime)#
    +
    +
    +__init__(name: str, regexes: List[Pattern[str]], since: datetime, to: datetime) None#
    +
    + +

    Methods

    + ++++ + + + + + +

    __init__(name, regexes, since, to)

    +

    Attributes

    + ++++ + + + + + + + + + + + + + + +

    name

    regexes

    since

    to

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.__init__.html new file mode 100644 index 00000000..b7ba5f6d --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.Router.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.__init__#

    +
    +
    +Router.__init__()#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.html new file mode 100644 index 00000000..ff996fb2 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.html @@ -0,0 +1,579 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.Router — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router#

    +
    +
    +class cmoncrawl.processor.pipeline.router.Router#
    +
    +
    +__init__()#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +

    __init__()

    load_extractor(name, extractor)

    load_module(module_path)

    load_module_as_extractor(module_path)

    load_modules(folder)

    register_route(name, regex[, since, to])

    register_routes(config)

    route(url, time, metadata)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_extractor.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_extractor.html new file mode 100644 index 00000000..2518ae6d --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_extractor.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.Router.load_extractor — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.load_extractor

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.load_extractor#

    +
    +
    +Router.load_extractor(name: str, extractor: IExtractor)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_module.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_module.html new file mode 100644 index 00000000..78860f64 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_module.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.Router.load_module — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.load_module

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.load_module#

    +
    +
    +Router.load_module(module_path: Path)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor.html new file mode 100644 index 00000000..dc054fa8 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor#

    +
    +
    +Router.load_module_as_extractor(module_path: Path)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_modules.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_modules.html new file mode 100644 index 00000000..4efc22bd --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.load_modules.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.Router.load_modules — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.load_modules

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.load_modules#

    +
    +
    +Router.load_modules(folder: Path)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.register_route.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.register_route.html new file mode 100644 index 00000000..bb48e33f --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.register_route.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.Router.register_route — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.register_route

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.register_route#

    +
    +
    +Router.register_route(name: str, regex: Union[str, List[str]], since: Optional[datetime] = None, to: Optional[datetime] = None)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.register_routes.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.register_routes.html new file mode 100644 index 00000000..c8ce61f8 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.register_routes.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.Router.register_routes — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.register_routes

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.register_routes#

    +
    +
    +Router.register_routes(config: List[RoutesConfig])#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.route.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.route.html new file mode 100644 index 00000000..91321e33 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.Router.route.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router.Router.route — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.route

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router.Router.route#

    +
    +
    +Router.route(url: str | None, time: datetime.datetime | None, metadata: PipeMetadata) IExtractor#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.router.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.html new file mode 100644 index 00000000..364dfa4a --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.router.html @@ -0,0 +1,487 @@ + + + + + + + + + cmoncrawl.processor.pipeline.router — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.router

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.router#

    +

    Classes

    + ++++ + + + + + + + + + + + +

    IRouter()

    Route(name, regexes, since, to)

    Router()

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__.html new file mode 100644 index 00000000..535fad30 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__#

    +
    +
    +BaseStreamerFile.__init__(root: Path, max_directory_size: int, max_file_size: int, extension: str, directory_prefix: str = 'directory_', max_retries: int = 3)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up.html new file mode 100644 index 00000000..2fd52f66 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up#

    +
    +
    +async BaseStreamerFile.clean_up() None#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name.html new file mode 100644 index 00000000..cf390bee --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name#

    +
    +
    +BaseStreamerFile.get_file_name(metadata: PipeMetadata)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.html new file mode 100644 index 00000000..6d7f7032 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.html @@ -0,0 +1,571 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.BaseStreamerFile — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.BaseStreamerFile

    + +
    + +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.BaseStreamerFile#

    +
    +
    +class cmoncrawl.processor.pipeline.streamer.BaseStreamerFile(root: Path, max_directory_size: int, max_file_size: int, extension: str, directory_prefix: str = 'directory_', max_retries: int = 3)#
    +

    Abstract Class which defines the basic functionality of a file streamer

    +
    +
    +__init__(root: Path, max_directory_size: int, max_file_size: int, extension: str, directory_prefix: str = 'directory_', max_retries: int = 3)#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + +

    __init__(root, max_directory_size, ...[, ...])

    clean_up()

    get_file_name(metadata)

    metadata_to_string(extracted_data)

    stream(extracted_data, metadata)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string.html new file mode 100644 index 00000000..e91a8024 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string#

    +
    +
    +abstract BaseStreamerFile.metadata_to_string(extracted_data: Dict[Any, Any]) str#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream.html new file mode 100644 index 00000000..176fdddc --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream#

    +
    +
    +async BaseStreamerFile.stream(extracted_data: Dict[Any, Any], metadata: PipeMetadata) Path#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.__init__.html new file mode 100644 index 00000000..e9c1cd25 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.IStreamer.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.IStreamer.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.IStreamer.__init__#

    +
    +
    +IStreamer.__init__()#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up.html new file mode 100644 index 00000000..c3434ec8 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up#

    +
    +
    +abstract async IStreamer.clean_up() None#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.html new file mode 100644 index 00000000..c1b12137 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.html @@ -0,0 +1,565 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.IStreamer — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.IStreamer

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.IStreamer#

    +
    +
    +class cmoncrawl.processor.pipeline.streamer.IStreamer#
    +

    Base class for all outstreamers

    +
    +
    +__init__()#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + +

    __init__()

    clean_up()

    stream(extracted_data, metadata)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.stream.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.stream.html new file mode 100644 index 00000000..80fcf032 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.IStreamer.stream.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.IStreamer.stream — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.IStreamer.stream

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.IStreamer.stream#

    +
    +
    +abstract async IStreamer.stream(extracted_data: Dict[Any, Any], metadata: PipeMetadata) Path#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__.html new file mode 100644 index 00000000..f271a713 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__#

    +
    +
    +StreamerDummy.__init__()#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up.html new file mode 100644 index 00000000..39993fd8 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up#

    +
    +
    +async StreamerDummy.clean_up()#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.html new file mode 100644 index 00000000..dd84a35c --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.html @@ -0,0 +1,565 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerDummy — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerDummy

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerDummy#

    +
    +
    +class cmoncrawl.processor.pipeline.streamer.StreamerDummy#
    +

    Dummy Streamer which keeps the output is memory

    +
    +
    +__init__()#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + +

    __init__()

    clean_up()

    stream(extracted_data, metadata)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream.html new file mode 100644 index 00000000..7489f131 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream#

    +
    +
    +async StreamerDummy.stream(extracted_data: Dict[Any, Any], metadata: PipeMetadata)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__.html new file mode 100644 index 00000000..0277e500 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__#

    +
    +
    +StreamerFileHTML.__init__(root: Path, max_directory_size: int)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up.html new file mode 100644 index 00000000..0b63e34a --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up#

    +
    +
    +async StreamerFileHTML.clean_up() None#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name.html new file mode 100644 index 00000000..14a51bb5 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name#

    +
    +
    +StreamerFileHTML.get_file_name(metadata: PipeMetadata)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.html new file mode 100644 index 00000000..a3d60394 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.html @@ -0,0 +1,570 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerFileHTML — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileHTML

    + +
    + +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileHTML#

    +
    +
    +class cmoncrawl.processor.pipeline.streamer.StreamerFileHTML(root: Path, max_directory_size: int)#
    +
    +
    +__init__(root: Path, max_directory_size: int)#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + +

    __init__(root, max_directory_size)

    clean_up()

    get_file_name(metadata)

    metadata_to_string(extracted_data)

    stream(extracted_data, metadata)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string.html new file mode 100644 index 00000000..ef1bdd94 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string#

    +
    +
    +StreamerFileHTML.metadata_to_string(extracted_data: Dict[Any, Any]) str#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream.html new file mode 100644 index 00000000..d3dcb135 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream#

    +
    +
    +async StreamerFileHTML.stream(extracted_data: Dict[Any, Any], metadata: PipeMetadata) Path#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__.html new file mode 100644 index 00000000..78c54fc9 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__ — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__#

    +
    +
    +StreamerFileJSON.__init__(root: Path, max_directory_size: int, max_file_size: int, pretty: bool = False)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up.html new file mode 100644 index 00000000..d94ebe8d --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up#

    +
    +
    +async StreamerFileJSON.clean_up() None#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name.html new file mode 100644 index 00000000..87919d79 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name#

    +
    +
    +StreamerFileJSON.get_file_name(metadata: PipeMetadata)#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.html new file mode 100644 index 00000000..a7bda35e --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.html @@ -0,0 +1,570 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerFileJSON — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileJSON

    + +
    + +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileJSON#

    +
    +
    +class cmoncrawl.processor.pipeline.streamer.StreamerFileJSON(root: Path, max_directory_size: int, max_file_size: int, pretty: bool = False)#
    +
    +
    +__init__(root: Path, max_directory_size: int, max_file_size: int, pretty: bool = False)#
    +
    + +

    Methods

    + ++++ + + + + + + + + + + + + + + + + + +

    __init__(root, max_directory_size, max_file_size)

    clean_up()

    get_file_name(metadata)

    metadata_to_string(extracted_data)

    stream(extracted_data, metadata)

    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string.html new file mode 100644 index 00000000..837924f0 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string.html @@ -0,0 +1,519 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string#

    +
    +
    +StreamerFileJSON.metadata_to_string(extracted_data: Dict[Any, Any]) str#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream.html new file mode 100644 index 00000000..6f2a4305 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream.html @@ -0,0 +1,511 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream#

    +
    +
    +async StreamerFileJSON.stream(extracted_data: Dict[Any, Any], metadata: PipeMetadata) Path#
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.html b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.html new file mode 100644 index 00000000..60c1dd71 --- /dev/null +++ b/docs/build/html/generated/cmoncrawl.processor.pipeline.streamer.html @@ -0,0 +1,493 @@ + + + + + + + + + cmoncrawl.processor.pipeline.streamer — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    cmoncrawl.processor.pipeline.streamer

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    cmoncrawl.processor.pipeline.streamer#

    +

    Classes

    + ++++ + + + + + + + + + + + + + + + + + +

    BaseStreamerFile(root, max_directory_size, ...)

    Abstract Class which defines the basic functionality of a file streamer

    IStreamer()

    Base class for all outstreamers

    StreamerDummy()

    Dummy Streamer which keeps the output is memory

    StreamerFileHTML(root, max_directory_size)

    StreamerFileJSON(root, max_directory_size, ...)

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html new file mode 100644 index 00000000..7dffdcaf --- /dev/null +++ b/docs/build/html/genindex.html @@ -0,0 +1,1022 @@ + + + + + + + + Index — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    + +
    +
    + +
    +
    +
    +
    + +
    + + +

    Index

    + +
    + _ + | A + | B + | C + | D + | E + | F + | G + | H + | I + | L + | M + | P + | R + | S + | T + | U + +
    +

    _

    + + +
    + +

    A

    + + + +
    + +

    B

    + + + +
    + +

    C

    + + + +
      +
    • + cmoncrawl.common.types + +
    • +
    • + cmoncrawl.processor + +
    • +
    • + cmoncrawl.processor.extraction + +
    • +
    • + cmoncrawl.processor.extraction.filters + +
    • +
    • + cmoncrawl.processor.extraction.utils + +
    • +
    • + cmoncrawl.processor.pipeline + +
    • +
    • + cmoncrawl.processor.pipeline.downloader + +
    • +
    • + cmoncrawl.processor.pipeline.extractor + +
    • +
    • + cmoncrawl.processor.pipeline.pipeline + +
    • +
    • + cmoncrawl.processor.pipeline.router + +
    • +
    • + cmoncrawl.processor.pipeline.streamer + +
    • +
    + +

    D

    + + + +
    + +

    E

    + + + +
    + +

    F

    + + + +
    + +

    G

    + + + +
    + +

    H

    + + +
    + +

    I

    + + + +
    + +

    L

    + + + +
    + +

    M

    + + +
    + +

    P

    + + + +
    + +

    R

    + + + +
    + +

    S

    + + + +
    + +

    T

    + + + +
    + +

    U

    + + +
    + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/index.html b/docs/build/html/index.html new file mode 100644 index 00000000..88af3333 --- /dev/null +++ b/docs/build/html/index.html @@ -0,0 +1,601 @@ + + + + + + + + + Welcome to CommonCrawl Extractor’s documentation! — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    + +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/misc/domain_record.html b/docs/build/html/misc/domain_record.html new file mode 100644 index 00000000..16265eff --- /dev/null +++ b/docs/build/html/misc/domain_record.html @@ -0,0 +1,559 @@ + + + + + + + + + Domain Record — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    Domain Record

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    Domain Record#

    +

    By domain record we refer to a strucuture that cotains the information +about how to download a crawl of an url. It contains the following

    +
      +
    • url: the url to crawl

    • +
    • filename: the warc filename

    • +
    • offset: the offset in the warc file

    • +
    • length: the length of the html crawl

    • +
    • digest [optional]: the digest of the html crawl

    • +
    • encoding [optional]: the encoding of the html crawl

    • +
    • timestamp [optional]: the timestamp of the crawl

    • +
    +
    +
    +

    Domain Record JSONL format#

    +

    In order to use your own domain records with extract mode of cli, +you must format them into follwoing json format

    +
    {
    +    "domain_record":
    +    {
    +        "url": "http://example.com",
    +        "filename": "crawl.warc.gz",
    +        "offset": 123,
    +        "length": 456,
    +        "digest: "sha1:1234567890abcdef",
    +        "encoding": "utf-8",
    +        "timestamp": "2018-01-01T00:00:00Z"
    +    },
    +    "additional_info":
    +    {
    +        "key1": "value1",
    +        "key2": "value2"
    +    }
    +}
    +
    +
    +

    Each such json must be on a separate line in a file. +You don’t have to provide all the fields, only `url, `filename`, +`offset` and `length` are required. +The Athena SQL keys are: +`u.url, cc.warc_filename, cc.warc_record_offset, cc.warc_record_length, cc.content_digest, cc.fetch_time`

    +

    The `additional_info` field is optional and can contain any additional +information. It will be added to extracted fields as is. It’s usefull +when you for example want to add to which set the url belongs to.

    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/misc/index.html b/docs/build/html/misc/index.html new file mode 100644 index 00000000..fffaa912 --- /dev/null +++ b/docs/build/html/misc/index.html @@ -0,0 +1,476 @@ + + + + + + + + + Miscellaneous — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    Miscellaneous

    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +

    Miscellaneous#

    + +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..dc3705f879de25ca99e7cbd9b8980bdfde2381b3 GIT binary patch literal 13098 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 RGCIDNY3m=p6B=UT{|A`VJkbCE literal 0 HcmV?d00001 diff --git a/docs/build/html/prog_guide/index.html b/docs/build/html/prog_guide/index.html new file mode 100644 index 00000000..c9b0711d --- /dev/null +++ b/docs/build/html/prog_guide/index.html @@ -0,0 +1,489 @@ + + + + + + + + + Programming Guide — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Toggle navigation sidebar
    + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    + +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/prog_guide/overview.html b/docs/build/html/prog_guide/overview.html new file mode 100644 index 00000000..2ab9a850 --- /dev/null +++ b/docs/build/html/prog_guide/overview.html @@ -0,0 +1,655 @@ + + + + + + + + + Programming Guide — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    +
    + + +
    + +
    + +
    +

    Programming Guide#

    +

    This section provides a brief overview of the project. It should give you +and idea of how to create your custom extraction pipeline.

    +
    +
    +

    How to extract from Common Crawl (theory)#

    +

    The process of getting one parsed web page from CommonCrawl can be described as a pipeline.

    +
      +
    1. Query CommmonCrawl to find a link to a file that contains the web page we want.

    2. +
    3. Download a file

    4. +
    5. Choose parser for the web page

    6. +
    7. Filter out the web page if not matching the conditions

    8. +
    9. Extract fields from the page

    10. +
    11. Save the fields to a file

    12. +
    +

    The first step is handled by Aggregator while the rest is handled by Processor.

    +
    +

    1. Querying CommonCrawl#

    +
    +
    what WARC File how

    WARC is a file format that is used for storing multitudes of web resources. +In our case these files contain a bunch of downloaded web pages and their metadata. +It’s possible to get only part of the file by specifying the offset in file and length of the part we want.

    +
    +
    what

    Common Crawl Index

    +
    +
    how

    A CommonCrawl index is a collection which maps crawled urls to WARC file which contain the crawl of that url.

    +
    +
    +

    Every month a CommonCrawl releases a new index which contains all links to web pages that were crawled that month.

    +
    +

    Warning

    +

    It is important to understand that even if the index was released in a certain month, it can contain the links to web pages that might be older.

    +
    +

    Thus in order to download an page we query the index to get link to respective WARC file, offset and length of page. +Since there are multiples of the indexes we should query all of them to make sure we don’t miss the page. +With the link to the WARC and offset and length we can continue to another step.

    +

    All this is handled by cmoncrawl.aggregator.index_query.IndexAggregator. But for basic use you will not need to use it directly.

    +
    +
    +

    2. Downloading a file#

    +

    The Processor node than downloads the url and related information from queue and downloads the appropriate WARC file. +This step is handled by cmoncrawl.processor.pipeline.downloader.AsyncDownloader. +It simply downloads and extracts the page from the WARC file.

    +
    +
    +

    3. Choose extractor#

    +

    Once the page is downloaded we first need to choose a extractor for it. +Extractors are dynamically loaded based on definitions in Extractor config file. +All loaded processors are then matched against the url and crawl date and first matching is used. +This functionality is handled by cmoncrawl.processor.pipeline.router.Router.

    +

    For development of extractors refer to Custom Extractor.

    +
    +
    +

    4. Filtering out the web page#

    +

    Once the extractor is chosen the filtering function is used to either drop or pass a page. +In order to filter your you can use either cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw() for +filtering based on raw html pages (fast). Or wait for conversion to soup and then filter using +cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup() (slow).

    +
    +
    +

    5. Extract fields from the page#

    +

    The extracting function defined by the extractor is used to extract the fields from the page. +Just extract the values and return them in dict.

    +
    +
    +

    6. File saving#

    +

    With the field extracted we need to save them to a file. +By default the fields are saved in json file. +The way the file is saved is defined by streamers. +All of the currently implemented streamers are derived from cmoncrawl.processor.pipeline.streamer.BaseStreamerFile. +Which defined how are the files saved, but the content parsing is left to the derived classes.

    +

    Currently we support 2 streamers, one for json (cmoncrawl.processor.pipeline.streamer.StreamerFileJSON) and one for html (cmoncrawl.processor.pipeline.streamer.StreamerFileHTML). +The json one creates a json per line output, and outputs all extracted data. +The html one creates a html file (assuming the html is defined in extracted data[‘html’]).

    +

    If you would like different format you can create your own saver by inheriting from cmoncrawl.processor.pipeline.streamer.IStreamer and then changing pipeline creation with your new outstreamer.

    +
    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/prog_guide/pip.html b/docs/build/html/prog_guide/pip.html new file mode 100644 index 00000000..e31316a1 --- /dev/null +++ b/docs/build/html/prog_guide/pip.html @@ -0,0 +1,563 @@ + + + + + + + + + Custom Pipeline — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    Custom Pipeline

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    Custom Pipeline#

    +
    +

    Pipeline#

    +

    The pipeline then all but querying together. +To create a pipeline simply initialize cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline with Downloader, Router and Streamer. +You can then call it’s cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record() method with the query and it will run the whole pipeline for single domain record.

    +
    +

    Note

    +

    The exceptions are not handled by the pipeline and are passed to the caller, to handle them as you wish.

    +
    +
    +
    +

    Putting it all together#

    +

    We now show how to create very simple custom pipeline that will download and extract +data into json programmatically.

    +
    +
    Using the lib in code#
    +
    from cmoncrawl.processor.pipeline.pipeline import ProcessorPipeline
    +from cmoncrawl.processor.pipeline.downloader import AsyncDownloader
    +from cmoncrawl.processor.pipeline.router import Router
    +from cmoncrawl.processor.pipeline.streamer import StreamerFileJSON
    +from cmoncrawl.common.loggers import all_purpose_logger
    +from cmoncrawl.common.types import MatchType
    +from commoncrawl.integrations.middleware.synchronized import query_and_extract
    +from pathlib import Path
    +
    +downloader = AsyncDownloader()
    +
    +your_custom_extractor = YourCustomExtractor()
    +router = Router()
    +router.load_extractor("ext", your_custom_extractor)
    +router.register_route("ext", ".*bbc.com.*")
    +streamer = StreamerFileJSON(Path("extracted"))
    +pipeline = ProcessorPipeline(downloader, router, streamer)
    +
    +index_agg = IndexAggregator(
    +    domains=["bbc.com"],
    +    match_type=MatchType.DOMAIN,
    +    limit=1000,
    +)
    +
    +processed_urls = await query_and_extract(index_agg, pipeline)
    +
    +
    +
    +

    The code will try to extract first 1000 pages from bbc.com, which will +be extracted using YourCustomExtractor and save the results to json files.

    +
    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/py-modindex.html b/docs/build/html/py-modindex.html new file mode 100644 index 00000000..a515c67d --- /dev/null +++ b/docs/build/html/py-modindex.html @@ -0,0 +1,514 @@ + + + + + + + + Python Module Index — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    + +
    +
    + +
    +
    +
    +
    + +
    + + +

    Python Module Index

    + +
    + c +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     
    + c
    + cmoncrawl +
        + cmoncrawl.aggregator +
        + cmoncrawl.aggregator.index_query +
        + cmoncrawl.aggregator.utils +
        + cmoncrawl.aggregator.utils.helpers +
        + cmoncrawl.aggregator.utils.ndjson_decoder +
        + cmoncrawl.common +
        + cmoncrawl.common.loggers +
        + cmoncrawl.common.types +
        + cmoncrawl.processor +
        + cmoncrawl.processor.extraction +
        + cmoncrawl.processor.extraction.filters +
        + cmoncrawl.processor.extraction.utils +
        + cmoncrawl.processor.pipeline +
        + cmoncrawl.processor.pipeline.downloader +
        + cmoncrawl.processor.pipeline.extractor +
        + cmoncrawl.processor.pipeline.pipeline +
        + cmoncrawl.processor.pipeline.router +
        + cmoncrawl.processor.pipeline.streamer +
    + + +
    + +
    +
    + + +
    +
    +
    +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/search.html b/docs/build/html/search.html new file mode 100644 index 00000000..f9281b5c --- /dev/null +++ b/docs/build/html/search.html @@ -0,0 +1,438 @@ + + + + + + + + Search — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    + +
    +

    + +
    +
    + +
    +
    +
    +
    + +
    + +

    Search

    + + + + +

    + Searching for multiple words only shows matches that contain + all words. +

    + + +
    + + + +
    + + + +
    + +
    + + +
    + +
    +
    + + +
    +
    +
    +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js new file mode 100644 index 00000000..521a55f0 --- /dev/null +++ b/docs/build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["api", "cli/cli", "cli/download", "cli/extract", "cli/index", "extraction/config_file", "extraction/creating_extractor", "extraction/index", "extraction/utils", "generated/cmoncrawl", "generated/cmoncrawl.aggregator", "generated/cmoncrawl.aggregator.index_query", "generated/cmoncrawl.aggregator.index_query.IndexAggregator", "generated/cmoncrawl.aggregator.index_query.IndexAggregator.__init__", "generated/cmoncrawl.aggregator.index_query.IndexAggregator.aclose", "generated/cmoncrawl.aggregator.index_query.IndexAggregator.aopen", "generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes", "generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses", "generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages", "generated/cmoncrawl.aggregator.utils", "generated/cmoncrawl.aggregator.utils.helpers", "generated/cmoncrawl.aggregator.utils.ndjson_decoder", "generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder", "generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__", "generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode", "generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode", "generated/cmoncrawl.common", "generated/cmoncrawl.common.loggers", "generated/cmoncrawl.common.types", "generated/cmoncrawl.common.types.DomainCrawl", "generated/cmoncrawl.common.types.DomainCrawl.__init__", "generated/cmoncrawl.common.types.DomainRecord", "generated/cmoncrawl.common.types.DomainRecord.__init__", "generated/cmoncrawl.common.types.DomainRecord.from_dict", "generated/cmoncrawl.common.types.DomainRecord.from_json", "generated/cmoncrawl.common.types.DomainRecord.schema", "generated/cmoncrawl.common.types.DomainRecord.to_dict", "generated/cmoncrawl.common.types.DomainRecord.to_json", "generated/cmoncrawl.common.types.ExtractConfig", "generated/cmoncrawl.common.types.ExtractConfig.__init__", "generated/cmoncrawl.common.types.ExtractConfig.from_dict", "generated/cmoncrawl.common.types.ExtractConfig.from_json", "generated/cmoncrawl.common.types.ExtractConfig.schema", "generated/cmoncrawl.common.types.ExtractConfig.to_dict", "generated/cmoncrawl.common.types.ExtractConfig.to_json", "generated/cmoncrawl.common.types.ExtractorConfig", "generated/cmoncrawl.common.types.ExtractorConfig.__init__", "generated/cmoncrawl.common.types.ExtractorConfig.from_dict", "generated/cmoncrawl.common.types.ExtractorConfig.from_json", "generated/cmoncrawl.common.types.ExtractorConfig.schema", "generated/cmoncrawl.common.types.ExtractorConfig.to_dict", "generated/cmoncrawl.common.types.ExtractorConfig.to_json", "generated/cmoncrawl.common.types.PipeMetadata", "generated/cmoncrawl.common.types.PipeMetadata.__init__", "generated/cmoncrawl.common.types.RetrieveResponse", "generated/cmoncrawl.common.types.RetrieveResponse.__init__", "generated/cmoncrawl.common.types.RoutesConfig", "generated/cmoncrawl.common.types.RoutesConfig.__init__", "generated/cmoncrawl.common.types.RoutesConfig.from_dict", "generated/cmoncrawl.common.types.RoutesConfig.from_json", "generated/cmoncrawl.common.types.RoutesConfig.schema", "generated/cmoncrawl.common.types.RoutesConfig.to_dict", "generated/cmoncrawl.common.types.RoutesConfig.to_json", "generated/cmoncrawl.processor", "generated/cmoncrawl.processor.extraction", "generated/cmoncrawl.processor.extraction.filters", "generated/cmoncrawl.processor.extraction.utils", "generated/cmoncrawl.processor.pipeline", "generated/cmoncrawl.processor.pipeline.downloader", "generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader", "generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__", "generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose", "generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen", "generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download", "generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap", "generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy", "generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__", "generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download", "generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url", "generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year", "generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata", "generated/cmoncrawl.processor.pipeline.downloader.IDownloader", "generated/cmoncrawl.processor.pipeline.downloader.IDownloader.__init__", "generated/cmoncrawl.processor.pipeline.downloader.IDownloader.download", "generated/cmoncrawl.processor.pipeline.extractor", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess", "generated/cmoncrawl.processor.pipeline.extractor.IExtractor", "generated/cmoncrawl.processor.pipeline.extractor.IExtractor.__init__", "generated/cmoncrawl.processor.pipeline.extractor.IExtractor.extract", "generated/cmoncrawl.processor.pipeline.pipeline", "generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline", "generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__", "generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record", "generated/cmoncrawl.processor.pipeline.router", "generated/cmoncrawl.processor.pipeline.router.IRouter", "generated/cmoncrawl.processor.pipeline.router.IRouter.__init__", "generated/cmoncrawl.processor.pipeline.router.IRouter.route", "generated/cmoncrawl.processor.pipeline.router.Route", "generated/cmoncrawl.processor.pipeline.router.Route.__init__", "generated/cmoncrawl.processor.pipeline.router.Router", "generated/cmoncrawl.processor.pipeline.router.Router.__init__", "generated/cmoncrawl.processor.pipeline.router.Router.load_extractor", "generated/cmoncrawl.processor.pipeline.router.Router.load_module", "generated/cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor", "generated/cmoncrawl.processor.pipeline.router.Router.load_modules", "generated/cmoncrawl.processor.pipeline.router.Router.register_route", "generated/cmoncrawl.processor.pipeline.router.Router.register_routes", "generated/cmoncrawl.processor.pipeline.router.Router.route", "generated/cmoncrawl.processor.pipeline.streamer", "generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile", "generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__", "generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up", "generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name", "generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string", "generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream", "generated/cmoncrawl.processor.pipeline.streamer.IStreamer", "generated/cmoncrawl.processor.pipeline.streamer.IStreamer.__init__", "generated/cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up", "generated/cmoncrawl.processor.pipeline.streamer.IStreamer.stream", "generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy", "generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__", "generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up", "generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream", "index", "misc/domain_record", "misc/index", "prog_guide/index", "prog_guide/overview", "prog_guide/pip", "usage"], "filenames": ["api.rst", "cli/cli.rst", "cli/download.rst", "cli/extract.rst", "cli/index.rst", "extraction/config_file.rst", "extraction/creating_extractor.rst", "extraction/index.rst", "extraction/utils.rst", "generated/cmoncrawl.rst", "generated/cmoncrawl.aggregator.rst", "generated/cmoncrawl.aggregator.index_query.rst", "generated/cmoncrawl.aggregator.index_query.IndexAggregator.rst", "generated/cmoncrawl.aggregator.index_query.IndexAggregator.__init__.rst", "generated/cmoncrawl.aggregator.index_query.IndexAggregator.aclose.rst", "generated/cmoncrawl.aggregator.index_query.IndexAggregator.aopen.rst", "generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes.rst", "generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses.rst", "generated/cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages.rst", "generated/cmoncrawl.aggregator.utils.rst", "generated/cmoncrawl.aggregator.utils.helpers.rst", "generated/cmoncrawl.aggregator.utils.ndjson_decoder.rst", "generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.rst", "generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__.rst", "generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode.rst", "generated/cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode.rst", "generated/cmoncrawl.common.rst", "generated/cmoncrawl.common.loggers.rst", "generated/cmoncrawl.common.types.rst", "generated/cmoncrawl.common.types.DomainCrawl.rst", "generated/cmoncrawl.common.types.DomainCrawl.__init__.rst", "generated/cmoncrawl.common.types.DomainRecord.rst", "generated/cmoncrawl.common.types.DomainRecord.__init__.rst", "generated/cmoncrawl.common.types.DomainRecord.from_dict.rst", "generated/cmoncrawl.common.types.DomainRecord.from_json.rst", "generated/cmoncrawl.common.types.DomainRecord.schema.rst", "generated/cmoncrawl.common.types.DomainRecord.to_dict.rst", "generated/cmoncrawl.common.types.DomainRecord.to_json.rst", "generated/cmoncrawl.common.types.ExtractConfig.rst", "generated/cmoncrawl.common.types.ExtractConfig.__init__.rst", "generated/cmoncrawl.common.types.ExtractConfig.from_dict.rst", "generated/cmoncrawl.common.types.ExtractConfig.from_json.rst", "generated/cmoncrawl.common.types.ExtractConfig.schema.rst", "generated/cmoncrawl.common.types.ExtractConfig.to_dict.rst", "generated/cmoncrawl.common.types.ExtractConfig.to_json.rst", "generated/cmoncrawl.common.types.ExtractorConfig.rst", "generated/cmoncrawl.common.types.ExtractorConfig.__init__.rst", "generated/cmoncrawl.common.types.ExtractorConfig.from_dict.rst", "generated/cmoncrawl.common.types.ExtractorConfig.from_json.rst", "generated/cmoncrawl.common.types.ExtractorConfig.schema.rst", "generated/cmoncrawl.common.types.ExtractorConfig.to_dict.rst", "generated/cmoncrawl.common.types.ExtractorConfig.to_json.rst", "generated/cmoncrawl.common.types.PipeMetadata.rst", "generated/cmoncrawl.common.types.PipeMetadata.__init__.rst", "generated/cmoncrawl.common.types.RetrieveResponse.rst", "generated/cmoncrawl.common.types.RetrieveResponse.__init__.rst", "generated/cmoncrawl.common.types.RoutesConfig.rst", "generated/cmoncrawl.common.types.RoutesConfig.__init__.rst", "generated/cmoncrawl.common.types.RoutesConfig.from_dict.rst", "generated/cmoncrawl.common.types.RoutesConfig.from_json.rst", "generated/cmoncrawl.common.types.RoutesConfig.schema.rst", "generated/cmoncrawl.common.types.RoutesConfig.to_dict.rst", "generated/cmoncrawl.common.types.RoutesConfig.to_json.rst", "generated/cmoncrawl.processor.rst", "generated/cmoncrawl.processor.extraction.rst", "generated/cmoncrawl.processor.extraction.filters.rst", "generated/cmoncrawl.processor.extraction.utils.rst", "generated/cmoncrawl.processor.pipeline.rst", "generated/cmoncrawl.processor.pipeline.downloader.rst", "generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.rst", "generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__.rst", "generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose.rst", "generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen.rst", "generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download.rst", "generated/cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap.rst", "generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.rst", "generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__.rst", "generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download.rst", "generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url.rst", "generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year.rst", "generated/cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata.rst", "generated/cmoncrawl.processor.pipeline.downloader.IDownloader.rst", "generated/cmoncrawl.processor.pipeline.downloader.IDownloader.__init__.rst", "generated/cmoncrawl.processor.pipeline.downloader.IDownloader.download.rst", "generated/cmoncrawl.processor.pipeline.extractor.rst", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.rst", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__.rst", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract.rst", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup.rst", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw.rst", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup.rst", "generated/cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess.rst", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.rst", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__.rst", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract.rst", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup.rst", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw.rst", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup.rst", "generated/cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess.rst", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.rst", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__.rst", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract.rst", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup.rst", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw.rst", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup.rst", "generated/cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess.rst", "generated/cmoncrawl.processor.pipeline.extractor.IExtractor.rst", "generated/cmoncrawl.processor.pipeline.extractor.IExtractor.__init__.rst", "generated/cmoncrawl.processor.pipeline.extractor.IExtractor.extract.rst", "generated/cmoncrawl.processor.pipeline.pipeline.rst", "generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.rst", "generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__.rst", "generated/cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record.rst", "generated/cmoncrawl.processor.pipeline.router.rst", "generated/cmoncrawl.processor.pipeline.router.IRouter.rst", "generated/cmoncrawl.processor.pipeline.router.IRouter.__init__.rst", "generated/cmoncrawl.processor.pipeline.router.IRouter.route.rst", "generated/cmoncrawl.processor.pipeline.router.Route.rst", "generated/cmoncrawl.processor.pipeline.router.Route.__init__.rst", "generated/cmoncrawl.processor.pipeline.router.Router.rst", "generated/cmoncrawl.processor.pipeline.router.Router.__init__.rst", "generated/cmoncrawl.processor.pipeline.router.Router.load_extractor.rst", "generated/cmoncrawl.processor.pipeline.router.Router.load_module.rst", "generated/cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor.rst", "generated/cmoncrawl.processor.pipeline.router.Router.load_modules.rst", "generated/cmoncrawl.processor.pipeline.router.Router.register_route.rst", "generated/cmoncrawl.processor.pipeline.router.Router.register_routes.rst", "generated/cmoncrawl.processor.pipeline.router.Router.route.rst", "generated/cmoncrawl.processor.pipeline.streamer.rst", "generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.rst", "generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__.rst", "generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up.rst", "generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name.rst", "generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string.rst", "generated/cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream.rst", "generated/cmoncrawl.processor.pipeline.streamer.IStreamer.rst", "generated/cmoncrawl.processor.pipeline.streamer.IStreamer.__init__.rst", "generated/cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up.rst", "generated/cmoncrawl.processor.pipeline.streamer.IStreamer.stream.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string.rst", "generated/cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream.rst", "index.rst", "misc/domain_record.rst", "misc/index.rst", "prog_guide/index.rst", "prog_guide/overview.rst", "prog_guide/pip.rst", "usage.rst"], "titles": ["API", "Command Line Interface", "Command Line Download", "Command line Extract", "Command Line Interface", "Extractor config file", "Custom Extractor", "Extraction", "Extraction utils", "cmoncrawl", "cmoncrawl.aggregator", "cmoncrawl.aggregator.index_query", "cmoncrawl.aggregator.index_query.IndexAggregator", "cmoncrawl.aggregator.index_query.IndexAggregator.__init__", "cmoncrawl.aggregator.index_query.IndexAggregator.aclose", "cmoncrawl.aggregator.index_query.IndexAggregator.aopen", "cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes", "cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses", "cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages", "cmoncrawl.aggregator.utils", "cmoncrawl.aggregator.utils.helpers", "cmoncrawl.aggregator.utils.ndjson_decoder", "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder", "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__", "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode", "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode", "cmoncrawl.common", "cmoncrawl.common.loggers", "cmoncrawl.common.types", "cmoncrawl.common.types.DomainCrawl", "cmoncrawl.common.types.DomainCrawl.__init__", "cmoncrawl.common.types.DomainRecord", "cmoncrawl.common.types.DomainRecord.__init__", "cmoncrawl.common.types.DomainRecord.from_dict", "cmoncrawl.common.types.DomainRecord.from_json", "cmoncrawl.common.types.DomainRecord.schema", "cmoncrawl.common.types.DomainRecord.to_dict", "cmoncrawl.common.types.DomainRecord.to_json", "cmoncrawl.common.types.ExtractConfig", "cmoncrawl.common.types.ExtractConfig.__init__", "cmoncrawl.common.types.ExtractConfig.from_dict", "cmoncrawl.common.types.ExtractConfig.from_json", "cmoncrawl.common.types.ExtractConfig.schema", "cmoncrawl.common.types.ExtractConfig.to_dict", "cmoncrawl.common.types.ExtractConfig.to_json", "cmoncrawl.common.types.ExtractorConfig", "cmoncrawl.common.types.ExtractorConfig.__init__", "cmoncrawl.common.types.ExtractorConfig.from_dict", "cmoncrawl.common.types.ExtractorConfig.from_json", "cmoncrawl.common.types.ExtractorConfig.schema", "cmoncrawl.common.types.ExtractorConfig.to_dict", "cmoncrawl.common.types.ExtractorConfig.to_json", "cmoncrawl.common.types.PipeMetadata", "cmoncrawl.common.types.PipeMetadata.__init__", "cmoncrawl.common.types.RetrieveResponse", "cmoncrawl.common.types.RetrieveResponse.__init__", "cmoncrawl.common.types.RoutesConfig", "cmoncrawl.common.types.RoutesConfig.__init__", "cmoncrawl.common.types.RoutesConfig.from_dict", "cmoncrawl.common.types.RoutesConfig.from_json", "cmoncrawl.common.types.RoutesConfig.schema", "cmoncrawl.common.types.RoutesConfig.to_dict", "cmoncrawl.common.types.RoutesConfig.to_json", "cmoncrawl.processor", "cmoncrawl.processor.extraction", "cmoncrawl.processor.extraction.filters", "cmoncrawl.processor.extraction.utils", "cmoncrawl.processor.pipeline", "cmoncrawl.processor.pipeline.downloader", "cmoncrawl.processor.pipeline.downloader.AsyncDownloader", "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__", "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose", "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen", "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download", "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap", "cmoncrawl.processor.pipeline.downloader.DownloaderDummy", "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__", "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download", "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url", "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year", "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata", "cmoncrawl.processor.pipeline.downloader.IDownloader", "cmoncrawl.processor.pipeline.downloader.IDownloader.__init__", "cmoncrawl.processor.pipeline.downloader.IDownloader.download", "cmoncrawl.processor.pipeline.extractor", "cmoncrawl.processor.pipeline.extractor.BaseExtractor", "cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__", "cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract", "cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup", "cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw", "cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup", "cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess", "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor", "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__", "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract", "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup", "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw", "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup", "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess", "cmoncrawl.processor.pipeline.extractor.HTMLExtractor", "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__", "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract", "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup", "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw", "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup", "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess", "cmoncrawl.processor.pipeline.extractor.IExtractor", "cmoncrawl.processor.pipeline.extractor.IExtractor.__init__", "cmoncrawl.processor.pipeline.extractor.IExtractor.extract", "cmoncrawl.processor.pipeline.pipeline", "cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline", "cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__", "cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record", "cmoncrawl.processor.pipeline.router", "cmoncrawl.processor.pipeline.router.IRouter", "cmoncrawl.processor.pipeline.router.IRouter.__init__", "cmoncrawl.processor.pipeline.router.IRouter.route", "cmoncrawl.processor.pipeline.router.Route", "cmoncrawl.processor.pipeline.router.Route.__init__", "cmoncrawl.processor.pipeline.router.Router", "cmoncrawl.processor.pipeline.router.Router.__init__", "cmoncrawl.processor.pipeline.router.Router.load_extractor", "cmoncrawl.processor.pipeline.router.Router.load_module", "cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor", "cmoncrawl.processor.pipeline.router.Router.load_modules", "cmoncrawl.processor.pipeline.router.Router.register_route", "cmoncrawl.processor.pipeline.router.Router.register_routes", "cmoncrawl.processor.pipeline.router.Router.route", "cmoncrawl.processor.pipeline.streamer", "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile", "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__", "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up", "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name", "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string", "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream", "cmoncrawl.processor.pipeline.streamer.IStreamer", "cmoncrawl.processor.pipeline.streamer.IStreamer.__init__", "cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up", "cmoncrawl.processor.pipeline.streamer.IStreamer.stream", "cmoncrawl.processor.pipeline.streamer.StreamerDummy", "cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__", "cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up", "cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream", "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML", "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__", "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up", "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name", "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string", "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream", "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON", "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__", "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up", "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name", "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string", "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream", "Welcome to CommonCrawl Extractor\u2019s documentation!", "Domain Record", "Miscellaneous", "Programming Guide", "Programming Guide", "Custom Pipeline", "Usage"], "terms": {"The": [1, 2, 3, 5, 6, 8, 22, 23, 156, 159, 160, 161], "i": [1, 3, 5, 6, 8, 22, 23, 139, 156, 159, 161], "simpl": [1, 160, 161], "wrapper": 1, "around": 1, "librari": [1, 161], "It": [1, 5, 6, 8, 75, 156, 159, 161], "provid": [1, 2, 8, 22, 23, 156, 159, 161], "two": [1, 6, 161], "main": [1, 2], "function": [1, 8, 11, 20, 65, 66, 129, 159], "download": [1, 3, 4, 110, 111, 155, 156, 158, 160, 161], "sampl": 1, "either": [1, 159], "domain": [1, 2, 3, 5, 12, 13, 17, 18, 29, 30, 155, 157, 160, 161], "record": [1, 4, 5, 155, 157, 160, 161], "html": [1, 2, 4, 6, 92, 99, 155, 156, 159, 161], "from": [1, 2, 3, 5, 6, 8, 25, 75, 155, 158, 160, 161], "common": [1, 2, 5, 6, 155, 158, 160], "crawl": [1, 2, 5, 6, 155, 156, 158], "index": [1, 2, 12, 13, 25, 155, 159, 161], "extract": [1, 4, 5, 75, 92, 99, 155, 156, 158, 160, 161], "an": [1, 3, 6, 22, 23, 156, 159], "content": [1, 3, 5, 54, 55, 78, 80, 159], "can": [1, 3, 5, 6, 22, 23, 25, 156, 159, 160, 161], "also": [1, 5, 6, 22, 23, 161], "directli": [1, 3, 159], "take": [1, 3, 6, 22, 23], "data": [1, 3, 5, 6, 8, 25, 69, 70, 159, 160, 161], "both": [1, 3, 8, 161], "ar": [1, 2, 3, 5, 6, 8, 22, 23, 156, 159, 160], "invok": 1, "us": [1, 3, 5, 6, 8, 22, 23, 25, 156, 159, 160, 161], "cmon": [1, 2, 3, 5], "follow": [1, 2, 3, 5, 22, 23, 156], "requir": [1, 8, 156], "argument": [1, 4, 155], "first": [1, 2, 3, 159, 160, 161], "1000": [1, 2, 160], "com": [1, 2, 3, 156, 160], "match_typ": [1, 2, 160], "limit": [1, 2, 12, 13, 160], "dr_output": [1, 2, 3], "100": [1, 2, 3], "html_output": [1, 2, 3], "them": [1, 3, 156, 159, 160], "your": [1, 3, 6, 8, 156, 159, 161], "extractor": [1, 3, 7, 45, 56, 57, 121, 158, 161], "config": [1, 3, 7, 126, 155, 159], "json": [1, 2, 3, 12, 13, 22, 23, 24, 25, 156, 159, 160], "extracted_output": [1, 3], "jsonl": [1, 2, 3, 155, 157], "second": [1, 2, 3], "tool": [2, 3], "server": [2, 3], "queri": [2, 155, 158, 160], "commoncrawl": [2, 12, 13, 69, 70, 158, 160, 161], "need": [2, 3, 5, 6, 159, 161], "thi": [2, 3, 5, 6, 22, 23, 25, 159, 161], "order": [2, 3, 5, 22, 23, 156, 159], "url": [2, 3, 5, 31, 32, 75, 76, 116, 127, 156, 159], "output": [2, 3, 139, 159], "path": [2, 3, 5, 38, 39, 75, 76, 79, 80, 122, 123, 124, 129, 130, 134, 138, 143, 144, 148, 149, 150, 154, 160], "directori": [2, 3, 5], "file": [2, 3, 6, 7, 8, 75, 76, 129, 155, 156, 158, 160], "In": [2, 5, 156, 159], "contain": [2, 3, 8, 24, 156, 159], "one": [2, 3, 5, 22, 23, 159], "each": [2, 3, 5, 156], "found": [2, 6], "multipl": [2, 8, 159], "format": [2, 3, 5, 155, 157, 159], "max": [2, 3], "number": [2, 3, 22, 23], "sinc": [2, 5, 12, 13, 17, 45, 46, 117, 118, 125, 159], "start": [2, 5], "date": [2, 3, 5, 75, 76, 159], "iso": [2, 3, 5], "e": [2, 3, 5, 22, 23], "g": [2, 3, 5, 22, 23], "2020": 2, "01": [2, 3, 5, 156], "TO": 2, "end": [2, 5, 25], "cc_server": [2, 12, 13], "must": [2, 5, 6, 156], "whole": [2, 160], "http": [2, 3, 5, 12, 13, 69, 70, 156], "org": [2, 12, 13, 69, 70], "cc": [2, 156], "2023": 2, "14": 2, "max_retri": [2, 3, 12, 13, 17, 18, 69, 70, 129, 130], "retri": 2, "request": [2, 161], "increas": 2, "when": [2, 3, 156], "fail": [2, 3], "sleep_step": [2, 3, 12, 13, 17, 18, 69, 70], "addit": [2, 3, 156], "add": [2, 3, 5, 156], "sleep": [2, 3], "time": [2, 3, 116, 127], "between": [2, 3], "attempt": [2, 3], "tell": 2, "you": [2, 3, 5, 6, 156, 159, 160, 161], "slow": [2, 159, 161], "down": 2, "One": 2, "exact": 2, "prefix": 2, "host": 2, "match": [2, 5, 159], "type": [2, 6, 14, 71, 160], "refer": [2, 3, 6, 156, 159], "cdx": 2, "api": [2, 155, 161], "more": [2, 3, 161], "inform": [2, 3, 156, 159], "max_directory_s": [2, 3, 129, 130, 143, 144, 149, 150], "per": [2, 3, 159], "filter_non_200": 2, "filter": [2, 7, 155, 158], "out": [2, 8, 155, 158], "non": 2, "200": 2, "statu": [2, 54, 55], "code": [2, 7, 22, 23, 155, 160], "max_crawls_per_fil": [2, 3], "mode": [3, 4, 155, 156], "config_path": 3, "rule": 3, "output_path": 3, "To": [3, 5, 160, 161], "creat": [3, 5, 6, 8, 159, 160, 161], "see": [3, 6, 161], "yield": 3, "same": [3, 5], "which": [3, 5, 92, 99, 129, 139, 156, 159, 160, 161], "For": [3, 6, 159], "new": [3, 159], "name": [3, 5, 6, 45, 46, 52, 53, 117, 118, 121, 125], "after": 3, "appropri": [3, 159], "If": [3, 5, 6, 22, 23, 159, 161], "have": [3, 6, 25, 156], "got": 3, "some": 3, "other": [3, 161], "wai": [3, 6, 159, 161], "aw": [3, 161], "athena": [3, 156, 161], "pleas": 3, "describ": [3, 159], "how": [3, 155, 156, 158, 160, 161], "n_proc": 3, "process": [3, 159, 161], "paralel": 3, "level": 3, "thu": [3, 5, 6, 159], "singl": [3, 160], "": [3, 24, 25, 34, 41, 48, 59, 156, 159, 160, 161], "useless": 3, "than": [3, 159], "warc": [3, 156, 159], "2021": 3, "default": [3, 22, 23, 37, 44, 51, 62, 159], "todai": 3, "were": [3, 159], "By": [3, 22, 23, 156, 159], "try": [3, 160], "infer": 3, "10": [3, 69, 70], "www": [3, 5], "go": 3, "build": 3, "gonna": 3, "appreaci": 3, "specifi": [3, 5, 22, 23, 159], "what": [3, 159], "becaus": 3, "those": [3, 22, 23], "dure": [3, 5], "rout": [3, 5, 38, 39], "exampl": [4, 7, 155, 156], "posit": [4, 155], "option": [4, 5, 6, 12, 13, 14, 18, 31, 32, 33, 36, 37, 40, 43, 44, 45, 46, 47, 50, 51, 52, 53, 58, 61, 62, 71, 75, 76, 85, 86, 87, 88, 94, 101, 108, 125, 155, 156], "extractors_path": [5, 38, 39], "folder": [5, 124], "regex": [5, 56, 57, 117, 118, 125], "my_extractor": 5, "string": [5, 6, 22, 23, 25], "my_extractor2": 5, "another_regex": 5, "where": [5, 25], "locat": 5, "rel": 5, "current": [5, 159, 161], "work": 5, "list": [5, 12, 13, 16, 22, 23, 33, 36, 38, 39, 40, 43, 47, 50, 56, 57, 58, 61, 74, 75, 76, 83, 117, 118, 125, 126], "dictionari": [5, 6], "kei": [5, 156], "At": 5, "least": 5, "ha": 5, "python": [5, 24, 25], "without": [5, 6], "extens": [5, 6, 129, 130], "set": [5, 6, 156], "variabl": [5, 6], "overrid": 5, "valid": 5, "full": 5, "2009": 5, "01t00": [5, 156], "00": [5, 156], "all": [5, 6, 8, 135, 155, 156, 158, 159], "given": [5, 22, 23], "a_extractor": 5, "a_extractor2": 5, "b_extractor": 5, "cz": 5, "2010": 5, "cmon2": 5, "happen": 5, "A": [5, 33, 34, 35, 40, 41, 42, 47, 48, 49, 58, 59, 60, 159], "cralw": 5, "2012": 5, "might": [5, 6, 159], "want": [5, 6, 156, 159, 161], "put": [5, 155, 158], "problem": 5, "we": [5, 156, 159, 160], "load": [5, 159], "But": [5, 159], "don": [5, 6, 8, 156, 159], "t": [5, 6, 8, 22, 23, 75, 156, 159], "import": [5, 6, 159, 160], "sy": 5, "pathlib": [5, 160], "append": 5, "__file__": 5, "parent": 5, "router": [5, 110, 111, 159, 160], "everi": [5, 22, 23, 159], "should": [5, 6, 159, 161], "ani": [5, 8, 52, 53, 54, 55, 87, 88, 94, 101, 108, 112, 133, 134, 138, 142, 147, 148, 153, 154, 156], "untrust": 5, "within": 6, "cli": [6, 156], "implement": [6, 22, 23, 159], "cmoncrawl": [6, 8, 155, 159, 160], "processor": [6, 8, 155, 159, 160], "pipelin": [6, 155, 158, 159, 161], "iextractor": [6, 116, 121, 127], "class": [6, 11, 12, 21, 22, 23, 28, 29, 31, 38, 45, 52, 54, 56, 68, 69, 75, 81, 84, 85, 92, 99, 106, 109, 110, 113, 114, 117, 119, 128, 129, 135, 139, 143, 149, 159], "howev": 6, "most": [6, 161], "case": [6, 159, 161], "assum": [6, 159], "pars": [6, 159], "beautifulsoup": [6, 78, 88, 90, 95, 97, 102, 104], "onli": [6, 35, 42, 49, 60, 156, 159], "method": [6, 12, 22, 29, 31, 38, 45, 52, 54, 56, 69, 75, 81, 85, 92, 99, 106, 110, 114, 117, 119, 129, 135, 139, 143, 149, 160], "extract_soup": 6, "object": [6, 22, 23], "metadata": [6, 52, 75, 87, 88, 89, 90, 91, 94, 95, 96, 97, 98, 101, 102, 103, 104, 105, 108, 116, 127, 132, 134, 138, 142, 146, 148, 152, 154, 159], "pipemetadata": [6, 74, 83, 87, 88, 89, 90, 91, 94, 95, 96, 97, 98, 101, 102, 103, 104, 105, 108, 116, 127, 132, 134, 138, 142, 146, 148, 152, 154], "return": [6, 8, 22, 23, 24, 25, 75, 159], "none": [6, 8, 12, 13, 14, 18, 22, 23, 29, 30, 31, 32, 34, 35, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 51, 52, 53, 54, 55, 56, 57, 59, 60, 62, 71, 75, 76, 85, 86, 116, 117, 118, 125, 127, 131, 137, 145, 151], "page": [6, 17, 29, 30, 155, 158, 160], "extact": 6, "haven": 6, "additionali": 6, "filter_raw": [6, 159], "raw": [6, 159], "true": [6, 22, 23, 37, 44, 51, 62, 69, 70, 92, 93, 99, 100], "fals": [6, 22, 23, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 50, 51, 58, 59, 60, 61, 62, 149, 150], "otherwis": 6, "decid": 6, "base": [6, 135, 159], "effici": 6, "now": [6, 160], "soup": [6, 8, 88, 90, 95, 97, 102, 104, 159], "done": 6, "filter_soup": [6, 159], "final": 6, "said": 6, "here": 6, "titl": 6, "ext": [6, 160], "py": [6, 7, 155], "titleextractor": 6, "def": 6, "self": 6, "dict": [6, 22, 23, 33, 36, 40, 43, 47, 50, 52, 53, 58, 61, 87, 88, 94, 101, 108, 112, 133, 134, 138, 142, 147, 148, 153, 154, 159], "text": 6, "bool": [6, 33, 35, 36, 37, 40, 42, 43, 44, 47, 49, 50, 51, 58, 60, 61, 62, 69, 70, 89, 90, 92, 93, 97, 99, 100, 104, 149, 150], "config_fil": 6, "would": [6, 159], "custom": [7, 22, 23, 155, 158, 159, 161], "baseextractor": [7, 155, 159], "structur": [7, 155], "__init__": [7, 12, 22, 29, 31, 38, 45, 52, 54, 56, 69, 75, 81, 85, 92, 99, 106, 110, 114, 117, 119, 129, 135, 139, 143, 149, 155], "arbitrari": [7, 155], "execut": [7, 155], "util": [7, 155], "utili": 8, "defin": [8, 22, 23, 129, 159], "helper": 8, "must_exist_filt": 8, "ulr": 8, "css": 8, "selector": 8, "must_not_exist_filt": 8, "check_requir": 8, "check": 8, "present": 8, "chain_transform": 8, "chain": 8, "transform": 8, "broken": 8, "especi": 8, "useful": [8, 156], "select": 8, "etc": 8, "extract_transform": 8, "tag": 8, "modul": [9, 10, 19, 26, 63, 64, 67, 155], "str": [12, 13, 16, 17, 18, 24, 25, 29, 30, 31, 32, 33, 34, 36, 37, 40, 41, 43, 44, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 69, 70, 74, 75, 76, 80, 83, 85, 86, 87, 88, 89, 91, 94, 96, 98, 101, 103, 105, 108, 112, 116, 117, 118, 121, 125, 127, 129, 130, 133, 147, 153], "cc_indexes_serv": [12, 13], "collinfo": [12, 13], "datetim": [12, 13, 17, 31, 32, 45, 46, 75, 76, 116, 117, 118, 125, 127], "1": [12, 13, 17, 52, 53, 69, 70, 155, 158], "0": [12, 13, 17, 22, 23, 25, 29, 30], "9999": [12, 13, 17], "12": [12, 13, 17], "31": [12, 13, 17, 22, 23], "23": [12, 13, 17], "59": [12, 13, 17], "999999": [12, 13, 17], "int": [12, 13, 17, 18, 22, 23, 29, 30, 31, 32, 33, 36, 37, 40, 43, 44, 47, 50, 51, 54, 55, 58, 61, 62, 69, 70, 129, 130, 143, 144, 149, 150], "5": [12, 13, 69, 70, 155, 158], "prefetch_s": [12, 13], "3": [12, 13, 129, 130, 155, 158], "20": [12, 13], "async": [14, 15, 16, 17, 18, 71, 72, 73, 77, 83, 112, 131, 134, 137, 138, 141, 142, 145, 148, 151, 154], "exc_typ": [14, 71], "baseexcept": [14, 71], "exc_val": [14, 71], "exc_tb": [14, 71], "tracebacktyp": [14, 71], "static": [16, 17, 18], "client": [16, 17, 18], "clientsess": [16, 17, 18], "cdx_server": [16, 17, 18, 29, 30], "page_s": 18, "object_hook": [22, 23], "parse_float": [22, 23, 34, 41, 48, 59], "parse_int": [22, 23, 34, 41, 48, 59], "parse_const": [22, 23, 34, 41, 48, 59], "strict": [22, 23], "object_pairs_hook": [22, 23], "call": [22, 23, 160], "result": [22, 23, 160], "its": [22, 23], "valu": [22, 23, 159], "place": [22, 23], "deseri": [22, 23], "support": [22, 23, 159, 161], "rpc": [22, 23], "hint": [22, 23], "pair": [22, 23], "instead": [22, 23], "featur": [22, 23], "prioriti": [22, 23], "float": [22, 23, 33, 36, 40, 43, 47, 50, 58, 61], "equival": [22, 23], "num_str": [22, 23], "anoth": [22, 23, 159], "datatyp": [22, 23], "parser": [22, 23, 159], "decim": [22, 23], "integ": [22, 23], "infin": [22, 23], "nan": [22, 23], "rais": [22, 23], "except": [22, 23, 160], "invalid": [22, 23], "encount": [22, 23], "control": [22, 23, 161], "charact": [22, 23], "allow": [22, 23, 161], "insid": [22, 23], "context": [22, 23, 35, 42, 49, 60], "rang": [22, 23], "includ": [22, 23], "tab": [22, 23], "n": [22, 23], "r": [22, 23], "arg": 24, "kwarg": 24, "represent": [24, 25], "instanc": 24, "document": [24, 25], "idx": 25, "begin": 25, "2": [25, 155, 158], "tupl": [25, 37, 44, 51, 62, 74, 83], "mai": 25, "extran": 25, "attribut": [29, 31, 38, 45, 52, 54, 56, 117], "filenam": [31, 32, 156], "offset": [31, 32, 156, 159], "length": [31, 32, 156, 159], "digest": [31, 32, 156], "encod": [31, 32, 52, 53, 69, 70, 85, 86, 156], "timestamp": [31, 32, 156], "classmethod": [33, 34, 35, 40, 41, 42, 47, 48, 49, 58, 59, 60], "kv": [33, 40, 47, 58], "union": [33, 34, 36, 37, 40, 41, 43, 44, 47, 48, 50, 51, 58, 59, 61, 62, 125], "infer_miss": [33, 34, 35, 40, 41, 42, 47, 48, 49, 58, 59, 60], "byte": [34, 41, 48, 59, 74], "bytearrai": [34, 41, 48, 59], "kw": [34, 37, 41, 44, 48, 51, 59, 62], "exclud": [35, 42, 49, 60], "mani": [35, 42, 49, 60], "load_onli": [35, 42, 49, 60], "dump_onli": [35, 42, 49, 60], "partial": [35, 42, 49, 60], "unknown": [35, 42, 49, 60], "schemaf": [35, 42, 49, 60], "encode_json": [36, 43, 50, 61], "skipkei": [37, 44, 51, 62], "ensure_ascii": [37, 44, 51, 62], "check_circular": [37, 44, 51, 62], "allow_nan": [37, 44, 51, 62], "indent": [37, 44, 51, 62], "separ": [37, 44, 51, 62, 156], "callabl": [37, 44, 51, 62], "sort_kei": [37, 44, 51, 62], "routesconfig": [38, 39, 126], "configur": [38, 45, 56], "run": [38, 160, 161], "domain_record": [52, 53, 73, 74, 77, 83, 112, 156], "domainrecord": [52, 53, 73, 74, 77, 83, 112], "article_data": [52, 53], "factori": [52, 53, 56, 57], "warc_head": [52, 53], "http_header": [52, 53], "latin": [52, 53, 69, 70], "pipe": 52, "reason": [54, 55], "extractorconfig": [56, 57], "base_url": [69, 70], "digest_verif": [69, 70], "idownload": [71, 110, 111], "respons": [74, 87, 89, 91, 94, 96, 98, 101, 103, 105, 108], "dummi": [75, 92, 99, 139], "test": 75, "doesn": 75, "anyth": 75, "pass": [75, 159, 160], "constructor": 75, "file_path": [79, 80], "abstract": [88, 108, 116, 129, 133, 137, 138], "filter_non_ok": [92, 93, 99, 100], "simpli": [92, 99, 159, 160], "irout": [110, 111], "outstream": [110, 111, 135, 159], "istream": [110, 111, 159], "additional_info": [112, 156], "re": 117, "pattern": [117, 118], "module_path": [122, 123], "root": [129, 130, 143, 144, 149, 150], "max_file_s": [129, 130, 149, 150], "directory_prefix": [129, 130], "directory_": [129, 130], "basic": [129, 159], "extracted_data": [133, 134, 138, 142, 147, 148, 153, 154], "keep": 139, "memori": 139, "pretti": [149, 150], "usag": 155, "workflow": 155, "command": [155, 161], "line": [155, 156, 159, 161], "interfac": [155, 161], "program": 155, "guid": 155, "theori": [155, 158], "choos": [155, 158], "4": [155, 158], "web": [155, 158], "field": [155, 156, 158], "6": [155, 158], "save": [155, 158, 160], "togeth": [155, 158], "miscellan": 155, "aggreg": [155, 159], "search": 155, "strucutur": 156, "cotain": 156, "about": 156, "own": [156, 159], "follwo": 156, "gz": 156, "123": 156, "456": 156, "sha1": 156, "1234567890abcdef": 156, "utf": 156, "8": 156, "2018": 156, "00z": 156, "key1": 156, "value1": 156, "key2": 156, "value2": 156, "sql": 156, "u": 156, "warc_filenam": 156, "warc_record_offset": 156, "warc_record_length": 156, "content_digest": 156, "fetch_tim": 156, "ad": 156, "belong": 156, "section": 159, "brief": 159, "overview": 159, "project": 159, "give": 159, "idea": 159, "get": [159, 161], "commmoncrawl": 159, "find": 159, "link": 159, "condit": 159, "step": [159, 161], "handl": [159, 160], "while": [159, 161], "rest": 159, "store": 159, "multitud": 159, "resourc": 159, "our": 159, "bunch": 159, "possibl": 159, "part": 159, "collect": 159, "map": 159, "month": 159, "releas": 159, "understand": 159, "even": 159, "wa": 159, "certain": 159, "older": 159, "respect": 159, "make": [159, 161], "sure": 159, "miss": 159, "With": 159, "continu": 159, "index_queri": 159, "indexaggreg": [159, 160], "node": 159, "relat": 159, "queue": 159, "asyncdownload": [159, 160], "onc": 159, "dynam": 159, "definit": 159, "against": 159, "develop": 159, "chosen": 159, "drop": [159, 161], "fast": 159, "Or": 159, "wait": 159, "convers": 159, "just": 159, "streamer": [159, 160], "deriv": 159, "basestreamerfil": 159, "left": 159, "streamerfilejson": [159, 160], "streamerfilehtml": 159, "like": [159, 161], "differ": 159, "saver": 159, "inherit": 159, "chang": 159, "creation": 159, "initi": 160, "processorpipelin": 160, "process_domain_record": 160, "caller": 160, "wish": 160, "show": 160, "veri": 160, "programmat": [160, 161], "lib": 160, "logger": 160, "all_purpose_logg": 160, "matchtyp": 160, "integr": 160, "middlewar": 160, "synchron": 160, "query_and_extract": 160, "your_custom_extractor": 160, "yourcustomextractor": 160, "load_extractor": 160, "register_rout": 160, "bbc": 160, "index_agg": 160, "processed_url": 160, "await": 160, "design": 161, "interact": 161, "framework": 161, "suffic": 161, "99": 161, "over": 161, "further": 161, "share": 161, "so": 161, "author": 161, "law": 161, "issu": 161, "skip": 161, "under": 161, "cirmust": 161, "complet": 161, "throttl": 161, "prefer": 161, "super": 161, "cheap": 161, "parallel": 161}, "objects": {"": [[9, 0, 0, "-", "cmoncrawl"]], "cmoncrawl": [[10, 0, 0, "-", "aggregator"], [26, 0, 0, "-", "common"], [63, 0, 0, "-", "processor"]], "cmoncrawl.aggregator": [[11, 0, 0, "-", "index_query"], [19, 0, 0, "-", "utils"]], "cmoncrawl.aggregator.index_query": [[12, 1, 1, "", "IndexAggregator"]], "cmoncrawl.aggregator.index_query.IndexAggregator": [[13, 2, 1, "", "__init__"], [14, 2, 1, "", "aclose"], [15, 2, 1, "", "aopen"], [16, 2, 1, "", "get_all_CC_indexes"], [17, 2, 1, "", "get_captured_responses"], [18, 2, 1, "", "get_number_of_pages"]], "cmoncrawl.aggregator.utils": [[20, 0, 0, "-", "helpers"], [21, 0, 0, "-", "ndjson_decoder"]], "cmoncrawl.aggregator.utils.ndjson_decoder": [[22, 1, 1, "", "Decoder"]], "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder": [[23, 2, 1, "", "__init__"], [24, 2, 1, "", "decode"], [25, 2, 1, "", "raw_decode"]], "cmoncrawl.common": [[27, 0, 0, "-", "loggers"], [28, 0, 0, "-", "types"]], "cmoncrawl.common.types": [[29, 1, 1, "", "DomainCrawl"], [31, 1, 1, "", "DomainRecord"], [38, 1, 1, "", "ExtractConfig"], [45, 1, 1, "", "ExtractorConfig"], [52, 1, 1, "", "PipeMetadata"], [54, 1, 1, "", "RetrieveResponse"], [56, 1, 1, "", "RoutesConfig"]], "cmoncrawl.common.types.DomainCrawl": [[30, 2, 1, "", "__init__"]], "cmoncrawl.common.types.DomainRecord": [[32, 2, 1, "", "__init__"], [33, 2, 1, "", "from_dict"], [34, 2, 1, "", "from_json"], [35, 2, 1, "", "schema"], [36, 2, 1, "", "to_dict"], [37, 2, 1, "", "to_json"]], "cmoncrawl.common.types.ExtractConfig": [[39, 2, 1, "", "__init__"], [40, 2, 1, "", "from_dict"], [41, 2, 1, "", "from_json"], [42, 2, 1, "", "schema"], [43, 2, 1, "", "to_dict"], [44, 2, 1, "", "to_json"]], "cmoncrawl.common.types.ExtractorConfig": [[46, 2, 1, "", "__init__"], [47, 2, 1, "", "from_dict"], [48, 2, 1, "", "from_json"], [49, 2, 1, "", "schema"], [50, 2, 1, "", "to_dict"], [51, 2, 1, "", "to_json"]], "cmoncrawl.common.types.PipeMetadata": [[53, 2, 1, "", "__init__"]], "cmoncrawl.common.types.RetrieveResponse": [[55, 2, 1, "", "__init__"]], "cmoncrawl.common.types.RoutesConfig": [[57, 2, 1, "", "__init__"], [58, 2, 1, "", "from_dict"], [59, 2, 1, "", "from_json"], [60, 2, 1, "", "schema"], [61, 2, 1, "", "to_dict"], [62, 2, 1, "", "to_json"]], "cmoncrawl.processor": [[64, 0, 0, "-", "extraction"], [67, 0, 0, "-", "pipeline"]], "cmoncrawl.processor.extraction": [[65, 0, 0, "-", "filters"], [66, 0, 0, "-", "utils"]], "cmoncrawl.processor.pipeline": [[68, 0, 0, "-", "downloader"], [84, 0, 0, "-", "extractor"], [109, 0, 0, "-", "pipeline"], [113, 0, 0, "-", "router"], [128, 0, 0, "-", "streamer"]], "cmoncrawl.processor.pipeline.downloader": [[69, 1, 1, "", "AsyncDownloader"], [75, 1, 1, "", "DownloaderDummy"], [81, 1, 1, "", "IDownloader"]], "cmoncrawl.processor.pipeline.downloader.AsyncDownloader": [[70, 2, 1, "", "__init__"], [71, 2, 1, "", "aclose"], [72, 2, 1, "", "aopen"], [73, 2, 1, "", "download"], [74, 2, 1, "", "unwrap"]], "cmoncrawl.processor.pipeline.downloader.DownloaderDummy": [[76, 2, 1, "", "__init__"], [77, 2, 1, "", "download"], [78, 2, 1, "", "extract_url"], [79, 2, 1, "", "extract_year"], [80, 2, 1, "", "mine_metadata"]], "cmoncrawl.processor.pipeline.downloader.IDownloader": [[82, 2, 1, "", "__init__"], [83, 2, 1, "", "download"]], "cmoncrawl.processor.pipeline.extractor": [[85, 1, 1, "", "BaseExtractor"], [92, 1, 1, "", "DomainRecordExtractor"], [99, 1, 1, "", "HTMLExtractor"], [106, 1, 1, "", "IExtractor"]], "cmoncrawl.processor.pipeline.extractor.BaseExtractor": [[86, 2, 1, "", "__init__"], [87, 2, 1, "", "extract"], [88, 2, 1, "", "extract_soup"], [89, 2, 1, "", "filter_raw"], [90, 2, 1, "", "filter_soup"], [91, 2, 1, "", "preprocess"]], "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor": [[93, 2, 1, "", "__init__"], [94, 2, 1, "", "extract"], [95, 2, 1, "", "extract_soup"], [96, 2, 1, "", "filter_raw"], [97, 2, 1, "", "filter_soup"], [98, 2, 1, "", "preprocess"]], "cmoncrawl.processor.pipeline.extractor.HTMLExtractor": [[100, 2, 1, "", "__init__"], [101, 2, 1, "", "extract"], [102, 2, 1, "", "extract_soup"], [103, 2, 1, "", "filter_raw"], [104, 2, 1, "", "filter_soup"], [105, 2, 1, "", "preprocess"]], "cmoncrawl.processor.pipeline.extractor.IExtractor": [[107, 2, 1, "", "__init__"], [108, 2, 1, "", "extract"]], "cmoncrawl.processor.pipeline.pipeline": [[110, 1, 1, "", "ProcessorPipeline"]], "cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline": [[111, 2, 1, "", "__init__"], [112, 2, 1, "", "process_domain_record"]], "cmoncrawl.processor.pipeline.router": [[114, 1, 1, "", "IRouter"], [117, 1, 1, "", "Route"], [119, 1, 1, "", "Router"]], "cmoncrawl.processor.pipeline.router.IRouter": [[115, 2, 1, "", "__init__"], [116, 2, 1, "", "route"]], "cmoncrawl.processor.pipeline.router.Route": [[118, 2, 1, "", "__init__"]], "cmoncrawl.processor.pipeline.router.Router": [[120, 2, 1, "", "__init__"], [121, 2, 1, "", "load_extractor"], [122, 2, 1, "", "load_module"], [123, 2, 1, "", "load_module_as_extractor"], [124, 2, 1, "", "load_modules"], [125, 2, 1, "", "register_route"], [126, 2, 1, "", "register_routes"], [127, 2, 1, "", "route"]], "cmoncrawl.processor.pipeline.streamer": [[129, 1, 1, "", "BaseStreamerFile"], [135, 1, 1, "", "IStreamer"], [139, 1, 1, "", "StreamerDummy"], [143, 1, 1, "", "StreamerFileHTML"], [149, 1, 1, "", "StreamerFileJSON"]], "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile": [[130, 2, 1, "", "__init__"], [131, 2, 1, "", "clean_up"], [132, 2, 1, "", "get_file_name"], [133, 2, 1, "", "metadata_to_string"], [134, 2, 1, "", "stream"]], "cmoncrawl.processor.pipeline.streamer.IStreamer": [[136, 2, 1, "", "__init__"], [137, 2, 1, "", "clean_up"], [138, 2, 1, "", "stream"]], "cmoncrawl.processor.pipeline.streamer.StreamerDummy": [[140, 2, 1, "", "__init__"], [141, 2, 1, "", "clean_up"], [142, 2, 1, "", "stream"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML": [[144, 2, 1, "", "__init__"], [145, 2, 1, "", "clean_up"], [146, 2, 1, "", "get_file_name"], [147, 2, 1, "", "metadata_to_string"], [148, 2, 1, "", "stream"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON": [[150, 2, 1, "", "__init__"], [151, 2, 1, "", "clean_up"], [152, 2, 1, "", "get_file_name"], [153, 2, 1, "", "metadata_to_string"], [154, 2, 1, "", "stream"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"]}, "titleterms": {"api": 0, "command": [1, 2, 3, 4], "line": [1, 2, 3, 4], "interfac": [1, 4], "exampl": [1, 2, 3, 5, 6], "download": [2, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 159], "posit": [2, 3], "argument": [2, 3], "option": [2, 3], "record": [2, 3, 156], "mode": 2, "extract": [3, 6, 7, 8, 64, 65, 66, 87, 94, 101, 108, 159], "html": 3, "content": [4, 7, 155, 157, 158], "extractor": [5, 6, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 155, 159], "config": 5, "file": [5, 159], "structur": 5, "__init__": [5, 13, 23, 30, 32, 39, 46, 53, 55, 57, 70, 76, 82, 86, 93, 100, 107, 111, 115, 118, 120, 130, 136, 140, 144, 150], "py": 5, "arbitrari": 5, "code": 5, "execut": 5, "custom": [6, 160], "baseextractor": [6, 85, 86, 87, 88, 89, 90, 91], "filter": [6, 8, 65, 159], "util": [8, 19, 20, 21, 22, 23, 24, 25, 66], "cmoncrawl": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154], "aggreg": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "index_queri": [11, 12, 13, 14, 15, 16, 17, 18], "indexaggreg": [12, 13, 14, 15, 16, 17, 18], "aclos": [14, 71], "aopen": [15, 72], "get_all_cc_index": 16, "get_captured_respons": 17, "get_number_of_pag": 18, "helper": 20, "ndjson_decod": [21, 22, 23, 24, 25], "decod": [22, 23, 24, 25], "raw_decod": 25, "common": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 159], "logger": 27, "type": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62], "domaincrawl": [29, 30], "domainrecord": [31, 32, 33, 34, 35, 36, 37], "from_dict": [33, 40, 47, 58], "from_json": [34, 41, 48, 59], "schema": [35, 42, 49, 60], "to_dict": [36, 43, 50, 61], "to_json": [37, 44, 51, 62], "extractconfig": [38, 39, 40, 41, 42, 43, 44], "extractorconfig": [45, 46, 47, 48, 49, 50, 51], "pipemetadata": [52, 53], "retrieverespons": [54, 55], "routesconfig": [56, 57, 58, 59, 60, 61, 62], "processor": [63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154], "pipelin": [67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 160], "asyncdownload": [69, 70, 71, 72, 73, 74], "unwrap": 74, "downloaderdummi": [75, 76, 77, 78, 79, 80], "extract_url": 78, "extract_year": 79, "mine_metadata": 80, "idownload": [81, 82, 83], "extract_soup": [88, 95, 102], "filter_raw": [89, 96, 103], "filter_soup": [90, 97, 104], "preprocess": [91, 98, 105], "domainrecordextractor": [92, 93, 94, 95, 96, 97, 98], "htmlextractor": [99, 100, 101, 102, 103, 104, 105], "iextractor": [106, 107, 108], "processorpipelin": [110, 111, 112], "process_domain_record": 112, "router": [113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127], "irout": [114, 115, 116], "rout": [116, 117, 118, 127], "load_extractor": 121, "load_modul": [122, 124], "load_module_as_extractor": 123, "register_rout": [125, 126], "streamer": [128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154], "basestreamerfil": [129, 130, 131, 132, 133, 134], "clean_up": [131, 137, 141, 145, 151], "get_file_nam": [132, 146, 152], "metadata_to_str": [133, 147, 153], "stream": [134, 138, 142, 148, 154], "istream": [135, 136, 137, 138], "streamerdummi": [139, 140, 141, 142], "streamerfilehtml": [143, 144, 145, 146, 147, 148], "streamerfilejson": [149, 150, 151, 152, 153, 154], "welcom": 155, "commoncrawl": [155, 159], "": 155, "document": 155, "indic": 155, "tabl": 155, "domain": 156, "jsonl": 156, "format": 156, "miscellan": 157, "program": [158, 159], "guid": [158, 159], "how": 159, "from": 159, "crawl": 159, "theori": 159, "1": 159, "queri": 159, "2": 159, "3": 159, "choos": 159, "4": 159, "out": 159, "web": 159, "page": 159, "5": 159, "field": 159, "6": 159, "save": 159, "put": 160, "all": 160, "togeth": 160, "usag": 161, "workflow": 161}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"API": [[0, "api"]], "Command Line Interface": [[1, "command-line-interface"], [4, "command-line-interface"]], "Examples": [[1, "examples"], [2, "examples"], [3, "examples"]], "Command Line Download": [[2, "command-line-download"]], "Positional arguments": [[2, "positional-arguments"], [3, "positional-arguments"]], "Options": [[2, "options"]], "Record mode options": [[2, "record-mode-options"]], "Command line Extract": [[3, "command-line-extract"]], "Optional arguments": [[3, "optional-arguments"]], "Record arguments": [[3, "record-arguments"]], "Html arguments": [[3, "html-arguments"]], "Contents:": [[4, null], [7, null], [155, null], [157, null], [158, null]], "Extractor config file": [[5, "extractor-config-file"]], "Structure": [[5, "structure"]], "Example": [[5, "example"], [6, "example"]], "__init__.py": [[5, "init-py"]], "Arbitrary Code Execution": [[5, "arbitrary-code-execution"]], "Custom Extractor": [[6, "custom-extractor"]], "BaseExtractor": [[6, "baseextractor"]], "Extraction": [[6, "extraction"], [7, "extraction"], [8, "extraction"]], "Filtering": [[6, "filtering"], [8, "filtering"]], "Extraction utils": [[8, "extraction-utils"]], "cmoncrawl": [[9, "module-cmoncrawl"]], "cmoncrawl.aggregator": [[10, "module-cmoncrawl.aggregator"]], "cmoncrawl.aggregator.index_query": [[11, "module-cmoncrawl.aggregator.index_query"]], "cmoncrawl.aggregator.index_query.IndexAggregator": [[12, "cmoncrawl-aggregator-index-query-indexaggregator"]], "cmoncrawl.aggregator.index_query.IndexAggregator.__init__": [[13, "cmoncrawl-aggregator-index-query-indexaggregator-init"]], "cmoncrawl.aggregator.index_query.IndexAggregator.aclose": [[14, "cmoncrawl-aggregator-index-query-indexaggregator-aclose"]], "cmoncrawl.aggregator.index_query.IndexAggregator.aopen": [[15, "cmoncrawl-aggregator-index-query-indexaggregator-aopen"]], "cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes": [[16, "cmoncrawl-aggregator-index-query-indexaggregator-get-all-cc-indexes"]], "cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses": [[17, "cmoncrawl-aggregator-index-query-indexaggregator-get-captured-responses"]], "cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages": [[18, "cmoncrawl-aggregator-index-query-indexaggregator-get-number-of-pages"]], "cmoncrawl.aggregator.utils": [[19, "module-cmoncrawl.aggregator.utils"]], "cmoncrawl.aggregator.utils.helpers": [[20, "module-cmoncrawl.aggregator.utils.helpers"]], "cmoncrawl.aggregator.utils.ndjson_decoder": [[21, "module-cmoncrawl.aggregator.utils.ndjson_decoder"]], "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder": [[22, "cmoncrawl-aggregator-utils-ndjson-decoder-decoder"]], "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__": [[23, "cmoncrawl-aggregator-utils-ndjson-decoder-decoder-init"]], "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode": [[24, "cmoncrawl-aggregator-utils-ndjson-decoder-decoder-decode"]], "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode": [[25, "cmoncrawl-aggregator-utils-ndjson-decoder-decoder-raw-decode"]], "cmoncrawl.common": [[26, "module-cmoncrawl.common"]], "cmoncrawl.common.loggers": [[27, "module-cmoncrawl.common.loggers"]], "cmoncrawl.common.types": [[28, "module-cmoncrawl.common.types"]], "cmoncrawl.common.types.DomainCrawl": [[29, "cmoncrawl-common-types-domaincrawl"]], "cmoncrawl.common.types.DomainCrawl.__init__": [[30, "cmoncrawl-common-types-domaincrawl-init"]], "cmoncrawl.common.types.DomainRecord": [[31, "cmoncrawl-common-types-domainrecord"]], "cmoncrawl.common.types.DomainRecord.__init__": [[32, "cmoncrawl-common-types-domainrecord-init"]], "cmoncrawl.common.types.DomainRecord.from_dict": [[33, "cmoncrawl-common-types-domainrecord-from-dict"]], "cmoncrawl.common.types.DomainRecord.from_json": [[34, "cmoncrawl-common-types-domainrecord-from-json"]], "cmoncrawl.common.types.DomainRecord.schema": [[35, "cmoncrawl-common-types-domainrecord-schema"]], "cmoncrawl.common.types.DomainRecord.to_dict": [[36, "cmoncrawl-common-types-domainrecord-to-dict"]], "cmoncrawl.common.types.DomainRecord.to_json": [[37, "cmoncrawl-common-types-domainrecord-to-json"]], "cmoncrawl.common.types.ExtractConfig": [[38, "cmoncrawl-common-types-extractconfig"]], "cmoncrawl.common.types.ExtractConfig.__init__": [[39, "cmoncrawl-common-types-extractconfig-init"]], "cmoncrawl.common.types.ExtractConfig.from_dict": [[40, "cmoncrawl-common-types-extractconfig-from-dict"]], "cmoncrawl.common.types.ExtractConfig.from_json": [[41, "cmoncrawl-common-types-extractconfig-from-json"]], "cmoncrawl.common.types.ExtractConfig.schema": [[42, "cmoncrawl-common-types-extractconfig-schema"]], "cmoncrawl.common.types.ExtractConfig.to_dict": [[43, "cmoncrawl-common-types-extractconfig-to-dict"]], "cmoncrawl.common.types.ExtractConfig.to_json": [[44, "cmoncrawl-common-types-extractconfig-to-json"]], "cmoncrawl.common.types.ExtractorConfig": [[45, "cmoncrawl-common-types-extractorconfig"]], "cmoncrawl.common.types.ExtractorConfig.__init__": [[46, "cmoncrawl-common-types-extractorconfig-init"]], "cmoncrawl.common.types.ExtractorConfig.from_dict": [[47, "cmoncrawl-common-types-extractorconfig-from-dict"]], "cmoncrawl.common.types.ExtractorConfig.from_json": [[48, "cmoncrawl-common-types-extractorconfig-from-json"]], "cmoncrawl.common.types.ExtractorConfig.schema": [[49, "cmoncrawl-common-types-extractorconfig-schema"]], "cmoncrawl.common.types.ExtractorConfig.to_dict": [[50, "cmoncrawl-common-types-extractorconfig-to-dict"]], "cmoncrawl.common.types.ExtractorConfig.to_json": [[51, "cmoncrawl-common-types-extractorconfig-to-json"]], "cmoncrawl.common.types.PipeMetadata": [[52, "cmoncrawl-common-types-pipemetadata"]], "cmoncrawl.common.types.PipeMetadata.__init__": [[53, "cmoncrawl-common-types-pipemetadata-init"]], "cmoncrawl.common.types.RetrieveResponse": [[54, "cmoncrawl-common-types-retrieveresponse"]], "cmoncrawl.common.types.RetrieveResponse.__init__": [[55, "cmoncrawl-common-types-retrieveresponse-init"]], "cmoncrawl.common.types.RoutesConfig": [[56, "cmoncrawl-common-types-routesconfig"]], "cmoncrawl.common.types.RoutesConfig.__init__": [[57, "cmoncrawl-common-types-routesconfig-init"]], "cmoncrawl.common.types.RoutesConfig.from_dict": [[58, "cmoncrawl-common-types-routesconfig-from-dict"]], "cmoncrawl.common.types.RoutesConfig.from_json": [[59, "cmoncrawl-common-types-routesconfig-from-json"]], "cmoncrawl.common.types.RoutesConfig.schema": [[60, "cmoncrawl-common-types-routesconfig-schema"]], "cmoncrawl.common.types.RoutesConfig.to_dict": [[61, "cmoncrawl-common-types-routesconfig-to-dict"]], "cmoncrawl.common.types.RoutesConfig.to_json": [[62, "cmoncrawl-common-types-routesconfig-to-json"]], "cmoncrawl.processor": [[63, "module-cmoncrawl.processor"]], "cmoncrawl.processor.extraction": [[64, "module-cmoncrawl.processor.extraction"]], "cmoncrawl.processor.extraction.filters": [[65, "module-cmoncrawl.processor.extraction.filters"]], "cmoncrawl.processor.extraction.utils": [[66, "module-cmoncrawl.processor.extraction.utils"]], "cmoncrawl.processor.pipeline": [[67, "module-cmoncrawl.processor.pipeline"]], "cmoncrawl.processor.pipeline.downloader": [[68, "module-cmoncrawl.processor.pipeline.downloader"]], "cmoncrawl.processor.pipeline.downloader.AsyncDownloader": [[69, "cmoncrawl-processor-pipeline-downloader-asyncdownloader"]], "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__": [[70, "cmoncrawl-processor-pipeline-downloader-asyncdownloader-init"]], "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose": [[71, "cmoncrawl-processor-pipeline-downloader-asyncdownloader-aclose"]], "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen": [[72, "cmoncrawl-processor-pipeline-downloader-asyncdownloader-aopen"]], "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download": [[73, "cmoncrawl-processor-pipeline-downloader-asyncdownloader-download"]], "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap": [[74, "cmoncrawl-processor-pipeline-downloader-asyncdownloader-unwrap"]], "cmoncrawl.processor.pipeline.downloader.DownloaderDummy": [[75, "cmoncrawl-processor-pipeline-downloader-downloaderdummy"]], "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__": [[76, "cmoncrawl-processor-pipeline-downloader-downloaderdummy-init"]], "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download": [[77, "cmoncrawl-processor-pipeline-downloader-downloaderdummy-download"]], "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url": [[78, "cmoncrawl-processor-pipeline-downloader-downloaderdummy-extract-url"]], "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year": [[79, "cmoncrawl-processor-pipeline-downloader-downloaderdummy-extract-year"]], "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata": [[80, "cmoncrawl-processor-pipeline-downloader-downloaderdummy-mine-metadata"]], "cmoncrawl.processor.pipeline.downloader.IDownloader": [[81, "cmoncrawl-processor-pipeline-downloader-idownloader"]], "cmoncrawl.processor.pipeline.downloader.IDownloader.__init__": [[82, "cmoncrawl-processor-pipeline-downloader-idownloader-init"]], "cmoncrawl.processor.pipeline.downloader.IDownloader.download": [[83, "cmoncrawl-processor-pipeline-downloader-idownloader-download"]], "cmoncrawl.processor.pipeline.extractor": [[84, "module-cmoncrawl.processor.pipeline.extractor"]], "cmoncrawl.processor.pipeline.extractor.BaseExtractor": [[85, "cmoncrawl-processor-pipeline-extractor-baseextractor"]], "cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__": [[86, "cmoncrawl-processor-pipeline-extractor-baseextractor-init"]], "cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract": [[87, "cmoncrawl-processor-pipeline-extractor-baseextractor-extract"]], "cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup": [[88, "cmoncrawl-processor-pipeline-extractor-baseextractor-extract-soup"]], "cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw": [[89, "cmoncrawl-processor-pipeline-extractor-baseextractor-filter-raw"]], "cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup": [[90, "cmoncrawl-processor-pipeline-extractor-baseextractor-filter-soup"]], "cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess": [[91, "cmoncrawl-processor-pipeline-extractor-baseextractor-preprocess"]], "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor": [[92, "cmoncrawl-processor-pipeline-extractor-domainrecordextractor"]], "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__": [[93, "cmoncrawl-processor-pipeline-extractor-domainrecordextractor-init"]], "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract": [[94, "cmoncrawl-processor-pipeline-extractor-domainrecordextractor-extract"]], "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup": [[95, "cmoncrawl-processor-pipeline-extractor-domainrecordextractor-extract-soup"]], "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw": [[96, "cmoncrawl-processor-pipeline-extractor-domainrecordextractor-filter-raw"]], "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup": [[97, "cmoncrawl-processor-pipeline-extractor-domainrecordextractor-filter-soup"]], "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess": [[98, "cmoncrawl-processor-pipeline-extractor-domainrecordextractor-preprocess"]], "cmoncrawl.processor.pipeline.extractor.HTMLExtractor": [[99, "cmoncrawl-processor-pipeline-extractor-htmlextractor"]], "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__": [[100, "cmoncrawl-processor-pipeline-extractor-htmlextractor-init"]], "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract": [[101, "cmoncrawl-processor-pipeline-extractor-htmlextractor-extract"]], "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup": [[102, "cmoncrawl-processor-pipeline-extractor-htmlextractor-extract-soup"]], "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw": [[103, "cmoncrawl-processor-pipeline-extractor-htmlextractor-filter-raw"]], "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup": [[104, "cmoncrawl-processor-pipeline-extractor-htmlextractor-filter-soup"]], "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess": [[105, "cmoncrawl-processor-pipeline-extractor-htmlextractor-preprocess"]], "cmoncrawl.processor.pipeline.extractor.IExtractor": [[106, "cmoncrawl-processor-pipeline-extractor-iextractor"]], "cmoncrawl.processor.pipeline.extractor.IExtractor.__init__": [[107, "cmoncrawl-processor-pipeline-extractor-iextractor-init"]], "cmoncrawl.processor.pipeline.extractor.IExtractor.extract": [[108, "cmoncrawl-processor-pipeline-extractor-iextractor-extract"]], "cmoncrawl.processor.pipeline.pipeline": [[109, "module-cmoncrawl.processor.pipeline.pipeline"]], "cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline": [[110, "cmoncrawl-processor-pipeline-pipeline-processorpipeline"]], "cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__": [[111, "cmoncrawl-processor-pipeline-pipeline-processorpipeline-init"]], "cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record": [[112, "cmoncrawl-processor-pipeline-pipeline-processorpipeline-process-domain-record"]], "cmoncrawl.processor.pipeline.router": [[113, "module-cmoncrawl.processor.pipeline.router"]], "cmoncrawl.processor.pipeline.router.IRouter": [[114, "cmoncrawl-processor-pipeline-router-irouter"]], "cmoncrawl.processor.pipeline.router.IRouter.__init__": [[115, "cmoncrawl-processor-pipeline-router-irouter-init"]], "cmoncrawl.processor.pipeline.router.IRouter.route": [[116, "cmoncrawl-processor-pipeline-router-irouter-route"]], "cmoncrawl.processor.pipeline.router.Route": [[117, "cmoncrawl-processor-pipeline-router-route"]], "cmoncrawl.processor.pipeline.router.Route.__init__": [[118, "cmoncrawl-processor-pipeline-router-route-init"]], "cmoncrawl.processor.pipeline.router.Router": [[119, "cmoncrawl-processor-pipeline-router-router"]], "cmoncrawl.processor.pipeline.router.Router.__init__": [[120, "cmoncrawl-processor-pipeline-router-router-init"]], "cmoncrawl.processor.pipeline.router.Router.load_extractor": [[121, "cmoncrawl-processor-pipeline-router-router-load-extractor"]], "cmoncrawl.processor.pipeline.router.Router.load_module": [[122, "cmoncrawl-processor-pipeline-router-router-load-module"]], "cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor": [[123, "cmoncrawl-processor-pipeline-router-router-load-module-as-extractor"]], "cmoncrawl.processor.pipeline.router.Router.load_modules": [[124, "cmoncrawl-processor-pipeline-router-router-load-modules"]], "cmoncrawl.processor.pipeline.router.Router.register_route": [[125, "cmoncrawl-processor-pipeline-router-router-register-route"]], "cmoncrawl.processor.pipeline.router.Router.register_routes": [[126, "cmoncrawl-processor-pipeline-router-router-register-routes"]], "cmoncrawl.processor.pipeline.router.Router.route": [[127, "cmoncrawl-processor-pipeline-router-router-route"]], "cmoncrawl.processor.pipeline.streamer": [[128, "module-cmoncrawl.processor.pipeline.streamer"]], "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile": [[129, "cmoncrawl-processor-pipeline-streamer-basestreamerfile"]], "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__": [[130, "cmoncrawl-processor-pipeline-streamer-basestreamerfile-init"]], "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up": [[131, "cmoncrawl-processor-pipeline-streamer-basestreamerfile-clean-up"]], "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name": [[132, "cmoncrawl-processor-pipeline-streamer-basestreamerfile-get-file-name"]], "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string": [[133, "cmoncrawl-processor-pipeline-streamer-basestreamerfile-metadata-to-string"]], "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream": [[134, "cmoncrawl-processor-pipeline-streamer-basestreamerfile-stream"]], "cmoncrawl.processor.pipeline.streamer.IStreamer": [[135, "cmoncrawl-processor-pipeline-streamer-istreamer"]], "cmoncrawl.processor.pipeline.streamer.IStreamer.__init__": [[136, "cmoncrawl-processor-pipeline-streamer-istreamer-init"]], "cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up": [[137, "cmoncrawl-processor-pipeline-streamer-istreamer-clean-up"]], "cmoncrawl.processor.pipeline.streamer.IStreamer.stream": [[138, "cmoncrawl-processor-pipeline-streamer-istreamer-stream"]], "cmoncrawl.processor.pipeline.streamer.StreamerDummy": [[139, "cmoncrawl-processor-pipeline-streamer-streamerdummy"]], "cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__": [[140, "cmoncrawl-processor-pipeline-streamer-streamerdummy-init"]], "cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up": [[141, "cmoncrawl-processor-pipeline-streamer-streamerdummy-clean-up"]], "cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream": [[142, "cmoncrawl-processor-pipeline-streamer-streamerdummy-stream"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML": [[143, "cmoncrawl-processor-pipeline-streamer-streamerfilehtml"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__": [[144, "cmoncrawl-processor-pipeline-streamer-streamerfilehtml-init"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up": [[145, "cmoncrawl-processor-pipeline-streamer-streamerfilehtml-clean-up"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name": [[146, "cmoncrawl-processor-pipeline-streamer-streamerfilehtml-get-file-name"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string": [[147, "cmoncrawl-processor-pipeline-streamer-streamerfilehtml-metadata-to-string"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream": [[148, "cmoncrawl-processor-pipeline-streamer-streamerfilehtml-stream"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON": [[149, "cmoncrawl-processor-pipeline-streamer-streamerfilejson"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__": [[150, "cmoncrawl-processor-pipeline-streamer-streamerfilejson-init"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up": [[151, "cmoncrawl-processor-pipeline-streamer-streamerfilejson-clean-up"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name": [[152, "cmoncrawl-processor-pipeline-streamer-streamerfilejson-get-file-name"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string": [[153, "cmoncrawl-processor-pipeline-streamer-streamerfilejson-metadata-to-string"]], "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream": [[154, "cmoncrawl-processor-pipeline-streamer-streamerfilejson-stream"]], "Welcome to CommonCrawl Extractor\u2019s documentation!": [[155, "welcome-to-commoncrawl-extractor-s-documentation"]], "Indices and tables": [[155, "indices-and-tables"]], "Domain Record": [[156, "domain-record"]], "Domain Record JSONL format": [[156, "domain-record-jsonl-format"]], "Miscellaneous": [[157, "miscellaneous"]], "Programming Guide": [[158, "programming-guide"], [159, "programming-guide"]], "How to extract from Common Crawl (theory)": [[159, "how-to-extract-from-common-crawl-theory"]], "1. Querying CommonCrawl": [[159, "querying-commoncrawl"]], "2. Downloading a file": [[159, "downloading-a-file"]], "3. Choose extractor": [[159, "choose-extractor"]], "4. Filtering out the web page": [[159, "filtering-out-the-web-page"]], "5. Extract fields from the page": [[159, "extract-fields-from-the-page"]], "6. File saving": [[159, "file-saving"]], "Custom Pipeline": [[160, "custom-pipeline"]], "Pipeline": [[160, "pipeline"]], "Putting it all together": [[160, "putting-it-all-together"]], "Usage": [[161, "usage"]], "Workflow": [[161, "workflow"]]}, "indexentries": {"cmoncrawl": [[9, "module-cmoncrawl"]], "module": [[9, "module-cmoncrawl"], [10, "module-cmoncrawl.aggregator"], [11, "module-cmoncrawl.aggregator.index_query"], [19, "module-cmoncrawl.aggregator.utils"], [20, "module-cmoncrawl.aggregator.utils.helpers"], [21, "module-cmoncrawl.aggregator.utils.ndjson_decoder"], [26, "module-cmoncrawl.common"], [27, "module-cmoncrawl.common.loggers"], [28, "module-cmoncrawl.common.types"], [63, "module-cmoncrawl.processor"], [64, "module-cmoncrawl.processor.extraction"], [65, "module-cmoncrawl.processor.extraction.filters"], [66, "module-cmoncrawl.processor.extraction.utils"], [67, "module-cmoncrawl.processor.pipeline"], [68, "module-cmoncrawl.processor.pipeline.downloader"], [84, "module-cmoncrawl.processor.pipeline.extractor"], [109, "module-cmoncrawl.processor.pipeline.pipeline"], [113, "module-cmoncrawl.processor.pipeline.router"], [128, "module-cmoncrawl.processor.pipeline.streamer"]], "cmoncrawl.aggregator": [[10, "module-cmoncrawl.aggregator"]], "cmoncrawl.aggregator.index_query": [[11, "module-cmoncrawl.aggregator.index_query"]], "indexaggregator (class in cmoncrawl.aggregator.index_query)": [[12, "cmoncrawl.aggregator.index_query.IndexAggregator"]], "__init__() (cmoncrawl.aggregator.index_query.indexaggregator method)": [[12, "cmoncrawl.aggregator.index_query.IndexAggregator.__init__"], [13, "cmoncrawl.aggregator.index_query.IndexAggregator.__init__"]], "aclose() (cmoncrawl.aggregator.index_query.indexaggregator method)": [[14, "cmoncrawl.aggregator.index_query.IndexAggregator.aclose"]], "aopen() (cmoncrawl.aggregator.index_query.indexaggregator method)": [[15, "cmoncrawl.aggregator.index_query.IndexAggregator.aopen"]], "get_all_cc_indexes() (cmoncrawl.aggregator.index_query.indexaggregator static method)": [[16, "cmoncrawl.aggregator.index_query.IndexAggregator.get_all_CC_indexes"]], "get_captured_responses() (cmoncrawl.aggregator.index_query.indexaggregator static method)": [[17, "cmoncrawl.aggregator.index_query.IndexAggregator.get_captured_responses"]], "get_number_of_pages() (cmoncrawl.aggregator.index_query.indexaggregator static method)": [[18, "cmoncrawl.aggregator.index_query.IndexAggregator.get_number_of_pages"]], "cmoncrawl.aggregator.utils": [[19, "module-cmoncrawl.aggregator.utils"]], "cmoncrawl.aggregator.utils.helpers": [[20, "module-cmoncrawl.aggregator.utils.helpers"]], "cmoncrawl.aggregator.utils.ndjson_decoder": [[21, "module-cmoncrawl.aggregator.utils.ndjson_decoder"]], "decoder (class in cmoncrawl.aggregator.utils.ndjson_decoder)": [[22, "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder"]], "__init__() (cmoncrawl.aggregator.utils.ndjson_decoder.decoder method)": [[22, "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__"], [23, "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.__init__"]], "decode() (cmoncrawl.aggregator.utils.ndjson_decoder.decoder method)": [[24, "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.decode"]], "raw_decode() (cmoncrawl.aggregator.utils.ndjson_decoder.decoder method)": [[25, "cmoncrawl.aggregator.utils.ndjson_decoder.Decoder.raw_decode"]], "cmoncrawl.common": [[26, "module-cmoncrawl.common"]], "cmoncrawl.common.loggers": [[27, "module-cmoncrawl.common.loggers"]], "cmoncrawl.common.types": [[28, "module-cmoncrawl.common.types"]], "domaincrawl (class in cmoncrawl.common.types)": [[29, "cmoncrawl.common.types.DomainCrawl"]], "__init__() (cmoncrawl.common.types.domaincrawl method)": [[29, "cmoncrawl.common.types.DomainCrawl.__init__"], [30, "cmoncrawl.common.types.DomainCrawl.__init__"]], "domainrecord (class in cmoncrawl.common.types)": [[31, "cmoncrawl.common.types.DomainRecord"]], "__init__() (cmoncrawl.common.types.domainrecord method)": [[31, "cmoncrawl.common.types.DomainRecord.__init__"], [32, "cmoncrawl.common.types.DomainRecord.__init__"]], "from_dict() (cmoncrawl.common.types.domainrecord class method)": [[33, "cmoncrawl.common.types.DomainRecord.from_dict"]], "from_json() (cmoncrawl.common.types.domainrecord class method)": [[34, "cmoncrawl.common.types.DomainRecord.from_json"]], "schema() (cmoncrawl.common.types.domainrecord class method)": [[35, "cmoncrawl.common.types.DomainRecord.schema"]], "to_dict() (cmoncrawl.common.types.domainrecord method)": [[36, "cmoncrawl.common.types.DomainRecord.to_dict"]], "to_json() (cmoncrawl.common.types.domainrecord method)": [[37, "cmoncrawl.common.types.DomainRecord.to_json"]], "extractconfig (class in cmoncrawl.common.types)": [[38, "cmoncrawl.common.types.ExtractConfig"]], "__init__() (cmoncrawl.common.types.extractconfig method)": [[38, "cmoncrawl.common.types.ExtractConfig.__init__"], [39, "cmoncrawl.common.types.ExtractConfig.__init__"]], "from_dict() (cmoncrawl.common.types.extractconfig class method)": [[40, "cmoncrawl.common.types.ExtractConfig.from_dict"]], "from_json() (cmoncrawl.common.types.extractconfig class method)": [[41, "cmoncrawl.common.types.ExtractConfig.from_json"]], "schema() (cmoncrawl.common.types.extractconfig class method)": [[42, "cmoncrawl.common.types.ExtractConfig.schema"]], "to_dict() (cmoncrawl.common.types.extractconfig method)": [[43, "cmoncrawl.common.types.ExtractConfig.to_dict"]], "to_json() (cmoncrawl.common.types.extractconfig method)": [[44, "cmoncrawl.common.types.ExtractConfig.to_json"]], "extractorconfig (class in cmoncrawl.common.types)": [[45, "cmoncrawl.common.types.ExtractorConfig"]], "__init__() (cmoncrawl.common.types.extractorconfig method)": [[45, "cmoncrawl.common.types.ExtractorConfig.__init__"], [46, "cmoncrawl.common.types.ExtractorConfig.__init__"]], "from_dict() (cmoncrawl.common.types.extractorconfig class method)": [[47, "cmoncrawl.common.types.ExtractorConfig.from_dict"]], "from_json() (cmoncrawl.common.types.extractorconfig class method)": [[48, "cmoncrawl.common.types.ExtractorConfig.from_json"]], "schema() (cmoncrawl.common.types.extractorconfig class method)": [[49, "cmoncrawl.common.types.ExtractorConfig.schema"]], "to_dict() (cmoncrawl.common.types.extractorconfig method)": [[50, "cmoncrawl.common.types.ExtractorConfig.to_dict"]], "to_json() (cmoncrawl.common.types.extractorconfig method)": [[51, "cmoncrawl.common.types.ExtractorConfig.to_json"]], "pipemetadata (class in cmoncrawl.common.types)": [[52, "cmoncrawl.common.types.PipeMetadata"]], "__init__() (cmoncrawl.common.types.pipemetadata method)": [[52, "cmoncrawl.common.types.PipeMetadata.__init__"], [53, "cmoncrawl.common.types.PipeMetadata.__init__"]], "retrieveresponse (class in cmoncrawl.common.types)": [[54, "cmoncrawl.common.types.RetrieveResponse"]], "__init__() (cmoncrawl.common.types.retrieveresponse method)": [[54, "cmoncrawl.common.types.RetrieveResponse.__init__"], [55, "cmoncrawl.common.types.RetrieveResponse.__init__"]], "routesconfig (class in cmoncrawl.common.types)": [[56, "cmoncrawl.common.types.RoutesConfig"]], "__init__() (cmoncrawl.common.types.routesconfig method)": [[56, "cmoncrawl.common.types.RoutesConfig.__init__"], [57, "cmoncrawl.common.types.RoutesConfig.__init__"]], "from_dict() (cmoncrawl.common.types.routesconfig class method)": [[58, "cmoncrawl.common.types.RoutesConfig.from_dict"]], "from_json() (cmoncrawl.common.types.routesconfig class method)": [[59, "cmoncrawl.common.types.RoutesConfig.from_json"]], "schema() (cmoncrawl.common.types.routesconfig class method)": [[60, "cmoncrawl.common.types.RoutesConfig.schema"]], "to_dict() (cmoncrawl.common.types.routesconfig method)": [[61, "cmoncrawl.common.types.RoutesConfig.to_dict"]], "to_json() (cmoncrawl.common.types.routesconfig method)": [[62, "cmoncrawl.common.types.RoutesConfig.to_json"]], "cmoncrawl.processor": [[63, "module-cmoncrawl.processor"]], "cmoncrawl.processor.extraction": [[64, "module-cmoncrawl.processor.extraction"]], "cmoncrawl.processor.extraction.filters": [[65, "module-cmoncrawl.processor.extraction.filters"]], "cmoncrawl.processor.extraction.utils": [[66, "module-cmoncrawl.processor.extraction.utils"]], "cmoncrawl.processor.pipeline": [[67, "module-cmoncrawl.processor.pipeline"]], "cmoncrawl.processor.pipeline.downloader": [[68, "module-cmoncrawl.processor.pipeline.downloader"]], "asyncdownloader (class in cmoncrawl.processor.pipeline.downloader)": [[69, "cmoncrawl.processor.pipeline.downloader.AsyncDownloader"]], "__init__() (cmoncrawl.processor.pipeline.downloader.asyncdownloader method)": [[69, "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__"], [70, "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.__init__"]], "aclose() (cmoncrawl.processor.pipeline.downloader.asyncdownloader method)": [[71, "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aclose"]], "aopen() (cmoncrawl.processor.pipeline.downloader.asyncdownloader method)": [[72, "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.aopen"]], "download() (cmoncrawl.processor.pipeline.downloader.asyncdownloader method)": [[73, "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.download"]], "unwrap() (cmoncrawl.processor.pipeline.downloader.asyncdownloader method)": [[74, "cmoncrawl.processor.pipeline.downloader.AsyncDownloader.unwrap"]], "downloaderdummy (class in cmoncrawl.processor.pipeline.downloader)": [[75, "cmoncrawl.processor.pipeline.downloader.DownloaderDummy"]], "__init__() (cmoncrawl.processor.pipeline.downloader.downloaderdummy method)": [[75, "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__"], [76, "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.__init__"]], "download() (cmoncrawl.processor.pipeline.downloader.downloaderdummy method)": [[77, "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.download"]], "extract_url() (cmoncrawl.processor.pipeline.downloader.downloaderdummy method)": [[78, "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_url"]], "extract_year() (cmoncrawl.processor.pipeline.downloader.downloaderdummy method)": [[79, "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.extract_year"]], "mine_metadata() (cmoncrawl.processor.pipeline.downloader.downloaderdummy method)": [[80, "cmoncrawl.processor.pipeline.downloader.DownloaderDummy.mine_metadata"]], "idownloader (class in cmoncrawl.processor.pipeline.downloader)": [[81, "cmoncrawl.processor.pipeline.downloader.IDownloader"]], "__init__() (cmoncrawl.processor.pipeline.downloader.idownloader method)": [[81, "cmoncrawl.processor.pipeline.downloader.IDownloader.__init__"], [82, "cmoncrawl.processor.pipeline.downloader.IDownloader.__init__"]], "download() (cmoncrawl.processor.pipeline.downloader.idownloader method)": [[83, "cmoncrawl.processor.pipeline.downloader.IDownloader.download"]], "cmoncrawl.processor.pipeline.extractor": [[84, "module-cmoncrawl.processor.pipeline.extractor"]], "baseextractor (class in cmoncrawl.processor.pipeline.extractor)": [[85, "cmoncrawl.processor.pipeline.extractor.BaseExtractor"]], "__init__() (cmoncrawl.processor.pipeline.extractor.baseextractor method)": [[85, "cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__"], [86, "cmoncrawl.processor.pipeline.extractor.BaseExtractor.__init__"]], "extract() (cmoncrawl.processor.pipeline.extractor.baseextractor method)": [[87, "cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract"]], "extract_soup() (cmoncrawl.processor.pipeline.extractor.baseextractor method)": [[88, "cmoncrawl.processor.pipeline.extractor.BaseExtractor.extract_soup"]], "filter_raw() (cmoncrawl.processor.pipeline.extractor.baseextractor method)": [[89, "cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_raw"]], "filter_soup() (cmoncrawl.processor.pipeline.extractor.baseextractor method)": [[90, "cmoncrawl.processor.pipeline.extractor.BaseExtractor.filter_soup"]], "preprocess() (cmoncrawl.processor.pipeline.extractor.baseextractor method)": [[91, "cmoncrawl.processor.pipeline.extractor.BaseExtractor.preprocess"]], "domainrecordextractor (class in cmoncrawl.processor.pipeline.extractor)": [[92, "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor"]], "__init__() (cmoncrawl.processor.pipeline.extractor.domainrecordextractor method)": [[92, "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__"], [93, "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.__init__"]], "extract() (cmoncrawl.processor.pipeline.extractor.domainrecordextractor method)": [[94, "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract"]], "extract_soup() (cmoncrawl.processor.pipeline.extractor.domainrecordextractor method)": [[95, "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.extract_soup"]], "filter_raw() (cmoncrawl.processor.pipeline.extractor.domainrecordextractor method)": [[96, "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_raw"]], "filter_soup() (cmoncrawl.processor.pipeline.extractor.domainrecordextractor method)": [[97, "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.filter_soup"]], "preprocess() (cmoncrawl.processor.pipeline.extractor.domainrecordextractor method)": [[98, "cmoncrawl.processor.pipeline.extractor.DomainRecordExtractor.preprocess"]], "htmlextractor (class in cmoncrawl.processor.pipeline.extractor)": [[99, "cmoncrawl.processor.pipeline.extractor.HTMLExtractor"]], "__init__() (cmoncrawl.processor.pipeline.extractor.htmlextractor method)": [[99, "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__"], [100, "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.__init__"]], "extract() (cmoncrawl.processor.pipeline.extractor.htmlextractor method)": [[101, "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract"]], "extract_soup() (cmoncrawl.processor.pipeline.extractor.htmlextractor method)": [[102, "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.extract_soup"]], "filter_raw() (cmoncrawl.processor.pipeline.extractor.htmlextractor method)": [[103, "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_raw"]], "filter_soup() (cmoncrawl.processor.pipeline.extractor.htmlextractor method)": [[104, "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.filter_soup"]], "preprocess() (cmoncrawl.processor.pipeline.extractor.htmlextractor method)": [[105, "cmoncrawl.processor.pipeline.extractor.HTMLExtractor.preprocess"]], "iextractor (class in cmoncrawl.processor.pipeline.extractor)": [[106, "cmoncrawl.processor.pipeline.extractor.IExtractor"]], "__init__() (cmoncrawl.processor.pipeline.extractor.iextractor method)": [[106, "cmoncrawl.processor.pipeline.extractor.IExtractor.__init__"], [107, "cmoncrawl.processor.pipeline.extractor.IExtractor.__init__"]], "extract() (cmoncrawl.processor.pipeline.extractor.iextractor method)": [[108, "cmoncrawl.processor.pipeline.extractor.IExtractor.extract"]], "cmoncrawl.processor.pipeline.pipeline": [[109, "module-cmoncrawl.processor.pipeline.pipeline"]], "processorpipeline (class in cmoncrawl.processor.pipeline.pipeline)": [[110, "cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline"]], "__init__() (cmoncrawl.processor.pipeline.pipeline.processorpipeline method)": [[110, "cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__"], [111, "cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.__init__"]], "process_domain_record() (cmoncrawl.processor.pipeline.pipeline.processorpipeline method)": [[112, "cmoncrawl.processor.pipeline.pipeline.ProcessorPipeline.process_domain_record"]], "cmoncrawl.processor.pipeline.router": [[113, "module-cmoncrawl.processor.pipeline.router"]], "irouter (class in cmoncrawl.processor.pipeline.router)": [[114, "cmoncrawl.processor.pipeline.router.IRouter"]], "__init__() (cmoncrawl.processor.pipeline.router.irouter method)": [[114, "cmoncrawl.processor.pipeline.router.IRouter.__init__"], [115, "cmoncrawl.processor.pipeline.router.IRouter.__init__"]], "route() (cmoncrawl.processor.pipeline.router.irouter method)": [[116, "cmoncrawl.processor.pipeline.router.IRouter.route"]], "route (class in cmoncrawl.processor.pipeline.router)": [[117, "cmoncrawl.processor.pipeline.router.Route"]], "__init__() (cmoncrawl.processor.pipeline.router.route method)": [[117, "cmoncrawl.processor.pipeline.router.Route.__init__"], [118, "cmoncrawl.processor.pipeline.router.Route.__init__"]], "router (class in cmoncrawl.processor.pipeline.router)": [[119, "cmoncrawl.processor.pipeline.router.Router"]], "__init__() (cmoncrawl.processor.pipeline.router.router method)": [[119, "cmoncrawl.processor.pipeline.router.Router.__init__"], [120, "cmoncrawl.processor.pipeline.router.Router.__init__"]], "load_extractor() (cmoncrawl.processor.pipeline.router.router method)": [[121, "cmoncrawl.processor.pipeline.router.Router.load_extractor"]], "load_module() (cmoncrawl.processor.pipeline.router.router method)": [[122, "cmoncrawl.processor.pipeline.router.Router.load_module"]], "load_module_as_extractor() (cmoncrawl.processor.pipeline.router.router method)": [[123, "cmoncrawl.processor.pipeline.router.Router.load_module_as_extractor"]], "load_modules() (cmoncrawl.processor.pipeline.router.router method)": [[124, "cmoncrawl.processor.pipeline.router.Router.load_modules"]], "register_route() (cmoncrawl.processor.pipeline.router.router method)": [[125, "cmoncrawl.processor.pipeline.router.Router.register_route"]], "register_routes() (cmoncrawl.processor.pipeline.router.router method)": [[126, "cmoncrawl.processor.pipeline.router.Router.register_routes"]], "route() (cmoncrawl.processor.pipeline.router.router method)": [[127, "cmoncrawl.processor.pipeline.router.Router.route"]], "cmoncrawl.processor.pipeline.streamer": [[128, "module-cmoncrawl.processor.pipeline.streamer"]], "basestreamerfile (class in cmoncrawl.processor.pipeline.streamer)": [[129, "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile"]], "__init__() (cmoncrawl.processor.pipeline.streamer.basestreamerfile method)": [[129, "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__"], [130, "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.__init__"]], "clean_up() (cmoncrawl.processor.pipeline.streamer.basestreamerfile method)": [[131, "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.clean_up"]], "get_file_name() (cmoncrawl.processor.pipeline.streamer.basestreamerfile method)": [[132, "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.get_file_name"]], "metadata_to_string() (cmoncrawl.processor.pipeline.streamer.basestreamerfile method)": [[133, "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.metadata_to_string"]], "stream() (cmoncrawl.processor.pipeline.streamer.basestreamerfile method)": [[134, "cmoncrawl.processor.pipeline.streamer.BaseStreamerFile.stream"]], "istreamer (class in cmoncrawl.processor.pipeline.streamer)": [[135, "cmoncrawl.processor.pipeline.streamer.IStreamer"]], "__init__() (cmoncrawl.processor.pipeline.streamer.istreamer method)": [[135, "cmoncrawl.processor.pipeline.streamer.IStreamer.__init__"], [136, "cmoncrawl.processor.pipeline.streamer.IStreamer.__init__"]], "clean_up() (cmoncrawl.processor.pipeline.streamer.istreamer method)": [[137, "cmoncrawl.processor.pipeline.streamer.IStreamer.clean_up"]], "stream() (cmoncrawl.processor.pipeline.streamer.istreamer method)": [[138, "cmoncrawl.processor.pipeline.streamer.IStreamer.stream"]], "streamerdummy (class in cmoncrawl.processor.pipeline.streamer)": [[139, "cmoncrawl.processor.pipeline.streamer.StreamerDummy"]], "__init__() (cmoncrawl.processor.pipeline.streamer.streamerdummy method)": [[139, "cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__"], [140, "cmoncrawl.processor.pipeline.streamer.StreamerDummy.__init__"]], "clean_up() (cmoncrawl.processor.pipeline.streamer.streamerdummy method)": [[141, "cmoncrawl.processor.pipeline.streamer.StreamerDummy.clean_up"]], "stream() (cmoncrawl.processor.pipeline.streamer.streamerdummy method)": [[142, "cmoncrawl.processor.pipeline.streamer.StreamerDummy.stream"]], "streamerfilehtml (class in cmoncrawl.processor.pipeline.streamer)": [[143, "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML"]], "__init__() (cmoncrawl.processor.pipeline.streamer.streamerfilehtml method)": [[143, "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__"], [144, "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.__init__"]], "clean_up() (cmoncrawl.processor.pipeline.streamer.streamerfilehtml method)": [[145, "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.clean_up"]], "get_file_name() (cmoncrawl.processor.pipeline.streamer.streamerfilehtml method)": [[146, "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.get_file_name"]], "metadata_to_string() (cmoncrawl.processor.pipeline.streamer.streamerfilehtml method)": [[147, "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.metadata_to_string"]], "stream() (cmoncrawl.processor.pipeline.streamer.streamerfilehtml method)": [[148, "cmoncrawl.processor.pipeline.streamer.StreamerFileHTML.stream"]], "streamerfilejson (class in cmoncrawl.processor.pipeline.streamer)": [[149, "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON"]], "__init__() (cmoncrawl.processor.pipeline.streamer.streamerfilejson method)": [[149, "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__"], [150, "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.__init__"]], "clean_up() (cmoncrawl.processor.pipeline.streamer.streamerfilejson method)": [[151, "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.clean_up"]], "get_file_name() (cmoncrawl.processor.pipeline.streamer.streamerfilejson method)": [[152, "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.get_file_name"]], "metadata_to_string() (cmoncrawl.processor.pipeline.streamer.streamerfilejson method)": [[153, "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.metadata_to_string"]], "stream() (cmoncrawl.processor.pipeline.streamer.streamerfilejson method)": [[154, "cmoncrawl.processor.pipeline.streamer.StreamerFileJSON.stream"]]}}) \ No newline at end of file diff --git a/docs/build/html/usage.html b/docs/build/html/usage.html new file mode 100644 index 00000000..232c40d3 --- /dev/null +++ b/docs/build/html/usage.html @@ -0,0 +1,536 @@ + + + + + + + + + Usage — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + +
    + +
    + +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    +
    + Contents +
    + +
    +
    +
    +
    + +
    +

    Usage

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    +
    + +
    + +
    +

    Usage#

    +

    The library is designed to make interaction with CommonCrawl’s indexes simple, +while also providing a framework for extracting data from the downloaded +HTMLs.

    +

    You can use the library in two ways:

    +
      +
    1. Command Line Interface - This should suffice for 99% of the use cases.

    2. +
    3. Custom Pipeline - If you need more control over the process, you can use the library programmatically.

    4. +
    +
    +

    Workflow#

    +

    The workflow is two-step:

    +
      +
    1. First download domain records (see Domain Record) from the indexes.

    2. +
    3. Extract the domain records.

    4. +
    +
    +

    Note

    +

    This will further allow you to share the domain records with others, +so that you will not run into author law issues.

    +
    +
    +

    Note

    +

    First step can be skipped by using AWS Athena, which is under +current cirmustances (CommonCrawl api is completely throttled, slow and dropping most of requests), +the prefered way. See How to get records from AWS Athena. +It’s also super cheap.

    +
    +

    To create your custom extractors you likely want to download HTMLs not domain records. +Both download to HTML and extraction from HTML is also supported in parallel to the domain record workflow.

    +
    +
    + + +
    + +
    + +
    +
    + + +
    + + +
    +
    + + + + + + + \ No newline at end of file

    wQH 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/webpack-macros.html b/docs/build/html/_static/webpack-macros.html new file mode 100644 index 00000000..b51c16ef --- /dev/null +++ b/docs/build/html/_static/webpack-macros.html @@ -0,0 +1,29 @@ + +{# Load FontAwesome icons #} +{% macro head_pre_icons() %} + + + +{% endmacro %} + +{% macro head_pre_assets() %} + + + +{% endmacro %} + +{% macro head_js_preload() %} + + +{% endmacro %} + +{% macro body_post() %} + + +{% endmacro %} \ No newline at end of file diff --git a/docs/build/html/api.html b/docs/build/html/api.html new file mode 100644 index 00000000..4a27eb00 --- /dev/null +++ b/docs/build/html/api.html @@ -0,0 +1,480 @@ + + + + + + + + + API — CmonCrawl 1.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

w`Ao`B8FfP>nd2WTiT*&L> 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�d261qc>pomd%U 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.eot b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.eot new file mode 100644 index 0000000000000000000000000000000000000000..38cf2517a4da71a05f8e83723cdffce45ebc3319 GIT binary patch literal 34390 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 HJNN#7)2yBs literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.svg b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.svg new file mode 100644 index 00000000..48634a9a --- /dev/null +++ b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.svg @@ -0,0 +1,803 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.ttf b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..abe99e20c38a23e95295917d6a5cdb49a8489eb8 GIT binary patch literal 34092 zcmdtLd3+pKoiAFa_NuO~-n&{-OKNqiyS4A?wk=zhmpD%B*dlR^$tu~BmqfONBxfUl z1`HEI$T%4flgTiHSuc-eCKniP2+K7L7cvZR1HODQKep+0g7A(Ya+BBZ zyl$7!A)FV4Gt0Pd+J8&$z_urEX%GZ<2=^05PEO8!TdVz|>Q&7-P>-`%)dfk+;v@E~!Jcpr&eM>liavTD-iG2j=l)%cM3LmGsuKb%g zCIr|8N((wY;{YwWS3E1{(=(mlKFrSd!OGv02>8>^Hn z*ZFV!yU6$2>5fOap0O*Xa$SJ`SLOcuO|Nd7@y#XFU)BFL=~vxn!utORC+U}T@lE_b z?g;aef-GWA0^61ZRp?k&mbGPPIlbJv+_OBoymR>t%cqv-mKT;!FF(AzwEWKHcP*b= z{-fpd%l~Qlzb!w%d~x~zTz+}^)#cKq(53oI$xDNmc3#?b>BdX@F5P_Tj!V;*-g)WC zOP{**7ni<$>2EIm{iPpY`j<<;xNKg&;qpzFZ@+x!<;BYnU4HlF_gwzm<vPX&H2a5nIG;7s7*z(axi1Gfd<5ZE5r5a9F)kxnBOD zd{MEK-OA_G4t1aUEv;TVti7Zk)?YI2GM+VUbCdaq`6J&Z-*>EpRj}S>z2J}f|H*E$ z_t}rwUk~gAc78P|1V@9Xg3pCEggzH;3m*-CIQ*T+-pF^NJEI?q39-GgFUOPdnfO0A zJzU z>~49yUIY5Qh-x_znr zhaG!6zScR^`Ecj2x^{PcxI5VWRFB#-)vNZtv#+D?>Henv&kmRarw0Cc@bSSP3~d;C za_GmyO~YpkLg7&1>qWUZ0W=V={PN1*i7NPRSZD<%H8C~7)O0WFVTEEL?u;_0FqF?B zGvC8BHQLPLMfT0sM7-fogI&QtZHOmYJ5P6XoQ^iOHtkPlGRgf-t&Pt}5?gA%bzkz+ z!QiKp`wuj?8XXru>J#|tl^!B%hQc~SLwiSJHo6%-$)27}%I{NM@=i!H0 zRLt4Oo{Tug&Yfl=^5ii)C&tf&!)HEtIQo{iL=V4v`*s1}zH))#zYxK9JA?s2$PUCC zSyaumq;p%?P+@Q&K2UImhjN*;nn}~SkrmRpp~65snoFxuJRM@2iu;q%()nm|f6+fU zG<0|{BW-MI+9+iPfAYYA0}mWHKE7eY_=dCli}lfDGFo5U9}J$a&kP2GgPHng@ch67 z@5A#A?gic`Y!TMf7CxJs~@(k$NMz1-lSQtqum!pft|-!8ic$s zC~Ot37xoLUN8b;`V2eXX+~AqJ=XKqs^eF&rdaL4&byt9_waUUPGtx1`X|*p5*DWDfvU5?Up-xQ=D3A1 zMq9rsvzC{8wp8OSnqg?{y>>E| zWGoSqBwY)nt_aJiRO&~G6c?U=gG<0c6Ikf>e_rEV?{$2UjYpFgE};D>we%D9EJL!? zH#bLJS~|e)LvK8KfN+^AgUm%^nh|=gJ(lH>afXY9W=6l*dPB4^?Ko*iZ`1X*2Xy@q zTf(O=@-a-|gKIMgMYTjDm%=_F=WuTaF?a=V^SE{<&-F0W)tr({o=N0QZ$(s>I-*< z7B@YoZTq)QU2ERdtQ||qvibyv6j)>8jnesf>06~=m|`+|8{P{&lXMe_4%BJ0eWIjFYCV%^e zs-g+49{JIz4>>d(632yu?cqdWvtfMF&~G;kz%ufbt4r5*&ZADs4(h6+X^LS*gPN+~b;Sy5me0^)npqh70=-nn`w1s; z4EP@c_V;q^CmICI!t5;!59JFA@XBVHbPrg{P;nHbP8%o`dstf4nnafB-L~z{ZL;5X zTC@P`mZXlSZr?n6FiDBeJ@xX9Z_Q@kdhV^+#ErMJJ`~*66AWlAj_p?_K?}wwyY~*UXF+OgxNn|5?<%LvMqE0_bn#raDe==q?q3p#u}7R88V(s>5pfIou+jzYcWaGI1a zrnNk7L5cvbiZmdU28s@mBZ9ktq}Ig5hg8{=byfcL$Grqod{*~1@eTYu*U;QMJmkV3 zZ_d?+vv0kTXWjl(ha`D9j)ESwRGIyimv~&<+C7ioIjuF~HmE(_)X=iyrqV^^Opc?4 zUIynOF7NaS4)5_1@Q`D|tRNIK9+Lo~6jxYA%&AIiS4mfwDONF}5jO1dy}|NzATEVk zz?E7C&b3)qn>B&o)h-vjXJsPNhx;Y``l89c(s|-2=iL$(RpA|vloOSl9}<&y`OuJM z4bd-IdXjaNexO2z`ZtfKMueOjB8;l2Kc?-fA4$m>FwEe zW6(0ifTImF;ow6Lee$8UsHs~`4N)h@&g0hZY4nMqYazm7W{>R9RG(vqOKjpDql8FP6j zS%KN2vG*vtuEgo|gG%bgO6pU@yi0xl2t$k8i};vn1-5N&Y8pG1 z2-qXr1C|*Jbv<-&?090&bZJjCQMc{xyWe(qQz9VC@fdrcX{?|1-aOEMb6p}Dip6C) zFlsmWnJ<~w3SFXxfSm+pg0x z`pJeqgKP*C|GmTKmqlGR^P@XAY-r2s@xq#%VY4d~8Z2zywKFBD%!j)`N88}QNMoAr z&x@wfKA|vw2;#?LQD>j;D8%(_+lCE0M{_<|7iGV1P0opMr|Dy=l-jv#b73%qJ405r zmSmdWhWt#KXg5sJuNN0J(%3N%KvTwmD?w;RDWS`iV1W`Q@)$DO0ZZ)33bHVRpx8@OB{Jdh2xvQY-=90!+a$w!7;Vy&J|P!ps#Q?)pTp6CVARb&IitJq(F`~o5dq2D1P0Y!#z$)rh~!T(s32m+HIWpt=q z2a6A|Po?|)PE)8=ROKie?un&uF(t!4=8r^hG9)7wGUTvTAM6+q58APq{r-k7*$gVa zXsRL9(GiJlF)c&4nfXgQYTHp(=ud~59KU6z8`}ok^pN#WR!C1oY_&BK?rpVv_r+{G zrgcR#p=LcCZ0B|25^CI`1LX?EVaOZ#9x;=SMdLAai70y_XMg&jIM5NSx5Ba!ilM>& zG0kTvZtKlk(y^Xl7L`@8HQnDAvv0@H>V{=*i6!<%8&Xl95;WzmhWBfJLuF6%2K;@x z-)FVM|u)9O##F*D~6q_izL@fo=_9@d*fnP``$nEoeu7hjB>Z#ipZafcK;;)qD&;^G1jvqB>IF-+@w)^8yOygCWSZIr|o2P z+!Km${bbZ$R41az8$mY@sE17Z9#wr&>=U7UzQvA~ehxX3ONL`SVV6eL4!o?EzNJp6 z-?Ys`lwyJ@;*~Lvt^?-t&{bkWC-j1mGSp?+3WU?qGO@u3*z4?Hk#<3<`V%1REpZ^e4!$(90_@ls@Y zTV1o#5{o<0CUJ0JR2(i8m6l;(qnz%MK$NPbSa!ZNk(o-`P_rF7Ih83*u=AN+Vx3)| zNYvHYb>gl}t=XclJ-LrL#77*qFZr*}C5tR>1~e^b##k}AGM6SGy9B`5fKd^$XMtP- zqi8-Aq+v`5Zn}U_ox@Y`4{(eOX=lVmcu}Gsu}qJcr#GGO64s$} zE21DNx~}1sXhOA}XpNP+#_UsLiN?5-O#3`r_H5h^tRk@0thRHPP3*uzZbQ~a;gitR zbUp{E-iZ%z>$Ye2eg_u;-^0&IH5w4r-gCXG7>KGZM{BJ~M=H`{r2Yp|Ad;XB!{MO97I zo0~a^0BxN3I-Z2C_7*G0!mLYV1MPcAx6BQdPb>{qL=(y3T4!0#_38 zEUpu=AL*r(uCt4J=}9YT;h0$OQhLVCWlQe0}4Ld{>H*l%ZN(PFnq3bQGb-a zwa#&>D)W)5^xDGDSys?0+k!kfxEY?E)m(Lr8I9x%vZ7V>%%7x;LY7Fa?Qwtny$;*32cHWwV(Q~6|1c4Ui|^^6hpB`h{n?V|dgmei(Y$#1-1 z+giNJtHtG7m;U*yx*tZwBC#$*k$cL3k`e zSVrmM+L6H9LQGB^uxTbqXaZWwXWXV13uZSKfLMm1Rv);G7e*Vp+>)hhSk8B33bCFvmN6D)1Fp^my# zL5`#nsrFFap6-#hmQX<2m`cP;Up{;GxTJ^b+UvLF+0SOEx6k z6glUqN6TGV-sKH`$i-w+Ktvo_9C5(gLb{2of{UyCqU;VUs%}?&XWh$2ZWOq!3XRyP z8nw>)lrd$ocA1a4;enA8$-wKg^n#msdt9q3g&$}#8TGBEIRm!MXLZgU@z^J36SSGZ9d=<^DkC`bim$RhN(0GTzA_I$_7vE z0pSj!n`EaFGacMRm8n=MAkmVS4SEo18RQtk1=gr4b5)Oo;+ic%E*yXjhwN2y*;e&E zEvUqqGnkWtQulSeAt~hJhN>faqQR7`#)j@eqczbM-xFXyEf5bLZ)A!Qv2{DBCF2dI zukK_nJ7!vD=?h#A_&`fjYjd)rE*drMh=181(NY;h-qbrZ>^OD#c>TUWyP2@=7wEaZ z8{M*D1B)xc(w!VUcGwI<8}zY&j#iIlb0_P3R=Q0O+IlFai;aJms80_$4h#jGWZzaJ z$U8xgMhCl^TbqvaK5F)b4Lf1B2ZCvBd+xbRK@VQ9n^D^z*%*e8mHgri_)hT%W5RBa zW1?N4GmvpBQ7jANtFKT%$?`RYRQ*?436|7hR{y7}pY|DW_?D{r; zr`2|StVy;v^SmZxSzTV%@J%;`Zyy@EJ?vedJGf=b!7Z=rX=&+cdCBUu+OLlV0+l!8 zyV~76sw@=32T<8thbyn&LDl>#D%f)H2r6hn;DIPOkU@S9+>R3!RY;15mlI({kdmQW zqA^HFWKDx@si=~IT+A`&9(cnNPAqOjnzNIm2s&v!J_3K(!MXEsCd-*N zGd$Y5b=*=n)^`uE7vLakZw;Qjb>Kh(h();N$_pMH#RrLigOtXvNk@ZaV)o3sw2Wm| zh}m^lrDbJVh~jq~%yQ3Q*jgDWH!gYcygIzcx}J>AaqH%*Lw}vO%qLM;ltxk;KJKHSncD3O@<^hWor$n^7%o~cr7We{hBrnjlxkSWusKKIOfr z1@!uTB9o-1ZZmB8A5dWGkBC=gMWtn!t)*J&=-H`Y$OkncS_&%bzzW2ZPLja| zQn*Une;9-j->ehOgehu1NeYWboheFwTM~68WQq}%fbHKD9foMTtG4?ES(9^z4WqF$ zq#L^p!&ls3tA;rtF-b-CBwZ(YT-xfkR&2Rd;%tpH038>ytrI6+L9SCS=JL24uX$+O z;8hy;eNB@yz8*-VjhZAjSRn}sP401XWFulkCGDz>dd5<>g!ZYHDis@=aoI=da9g}p z#h8(eqZ)4u!su&_nmd;z_nFD`h>jO$*$6X-PU!MfEm;SqNXIQzJ$;3 z_a&|hb?JQ{v$Bo8u-~UDBI{MOBLN3W{c3pI1lT@aV}`B7jg{HZRlrP9P}m_|PkgN{ znQTj59k#P$<&sOwD41+RL|nNaB|#H>ps6j0PwfZS+$)TO{td=5#aL!o!xhJHakb>= zXe-hio@YWuCr$xCzz`U42M1J=p%DK=Oo=L5N~OjSmxt5$s-?^(F52~_#-9vJ{`z2D zvl2M*#dsb8>K2Xf7 zc~6HPAf$oHLAFbHND4(v2i#S3%FVT2fx|C#gv^q zeJht=oa)D3S>T9trF7-Xq5^wH3^5EXzz_(35-2srBS8v;VFThm#M!(PQ5+z1fU#%m z2jtCi)MuH-T&LZhnor90AIoO{dZaWl^H;u@{uq1CZfPn#?D$lvXCx#i;|KbDn*%Qn z1X|hKm%Bf2M67S((}IeXZ_guk(Jf1H(5%I<*%>n8p>|z9lQPqn{(#% zV|R8YuFtdV^ro?R*ZxlCKm1=()?GKzxntieL9?Sb8{fO-@=&z?#@_gwqeH{--Wy97 zM{jhpTZe9lMEbU1_6yt?B95^oSf40vuoE_NlKO5D?gsQEqE%aXpczR~@?(-!Dymi6 z$Dq9qYgJNWwQt2W!n(R|tg4L2jl!j%(_)*QN?l+q7-SdWRNF%FA=b?J19W)=0VBt) zRR>#w00(Pwi^GBt=E9|Cb^X;V0!x*CB+C!Ln2KY(t?e-$vW?hn9Pi`j&HM~Rz48mb zQt=z0^-WwmLbN1i9wH@a=0ygb7IME~utw!!2T~kGM^?G99CEe6g(Y$4m5mrl%QQ{v z*B|GXrO%C)eq@K?$S7(eFzGn9(?jpW=RyI z=H)2f1bPtyQVN7`v1pA8Ww3qgmi?_`Z6i5Z3~Rn*OQJR0(c0RC_)mykH4c_w`|CF6 z$Fdn&k)%eS5szi#>465B$qh1AT0p)c77?Rbdu`SJt{5?r(aPwGLR+`5~n;`2hm8~fh5V#Uq zeo&T^N};!BNUDRJt;&g5I_oqjD%!JdKFu934v1#WAUtLxSlMvIjZ8%V+mgj}|OS}>k9L!fLTd9EFb5NeVbnNG3EZS|AE>M(} zn`UE3kEKdusT8}A(k*(3f5^rxc%Bra=dEYYPHeFDvau^d)q7QGyqijumgqdj1bQ7M z@$Ujzr-t|`F*oTn#LUd1VN{uOS~%v;qO6y*2}8?Af-`!ke<`K;t;iE zw{?*>{?JMntYln7%S#ui`4_1yKP{!$2Ckdpg+r7#gy$E}ue^@_#m(A`6xL&)D8@rb zrT)f33H&>6okQ(Ny5FaFF>1U>m5sr(S!QV(mz5N*L`%g?q$Pw_K|*5}>;u(N7fXBh zj+f3~gmrQ%iYIO;2GIY*ds(n_9#%veGj1cpT)hAe&_;B`qx)!+dCiw>z}eL*-JC9lG3;K z+_MJdbAW_PmKX(Bb;=EIR&qnoetE=` z1JSquc_$9DU9MaLz~&GUR$0oh&JBquQ~`ekvd7UBoQVBF>kgw+j`)A&k1)m#=Qm`; z8(QOI@x-Rx_4S6PX~xN-Wcp^n@_~1j24QMkaYzF8&*MfYkFv7 zrb};ci#k|a@ZaZyet&?6j)eUFU;~c^3EKW(dnIpCLky{`w^PB5P0?FJ^`;gLPr1H8 z#LoU#*p9veNsv5AULSGOGFk?y2OU!2y#pPB`sUjG0WG`I9Z*4f$R*Xx24O!q-Pofv zNg?ZhhRpkedc3h^Fclt;HV-v~5jw4EMkI`0QO$7JRM9z+a9nGUEmM;hz6s{EUukbT z~)A5hq+|!4dQ&_Oh~tx!H{&QxwEtRuKkUP_=d(OI{Oc&8=d<#eb+8gygy(Z4w!L8 zlcbM2rY|Ci?=ubUb3xksLnrI1J!Qf4OFxw+Gb_%>`v_%;kDu@LIpPF86U z`&fe%__j|e>Q;lw#*AppV&aJGvsAOLj`wV(yS+Xjnx916G%V~0cNxyZnn1z_sg0as zphFO77U5xUn80W)Z)ku~;4H;Eq1nxdy=Y`&cjV%fET3^&hFa&tUu)@wl$XoL?z5iM z{G}K5i2tu6aV;T3zM2m?`We6fh#mT)#@2^-=foDLb*QhmMR!_SN>A*Kg)^44fcFsEDxvR;qk>n69$sIMiAjz z&h$ru@MoLXZDIu++^I)aWAu)lJ&+Ns!xq3+Y%DY z6fI6HS1;QN*2)CcKq97e2IP2Bu9F(XMk$_@Qc}I#3(Z6Bl#+5vZj33dh~^&hB~|lw ze`ko@Ti>Iyz2TT{TyEQ>`2xm4H4-%%V@>+aJ~P=VNphk?Rs6|N!3j15C8I7R-W-f* z!Q-~(e|IRN2mjFTe>R{+10R7e=0s451|CYcDzemP`Rc8MR;aZOh>iK}+J>7D@jE9h z36EWMmJ{|CKmwH2&lYrwjRF9zEM#`URG6sV7zA(*dc0g(I@2l&OTQ%i*x1!7j(?#7>wX zRD{zj5-xjjqZo#QHlNl5_lx2I znqsIKtHvl51JTsw3?(x>_fIK#354Y437Ur!@Kj5<@H9UKgA+l%PTKA73`JNo;2+wF z$wJZPpczH3Q4&(--PpR{kmHmQm1_f)!D08r+Uj`keLEj1CWklp63J+`S&JB;4$(|s zWv+A5N(8|2$s=kqqK+}O!P1M0@7vV7OwjC1d>8Md^x^)_CmJ{SG^H-G|1P3fhosPZ zcTwx9nJbj2Or6a41*CZJqmra42$DQ(pfkxPy<%qwxE|Hj5nNbn=k8YH%KxyYED6vRH;*w`cj&bmvvpj17IZewgY6#dR5VG9gIuu zEv8=|Biir!7BNcDa7G~S{>JfgYeHk-Y%H%ZW8)S?Y5cs)9AqZ=nITZYl|c>?NKf8E zGHA4wV%FY|t$2zc)Yh&TtA^DFd1?@rsfv&t%~U(9t_9n}dg=x zL>9@__7aaiaRmi*svH4zt$3dDFuM^^&5s-U9=@cuYgR|l&b33N{sPNx_wY5g-KX3T zAJW6Ubv-SJaiP`G9+WmVIN;(3w@*Q29%bnGLGJ%mLQaSk2Sb_?(lQ~jPc;=&c?$Lo z^OGN!q?)_ZXO>DYycL4_#kVqc9xK>Bs$zZNuq18S%CH#yww1e0rI&hGQ|X_2SyNYu zwe*%=qB-R9VbVR~fUewwo$yX`eGU?Yw>~`wnL&j$3hX4d6$Xt0yHKCY)t`N{BwG`d zVrTL7B_b_nclgh12D^}}FI}w9-6dKF@HADQL!eZOo@0fnv3bDs;()5@%eoPwh=S$Z z20|NWN9Be5<@*}S(q?FV^bMTmR+6Kyz4^+N{8p;21MO=biCIdRKS2!x1Laz@}+{thTGL4P3N3=i?`b>tC)evNE z&{9Vz2SOBFTPpa^R;Yq%hL#REalXcsmIlJ#k>Ro*&&S^i_Pe9C9ob=!1)7+4LKR zAGH1TT1W~Q@sU_Y99=qO%Kk`7Gg~8ydc)GF=-aGDb&aWmJ}Bg-b&D+b@%P-ZBKeW< zwh?yT3G`vLsg%ry%0QFsU~h*Zcncv^VoejRasd;E7@Q|xqOBkRg_am_i(}luaw)`~ z$auHlu%CrMvL>R*aNFHd*ouYXv?#_3OH+#Yx*^tJJ3$AFTzd~9y!V`%(#>MfEe3Bf zmLsrW(bN%1Ukp-FUG-Z5pI-_V4V~^wzvR(NSk2$EM+%rWBpp3q1f>0?FO@`bd%I&| z!9pUti%BK*tESd%xrJ!ef@pOks>RT{{3wLAQ@SPkyEM!sqBE|%lIQ#du_my_c&3-i zb;X>3PJooipA+XRM-*#Z>jN2rfs)SXE;YkG8;x4AU3hLN2j%-| z!=H!YJ`kvvlX<_vQe$A0^m9!O71CdNftGN*fH!hOANA>xL|WI=iHPnKv^o&wlQORP{&bw@#cPY zJbb#^W?Y_}WfyCBfC3hX6lhsmXF?j9LqkI2@&eyxW-s@$7CEW;lXDvqJxxuG&E0h@ zn?-m@wtY;>wq~U9EZ;gbcFXD0w~P%9nQ*`oZMwj1J~Rfz zQ#Y^Q{}EEJNizU)V3mv;x4$mtj1#hyw-G5_oFKx>Pw{o}h744gbTE?vWlDX7ENlW) z1IIf3Omu+!eiud3eFN}-k=JiG`HR=XnnBWrE0_)8^f$qja`RSWObc5Xw_Hm`|*#_NsRZC z04s?P1Kq;yBP}$5aQN^bId%cosgxTmi+-)PNj6esmj}UmHc7ye4Z(g+6#2b2(zVG^IAO_P7 zeM58HEO2V}tco3ebUP0(lPU*PON{Lv0R!~;>I^lg8Fk=>vbgVOL z2Z<;nbA0#ian*+;t#+|>UX`e7sENgPZ(3E8&sSAbn{xG#>g7l{U7p2)DOkzM`GO zwMxpM8zxv7&=()AvC4yQ;MqZsFnJ^fiT8^`z)}|w+ft# zsp(cPnwoE|08+!r30czz2XxLnSuYRX>|UvD(RxFbxc|diAUG|p)^X6T)p`Z@+k*^o zm0N}R1beI0s1`LJt5Ggif2~%B!MDm0A)+^eny1&fdI8j#Skwyyarc({Y%Tb1@Q2st zzp8FC)^%R_^_BlB?f~wPyx>4;YZ54G3pj+9Kyashk4ULiGR|NYQ#PXw7Bwe7=oGbL zhP|N57^c!sBum1+V#*Xk@NU{Tw6pZDLth>G=GL7=QOSK30Y>h zYT7xaZ-W0jd;a{(FP}fpWnVB%(y27)*u%ng=wUAk7beV3IL?5tz!=(5B@V~CJ262@ zKx?YwD+bvxw6GS?9mLkhT80WN!R4$+z^H9a4PYA)ME{5o?#A?2$(QqM;+cN2uOUl8 z0S#GpKFj)O%al8g2K7VOb40>&Yg=MPRKTDMm3Vmuep^~TPcQHjpMw{n%Mh<`SjUb5 znYZlZgX(gPeaUL20e9oQbLz~NEigvt1}=Kspv%hLYFWWs_xaQH%6e~t_Eq*ja$}!6 zDdw@f7IF2J%d_5=H?ZGdWp|{v^QDv3=jUE?zocbXSgAVy`D<^WM09&a1}7O8Yo=FQ zG+S#{pcV@`PsT0MngpTrq?OKjLj#ie@DiP)%RXG9WdGk@{M) z)LOMRHLq{ut!Yn$v4xOQ>NR@&Oe+M;JA$ z5C;_G9>D_y(vFIlpw-Rz-FwpR^3}*_gfCys10*GBm}?q8>U z?ve?N21#=u*u*d~)5%U*a4%>Vq%@M+tBR-|HK=aqC#|3w4y!?g@`lyw^tm-T?$fuq zB7IE^&b?PDySKW+>hu{;yyvkiE8|IPqw}y07O^`gB6U`e><}*ML)=V>uc{bOVB0 zIoB%ZUu``w(|GvaX0A8pIGaAiqyC1ga(Hn5(%OZ>f6hz3j;oPfoP9gIwxz0^xAA-m zYN#DgY9ICtTHUUK3;!n3m4Pr!z+Vbd#N?_$%BT3WcqgAw`!;XEUQ9;+P``m)lxio_ zSzdw{zBAomz;F_fu!j)f@z>0IcP)AW@weN+Ep9-h=mA=rv<5zJ-dEP9mt|8=*X6N4 z@xdZOAYfRcJ0yAROZf^b3PipfxNJ4f;nZdLoM z+rS1itdh8?y}r;UiI&#>wllo%-NpH}Ag3i$PxnM~aov>s`}pX%TRGL>i66X=Y@(pY zMOyxkct4_Nj_TCht=LCgoOfa75uSkfc_l`wS-`!#vF7gURYIBv{mnNi9QNnI64Plg z$5rPSd5gWhb=_w4q^T8a`g4e+j@9_Hx<9c*WmJary23;dhD)1Mu4G)Zi~n3>O!wIV zEs_zLAL}u4*n;Y5jft6DRmL?s|DdQ@@i0cKNt4x3JRVX-QEO^nxvjM88;B&U$7oz9 z+=fx&OavGai%PU+FGt7$MHt9ZD6>Oq8?^-C)$XiD%%iI1Ff({a&`^G$mAGb27qIVi zHTP&*&nxwXyvzrpog>vmxoxV~wkeDH<=Bo*wluH_7ORh*_SKhuLaj%Mnl53fbY1c~ zpYOV4UFn~(n;s38U-D_`o{vjPb&I>QZO3Rw<#aNfB7y#vmS)NAkE$N3rel84Fw*mO zLeJw(FXJ3p9?*91BE%kXt3{D`EOiV}nABCA#npJr4)dm#F>r2I&{mXs8>WGT9SkAb z^UoAJxJwtKawuqoEeV>uZJC#=aQJulv~uxrG%Pm;{8Y*gic&pZ+!<(;!=k<`ST8Zv zHZ;UqsOB@(_*@z5@*dP(!lu{8VKS@$0U$|(?LrF&p9MA$2Uf3%yI=HcEiIa@kE`nV zKhViQco1^@*Fe|afZo=o2b4a^miqV!d&2T8=pH5L9wOqMe9&7dX8K0NJsk(_z}Udf z56T5YJ`fN?P{u@{Yqo%~A>S6L3#kIM)f;#Xmm)M(CcUzg!PbOUil9NHyueaKg9?uV z*`h?Wy;wM{Xv~TPd(**4dqcE2S=@bW^RTA$7H-+p6J>8|jJ75=-f(QNPgC2wZ`srz z+_6%=^v_sCB^u0R%8)6Vw+$JRf(%$=`F*Y@A_wG1bkl)mm1(&#rYSc^g6ZC1q@Zd$ zpDNtY5KAUUy5D+6Rj>Qt#v5XhWOStOT?bZ*EtuMEsC`JmIxQzIDJyq#y;2KV;x!QNcJN0n^%afgA!$o|AJaC zNlGRlVms6fLgMOGrpwLEvd$=?8FvT~;I~!f*25Kd0$iU-$OcoI6&%cv6B$JjgF#W* z$8RKsF}hP$N`b0r*gNTY?AiM)aLD1B;||CHCu(sB(G8sc5Y5A?LK|T(z?~*+nwQOK zqav+9&S|u>brT2lsB7R+i;i7mL`2urDS`qAiM2%oonqhnqsl{t*!Gk$%}(;UBW|B`%75hMzr@ zxzc4QFnns*PTHp!o%Q)pqgHqKM)H1ayt~f!bwv|pR*{Hy`ChJ;QmSQHYTs_`I#`(} z|B?2EU3v)y0qUu_n||;~3&zU{dx&YqXj7bN2X~ zBMP(3C^jhPszcU%|auhqQ4CaG99X3^fbz)o&g zA)cp{g;?4~IZi?>@jr-8usEP7{HM7LSRr>!6H#Y<*J$`IUykFhXa%FDYY}^u4;#Bp z3x%<#t|Mt-E0mNaJ=pvKpV&JD;r!UKCqh2_4Goja=iQIR19m*n02dinb(OIKSJDB1 z6njmR%w^bdO6BG=t059;2!Al#qQphx7Rw2WVkBsYN}#_@dSs+;k0>_KJjVqLl$I1BFY?Y_qLkcx8p8IIGR;pY!(I#aLfv3stAn6v7S zww(SE?+RBZzQs_xH*fA%5z|o%55-1d#b9|}mf^vD4SJI8gezh$(qpgVtHO7-78`#T z=*%@qi))rIT?=B?2h?*V17L0w zTnqZol(h-i=3g%JJ@CPE*MwWH=o3mnKa5{R!MM2sb#1>BpIZm!@M@k15yy>$xJHk^ zx4y!|JZtdGYhwp%U13t(9z4L&Wd%{>HMXrv50{BtnE{utuAJf0-g~Riv{t}&DQm@6 zqpkW5@roVm*=fr>0PG*(SFS+-R%l3jWs9Ze83k6JUDakOZtm#V+)+$BVG-6vF+7I5 zj?KH^|MW60kgakZgXI^zf}yA-%Tz{|t!Sv1SGPOlIMw;*%7)A8v2THuy;hd31meJ1 zN47v%L3k>bE1N+u`DptltU+4E>T68U?2!#15F7B(?xWo}e3 zk_l%+BYI$r=zZEC9-4rpOD)@8PO zFVPRJwJZ5^=c{dOWSFXLOnuERqwnFCwJJ+eJX_(_+~&4EzsaxA#x*my)>d9Uf&YYi zCS1|UwUO6?Hp0jLO?)7DH?QG!M3?awv&wY2{O#6iJq6C771FGFvI0!?Fn-nc<_@ld zxH`$>D=NvjxO<1fOf55ybr{NO%l%iYC~@B)%smy-d}ATc4f&#Ms^}jf$qrI96aQBa zn}wTZkoex^rA25ef99nnAv*>q+7joSZI)b&r8Qp=5M`p9A$nD&n}a}$bq#KaX@JXh+pTWMf|nhk9cVb zcEvAwX;~<+oR?OFz3d?`tqOhYXI|PA4vCw*v`^>}zv88XLQXQgbV#tJ>%4SWC`fmD z=@`oVXD=N`nV*8n&0)opgM^>p}LaP zaBA25^mOXx>0_s7Ch>4p*-HL@>|3Oe^?-p5;@o%5FLw|3^bht>nXB}~|D8q+0)T!F z0!2enuV4Ku_o1`q(f=nn9Gg(Ox(V%qFgV!X)7Q5l)mGDw_f5|)oR~eeDdn~U<;tI^ z9nj&*xOA`XYpTy1+hH1%?n>t$0JhLT5@sBR4|4(OlYno5W6T^xKUr3$A-@#7J&CU@Pq)r@}J(XIRUQA7% zno2Fs&d%I>ViBbYWf$?O1(>jV@&73Q%p$60~^s+wI&j#2a8)Cy)d|hN4*hc)7@Da8dn+($mnK8DFZD%{!PIevJ#ja<& z*$wPQ;oWQx{vP>FY#-at#@XxG&FmI-fZfUtveyfbvP0|*>^62gyMx`y?qYYd2{y?N zvm zZ1Y>}ZS3vr40{KAC;M&o2zwWMl)alh#@@poXTQVFvM1P+?04BY_Ip@DfxikrzbG#( zPR`4x7pCWxBltV;_v$kz78biFXBOq7Gn2>k!?UyZo}8S&S2=NV^4PRIJ#}KyT0C)b zdZGKsiTNWl)7FvW(?{<0ZUS#SJ-x7q8SULm(+^G?_;oMLOfDR^j!e!>pPHJSr`k0j z^~vc|i|WzYnW^b{pL^+^otr*o961iSx(`pz>t3M+gMjQlJ~?w#nVCL0d&+lYo*?Ny zGC4mb9iN&C9>=8Xo|`>!YO$LW{y(T~qA%$-=Aobk=goL=a53#)EVC<`Y~%uFjs z=TV__a{9P_@AQL*X91vIZZ}?xUOfX%XApl(TSvYcHVPSTD!N(uWoOlR>>lRv=LwRcj z$EN4Km!~I>O#92@k7k@+uq$^Q16FSNtXjF{^GZ57Ip^~x0ga(GH;I|*4GLN@JLjc2 z)Igkjr~PHr<#WlJoSK@SURda+d0e@nY2%|QUmo5QQ zIC1jCL(`S}6Q}sS?L9};i?j37#=@!D`#~=5oi-NdG1CcDl@I%Zab)Ji9G?cU$$3l- zdgOhTqw(5YLcRE!vK*l!YqC$zNyny7+8_zj4|X3u0d$~V@}T25VU@cN*t}r!Iogfq z_bQXXg$I?X6AwM~pmr1kb9@@8Op}*)oOWy;4LC9_<9bS`6V+_+#Np}5lYvUAd*S}+ z$weQ(=M;6pO=ALs9EEtko9Hg)Xf3oDSFV&p;2ZgPaivO@-r`Bxk+66Ybt0rRHa6W-yJq zLB1EXg-PJW{DV4O30$uq>3jOZ>G`?&6ARPI;t3FC;?C^K6>w~Z6m0+!$B*tL;SX?y bMX1cpc?scf@6G-KdBTf-{AinZ?ft(1jXHOb literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.woff b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.woff new file mode 100644 index 0000000000000000000000000000000000000000..24de566a5c97289a86ce0c238a195da0d3251263 GIT binary patch literal 16800 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 @5E5^jow38oGT;HT{*=6I5BP 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.woff2 b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7e0118e526eb53511cb57e7cfaf515784fee4345 GIT binary patch literal 13584 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 W8!VVrwhAGt$p&j$lnnbyiU9!e_&Ztv literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.eot b/docs/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.eot new file mode 100644 index 0000000000000000000000000000000000000000..d3b77c223afc9a0a1af914936219da2b001a010f GIT binary patch literal 202902 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