You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by gi...@apache.org on 2021/04/15 13:30:30 UTC
[mynewt-site] 03/05: asf-site update Thu Apr 15 11:43:08 UTC 2021
This is an automated email from the ASF dual-hosted git repository.
git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/mynewt-site.git
commit cfb7a2015172483b5c94538e7a8bf7c964f1ffff
Author: jenkins <bu...@apache.org>
AuthorDate: Thu Apr 15 11:43:08 2021 +0000
asf-site update Thu Apr 15 11:43:08 UTC 2021
---
master/_static/ajax-loader.gif | Bin 673 -> 0 bytes
master/_static/basic.css | 241 +-
master/_static/comment-bright.png | Bin 756 -> 0 bytes
master/_static/comment-close.png | Bin 829 -> 0 bytes
master/_static/comment.png | Bin 641 -> 0 bytes
master/_static/doctools.js | 22 +-
master/_static/documentation_options.js | 4 +-
master/_static/down-pressed.png | Bin 222 -> 0 bytes
master/_static/down.png | Bin 202 -> 0 bytes
.../_static/{jquery-3.2.1.js => jquery-3.5.1.js} | 2489 +++--
master/_static/jquery.js | 6 +-
master/_static/language_data.js | 6 +-
master/_static/searchtools.js | 105 +-
master/_static/underscore-1.12.0.js | 2027 ++++
master/_static/underscore-1.3.1.js | 999 --
master/_static/underscore.js | 37 +-
master/_static/up-pressed.png | Bin 214 -> 0 bytes
master/_static/up.png | Bin 203 -> 0 bytes
master/_static/websupport.js | 808 --
master/concepts.html | 61 +-
master/external_links.html | 7 +-
master/genindex.html | 3082 +++++-
master/get_started/debug.html | 66 +-
master/get_started/docker.html | 55 +-
master/get_started/index.html | 1 -
master/get_started/native_install/cross_tools.html | 83 +-
master/get_started/native_install/index.html | 19 +-
.../get_started/native_install/native_tools.html | 19 +-
master/get_started/project_create.html | 62 +-
master/get_started/serial_access.html | 41 +-
master/index.html | 37 +-
master/misc/go_env.html | 57 +-
master/misc/ide.html | 147 +-
master/misc/index.html | 1 -
master/mynewt_faq/admin_faq.html | 13 +-
master/mynewt_faq/bluetooth_faq.html | 39 +-
master/mynewt_faq/boot_faq.html | 9 +-
master/mynewt_faq/fs_faq.html | 7 +-
master/mynewt_faq/hardware_faq.html | 15 +-
master/mynewt_faq/index.html | 5 +-
master/mynewt_faq/modules_faq.html | 7 +-
master/mynewt_faq/newt_faq.html | 3 +-
master/mynewt_faq/newtmgr_faq.html | 9 +-
master/mynewt_faq/nfc_faq.html | 1 -
master/mynewt_faq/port_faq.html | 3 +-
master/mynewt_faq/syntax_faq.html | 19 +-
master/mynewt_faq/troubleshoot_faq.html | 15 +-
master/network/README.html | 11 +-
master/network/ble_hs/ble_att.html | 84 +-
master/network/ble_hs/ble_gap.html | 2166 ++--
master/network/ble_hs/ble_gattc.html | 946 +-
master/network/ble_hs/ble_gatts.html | 946 +-
master/network/ble_hs/ble_hs.html | 5 +-
master/network/ble_hs/ble_hs_id.html | 55 +-
master/network/ble_hs/ble_hs_return_codes.html | 1579 +--
master/network/ble_sec.html | 43 +-
master/network/ble_setup/ble_addr.html | 19 +-
master/network/ble_setup/ble_lp_clock.html | 11 +-
master/network/ble_setup/ble_setup_intro.html | 1 -
master/network/ble_setup/ble_sync_cb.html | 1 -
master/network/btshell/btshell_GAP.html | 3045 +++---
master/network/btshell/btshell_GATT.html | 471 +-
master/network/btshell/btshell_advdata.html | 167 +-
master/network/btshell/btshell_api.html | 23 +-
master/network/index.html | 93 +-
master/network/mesh/index.html | 74 +-
master/network/mesh/sample.html | 1 -
master/newt/README.html | 8 +-
master/newt/command_list/newt_build.html | 23 +-
master/newt/command_list/newt_clean.html | 27 +-
master/newt/command_list/newt_complete.html | 1 -
master/newt/command_list/newt_create_image.html | 27 +-
master/newt/command_list/newt_debug.html | 23 +-
master/newt/command_list/newt_help.html | 23 +-
master/newt/command_list/newt_info.html | 1 -
master/newt/command_list/newt_load.html | 1 -
master/newt/command_list/newt_mfg.html | 27 +-
master/newt/command_list/newt_new.html | 19 +-
master/newt/command_list/newt_pkg.html | 79 +-
master/newt/command_list/newt_resign_image.html | 23 +-
master/newt/command_list/newt_run.html | 27 +-
master/newt/command_list/newt_size.html | 19 +-
master/newt/command_list/newt_target.html | 217 +-
master/newt/command_list/newt_test.html | 31 +-
master/newt/command_list/newt_upgrade.html | 1 -
master/newt/command_list/newt_vals.html | 35 +-
master/newt/command_list/newt_version.html | 19 +-
master/newt/index.html | 45 +-
master/newt/install/index.html | 1 -
master/newt/install/newt_linux.html | 35 +-
master/newt/install/newt_mac.html | 11 +-
master/newt/install/newt_windows.html | 70 +-
master/newt/install/prev_releases.html | 77 +-
master/newt/newt_operation.html | 57 +-
master/newt/newt_ops.html | 1 -
master/newtmgr/README.html | 8 +-
master/newtmgr/command_list/index.html | 1 -
master/newtmgr/command_list/newtmgr_config.html | 23 +-
master/newtmgr/command_list/newtmgr_conn.html | 179 +-
master/newtmgr/command_list/newtmgr_crash.html | 23 +-
master/newtmgr/command_list/newtmgr_datetime.html | 27 +-
master/newtmgr/command_list/newtmgr_echo.html | 19 +-
master/newtmgr/command_list/newtmgr_fs.html | 45 +-
master/newtmgr/command_list/newtmgr_image.html | 141 +-
master/newtmgr/command_list/newtmgr_logs.html | 125 +-
master/newtmgr/command_list/newtmgr_mpstats.html | 29 +-
master/newtmgr/command_list/newtmgr_reset.html | 19 +-
master/newtmgr/command_list/newtmgr_run.html | 49 +-
master/newtmgr/command_list/newtmgr_stat.html | 45 +-
master/newtmgr/command_list/newtmgr_taskstats.html | 35 +-
master/newtmgr/index.html | 1 -
master/newtmgr/install/index.html | 1 -
master/newtmgr/install/install_linux.html | 84 +-
master/newtmgr/install/install_mac.html | 24 +-
master/newtmgr/install/install_windows.html | 60 +-
master/newtmgr/install/prev_releases.html | 77 +-
master/objects.inv | Bin 50825 -> 58707 bytes
master/os/bsp/index.html | 1 -
master/os/bsp/pinetime.html | 7 +-
master/os/core_os/callout/callout.html | 102 +-
.../os/core_os/context_switch/context_switch.html | 38 +-
master/os/core_os/cputime/os_cputime.html | 195 +-
master/os/core_os/event_queue/event_queue.html | 216 +-
master/os/core_os/heap/heap.html | 44 +-
master/os/core_os/mbuf/mbuf.html | 750 +-
master/os/core_os/memory_pool/memory_pool.html | 321 +-
master/os/core_os/mutex/mutex.html | 93 +-
master/os/core_os/mynewt_os.html | 233 +-
master/os/core_os/porting/port_bsp.html | 250 +-
master/os/core_os/porting/port_cpu.html | 37 +-
master/os/core_os/porting/port_mcu.html | 21 +-
master/os/core_os/porting/port_os.html | 47 +-
master/os/core_os/sanity/sanity.html | 261 +-
master/os/core_os/semaphore/semaphore.html | 64 +-
master/os/core_os/task/task.html | 356 +-
master/os/core_os/time/os_time.html | 397 +-
master/os/modules/baselibc.html | 1 -
master/os/modules/bootloader/bootloader.html | 178 +-
master/os/modules/config/config.html | 653 +-
master/os/modules/console/console.html | 264 +-
master/os/modules/devmgmt/customize_newtmgr.html | 1 -
master/os/modules/devmgmt/newtmgr.html | 17 +-
master/os/modules/devmgmt/oicmgr.html | 27 +-
master/os/modules/drivers/chg_ctrl/chg_ctrl.html | 9 +-
master/os/modules/drivers/chg_ctrl/sgm4056.html | 1 -
master/os/modules/drivers/driver.html | 90 +-
master/os/modules/drivers/flash.html | 103 +-
master/os/modules/drivers/mmc.html | 111 +-
master/os/modules/elua/elua.html | 39 +-
master/os/modules/elua/lua_init.html | 1 -
master/os/modules/elua/lua_main.html | 23 +-
master/os/modules/extcmd/extcmd.html | 89 +-
master/os/modules/fcb/fcb.html | 286 +-
master/os/modules/fcb/fcb_append.html | 33 +-
master/os/modules/fcb/fcb_append_finish.html | 27 +-
master/os/modules/fcb/fcb_append_to_scratch.html | 19 +-
master/os/modules/fcb/fcb_clear.html | 19 +-
master/os/modules/fcb/fcb_getnext.html | 23 +-
master/os/modules/fcb/fcb_init.html | 19 +-
master/os/modules/fcb/fcb_is_empty.html | 19 +-
master/os/modules/fcb/fcb_offset_last_n.html | 27 +-
master/os/modules/fcb/fcb_rotate.html | 19 +-
master/os/modules/fcb/fcb_walk.html | 39 +-
master/os/modules/fs/fatfs.html | 22 +-
master/os/modules/fs/fs.html | 454 +-
master/os/modules/fs/fs_add.html | 175 +-
master/os/modules/fs/nffs.html | 164 +-
master/os/modules/fs/otherfs.html | 63 +-
master/os/modules/hal/hal.html | 21 +-
master/os/modules/hal/hal_bsp/hal_bsp.html | 114 +-
master/os/modules/hal/hal_creation.html | 1 -
master/os/modules/hal/hal_flash/hal_flash.html | 180 +-
master/os/modules/hal/hal_flash/hal_flash_int.html | 1 -
master/os/modules/hal/hal_gpio/hal_gpio.html | 255 +-
master/os/modules/hal/hal_i2c/hal_i2c.html | 269 +-
master/os/modules/hal/hal_in_libraries.html | 1 -
master/os/modules/hal/hal_os_tick/hal_os_tick.html | 29 +-
master/os/modules/hal/hal_spi/hal_spi.html | 303 +-
master/os/modules/hal/hal_system/hal_sys.html | 111 +-
master/os/modules/hal/hal_timer/hal_timer.html | 205 +-
master/os/modules/hal/hal_uart/hal_uart.html | 147 +-
.../os/modules/hal/hal_watchdog/hal_watchdog.html | 26 +-
master/os/modules/imgmgr/imgmgr.html | 31 +-
master/os/modules/imgmgr/imgmgr_module_init.html | 1 -
master/os/modules/imgmgr/imgr_ver_parse.html | 23 +-
master/os/modules/imgmgr/imgr_ver_str.html | 23 +-
master/os/modules/json/json.html | 952 +-
master/os/modules/logs/logs.html | 997 +-
master/os/modules/mcumgr/mcumgr.html | 1 -
master/os/modules/mfg/mfg.html | 322 +-
master/os/modules/sensor_framework/sensor_api.html | 1165 +--
.../os/modules/sensor_framework/sensor_create.html | 117 +-
.../os/modules/sensor_framework/sensor_driver.html | 391 +-
.../modules/sensor_framework/sensor_framework.html | 53 +-
.../sensor_framework/sensor_listener_api.html | 92 +-
.../modules/sensor_framework/sensor_mgr_api.html | 331 +-
.../sensor_framework/sensor_notifier_api.html | 35 +-
master/os/modules/sensor_framework/sensor_oic.html | 15 +-
.../os/modules/sensor_framework/sensor_shell.html | 1 -
master/os/modules/shell/shell.html | 438 +-
master/os/modules/split/split.html | 183 +-
master/os/modules/stats/stats.html | 414 +-
.../os/modules/sysinitconfig/sysconfig_error.html | 68 +-
master/os/modules/sysinitconfig/sysinitconfig.html | 186 +-
master/os/modules/sysinitdown/sysinitdown.html | 30 +-
master/os/modules/system_modules.html | 1 -
master/os/modules/testutil/testutil.html | 265 +-
master/os/os_user_guide.html | 1 -
master/os/tutorials/STM32F303.html | 13 +-
master/os/tutorials/pin-wheel-mods.html | 33 +-
master/search.html | 1 -
master/searchindex.js | 2 +-
master/tutorials/ble/ble.html | 1 -
master/tutorials/ble/ble_bare_bones.html | 19 +-
master/tutorials/ble/blehci_project.html | 39 +-
.../ble/bleprph/bleprph-sections/bleprph-adv.html | 87 +-
.../ble/bleprph/bleprph-sections/bleprph-app.html | 31 +-
.../bleprph-sections/bleprph-chr-access.html | 271 +-
.../bleprph-sections/bleprph-gap-event.html | 195 +-
.../bleprph/bleprph-sections/bleprph-svc-reg.html | 149 +-
master/tutorials/ble/bleprph/bleprph.html | 21 +-
master/tutorials/ble/eddystone.html | 339 +-
master/tutorials/ble/ibeacon.html | 272 +-
master/tutorials/blinky/arduino_zero.html | 55 +-
master/tutorials/blinky/blinky.html | 55 +-
master/tutorials/blinky/blinky_console.html | 54 +-
master/tutorials/blinky/blinky_primo.html | 81 +-
master/tutorials/blinky/blinky_stm32f4disc.html | 21 +-
master/tutorials/blinky/nRF52.html | 40 +-
master/tutorials/blinky/olimex.html | 63 +-
master/tutorials/blinky/pinetime.html | 29 +-
master/tutorials/blinky/rbnano2.html | 34 +-
master/tutorials/devmgmt/add_newtmgr.html | 120 +-
master/tutorials/devmgmt/devmgmt.html | 1 -
master/tutorials/devmgmt/ota_upgrade_nrf52.html | 43 +-
master/tutorials/lora/lorawanapp.html | 99 +-
master/tutorials/os_fundamentals/event_queue.html | 58 +-
.../tutorials/os_fundamentals/os_fundamentals.html | 1 -
master/tutorials/os_fundamentals/tasks_lesson.html | 39 +-
master/tutorials/other/chg_ctrl_on_pinetime.html | 57 +-
master/tutorials/other/codesize.html | 39 +-
master/tutorials/other/other.html | 1 -
master/tutorials/other/rust.html | 37 +-
master/tutorials/other/unit_test.html | 29 +-
master/tutorials/other/wi-fi_on_arduino.html | 58 +-
master/tutorials/repo/add_repos.html | 61 +-
master/tutorials/repo/create_repo.html | 25 +-
master/tutorials/repo/private_repo.html | 9 +-
master/tutorials/repo/upgrade_repo.html | 1 -
master/tutorials/sensors/air_quality.html | 1 -
master/tutorials/sensors/air_quality_ble.html | 5 +-
master/tutorials/sensors/air_quality_sensor.html | 27 +-
master/tutorials/sensors/nrf52_adc.html | 58 +-
master/tutorials/sensors/sensor_bleprph_oic.html | 85 +-
master/tutorials/sensors/sensor_nrf52_bno055.html | 208 +-
.../tutorials/sensors/sensor_nrf52_bno055_oic.html | 50 +-
master/tutorials/sensors/sensor_nrf52_drv2605.html | 83 +-
.../tutorials/sensors/sensor_offboard_config.html | 36 +-
master/tutorials/sensors/sensor_oic_overview.html | 35 +-
.../sensors/sensor_thingy_lis2dh12_onb.html | 116 +-
master/tutorials/sensors/sensors.html | 1 -
master/tutorials/sensors/sensors_framework.html | 49 +-
master/tutorials/slinky/project-nrf52-slinky.html | 55 +-
master/tutorials/slinky/project-sim-slinky.html | 15 +-
master/tutorials/slinky/project-slinky.html | 49 +-
master/tutorials/slinky/project-stm32-slinky.html | 93 +-
master/tutorials/tooling/error_diagnostics.html | 1 -
master/tutorials/tooling/segger_rtt.html | 9 +-
master/tutorials/tooling/segger_sysview.html | 25 +-
master/tutorials/tooling/tooling.html | 1 -
master/tutorials/tutorials.html | 92 +-
search/lunr.js | 779 +-
search/main.js | 4 +-
search/search_index.json | 2 +-
search/worker.js | 2 +
sitemap.xml | 30 +-
sitemap.xml.gz | Bin 284 -> 282 bytes
v0_9_0/search/lunr.js | 779 +-
v0_9_0/search/main.js | 4 +-
v0_9_0/search/search_index.json | 2 +-
v0_9_0/search/worker.js | 2 +
v0_9_0/sitemap.xml | 861 +-
v0_9_0/sitemap.xml.gz | Bin 2216 -> 2210 bytes
v1_0_0/search/lunr.js | 779 +-
v1_0_0/search/main.js | 4 +-
v1_0_0/search/search_index.json | 2 +-
v1_0_0/search/worker.js | 2 +
v1_0_0/sitemap.xml | 1311 +--
v1_0_0/sitemap.xml.gz | Bin 3239 -> 3217 bytes
v1_1_0/search/lunr.js | 779 +-
v1_1_0/search/main.js | 4 +-
v1_1_0/search/search_index.json | 2 +-
v1_1_0/search/worker.js | 2 +
v1_1_0/sitemap.xml | 1407 +--
v1_1_0/sitemap.xml.gz | Bin 3464 -> 3446 bytes
v1_2_0/search/lunr.js | 779 +-
v1_2_0/search/main.js | 4 +-
v1_2_0/search/search_index.json | 2 +-
v1_2_0/search/worker.js | 2 +
v1_2_0/sitemap.xml | 1416 +--
v1_2_0/sitemap.xml.gz | Bin 3487 -> 3469 bytes
v1_3_0/search/lunr.js | 779 +-
v1_3_0/search/main.js | 4 +-
v1_3_0/search/search_index.json | 2 +-
v1_3_0/search/worker.js | 2 +
v1_3_0/sitemap.xml | 1413 +--
v1_3_0/sitemap.xml.gz | Bin 3483 -> 3467 bytes
v1_4_0/_static/ajax-loader.gif | Bin 673 -> 0 bytes
v1_4_0/_static/basic.css | 241 +-
v1_4_0/_static/comment-bright.png | Bin 756 -> 0 bytes
v1_4_0/_static/comment-close.png | Bin 829 -> 0 bytes
v1_4_0/_static/comment.png | Bin 641 -> 0 bytes
v1_4_0/_static/doctools.js | 22 +-
v1_4_0/_static/documentation_options.js | 4 +-
v1_4_0/_static/down-pressed.png | Bin 222 -> 0 bytes
v1_4_0/_static/down.png | Bin 202 -> 0 bytes
.../_static/jquery-3.5.1.js | 2489 +++--
v1_4_0/_static/jquery.js | 6 +-
v1_4_0/_static/language_data.js | 6 +-
v1_4_0/_static/searchtools.js | 105 +-
v1_4_0/_static/underscore-1.12.0.js | 2027 ++++
v1_4_0/_static/underscore-1.3.1.js | 999 --
v1_4_0/_static/underscore.js | 37 +-
v1_4_0/_static/up-pressed.png | Bin 214 -> 0 bytes
v1_4_0/_static/up.png | Bin 203 -> 0 bytes
v1_4_0/_static/websupport.js | 808 --
v1_4_0/concepts.html | 61 +-
v1_4_0/external_links.html | 7 +-
v1_4_0/genindex.html | 1390 ++-
v1_4_0/get_started/debug.html | 66 +-
v1_4_0/get_started/docker.html | 55 +-
v1_4_0/get_started/index.html | 1 -
v1_4_0/get_started/native_install/cross_tools.html | 83 +-
v1_4_0/get_started/native_install/index.html | 19 +-
.../get_started/native_install/native_tools.html | 19 +-
v1_4_0/get_started/project_create.html | 62 +-
v1_4_0/get_started/serial_access.html | 41 +-
v1_4_0/index.html | 37 +-
v1_4_0/misc/go_env.html | 57 +-
v1_4_0/misc/ide.html | 147 +-
v1_4_0/misc/index.html | 1 -
v1_4_0/mynewt_faq/admin_faq.html | 13 +-
v1_4_0/mynewt_faq/bluetooth_faq.html | 39 +-
v1_4_0/mynewt_faq/boot_faq.html | 9 +-
v1_4_0/mynewt_faq/fs_faq.html | 7 +-
v1_4_0/mynewt_faq/hardware_faq.html | 15 +-
v1_4_0/mynewt_faq/index.html | 5 +-
v1_4_0/mynewt_faq/modules_faq.html | 7 +-
v1_4_0/mynewt_faq/newt_faq.html | 3 +-
v1_4_0/mynewt_faq/newtmgr_faq.html | 9 +-
v1_4_0/mynewt_faq/nfc_faq.html | 1 -
v1_4_0/mynewt_faq/port_faq.html | 3 +-
v1_4_0/mynewt_faq/syntax_faq.html | 19 +-
v1_4_0/mynewt_faq/troubleshoot_faq.html | 15 +-
v1_4_0/network/README.html | 11 +-
v1_4_0/network/ble_hs/ble_att.html | 1 -
v1_4_0/network/ble_hs/ble_gap.html | 1 -
v1_4_0/network/ble_hs/ble_gattc.html | 1 -
v1_4_0/network/ble_hs/ble_gatts.html | 1 -
v1_4_0/network/ble_hs/ble_hs.html | 5 +-
v1_4_0/network/ble_hs/ble_hs_id.html | 55 +-
v1_4_0/network/ble_hs/ble_hs_return_codes.html | 1579 +--
v1_4_0/network/ble_sec.html | 43 +-
v1_4_0/network/ble_setup/ble_addr.html | 19 +-
v1_4_0/network/ble_setup/ble_lp_clock.html | 11 +-
v1_4_0/network/ble_setup/ble_setup_intro.html | 1 -
v1_4_0/network/ble_setup/ble_sync_cb.html | 1 -
v1_4_0/network/btshell/btshell_GAP.html | 3045 +++---
v1_4_0/network/btshell/btshell_GATT.html | 471 +-
v1_4_0/network/btshell/btshell_advdata.html | 167 +-
v1_4_0/network/btshell/btshell_api.html | 23 +-
v1_4_0/network/index.html | 93 +-
v1_4_0/network/mesh/index.html | 74 +-
v1_4_0/network/mesh/sample.html | 1 -
v1_4_0/newt/README.html | 8 +-
v1_4_0/newt/command_list/newt_build.html | 23 +-
v1_4_0/newt/command_list/newt_clean.html | 27 +-
v1_4_0/newt/command_list/newt_complete.html | 1 -
v1_4_0/newt/command_list/newt_create_image.html | 27 +-
v1_4_0/newt/command_list/newt_debug.html | 23 +-
v1_4_0/newt/command_list/newt_help.html | 23 +-
v1_4_0/newt/command_list/newt_info.html | 1 -
v1_4_0/newt/command_list/newt_install.html | 1 -
v1_4_0/newt/command_list/newt_load.html | 1 -
v1_4_0/newt/command_list/newt_mfg.html | 27 +-
v1_4_0/newt/command_list/newt_new.html | 19 +-
v1_4_0/newt/command_list/newt_pkg.html | 79 +-
v1_4_0/newt/command_list/newt_resign_image.html | 23 +-
v1_4_0/newt/command_list/newt_run.html | 27 +-
v1_4_0/newt/command_list/newt_size.html | 19 +-
v1_4_0/newt/command_list/newt_sync.html | 1 -
v1_4_0/newt/command_list/newt_target.html | 217 +-
v1_4_0/newt/command_list/newt_test.html | 31 +-
v1_4_0/newt/command_list/newt_upgrade.html | 1 -
v1_4_0/newt/command_list/newt_vals.html | 35 +-
v1_4_0/newt/command_list/newt_version.html | 19 +-
v1_4_0/newt/index.html | 45 +-
v1_4_0/newt/install/index.html | 1 -
v1_4_0/newt/install/newt_linux.html | 35 +-
v1_4_0/newt/install/newt_mac.html | 11 +-
v1_4_0/newt/install/newt_windows.html | 67 +-
v1_4_0/newt/install/prev_releases.html | 61 +-
v1_4_0/newt/newt_operation.html | 57 +-
v1_4_0/newt/newt_ops.html | 1 -
v1_4_0/newtmgr/README.html | 8 +-
v1_4_0/newtmgr/command_list/index.html | 1 -
v1_4_0/newtmgr/command_list/newtmgr_config.html | 23 +-
v1_4_0/newtmgr/command_list/newtmgr_conn.html | 179 +-
v1_4_0/newtmgr/command_list/newtmgr_crash.html | 23 +-
v1_4_0/newtmgr/command_list/newtmgr_datetime.html | 27 +-
v1_4_0/newtmgr/command_list/newtmgr_echo.html | 19 +-
v1_4_0/newtmgr/command_list/newtmgr_fs.html | 45 +-
v1_4_0/newtmgr/command_list/newtmgr_image.html | 141 +-
v1_4_0/newtmgr/command_list/newtmgr_logs.html | 125 +-
v1_4_0/newtmgr/command_list/newtmgr_mpstats.html | 29 +-
v1_4_0/newtmgr/command_list/newtmgr_reset.html | 19 +-
v1_4_0/newtmgr/command_list/newtmgr_run.html | 49 +-
v1_4_0/newtmgr/command_list/newtmgr_stat.html | 45 +-
v1_4_0/newtmgr/command_list/newtmgr_taskstats.html | 35 +-
v1_4_0/newtmgr/index.html | 1 -
v1_4_0/newtmgr/install/index.html | 1 -
v1_4_0/newtmgr/install/install_linux.html | 84 +-
v1_4_0/newtmgr/install/install_mac.html | 24 +-
v1_4_0/newtmgr/install/install_windows.html | 70 +-
v1_4_0/newtmgr/install/prev_releases.html | 69 +-
v1_4_0/objects.inv | Bin 28968 -> 32498 bytes
v1_4_0/os/core_os/callout/callout.html | 102 +-
.../os/core_os/context_switch/context_switch.html | 38 +-
v1_4_0/os/core_os/cputime/os_cputime.html | 195 +-
v1_4_0/os/core_os/event_queue/event_queue.html | 180 +-
v1_4_0/os/core_os/heap/heap.html | 5 +-
v1_4_0/os/core_os/mbuf/mbuf.html | 699 +-
v1_4_0/os/core_os/memory_pool/memory_pool.html | 306 +-
v1_4_0/os/core_os/mutex/mutex.html | 102 +-
v1_4_0/os/core_os/mynewt_os.html | 233 +-
v1_4_0/os/core_os/porting/port_bsp.html | 250 +-
v1_4_0/os/core_os/porting/port_cpu.html | 37 +-
v1_4_0/os/core_os/porting/port_mcu.html | 21 +-
v1_4_0/os/core_os/porting/port_os.html | 47 +-
v1_4_0/os/core_os/sanity/sanity.html | 261 +-
v1_4_0/os/core_os/semaphore/semaphore.html | 64 +-
v1_4_0/os/core_os/task/task.html | 298 +-
v1_4_0/os/core_os/time/os_time.html | 284 +-
v1_4_0/os/modules/baselibc.html | 1 -
v1_4_0/os/modules/bootloader/bootloader.html | 178 +-
v1_4_0/os/modules/config/config.html | 548 +-
v1_4_0/os/modules/console/console.html | 184 +-
v1_4_0/os/modules/devmgmt/customize_newtmgr.html | 1 -
v1_4_0/os/modules/devmgmt/newtmgr.html | 13 +-
v1_4_0/os/modules/devmgmt/oicmgr.html | 15 +-
v1_4_0/os/modules/drivers/driver.html | 48 +-
v1_4_0/os/modules/drivers/flash.html | 103 +-
v1_4_0/os/modules/drivers/mmc.html | 111 +-
v1_4_0/os/modules/elua/elua.html | 1 -
v1_4_0/os/modules/elua/lua_init.html | 1 -
v1_4_0/os/modules/elua/lua_main.html | 23 +-
v1_4_0/os/modules/fcb/fcb.html | 173 +-
v1_4_0/os/modules/fcb/fcb_append.html | 33 +-
v1_4_0/os/modules/fcb/fcb_append_finish.html | 27 +-
v1_4_0/os/modules/fcb/fcb_append_to_scratch.html | 19 +-
v1_4_0/os/modules/fcb/fcb_clear.html | 19 +-
v1_4_0/os/modules/fcb/fcb_getnext.html | 23 +-
v1_4_0/os/modules/fcb/fcb_init.html | 19 +-
v1_4_0/os/modules/fcb/fcb_is_empty.html | 19 +-
v1_4_0/os/modules/fcb/fcb_offset_last_n.html | 27 +-
v1_4_0/os/modules/fcb/fcb_rotate.html | 19 +-
v1_4_0/os/modules/fcb/fcb_walk.html | 39 +-
v1_4_0/os/modules/fs/fatfs.html | 22 +-
v1_4_0/os/modules/fs/fs/fs.html | 62 +-
v1_4_0/os/modules/fs/fs/fs_close.html | 79 +-
v1_4_0/os/modules/fs/fs/fs_closedir.html | 113 +-
v1_4_0/os/modules/fs/fs/fs_dirent_is_dir.html | 113 +-
v1_4_0/os/modules/fs/fs/fs_dirent_name.html | 137 +-
v1_4_0/os/modules/fs/fs/fs_filelen.html | 81 +-
v1_4_0/os/modules/fs/fs/fs_getpos.html | 25 +-
v1_4_0/os/modules/fs/fs/fs_mkdir.html | 63 +-
v1_4_0/os/modules/fs/fs/fs_open.html | 105 +-
v1_4_0/os/modules/fs/fs/fs_opendir.html | 127 +-
v1_4_0/os/modules/fs/fs/fs_ops.html | 55 +-
v1_4_0/os/modules/fs/fs/fs_read.html | 99 +-
v1_4_0/os/modules/fs/fs/fs_readdir.html | 123 +-
v1_4_0/os/modules/fs/fs/fs_register.html | 9 +-
v1_4_0/os/modules/fs/fs/fs_rename.html | 75 +-
v1_4_0/os/modules/fs/fs/fs_return_codes.html | 73 +-
v1_4_0/os/modules/fs/fs/fs_seek.html | 85 +-
v1_4_0/os/modules/fs/fs/fs_unlink.html | 77 +-
v1_4_0/os/modules/fs/fs/fs_write.html | 85 +-
v1_4_0/os/modules/fs/fs/fsutil_read_file.html | 95 +-
v1_4_0/os/modules/fs/fs/fsutil_write_file.html | 73 +-
v1_4_0/os/modules/fs/nffs/nffs.html | 42 +-
v1_4_0/os/modules/fs/nffs/nffs_area_desc.html | 17 +-
v1_4_0/os/modules/fs/nffs/nffs_config.html | 29 +-
v1_4_0/os/modules/fs/nffs/nffs_detect.html | 111 +-
v1_4_0/os/modules/fs/nffs/nffs_format.html | 107 +-
v1_4_0/os/modules/fs/nffs/nffs_init.html | 9 +-
v1_4_0/os/modules/fs/nffs/nffs_internals.html | 375 +-
v1_4_0/os/modules/fs/otherfs.html | 63 +-
v1_4_0/os/modules/hal/hal.html | 21 +-
v1_4_0/os/modules/hal/hal_bsp/hal_bsp.html | 100 +-
v1_4_0/os/modules/hal/hal_creation.html | 1 -
v1_4_0/os/modules/hal/hal_flash/hal_flash.html | 29 +-
v1_4_0/os/modules/hal/hal_flash/hal_flash_int.html | 1 -
v1_4_0/os/modules/hal/hal_gpio/hal_gpio.html | 240 +-
v1_4_0/os/modules/hal/hal_i2c/hal_i2c.html | 167 +-
v1_4_0/os/modules/hal/hal_in_libraries.html | 1 -
v1_4_0/os/modules/hal/hal_os_tick/hal_os_tick.html | 29 +-
v1_4_0/os/modules/hal/hal_spi/hal_spi.html | 282 +-
v1_4_0/os/modules/hal/hal_system/hal_sys.html | 89 +-
v1_4_0/os/modules/hal/hal_timer/hal_timer.html | 205 +-
v1_4_0/os/modules/hal/hal_uart/hal_uart.html | 147 +-
.../os/modules/hal/hal_watchdog/hal_watchdog.html | 26 +-
v1_4_0/os/modules/imgmgr/imgmgr.html | 1 -
v1_4_0/os/modules/imgmgr/imgmgr_module_init.html | 1 -
v1_4_0/os/modules/imgmgr/imgr_ver_parse.html | 23 +-
v1_4_0/os/modules/imgmgr/imgr_ver_str.html | 23 +-
v1_4_0/os/modules/json/json.html | 952 +-
v1_4_0/os/modules/logs/logs.html | 566 +-
v1_4_0/os/modules/sensor_framework/sensor_api.html | 347 +-
.../os/modules/sensor_framework/sensor_create.html | 117 +-
.../os/modules/sensor_framework/sensor_driver.html | 91 +-
.../sensor_framework_overview.html | 53 +-
.../sensor_framework/sensor_listener_api.html | 69 +-
.../modules/sensor_framework/sensor_mgr_api.html | 70 +-
v1_4_0/os/modules/sensor_framework/sensor_oic.html | 15 +-
.../os/modules/sensor_framework/sensor_shell.html | 1 -
v1_4_0/os/modules/shell/shell.html | 375 +-
v1_4_0/os/modules/split/split.html | 183 +-
v1_4_0/os/modules/stats/stats.html | 265 +-
.../os/modules/sysinitconfig/sysconfig_error.html | 68 +-
v1_4_0/os/modules/sysinitconfig/sysinitconfig.html | 201 +-
v1_4_0/os/modules/system_modules.html | 1 -
v1_4_0/os/modules/testutil/testutil.html | 298 +-
v1_4_0/os/os_user_guide.html | 1 -
v1_4_0/os/tutorials/STM32F303.html | 24 +-
v1_4_0/os/tutorials/add_newtmgr.html | 91 +-
v1_4_0/os/tutorials/define_target.html | 1 -
v1_4_0/os/tutorials/event_queue.html | 617 +-
v1_4_0/os/tutorials/ota_upgrade_nrf52.html | 31 +-
v1_4_0/os/tutorials/pin-wheel-mods.html | 33 +-
v1_4_0/os/tutorials/tasks_lesson.html | 171 +-
v1_4_0/os/tutorials/try_markdown.html | 22 +-
v1_4_0/search.html | 1 -
v1_4_0/searchindex.js | 2 +-
v1_4_0/tutorials/ble/ble.html | 1 -
v1_4_0/tutorials/ble/ble_bare_bones.html | 19 +-
v1_4_0/tutorials/ble/blehci_project.html | 39 +-
.../ble/bleprph/bleprph-sections/bleprph-adv.html | 87 +-
.../ble/bleprph/bleprph-sections/bleprph-app.html | 31 +-
.../bleprph-sections/bleprph-chr-access.html | 271 +-
.../bleprph-sections/bleprph-gap-event.html | 195 +-
.../bleprph/bleprph-sections/bleprph-svc-reg.html | 149 +-
v1_4_0/tutorials/ble/bleprph/bleprph.html | 21 +-
v1_4_0/tutorials/ble/eddystone.html | 339 +-
v1_4_0/tutorials/ble/ibeacon.html | 272 +-
v1_4_0/tutorials/blinky/arduino_zero.html | 55 +-
v1_4_0/tutorials/blinky/blinky.html | 55 +-
v1_4_0/tutorials/blinky/blinky_console.html | 54 +-
v1_4_0/tutorials/blinky/blinky_primo.html | 81 +-
v1_4_0/tutorials/blinky/blinky_stm32f4disc.html | 21 +-
v1_4_0/tutorials/blinky/nRF52.html | 40 +-
v1_4_0/tutorials/blinky/olimex.html | 63 +-
v1_4_0/tutorials/blinky/pinetime.html | 29 +-
v1_4_0/tutorials/blinky/rbnano2.html | 34 +-
v1_4_0/tutorials/devmgmt/add_newtmgr.html | 120 +-
v1_4_0/tutorials/devmgmt/devmgmt.html | 1 -
v1_4_0/tutorials/devmgmt/ota_upgrade_nrf52.html | 43 +-
v1_4_0/tutorials/lora/lorawanapp.html | 99 +-
v1_4_0/tutorials/os_fundamentals/event_queue.html | 58 +-
.../tutorials/os_fundamentals/os_fundamentals.html | 1 -
v1_4_0/tutorials/os_fundamentals/tasks_lesson.html | 39 +-
v1_4_0/tutorials/other/chg_ctrl_on_pinetime.html | 57 +-
v1_4_0/tutorials/other/codesize.html | 39 +-
v1_4_0/tutorials/other/other.html | 1 -
v1_4_0/tutorials/other/rust.html | 37 +-
v1_4_0/tutorials/other/unit_test.html | 29 +-
v1_4_0/tutorials/other/wi-fi_on_arduino.html | 58 +-
v1_4_0/tutorials/repo/add_repos.html | 61 +-
v1_4_0/tutorials/repo/create_repo.html | 25 +-
v1_4_0/tutorials/repo/private_repo.html | 9 +-
v1_4_0/tutorials/repo/upgrade_repo.html | 1 -
v1_4_0/tutorials/sensors/air_quality.html | 1 -
v1_4_0/tutorials/sensors/air_quality_ble.html | 5 +-
v1_4_0/tutorials/sensors/air_quality_sensor.html | 27 +-
v1_4_0/tutorials/sensors/nrf52_adc.html | 58 +-
v1_4_0/tutorials/sensors/sensor_bleprph_oic.html | 85 +-
v1_4_0/tutorials/sensors/sensor_nrf52_bno055.html | 208 +-
.../tutorials/sensors/sensor_nrf52_bno055_oic.html | 50 +-
v1_4_0/tutorials/sensors/sensor_nrf52_drv2605.html | 83 +-
.../tutorials/sensors/sensor_offboard_config.html | 36 +-
v1_4_0/tutorials/sensors/sensor_oic_overview.html | 35 +-
.../sensors/sensor_thingy_lis2dh12_onb.html | 116 +-
v1_4_0/tutorials/sensors/sensors.html | 1 -
v1_4_0/tutorials/sensors/sensors_framework.html | 49 +-
v1_4_0/tutorials/slinky/project-nrf52-slinky.html | 55 +-
v1_4_0/tutorials/slinky/project-sim-slinky.html | 15 +-
v1_4_0/tutorials/slinky/project-slinky.html | 49 +-
v1_4_0/tutorials/slinky/project-stm32-slinky.html | 93 +-
v1_4_0/tutorials/tooling/error_diagnostics.html | 1 -
v1_4_0/tutorials/tooling/segger_rtt.html | 9 +-
v1_4_0/tutorials/tooling/segger_sysview.html | 25 +-
v1_4_0/tutorials/tooling/tooling.html | 1 -
v1_4_0/tutorials/tutorials.html | 92 +-
v1_5_0/_static/ajax-loader.gif | Bin 673 -> 0 bytes
v1_5_0/_static/basic.css | 241 +-
v1_5_0/_static/comment-bright.png | Bin 756 -> 0 bytes
v1_5_0/_static/comment-close.png | Bin 829 -> 0 bytes
v1_5_0/_static/comment.png | Bin 641 -> 0 bytes
v1_5_0/_static/doctools.js | 22 +-
v1_5_0/_static/documentation_options.js | 4 +-
v1_5_0/_static/down-pressed.png | Bin 222 -> 0 bytes
v1_5_0/_static/down.png | Bin 202 -> 0 bytes
.../_static/jquery-3.5.1.js | 2489 +++--
v1_5_0/_static/jquery.js | 6 +-
v1_5_0/_static/language_data.js | 6 +-
v1_5_0/_static/searchtools.js | 105 +-
v1_5_0/_static/underscore-1.12.0.js | 2027 ++++
v1_5_0/_static/underscore-1.3.1.js | 999 --
v1_5_0/_static/underscore.js | 37 +-
v1_5_0/_static/up-pressed.png | Bin 214 -> 0 bytes
v1_5_0/_static/up.png | Bin 203 -> 0 bytes
v1_5_0/_static/websupport.js | 808 --
v1_5_0/concepts.html | 61 +-
v1_5_0/external_links.html | 7 +-
v1_5_0/genindex.html | 1770 +++-
v1_5_0/get_started/debug.html | 66 +-
v1_5_0/get_started/docker.html | 55 +-
v1_5_0/get_started/index.html | 1 -
v1_5_0/get_started/native_install/cross_tools.html | 83 +-
v1_5_0/get_started/native_install/index.html | 19 +-
.../get_started/native_install/native_tools.html | 19 +-
v1_5_0/get_started/project_create.html | 62 +-
v1_5_0/get_started/serial_access.html | 41 +-
v1_5_0/index.html | 37 +-
v1_5_0/misc/go_env.html | 57 +-
v1_5_0/misc/ide.html | 147 +-
v1_5_0/misc/index.html | 1 -
v1_5_0/mynewt_faq/admin_faq.html | 13 +-
v1_5_0/mynewt_faq/bluetooth_faq.html | 39 +-
v1_5_0/mynewt_faq/boot_faq.html | 9 +-
v1_5_0/mynewt_faq/fs_faq.html | 7 +-
v1_5_0/mynewt_faq/hardware_faq.html | 15 +-
v1_5_0/mynewt_faq/index.html | 5 +-
v1_5_0/mynewt_faq/modules_faq.html | 7 +-
v1_5_0/mynewt_faq/newt_faq.html | 3 +-
v1_5_0/mynewt_faq/newtmgr_faq.html | 9 +-
v1_5_0/mynewt_faq/nfc_faq.html | 1 -
v1_5_0/mynewt_faq/port_faq.html | 3 +-
v1_5_0/mynewt_faq/syntax_faq.html | 19 +-
v1_5_0/mynewt_faq/troubleshoot_faq.html | 15 +-
v1_5_0/network/README.html | 11 +-
v1_5_0/network/ble_hs/ble_att.html | 1 -
v1_5_0/network/ble_hs/ble_gap.html | 1 -
v1_5_0/network/ble_hs/ble_gattc.html | 1 -
v1_5_0/network/ble_hs/ble_gatts.html | 1 -
v1_5_0/network/ble_hs/ble_hs.html | 5 +-
v1_5_0/network/ble_hs/ble_hs_id.html | 55 +-
v1_5_0/network/ble_hs/ble_hs_return_codes.html | 1579 +--
v1_5_0/network/ble_sec.html | 43 +-
v1_5_0/network/ble_setup/ble_addr.html | 19 +-
v1_5_0/network/ble_setup/ble_lp_clock.html | 11 +-
v1_5_0/network/ble_setup/ble_setup_intro.html | 1 -
v1_5_0/network/ble_setup/ble_sync_cb.html | 1 -
v1_5_0/network/btshell/btshell_GAP.html | 3045 +++---
v1_5_0/network/btshell/btshell_GATT.html | 471 +-
v1_5_0/network/btshell/btshell_advdata.html | 167 +-
v1_5_0/network/btshell/btshell_api.html | 23 +-
v1_5_0/network/index.html | 93 +-
v1_5_0/network/mesh/index.html | 74 +-
v1_5_0/network/mesh/sample.html | 1 -
v1_5_0/newt/README.html | 8 +-
v1_5_0/newt/command_list/newt_build.html | 23 +-
v1_5_0/newt/command_list/newt_clean.html | 27 +-
v1_5_0/newt/command_list/newt_complete.html | 1 -
v1_5_0/newt/command_list/newt_create_image.html | 27 +-
v1_5_0/newt/command_list/newt_debug.html | 23 +-
v1_5_0/newt/command_list/newt_help.html | 23 +-
v1_5_0/newt/command_list/newt_info.html | 1 -
v1_5_0/newt/command_list/newt_install.html | 1 -
v1_5_0/newt/command_list/newt_load.html | 1 -
v1_5_0/newt/command_list/newt_mfg.html | 27 +-
v1_5_0/newt/command_list/newt_new.html | 19 +-
v1_5_0/newt/command_list/newt_pkg.html | 79 +-
v1_5_0/newt/command_list/newt_resign_image.html | 23 +-
v1_5_0/newt/command_list/newt_run.html | 27 +-
v1_5_0/newt/command_list/newt_size.html | 19 +-
v1_5_0/newt/command_list/newt_sync.html | 1 -
v1_5_0/newt/command_list/newt_target.html | 217 +-
v1_5_0/newt/command_list/newt_test.html | 31 +-
v1_5_0/newt/command_list/newt_upgrade.html | 1 -
v1_5_0/newt/command_list/newt_vals.html | 35 +-
v1_5_0/newt/command_list/newt_version.html | 19 +-
v1_5_0/newt/index.html | 45 +-
v1_5_0/newt/install/index.html | 1 -
v1_5_0/newt/install/newt_linux.html | 35 +-
v1_5_0/newt/install/newt_mac.html | 11 +-
v1_5_0/newt/install/newt_windows.html | 67 +-
v1_5_0/newt/install/prev_releases.html | 69 +-
v1_5_0/newt/newt_operation.html | 57 +-
v1_5_0/newt/newt_ops.html | 1 -
v1_5_0/newtmgr/README.html | 8 +-
v1_5_0/newtmgr/command_list/index.html | 1 -
v1_5_0/newtmgr/command_list/newtmgr_config.html | 23 +-
v1_5_0/newtmgr/command_list/newtmgr_conn.html | 179 +-
v1_5_0/newtmgr/command_list/newtmgr_crash.html | 23 +-
v1_5_0/newtmgr/command_list/newtmgr_datetime.html | 27 +-
v1_5_0/newtmgr/command_list/newtmgr_echo.html | 19 +-
v1_5_0/newtmgr/command_list/newtmgr_fs.html | 45 +-
v1_5_0/newtmgr/command_list/newtmgr_image.html | 141 +-
v1_5_0/newtmgr/command_list/newtmgr_logs.html | 125 +-
v1_5_0/newtmgr/command_list/newtmgr_mpstats.html | 29 +-
v1_5_0/newtmgr/command_list/newtmgr_reset.html | 19 +-
v1_5_0/newtmgr/command_list/newtmgr_run.html | 49 +-
v1_5_0/newtmgr/command_list/newtmgr_stat.html | 45 +-
v1_5_0/newtmgr/command_list/newtmgr_taskstats.html | 35 +-
v1_5_0/newtmgr/index.html | 1 -
v1_5_0/newtmgr/install/index.html | 1 -
v1_5_0/newtmgr/install/install_linux.html | 84 +-
v1_5_0/newtmgr/install/install_mac.html | 24 +-
v1_5_0/newtmgr/install/install_windows.html | 60 +-
v1_5_0/newtmgr/install/prev_releases.html | 77 +-
v1_5_0/objects.inv | Bin 37273 -> 42792 bytes
v1_5_0/os/core_os/callout/callout.html | 102 +-
.../os/core_os/context_switch/context_switch.html | 38 +-
v1_5_0/os/core_os/cputime/os_cputime.html | 195 +-
v1_5_0/os/core_os/event_queue/event_queue.html | 180 +-
v1_5_0/os/core_os/heap/heap.html | 5 +-
v1_5_0/os/core_os/mbuf/mbuf.html | 733 +-
v1_5_0/os/core_os/memory_pool/memory_pool.html | 325 +-
v1_5_0/os/core_os/mutex/mutex.html | 102 +-
v1_5_0/os/core_os/mynewt_os.html | 233 +-
v1_5_0/os/core_os/porting/port_bsp.html | 250 +-
v1_5_0/os/core_os/porting/port_cpu.html | 37 +-
v1_5_0/os/core_os/porting/port_mcu.html | 21 +-
v1_5_0/os/core_os/porting/port_os.html | 47 +-
v1_5_0/os/core_os/sanity/sanity.html | 261 +-
v1_5_0/os/core_os/semaphore/semaphore.html | 64 +-
v1_5_0/os/core_os/task/task.html | 302 +-
v1_5_0/os/core_os/time/os_time.html | 393 +-
v1_5_0/os/modules/baselibc.html | 1 -
v1_5_0/os/modules/bootloader/bootloader.html | 178 +-
v1_5_0/os/modules/config/config.html | 602 +-
v1_5_0/os/modules/console/console.html | 201 +-
v1_5_0/os/modules/devmgmt/customize_newtmgr.html | 1 -
v1_5_0/os/modules/devmgmt/newtmgr.html | 13 +-
v1_5_0/os/modules/devmgmt/oicmgr.html | 15 +-
v1_5_0/os/modules/drivers/driver.html | 86 +-
v1_5_0/os/modules/drivers/flash.html | 103 +-
v1_5_0/os/modules/drivers/mmc.html | 111 +-
v1_5_0/os/modules/elua/elua.html | 39 +-
v1_5_0/os/modules/elua/lua_init.html | 1 -
v1_5_0/os/modules/elua/lua_main.html | 23 +-
v1_5_0/os/modules/fcb/fcb.html | 388 +-
v1_5_0/os/modules/fcb/fcb_append.html | 33 +-
v1_5_0/os/modules/fcb/fcb_append_finish.html | 27 +-
v1_5_0/os/modules/fcb/fcb_append_to_scratch.html | 19 +-
v1_5_0/os/modules/fcb/fcb_clear.html | 19 +-
v1_5_0/os/modules/fcb/fcb_getnext.html | 23 +-
v1_5_0/os/modules/fcb/fcb_init.html | 19 +-
v1_5_0/os/modules/fcb/fcb_is_empty.html | 19 +-
v1_5_0/os/modules/fcb/fcb_offset_last_n.html | 27 +-
v1_5_0/os/modules/fcb/fcb_rotate.html | 19 +-
v1_5_0/os/modules/fcb/fcb_walk.html | 39 +-
v1_5_0/os/modules/fs/fatfs.html | 22 +-
v1_5_0/os/modules/fs/fs.html | 450 +-
v1_5_0/os/modules/fs/fs_add.html | 169 +-
v1_5_0/os/modules/fs/nffs.html | 164 +-
v1_5_0/os/modules/fs/otherfs.html | 63 +-
v1_5_0/os/modules/hal/hal.html | 21 +-
v1_5_0/os/modules/hal/hal_bsp/hal_bsp.html | 110 +-
v1_5_0/os/modules/hal/hal_creation.html | 1 -
v1_5_0/os/modules/hal/hal_flash/hal_flash.html | 56 +-
v1_5_0/os/modules/hal/hal_flash/hal_flash_int.html | 1 -
v1_5_0/os/modules/hal/hal_gpio/hal_gpio.html | 240 +-
v1_5_0/os/modules/hal/hal_i2c/hal_i2c.html | 193 +-
v1_5_0/os/modules/hal/hal_in_libraries.html | 1 -
v1_5_0/os/modules/hal/hal_os_tick/hal_os_tick.html | 29 +-
v1_5_0/os/modules/hal/hal_spi/hal_spi.html | 282 +-
v1_5_0/os/modules/hal/hal_system/hal_sys.html | 89 +-
v1_5_0/os/modules/hal/hal_timer/hal_timer.html | 205 +-
v1_5_0/os/modules/hal/hal_uart/hal_uart.html | 147 +-
.../os/modules/hal/hal_watchdog/hal_watchdog.html | 26 +-
v1_5_0/os/modules/imgmgr/imgmgr.html | 31 +-
v1_5_0/os/modules/imgmgr/imgmgr_module_init.html | 1 -
v1_5_0/os/modules/imgmgr/imgr_ver_parse.html | 23 +-
v1_5_0/os/modules/imgmgr/imgr_ver_str.html | 23 +-
v1_5_0/os/modules/json/json.html | 952 +-
v1_5_0/os/modules/logs/logs.html | 855 +-
v1_5_0/os/modules/sensor_framework/sensor_api.html | 1134 +-
.../os/modules/sensor_framework/sensor_create.html | 117 +-
.../os/modules/sensor_framework/sensor_driver.html | 391 +-
.../modules/sensor_framework/sensor_framework.html | 53 +-
.../sensor_framework/sensor_listener_api.html | 92 +-
.../modules/sensor_framework/sensor_mgr_api.html | 320 +-
.../sensor_framework/sensor_notifier_api.html | 35 +-
v1_5_0/os/modules/sensor_framework/sensor_oic.html | 15 +-
.../os/modules/sensor_framework/sensor_shell.html | 1 -
v1_5_0/os/modules/shell/shell.html | 368 +-
v1_5_0/os/modules/split/split.html | 183 +-
v1_5_0/os/modules/stats/stats.html | 269 +-
.../os/modules/sysinitconfig/sysconfig_error.html | 68 +-
v1_5_0/os/modules/sysinitconfig/sysinitconfig.html | 201 +-
v1_5_0/os/modules/system_modules.html | 1 -
v1_5_0/os/modules/testutil/testutil.html | 298 +-
v1_5_0/os/os_user_guide.html | 1 -
v1_5_0/os/tutorials/STM32F303.html | 19 +-
v1_5_0/os/tutorials/pin-wheel-mods.html | 33 +-
v1_5_0/search.html | 1 -
v1_5_0/searchindex.js | 2 +-
v1_5_0/tutorials/ble/ble.html | 1 -
v1_5_0/tutorials/ble/ble_bare_bones.html | 19 +-
v1_5_0/tutorials/ble/blehci_project.html | 39 +-
.../ble/bleprph/bleprph-sections/bleprph-adv.html | 87 +-
.../ble/bleprph/bleprph-sections/bleprph-app.html | 31 +-
.../bleprph-sections/bleprph-chr-access.html | 271 +-
.../bleprph-sections/bleprph-gap-event.html | 195 +-
.../bleprph/bleprph-sections/bleprph-svc-reg.html | 149 +-
v1_5_0/tutorials/ble/bleprph/bleprph.html | 21 +-
v1_5_0/tutorials/ble/eddystone.html | 339 +-
v1_5_0/tutorials/ble/ibeacon.html | 272 +-
v1_5_0/tutorials/blinky/arduino_zero.html | 55 +-
v1_5_0/tutorials/blinky/blinky.html | 55 +-
v1_5_0/tutorials/blinky/blinky_console.html | 54 +-
v1_5_0/tutorials/blinky/blinky_primo.html | 81 +-
v1_5_0/tutorials/blinky/blinky_stm32f4disc.html | 21 +-
v1_5_0/tutorials/blinky/nRF52.html | 40 +-
v1_5_0/tutorials/blinky/olimex.html | 63 +-
v1_5_0/tutorials/blinky/pinetime.html | 29 +-
v1_5_0/tutorials/blinky/rbnano2.html | 34 +-
v1_5_0/tutorials/devmgmt/add_newtmgr.html | 120 +-
v1_5_0/tutorials/devmgmt/devmgmt.html | 1 -
v1_5_0/tutorials/devmgmt/ota_upgrade_nrf52.html | 43 +-
v1_5_0/tutorials/lora/lorawanapp.html | 99 +-
v1_5_0/tutorials/os_fundamentals/event_queue.html | 58 +-
.../tutorials/os_fundamentals/os_fundamentals.html | 1 -
v1_5_0/tutorials/os_fundamentals/tasks_lesson.html | 39 +-
v1_5_0/tutorials/other/chg_ctrl_on_pinetime.html | 57 +-
v1_5_0/tutorials/other/codesize.html | 39 +-
v1_5_0/tutorials/other/other.html | 1 -
v1_5_0/tutorials/other/rust.html | 37 +-
v1_5_0/tutorials/other/unit_test.html | 29 +-
v1_5_0/tutorials/other/wi-fi_on_arduino.html | 58 +-
v1_5_0/tutorials/repo/add_repos.html | 61 +-
v1_5_0/tutorials/repo/create_repo.html | 25 +-
v1_5_0/tutorials/repo/private_repo.html | 9 +-
v1_5_0/tutorials/repo/upgrade_repo.html | 1 -
v1_5_0/tutorials/sensors/air_quality.html | 1 -
v1_5_0/tutorials/sensors/air_quality_ble.html | 5 +-
v1_5_0/tutorials/sensors/air_quality_sensor.html | 27 +-
v1_5_0/tutorials/sensors/nrf52_adc.html | 58 +-
v1_5_0/tutorials/sensors/sensor_bleprph_oic.html | 85 +-
v1_5_0/tutorials/sensors/sensor_nrf52_bno055.html | 208 +-
.../tutorials/sensors/sensor_nrf52_bno055_oic.html | 50 +-
v1_5_0/tutorials/sensors/sensor_nrf52_drv2605.html | 83 +-
.../tutorials/sensors/sensor_offboard_config.html | 36 +-
v1_5_0/tutorials/sensors/sensor_oic_overview.html | 35 +-
.../sensors/sensor_thingy_lis2dh12_onb.html | 116 +-
v1_5_0/tutorials/sensors/sensors.html | 1 -
v1_5_0/tutorials/sensors/sensors_framework.html | 49 +-
v1_5_0/tutorials/slinky/project-nrf52-slinky.html | 55 +-
v1_5_0/tutorials/slinky/project-sim-slinky.html | 15 +-
v1_5_0/tutorials/slinky/project-slinky.html | 49 +-
v1_5_0/tutorials/slinky/project-stm32-slinky.html | 93 +-
v1_5_0/tutorials/tooling/error_diagnostics.html | 1 -
v1_5_0/tutorials/tooling/segger_rtt.html | 9 +-
v1_5_0/tutorials/tooling/segger_sysview.html | 25 +-
v1_5_0/tutorials/tooling/tooling.html | 1 -
v1_5_0/tutorials/tutorials.html | 92 +-
v1_6_0/_static/ajax-loader.gif | Bin 673 -> 0 bytes
v1_6_0/_static/basic.css | 241 +-
v1_6_0/_static/comment-bright.png | Bin 756 -> 0 bytes
v1_6_0/_static/comment-close.png | Bin 829 -> 0 bytes
v1_6_0/_static/comment.png | Bin 641 -> 0 bytes
v1_6_0/_static/doctools.js | 22 +-
v1_6_0/_static/documentation_options.js | 4 +-
v1_6_0/_static/down-pressed.png | Bin 222 -> 0 bytes
v1_6_0/_static/down.png | Bin 202 -> 0 bytes
.../_static/jquery-3.5.1.js | 2489 +++--
v1_6_0/_static/jquery.js | 6 +-
v1_6_0/_static/language_data.js | 6 +-
v1_6_0/_static/searchtools.js | 105 +-
v1_6_0/_static/underscore-1.12.0.js | 2027 ++++
v1_6_0/_static/underscore-1.3.1.js | 999 --
v1_6_0/_static/underscore.js | 37 +-
v1_6_0/_static/up-pressed.png | Bin 214 -> 0 bytes
v1_6_0/_static/up.png | Bin 203 -> 0 bytes
v1_6_0/_static/websupport.js | 808 --
v1_6_0/concepts.html | 61 +-
v1_6_0/external_links.html | 7 +-
v1_6_0/genindex.html | 2332 ++++-
v1_6_0/get_started/debug.html | 66 +-
v1_6_0/get_started/docker.html | 55 +-
v1_6_0/get_started/index.html | 1 -
v1_6_0/get_started/native_install/cross_tools.html | 83 +-
v1_6_0/get_started/native_install/index.html | 19 +-
.../get_started/native_install/native_tools.html | 19 +-
v1_6_0/get_started/project_create.html | 62 +-
v1_6_0/get_started/serial_access.html | 41 +-
v1_6_0/index.html | 37 +-
v1_6_0/misc/go_env.html | 57 +-
v1_6_0/misc/ide.html | 147 +-
v1_6_0/misc/index.html | 1 -
v1_6_0/mynewt_faq/admin_faq.html | 13 +-
v1_6_0/mynewt_faq/bluetooth_faq.html | 39 +-
v1_6_0/mynewt_faq/boot_faq.html | 9 +-
v1_6_0/mynewt_faq/fs_faq.html | 7 +-
v1_6_0/mynewt_faq/hardware_faq.html | 15 +-
v1_6_0/mynewt_faq/index.html | 5 +-
v1_6_0/mynewt_faq/modules_faq.html | 7 +-
v1_6_0/mynewt_faq/newt_faq.html | 3 +-
v1_6_0/mynewt_faq/newtmgr_faq.html | 9 +-
v1_6_0/mynewt_faq/nfc_faq.html | 1 -
v1_6_0/mynewt_faq/port_faq.html | 3 +-
v1_6_0/mynewt_faq/syntax_faq.html | 19 +-
v1_6_0/mynewt_faq/troubleshoot_faq.html | 15 +-
v1_6_0/network/README.html | 11 +-
v1_6_0/network/ble_hs/ble_att.html | 84 +-
v1_6_0/network/ble_hs/ble_gap.html | 1084 +-
v1_6_0/network/ble_hs/ble_gattc.html | 946 +-
v1_6_0/network/ble_hs/ble_gatts.html | 946 +-
v1_6_0/network/ble_hs/ble_hs.html | 5 +-
v1_6_0/network/ble_hs/ble_hs_id.html | 55 +-
v1_6_0/network/ble_hs/ble_hs_return_codes.html | 1579 +--
v1_6_0/network/ble_sec.html | 43 +-
v1_6_0/network/ble_setup/ble_addr.html | 19 +-
v1_6_0/network/ble_setup/ble_lp_clock.html | 11 +-
v1_6_0/network/ble_setup/ble_setup_intro.html | 1 -
v1_6_0/network/ble_setup/ble_sync_cb.html | 1 -
v1_6_0/network/btshell/btshell_GAP.html | 3045 +++---
v1_6_0/network/btshell/btshell_GATT.html | 471 +-
v1_6_0/network/btshell/btshell_advdata.html | 167 +-
v1_6_0/network/btshell/btshell_api.html | 23 +-
v1_6_0/network/index.html | 93 +-
v1_6_0/network/mesh/index.html | 74 +-
v1_6_0/network/mesh/sample.html | 1 -
v1_6_0/newt/README.html | 8 +-
v1_6_0/newt/command_list/newt_build.html | 23 +-
v1_6_0/newt/command_list/newt_clean.html | 27 +-
v1_6_0/newt/command_list/newt_complete.html | 1 -
v1_6_0/newt/command_list/newt_create_image.html | 27 +-
v1_6_0/newt/command_list/newt_debug.html | 23 +-
v1_6_0/newt/command_list/newt_help.html | 23 +-
v1_6_0/newt/command_list/newt_info.html | 1 -
v1_6_0/newt/command_list/newt_install.html | 1 -
v1_6_0/newt/command_list/newt_load.html | 1 -
v1_6_0/newt/command_list/newt_mfg.html | 27 +-
v1_6_0/newt/command_list/newt_new.html | 19 +-
v1_6_0/newt/command_list/newt_pkg.html | 79 +-
v1_6_0/newt/command_list/newt_resign_image.html | 23 +-
v1_6_0/newt/command_list/newt_run.html | 27 +-
v1_6_0/newt/command_list/newt_size.html | 19 +-
v1_6_0/newt/command_list/newt_sync.html | 1 -
v1_6_0/newt/command_list/newt_target.html | 217 +-
v1_6_0/newt/command_list/newt_test.html | 31 +-
v1_6_0/newt/command_list/newt_upgrade.html | 1 -
v1_6_0/newt/command_list/newt_vals.html | 35 +-
v1_6_0/newt/command_list/newt_version.html | 19 +-
v1_6_0/newt/index.html | 45 +-
v1_6_0/newt/install/index.html | 1 -
v1_6_0/newt/install/newt_linux.html | 35 +-
v1_6_0/newt/install/newt_mac.html | 11 +-
v1_6_0/newt/install/newt_windows.html | 67 +-
v1_6_0/newt/install/prev_releases.html | 77 +-
v1_6_0/newt/newt_operation.html | 57 +-
v1_6_0/newt/newt_ops.html | 1 -
v1_6_0/newtmgr/README.html | 8 +-
v1_6_0/newtmgr/command_list/index.html | 1 -
v1_6_0/newtmgr/command_list/newtmgr_config.html | 23 +-
v1_6_0/newtmgr/command_list/newtmgr_conn.html | 179 +-
v1_6_0/newtmgr/command_list/newtmgr_crash.html | 23 +-
v1_6_0/newtmgr/command_list/newtmgr_datetime.html | 27 +-
v1_6_0/newtmgr/command_list/newtmgr_echo.html | 19 +-
v1_6_0/newtmgr/command_list/newtmgr_fs.html | 45 +-
v1_6_0/newtmgr/command_list/newtmgr_image.html | 141 +-
v1_6_0/newtmgr/command_list/newtmgr_logs.html | 125 +-
v1_6_0/newtmgr/command_list/newtmgr_mpstats.html | 29 +-
v1_6_0/newtmgr/command_list/newtmgr_reset.html | 19 +-
v1_6_0/newtmgr/command_list/newtmgr_run.html | 49 +-
v1_6_0/newtmgr/command_list/newtmgr_stat.html | 45 +-
v1_6_0/newtmgr/command_list/newtmgr_taskstats.html | 35 +-
v1_6_0/newtmgr/index.html | 1 -
v1_6_0/newtmgr/install/index.html | 1 -
v1_6_0/newtmgr/install/install_linux.html | 84 +-
v1_6_0/newtmgr/install/install_mac.html | 24 +-
v1_6_0/newtmgr/install/install_windows.html | 60 +-
v1_6_0/newtmgr/install/prev_releases.html | 77 +-
v1_6_0/objects.inv | Bin 47528 -> 55455 bytes
v1_6_0/os/core_os/callout/callout.html | 102 +-
.../os/core_os/context_switch/context_switch.html | 38 +-
v1_6_0/os/core_os/cputime/os_cputime.html | 195 +-
v1_6_0/os/core_os/event_queue/event_queue.html | 216 +-
v1_6_0/os/core_os/heap/heap.html | 5 +-
v1_6_0/os/core_os/mbuf/mbuf.html | 733 +-
v1_6_0/os/core_os/memory_pool/memory_pool.html | 325 +-
v1_6_0/os/core_os/mutex/mutex.html | 123 +-
v1_6_0/os/core_os/mynewt_os.html | 233 +-
v1_6_0/os/core_os/porting/port_bsp.html | 250 +-
v1_6_0/os/core_os/porting/port_cpu.html | 37 +-
v1_6_0/os/core_os/porting/port_mcu.html | 21 +-
v1_6_0/os/core_os/porting/port_os.html | 47 +-
v1_6_0/os/core_os/sanity/sanity.html | 261 +-
v1_6_0/os/core_os/semaphore/semaphore.html | 64 +-
v1_6_0/os/core_os/task/task.html | 302 +-
v1_6_0/os/core_os/time/os_time.html | 393 +-
v1_6_0/os/modules/baselibc.html | 1 -
v1_6_0/os/modules/bootloader/bootloader.html | 178 +-
v1_6_0/os/modules/config/config.html | 617 +-
v1_6_0/os/modules/console/console.html | 247 +-
v1_6_0/os/modules/devmgmt/customize_newtmgr.html | 1 -
v1_6_0/os/modules/devmgmt/newtmgr.html | 17 +-
v1_6_0/os/modules/devmgmt/oicmgr.html | 27 +-
v1_6_0/os/modules/drivers/driver.html | 86 +-
v1_6_0/os/modules/drivers/flash.html | 103 +-
v1_6_0/os/modules/drivers/mmc.html | 111 +-
v1_6_0/os/modules/elua/elua.html | 39 +-
v1_6_0/os/modules/elua/lua_init.html | 1 -
v1_6_0/os/modules/elua/lua_main.html | 23 +-
v1_6_0/os/modules/fcb/fcb.html | 688 +-
v1_6_0/os/modules/fcb/fcb_append.html | 33 +-
v1_6_0/os/modules/fcb/fcb_append_finish.html | 27 +-
v1_6_0/os/modules/fcb/fcb_append_to_scratch.html | 19 +-
v1_6_0/os/modules/fcb/fcb_clear.html | 19 +-
v1_6_0/os/modules/fcb/fcb_getnext.html | 23 +-
v1_6_0/os/modules/fcb/fcb_init.html | 19 +-
v1_6_0/os/modules/fcb/fcb_is_empty.html | 19 +-
v1_6_0/os/modules/fcb/fcb_offset_last_n.html | 27 +-
v1_6_0/os/modules/fcb/fcb_rotate.html | 19 +-
v1_6_0/os/modules/fcb/fcb_walk.html | 39 +-
v1_6_0/os/modules/fs/fatfs.html | 22 +-
v1_6_0/os/modules/fs/fs.html | 450 +-
v1_6_0/os/modules/fs/fs_add.html | 169 +-
v1_6_0/os/modules/fs/nffs.html | 164 +-
v1_6_0/os/modules/fs/otherfs.html | 63 +-
v1_6_0/os/modules/hal/hal.html | 21 +-
v1_6_0/os/modules/hal/hal_bsp/hal_bsp.html | 110 +-
v1_6_0/os/modules/hal/hal_creation.html | 1 -
v1_6_0/os/modules/hal/hal_flash/hal_flash.html | 180 +-
v1_6_0/os/modules/hal/hal_flash/hal_flash_int.html | 1 -
v1_6_0/os/modules/hal/hal_gpio/hal_gpio.html | 255 +-
v1_6_0/os/modules/hal/hal_i2c/hal_i2c.html | 269 +-
v1_6_0/os/modules/hal/hal_in_libraries.html | 1 -
v1_6_0/os/modules/hal/hal_os_tick/hal_os_tick.html | 29 +-
v1_6_0/os/modules/hal/hal_spi/hal_spi.html | 303 +-
v1_6_0/os/modules/hal/hal_system/hal_sys.html | 89 +-
v1_6_0/os/modules/hal/hal_timer/hal_timer.html | 205 +-
v1_6_0/os/modules/hal/hal_uart/hal_uart.html | 147 +-
.../os/modules/hal/hal_watchdog/hal_watchdog.html | 26 +-
v1_6_0/os/modules/imgmgr/imgmgr.html | 31 +-
v1_6_0/os/modules/imgmgr/imgmgr_module_init.html | 1 -
v1_6_0/os/modules/imgmgr/imgr_ver_parse.html | 23 +-
v1_6_0/os/modules/imgmgr/imgr_ver_str.html | 23 +-
v1_6_0/os/modules/json/json.html | 952 +-
v1_6_0/os/modules/logs/logs.html | 883 +-
v1_6_0/os/modules/mcumgr/mcumgr.html | 1 -
v1_6_0/os/modules/mfg/mfg.html | 326 +-
v1_6_0/os/modules/sensor_framework/sensor_api.html | 1153 +--
.../os/modules/sensor_framework/sensor_create.html | 117 +-
.../os/modules/sensor_framework/sensor_driver.html | 391 +-
.../modules/sensor_framework/sensor_framework.html | 53 +-
.../sensor_framework/sensor_listener_api.html | 92 +-
.../modules/sensor_framework/sensor_mgr_api.html | 331 +-
.../sensor_framework/sensor_notifier_api.html | 35 +-
v1_6_0/os/modules/sensor_framework/sensor_oic.html | 15 +-
.../os/modules/sensor_framework/sensor_shell.html | 1 -
v1_6_0/os/modules/shell/shell.html | 368 +-
v1_6_0/os/modules/split/split.html | 183 +-
v1_6_0/os/modules/stats/stats.html | 404 +-
.../os/modules/sysinitconfig/sysconfig_error.html | 68 +-
v1_6_0/os/modules/sysinitconfig/sysinitconfig.html | 201 +-
v1_6_0/os/modules/system_modules.html | 1 -
v1_6_0/os/modules/testutil/testutil.html | 265 +-
v1_6_0/os/os_user_guide.html | 1 -
v1_6_0/os/tutorials/STM32F303.html | 19 +-
v1_6_0/os/tutorials/pin-wheel-mods.html | 33 +-
v1_6_0/search.html | 1 -
v1_6_0/searchindex.js | 2 +-
v1_6_0/tutorials/ble/ble.html | 1 -
v1_6_0/tutorials/ble/ble_bare_bones.html | 19 +-
v1_6_0/tutorials/ble/blehci_project.html | 39 +-
.../ble/bleprph/bleprph-sections/bleprph-adv.html | 87 +-
.../ble/bleprph/bleprph-sections/bleprph-app.html | 31 +-
.../bleprph-sections/bleprph-chr-access.html | 271 +-
.../bleprph-sections/bleprph-gap-event.html | 195 +-
.../bleprph/bleprph-sections/bleprph-svc-reg.html | 149 +-
v1_6_0/tutorials/ble/bleprph/bleprph.html | 21 +-
v1_6_0/tutorials/ble/eddystone.html | 339 +-
v1_6_0/tutorials/ble/ibeacon.html | 272 +-
v1_6_0/tutorials/blinky/arduino_zero.html | 55 +-
v1_6_0/tutorials/blinky/blinky.html | 55 +-
v1_6_0/tutorials/blinky/blinky_console.html | 54 +-
v1_6_0/tutorials/blinky/blinky_primo.html | 81 +-
v1_6_0/tutorials/blinky/blinky_stm32f4disc.html | 21 +-
v1_6_0/tutorials/blinky/nRF52.html | 40 +-
v1_6_0/tutorials/blinky/olimex.html | 63 +-
v1_6_0/tutorials/blinky/pinetime.html | 29 +-
v1_6_0/tutorials/blinky/rbnano2.html | 34 +-
v1_6_0/tutorials/devmgmt/add_newtmgr.html | 120 +-
v1_6_0/tutorials/devmgmt/devmgmt.html | 1 -
v1_6_0/tutorials/devmgmt/ota_upgrade_nrf52.html | 43 +-
v1_6_0/tutorials/lora/lorawanapp.html | 99 +-
v1_6_0/tutorials/os_fundamentals/event_queue.html | 58 +-
.../tutorials/os_fundamentals/os_fundamentals.html | 1 -
v1_6_0/tutorials/os_fundamentals/tasks_lesson.html | 39 +-
v1_6_0/tutorials/other/chg_ctrl_on_pinetime.html | 57 +-
v1_6_0/tutorials/other/codesize.html | 39 +-
v1_6_0/tutorials/other/other.html | 1 -
v1_6_0/tutorials/other/rust.html | 37 +-
v1_6_0/tutorials/other/unit_test.html | 29 +-
v1_6_0/tutorials/other/wi-fi_on_arduino.html | 58 +-
v1_6_0/tutorials/repo/add_repos.html | 61 +-
v1_6_0/tutorials/repo/create_repo.html | 25 +-
v1_6_0/tutorials/repo/private_repo.html | 9 +-
v1_6_0/tutorials/repo/upgrade_repo.html | 1 -
v1_6_0/tutorials/sensors/air_quality.html | 1 -
v1_6_0/tutorials/sensors/air_quality_ble.html | 5 +-
v1_6_0/tutorials/sensors/air_quality_sensor.html | 27 +-
v1_6_0/tutorials/sensors/nrf52_adc.html | 58 +-
v1_6_0/tutorials/sensors/sensor_bleprph_oic.html | 85 +-
v1_6_0/tutorials/sensors/sensor_nrf52_bno055.html | 208 +-
.../tutorials/sensors/sensor_nrf52_bno055_oic.html | 50 +-
v1_6_0/tutorials/sensors/sensor_nrf52_drv2605.html | 83 +-
.../tutorials/sensors/sensor_offboard_config.html | 36 +-
v1_6_0/tutorials/sensors/sensor_oic_overview.html | 35 +-
.../sensors/sensor_thingy_lis2dh12_onb.html | 116 +-
v1_6_0/tutorials/sensors/sensors.html | 1 -
v1_6_0/tutorials/sensors/sensors_framework.html | 49 +-
v1_6_0/tutorials/slinky/project-nrf52-slinky.html | 55 +-
v1_6_0/tutorials/slinky/project-sim-slinky.html | 15 +-
v1_6_0/tutorials/slinky/project-slinky.html | 49 +-
v1_6_0/tutorials/slinky/project-stm32-slinky.html | 93 +-
v1_6_0/tutorials/tooling/error_diagnostics.html | 1 -
v1_6_0/tutorials/tooling/segger_rtt.html | 9 +-
v1_6_0/tutorials/tooling/segger_sysview.html | 25 +-
v1_6_0/tutorials/tooling/tooling.html | 1 -
v1_6_0/tutorials/tutorials.html | 92 +-
v1_7_0/_static/ajax-loader.gif | Bin 673 -> 0 bytes
v1_7_0/_static/basic.css | 241 +-
v1_7_0/_static/comment-bright.png | Bin 756 -> 0 bytes
v1_7_0/_static/comment-close.png | Bin 829 -> 0 bytes
v1_7_0/_static/comment.png | Bin 641 -> 0 bytes
v1_7_0/_static/doctools.js | 22 +-
v1_7_0/_static/documentation_options.js | 4 +-
v1_7_0/_static/down-pressed.png | Bin 222 -> 0 bytes
v1_7_0/_static/down.png | Bin 202 -> 0 bytes
v1_7_0/_static/jquery-3.2.1.js | 10253 -------------------
.../_static/jquery-3.5.1.js | 2489 +++--
v1_7_0/_static/jquery.js | 6 +-
v1_7_0/_static/language_data.js | 6 +-
v1_7_0/_static/searchtools.js | 105 +-
v1_7_0/_static/underscore-1.12.0.js | 2027 ++++
v1_7_0/_static/underscore-1.3.1.js | 999 --
v1_7_0/_static/underscore.js | 37 +-
v1_7_0/_static/up-pressed.png | Bin 214 -> 0 bytes
v1_7_0/_static/up.png | Bin 203 -> 0 bytes
v1_7_0/_static/websupport.js | 808 --
v1_7_0/concepts.html | 61 +-
v1_7_0/external_links.html | 7 +-
v1_7_0/genindex.html | 3128 +++++-
v1_7_0/get_started/debug.html | 66 +-
v1_7_0/get_started/docker.html | 55 +-
v1_7_0/get_started/index.html | 1 -
v1_7_0/get_started/native_install/cross_tools.html | 83 +-
v1_7_0/get_started/native_install/index.html | 19 +-
.../get_started/native_install/native_tools.html | 19 +-
v1_7_0/get_started/project_create.html | 62 +-
v1_7_0/get_started/serial_access.html | 41 +-
v1_7_0/index.html | 37 +-
v1_7_0/misc/go_env.html | 57 +-
v1_7_0/misc/ide.html | 147 +-
v1_7_0/misc/index.html | 1 -
v1_7_0/mynewt_faq/admin_faq.html | 13 +-
v1_7_0/mynewt_faq/bluetooth_faq.html | 39 +-
v1_7_0/mynewt_faq/boot_faq.html | 9 +-
v1_7_0/mynewt_faq/fs_faq.html | 7 +-
v1_7_0/mynewt_faq/hardware_faq.html | 15 +-
v1_7_0/mynewt_faq/index.html | 5 +-
v1_7_0/mynewt_faq/modules_faq.html | 7 +-
v1_7_0/mynewt_faq/newt_faq.html | 3 +-
v1_7_0/mynewt_faq/newtmgr_faq.html | 9 +-
v1_7_0/mynewt_faq/nfc_faq.html | 1 -
v1_7_0/mynewt_faq/port_faq.html | 3 +-
v1_7_0/mynewt_faq/syntax_faq.html | 19 +-
v1_7_0/mynewt_faq/troubleshoot_faq.html | 15 +-
v1_7_0/network/README.html | 11 +-
v1_7_0/network/ble_hs/ble_att.html | 84 +-
v1_7_0/network/ble_hs/ble_gap.html | 2026 ++--
v1_7_0/network/ble_hs/ble_gattc.html | 946 +-
v1_7_0/network/ble_hs/ble_gatts.html | 946 +-
v1_7_0/network/ble_hs/ble_hs.html | 5 +-
v1_7_0/network/ble_hs/ble_hs_id.html | 55 +-
v1_7_0/network/ble_hs/ble_hs_return_codes.html | 1579 +--
v1_7_0/network/ble_sec.html | 43 +-
v1_7_0/network/ble_setup/ble_addr.html | 19 +-
v1_7_0/network/ble_setup/ble_lp_clock.html | 11 +-
v1_7_0/network/ble_setup/ble_setup_intro.html | 1 -
v1_7_0/network/ble_setup/ble_sync_cb.html | 1 -
v1_7_0/network/btshell/btshell_GAP.html | 3045 +++---
v1_7_0/network/btshell/btshell_GATT.html | 471 +-
v1_7_0/network/btshell/btshell_advdata.html | 167 +-
v1_7_0/network/btshell/btshell_api.html | 23 +-
v1_7_0/network/index.html | 93 +-
v1_7_0/network/mesh/index.html | 74 +-
v1_7_0/network/mesh/sample.html | 1 -
v1_7_0/newt/README.html | 8 +-
v1_7_0/newt/command_list/newt_build.html | 23 +-
v1_7_0/newt/command_list/newt_clean.html | 27 +-
v1_7_0/newt/command_list/newt_complete.html | 1 -
v1_7_0/newt/command_list/newt_create_image.html | 27 +-
v1_7_0/newt/command_list/newt_debug.html | 23 +-
v1_7_0/newt/command_list/newt_help.html | 23 +-
v1_7_0/newt/command_list/newt_info.html | 1 -
v1_7_0/newt/command_list/newt_install.html | 1 -
v1_7_0/newt/command_list/newt_load.html | 1 -
v1_7_0/newt/command_list/newt_mfg.html | 27 +-
v1_7_0/newt/command_list/newt_new.html | 19 +-
v1_7_0/newt/command_list/newt_pkg.html | 79 +-
v1_7_0/newt/command_list/newt_resign_image.html | 23 +-
v1_7_0/newt/command_list/newt_run.html | 27 +-
v1_7_0/newt/command_list/newt_size.html | 19 +-
v1_7_0/newt/command_list/newt_sync.html | 1 -
v1_7_0/newt/command_list/newt_target.html | 217 +-
v1_7_0/newt/command_list/newt_test.html | 31 +-
v1_7_0/newt/command_list/newt_upgrade.html | 1 -
v1_7_0/newt/command_list/newt_vals.html | 35 +-
v1_7_0/newt/command_list/newt_version.html | 19 +-
v1_7_0/newt/index.html | 45 +-
v1_7_0/newt/install/index.html | 1 -
v1_7_0/newt/install/newt_linux.html | 35 +-
v1_7_0/newt/install/newt_mac.html | 11 +-
v1_7_0/newt/install/newt_windows.html | 67 +-
v1_7_0/newt/install/prev_releases.html | 77 +-
v1_7_0/newt/newt_operation.html | 57 +-
v1_7_0/newt/newt_ops.html | 1 -
v1_7_0/newtmgr/README.html | 8 +-
v1_7_0/newtmgr/command_list/index.html | 1 -
v1_7_0/newtmgr/command_list/newtmgr_config.html | 23 +-
v1_7_0/newtmgr/command_list/newtmgr_conn.html | 179 +-
v1_7_0/newtmgr/command_list/newtmgr_crash.html | 23 +-
v1_7_0/newtmgr/command_list/newtmgr_datetime.html | 27 +-
v1_7_0/newtmgr/command_list/newtmgr_echo.html | 19 +-
v1_7_0/newtmgr/command_list/newtmgr_fs.html | 45 +-
v1_7_0/newtmgr/command_list/newtmgr_image.html | 141 +-
v1_7_0/newtmgr/command_list/newtmgr_logs.html | 125 +-
v1_7_0/newtmgr/command_list/newtmgr_mpstats.html | 29 +-
v1_7_0/newtmgr/command_list/newtmgr_reset.html | 19 +-
v1_7_0/newtmgr/command_list/newtmgr_run.html | 49 +-
v1_7_0/newtmgr/command_list/newtmgr_stat.html | 45 +-
v1_7_0/newtmgr/command_list/newtmgr_taskstats.html | 35 +-
v1_7_0/newtmgr/index.html | 1 -
v1_7_0/newtmgr/install/index.html | 1 -
v1_7_0/newtmgr/install/install_linux.html | 84 +-
v1_7_0/newtmgr/install/install_mac.html | 24 +-
v1_7_0/newtmgr/install/install_windows.html | 60 +-
v1_7_0/newtmgr/install/prev_releases.html | 77 +-
v1_7_0/objects.inv | Bin 50484 -> 58303 bytes
v1_7_0/os/core_os/callout/callout.html | 102 +-
.../os/core_os/context_switch/context_switch.html | 38 +-
v1_7_0/os/core_os/cputime/os_cputime.html | 195 +-
v1_7_0/os/core_os/event_queue/event_queue.html | 216 +-
v1_7_0/os/core_os/heap/heap.html | 5 +-
v1_7_0/os/core_os/mbuf/mbuf.html | 733 +-
v1_7_0/os/core_os/memory_pool/memory_pool.html | 325 +-
v1_7_0/os/core_os/mutex/mutex.html | 123 +-
v1_7_0/os/core_os/mynewt_os.html | 233 +-
v1_7_0/os/core_os/porting/port_bsp.html | 250 +-
v1_7_0/os/core_os/porting/port_cpu.html | 37 +-
v1_7_0/os/core_os/porting/port_mcu.html | 21 +-
v1_7_0/os/core_os/porting/port_os.html | 47 +-
v1_7_0/os/core_os/sanity/sanity.html | 261 +-
v1_7_0/os/core_os/semaphore/semaphore.html | 64 +-
v1_7_0/os/core_os/task/task.html | 302 +-
v1_7_0/os/core_os/time/os_time.html | 393 +-
v1_7_0/os/modules/baselibc.html | 1 -
v1_7_0/os/modules/bootloader/bootloader.html | 178 +-
v1_7_0/os/modules/config/config.html | 617 +-
v1_7_0/os/modules/console/console.html | 251 +-
v1_7_0/os/modules/devmgmt/customize_newtmgr.html | 1 -
v1_7_0/os/modules/devmgmt/newtmgr.html | 17 +-
v1_7_0/os/modules/devmgmt/oicmgr.html | 27 +-
v1_7_0/os/modules/drivers/driver.html | 86 +-
v1_7_0/os/modules/drivers/flash.html | 103 +-
v1_7_0/os/modules/drivers/mmc.html | 111 +-
v1_7_0/os/modules/elua/elua.html | 39 +-
v1_7_0/os/modules/elua/lua_init.html | 1 -
v1_7_0/os/modules/elua/lua_main.html | 23 +-
v1_7_0/os/modules/fcb/fcb.html | 688 +-
v1_7_0/os/modules/fcb/fcb_append.html | 33 +-
v1_7_0/os/modules/fcb/fcb_append_finish.html | 27 +-
v1_7_0/os/modules/fcb/fcb_append_to_scratch.html | 19 +-
v1_7_0/os/modules/fcb/fcb_clear.html | 19 +-
v1_7_0/os/modules/fcb/fcb_getnext.html | 23 +-
v1_7_0/os/modules/fcb/fcb_init.html | 19 +-
v1_7_0/os/modules/fcb/fcb_is_empty.html | 19 +-
v1_7_0/os/modules/fcb/fcb_offset_last_n.html | 27 +-
v1_7_0/os/modules/fcb/fcb_rotate.html | 19 +-
v1_7_0/os/modules/fcb/fcb_walk.html | 39 +-
v1_7_0/os/modules/fs/fatfs.html | 22 +-
v1_7_0/os/modules/fs/fs.html | 450 +-
v1_7_0/os/modules/fs/fs_add.html | 169 +-
v1_7_0/os/modules/fs/nffs.html | 164 +-
v1_7_0/os/modules/fs/otherfs.html | 63 +-
v1_7_0/os/modules/hal/hal.html | 21 +-
v1_7_0/os/modules/hal/hal_bsp/hal_bsp.html | 110 +-
v1_7_0/os/modules/hal/hal_creation.html | 1 -
v1_7_0/os/modules/hal/hal_flash/hal_flash.html | 180 +-
v1_7_0/os/modules/hal/hal_flash/hal_flash_int.html | 1 -
v1_7_0/os/modules/hal/hal_gpio/hal_gpio.html | 255 +-
v1_7_0/os/modules/hal/hal_i2c/hal_i2c.html | 269 +-
v1_7_0/os/modules/hal/hal_in_libraries.html | 1 -
v1_7_0/os/modules/hal/hal_os_tick/hal_os_tick.html | 29 +-
v1_7_0/os/modules/hal/hal_spi/hal_spi.html | 303 +-
v1_7_0/os/modules/hal/hal_system/hal_sys.html | 99 +-
v1_7_0/os/modules/hal/hal_timer/hal_timer.html | 205 +-
v1_7_0/os/modules/hal/hal_uart/hal_uart.html | 147 +-
.../os/modules/hal/hal_watchdog/hal_watchdog.html | 26 +-
v1_7_0/os/modules/imgmgr/imgmgr.html | 31 +-
v1_7_0/os/modules/imgmgr/imgmgr_module_init.html | 1 -
v1_7_0/os/modules/imgmgr/imgr_ver_parse.html | 23 +-
v1_7_0/os/modules/imgmgr/imgr_ver_str.html | 23 +-
v1_7_0/os/modules/json/json.html | 952 +-
v1_7_0/os/modules/logs/logs.html | 902 +-
v1_7_0/os/modules/mcumgr/mcumgr.html | 1 -
v1_7_0/os/modules/mfg/mfg.html | 326 +-
v1_7_0/os/modules/sensor_framework/sensor_api.html | 1153 +--
.../os/modules/sensor_framework/sensor_create.html | 117 +-
.../os/modules/sensor_framework/sensor_driver.html | 391 +-
.../modules/sensor_framework/sensor_framework.html | 53 +-
.../sensor_framework/sensor_listener_api.html | 92 +-
.../modules/sensor_framework/sensor_mgr_api.html | 331 +-
.../sensor_framework/sensor_notifier_api.html | 35 +-
v1_7_0/os/modules/sensor_framework/sensor_oic.html | 15 +-
.../os/modules/sensor_framework/sensor_shell.html | 1 -
v1_7_0/os/modules/shell/shell.html | 432 +-
v1_7_0/os/modules/split/split.html | 183 +-
v1_7_0/os/modules/stats/stats.html | 404 +-
.../os/modules/sysinitconfig/sysconfig_error.html | 68 +-
v1_7_0/os/modules/sysinitconfig/sysinitconfig.html | 201 +-
v1_7_0/os/modules/system_modules.html | 1 -
v1_7_0/os/modules/testutil/testutil.html | 265 +-
v1_7_0/os/os_user_guide.html | 1 -
v1_7_0/os/tutorials/STM32F303.html | 19 +-
v1_7_0/os/tutorials/pin-wheel-mods.html | 33 +-
v1_7_0/search.html | 1 -
v1_7_0/searchindex.js | 2 +-
v1_7_0/tutorials/ble/ble.html | 1 -
v1_7_0/tutorials/ble/ble_bare_bones.html | 19 +-
v1_7_0/tutorials/ble/blehci_project.html | 39 +-
.../ble/bleprph/bleprph-sections/bleprph-adv.html | 87 +-
.../ble/bleprph/bleprph-sections/bleprph-app.html | 31 +-
.../bleprph-sections/bleprph-chr-access.html | 271 +-
.../bleprph-sections/bleprph-gap-event.html | 195 +-
.../bleprph/bleprph-sections/bleprph-svc-reg.html | 149 +-
v1_7_0/tutorials/ble/bleprph/bleprph.html | 21 +-
v1_7_0/tutorials/ble/eddystone.html | 339 +-
v1_7_0/tutorials/ble/ibeacon.html | 272 +-
v1_7_0/tutorials/blinky/arduino_zero.html | 55 +-
v1_7_0/tutorials/blinky/blinky.html | 55 +-
v1_7_0/tutorials/blinky/blinky_console.html | 54 +-
v1_7_0/tutorials/blinky/blinky_primo.html | 81 +-
v1_7_0/tutorials/blinky/blinky_stm32f4disc.html | 21 +-
v1_7_0/tutorials/blinky/nRF52.html | 40 +-
v1_7_0/tutorials/blinky/olimex.html | 63 +-
v1_7_0/tutorials/blinky/pinetime.html | 29 +-
v1_7_0/tutorials/blinky/rbnano2.html | 34 +-
v1_7_0/tutorials/devmgmt/add_newtmgr.html | 120 +-
v1_7_0/tutorials/devmgmt/devmgmt.html | 1 -
v1_7_0/tutorials/devmgmt/ota_upgrade_nrf52.html | 43 +-
v1_7_0/tutorials/lora/lorawanapp.html | 99 +-
v1_7_0/tutorials/os_fundamentals/event_queue.html | 58 +-
.../tutorials/os_fundamentals/os_fundamentals.html | 1 -
v1_7_0/tutorials/os_fundamentals/tasks_lesson.html | 39 +-
v1_7_0/tutorials/other/chg_ctrl_on_pinetime.html | 57 +-
v1_7_0/tutorials/other/codesize.html | 39 +-
v1_7_0/tutorials/other/other.html | 1 -
v1_7_0/tutorials/other/rust.html | 37 +-
v1_7_0/tutorials/other/unit_test.html | 29 +-
v1_7_0/tutorials/other/wi-fi_on_arduino.html | 58 +-
v1_7_0/tutorials/repo/add_repos.html | 61 +-
v1_7_0/tutorials/repo/create_repo.html | 25 +-
v1_7_0/tutorials/repo/private_repo.html | 9 +-
v1_7_0/tutorials/repo/upgrade_repo.html | 1 -
v1_7_0/tutorials/sensors/air_quality.html | 1 -
v1_7_0/tutorials/sensors/air_quality_ble.html | 5 +-
v1_7_0/tutorials/sensors/air_quality_sensor.html | 27 +-
v1_7_0/tutorials/sensors/nrf52_adc.html | 58 +-
v1_7_0/tutorials/sensors/sensor_bleprph_oic.html | 85 +-
v1_7_0/tutorials/sensors/sensor_nrf52_bno055.html | 208 +-
.../tutorials/sensors/sensor_nrf52_bno055_oic.html | 50 +-
v1_7_0/tutorials/sensors/sensor_nrf52_drv2605.html | 83 +-
.../tutorials/sensors/sensor_offboard_config.html | 36 +-
v1_7_0/tutorials/sensors/sensor_oic_overview.html | 35 +-
.../sensors/sensor_thingy_lis2dh12_onb.html | 116 +-
v1_7_0/tutorials/sensors/sensors.html | 1 -
v1_7_0/tutorials/sensors/sensors_framework.html | 49 +-
v1_7_0/tutorials/slinky/project-nrf52-slinky.html | 55 +-
v1_7_0/tutorials/slinky/project-sim-slinky.html | 15 +-
v1_7_0/tutorials/slinky/project-slinky.html | 49 +-
v1_7_0/tutorials/slinky/project-stm32-slinky.html | 93 +-
v1_7_0/tutorials/tooling/error_diagnostics.html | 1 -
v1_7_0/tutorials/tooling/segger_rtt.html | 9 +-
v1_7_0/tutorials/tooling/segger_sysview.html | 25 +-
v1_7_0/tutorials/tooling/tooling.html | 1 -
v1_7_0/tutorials/tutorials.html | 92 +-
v1_8_0/_static/ajax-loader.gif | Bin 673 -> 0 bytes
v1_8_0/_static/basic.css | 241 +-
v1_8_0/_static/comment-bright.png | Bin 756 -> 0 bytes
v1_8_0/_static/comment-close.png | Bin 829 -> 0 bytes
v1_8_0/_static/comment.png | Bin 641 -> 0 bytes
v1_8_0/_static/doctools.js | 22 +-
v1_8_0/_static/documentation_options.js | 4 +-
v1_8_0/_static/down-pressed.png | Bin 222 -> 0 bytes
v1_8_0/_static/down.png | Bin 202 -> 0 bytes
v1_8_0/_static/jquery-3.2.1.js | 10253 -------------------
.../_static/jquery-3.5.1.js | 2489 +++--
v1_8_0/_static/jquery.js | 6 +-
v1_8_0/_static/language_data.js | 6 +-
v1_8_0/_static/searchtools.js | 105 +-
v1_8_0/_static/underscore-1.12.0.js | 2027 ++++
v1_8_0/_static/underscore-1.3.1.js | 999 --
v1_8_0/_static/underscore.js | 37 +-
v1_8_0/_static/up-pressed.png | Bin 214 -> 0 bytes
v1_8_0/_static/up.png | Bin 203 -> 0 bytes
v1_8_0/_static/websupport.js | 808 --
v1_8_0/concepts.html | 61 +-
v1_8_0/external_links.html | 7 +-
v1_8_0/genindex.html | 3106 +++++-
v1_8_0/get_started/debug.html | 66 +-
v1_8_0/get_started/docker.html | 55 +-
v1_8_0/get_started/index.html | 1 -
v1_8_0/get_started/native_install/cross_tools.html | 83 +-
v1_8_0/get_started/native_install/index.html | 19 +-
.../get_started/native_install/native_tools.html | 19 +-
v1_8_0/get_started/project_create.html | 62 +-
v1_8_0/get_started/serial_access.html | 41 +-
v1_8_0/index.html | 37 +-
v1_8_0/misc/go_env.html | 57 +-
v1_8_0/misc/ide.html | 147 +-
v1_8_0/misc/index.html | 1 -
v1_8_0/mynewt_faq/admin_faq.html | 13 +-
v1_8_0/mynewt_faq/bluetooth_faq.html | 39 +-
v1_8_0/mynewt_faq/boot_faq.html | 9 +-
v1_8_0/mynewt_faq/fs_faq.html | 7 +-
v1_8_0/mynewt_faq/hardware_faq.html | 15 +-
v1_8_0/mynewt_faq/index.html | 5 +-
v1_8_0/mynewt_faq/modules_faq.html | 7 +-
v1_8_0/mynewt_faq/newt_faq.html | 3 +-
v1_8_0/mynewt_faq/newtmgr_faq.html | 9 +-
v1_8_0/mynewt_faq/nfc_faq.html | 1 -
v1_8_0/mynewt_faq/port_faq.html | 3 +-
v1_8_0/mynewt_faq/syntax_faq.html | 19 +-
v1_8_0/mynewt_faq/troubleshoot_faq.html | 15 +-
v1_8_0/network/README.html | 11 +-
v1_8_0/network/ble_hs/ble_att.html | 84 +-
v1_8_0/network/ble_hs/ble_gap.html | 2112 ++--
v1_8_0/network/ble_hs/ble_gattc.html | 946 +-
v1_8_0/network/ble_hs/ble_gatts.html | 946 +-
v1_8_0/network/ble_hs/ble_hs.html | 5 +-
v1_8_0/network/ble_hs/ble_hs_id.html | 55 +-
v1_8_0/network/ble_hs/ble_hs_return_codes.html | 1579 +--
v1_8_0/network/ble_sec.html | 43 +-
v1_8_0/network/ble_setup/ble_addr.html | 19 +-
v1_8_0/network/ble_setup/ble_lp_clock.html | 11 +-
v1_8_0/network/ble_setup/ble_setup_intro.html | 1 -
v1_8_0/network/ble_setup/ble_sync_cb.html | 1 -
v1_8_0/network/btshell/btshell_GAP.html | 3045 +++---
v1_8_0/network/btshell/btshell_GATT.html | 471 +-
v1_8_0/network/btshell/btshell_advdata.html | 167 +-
v1_8_0/network/btshell/btshell_api.html | 23 +-
v1_8_0/network/index.html | 93 +-
v1_8_0/network/mesh/index.html | 74 +-
v1_8_0/network/mesh/sample.html | 1 -
v1_8_0/newt/README.html | 8 +-
v1_8_0/newt/command_list/newt_build.html | 23 +-
v1_8_0/newt/command_list/newt_clean.html | 27 +-
v1_8_0/newt/command_list/newt_complete.html | 1 -
v1_8_0/newt/command_list/newt_create_image.html | 27 +-
v1_8_0/newt/command_list/newt_debug.html | 23 +-
v1_8_0/newt/command_list/newt_help.html | 23 +-
v1_8_0/newt/command_list/newt_info.html | 1 -
v1_8_0/newt/command_list/newt_load.html | 1 -
v1_8_0/newt/command_list/newt_mfg.html | 27 +-
v1_8_0/newt/command_list/newt_new.html | 19 +-
v1_8_0/newt/command_list/newt_pkg.html | 79 +-
v1_8_0/newt/command_list/newt_resign_image.html | 23 +-
v1_8_0/newt/command_list/newt_run.html | 27 +-
v1_8_0/newt/command_list/newt_size.html | 19 +-
v1_8_0/newt/command_list/newt_target.html | 217 +-
v1_8_0/newt/command_list/newt_test.html | 31 +-
v1_8_0/newt/command_list/newt_upgrade.html | 1 -
v1_8_0/newt/command_list/newt_vals.html | 35 +-
v1_8_0/newt/command_list/newt_version.html | 19 +-
v1_8_0/newt/index.html | 45 +-
v1_8_0/newt/install/index.html | 1 -
v1_8_0/newt/install/newt_linux.html | 35 +-
v1_8_0/newt/install/newt_mac.html | 11 +-
v1_8_0/newt/install/newt_windows.html | 67 +-
v1_8_0/newt/install/prev_releases.html | 77 +-
v1_8_0/newt/newt_operation.html | 57 +-
v1_8_0/newt/newt_ops.html | 1 -
v1_8_0/newtmgr/README.html | 8 +-
v1_8_0/newtmgr/command_list/index.html | 1 -
v1_8_0/newtmgr/command_list/newtmgr_config.html | 23 +-
v1_8_0/newtmgr/command_list/newtmgr_conn.html | 179 +-
v1_8_0/newtmgr/command_list/newtmgr_crash.html | 23 +-
v1_8_0/newtmgr/command_list/newtmgr_datetime.html | 27 +-
v1_8_0/newtmgr/command_list/newtmgr_echo.html | 19 +-
v1_8_0/newtmgr/command_list/newtmgr_fs.html | 45 +-
v1_8_0/newtmgr/command_list/newtmgr_image.html | 141 +-
v1_8_0/newtmgr/command_list/newtmgr_logs.html | 125 +-
v1_8_0/newtmgr/command_list/newtmgr_mpstats.html | 29 +-
v1_8_0/newtmgr/command_list/newtmgr_reset.html | 19 +-
v1_8_0/newtmgr/command_list/newtmgr_run.html | 49 +-
v1_8_0/newtmgr/command_list/newtmgr_stat.html | 45 +-
v1_8_0/newtmgr/command_list/newtmgr_taskstats.html | 35 +-
v1_8_0/newtmgr/index.html | 1 -
v1_8_0/newtmgr/install/index.html | 1 -
v1_8_0/newtmgr/install/install_linux.html | 84 +-
v1_8_0/newtmgr/install/install_mac.html | 24 +-
v1_8_0/newtmgr/install/install_windows.html | 60 +-
v1_8_0/newtmgr/install/prev_releases.html | 77 +-
v1_8_0/objects.inv | Bin 50724 -> 58551 bytes
v1_8_0/os/core_os/callout/callout.html | 102 +-
.../os/core_os/context_switch/context_switch.html | 38 +-
v1_8_0/os/core_os/cputime/os_cputime.html | 195 +-
v1_8_0/os/core_os/event_queue/event_queue.html | 216 +-
v1_8_0/os/core_os/heap/heap.html | 44 +-
v1_8_0/os/core_os/mbuf/mbuf.html | 750 +-
v1_8_0/os/core_os/memory_pool/memory_pool.html | 325 +-
v1_8_0/os/core_os/mutex/mutex.html | 123 +-
v1_8_0/os/core_os/mynewt_os.html | 233 +-
v1_8_0/os/core_os/porting/port_bsp.html | 250 +-
v1_8_0/os/core_os/porting/port_cpu.html | 37 +-
v1_8_0/os/core_os/porting/port_mcu.html | 21 +-
v1_8_0/os/core_os/porting/port_os.html | 47 +-
v1_8_0/os/core_os/sanity/sanity.html | 261 +-
v1_8_0/os/core_os/semaphore/semaphore.html | 64 +-
v1_8_0/os/core_os/task/task.html | 356 +-
v1_8_0/os/core_os/time/os_time.html | 393 +-
v1_8_0/os/modules/baselibc.html | 1 -
v1_8_0/os/modules/bootloader/bootloader.html | 178 +-
v1_8_0/os/modules/config/config.html | 653 +-
v1_8_0/os/modules/console/console.html | 264 +-
v1_8_0/os/modules/devmgmt/customize_newtmgr.html | 1 -
v1_8_0/os/modules/devmgmt/newtmgr.html | 17 +-
v1_8_0/os/modules/devmgmt/oicmgr.html | 27 +-
v1_8_0/os/modules/drivers/driver.html | 86 +-
v1_8_0/os/modules/drivers/flash.html | 103 +-
v1_8_0/os/modules/drivers/mmc.html | 111 +-
v1_8_0/os/modules/elua/elua.html | 39 +-
v1_8_0/os/modules/elua/lua_init.html | 1 -
v1_8_0/os/modules/elua/lua_main.html | 23 +-
v1_8_0/os/modules/fcb/fcb.html | 370 +-
v1_8_0/os/modules/fcb/fcb_append.html | 33 +-
v1_8_0/os/modules/fcb/fcb_append_finish.html | 27 +-
v1_8_0/os/modules/fcb/fcb_append_to_scratch.html | 19 +-
v1_8_0/os/modules/fcb/fcb_clear.html | 19 +-
v1_8_0/os/modules/fcb/fcb_getnext.html | 23 +-
v1_8_0/os/modules/fcb/fcb_init.html | 19 +-
v1_8_0/os/modules/fcb/fcb_is_empty.html | 19 +-
v1_8_0/os/modules/fcb/fcb_offset_last_n.html | 27 +-
v1_8_0/os/modules/fcb/fcb_rotate.html | 19 +-
v1_8_0/os/modules/fcb/fcb_walk.html | 39 +-
v1_8_0/os/modules/fs/fatfs.html | 22 +-
v1_8_0/os/modules/fs/fs.html | 454 +-
v1_8_0/os/modules/fs/fs_add.html | 175 +-
v1_8_0/os/modules/fs/nffs.html | 164 +-
v1_8_0/os/modules/fs/otherfs.html | 63 +-
v1_8_0/os/modules/hal/hal.html | 21 +-
v1_8_0/os/modules/hal/hal_bsp/hal_bsp.html | 110 +-
v1_8_0/os/modules/hal/hal_creation.html | 1 -
v1_8_0/os/modules/hal/hal_flash/hal_flash.html | 180 +-
v1_8_0/os/modules/hal/hal_flash/hal_flash_int.html | 1 -
v1_8_0/os/modules/hal/hal_gpio/hal_gpio.html | 255 +-
v1_8_0/os/modules/hal/hal_i2c/hal_i2c.html | 269 +-
v1_8_0/os/modules/hal/hal_in_libraries.html | 1 -
v1_8_0/os/modules/hal/hal_os_tick/hal_os_tick.html | 29 +-
v1_8_0/os/modules/hal/hal_spi/hal_spi.html | 303 +-
v1_8_0/os/modules/hal/hal_system/hal_sys.html | 105 +-
v1_8_0/os/modules/hal/hal_timer/hal_timer.html | 205 +-
v1_8_0/os/modules/hal/hal_uart/hal_uart.html | 147 +-
.../os/modules/hal/hal_watchdog/hal_watchdog.html | 26 +-
v1_8_0/os/modules/imgmgr/imgmgr.html | 31 +-
v1_8_0/os/modules/imgmgr/imgmgr_module_init.html | 1 -
v1_8_0/os/modules/imgmgr/imgr_ver_parse.html | 23 +-
v1_8_0/os/modules/imgmgr/imgr_ver_str.html | 23 +-
v1_8_0/os/modules/json/json.html | 952 +-
v1_8_0/os/modules/logs/logs.html | 980 +-
v1_8_0/os/modules/mcumgr/mcumgr.html | 1 -
v1_8_0/os/modules/mfg/mfg.html | 322 +-
v1_8_0/os/modules/sensor_framework/sensor_api.html | 1153 +--
.../os/modules/sensor_framework/sensor_create.html | 117 +-
.../os/modules/sensor_framework/sensor_driver.html | 391 +-
.../modules/sensor_framework/sensor_framework.html | 53 +-
.../sensor_framework/sensor_listener_api.html | 92 +-
.../modules/sensor_framework/sensor_mgr_api.html | 331 +-
.../sensor_framework/sensor_notifier_api.html | 35 +-
v1_8_0/os/modules/sensor_framework/sensor_oic.html | 15 +-
.../os/modules/sensor_framework/sensor_shell.html | 1 -
v1_8_0/os/modules/shell/shell.html | 432 +-
v1_8_0/os/modules/split/split.html | 183 +-
v1_8_0/os/modules/stats/stats.html | 414 +-
.../os/modules/sysinitconfig/sysconfig_error.html | 68 +-
v1_8_0/os/modules/sysinitconfig/sysinitconfig.html | 201 +-
v1_8_0/os/modules/system_modules.html | 1 -
v1_8_0/os/modules/testutil/testutil.html | 265 +-
v1_8_0/os/os_user_guide.html | 1 -
v1_8_0/os/tutorials/STM32F303.html | 19 +-
v1_8_0/os/tutorials/pin-wheel-mods.html | 33 +-
v1_8_0/search.html | 1 -
v1_8_0/searchindex.js | 2 +-
v1_8_0/tutorials/ble/ble.html | 1 -
v1_8_0/tutorials/ble/ble_bare_bones.html | 19 +-
v1_8_0/tutorials/ble/blehci_project.html | 39 +-
.../ble/bleprph/bleprph-sections/bleprph-adv.html | 87 +-
.../ble/bleprph/bleprph-sections/bleprph-app.html | 31 +-
.../bleprph-sections/bleprph-chr-access.html | 271 +-
.../bleprph-sections/bleprph-gap-event.html | 195 +-
.../bleprph/bleprph-sections/bleprph-svc-reg.html | 149 +-
v1_8_0/tutorials/ble/bleprph/bleprph.html | 21 +-
v1_8_0/tutorials/ble/eddystone.html | 339 +-
v1_8_0/tutorials/ble/ibeacon.html | 272 +-
v1_8_0/tutorials/blinky/arduino_zero.html | 55 +-
v1_8_0/tutorials/blinky/blinky.html | 55 +-
v1_8_0/tutorials/blinky/blinky_console.html | 54 +-
v1_8_0/tutorials/blinky/blinky_primo.html | 81 +-
v1_8_0/tutorials/blinky/blinky_stm32f4disc.html | 21 +-
v1_8_0/tutorials/blinky/nRF52.html | 40 +-
v1_8_0/tutorials/blinky/olimex.html | 63 +-
v1_8_0/tutorials/blinky/pinetime.html | 29 +-
v1_8_0/tutorials/blinky/rbnano2.html | 34 +-
v1_8_0/tutorials/devmgmt/add_newtmgr.html | 120 +-
v1_8_0/tutorials/devmgmt/devmgmt.html | 1 -
v1_8_0/tutorials/devmgmt/ota_upgrade_nrf52.html | 43 +-
v1_8_0/tutorials/lora/lorawanapp.html | 99 +-
v1_8_0/tutorials/os_fundamentals/event_queue.html | 58 +-
.../tutorials/os_fundamentals/os_fundamentals.html | 1 -
v1_8_0/tutorials/os_fundamentals/tasks_lesson.html | 39 +-
v1_8_0/tutorials/other/chg_ctrl_on_pinetime.html | 57 +-
v1_8_0/tutorials/other/codesize.html | 39 +-
v1_8_0/tutorials/other/other.html | 1 -
v1_8_0/tutorials/other/rust.html | 37 +-
v1_8_0/tutorials/other/unit_test.html | 29 +-
v1_8_0/tutorials/other/wi-fi_on_arduino.html | 58 +-
v1_8_0/tutorials/repo/add_repos.html | 61 +-
v1_8_0/tutorials/repo/create_repo.html | 25 +-
v1_8_0/tutorials/repo/private_repo.html | 9 +-
v1_8_0/tutorials/repo/upgrade_repo.html | 1 -
v1_8_0/tutorials/sensors/air_quality.html | 1 -
v1_8_0/tutorials/sensors/air_quality_ble.html | 5 +-
v1_8_0/tutorials/sensors/air_quality_sensor.html | 27 +-
v1_8_0/tutorials/sensors/nrf52_adc.html | 58 +-
v1_8_0/tutorials/sensors/sensor_bleprph_oic.html | 85 +-
v1_8_0/tutorials/sensors/sensor_nrf52_bno055.html | 208 +-
.../tutorials/sensors/sensor_nrf52_bno055_oic.html | 50 +-
v1_8_0/tutorials/sensors/sensor_nrf52_drv2605.html | 83 +-
.../tutorials/sensors/sensor_offboard_config.html | 36 +-
v1_8_0/tutorials/sensors/sensor_oic_overview.html | 35 +-
.../sensors/sensor_thingy_lis2dh12_onb.html | 116 +-
v1_8_0/tutorials/sensors/sensors.html | 1 -
v1_8_0/tutorials/sensors/sensors_framework.html | 49 +-
v1_8_0/tutorials/slinky/project-nrf52-slinky.html | 55 +-
v1_8_0/tutorials/slinky/project-sim-slinky.html | 15 +-
v1_8_0/tutorials/slinky/project-slinky.html | 49 +-
v1_8_0/tutorials/slinky/project-stm32-slinky.html | 93 +-
v1_8_0/tutorials/tooling/error_diagnostics.html | 1 -
v1_8_0/tutorials/tooling/segger_rtt.html | 9 +-
v1_8_0/tutorials/tooling/segger_sysview.html | 25 +-
v1_8_0/tutorials/tooling/tooling.html | 1 -
v1_8_0/tutorials/tutorials.html | 92 +-
v1_9_0/_static/ajax-loader.gif | Bin 673 -> 0 bytes
v1_9_0/_static/basic.css | 241 +-
v1_9_0/_static/comment-bright.png | Bin 756 -> 0 bytes
v1_9_0/_static/comment-close.png | Bin 829 -> 0 bytes
v1_9_0/_static/comment.png | Bin 641 -> 0 bytes
v1_9_0/_static/doctools.js | 22 +-
v1_9_0/_static/documentation_options.js | 4 +-
v1_9_0/_static/down-pressed.png | Bin 222 -> 0 bytes
v1_9_0/_static/down.png | Bin 202 -> 0 bytes
v1_9_0/_static/jquery-3.2.1.js | 10253 -------------------
.../_static/jquery-3.5.1.js | 2489 +++--
v1_9_0/_static/jquery.js | 6 +-
v1_9_0/_static/language_data.js | 6 +-
v1_9_0/_static/searchtools.js | 105 +-
v1_9_0/_static/underscore-1.12.0.js | 2027 ++++
v1_9_0/_static/underscore-1.3.1.js | 999 --
v1_9_0/_static/underscore.js | 37 +-
v1_9_0/_static/up-pressed.png | Bin 214 -> 0 bytes
v1_9_0/_static/up.png | Bin 203 -> 0 bytes
v1_9_0/_static/websupport.js | 808 --
v1_9_0/concepts.html | 61 +-
v1_9_0/external_links.html | 7 +-
v1_9_0/genindex.html | 3082 +++++-
v1_9_0/get_started/debug.html | 66 +-
v1_9_0/get_started/docker.html | 55 +-
v1_9_0/get_started/index.html | 1 -
v1_9_0/get_started/native_install/cross_tools.html | 83 +-
v1_9_0/get_started/native_install/index.html | 19 +-
.../get_started/native_install/native_tools.html | 19 +-
v1_9_0/get_started/project_create.html | 62 +-
v1_9_0/get_started/serial_access.html | 41 +-
v1_9_0/index.html | 37 +-
v1_9_0/misc/go_env.html | 57 +-
v1_9_0/misc/ide.html | 147 +-
v1_9_0/misc/index.html | 1 -
v1_9_0/mynewt_faq/admin_faq.html | 13 +-
v1_9_0/mynewt_faq/bluetooth_faq.html | 39 +-
v1_9_0/mynewt_faq/boot_faq.html | 9 +-
v1_9_0/mynewt_faq/fs_faq.html | 7 +-
v1_9_0/mynewt_faq/hardware_faq.html | 15 +-
v1_9_0/mynewt_faq/index.html | 5 +-
v1_9_0/mynewt_faq/modules_faq.html | 7 +-
v1_9_0/mynewt_faq/newt_faq.html | 3 +-
v1_9_0/mynewt_faq/newtmgr_faq.html | 9 +-
v1_9_0/mynewt_faq/nfc_faq.html | 1 -
v1_9_0/mynewt_faq/port_faq.html | 3 +-
v1_9_0/mynewt_faq/syntax_faq.html | 19 +-
v1_9_0/mynewt_faq/troubleshoot_faq.html | 15 +-
v1_9_0/network/README.html | 11 +-
v1_9_0/network/ble_hs/ble_att.html | 84 +-
v1_9_0/network/ble_hs/ble_gap.html | 2166 ++--
v1_9_0/network/ble_hs/ble_gattc.html | 946 +-
v1_9_0/network/ble_hs/ble_gatts.html | 946 +-
v1_9_0/network/ble_hs/ble_hs.html | 5 +-
v1_9_0/network/ble_hs/ble_hs_id.html | 55 +-
v1_9_0/network/ble_hs/ble_hs_return_codes.html | 1579 +--
v1_9_0/network/ble_sec.html | 43 +-
v1_9_0/network/ble_setup/ble_addr.html | 19 +-
v1_9_0/network/ble_setup/ble_lp_clock.html | 11 +-
v1_9_0/network/ble_setup/ble_setup_intro.html | 1 -
v1_9_0/network/ble_setup/ble_sync_cb.html | 1 -
v1_9_0/network/btshell/btshell_GAP.html | 3045 +++---
v1_9_0/network/btshell/btshell_GATT.html | 471 +-
v1_9_0/network/btshell/btshell_advdata.html | 167 +-
v1_9_0/network/btshell/btshell_api.html | 23 +-
v1_9_0/network/index.html | 93 +-
v1_9_0/network/mesh/index.html | 74 +-
v1_9_0/network/mesh/sample.html | 1 -
v1_9_0/newt/README.html | 8 +-
v1_9_0/newt/command_list/newt_build.html | 23 +-
v1_9_0/newt/command_list/newt_clean.html | 27 +-
v1_9_0/newt/command_list/newt_complete.html | 1 -
v1_9_0/newt/command_list/newt_create_image.html | 27 +-
v1_9_0/newt/command_list/newt_debug.html | 23 +-
v1_9_0/newt/command_list/newt_help.html | 23 +-
v1_9_0/newt/command_list/newt_info.html | 1 -
v1_9_0/newt/command_list/newt_load.html | 1 -
v1_9_0/newt/command_list/newt_mfg.html | 27 +-
v1_9_0/newt/command_list/newt_new.html | 19 +-
v1_9_0/newt/command_list/newt_pkg.html | 79 +-
v1_9_0/newt/command_list/newt_resign_image.html | 23 +-
v1_9_0/newt/command_list/newt_run.html | 27 +-
v1_9_0/newt/command_list/newt_size.html | 19 +-
v1_9_0/newt/command_list/newt_target.html | 217 +-
v1_9_0/newt/command_list/newt_test.html | 31 +-
v1_9_0/newt/command_list/newt_upgrade.html | 1 -
v1_9_0/newt/command_list/newt_vals.html | 35 +-
v1_9_0/newt/command_list/newt_version.html | 19 +-
v1_9_0/newt/index.html | 45 +-
v1_9_0/newt/install/index.html | 1 -
v1_9_0/newt/install/newt_linux.html | 35 +-
v1_9_0/newt/install/newt_mac.html | 11 +-
v1_9_0/newt/install/newt_windows.html | 70 +-
v1_9_0/newt/install/prev_releases.html | 77 +-
v1_9_0/newt/newt_operation.html | 57 +-
v1_9_0/newt/newt_ops.html | 1 -
v1_9_0/newtmgr/README.html | 8 +-
v1_9_0/newtmgr/command_list/index.html | 1 -
v1_9_0/newtmgr/command_list/newtmgr_config.html | 23 +-
v1_9_0/newtmgr/command_list/newtmgr_conn.html | 179 +-
v1_9_0/newtmgr/command_list/newtmgr_crash.html | 23 +-
v1_9_0/newtmgr/command_list/newtmgr_datetime.html | 27 +-
v1_9_0/newtmgr/command_list/newtmgr_echo.html | 19 +-
v1_9_0/newtmgr/command_list/newtmgr_fs.html | 45 +-
v1_9_0/newtmgr/command_list/newtmgr_image.html | 141 +-
v1_9_0/newtmgr/command_list/newtmgr_logs.html | 125 +-
v1_9_0/newtmgr/command_list/newtmgr_mpstats.html | 29 +-
v1_9_0/newtmgr/command_list/newtmgr_reset.html | 19 +-
v1_9_0/newtmgr/command_list/newtmgr_run.html | 49 +-
v1_9_0/newtmgr/command_list/newtmgr_stat.html | 45 +-
v1_9_0/newtmgr/command_list/newtmgr_taskstats.html | 35 +-
v1_9_0/newtmgr/index.html | 1 -
v1_9_0/newtmgr/install/index.html | 1 -
v1_9_0/newtmgr/install/install_linux.html | 84 +-
v1_9_0/newtmgr/install/install_mac.html | 24 +-
v1_9_0/newtmgr/install/install_windows.html | 60 +-
v1_9_0/newtmgr/install/prev_releases.html | 77 +-
v1_9_0/objects.inv | Bin 50825 -> 58707 bytes
v1_9_0/os/bsp/index.html | 1 -
v1_9_0/os/bsp/pinetime.html | 7 +-
v1_9_0/os/core_os/callout/callout.html | 102 +-
.../os/core_os/context_switch/context_switch.html | 38 +-
v1_9_0/os/core_os/cputime/os_cputime.html | 195 +-
v1_9_0/os/core_os/event_queue/event_queue.html | 216 +-
v1_9_0/os/core_os/heap/heap.html | 44 +-
v1_9_0/os/core_os/mbuf/mbuf.html | 750 +-
v1_9_0/os/core_os/memory_pool/memory_pool.html | 321 +-
v1_9_0/os/core_os/mutex/mutex.html | 93 +-
v1_9_0/os/core_os/mynewt_os.html | 233 +-
v1_9_0/os/core_os/porting/port_bsp.html | 250 +-
v1_9_0/os/core_os/porting/port_cpu.html | 37 +-
v1_9_0/os/core_os/porting/port_mcu.html | 21 +-
v1_9_0/os/core_os/porting/port_os.html | 47 +-
v1_9_0/os/core_os/sanity/sanity.html | 261 +-
v1_9_0/os/core_os/semaphore/semaphore.html | 64 +-
v1_9_0/os/core_os/task/task.html | 356 +-
v1_9_0/os/core_os/time/os_time.html | 397 +-
v1_9_0/os/modules/baselibc.html | 1 -
v1_9_0/os/modules/bootloader/bootloader.html | 178 +-
v1_9_0/os/modules/config/config.html | 653 +-
v1_9_0/os/modules/console/console.html | 264 +-
v1_9_0/os/modules/devmgmt/customize_newtmgr.html | 1 -
v1_9_0/os/modules/devmgmt/newtmgr.html | 17 +-
v1_9_0/os/modules/devmgmt/oicmgr.html | 27 +-
v1_9_0/os/modules/drivers/chg_ctrl/chg_ctrl.html | 9 +-
v1_9_0/os/modules/drivers/chg_ctrl/sgm4056.html | 1 -
v1_9_0/os/modules/drivers/driver.html | 90 +-
v1_9_0/os/modules/drivers/flash.html | 103 +-
v1_9_0/os/modules/drivers/mmc.html | 111 +-
v1_9_0/os/modules/elua/elua.html | 39 +-
v1_9_0/os/modules/elua/lua_init.html | 1 -
v1_9_0/os/modules/elua/lua_main.html | 23 +-
v1_9_0/os/modules/extcmd/extcmd.html | 89 +-
v1_9_0/os/modules/fcb/fcb.html | 286 +-
v1_9_0/os/modules/fcb/fcb_append.html | 33 +-
v1_9_0/os/modules/fcb/fcb_append_finish.html | 27 +-
v1_9_0/os/modules/fcb/fcb_append_to_scratch.html | 19 +-
v1_9_0/os/modules/fcb/fcb_clear.html | 19 +-
v1_9_0/os/modules/fcb/fcb_getnext.html | 23 +-
v1_9_0/os/modules/fcb/fcb_init.html | 19 +-
v1_9_0/os/modules/fcb/fcb_is_empty.html | 19 +-
v1_9_0/os/modules/fcb/fcb_offset_last_n.html | 27 +-
v1_9_0/os/modules/fcb/fcb_rotate.html | 19 +-
v1_9_0/os/modules/fcb/fcb_walk.html | 39 +-
v1_9_0/os/modules/fs/fatfs.html | 22 +-
v1_9_0/os/modules/fs/fs.html | 454 +-
v1_9_0/os/modules/fs/fs_add.html | 175 +-
v1_9_0/os/modules/fs/nffs.html | 164 +-
v1_9_0/os/modules/fs/otherfs.html | 63 +-
v1_9_0/os/modules/hal/hal.html | 21 +-
v1_9_0/os/modules/hal/hal_bsp/hal_bsp.html | 114 +-
v1_9_0/os/modules/hal/hal_creation.html | 1 -
v1_9_0/os/modules/hal/hal_flash/hal_flash.html | 180 +-
v1_9_0/os/modules/hal/hal_flash/hal_flash_int.html | 1 -
v1_9_0/os/modules/hal/hal_gpio/hal_gpio.html | 255 +-
v1_9_0/os/modules/hal/hal_i2c/hal_i2c.html | 269 +-
v1_9_0/os/modules/hal/hal_in_libraries.html | 1 -
v1_9_0/os/modules/hal/hal_os_tick/hal_os_tick.html | 29 +-
v1_9_0/os/modules/hal/hal_spi/hal_spi.html | 303 +-
v1_9_0/os/modules/hal/hal_system/hal_sys.html | 111 +-
v1_9_0/os/modules/hal/hal_timer/hal_timer.html | 205 +-
v1_9_0/os/modules/hal/hal_uart/hal_uart.html | 147 +-
.../os/modules/hal/hal_watchdog/hal_watchdog.html | 26 +-
v1_9_0/os/modules/imgmgr/imgmgr.html | 31 +-
v1_9_0/os/modules/imgmgr/imgmgr_module_init.html | 1 -
v1_9_0/os/modules/imgmgr/imgr_ver_parse.html | 23 +-
v1_9_0/os/modules/imgmgr/imgr_ver_str.html | 23 +-
v1_9_0/os/modules/json/json.html | 952 +-
v1_9_0/os/modules/logs/logs.html | 997 +-
v1_9_0/os/modules/mcumgr/mcumgr.html | 1 -
v1_9_0/os/modules/mfg/mfg.html | 322 +-
v1_9_0/os/modules/sensor_framework/sensor_api.html | 1165 +--
.../os/modules/sensor_framework/sensor_create.html | 117 +-
.../os/modules/sensor_framework/sensor_driver.html | 391 +-
.../modules/sensor_framework/sensor_framework.html | 53 +-
.../sensor_framework/sensor_listener_api.html | 92 +-
.../modules/sensor_framework/sensor_mgr_api.html | 331 +-
.../sensor_framework/sensor_notifier_api.html | 35 +-
v1_9_0/os/modules/sensor_framework/sensor_oic.html | 15 +-
.../os/modules/sensor_framework/sensor_shell.html | 1 -
v1_9_0/os/modules/shell/shell.html | 438 +-
v1_9_0/os/modules/split/split.html | 183 +-
v1_9_0/os/modules/stats/stats.html | 414 +-
.../os/modules/sysinitconfig/sysconfig_error.html | 68 +-
v1_9_0/os/modules/sysinitconfig/sysinitconfig.html | 186 +-
v1_9_0/os/modules/sysinitdown/sysinitdown.html | 30 +-
v1_9_0/os/modules/system_modules.html | 1 -
v1_9_0/os/modules/testutil/testutil.html | 265 +-
v1_9_0/os/os_user_guide.html | 1 -
v1_9_0/os/tutorials/STM32F303.html | 13 +-
v1_9_0/os/tutorials/pin-wheel-mods.html | 33 +-
v1_9_0/search.html | 1 -
v1_9_0/searchindex.js | 2 +-
v1_9_0/tutorials/ble/ble.html | 1 -
v1_9_0/tutorials/ble/ble_bare_bones.html | 19 +-
v1_9_0/tutorials/ble/blehci_project.html | 39 +-
.../ble/bleprph/bleprph-sections/bleprph-adv.html | 87 +-
.../ble/bleprph/bleprph-sections/bleprph-app.html | 31 +-
.../bleprph-sections/bleprph-chr-access.html | 271 +-
.../bleprph-sections/bleprph-gap-event.html | 195 +-
.../bleprph/bleprph-sections/bleprph-svc-reg.html | 149 +-
v1_9_0/tutorials/ble/bleprph/bleprph.html | 21 +-
v1_9_0/tutorials/ble/eddystone.html | 339 +-
v1_9_0/tutorials/ble/ibeacon.html | 272 +-
v1_9_0/tutorials/blinky/arduino_zero.html | 55 +-
v1_9_0/tutorials/blinky/blinky.html | 55 +-
v1_9_0/tutorials/blinky/blinky_console.html | 54 +-
v1_9_0/tutorials/blinky/blinky_primo.html | 81 +-
v1_9_0/tutorials/blinky/blinky_stm32f4disc.html | 21 +-
v1_9_0/tutorials/blinky/nRF52.html | 40 +-
v1_9_0/tutorials/blinky/olimex.html | 63 +-
v1_9_0/tutorials/blinky/pinetime.html | 29 +-
v1_9_0/tutorials/blinky/rbnano2.html | 34 +-
v1_9_0/tutorials/devmgmt/add_newtmgr.html | 120 +-
v1_9_0/tutorials/devmgmt/devmgmt.html | 1 -
v1_9_0/tutorials/devmgmt/ota_upgrade_nrf52.html | 43 +-
v1_9_0/tutorials/lora/lorawanapp.html | 99 +-
v1_9_0/tutorials/os_fundamentals/event_queue.html | 58 +-
.../tutorials/os_fundamentals/os_fundamentals.html | 1 -
v1_9_0/tutorials/os_fundamentals/tasks_lesson.html | 39 +-
v1_9_0/tutorials/other/chg_ctrl_on_pinetime.html | 57 +-
v1_9_0/tutorials/other/codesize.html | 39 +-
v1_9_0/tutorials/other/other.html | 1 -
v1_9_0/tutorials/other/rust.html | 37 +-
v1_9_0/tutorials/other/unit_test.html | 29 +-
v1_9_0/tutorials/other/wi-fi_on_arduino.html | 58 +-
v1_9_0/tutorials/repo/add_repos.html | 61 +-
v1_9_0/tutorials/repo/create_repo.html | 25 +-
v1_9_0/tutorials/repo/private_repo.html | 9 +-
v1_9_0/tutorials/repo/upgrade_repo.html | 1 -
v1_9_0/tutorials/sensors/air_quality.html | 1 -
v1_9_0/tutorials/sensors/air_quality_ble.html | 5 +-
v1_9_0/tutorials/sensors/air_quality_sensor.html | 27 +-
v1_9_0/tutorials/sensors/nrf52_adc.html | 58 +-
v1_9_0/tutorials/sensors/sensor_bleprph_oic.html | 85 +-
v1_9_0/tutorials/sensors/sensor_nrf52_bno055.html | 208 +-
.../tutorials/sensors/sensor_nrf52_bno055_oic.html | 50 +-
v1_9_0/tutorials/sensors/sensor_nrf52_drv2605.html | 83 +-
.../tutorials/sensors/sensor_offboard_config.html | 36 +-
v1_9_0/tutorials/sensors/sensor_oic_overview.html | 35 +-
.../sensors/sensor_thingy_lis2dh12_onb.html | 116 +-
v1_9_0/tutorials/sensors/sensors.html | 1 -
v1_9_0/tutorials/sensors/sensors_framework.html | 49 +-
v1_9_0/tutorials/slinky/project-nrf52-slinky.html | 55 +-
v1_9_0/tutorials/slinky/project-sim-slinky.html | 15 +-
v1_9_0/tutorials/slinky/project-slinky.html | 49 +-
v1_9_0/tutorials/slinky/project-stm32-slinky.html | 93 +-
v1_9_0/tutorials/tooling/error_diagnostics.html | 1 -
v1_9_0/tutorials/tooling/segger_rtt.html | 9 +-
v1_9_0/tutorials/tooling/segger_sysview.html | 25 +-
v1_9_0/tutorials/tooling/tooling.html | 1 -
v1_9_0/tutorials/tutorials.html | 92 +-
1940 files changed, 147756 insertions(+), 160216 deletions(-)
diff --git a/master/_static/ajax-loader.gif b/master/_static/ajax-loader.gif
deleted file mode 100644
index 61faf8c..0000000
Binary files a/master/_static/ajax-loader.gif and /dev/null differ
diff --git a/master/_static/basic.css b/master/_static/basic.css
index 0807176..b3bdc00 100644
--- a/master/_static/basic.css
+++ b/master/_static/basic.css
@@ -4,7 +4,7 @@
*
* Sphinx stylesheet -- basic theme.
*
- * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@@ -15,6 +15,12 @@ div.clearer {
clear: both;
}
+div.section::after {
+ display: block;
+ content: '';
+ clear: left;
+}
+
/* -- relbar ---------------------------------------------------------------- */
div.related {
@@ -231,6 +237,16 @@ 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,
@@ -261,19 +277,25 @@ p.rubric {
font-weight: bold;
}
-img.align-left, .figure.align-left, object.align-left {
+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, object.align-right {
+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, object.align-center {
+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;
@@ -287,30 +309,41 @@ img.align-center, .figure.align-center, object.align-center {
text-align: center;
}
+.align-default {
+ text-align: center;
+}
+
.align-right {
text-align: right;
}
/* -- sidebars -------------------------------------------------------------- */
-div.sidebar {
+div.sidebar,
+aside.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
- padding: 7px 7px 0 7px;
+ 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 7px 0 7px;
+ padding: 7px;
margin: 10px 0 10px 0;
}
@@ -332,10 +365,6 @@ div.admonition dt {
font-weight: bold;
}
-div.admonition dl {
- margin-bottom: 0;
-}
-
p.admonition-title {
margin: 0px 10px 5px 0px;
font-weight: bold;
@@ -346,9 +375,30 @@ div.body p.centered {
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;
}
@@ -358,6 +408,11 @@ table.align-center {
margin-right: auto;
}
+table.align-default {
+ margin-left: auto;
+ margin-right: auto;
+}
+
table caption span.caption-number {
font-style: italic;
}
@@ -391,22 +446,34 @@ 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 {
+div.figure, figure {
margin: 0.5em;
padding: 0.5em;
}
-div.figure p.caption {
+div.figure p.caption, figcaption {
padding: 0.3em;
}
-div.figure p.caption span.caption-number {
+div.figure p.caption span.caption-number,
+figcaption span.caption-number {
font-style: italic;
}
-div.figure p.caption span.caption-text {
+div.figure p.caption span.caption-text,
+figcaption span.caption-text {
}
/* -- field list styles ----------------------------------------------------- */
@@ -433,6 +500,10 @@ table.field-list td, table.field-list th {
/* -- hlist styles ---------------------------------------------------------- */
+table.hlist {
+ margin: 1em 0;
+}
+
table.hlist td {
vertical-align: top;
}
@@ -460,11 +531,78 @@ 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 p {
+dd > :first-child {
margin-top: 0px;
}
@@ -478,6 +616,11 @@ dd {
margin-left: 30px;
}
+dl > dd:last-child,
+dl > dd:last-child > :last-child {
+ margin-bottom: 0;
+}
+
dt:target, span.highlighted {
background-color: #fbe54e;
}
@@ -537,6 +680,12 @@ dl.glossary dt {
font-style: oblique;
}
+.classifier:before {
+ font-style: normal;
+ margin: 0.5em;
+ content: ":";
+}
+
abbr, acronym {
border-bottom: dotted 1px;
cursor: help;
@@ -549,6 +698,10 @@ pre {
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}
+pre, div[class*="highlight-"] {
+ clear: both;
+}
+
span.pre {
-moz-hyphens: none;
-ms-hyphens: none;
@@ -556,22 +709,57 @@ span.pre {
hyphens: none;
}
+div[class*="highlight-"] {
+ margin: 1em 0;
+}
+
td.linenos pre {
- padding: 5px 0px;
border: 0;
background-color: transparent;
color: #aaa;
}
table.highlighttable {
- margin-left: 0.5em;
+ display: block;
+}
+
+table.highlighttable tbody {
+ display: block;
+}
+
+table.highlighttable tr {
+ display: flex;
}
table.highlighttable td {
- padding: 0 0.5em 0 0.5em;
+ 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;
}
@@ -580,8 +768,10 @@ div.code-block-caption code {
background-color: transparent;
}
-div.code-block-caption + div > div.highlight > pre {
- margin-top: 0;
+table.highlighttable td.linenos,
+span.linenos,
+div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */
+ user-select: none;
}
div.code-block-caption span.caption-number {
@@ -593,11 +783,7 @@ div.code-block-caption span.caption-text {
}
div.literal-block-wrapper {
- padding: 1em 1em 0;
-}
-
-div.literal-block-wrapper div.highlight {
- margin: 0;
+ margin: 1em 0;
}
code.descname {
@@ -648,8 +834,7 @@ span.eqno {
}
span.eqno a.headerlink {
- position: relative;
- left: 0px;
+ position: absolute;
z-index: 1;
}
diff --git a/master/_static/comment-bright.png b/master/_static/comment-bright.png
deleted file mode 100644
index 15e27ed..0000000
Binary files a/master/_static/comment-bright.png and /dev/null differ
diff --git a/master/_static/comment-close.png b/master/_static/comment-close.png
deleted file mode 100644
index 4d91bcf..0000000
Binary files a/master/_static/comment-close.png and /dev/null differ
diff --git a/master/_static/comment.png b/master/_static/comment.png
deleted file mode 100644
index dfbc0cb..0000000
Binary files a/master/_static/comment.png and /dev/null differ
diff --git a/master/_static/doctools.js b/master/_static/doctools.js
index 344db17..61ac9d2 100644
--- a/master/_static/doctools.js
+++ b/master/_static/doctools.js
@@ -4,7 +4,7 @@
*
* Sphinx JavaScript utilities for all documentation.
*
- * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@@ -29,9 +29,14 @@ if (!window.console || !console.firebug) {
/**
* 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) {
- return decodeURIComponent(x).replace(/\+/g, ' ');
+ if (!x) {
+ return x
+ }
+ return decodeURIComponent(x.replace(/\+/g, ' '));
};
/**
@@ -87,14 +92,13 @@ jQuery.fn.highlightText = function(text, className) {
node.nextSibling));
node.nodeValue = val.substr(0, pos);
if (isInSVG) {
- var bbox = span.getBBox();
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
- rect.x.baseVal.value = bbox.x;
+ 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);
- var parentOfText = node.parentNode.parentNode;
addItems.push({
"parent": node.parentNode,
"target": rect});
@@ -284,10 +288,12 @@ var Documentation = {
},
initOnKeyListeners: function() {
- $(document).keyup(function(event) {
+ $(document).keydown(function(event) {
var activeElementType = document.activeElement.tagName;
- // don't navigate when in search box or textarea
- if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
+ // don't navigate when in search box, textarea, dropdown or button
+ if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT'
+ && activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey
+ && !event.shiftKey) {
switch (event.keyCode) {
case 37: // left
var prevHref = $('link[rel="prev"]').prop('href');
diff --git a/master/_static/documentation_options.js b/master/_static/documentation_options.js
index ece6775..a3b62ba 100644
--- a/master/_static/documentation_options.js
+++ b/master/_static/documentation_options.js
@@ -3,8 +3,10 @@ var DOCUMENTATION_OPTIONS = {
VERSION: 'latest',
LANGUAGE: 'None',
COLLAPSE_INDEX: false,
+ BUILDER: 'html',
FILE_SUFFIX: '.html',
+ LINK_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
- NAVIGATION_WITH_KEYS: false,
+ NAVIGATION_WITH_KEYS: false
};
\ No newline at end of file
diff --git a/master/_static/down-pressed.png b/master/_static/down-pressed.png
deleted file mode 100644
index 5756c8c..0000000
Binary files a/master/_static/down-pressed.png and /dev/null differ
diff --git a/master/_static/down.png b/master/_static/down.png
deleted file mode 100644
index 1b3bdad..0000000
Binary files a/master/_static/down.png and /dev/null differ
diff --git a/master/_static/jquery-3.2.1.js b/master/_static/jquery-3.5.1.js
similarity index 81%
copy from master/_static/jquery-3.2.1.js
copy to master/_static/jquery-3.5.1.js
index d2d8ca4..5093733 100644
--- a/master/_static/jquery-3.2.1.js
+++ b/master/_static/jquery-3.5.1.js
@@ -1,5 +1,5 @@
/*!
- * jQuery JavaScript Library v3.2.1
+ * jQuery JavaScript Library v3.5.1
* https://jquery.com/
*
* Includes Sizzle.js
@@ -9,7 +9,7 @@
* Released under the MIT license
* https://jquery.org/license
*
- * Date: 2017-03-20T18:59Z
+ * Date: 2020-05-04T22:49Z
*/
( function( global, factory ) {
@@ -47,13 +47,16 @@
var arr = [];
-var document = window.document;
-
var getProto = Object.getPrototypeOf;
var slice = arr.slice;
-var concat = arr.concat;
+var flat = arr.flat ? function( array ) {
+ return arr.flat.call( array );
+} : function( array ) {
+ return arr.concat.apply( [], array );
+};
+
var push = arr.push;
@@ -71,16 +74,72 @@ 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 <object> elements
+ // (i.e., `typeof document.createElement( "object" ) === "function"`).
+ // We don't want to classify *any* DOM node as a function.
+ return typeof obj === "function" && typeof obj.nodeType !== "number";
+ };
+
+
+var isWindow = function isWindow( obj ) {
+ return obj != null && obj === obj.window;
+ };
+
+
+var document = window.document;
- function DOMEval( code, doc ) {
+
+ var preservedScriptAttributes = {
+ type: true,
+ src: true,
+ nonce: true,
+ noModule: true
+ };
+
+ function DOMEval( code, node, doc ) {
doc = doc || document;
- var script = doc.createElement( "script" );
+ 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
@@ -88,7 +147,7 @@ var support = {};
var
- version = "3.2.1",
+ version = "3.5.1",
// Define a local copy of jQuery
jQuery = function( selector, context ) {
@@ -96,19 +155,6 @@ var
// 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 );
- },
-
- // Support: Android <=4.0 only
- // Make sure we trim BOM and NBSP
- rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-
- // Matches dashed string for camelizing
- rmsPrefix = /^-ms-/,
- rdashAlpha = /-([a-z])/g,
-
- // Used by jQuery.camelCase as callback to replace()
- fcamelCase = function( all, letter ) {
- return letter.toUpperCase();
};
jQuery.fn = jQuery.prototype = {
@@ -175,6 +221,18 @@ jQuery.fn = jQuery.prototype = {
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 );
@@ -209,7 +267,7 @@ jQuery.extend = jQuery.fn.extend = function() {
}
// Handle case when target is a string or something (possible in deep copy)
- if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+ if ( typeof target !== "object" && !isFunction( target ) ) {
target = {};
}
@@ -226,25 +284,28 @@ jQuery.extend = jQuery.fn.extend = function() {
// Extend the base object
for ( name in options ) {
- src = target[ name ];
copy = options[ name ];
+ // Prevent Object.prototype pollution
// Prevent never-ending loop
- if ( target === copy ) {
+ 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 ];
- if ( copyIsArray ) {
- copyIsArray = false;
- clone = src && Array.isArray( src ) ? src : [];
-
+ // Ensure proper type for the source value
+ if ( copyIsArray && !Array.isArray( src ) ) {
+ clone = [];
+ } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
+ clone = {};
} else {
- clone = src && jQuery.isPlainObject( src ) ? src : {};
+ clone = src;
}
+ copyIsArray = false;
// Never move original objects, clone them
target[ name ] = jQuery.extend( deep, clone, copy );
@@ -275,28 +336,6 @@ jQuery.extend( {
noop: function() {},
- isFunction: function( obj ) {
- return jQuery.type( obj ) === "function";
- },
-
- isWindow: function( obj ) {
- return obj != null && obj === obj.window;
- },
-
- isNumeric: function( obj ) {
-
- // As of jQuery 3.0, isNumeric is limited to
- // strings and numbers (primitives or objects)
- // that can be coerced to finite numbers (gh-2662)
- var type = jQuery.type( obj );
- return ( type === "number" || type === "string" ) &&
-
- // parseFloat NaNs numeric-cast false positives ("")
- // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
- // subtraction forces infinities to NaN
- !isNaN( obj - parseFloat( obj ) );
- },
-
isPlainObject: function( obj ) {
var proto, Ctor;
@@ -319,9 +358,6 @@ jQuery.extend( {
},
isEmptyObject: function( obj ) {
-
- /* eslint-disable no-unused-vars */
- // See https://github.com/eslint/eslint/issues/6125
var name;
for ( name in obj ) {
@@ -330,27 +366,10 @@ jQuery.extend( {
return true;
},
- type: function( 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;
- },
-
- // Evaluates a script in a global context
- globalEval: function( code ) {
- DOMEval( code );
- },
-
- // Convert dashed to camelCase; used by the css and data modules
- // Support: IE <=9 - 11, Edge 12 - 13
- // Microsoft forgot to hump their vendor prefix (#9572)
- camelCase: function( string ) {
- return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ // 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 ) {
@@ -374,13 +393,6 @@ jQuery.extend( {
return obj;
},
- // Support: Android <=4.0 only
- trim: function( text ) {
- return text == null ?
- "" :
- ( text + "" ).replace( rtrim, "" );
- },
-
// results is for internal usage only
makeArray: function( arr, results ) {
var ret = results || [];
@@ -467,43 +479,12 @@ jQuery.extend( {
}
// Flatten any nested arrays
- return concat.apply( [], ret );
+ return flat( ret );
},
// A global GUID counter for objects
guid: 1,
- // Bind a function to a context, optionally partially applying any
- // arguments.
- proxy: function( fn, context ) {
- var tmp, args, proxy;
-
- if ( typeof context === "string" ) {
- tmp = fn[ context ];
- context = fn;
- fn = tmp;
- }
-
- // Quick check to determine if target is callable, in the spec
- // this throws a TypeError, but we will just return undefined.
- if ( !jQuery.isFunction( fn ) ) {
- return undefined;
- }
-
- // Simulated bind
- args = slice.call( arguments, 2 );
- proxy = function() {
- return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
- };
-
- // Set the guid of unique handler to the same of original handler, so it can be removed
- proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
- return proxy;
- },
-
- now: Date.now,
-
// jQuery.support is not used in Core but other projects attach their
// properties to it so it needs to exist.
support: support
@@ -515,7 +496,7 @@ if ( typeof Symbol === "function" ) {
// Populate the class2type map
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
-function( i, name ) {
+function( _i, name ) {
class2type[ "[object " + name + "]" ] = name.toLowerCase();
} );
@@ -526,9 +507,9 @@ function isArrayLike( obj ) {
// hasOwn isn't used here due to false negatives
// regarding Nodelist length in IE
var length = !!obj && "length" in obj && obj.length,
- type = jQuery.type( obj );
+ type = toType( obj );
- if ( type === "function" || jQuery.isWindow( obj ) ) {
+ if ( isFunction( obj ) || isWindow( obj ) ) {
return false;
}
@@ -537,17 +518,16 @@ function isArrayLike( obj ) {
}
var Sizzle =
/*!
- * Sizzle CSS Selector Engine v2.3.3
+ * Sizzle CSS Selector Engine v2.3.5
* https://sizzlejs.com/
*
- * Copyright jQuery Foundation and other contributors
+ * Copyright JS Foundation and other contributors
* Released under the MIT license
- * http://jquery.org/license
+ * https://js.foundation/
*
- * Date: 2016-08-08
+ * Date: 2020-03-14
*/
-(function( window ) {
-
+( function( window ) {
var i,
support,
Expr,
@@ -578,6 +558,7 @@ var i,
classCache = createCache(),
tokenCache = createCache(),
compilerCache = createCache(),
+ nonnativeSelectorCache = createCache(),
sortOrder = function( a, b ) {
if ( a === b ) {
hasDuplicate = true;
@@ -586,61 +567,71 @@ var i,
},
// Instance methods
- hasOwn = ({}).hasOwnProperty,
+ hasOwn = ( {} ).hasOwnProperty,
arr = [],
pop = arr.pop,
- push_native = arr.push,
+ 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 ) {
+ 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",
+ 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]",
- // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
- identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+ // 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 +
- "*\\]",
+
+ // "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" ),
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
+ whitespace + "+$", "g" ),
rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
- rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
-
- rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
+ "*" ),
+ rdescend = new RegExp( whitespace + "|>" ),
rpseudo = new RegExp( pseudos ),
ridentifier = new RegExp( "^" + identifier + "$" ),
@@ -651,16 +642,19 @@ var i,
"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" ),
+ "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" )
+ "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,
@@ -673,18 +667,21 @@ var i,
// CSS escapes
// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
- runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
- funescape = function( _, escaped, escapedWhitespace ) {
- var high = "0x" + escaped - 0x10000;
- // NaN means non-codepoint
- // Support: Firefox<24
- // Workaround erroneous numeric interpretation of +"0x"
- return high !== high || escapedWhitespace ?
- escaped :
+ 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 ?
- // BMP codepoint
String.fromCharCode( high + 0x10000 ) :
- // Supplemental Plane codepoint (surrogate pair)
String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
},
@@ -700,7 +697,8 @@ var i,
}
// Control characters and (dependent upon position) numbers get escaped as code points
- return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+ return ch.slice( 0, -1 ) + "\\" +
+ ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
}
// Other potentially-special ASCII characters get backslash-escaped
@@ -715,9 +713,9 @@ var i,
setDocument();
},
- disabledAncestor = addCombinator(
+ inDisabledFieldset = addCombinator(
function( elem ) {
- return elem.disabled === true && ("form" in elem || "label" in elem);
+ return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
},
{ dir: "parentNode", next: "legend" }
);
@@ -725,18 +723,20 @@ var i,
// Optimize for push.apply( _, NodeList )
try {
push.apply(
- (arr = slice.call( preferredDoc.childNodes )),
+ ( 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 ) {
- push_native.apply( target, slice.call(els) );
+ pushNative.apply( target, slice.call( els ) );
} :
// Support: IE<9
@@ -744,8 +744,9 @@ try {
function( target, els ) {
var j = target.length,
i = 0;
+
// Can't trust NodeList.length
- while ( (target[j++] = els[i++]) ) {}
+ while ( ( target[ j++ ] = els[ i++ ] ) ) {}
target.length = j - 1;
}
};
@@ -769,24 +770,21 @@ function Sizzle( selector, context, results, seed ) {
// Try to shortcut find operations (as opposed to filters) in HTML documents
if ( !seed ) {
-
- if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
- setDocument( context );
- }
+ 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 )) ) {
+ if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
// ID selector
- if ( (m = match[1]) ) {
+ if ( ( m = match[ 1 ] ) ) {
// Document context
if ( nodeType === 9 ) {
- if ( (elem = context.getElementById( m )) ) {
+ if ( ( elem = context.getElementById( m ) ) ) {
// Support: IE, Opera, Webkit
// TODO: identify versions
@@ -805,7 +803,7 @@ function Sizzle( selector, context, results, seed ) {
// Support: IE, Opera, Webkit
// TODO: identify versions
// getElementById can match elements by name instead of ID
- if ( newContext && (elem = newContext.getElementById( m )) &&
+ if ( newContext && ( elem = newContext.getElementById( m ) ) &&
contains( context, elem ) &&
elem.id === m ) {
@@ -815,12 +813,12 @@ function Sizzle( selector, context, results, seed ) {
}
// Type selector
- } else if ( match[2] ) {
+ } else if ( match[ 2 ] ) {
push.apply( results, context.getElementsByTagName( selector ) );
return results;
// Class selector
- } else if ( (m = match[3]) && support.getElementsByClassName &&
+ } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
context.getElementsByClassName ) {
push.apply( results, context.getElementsByClassName( m ) );
@@ -830,50 +828,62 @@ function Sizzle( selector, context, results, seed ) {
// Take advantage of querySelectorAll
if ( support.qsa &&
- !compilerCache[ selector + " " ] &&
- (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
-
- if ( nodeType !== 1 ) {
- newContext = context;
- newSelector = selector;
+ !nonnativeSelectorCache[ selector + " " ] &&
+ ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
- // qSA looks outside Element context, which is not what we want
- // Thanks to Andrew Dupont for this workaround technique
- // Support: IE <=8
+ // Support: IE 8 only
// Exclude object elements
- } else if ( context.nodeName.toLowerCase() !== "object" ) {
+ ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
- // 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) );
+ 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 + " " + toSelector( groups[i] );
+ groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
+ toSelector( groups[ i ] );
}
newSelector = groups.join( "," );
-
- // Expand context for sibling selectors
- newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
- context;
}
- if ( newSelector ) {
- try {
- push.apply( results,
- newContext.querySelectorAll( newSelector )
- );
- return results;
- } catch ( qsaError ) {
- } finally {
- if ( nid === expando ) {
- context.removeAttribute( "id" );
- }
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch ( qsaError ) {
+ nonnativeSelectorCache( selector, true );
+ } finally {
+ if ( nid === expando ) {
+ context.removeAttribute( "id" );
}
}
}
@@ -894,12 +904,14 @@ 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[ key + " " ] = value );
}
return cache;
}
@@ -918,17 +930,19 @@ function markFunction( fn ) {
* @param {Function} fn Passed the created element and returns a boolean result
*/
function assert( fn ) {
- var el = document.createElement("fieldset");
+ var el = document.createElement( "fieldset" );
try {
return !!fn( el );
- } catch (e) {
+ } catch ( e ) {
return false;
} finally {
+
// Remove from its parent by default
if ( el.parentNode ) {
el.parentNode.removeChild( el );
}
+
// release memory in IE
el = null;
}
@@ -940,11 +954,11 @@ function assert( fn ) {
* @param {Function} handler The method that will be applied
*/
function addHandle( attrs, handler ) {
- var arr = attrs.split("|"),
+ var arr = attrs.split( "|" ),
i = arr.length;
while ( i-- ) {
- Expr.attrHandle[ arr[i] ] = handler;
+ Expr.attrHandle[ arr[ i ] ] = handler;
}
}
@@ -966,7 +980,7 @@ function siblingCheck( a, b ) {
// Check if b follows a
if ( cur ) {
- while ( (cur = cur.nextSibling) ) {
+ while ( ( cur = cur.nextSibling ) ) {
if ( cur === b ) {
return -1;
}
@@ -994,7 +1008,7 @@ function createInputPseudo( type ) {
function createButtonPseudo( type ) {
return function( elem ) {
var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && elem.type === type;
+ return ( name === "input" || name === "button" ) && elem.type === type;
};
}
@@ -1037,7 +1051,7 @@ function createDisabledPseudo( disabled ) {
// Where there is no isDisabled, check manually
/* jshint -W018 */
elem.isDisabled !== !disabled &&
- disabledAncestor( elem ) === disabled;
+ inDisabledFieldset( elem ) === disabled;
}
return elem.disabled === disabled;
@@ -1059,21 +1073,21 @@ function createDisabledPseudo( disabled ) {
* @param {Function} fn
*/
function createPositionalPseudo( fn ) {
- return markFunction(function( argument ) {
+ return markFunction( function( argument ) {
argument = +argument;
- return markFunction(function( seed, matches ) {
+ 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]);
+ if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
+ seed[ j ] = !( matches[ j ] = seed[ j ] );
}
}
- });
- });
+ } );
+ } );
}
/**
@@ -1094,10 +1108,13 @@ support = Sizzle.support = {};
* @returns {Boolean} True iff elem is a non-HTML XML node
*/
isXML = Sizzle.isXML = function( elem ) {
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = elem && (elem.ownerDocument || elem).documentElement;
- return documentElement ? documentElement.nodeName !== "HTML" : false;
+ var namespace = elem.namespaceURI,
+ docElem = ( 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" );
};
/**
@@ -1110,7 +1127,11 @@ setDocument = Sizzle.setDocument = function( node ) {
doc = node ? node.ownerDocument || node : preferredDoc;
// Return early if doc is invalid or already selected
- if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ // 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;
}
@@ -1119,10 +1140,14 @@ setDocument = Sizzle.setDocument = function( node ) {
docElem = document.documentElement;
documentIsHTML = !isXML( document );
- // Support: IE 9-11, Edge
+ // Support: IE 9 - 11+, Edge 12 - 18+
// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
- if ( preferredDoc !== document &&
- (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+ // 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 ) {
@@ -1134,25 +1159,36 @@ setDocument = Sizzle.setDocument = function( node ) {
}
}
+ // 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 ) {
+ support.attributes = assert( function( el ) {
el.className = "i";
- return !el.getAttribute("className");
- });
+ 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.getElementsByTagName = assert( function( el ) {
+ el.appendChild( document.createComment( "" ) );
+ return !el.getElementsByTagName( "*" ).length;
+ } );
// Support: IE<9
support.getElementsByClassName = rnative.test( document.getElementsByClassName );
@@ -1161,38 +1197,38 @@ setDocument = Sizzle.setDocument = function( node ) {
// 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 ) {
+ 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 ) {
+ Expr.filter[ "ID" ] = function( id ) {
var attrId = id.replace( runescape, funescape );
return function( elem ) {
- return elem.getAttribute("id") === attrId;
+ return elem.getAttribute( "id" ) === attrId;
};
};
- Expr.find["ID"] = function( id, context ) {
+ 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 ) {
+ Expr.filter[ "ID" ] = function( id ) {
var attrId = id.replace( runescape, funescape );
return function( elem ) {
var node = typeof elem.getAttributeNode !== "undefined" &&
- elem.getAttributeNode("id");
+ 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 ) {
+ Expr.find[ "ID" ] = function( id, context ) {
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
var node, i, elems,
elem = context.getElementById( id );
@@ -1200,7 +1236,7 @@ setDocument = Sizzle.setDocument = function( node ) {
if ( elem ) {
// Verify the id attribute
- node = elem.getAttributeNode("id");
+ node = elem.getAttributeNode( "id" );
if ( node && node.value === id ) {
return [ elem ];
}
@@ -1208,8 +1244,8 @@ setDocument = Sizzle.setDocument = function( node ) {
// Fall back on getElementsByName
elems = context.getElementsByName( id );
i = 0;
- while ( (elem = elems[i++]) ) {
- node = elem.getAttributeNode("id");
+ while ( ( elem = elems[ i++ ] ) ) {
+ node = elem.getAttributeNode( "id" );
if ( node && node.value === id ) {
return [ elem ];
}
@@ -1222,7 +1258,7 @@ setDocument = Sizzle.setDocument = function( node ) {
}
// Tag
- Expr.find["TAG"] = support.getElementsByTagName ?
+ Expr.find[ "TAG" ] = support.getElementsByTagName ?
function( tag, context ) {
if ( typeof context.getElementsByTagName !== "undefined" ) {
return context.getElementsByTagName( tag );
@@ -1237,12 +1273,13 @@ setDocument = Sizzle.setDocument = function( node ) {
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++]) ) {
+ while ( ( elem = results[ i++ ] ) ) {
if ( elem.nodeType === 1 ) {
tmp.push( elem );
}
@@ -1254,7 +1291,7 @@ setDocument = Sizzle.setDocument = function( node ) {
};
// Class
- Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
return context.getElementsByClassName( className );
}
@@ -1275,10 +1312,14 @@ setDocument = Sizzle.setDocument = function( node ) {
// See https://bugs.jquery.com/ticket/13378
rbuggyQSA = [];
- if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+ if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
+
// Build QSA regex
// Regex strategy adopted from Diego Perini
- assert(function( el ) {
+ 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,
@@ -1292,78 +1333,98 @@ setDocument = Sizzle.setDocument = function( node ) {
// 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 ) {
+ if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
}
// Support: IE8
// Boolean attributes and "value" are not treated correctly
- if ( !el.querySelectorAll("[selected]").length ) {
+ 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("~=");
+ 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");
+ 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(".#.+[+~]");
+ rbuggyQSA.push( ".#.+[+~]" );
}
- });
- assert(function( el ) {
+ // 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 = "<a href='' disabled='disabled'></a>" +
"<select disabled='disabled'><option/></select>";
// Support: Windows 8 Native Apps
// The type and name attributes are restricted during .innerHTML assignment
- var input = document.createElement("input");
+ 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 ) {
+ 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 ) {
+ 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 ) {
+ 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(",.*:");
- });
+ el.querySelectorAll( "*,:x" );
+ rbuggyQSA.push( ",.*:" );
+ } );
}
- if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
docElem.webkitMatchesSelector ||
docElem.mozMatchesSelector ||
docElem.oMatchesSelector ||
- docElem.msMatchesSelector) )) ) {
+ docElem.msMatchesSelector ) ) ) ) {
+
+ assert( function( el ) {
- assert(function( el ) {
// Check to see if it's possible to do matchesSelector
// on a disconnected node (IE 9)
support.disconnectedMatch = matches.call( el, "*" );
@@ -1372,11 +1433,11 @@ setDocument = Sizzle.setDocument = function( node ) {
// 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("|") );
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
/* Contains
---------------------------------------------------------------------- */
@@ -1393,11 +1454,11 @@ setDocument = Sizzle.setDocument = function( node ) {
adown.contains ?
adown.contains( bup ) :
a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
- ));
+ ) );
} :
function( a, b ) {
if ( b ) {
- while ( (b = b.parentNode) ) {
+ while ( ( b = b.parentNode ) ) {
if ( b === a ) {
return true;
}
@@ -1426,7 +1487,11 @@ setDocument = Sizzle.setDocument = function( node ) {
}
// Calculate position if both inputs belong to the same document
- compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ // 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
@@ -1434,13 +1499,24 @@ setDocument = Sizzle.setDocument = function( node ) {
// Disconnected nodes
if ( compare & 1 ||
- (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+ ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
// Choose the first element that is related to our preferred document
- if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ // 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;
}
- if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+
+ // 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;
}
@@ -1453,6 +1529,7 @@ setDocument = Sizzle.setDocument = function( node ) {
return compare & 4 ? -1 : 1;
} :
function( a, b ) {
+
// Exit early if the nodes are identical
if ( a === b ) {
hasDuplicate = true;
@@ -1468,8 +1545,14 @@ setDocument = Sizzle.setDocument = function( node ) {
// Parentless nodes are either documents or disconnected
if ( !aup || !bup ) {
- return a === document ? -1 :
- b === document ? 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 eqeqeq */
+ return a == document ? -1 :
+ b == document ? 1 :
+ /* eslint-enable eqeqeq */
aup ? -1 :
bup ? 1 :
sortInput ?
@@ -1483,26 +1566,32 @@ setDocument = Sizzle.setDocument = function( node ) {
// Otherwise we need full lists of their ancestors for comparison
cur = a;
- while ( (cur = cur.parentNode) ) {
+ while ( ( cur = cur.parentNode ) ) {
ap.unshift( cur );
}
cur = b;
- while ( (cur = cur.parentNode) ) {
+ while ( ( cur = cur.parentNode ) ) {
bp.unshift( cur );
}
// Walk down the tree looking for a discrepancy
- while ( ap[i] === bp[i] ) {
+ while ( ap[ i ] === bp[ i ] ) {
i++;
}
return i ?
+
// Do a sibling check if the nodes have a common ancestor
- siblingCheck( ap[i], bp[i] ) :
+ siblingCheck( ap[ i ], bp[ i ] ) :
// Otherwise nodes in our document sort first
- ap[i] === preferredDoc ? -1 :
- bp[i] === preferredDoc ? 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 eqeqeq */
+ ap[ i ] == preferredDoc ? -1 :
+ bp[ i ] == preferredDoc ? 1 :
+ /* eslint-enable eqeqeq */
0;
};
@@ -1514,16 +1603,10 @@ Sizzle.matches = function( expr, elements ) {
};
Sizzle.matchesSelector = function( elem, expr ) {
- // Set document vars if needed
- if ( ( elem.ownerDocument || elem ) !== document ) {
- setDocument( elem );
- }
-
- // Make sure that attribute selectors are quoted
- expr = expr.replace( rattributeQuotes, "='$1']" );
+ setDocument( elem );
if ( support.matchesSelector && documentIsHTML &&
- !compilerCache[ expr + " " ] &&
+ !nonnativeSelectorCache[ expr + " " ] &&
( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
@@ -1532,32 +1615,46 @@ Sizzle.matchesSelector = function( 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 ) {
+
+ // 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) {}
+ } catch ( e ) {
+ nonnativeSelectorCache( expr, true );
+ }
}
return Sizzle( expr, document, null, [ elem ] ).length > 0;
};
Sizzle.contains = function( context, elem ) {
+
// Set document vars if needed
- if ( ( context.ownerDocument || context ) !== 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 ( ( context.ownerDocument || context ) != document ) {
setDocument( context );
}
return contains( context, elem );
};
Sizzle.attr = function( elem, name ) {
+
// Set document vars if needed
- if ( ( elem.ownerDocument || elem ) !== 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 ( ( 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 ) :
@@ -1567,13 +1664,13 @@ Sizzle.attr = function( elem, name ) {
val :
support.attributes || !documentIsHTML ?
elem.getAttribute( name ) :
- (val = elem.getAttributeNode(name)) && val.specified ?
+ ( val = elem.getAttributeNode( name ) ) && val.specified ?
val.value :
null;
};
Sizzle.escape = function( sel ) {
- return (sel + "").replace( rcssescape, fcssescape );
+ return ( sel + "" ).replace( rcssescape, fcssescape );
};
Sizzle.error = function( msg ) {
@@ -1596,7 +1693,7 @@ Sizzle.uniqueSort = function( results ) {
results.sort( sortOrder );
if ( hasDuplicate ) {
- while ( (elem = results[i++]) ) {
+ while ( ( elem = results[ i++ ] ) ) {
if ( elem === results[ i ] ) {
j = duplicates.push( i );
}
@@ -1624,17 +1721,21 @@ getText = Sizzle.getText = function( elem ) {
nodeType = elem.nodeType;
if ( !nodeType ) {
+
// If no nodeType, this is expected to be an array
- while ( (node = elem[i++]) ) {
+ 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 );
@@ -1643,6 +1744,7 @@ getText = Sizzle.getText = function( elem ) {
} else if ( nodeType === 3 || nodeType === 4 ) {
return elem.nodeValue;
}
+
// Do not include comment or processing instruction nodes
return ret;
@@ -1670,19 +1772,21 @@ Expr = Sizzle.selectors = {
preFilter: {
"ATTR": function( match ) {
- match[1] = match[1].replace( runescape, funescape );
+ 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 );
+ match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
+ match[ 5 ] || "" ).replace( runescape, funescape );
- if ( match[2] === "~=" ) {
- match[3] = " " + match[3] + " ";
+ 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)
@@ -1693,22 +1797,25 @@ Expr = Sizzle.selectors = {
7 sign of y-component
8 y of y-component
*/
- match[1] = match[1].toLowerCase();
+ match[ 1 ] = match[ 1 ].toLowerCase();
+
+ if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
- if ( match[1].slice( 0, 3 ) === "nth" ) {
// nth-* requires argument
- if ( !match[3] ) {
- Sizzle.error( match[0] );
+ 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" );
+ 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] );
+ // other types prohibit arguments
+ } else if ( match[ 3 ] ) {
+ Sizzle.error( match[ 0 ] );
}
return match;
@@ -1716,26 +1823,28 @@ Expr = Sizzle.selectors = {
"PSEUDO": function( match ) {
var excess,
- unquoted = !match[6] && match[2];
+ unquoted = !match[ 6 ] && match[ 2 ];
- if ( matchExpr["CHILD"].test( match[0] ) ) {
+ if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
return null;
}
// Accept quoted arguments as-is
- if ( match[3] ) {
- match[2] = match[4] || match[5] || "";
+ 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 )) &&
+ ( excess = tokenize( unquoted, true ) ) &&
+
// advance to the next closing parenthesis
- (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+ ( 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 );
+ 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)
@@ -1748,7 +1857,9 @@ Expr = Sizzle.selectors = {
"TAG": function( nodeNameSelector ) {
var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
return nodeNameSelector === "*" ?
- function() { return true; } :
+ function() {
+ return true;
+ } :
function( elem ) {
return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
};
@@ -1758,10 +1869,16 @@ Expr = Sizzle.selectors = {
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") || "" );
- });
+ ( 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 ) {
@@ -1777,6 +1894,8 @@ Expr = Sizzle.selectors = {
result += "";
+ /* eslint-disable max-len */
+
return operator === "=" ? result === check :
operator === "!=" ? result !== check :
operator === "^=" ? check && result.indexOf( check ) === 0 :
@@ -1785,10 +1904,12 @@ Expr = Sizzle.selectors = {
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 ) {
+ "CHILD": function( type, what, _argument, first, last ) {
var simple = type.slice( 0, 3 ) !== "nth",
forward = type.slice( -4 ) !== "last",
ofType = what === "of-type";
@@ -1800,7 +1921,7 @@ Expr = Sizzle.selectors = {
return !!elem.parentNode;
} :
- function( elem, context, xml ) {
+ function( elem, _context, xml ) {
var cache, uniqueCache, outerCache, node, nodeIndex, start,
dir = simple !== forward ? "nextSibling" : "previousSibling",
parent = elem.parentNode,
@@ -1814,7 +1935,7 @@ Expr = Sizzle.selectors = {
if ( simple ) {
while ( dir ) {
node = elem;
- while ( (node = node[ dir ]) ) {
+ while ( ( node = node[ dir ] ) ) {
if ( ofType ?
node.nodeName.toLowerCase() === name :
node.nodeType === 1 ) {
@@ -1822,6 +1943,7 @@ Expr = Sizzle.selectors = {
return false;
}
}
+
// Reverse direction for :only-* (if we haven't yet done so)
start = dir = type === "only" && !start && "nextSibling";
}
@@ -1837,22 +1959,22 @@ Expr = Sizzle.selectors = {
// ...in a gzip-friendly way
node = parent;
- outerCache = node[ expando ] || (node[ expando ] = {});
+ outerCache = node[ expando ] || ( node[ expando ] = {} );
// Support: IE <9 only
// Defend against cloned attroperties (jQuery gh-1709)
uniqueCache = outerCache[ node.uniqueID ] ||
- (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 ] ||
+ while ( ( node = ++nodeIndex && node && node[ dir ] ||
// Fallback to seeking `elem` from the start
- (diff = nodeIndex = 0) || start.pop()) ) {
+ ( diff = nodeIndex = 0 ) || start.pop() ) ) {
// When found, cache indexes on `parent` and break
if ( node.nodeType === 1 && ++diff && node === elem ) {
@@ -1862,16 +1984,18 @@ Expr = Sizzle.selectors = {
}
} else {
+
// Use previously-cached element index if available
if ( useCache ) {
+
// ...in a gzip-friendly way
node = elem;
- outerCache = node[ expando ] || (node[ expando ] = {});
+ outerCache = node[ expando ] || ( node[ expando ] = {} );
// Support: IE <9 only
// Defend against cloned attroperties (jQuery gh-1709)
uniqueCache = outerCache[ node.uniqueID ] ||
- (outerCache[ node.uniqueID ] = {});
+ ( outerCache[ node.uniqueID ] = {} );
cache = uniqueCache[ type ] || [];
nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
@@ -1881,9 +2005,10 @@ Expr = Sizzle.selectors = {
// 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()) ) {
+ while ( ( node = ++nodeIndex && node && node[ dir ] ||
+ ( diff = nodeIndex = 0 ) || start.pop() ) ) {
if ( ( ofType ?
node.nodeName.toLowerCase() === name :
@@ -1892,12 +2017,13 @@ Expr = Sizzle.selectors = {
// Cache the index of each encountered element
if ( useCache ) {
- outerCache = node[ expando ] || (node[ expando ] = {});
+ outerCache = node[ expando ] ||
+ ( node[ expando ] = {} );
// Support: IE <9 only
// Defend against cloned attroperties (jQuery gh-1709)
uniqueCache = outerCache[ node.uniqueID ] ||
- (outerCache[ node.uniqueID ] = {});
+ ( outerCache[ node.uniqueID ] = {} );
uniqueCache[ type ] = [ dirruns, diff ];
}
@@ -1918,6 +2044,7 @@ Expr = Sizzle.selectors = {
},
"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
@@ -1937,15 +2064,15 @@ Expr = Sizzle.selectors = {
if ( fn.length > 1 ) {
args = [ pseudo, pseudo, "", argument ];
return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
- markFunction(function( seed, matches ) {
+ 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] );
+ idx = indexOf( seed, matched[ i ] );
+ seed[ idx ] = !( matches[ idx ] = matched[ i ] );
}
- }) :
+ } ) :
function( elem ) {
return fn( elem, 0, args );
};
@@ -1956,8 +2083,10 @@ Expr = Sizzle.selectors = {
},
pseudos: {
+
// Potentially complex pseudos
- "not": markFunction(function( selector ) {
+ "not": markFunction( function( selector ) {
+
// Trim the selector passed to compile
// to avoid treating leading and trailing
// spaces as combinators
@@ -1966,39 +2095,40 @@ Expr = Sizzle.selectors = {
matcher = compile( selector.replace( rtrim, "$1" ) );
return matcher[ expando ] ?
- markFunction(function( seed, matches, context, xml ) {
+ 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);
+ if ( ( elem = unmatched[ i ] ) ) {
+ seed[ i ] = !( matches[ i ] = elem );
}
}
- }) :
- function( elem, context, xml ) {
- input[0] = elem;
+ } ) :
+ function( elem, _context, xml ) {
+ input[ 0 ] = elem;
matcher( input, null, xml, results );
+
// Don't keep the element (issue #299)
- input[0] = null;
+ input[ 0 ] = null;
return !results.pop();
};
- }),
+ } ),
- "has": markFunction(function( selector ) {
+ "has": markFunction( function( selector ) {
return function( elem ) {
return Sizzle( selector, elem ).length > 0;
};
- }),
+ } ),
- "contains": markFunction(function( text ) {
+ "contains": markFunction( function( text ) {
text = text.replace( runescape, funescape );
return function( elem ) {
- return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ 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
@@ -2008,25 +2138,26 @@ Expr = Sizzle.selectors = {
// 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 || "") ) {
+ if ( !ridentifier.test( lang || "" ) ) {
Sizzle.error( "unsupported lang: " + lang );
}
lang = lang.replace( runescape, funescape ).toLowerCase();
return function( elem ) {
var elemLang;
do {
- if ( (elemLang = documentIsHTML ?
+ if ( ( elemLang = documentIsHTML ?
elem.lang :
- elem.getAttribute("xml:lang") || elem.getAttribute("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 );
+ } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
return false;
};
- }),
+ } ),
// Miscellaneous
"target": function( elem ) {
@@ -2039,7 +2170,9 @@ Expr = Sizzle.selectors = {
},
"focus": function( elem ) {
- return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ return elem === document.activeElement &&
+ ( !document.hasFocus || document.hasFocus() ) &&
+ !!( elem.type || elem.href || ~elem.tabIndex );
},
// Boolean properties
@@ -2047,16 +2180,20 @@ Expr = Sizzle.selectors = {
"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);
+ 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;
}
@@ -2065,6 +2202,7 @@ Expr = Sizzle.selectors = {
// 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.)
@@ -2078,7 +2216,7 @@ Expr = Sizzle.selectors = {
},
"parent": function( elem ) {
- return !Expr.pseudos["empty"]( elem );
+ return !Expr.pseudos[ "empty" ]( elem );
},
// Element/input types
@@ -2102,57 +2240,62 @@ Expr = Sizzle.selectors = {
// Support: IE<8
// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
- ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ ( ( attr = elem.getAttribute( "type" ) ) == null ||
+ attr.toLowerCase() === "text" );
},
// Position-in-collection
- "first": createPositionalPseudo(function() {
+ "first": createPositionalPseudo( function() {
return [ 0 ];
- }),
+ } ),
- "last": createPositionalPseudo(function( matchIndexes, length ) {
+ "last": createPositionalPseudo( function( _matchIndexes, length ) {
return [ length - 1 ];
- }),
+ } ),
- "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
return [ argument < 0 ? argument + length : argument ];
- }),
+ } ),
- "even": createPositionalPseudo(function( matchIndexes, length ) {
+ "even": createPositionalPseudo( function( matchIndexes, length ) {
var i = 0;
for ( ; i < length; i += 2 ) {
matchIndexes.push( i );
}
return matchIndexes;
- }),
+ } ),
- "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ "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;
+ "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 ) {
+ "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"];
+Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
// Add button/input type pseudos
for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
@@ -2183,37 +2326,39 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
while ( soFar ) {
// Comma and first run
- if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
if ( match ) {
+
// Don't consume trailing commas as valid
- soFar = soFar.slice( match[0].length ) || soFar;
+ soFar = soFar.slice( match[ 0 ].length ) || soFar;
}
- groups.push( (tokens = []) );
+ groups.push( ( tokens = [] ) );
}
matched = false;
// Combinators
- if ( (match = rcombinators.exec( soFar )) ) {
+ if ( ( match = rcombinators.exec( soFar ) ) ) {
matched = match.shift();
- tokens.push({
+ tokens.push( {
value: matched,
+
// Cast descendant combinators to space
- type: match[0].replace( rtrim, " " )
- });
+ 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 ))) ) {
+ if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
+ ( match = preFilters[ type ]( match ) ) ) ) {
matched = match.shift();
- tokens.push({
+ tokens.push( {
value: matched,
type: type,
matches: match
- });
+ } );
soFar = soFar.slice( matched.length );
}
}
@@ -2230,6 +2375,7 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
soFar.length :
soFar ?
Sizzle.error( selector ) :
+
// Cache the tokens
tokenCache( selector, groups ).slice( 0 );
};
@@ -2239,7 +2385,7 @@ function toSelector( tokens ) {
len = tokens.length,
selector = "";
for ( ; i < len; i++ ) {
- selector += tokens[i].value;
+ selector += tokens[ i ].value;
}
return selector;
}
@@ -2252,9 +2398,10 @@ function addCombinator( matcher, combinator, base ) {
doneName = done++;
return combinator.first ?
+
// Check against closest ancestor/preceding element
function( elem, context, xml ) {
- while ( (elem = elem[ dir ]) ) {
+ while ( ( elem = elem[ dir ] ) ) {
if ( elem.nodeType === 1 || checkNonElements ) {
return matcher( elem, context, xml );
}
@@ -2269,7 +2416,7 @@ function addCombinator( matcher, combinator, base ) {
// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
if ( xml ) {
- while ( (elem = elem[ dir ]) ) {
+ while ( ( elem = elem[ dir ] ) ) {
if ( elem.nodeType === 1 || checkNonElements ) {
if ( matcher( elem, context, xml ) ) {
return true;
@@ -2277,27 +2424,29 @@ function addCombinator( matcher, combinator, base ) {
}
}
} else {
- while ( (elem = elem[ dir ]) ) {
+ while ( ( elem = elem[ dir ] ) ) {
if ( elem.nodeType === 1 || checkNonElements ) {
- outerCache = elem[ expando ] || (elem[ expando ] = {});
+ outerCache = elem[ expando ] || ( elem[ expando ] = {} );
// Support: IE <9 only
// Defend against cloned attroperties (jQuery gh-1709)
- uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+ uniqueCache = outerCache[ elem.uniqueID ] ||
+ ( outerCache[ elem.uniqueID ] = {} );
if ( skip && skip === elem.nodeName.toLowerCase() ) {
elem = elem[ dir ] || elem;
- } else if ( (oldCache = uniqueCache[ key ]) &&
+ } 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 ]);
+ 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 )) ) {
+ if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
return true;
}
}
@@ -2313,20 +2462,20 @@ function elementMatcher( matchers ) {
function( elem, context, xml ) {
var i = matchers.length;
while ( i-- ) {
- if ( !matchers[i]( elem, context, xml ) ) {
+ if ( !matchers[ i ]( elem, context, xml ) ) {
return false;
}
}
return true;
} :
- matchers[0];
+ matchers[ 0 ];
}
function multipleContexts( selector, contexts, results ) {
var i = 0,
len = contexts.length;
for ( ; i < len; i++ ) {
- Sizzle( selector, contexts[i], results );
+ Sizzle( selector, contexts[ i ], results );
}
return results;
}
@@ -2339,7 +2488,7 @@ function condense( unmatched, map, filter, context, xml ) {
mapped = map != null;
for ( ; i < len; i++ ) {
- if ( (elem = unmatched[i]) ) {
+ if ( ( elem = unmatched[ i ] ) ) {
if ( !filter || filter( elem, context, xml ) ) {
newUnmatched.push( elem );
if ( mapped ) {
@@ -2359,14 +2508,18 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
if ( postFinder && !postFinder[ expando ] ) {
postFinder = setMatcher( postFinder, postSelector );
}
- return markFunction(function( seed, results, context, xml ) {
+ 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, [] ),
+ elems = seed || multipleContexts(
+ selector || "*",
+ context.nodeType ? [ context ] : context,
+ []
+ ),
// Prefilter to get matcher input, preserving a map for seed-results synchronization
matcherIn = preFilter && ( seed || !selector ) ?
@@ -2374,6 +2527,7 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
elems,
matcherOut = matcher ?
+
// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
@@ -2397,8 +2551,8 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
// 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 ( ( elem = temp[ i ] ) ) {
+ matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
}
}
}
@@ -2406,25 +2560,27 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
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]) ) {
+ if ( ( elem = matcherOut[ i ] ) ) {
+
// Restore matcherIn since elem is not yet a final match
- temp.push( (matcherIn[i] = elem) );
+ temp.push( ( matcherIn[ i ] = elem ) );
}
}
- postFinder( null, (matcherOut = []), temp, xml );
+ 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 ) {
+ if ( ( elem = matcherOut[ i ] ) &&
+ ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
- seed[temp] = !(results[temp] = elem);
+ seed[ temp ] = !( results[ temp ] = elem );
}
}
}
@@ -2442,14 +2598,14 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
push.apply( results, matcherOut );
}
}
- });
+ } );
}
function matcherFromTokens( tokens ) {
var checkContext, matcher, j,
len = tokens.length,
- leadingRelative = Expr.relative[ tokens[0].type ],
- implicitRelative = leadingRelative || Expr.relative[" "],
+ 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)
@@ -2461,38 +2617,43 @@ function matcherFromTokens( tokens ) {
}, implicitRelative, true ),
matchers = [ function( elem, context, xml ) {
var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
- (checkContext = context).nodeType ?
+ ( 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) ];
+ if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
+ matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
} else {
- matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+ 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 ] ) {
+ 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 === " " ? "*" : "" })
+
+ // 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 && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
j < len && toSelector( tokens )
);
}
@@ -2513,28 +2674,40 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
unmatched = seed && [],
setMatched = [],
contextBackup = outermostContext,
+
// We must always have either seed elements or outermost context
- elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ 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),
+ dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
len = elems.length;
if ( outermost ) {
- outermostContext = context === document || context || 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: <number>) matching elements by id
- for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
if ( byElement && elem ) {
j = 0;
- if ( !context && elem.ownerDocument !== 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 ( !context && elem.ownerDocument != document ) {
setDocument( elem );
xml = !documentIsHTML;
}
- while ( (matcher = elementMatchers[j++]) ) {
- if ( matcher( elem, context || document, xml) ) {
+ while ( ( matcher = elementMatchers[ j++ ] ) ) {
+ if ( matcher( elem, context || document, xml ) ) {
results.push( elem );
break;
}
@@ -2546,8 +2719,9 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
// Track unmatched elements for set filters
if ( bySet ) {
+
// They will have gone through all possible matchers
- if ( (elem = !matcher && elem) ) {
+ if ( ( elem = !matcher && elem ) ) {
matchedCount--;
}
@@ -2571,16 +2745,17 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
// numerically zero.
if ( bySet && i !== matchedCount ) {
j = 0;
- while ( (matcher = setMatchers[j++]) ) {
+ 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 );
+ if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
+ setMatched[ i ] = pop.call( results );
}
}
}
@@ -2621,13 +2796,14 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
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] );
+ cached = matcherFromTokens( match[ i ] );
if ( cached[ expando ] ) {
setMatchers.push( cached );
} else {
@@ -2636,7 +2812,10 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
}
// Cache the compiled function
- cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+ cached = compilerCache(
+ selector,
+ matcherFromGroupMatchers( elementMatchers, setMatchers )
+ );
// Save selector and tokenization
cached.selector = selector;
@@ -2656,7 +2835,7 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
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) );
+ match = !seed && tokenize( ( selector = compiled.selector || selector ) );
results = results || [];
@@ -2665,11 +2844,12 @@ select = Sizzle.select = function( selector, context, results, seed ) {
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 ] ) {
+ 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];
+ context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
+ .replace( runescape, funescape ), context ) || [] )[ 0 ];
if ( !context ) {
return results;
@@ -2682,20 +2862,22 @@ select = Sizzle.select = function( selector, context, results, seed ) {
}
// Fetch a seed set for right-to-left matching
- i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
while ( i-- ) {
- token = tokens[i];
+ token = tokens[ i ];
// Abort if we hit a combinator
- if ( Expr.relative[ (type = token.type) ] ) {
+ if ( Expr.relative[ ( type = token.type ) ] ) {
break;
}
- if ( (find = Expr.find[ type ]) ) {
+ 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 = 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 );
@@ -2726,7 +2908,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
// One-time assignments
// Sort stability
-support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
// Support: Chrome 14-35+
// Always assume duplicates if they aren't passed to the comparison function
@@ -2737,58 +2919,59 @@ 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 ) {
+support.sortDetached = assert( function( el ) {
+
// Should return 1, but returns 4 (following)
- return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
-});
+ 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 ) {
+if ( !assert( function( el ) {
el.innerHTML = "<a href='#'></a>";
- return el.firstChild.getAttribute("href") === "#" ;
-}) ) {
+ 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 ) {
+if ( !support.attributes || !assert( function( el ) {
el.innerHTML = "<input/>";
el.firstChild.setAttribute( "value", "" );
return el.firstChild.getAttribute( "value" ) === "";
-}) ) {
- addHandle( "value", function( elem, name, isXML ) {
+} ) ) {
+ 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;
-}) ) {
+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 = elem.getAttributeNode( name ) ) && val.specified ?
val.value :
- null;
+ null;
}
- });
+ } );
}
return Sizzle;
-})( window );
+} )( window );
@@ -2848,11 +3031,9 @@ var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|
-var risSimple = /^.[^:#\[\.,]*$/;
-
// Implement the identical functionality for filter and not
function winnow( elements, qualifier, not ) {
- if ( jQuery.isFunction( qualifier ) ) {
+ if ( isFunction( qualifier ) ) {
return jQuery.grep( elements, function( elem, i ) {
return !!qualifier.call( elem, i, elem ) !== not;
} );
@@ -2872,16 +3053,8 @@ function winnow( elements, qualifier, not ) {
} );
}
- // Simple selector that can be filtered directly, removing non-Elements
- if ( risSimple.test( qualifier ) ) {
- return jQuery.filter( qualifier, elements, not );
- }
-
- // Complex selector, compare the two sets, removing non-Elements
- qualifier = jQuery.filter( qualifier, elements );
- return jQuery.grep( elements, function( elem ) {
- return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
- } );
+ // Filtered directly for both simple and complex selectors
+ return jQuery.filter( qualifier, elements, not );
}
jQuery.filter = function( expr, elems, not ) {
@@ -3002,7 +3175,7 @@ var rootjQuery,
for ( match in context ) {
// Properties of context are called as methods if possible
- if ( jQuery.isFunction( this[ match ] ) ) {
+ if ( isFunction( this[ match ] ) ) {
this[ match ]( context[ match ] );
// ...and otherwise set as attributes
@@ -3045,7 +3218,7 @@ var rootjQuery,
// HANDLE: $(function)
// Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) ) {
+ } else if ( isFunction( selector ) ) {
return root.ready !== undefined ?
root.ready( selector ) :
@@ -3167,7 +3340,7 @@ jQuery.each( {
parents: function( elem ) {
return dir( elem, "parentNode" );
},
- parentsUntil: function( elem, i, until ) {
+ parentsUntil: function( elem, _i, until ) {
return dir( elem, "parentNode", until );
},
next: function( elem ) {
@@ -3182,10 +3355,10 @@ jQuery.each( {
prevAll: function( elem ) {
return dir( elem, "previousSibling" );
},
- nextUntil: function( elem, i, until ) {
+ nextUntil: function( elem, _i, until ) {
return dir( elem, "nextSibling", until );
},
- prevUntil: function( elem, i, until ) {
+ prevUntil: function( elem, _i, until ) {
return dir( elem, "previousSibling", until );
},
siblings: function( elem ) {
@@ -3195,18 +3368,24 @@ jQuery.each( {
return siblings( elem.firstChild );
},
contents: function( elem ) {
- if ( nodeName( elem, "iframe" ) ) {
- return elem.contentDocument;
- }
+ if ( elem.contentDocument != null &&
- // 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;
- }
+ // Support: IE 11+
+ // <object> elements with no `data` attribute has an object
+ // `contentDocument` with a `null` prototype.
+ getProto( elem.contentDocument ) ) {
- return jQuery.merge( [], elem.childNodes );
+ 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 ) {
@@ -3360,11 +3539,11 @@ jQuery.Callbacks = function( options ) {
( function add( args ) {
jQuery.each( args, function( _, arg ) {
- if ( jQuery.isFunction( arg ) ) {
+ if ( isFunction( arg ) ) {
if ( !options.unique || !self.has( arg ) ) {
list.push( arg );
}
- } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
+ } else if ( arg && arg.length && toType( arg ) !== "string" ) {
// Inspect recursively
add( arg );
@@ -3479,11 +3658,11 @@ function adoptValue( value, resolve, reject, noValue ) {
try {
// Check for promise aspect first to privilege synchronous behavior
- if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
+ if ( value && isFunction( ( method = value.promise ) ) ) {
method.call( value ).done( resolve ).fail( reject );
// Other thenables
- } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
+ } else if ( value && isFunction( ( method = value.then ) ) ) {
method.call( value, resolve, reject );
// Other non-thenables
@@ -3538,17 +3717,17 @@ jQuery.extend( {
var fns = arguments;
return jQuery.Deferred( function( newDefer ) {
- jQuery.each( tuples, function( i, tuple ) {
+ jQuery.each( tuples, function( _i, tuple ) {
// Map tuples (progress, done, fail) to arguments (done, fail, progress)
- var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+ 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 && jQuery.isFunction( returned.promise ) ) {
+ if ( returned && isFunction( returned.promise ) ) {
returned.promise()
.progress( newDefer.notify )
.done( newDefer.resolve )
@@ -3602,7 +3781,7 @@ jQuery.extend( {
returned.then;
// Handle a returned thenable
- if ( jQuery.isFunction( then ) ) {
+ if ( isFunction( then ) ) {
// Special processors (notify) just wait for resolution
if ( special ) {
@@ -3698,7 +3877,7 @@ jQuery.extend( {
resolve(
0,
newDefer,
- jQuery.isFunction( onProgress ) ?
+ isFunction( onProgress ) ?
onProgress :
Identity,
newDefer.notifyWith
@@ -3710,7 +3889,7 @@ jQuery.extend( {
resolve(
0,
newDefer,
- jQuery.isFunction( onFulfilled ) ?
+ isFunction( onFulfilled ) ?
onFulfilled :
Identity
)
@@ -3721,7 +3900,7 @@ jQuery.extend( {
resolve(
0,
newDefer,
- jQuery.isFunction( onRejected ) ?
+ isFunction( onRejected ) ?
onRejected :
Thrower
)
@@ -3761,8 +3940,15 @@ jQuery.extend( {
// 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
+ tuples[ 0 ][ 2 ].lock,
+
+ // progress_handlers.lock
+ tuples[ 0 ][ 3 ].lock
);
}
@@ -3832,7 +4018,7 @@ jQuery.extend( {
// Use .then() to unwrap secondary thenables (cf. gh-3000)
if ( master.state() === "pending" ||
- jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+ isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
return master.then();
}
@@ -3960,7 +4146,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
bulk = key == null;
// Sets many values
- if ( jQuery.type( key ) === "object" ) {
+ if ( toType( key ) === "object" ) {
chainable = true;
for ( i in key ) {
access( elems, fn, i, key[ i ], true, emptyGet, raw );
@@ -3970,7 +4156,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
} else if ( value !== undefined ) {
chainable = true;
- if ( !jQuery.isFunction( value ) ) {
+ if ( !isFunction( value ) ) {
raw = true;
}
@@ -3984,7 +4170,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
// ...except when executing function values
} else {
bulk = fn;
- fn = function( elem, key, value ) {
+ fn = function( elem, _key, value ) {
return bulk.call( jQuery( elem ), value );
};
}
@@ -4012,6 +4198,23 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
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:
@@ -4074,14 +4277,14 @@ Data.prototype = {
// Handle: [ owner, key, value ] args
// Always use camelCase key (gh-2257)
if ( typeof data === "string" ) {
- cache[ jQuery.camelCase( data ) ] = value;
+ cache[ camelCase( data ) ] = value;
// Handle: [ owner, { properties } ] args
} else {
// Copy the properties one-by-one to the cache object
for ( prop in data ) {
- cache[ jQuery.camelCase( prop ) ] = data[ prop ];
+ cache[ camelCase( prop ) ] = data[ prop ];
}
}
return cache;
@@ -4091,7 +4294,7 @@ Data.prototype = {
this.cache( owner ) :
// Always use camelCase key (gh-2257)
- owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
+ owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
},
access: function( owner, key, value ) {
@@ -4139,9 +4342,9 @@ Data.prototype = {
// If key is an array of keys...
// We always set camelCase keys, so remove that.
- key = key.map( jQuery.camelCase );
+ key = key.map( camelCase );
} else {
- key = jQuery.camelCase( key );
+ key = camelCase( key );
// If a key with the spaces exists, use it.
// Otherwise, create an array by matching non-whitespace
@@ -4287,7 +4490,7 @@ jQuery.fn.extend( {
if ( attrs[ i ] ) {
name = attrs[ i ].name;
if ( name.indexOf( "data-" ) === 0 ) {
- name = jQuery.camelCase( name.slice( 5 ) );
+ name = camelCase( name.slice( 5 ) );
dataAttr( elem, name, data[ name ] );
}
}
@@ -4491,6 +4694,26 @@ 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;
@@ -4505,37 +4728,15 @@ var isHiddenWithinTree = function( elem, el ) {
// Support: Firefox <=43 - 45
// Disconnected elements can have computed display: none, so first confirm that elem is
// in the document.
- jQuery.contains( elem.ownerDocument, elem ) &&
+ isAttached( elem ) &&
jQuery.css( elem, "display" ) === "none";
};
-var swap = function( elem, options, callback, args ) {
- 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.apply( elem, args || [] );
-
- // Revert the old values
- for ( name in options ) {
- elem.style[ name ] = old[ name ];
- }
-
- return ret;
-};
-
-
function adjustCSS( elem, prop, valueParts, tween ) {
- var adjusted,
- scale = 1,
+ var adjusted, scale,
maxIterations = 20,
currentValue = tween ?
function() {
@@ -4548,35 +4749,39 @@ function adjustCSS( elem, prop, valueParts, tween ) {
unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
// Starting value computation is required for potential unit mismatches
- initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+ 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 ];
- // Make sure we update the tween properties later on
- valueParts = valueParts || [];
-
// Iteratively approximate from a nonzero starting point
initialInUnit = +initial || 1;
- do {
-
- // If previous iteration zeroed out, double until we get *something*.
- // Use string for doubling so we don't accidentally see scale as unchanged below
- scale = scale || ".5";
+ while ( maxIterations-- ) {
- // Adjust and apply
- initialInUnit = initialInUnit / scale;
+ // 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;
- // Update scale, tolerating zero or NaN from tween.cur()
- // Break the loop if scale is unchanged or perfect, or if we've just had enough.
- } while (
- scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
- );
+ }
+
+ initialInUnit = initialInUnit * 2;
+ jQuery.style( elem, prop, initialInUnit + unit );
+
+ // Make sure we update the tween properties later on
+ valueParts = valueParts || [];
}
if ( valueParts ) {
@@ -4692,17 +4897,46 @@ jQuery.fn.extend( {
} );
var rcheckableType = ( /^(?:checkbox|radio)$/i );
-var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
+var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
-var rscriptType = ( /^$|\/(?:java|ecma)script/i );
+var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
-// We have to close these tags to support XHTML (#13200)
-var wrapMap = {
+( 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 = "<textarea>x</textarea>";
+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
// Support: IE <=9 only
- option: [ 1, "<select multiple='multiple'>", "</select>" ],
+ // IE <=9 replaces <option> tags with their contents when inserted outside of
+ // the select element.
+ div.innerHTML = "<option></option>";
+ 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
@@ -4715,12 +4949,14 @@ var wrapMap = {
_default: [ 0, "", "" ]
};
-// Support: IE <=9 only
-wrapMap.optgroup = wrapMap.option;
-
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, "<select multiple='multiple'>", "</select>" ];
+}
+
function getAll( context, tag ) {
@@ -4764,7 +5000,7 @@ function setGlobalEval( elems, refElements ) {
var rhtml = /<|&#?\w+;/;
function buildFragment( elems, context, scripts, selection, ignored ) {
- var elem, tmp, tag, wrap, contains, j,
+ var elem, tmp, tag, wrap, attached, j,
fragment = context.createDocumentFragment(),
nodes = [],
i = 0,
@@ -4776,7 +5012,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
if ( elem || elem === 0 ) {
// Add nodes directly
- if ( jQuery.type( elem ) === "object" ) {
+ if ( toType( elem ) === "object" ) {
// Support: Android <=4.0 only, PhantomJS 1 only
// push.apply(_, arraylike) throws on ancient WebKit
@@ -4828,13 +5064,13 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
continue;
}
- contains = jQuery.contains( elem.ownerDocument, elem );
+ attached = isAttached( elem );
// Append to fragment
tmp = getAll( fragment.appendChild( elem ), "script" );
// Preserve script evaluation history
- if ( contains ) {
+ if ( attached ) {
setGlobalEval( tmp );
}
@@ -4853,34 +5089,6 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
}
-( 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 = "<textarea>x</textarea>";
- support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
-} )();
-var documentElement = document.documentElement;
-
-
-
var
rkeyEvent = /^key/,
rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
@@ -4894,8 +5102,19 @@ 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
-// See #13393 for more info
+// Accessing document.activeElement can throw unexpectedly
+// https://bugs.jquery.com/ticket/13393
function safeActiveElement() {
try {
return document.activeElement;
@@ -4978,8 +5197,8 @@ jQuery.event = {
special, handlers, type, namespaces, origType,
elemData = dataPriv.get( elem );
- // Don't attach events to noData or text/comment nodes (but allow plain objects)
- if ( !elemData ) {
+ // Only attach events to objects that accept data
+ if ( !acceptData( elem ) ) {
return;
}
@@ -5003,7 +5222,7 @@ jQuery.event = {
// Init the element's event structure and main handler, if this is the first
if ( !( events = elemData.events ) ) {
- events = elemData.events = {};
+ events = elemData.events = Object.create( null );
}
if ( !( eventHandle = elemData.handle ) ) {
eventHandle = elemData.handle = function( e ) {
@@ -5161,12 +5380,15 @@ jQuery.event = {
dispatch: function( nativeEvent ) {
- // Make a writable jQuery.Event from the native event object
- var event = jQuery.event.fix( nativeEvent );
-
var i, j, ret, matched, handleObj, handlerQueue,
args = new Array( arguments.length ),
- handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+
+ // 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
@@ -5195,9 +5417,10 @@ jQuery.event = {
while ( ( handleObj = matched.handlers[ j++ ] ) &&
!event.isImmediatePropagationStopped() ) {
- // Triggered event must either 1) have no namespace, or 2) have namespace(s)
- // a subset or equal to those in the bound event (both can have no namespace).
- if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+ // 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;
@@ -5286,7 +5509,7 @@ jQuery.event = {
enumerable: true,
configurable: true,
- get: jQuery.isFunction( hook ) ?
+ get: isFunction( hook ) ?
function() {
if ( this.originalEvent ) {
return hook( this.originalEvent );
@@ -5321,39 +5544,51 @@ jQuery.event = {
// Prevent triggered image.load events from bubbling to window.load
noBubble: true
},
- focus: {
+ click: {
- // Fire native event if possible so blur/focus sequence is correct
- trigger: function() {
- if ( this !== safeActiveElement() && this.focus ) {
- this.focus();
- return false;
- }
- },
- delegateType: "focusin"
- },
- blur: {
- trigger: function() {
- if ( this === safeActiveElement() && this.blur ) {
- this.blur();
- return false;
+ // 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;
},
- delegateType: "focusout"
- },
- click: {
+ trigger: function( data ) {
- // For checkbox, fire native event so checked state will be right
- trigger: function() {
- if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {
- this.click();
- return false;
+ // 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, don't fire native .click() on links
+ // 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 ) {
- return nodeName( event.target, "a" );
+ var target = event.target;
+ return rcheckableType.test( target.type ) &&
+ target.click && nodeName( target, "input" ) &&
+ dataPriv.get( target, "click" ) ||
+ nodeName( target, "a" );
}
},
@@ -5367,8 +5602,95 @@ jQuery.event = {
}
}
}
- }
-};
+ }
+};
+
+// 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();
+ return 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 ) {
@@ -5421,7 +5743,7 @@ jQuery.Event = function( src, props ) {
}
// Create a timestamp if incoming event doesn't have one
- this.timeStamp = src && src.timeStamp || jQuery.now();
+ this.timeStamp = src && src.timeStamp || Date.now();
// Mark it as fixed
this[ jQuery.expando ] = true;
@@ -5482,6 +5804,7 @@ jQuery.each( {
shiftKey: true,
view: true,
"char": true,
+ code: true,
charCode: true,
key: true,
keyCode: true,
@@ -5528,6 +5851,33 @@ jQuery.each( {
}
}, 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;
+ },
+
+ 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
@@ -5613,21 +5963,13 @@ jQuery.fn.extend( {
var
- /* eslint-disable max-len */
-
- // See https://github.com/eslint/eslint/issues/3229
- rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
-
- /* eslint-enable */
-
- // Support: IE <=10 - 11, Edge 12 - 13
+ // 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 = /<script|<style|<link/i,
// checked="checked" or checked
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
- rscriptTypeMasked = /^true\/(.*)/,
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
// Prefer a tbody over its parent table for containing new rows
@@ -5635,7 +5977,7 @@ function manipulationTarget( elem, content ) {
if ( nodeName( elem, "table" ) &&
nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
- return jQuery( ">tbody", elem )[ 0 ] || elem;
+ return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
}
return elem;
@@ -5647,10 +5989,8 @@ function disableScript( elem ) {
return elem;
}
function restoreScript( elem ) {
- var match = rscriptTypeMasked.exec( elem.type );
-
- if ( match ) {
- elem.type = match[ 1 ];
+ if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
+ elem.type = elem.type.slice( 5 );
} else {
elem.removeAttribute( "type" );
}
@@ -5659,7 +5999,7 @@ function restoreScript( elem ) {
}
function cloneCopyEvent( src, dest ) {
- var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+ var i, l, type, pdataOld, udataOld, udataCur, events;
if ( dest.nodeType !== 1 ) {
return;
@@ -5667,13 +6007,11 @@ function cloneCopyEvent( src, dest ) {
// 1. Copy private data: events, handlers, etc.
if ( dataPriv.hasData( src ) ) {
- pdataOld = dataPriv.access( src );
- pdataCur = dataPriv.set( dest, pdataOld );
+ pdataOld = dataPriv.get( src );
events = pdataOld.events;
if ( events ) {
- delete pdataCur.handle;
- pdataCur.events = {};
+ dataPriv.remove( dest, "handle events" );
for ( type in events ) {
for ( i = 0, l = events[ type ].length; i < l; i++ ) {
@@ -5709,22 +6047,22 @@ function fixInput( src, dest ) {
function domManip( collection, args, callback, ignored ) {
// Flatten any nested arrays
- args = concat.apply( [], args );
+ args = flat( args );
var fragment, first, scripts, hasScripts, node, doc,
i = 0,
l = collection.length,
iNoClone = l - 1,
value = args[ 0 ],
- isFunction = jQuery.isFunction( value );
+ valueIsFunction = isFunction( value );
// We can't cloneNode fragments that contain checked, in WebKit
- if ( isFunction ||
+ if ( valueIsFunction ||
( l > 1 && typeof value === "string" &&
!support.checkClone && rchecked.test( value ) ) ) {
return collection.each( function( index ) {
var self = collection.eq( index );
- if ( isFunction ) {
+ if ( valueIsFunction ) {
args[ 0 ] = value.call( this, index, self.html() );
}
domManip( self, args, callback, ignored );
@@ -5778,14 +6116,16 @@ function domManip( collection, args, callback, ignored ) {
!dataPriv.access( node, "globalEval" ) &&
jQuery.contains( doc, node ) ) {
- if ( node.src ) {
+ if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) {
// Optional AJAX dependency, but won't run scripts if not present
- if ( jQuery._evalUrl ) {
- jQuery._evalUrl( node.src );
+ if ( jQuery._evalUrl && !node.noModule ) {
+ jQuery._evalUrl( node.src, {
+ nonce: node.nonce || node.getAttribute( "nonce" )
+ }, doc );
}
} else {
- DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
+ DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
}
}
}
@@ -5807,7 +6147,7 @@ function remove( elem, selector, keepData ) {
}
if ( node.parentNode ) {
- if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
+ if ( keepData && isAttached( node ) ) {
setGlobalEval( getAll( node, "script" ) );
}
node.parentNode.removeChild( node );
@@ -5819,13 +6159,13 @@ function remove( elem, selector, keepData ) {
jQuery.extend( {
htmlPrefilter: function( html ) {
- return html.replace( rxhtmlTag, "<$1></$2>" );
+ return html;
},
clone: function( elem, dataAndEvents, deepDataAndEvents ) {
var i, l, srcElements, destElements,
clone = elem.cloneNode( true ),
- inPage = jQuery.contains( elem.ownerDocument, elem );
+ inPage = isAttached( elem );
// Fix IE cloning issues
if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
@@ -6065,8 +6405,6 @@ jQuery.each( {
return this.pushStack( ret );
};
} );
-var rmargin = ( /^margin/ );
-
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
var getStyles = function( elem ) {
@@ -6083,6 +6421,29 @@ var getStyles = function( elem ) {
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() {
@@ -6096,25 +6457,35 @@ var getStyles = function( elem ) {
return;
}
+ container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
+ "margin-top:1px;padding:0;border:0";
div.style.cssText =
- "box-sizing:border-box;" +
- "position:relative;display:block;" +
+ "position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
"margin:auto;border:1px;padding:1px;" +
- "top:1%;width:50%";
- div.innerHTML = "";
- documentElement.appendChild( container );
+ "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 = divStyle.marginLeft === "2px";
- boxSizingReliableVal = divStyle.width === "4px";
+ reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
- // Support: Android 4.0 - 4.3 only
+ // 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.marginRight = "50%";
- pixelMarginRightVal = divStyle.marginRight === "4px";
+ 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 );
@@ -6123,7 +6494,12 @@ var getStyles = function( elem ) {
div = null;
}
- var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
+ function roundPixelMeasures( measure ) {
+ return Math.round( parseFloat( measure ) );
+ }
+
+ var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
+ reliableTrDimensionsVal, reliableMarginLeftVal,
container = document.createElement( "div" ),
div = document.createElement( "div" );
@@ -6138,26 +6514,55 @@ var getStyles = function( elem ) {
div.cloneNode( true ).style.backgroundClip = "";
support.clearCloneStyle = div.style.backgroundClip === "content-box";
- container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
- "padding:0;margin-top:1px;position:absolute";
- container.appendChild( div );
-
jQuery.extend( support, {
- pixelPosition: function() {
- computeStyleTests();
- return pixelPositionVal;
- },
boxSizingReliable: function() {
computeStyleTests();
return boxSizingReliableVal;
},
- pixelMarginRight: function() {
+ pixelBoxStyles: function() {
computeStyleTests();
- return pixelMarginRightVal;
+ 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!
+ 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";
+ tr.style.height = "1px";
+ trChild.style.height = "9px";
+
+ documentElement
+ .appendChild( table )
+ .appendChild( tr )
+ .appendChild( trChild );
+
+ trStyle = window.getComputedStyle( tr );
+ reliableTrDimensionsVal = parseInt( trStyle.height ) > 3;
+
+ documentElement.removeChild( table );
+ }
+ return reliableTrDimensionsVal;
}
} );
} )();
@@ -6180,7 +6585,7 @@ function curCSS( elem, name, computed ) {
if ( computed ) {
ret = computed.getPropertyValue( name ) || computed[ name ];
- if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ if ( ret === "" && !isAttached( elem ) ) {
ret = jQuery.style( elem, name );
}
@@ -6189,7 +6594,7 @@ function curCSS( elem, name, computed ) {
// but width seems to be reliably pixels.
// This is against the CSSOM draft spec:
// https://drafts.csswg.org/cssom/#resolved-values
- if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+ if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
// Remember the original values
width = style.width;
@@ -6236,30 +6641,13 @@ function addGetHookIf( conditionFn, hookFn ) {
}
-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"
- },
-
- cssPrefixes = [ "Webkit", "Moz", "ms" ],
- emptyStyle = document.createElement( "div" ).style;
+var cssPrefixes = [ "Webkit", "Moz", "ms" ],
+ emptyStyle = document.createElement( "div" ).style,
+ vendorProps = {};
-// Return a css property mapped to a potentially vendor prefixed property
+// Return a vendor-prefixed property or undefined
function vendorPropName( name ) {
- // Shortcut for names that are not vendor prefixed
- if ( name in emptyStyle ) {
- return name;
- }
-
// Check for vendor prefixed names
var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
i = cssPrefixes.length;
@@ -6272,17 +6660,34 @@ function vendorPropName( name ) {
}
}
-// Return a property mapped along what jQuery.cssProps suggests or to
-// a vendor prefixed property.
+// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
function finalPropName( name ) {
- var ret = jQuery.cssProps[ name ];
- if ( !ret ) {
- ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;
+ var final = jQuery.cssProps[ name ] || vendorProps[ name ];
+
+ if ( final ) {
+ return final;
}
- return ret;
+ if ( name in emptyStyle ) {
+ return name;
+ }
+ return vendorProps[ name ] = vendorPropName( name ) || name;
}
-function setPositiveNumber( elem, value, subtract ) {
+
+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
@@ -6294,87 +6699,146 @@ function setPositiveNumber( elem, value, subtract ) {
value;
}
-function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
- var i,
- val = 0;
-
- // If we already have the right measurement, avoid augmentation
- if ( extra === ( isBorderBox ? "border" : "content" ) ) {
- i = 4;
+function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
+ var i = dimension === "width" ? 1 : 0,
+ extra = 0,
+ delta = 0;
- // Otherwise initialize for horizontal or vertical properties
- } else {
- i = name === "width" ? 1 : 0;
+ // Adjustment may not be necessary
+ if ( box === ( isBorderBox ? "border" : "content" ) ) {
+ return 0;
}
for ( ; i < 4; i += 2 ) {
- // Both box models exclude margin, so add it if we want it
- if ( extra === "margin" ) {
- val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+ // Both box models exclude margin
+ if ( box === "margin" ) {
+ delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
}
- if ( isBorderBox ) {
+ // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
+ if ( !isBorderBox ) {
- // border-box includes padding, so remove it if we want content
- if ( extra === "content" ) {
- val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
- }
+ // Add padding
+ delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
- // At this point, extra isn't border nor margin, so remove border
- if ( extra !== "margin" ) {
- val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", 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 {
- // At this point, extra isn't content, so add padding
- val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ // For "content", subtract padding
+ if ( box === "content" ) {
+ delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ }
- // At this point, extra isn't content nor padding, so add border
- if ( extra !== "padding" ) {
- val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ // For "content" or "padding", subtract border
+ if ( box !== "margin" ) {
+ delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
}
}
}
- return val;
+ // 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, name, extra ) {
+function getWidthOrHeight( elem, dimension, extra ) {
// Start with computed style
- var valueIsBorderBox,
- styles = getStyles( elem ),
- val = curCSS( elem, name, styles ),
- isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+ 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,
- // Computed unit is not pixels. Stop here and return.
+ 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 ) ) {
- return val;
+ if ( !extra ) {
+ return val;
+ }
+ val = "auto";
}
- // Check for style in case a browser which returns unreliable values
- // for getComputedStyle silently falls back to the reliable elem.style
- valueIsBorderBox = isBorderBox &&
- ( support.boxSizingReliable() || val === elem.style[ name ] );
- // Fall back to offsetWidth/Height when value is "auto"
- // This happens for inline elements with no explicit setting (gh-3571)
- if ( val === "auto" ) {
- val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ];
+ // 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 "", auto, and prepare for extra
+ // Normalize "" and auto
val = parseFloat( val ) || 0;
- // Use the active box-sizing model to add/subtract irrelevant styles
+ // Adjust for the element's box model
return ( val +
- augmentWidthOrHeight(
+ boxModelAdjustment(
elem,
- name,
+ dimension,
extra || ( isBorderBox ? "border" : "content" ),
valueIsBorderBox,
- styles
+ styles,
+
+ // Provide the current computed size to request scroll gutter calculation (gh-3589)
+ val
)
) + "px";
}
@@ -6404,6 +6868,13 @@ jQuery.extend( {
"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,
@@ -6415,9 +6886,7 @@ jQuery.extend( {
// Add in properties whose names you wish to fix before
// setting or getting the value
- cssProps: {
- "float": "cssFloat"
- },
+ cssProps: {},
// Get and set the style property on a DOM Node
style: function( elem, name, value, extra ) {
@@ -6429,7 +6898,7 @@ jQuery.extend( {
// Make sure that we're working with the right name
var ret, type, hooks,
- origName = jQuery.camelCase( name ),
+ origName = camelCase( name ),
isCustomProp = rcustomProp.test( name ),
style = elem.style;
@@ -6461,7 +6930,9 @@ jQuery.extend( {
}
// If a number was passed in, add the unit (except for certain CSS properties)
- if ( type === "number" ) {
+ // 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" );
}
@@ -6497,7 +6968,7 @@ jQuery.extend( {
css: function( elem, name, extra, styles ) {
var val, num, hooks,
- origName = jQuery.camelCase( name ),
+ origName = camelCase( name ),
isCustomProp = rcustomProp.test( name );
// Make sure that we're working with the right name. We don't
@@ -6535,8 +7006,8 @@ jQuery.extend( {
}
} );
-jQuery.each( [ "height", "width" ], function( i, name ) {
- jQuery.cssHooks[ name ] = {
+jQuery.each( [ "height", "width" ], function( _i, dimension ) {
+ jQuery.cssHooks[ dimension ] = {
get: function( elem, computed, extra ) {
if ( computed ) {
@@ -6552,29 +7023,52 @@ jQuery.each( [ "height", "width" ], function( i, name ) {
// in IE throws an error.
( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
swap( elem, cssShow, function() {
- return getWidthOrHeight( elem, name, extra );
+ return getWidthOrHeight( elem, dimension, extra );
} ) :
- getWidthOrHeight( elem, name, extra );
+ getWidthOrHeight( elem, dimension, extra );
}
},
set: function( elem, value, extra ) {
var matches,
- styles = extra && getStyles( elem ),
- subtract = extra && augmentWidthOrHeight(
- elem,
- name,
- extra,
+ 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",
- styles
+ 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[ name ] = value;
- value = jQuery.css( elem, name );
+ elem.style[ dimension ] = value;
+ value = jQuery.css( elem, dimension );
}
return setPositiveNumber( elem, value, subtract );
@@ -6618,7 +7112,7 @@ jQuery.each( {
}
};
- if ( !rmargin.test( prefix ) ) {
+ if ( prefix !== "margin" ) {
jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
}
} );
@@ -6728,9 +7222,9 @@ Tween.propHooks = {
// 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 &&
- ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
- jQuery.cssHooks[ tween.prop ] ) ) {
+ } 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;
@@ -6789,7 +7283,7 @@ function createFxNow() {
window.setTimeout( function() {
fxNow = undefined;
} );
- return ( fxNow = jQuery.now() );
+ return ( fxNow = Date.now() );
}
// Generate parameters to create a standard animation
@@ -6893,9 +7387,10 @@ function defaultPrefilter( elem, props, opts ) {
// Restrict "overflow" and "display" styles during box animations
if ( isBox && elem.nodeType === 1 ) {
- // Support: IE <=9 - 11, Edge 12 - 13
+ // 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
+ // 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
@@ -7003,7 +7498,7 @@ function propFilter( props, specialEasing ) {
// camelCase, specialEasing and expand cssHook pass
for ( index in props ) {
- name = jQuery.camelCase( index );
+ name = camelCase( index );
easing = specialEasing[ name ];
value = props[ index ];
if ( Array.isArray( value ) ) {
@@ -7128,9 +7623,9 @@ function Animation( elem, properties, options ) {
for ( ; index < length; index++ ) {
result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
if ( result ) {
- if ( jQuery.isFunction( result.stop ) ) {
+ if ( isFunction( result.stop ) ) {
jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
- jQuery.proxy( result.stop, result );
+ result.stop.bind( result );
}
return result;
}
@@ -7138,7 +7633,7 @@ function Animation( elem, properties, options ) {
jQuery.map( props, createTween, animation );
- if ( jQuery.isFunction( animation.opts.start ) ) {
+ if ( isFunction( animation.opts.start ) ) {
animation.opts.start.call( elem, animation );
}
@@ -7171,7 +7666,7 @@ jQuery.Animation = jQuery.extend( Animation, {
},
tweener: function( props, callback ) {
- if ( jQuery.isFunction( props ) ) {
+ if ( isFunction( props ) ) {
callback = props;
props = [ "*" ];
} else {
@@ -7203,9 +7698,9 @@ jQuery.Animation = jQuery.extend( Animation, {
jQuery.speed = function( speed, easing, fn ) {
var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
complete: fn || !fn && easing ||
- jQuery.isFunction( speed ) && speed,
+ isFunction( speed ) && speed,
duration: speed,
- easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ easing: fn && easing || easing && !isFunction( easing ) && easing
};
// Go to the end state if fx are off
@@ -7232,7 +7727,7 @@ jQuery.speed = function( speed, easing, fn ) {
opt.old = opt.complete;
opt.complete = function() {
- if ( jQuery.isFunction( opt.old ) ) {
+ if ( isFunction( opt.old ) ) {
opt.old.call( this );
}
@@ -7284,7 +7779,7 @@ jQuery.fn.extend( {
clearQueue = type;
type = undefined;
}
- if ( clearQueue && type !== false ) {
+ if ( clearQueue ) {
this.queue( type || "fx", [] );
}
@@ -7367,7 +7862,7 @@ jQuery.fn.extend( {
}
} );
-jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
+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" ?
@@ -7396,7 +7891,7 @@ jQuery.fx.tick = function() {
i = 0,
timers = jQuery.timers;
- fxNow = jQuery.now();
+ fxNow = Date.now();
for ( ; i < timers.length; i++ ) {
timer = timers[ i ];
@@ -7588,7 +8083,7 @@ boolHook = {
}
};
-jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, 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 ) {
@@ -7749,7 +8244,7 @@ jQuery.each( [
// Strip and collapse whitespace according to HTML spec
- // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
+ // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
function stripAndCollapse( value ) {
var tokens = value.match( rnothtmlwhite ) || [];
return tokens.join( " " );
@@ -7760,20 +8255,30 @@ 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 ( jQuery.isFunction( value ) ) {
+ if ( isFunction( value ) ) {
return this.each( function( j ) {
jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
} );
}
- if ( typeof value === "string" && value ) {
- classes = value.match( rnothtmlwhite ) || [];
+ classes = classesToArray( value );
+ if ( classes.length ) {
while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem );
cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
@@ -7802,7 +8307,7 @@ jQuery.fn.extend( {
var classes, elem, cur, curValue, clazz, j, finalValue,
i = 0;
- if ( jQuery.isFunction( value ) ) {
+ if ( isFunction( value ) ) {
return this.each( function( j ) {
jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
} );
@@ -7812,9 +8317,9 @@ jQuery.fn.extend( {
return this.attr( "class", "" );
}
- if ( typeof value === "string" && value ) {
- classes = value.match( rnothtmlwhite ) || [];
+ classes = classesToArray( value );
+ if ( classes.length ) {
while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem );
@@ -7844,13 +8349,14 @@ jQuery.fn.extend( {
},
toggleClass: function( value, stateVal ) {
- var type = typeof value;
+ var type = typeof value,
+ isValidValue = type === "string" || Array.isArray( value );
- if ( typeof stateVal === "boolean" && type === "string" ) {
+ if ( typeof stateVal === "boolean" && isValidValue ) {
return stateVal ? this.addClass( value ) : this.removeClass( value );
}
- if ( jQuery.isFunction( value ) ) {
+ if ( isFunction( value ) ) {
return this.each( function( i ) {
jQuery( this ).toggleClass(
value.call( this, i, getClass( this ), stateVal ),
@@ -7862,12 +8368,12 @@ jQuery.fn.extend( {
return this.each( function() {
var className, i, self, classNames;
- if ( type === "string" ) {
+ if ( isValidValue ) {
// Toggle individual class names
i = 0;
self = jQuery( this );
- classNames = value.match( rnothtmlwhite ) || [];
+ classNames = classesToArray( value );
while ( ( className = classNames[ i++ ] ) ) {
@@ -7926,7 +8432,7 @@ var rreturn = /\r/g;
jQuery.fn.extend( {
val: function( value ) {
- var hooks, ret, isFunction,
+ var hooks, ret, valueIsFunction,
elem = this[ 0 ];
if ( !arguments.length ) {
@@ -7955,7 +8461,7 @@ jQuery.fn.extend( {
return;
}
- isFunction = jQuery.isFunction( value );
+ valueIsFunction = isFunction( value );
return this.each( function( i ) {
var val;
@@ -7964,7 +8470,7 @@ jQuery.fn.extend( {
return;
}
- if ( isFunction ) {
+ if ( valueIsFunction ) {
val = value.call( this, i, jQuery( this ).val() );
} else {
val = value;
@@ -8106,18 +8612,24 @@ jQuery.each( [ "radio", "checkbox" ], function() {
// Return jQuery for attributes-only inclusion
-var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
+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,
+ 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 = tmp = elem = elem || document;
+ cur = lastElement = tmp = elem = elem || document;
// Don't do events on text and comment nodes
if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
@@ -8169,7 +8681,7 @@ jQuery.extend( jQuery.event, {
// 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 && !jQuery.isWindow( elem ) ) {
+ if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
bubbleType = special.delegateType || type;
if ( !rfocusMorph.test( bubbleType + type ) ) {
@@ -8189,13 +8701,15 @@ jQuery.extend( jQuery.event, {
// 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" ) || {} )[ event.type ] &&
+ handle = (
+ dataPriv.get( cur, "events" ) || Object.create( null )
+ )[ event.type ] &&
dataPriv.get( cur, "handle" );
if ( handle ) {
handle.apply( cur, data );
@@ -8221,7 +8735,7 @@ jQuery.extend( jQuery.event, {
// 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 && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+ if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
// Don't re-trigger an onFOO event when we call its FOO() method
tmp = elem[ ontype ];
@@ -8232,7 +8746,17 @@ jQuery.extend( jQuery.event, {
// 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 ) {
@@ -8278,31 +8802,6 @@ jQuery.fn.extend( {
} );
-jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
- "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
- "change select submit keydown keypress keyup contextmenu" ).split( " " ),
- function( i, name ) {
-
- // Handle event binding
- jQuery.fn[ name ] = function( data, fn ) {
- return arguments.length > 0 ?
- this.on( name, null, data, fn ) :
- this.trigger( name );
- };
-} );
-
-jQuery.fn.extend( {
- hover: function( fnOver, fnOut ) {
- return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
- }
-} );
-
-
-
-
-support.focusin = "onfocusin" in window;
-
-
// Support: Firefox <=44
// Firefox doesn't have focus(in | out) events
// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
@@ -8321,7 +8820,10 @@ if ( !support.focusin ) {
jQuery.event.special[ fix ] = {
setup: function() {
- var doc = this.ownerDocument || this,
+
+ // 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 ) {
@@ -8330,7 +8832,7 @@ if ( !support.focusin ) {
dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
},
teardown: function() {
- var doc = this.ownerDocument || this,
+ var doc = this.ownerDocument || this.document || this,
attaches = dataPriv.access( doc, fix ) - 1;
if ( !attaches ) {
@@ -8346,7 +8848,7 @@ if ( !support.focusin ) {
}
var location = window.location;
-var nonce = jQuery.now();
+var nonce = { guid: Date.now() };
var rquery = ( /\?/ );
@@ -8404,7 +8906,7 @@ function buildParams( prefix, obj, traditional, add ) {
}
} );
- } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+ } else if ( !traditional && toType( obj ) === "object" ) {
// Serialize object item.
for ( name in obj ) {
@@ -8426,7 +8928,7 @@ jQuery.param = function( a, traditional ) {
add = function( key, valueOrFunction ) {
// If value is a function, invoke it and use its return value
- var value = jQuery.isFunction( valueOrFunction ) ?
+ var value = isFunction( valueOrFunction ) ?
valueOrFunction() :
valueOrFunction;
@@ -8434,6 +8936,10 @@ jQuery.param = function( a, traditional ) {
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 ) ) ) {
@@ -8474,7 +8980,7 @@ jQuery.fn.extend( {
rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
( this.checked || !rcheckableType.test( type ) );
} )
- .map( function( i, elem ) {
+ .map( function( _i, elem ) {
var val = jQuery( this ).val();
if ( val == null ) {
@@ -8544,7 +9050,7 @@ function addToPrefiltersOrTransports( structure ) {
i = 0,
dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
- if ( jQuery.isFunction( func ) ) {
+ if ( isFunction( func ) ) {
// For each dataType in the dataTypeExpression
while ( ( dataType = dataTypes[ i++ ] ) ) {
@@ -8936,12 +9442,14 @@ jQuery.extend( {
if ( !responseHeaders ) {
responseHeaders = {};
while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
- responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
+ responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
+ ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
+ .concat( match[ 2 ] );
}
}
- match = responseHeaders[ key.toLowerCase() ];
+ match = responseHeaders[ key.toLowerCase() + " " ];
}
- return match == null ? null : match;
+ return match == null ? null : match.join( ", " );
},
// Raw string
@@ -9016,7 +9524,7 @@ jQuery.extend( {
if ( s.crossDomain == null ) {
urlAnchor = document.createElement( "a" );
- // Support: IE <=8 - 11, Edge 12 - 13
+ // 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 {
@@ -9074,8 +9582,8 @@ jQuery.extend( {
// Remember the hash so we can put it back
uncached = s.url.slice( cacheURL.length );
- // If data is available, append data to url
- if ( s.data ) {
+ // 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
@@ -9085,7 +9593,8 @@ jQuery.extend( {
// Add or update anti-cache param if needed
if ( s.cache === false ) {
cacheURL = cacheURL.replace( rantiCache, "$1" );
- uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
+ uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
+ uncached;
}
// Put hash and anti-cache on the URL that will be requested (gh-1732)
@@ -9218,6 +9727,11 @@ jQuery.extend( {
response = ajaxHandleResponses( s, jqXHR, responses );
}
+ // Use a noop converter for missing script
+ if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) {
+ s.converters[ "text script" ] = function() {};
+ }
+
// Convert no matter what (that way responseXXX fields are always set)
response = ajaxConvert( s, response, jqXHR, isSuccess );
@@ -9308,11 +9822,11 @@ jQuery.extend( {
}
} );
-jQuery.each( [ "get", "post" ], function( i, method ) {
+jQuery.each( [ "get", "post" ], function( _i, method ) {
jQuery[ method ] = function( url, data, callback, type ) {
// Shift arguments if data argument was omitted
- if ( jQuery.isFunction( data ) ) {
+ if ( isFunction( data ) ) {
type = type || callback;
callback = data;
data = undefined;
@@ -9329,8 +9843,17 @@ jQuery.each( [ "get", "post" ], function( i, method ) {
};
} );
+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 ) {
+jQuery._evalUrl = function( url, options, doc ) {
return jQuery.ajax( {
url: url,
@@ -9340,7 +9863,16 @@ jQuery._evalUrl = function( url ) {
cache: true,
async: false,
global: false,
- "throws": true
+
+ // 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 );
+ }
} );
};
@@ -9350,7 +9882,7 @@ jQuery.fn.extend( {
var wrap;
if ( this[ 0 ] ) {
- if ( jQuery.isFunction( html ) ) {
+ if ( isFunction( html ) ) {
html = html.call( this[ 0 ] );
}
@@ -9376,7 +9908,7 @@ jQuery.fn.extend( {
},
wrapInner: function( html ) {
- if ( jQuery.isFunction( html ) ) {
+ if ( isFunction( html ) ) {
return this.each( function( i ) {
jQuery( this ).wrapInner( html.call( this, i ) );
} );
@@ -9396,10 +9928,10 @@ jQuery.fn.extend( {
},
wrap: function( html ) {
- var isFunction = jQuery.isFunction( html );
+ var htmlIsFunction = isFunction( html );
return this.each( function( i ) {
- jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
+ jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
} );
},
@@ -9491,7 +10023,8 @@ jQuery.ajaxTransport( function( options ) {
return function() {
if ( callback ) {
callback = errorCallback = xhr.onload =
- xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
+ xhr.onerror = xhr.onabort = xhr.ontimeout =
+ xhr.onreadystatechange = null;
if ( type === "abort" ) {
xhr.abort();
@@ -9531,7 +10064,7 @@ jQuery.ajaxTransport( function( options ) {
// Listen to events
xhr.onload = callback();
- errorCallback = xhr.onerror = callback( "error" );
+ errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
// Support: IE 9 only
// Use onreadystatechange to replace onabort
@@ -9622,24 +10155,21 @@ jQuery.ajaxPrefilter( "script", function( s ) {
// Bind script tag hack transport
jQuery.ajaxTransport( "script", function( s ) {
- // This transport only deals with cross domain requests
- if ( s.crossDomain ) {
+ // 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( "<script>" ).prop( {
- charset: s.scriptCharset,
- src: s.url
- } ).on(
- "load error",
- callback = function( evt ) {
+ script = jQuery( "<script>" )
+ .attr( s.scriptAttrs || {} )
+ .prop( { charset: s.scriptCharset, src: s.url } )
+ .on( "load error", callback = function( evt ) {
script.remove();
callback = null;
if ( evt ) {
complete( evt.type === "error" ? 404 : 200, evt.type );
}
- }
- );
+ } );
// Use native DOM manipulation to avoid our domManip AJAX trickery
document.head.appendChild( script[ 0 ] );
@@ -9663,7 +10193,7 @@ var oldCallbacks = [],
jQuery.ajaxSetup( {
jsonp: "callback",
jsonpCallback: function() {
- var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
this[ callback ] = true;
return callback;
}
@@ -9685,7 +10215,7 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
// Get callback name, remembering preexisting value associated with it
- callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
s.jsonpCallback() :
s.jsonpCallback;
@@ -9736,7 +10266,7 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
}
// Call if it was a function and we have a response
- if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ if ( responseContainer && isFunction( overwritten ) ) {
overwritten( responseContainer[ 0 ] );
}
@@ -9828,7 +10358,7 @@ jQuery.fn.load = function( url, params, callback ) {
}
// If it's a function
- if ( jQuery.isFunction( params ) ) {
+ if ( isFunction( params ) ) {
// We assume that it's the callback
callback = params;
@@ -9880,23 +10410,6 @@ jQuery.fn.load = function( url, params, callback ) {
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( [
- "ajaxStart",
- "ajaxStop",
- "ajaxComplete",
- "ajaxError",
- "ajaxSuccess",
- "ajaxSend"
-], function( i, type ) {
- jQuery.fn[ type ] = function( fn ) {
- return this.on( type, fn );
- };
-} );
-
-
-
-
jQuery.expr.pseudos.animated = function( elem ) {
return jQuery.grep( jQuery.timers, function( fn ) {
return elem === fn.elem;
@@ -9936,7 +10449,7 @@ jQuery.offset = {
curLeft = parseFloat( curCSSLeft ) || 0;
}
- if ( jQuery.isFunction( options ) ) {
+ if ( isFunction( options ) ) {
// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
@@ -9953,12 +10466,20 @@ jQuery.offset = {
options.using.call( elem, props );
} else {
+ if ( typeof props.top === "number" ) {
+ props.top += "px";
+ }
+ if ( typeof props.left === "number" ) {
+ props.left += "px";
+ }
curElem.css( props );
}
}
};
jQuery.fn.extend( {
+
+ // offset() relates an element's border box to the document origin
offset: function( options ) {
// Preserve chaining for setter
@@ -9970,7 +10491,7 @@ jQuery.fn.extend( {
} );
}
- var doc, docElem, rect, win,
+ var rect, win,
elem = this[ 0 ];
if ( !elem ) {
@@ -9985,50 +10506,52 @@ jQuery.fn.extend( {
return { top: 0, left: 0 };
}
+ // Get document-relative position by adding viewport scroll to viewport-relative gBCR
rect = elem.getBoundingClientRect();
-
- doc = elem.ownerDocument;
- docElem = doc.documentElement;
- win = doc.defaultView;
-
+ win = elem.ownerDocument.defaultView;
return {
- top: rect.top + win.pageYOffset - docElem.clientTop,
- left: rect.left + win.pageXOffset - docElem.clientLeft
+ top: rect.top + win.pageYOffset,
+ left: rect.left + win.pageXOffset
};
},
+ // position() relates an element's margin box to its offset parent's padding box
+ // This corresponds to the behavior of CSS absolute positioning
position: function() {
if ( !this[ 0 ] ) {
return;
}
- var offsetParent, offset,
+ var offsetParent, offset, doc,
elem = this[ 0 ],
parentOffset = { top: 0, left: 0 };
- // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
- // because it is its only offset parent
+ // position:fixed elements are offset from the viewport, which itself always has zero offset
if ( jQuery.css( elem, "position" ) === "fixed" ) {
- // Assume getBoundingClientRect is there when computed position is fixed
+ // Assume position:fixed implies availability of getBoundingClientRect
offset = elem.getBoundingClientRect();
} else {
+ offset = this.offset();
- // Get *real* offsetParent
- offsetParent = this.offsetParent();
+ // Account for the *real* offset parent, which can be the document or its root element
+ // when a statically positioned element is identified
+ doc = elem.ownerDocument;
+ offsetParent = elem.offsetParent || doc.documentElement;
+ while ( offsetParent &&
+ ( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
+ jQuery.css( offsetParent, "position" ) === "static" ) {
- // Get correct offsets
- offset = this.offset();
- if ( !nodeName( offsetParent[ 0 ], "html" ) ) {
- parentOffset = offsetParent.offset();
+ offsetParent = offsetParent.parentNode;
}
+ if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
- // Add offsetParent borders
- parentOffset = {
- top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
- left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
- };
+ // Incorporate borders into its offset, since they are outside its content origin
+ parentOffset = jQuery( offsetParent ).offset();
+ parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
+ parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
+ }
}
// Subtract parent offsets and element margins
@@ -10070,7 +10593,7 @@ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(
// Coalesce documents and windows
var win;
- if ( jQuery.isWindow( elem ) ) {
+ if ( isWindow( elem ) ) {
win = elem;
} else if ( elem.nodeType === 9 ) {
win = elem.defaultView;
@@ -10099,7 +10622,7 @@ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(
// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
// getComputedStyle returns percent when specified for top/left/bottom/right;
// rather than make the css module depend on the offset module, just check for it here
-jQuery.each( [ "top", "left" ], function( i, prop ) {
+jQuery.each( [ "top", "left" ], function( _i, prop ) {
jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
function( elem, computed ) {
if ( computed ) {
@@ -10128,7 +10651,7 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
return access( this, function( elem, type, value ) {
var doc;
- if ( jQuery.isWindow( elem ) ) {
+ if ( isWindow( elem ) ) {
// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
return funcName.indexOf( "outer" ) === 0 ?
@@ -10162,6 +10685,22 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
} );
+jQuery.each( [
+ "ajaxStart",
+ "ajaxStop",
+ "ajaxComplete",
+ "ajaxError",
+ "ajaxSuccess",
+ "ajaxSend"
+], function( _i, type ) {
+ jQuery.fn[ type ] = function( fn ) {
+ return this.on( type, fn );
+ };
+} );
+
+
+
+
jQuery.fn.extend( {
bind: function( types, data, fn ) {
@@ -10180,9 +10719,64 @@ jQuery.fn.extend( {
return arguments.length === 1 ?
this.off( selector, "**" ) :
this.off( types, selector || "**", fn );
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
}
} );
+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup contextmenu" ).split( " " ),
+ function( _i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+ } );
+
+
+
+
+// Support: Android <=4.0 only
+// Make sure we trim BOM and NBSP
+var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
+
+// Bind a function to a context, optionally partially applying any
+// arguments.
+// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
+// However, it is not slated for removal any time soon
+jQuery.proxy = function( fn, context ) {
+ var tmp, args, proxy;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+};
+
jQuery.holdReady = function( hold ) {
if ( hold ) {
jQuery.readyWait++;
@@ -10193,7 +10787,32 @@ jQuery.holdReady = function( hold ) {
jQuery.isArray = Array.isArray;
jQuery.parseJSON = JSON.parse;
jQuery.nodeName = nodeName;
+jQuery.isFunction = isFunction;
+jQuery.isWindow = isWindow;
+jQuery.camelCase = camelCase;
+jQuery.type = toType;
+
+jQuery.now = Date.now;
+
+jQuery.isNumeric = function( obj ) {
+ // As of jQuery 3.0, isNumeric is limited to
+ // strings and numbers (primitives or objects)
+ // that can be coerced to finite numbers (gh-2662)
+ var type = jQuery.type( obj );
+ return ( type === "number" || type === "string" ) &&
+
+ // parseFloat NaNs numeric-cast false positives ("")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ !isNaN( obj - parseFloat( obj ) );
+};
+
+jQuery.trim = function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+};
@@ -10242,7 +10861,7 @@ jQuery.noConflict = function( deep ) {
// Expose jQuery and $ identifiers, even in AMD
// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (#13566)
-if ( !noGlobal ) {
+if ( typeof noGlobal === "undefined" ) {
window.jQuery = window.$ = jQuery;
}
diff --git a/master/_static/jquery.js b/master/_static/jquery.js
index 644d35e..b061403 100644
--- a/master/_static/jquery.js
+++ b/master/_static/jquery.js
@@ -1,4 +1,2 @@
-/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */
-!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElem [...]
-a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d: [...]
-null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();r [...]
+/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l= [...]
diff --git a/master/_static/language_data.js b/master/_static/language_data.js
index 5266fb1..863704b 100644
--- a/master/_static/language_data.js
+++ b/master/_static/language_data.js
@@ -5,7 +5,7 @@
* This script contains the language-specific data used by searchtools.js,
* namely the list of stopwords, stemmer, scorer and splitter.
*
- * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@@ -13,7 +13,8 @@
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
-/* Non-minified version JS is _stemmer.js if file is provided */
+/* Non-minified version is copied as a separate JS file, is available */
+
/**
* Porter Stemmer
*/
@@ -199,7 +200,6 @@ var Stemmer = function() {
-
var splitChars = (function() {
var result = {};
var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
diff --git a/master/_static/searchtools.js b/master/_static/searchtools.js
index 5ff3180..1a90152 100644
--- a/master/_static/searchtools.js
+++ b/master/_static/searchtools.js
@@ -4,7 +4,7 @@
*
* Sphinx JavaScript utilities for the full-text search.
*
- * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@@ -36,8 +36,10 @@ if (!Scorer) {
// query found in title
title: 15,
+ partialTitle: 7,
// query found in terms
- term: 5
+ term: 5,
+ partialTerm: 2
};
}
@@ -56,6 +58,19 @@ var Search = {
_queued_query : null,
_pulse_status : -1,
+ htmlToText : function(htmlString) {
+ var virtualDocument = document.implementation.createHTMLDocument('virtual');
+ var htmlElement = $(htmlString, virtualDocument);
+ htmlElement.find('.headerlink').remove();
+ docContent = htmlElement.find('[role=main]')[0];
+ if(docContent === undefined) {
+ console.warn("Content block not found. Sphinx search tries to obtain it " +
+ "via '[role=main]'. Could you check your theme or template.");
+ return "";
+ }
+ return docContent.textContent || docContent.innerText;
+ },
+
init : function() {
var params = $.getQueryParameters();
if (params.q) {
@@ -120,7 +135,7 @@ var Search = {
this.out = $('#search-results');
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
this.dots = $('<span></span>').appendTo(this.title);
- this.status = $('<p style="display: none"></p>').appendTo(this.out);
+ this.status = $('<p class="search-summary"> </p>').appendTo(this.out);
this.output = $('<ul class="search"/>').appendTo(this.out);
$('#search-progress').text(_('Preparing search...'));
@@ -151,8 +166,7 @@ var Search = {
objectterms.push(tmp[i].toLowerCase());
}
- if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
- tmp[i] === "") {
+ if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i] === "") {
// skip this "word"
continue;
}
@@ -234,8 +248,10 @@ var Search = {
// results left, load the summary and display it
if (results.length) {
var item = results.pop();
- var listItem = $('<li style="display:none"></li>');
- if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
+ var listItem = $('<li></li>');
+ var requestUrl = "";
+ var linkUrl = "";
+ if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') {
// dirhtml builder
var dirname = item[0] + '/';
if (dirname.match(/\/index\/$/)) {
@@ -243,27 +259,25 @@ var Search = {
} else if (dirname == 'index/') {
dirname = '';
}
- listItem.append($('<a/>').attr('href',
- DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
- highlightstring + item[2]).html(item[1]));
+ requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + dirname;
+ linkUrl = requestUrl;
+
} else {
// normal html builders
- listItem.append($('<a/>').attr('href',
- item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
- highlightstring + item[2]).html(item[1]));
+ requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX;
+ linkUrl = item[0] + DOCUMENTATION_OPTIONS.LINK_SUFFIX;
}
+ listItem.append($('<a/>').attr('href',
+ linkUrl +
+ highlightstring + item[2]).html(item[1]));
if (item[3]) {
listItem.append($('<span> (' + item[3] + ')</span>'));
Search.output.append(listItem);
- listItem.slideDown(5, function() {
+ setTimeout(function() {
displayNextItem();
- });
+ }, 5);
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
- var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
- if (suffix === undefined) {
- suffix = '.txt';
- }
- $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
+ $.ajax({url: requestUrl,
dataType: "text",
complete: function(jqxhr, textstatus) {
var data = jqxhr.responseText;
@@ -271,16 +285,16 @@ var Search = {
listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
}
Search.output.append(listItem);
- listItem.slideDown(5, function() {
+ setTimeout(function() {
displayNextItem();
- });
+ }, 5);
}});
} else {
// no source available, just display title
Search.output.append(listItem);
- listItem.slideDown(5, function() {
+ setTimeout(function() {
displayNextItem();
- });
+ }, 5);
}
}
// search finished, update title and status message
@@ -313,12 +327,13 @@ var Search = {
for (var prefix in objects) {
for (var name in objects[prefix]) {
var fullname = (prefix ? prefix + '.' : '') + name;
- if (fullname.toLowerCase().indexOf(object) > -1) {
+ var fullnameLower = fullname.toLowerCase()
+ if (fullnameLower.indexOf(object) > -1) {
var score = 0;
- var parts = fullname.split('.');
+ var parts = fullnameLower.split('.');
// check for different match types: exact matches of full name or
// "last name" (i.e. last dotted part)
- if (fullname == object || parts[parts.length - 1] == object) {
+ if (fullnameLower == object || parts[parts.length - 1] == object) {
score += Scorer.objNameMatch;
// matches in last name
} else if (parts[parts.length - 1].indexOf(object) > -1) {
@@ -365,6 +380,13 @@ var Search = {
},
/**
+ * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
+ */
+ escapeRegExp : function(string) {
+ return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
+ },
+
+ /**
* search for full-text terms in the index
*/
performTermsSearch : function(searchterms, excluded, terms, titleterms) {
@@ -385,6 +407,20 @@ var Search = {
{files: terms[word], score: Scorer.term},
{files: titleterms[word], score: Scorer.title}
];
+ // add support for partial matches
+ if (word.length > 2) {
+ var word_regex = this.escapeRegExp(word);
+ for (var w in terms) {
+ if (w.match(word_regex) && !terms[word]) {
+ _o.push({files: terms[w], score: Scorer.partialTerm})
+ }
+ }
+ for (var w in titleterms) {
+ if (w.match(word_regex) && !titleterms[word]) {
+ _o.push({files: titleterms[w], score: Scorer.partialTitle})
+ }
+ }
+ }
// no match but word was a required one
if ($u.every(_o, function(o){return o.files === undefined;})) {
@@ -404,7 +440,7 @@ var Search = {
for (j = 0; j < _files.length; j++) {
file = _files[j];
if (!(file in scoreMap))
- scoreMap[file] = {}
+ scoreMap[file] = {};
scoreMap[file][word] = o.score;
}
});
@@ -412,7 +448,7 @@ var Search = {
// create the mapping
for (j = 0; j < files.length; j++) {
file = files[j];
- if (file in fileMap)
+ if (file in fileMap && fileMap[file].indexOf(word) === -1)
fileMap[file].push(word);
else
fileMap[file] = [word];
@@ -424,8 +460,12 @@ var Search = {
var valid = true;
// check if all requirements are matched
- if (fileMap[file].length != searchterms.length)
- continue;
+ var filteredTermCount = // as search terms with length < 3 are discarded: ignore
+ searchterms.filter(function(term){return term.length > 2}).length
+ if (
+ fileMap[file].length != searchterms.length &&
+ fileMap[file].length != filteredTermCount
+ ) continue;
// ensure that none of the excluded terms is in the search result
for (i = 0; i < excluded.length; i++) {
@@ -456,7 +496,8 @@ var Search = {
* words. the first one is used to find the occurrence, the
* latter for highlighting it.
*/
- makeSearchSummary : function(text, keywords, hlwords) {
+ makeSearchSummary : function(htmlText, keywords, hlwords) {
+ var text = Search.htmlToText(htmlText);
var textLower = text.toLowerCase();
var start = 0;
$.each(keywords, function() {
diff --git a/master/_static/underscore-1.12.0.js b/master/_static/underscore-1.12.0.js
new file mode 100644
index 0000000..3af6352
--- /dev/null
+++ b/master/_static/underscore-1.12.0.js
@@ -0,0 +1,2027 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define('underscore', factory) :
+ (global = global || self, (function () {
+ var current = global._;
+ var exports = global._ = factory();
+ exports.noConflict = function () { global._ = current; return exports; };
+ }()));
+}(this, (function () {
+ // Underscore.js 1.12.0
+ // https://underscorejs.org
+ // (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ // Underscore may be freely distributed under the MIT license.
+
+ // Current version.
+ var VERSION = '1.12.0';
+
+ // 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(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(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(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(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 _(obj) {
+ if (obj instanceof _) return obj;
+ if (!(this instanceof _)) return new _(obj);
+ this._wrapped = obj;
+ }
+
+ _.VERSION = VERSION;
+
+ // Extracts the result from a wrapped and chained object.
+ _.prototype.value = function() {
+ return this._wrapped;
+ };
+
+ // Provide unwrapping proxies for some methods used in engine operations
+ // such as arithmetic and JSON stringification.
+ _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;
+
+ _.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 _) a = a._wrapped;
+ if (b instanceof _) 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(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(path) {
+ return isArray(path) ? path : [path];
+ }
+ _.toPath = toPath;
+
+ // Internal wrapper for `_.toPath` to enable minification.
+ // Similar to `cb` for `_.iteratee`.
+ function toPath$1(path) {
+ return _.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$1(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$1(obj, path) {
+ path = toPath$1(path);
+ var length = path.length;
+ for (var i = 0; i < length; i++) {
+ var key = path[i];
+ if (!has(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$1(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);
+ }
+ _.iteratee = iteratee;
+
+ // The function we call internally to generate a callback. It invokes
+ // `_.iteratee` if overridden, otherwise `baseIteratee`.
+ function cb(value, context, argCount) {
+ if (_.iteratee !== iteratee) return _.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 = _.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];
+ }
+
+ // 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, _.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";
+
+ // If a variable is not specified, place data values in local scope.
+ if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
+
+ 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(settings.variable || 'obj', '_', source);
+ } catch (e) {
+ e.source = source;
+ throw e;
+ }
+
+ var template = function(data) {
+ return render.call(this, data, _);
+ };
+
+ // Provide the compiled source as a convenience for precompilation.
+ var argument = settings.variable || 'obj';
+ 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$1(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 = _(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 = _;
+
+ // 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(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(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(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(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);
+
+ // 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$1(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(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(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(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(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$1(array, depth) {
+ return flatten(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(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(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 ? _(obj).chain() : obj;
+ }
+
+ // Add your own custom functions to the Underscore object.
+ function mixin(obj) {
+ each(functions(obj), function(name) {
+ var func = _[name] = obj[name];
+ _.prototype[name] = function() {
+ var args = [this._wrapped];
+ push.apply(args, arguments);
+ return chainResult(this, func.apply(_, args));
+ };
+ });
+ return _;
+ }
+
+ // Add all mutator `Array` functions to the wrapper.
+ each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+ var method = ArrayProto[name];
+ _.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];
+ _.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$1,
+ mapObject: mapObject,
+ identity: identity,
+ constant: constant,
+ noop: noop,
+ toPath: toPath,
+ 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$1,
+ 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': _
+ };
+
+ // Default Export
+
+ // Add all of the Underscore functions to the wrapper object.
+ var _$1 = mixin(allExports);
+ // Legacy Node.js API.
+ _$1._ = _$1;
+
+ return _$1;
+
+})));
+//# sourceMappingURL=underscore.js.map
diff --git a/master/_static/underscore-1.3.1.js b/master/_static/underscore-1.3.1.js
deleted file mode 100644
index 208d4cd..0000000
--- a/master/_static/underscore-1.3.1.js
+++ /dev/null
@@ -1,999 +0,0 @@
-// Underscore.js 1.3.1
-// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the MIT license.
-// Portions of Underscore are inspired or borrowed from Prototype,
-// Oliver Steele's Functional, and John Resig's Micro-Templating.
-// For all details and documentation:
-// http://documentcloud.github.com/underscore
-
-(function() {
-
- // Baseline setup
- // --------------
-
- // Establish the root object, `window` in the browser, or `global` on the server.
- var root = this;
-
- // Save the previous value of the `_` variable.
- var previousUnderscore = root._;
-
- // Establish the object that gets returned to break out of a loop iteration.
- var breaker = {};
-
- // Save bytes in the minified (but not gzipped) version:
- var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
-
- // Create quick reference variables for speed access to core prototypes.
- var slice = ArrayProto.slice,
- unshift = ArrayProto.unshift,
- toString = ObjProto.toString,
- hasOwnProperty = ObjProto.hasOwnProperty;
-
- // All **ECMAScript 5** native function implementations that we hope to use
- // are declared here.
- var
- nativeForEach = ArrayProto.forEach,
- nativeMap = ArrayProto.map,
- nativeReduce = ArrayProto.reduce,
- nativeReduceRight = ArrayProto.reduceRight,
- nativeFilter = ArrayProto.filter,
- nativeEvery = ArrayProto.every,
- nativeSome = ArrayProto.some,
- nativeIndexOf = ArrayProto.indexOf,
- nativeLastIndexOf = ArrayProto.lastIndexOf,
- nativeIsArray = Array.isArray,
- nativeKeys = Object.keys,
- nativeBind = FuncProto.bind;
-
- // Create a safe reference to the Underscore object for use below.
- var _ = function(obj) { return new wrapper(obj); };
-
- // Export the Underscore object for **Node.js**, with
- // backwards-compatibility for the old `require()` API. If we're in
- // the browser, add `_` as a global object via a string identifier,
- // for Closure Compiler "advanced" mode.
- if (typeof exports !== 'undefined') {
- if (typeof module !== 'undefined' && module.exports) {
- exports = module.exports = _;
- }
- exports._ = _;
- } else {
- root['_'] = _;
- }
-
- // Current version.
- _.VERSION = '1.3.1';
-
- // Collection Functions
- // --------------------
-
- // The cornerstone, an `each` implementation, aka `forEach`.
- // Handles objects with the built-in `forEach`, arrays, and raw objects.
- // Delegates to **ECMAScript 5**'s native `forEach` if available.
- var each = _.each = _.forEach = function(obj, iterator, context) {
- if (obj == null) return;
- if (nativeForEach && obj.forEach === nativeForEach) {
- obj.forEach(iterator, context);
- } else if (obj.length === +obj.length) {
- for (var i = 0, l = obj.length; i < l; i++) {
- if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
- }
- } else {
- for (var key in obj) {
- if (_.has(obj, key)) {
- if (iterator.call(context, obj[key], key, obj) === breaker) return;
- }
- }
- }
- };
-
- // Return the results of applying the iterator to each element.
- // Delegates to **ECMAScript 5**'s native `map` if available.
- _.map = _.collect = function(obj, iterator, context) {
- var results = [];
- if (obj == null) return results;
- if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
- each(obj, function(value, index, list) {
- results[results.length] = iterator.call(context, value, index, list);
- });
- if (obj.length === +obj.length) results.length = obj.length;
- return results;
- };
-
- // **Reduce** builds up a single result from a list of values, aka `inject`,
- // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
- _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
- var initial = arguments.length > 2;
- if (obj == null) obj = [];
- if (nativeReduce && obj.reduce === nativeReduce) {
- if (context) iterator = _.bind(iterator, context);
- return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
... 448916 lines suppressed ...