├── .gitattributes ├── .gitignore ├── Library └── ADB │ ├── AdbWinApi.dll │ ├── AdbWinUsbApi.dll │ ├── NOTICE.txt │ ├── adb.exe │ ├── dmtracedump.exe │ ├── etc1tool.exe │ ├── fastboot.exe │ ├── hprof-conv.exe │ ├── libwinpthread-1.dll │ ├── make_f2fs.exe │ ├── make_f2fs_casefold.exe │ ├── mke2fs.conf │ ├── mke2fs.exe │ ├── source.properties │ ├── sqlite3.exe │ └── systrace │ ├── NOTICE │ ├── UPSTREAM_REVISION │ ├── catapult │ ├── common │ │ ├── eslint │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── eslint │ │ │ │ ├── __init__.py │ │ │ │ └── smoke_test.py │ │ │ ├── rules │ │ │ │ └── catapult-camelcase.js │ │ │ └── tests │ │ │ │ └── catapult-camelcase.js │ │ ├── lab │ │ │ ├── commits.py │ │ │ ├── hardware.py │ │ │ └── keychain_unlock.sh │ │ ├── node_runner │ │ │ └── node_runner │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── minify │ │ │ │ ├── minifyjs │ │ │ │ ├── node_binaries.json │ │ │ │ ├── node_util.py │ │ │ │ └── package.json │ │ ├── py_trace_event │ │ │ ├── README.txt │ │ │ ├── py_trace_event │ │ │ │ ├── __init__.py │ │ │ │ ├── setup.py │ │ │ │ ├── trace_event.py │ │ │ │ ├── trace_event_impl │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── decorators.py │ │ │ │ │ ├── decorators_test.py │ │ │ │ │ ├── log.py │ │ │ │ │ ├── log_io_test.py │ │ │ │ │ ├── meta_class.py │ │ │ │ │ ├── multiprocessing_shim.py │ │ │ │ │ ├── parsed_trace_events.py │ │ │ │ │ ├── perfetto_proto_classes.py │ │ │ │ │ ├── perfetto_trace_writer.py │ │ │ │ │ ├── perfetto_trace_writer_unittest.py │ │ │ │ │ └── trace_test.py │ │ │ │ ├── trace_event_unittest.py │ │ │ │ ├── trace_time.py │ │ │ │ └── trace_time_unittest.py │ │ │ └── third_party │ │ │ │ └── protobuf │ │ │ │ ├── README.chromium │ │ │ │ ├── encoder.py │ │ │ │ └── wire_format.py │ │ ├── py_utils │ │ │ ├── PRESUBMIT.py │ │ │ └── py_utils │ │ │ │ ├── __init__.py │ │ │ │ ├── atexit_with_log.py │ │ │ │ ├── binary_manager.py │ │ │ │ ├── binary_manager_unittest.py │ │ │ │ ├── camel_case.py │ │ │ │ ├── camel_case_unittest.py │ │ │ │ ├── chrome_binaries.json │ │ │ │ ├── class_util.py │ │ │ │ ├── class_util_unittest.py │ │ │ │ ├── cloud_storage.py │ │ │ │ ├── cloud_storage_global_lock.py │ │ │ │ ├── cloud_storage_unittest.py │ │ │ │ ├── constants │ │ │ │ ├── __init__.py │ │ │ │ └── exit_codes.py │ │ │ │ ├── contextlib_ext.py │ │ │ │ ├── contextlib_ext_unittest.py │ │ │ │ ├── dependency_util.py │ │ │ │ ├── discover.py │ │ │ │ ├── discover_unittest.py │ │ │ │ ├── exc_util.py │ │ │ │ ├── exc_util_unittest.py │ │ │ │ ├── expectations_parser.py │ │ │ │ ├── expectations_parser_unittest.py │ │ │ │ ├── file_util.py │ │ │ │ ├── file_util_unittest.py │ │ │ │ ├── lock.py │ │ │ │ ├── lock_unittest.py │ │ │ │ ├── logging_util.py │ │ │ │ ├── logging_util_unittest.py │ │ │ │ ├── memory_debug.py │ │ │ │ ├── modules_util.py │ │ │ │ ├── modules_util_unittest.py │ │ │ │ ├── py_utils_unittest.py │ │ │ │ ├── refactor │ │ │ │ ├── __init__.py │ │ │ │ ├── annotated_symbol │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base_symbol.py │ │ │ │ │ ├── class_definition.py │ │ │ │ │ ├── function_definition.py │ │ │ │ │ ├── import_statement.py │ │ │ │ │ └── reference.py │ │ │ │ ├── module.py │ │ │ │ ├── offset_token.py │ │ │ │ └── snippet.py │ │ │ │ ├── refactor_util │ │ │ │ ├── __init__.py │ │ │ │ └── move.py │ │ │ │ ├── retry_util.py │ │ │ │ ├── retry_util_unittest.py │ │ │ │ ├── shell_util.py │ │ │ │ ├── slots_metaclass.py │ │ │ │ ├── slots_metaclass_unittest.py │ │ │ │ ├── tempfile_ext.py │ │ │ │ ├── tempfile_ext_unittest.py │ │ │ │ ├── test_data │ │ │ │ ├── discoverable_classes │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── another_discover_dummyclass.py │ │ │ │ │ ├── discover_dummyclass.py │ │ │ │ │ └── parameter_discover_dummyclass.py │ │ │ │ └── foo.txt │ │ │ │ ├── ts_proxy_server.py │ │ │ │ ├── ts_proxy_server_unittest.py │ │ │ │ ├── webpagereplay_go_server.py │ │ │ │ └── xvfb.py │ │ └── py_vulcanize │ │ │ ├── README.chromium │ │ │ ├── py_vulcanize │ │ │ ├── __init__.py │ │ │ ├── fake_fs.py │ │ │ ├── fake_fs_unittest.py │ │ │ ├── generate.py │ │ │ ├── generate_unittest.py │ │ │ ├── html_generation_controller.py │ │ │ ├── html_module.py │ │ │ ├── html_module_unittest.py │ │ │ ├── js_utils.py │ │ │ ├── js_utils_unittest.py │ │ │ ├── module.py │ │ │ ├── module_unittest.py │ │ │ ├── parse_html_deps.py │ │ │ ├── parse_html_deps_unittest.py │ │ │ ├── project.py │ │ │ ├── resource.py │ │ │ ├── resource_loader.py │ │ │ ├── resource_unittest.py │ │ │ ├── strip_js_comments.py │ │ │ ├── strip_js_comments_unittest.py │ │ │ ├── style_sheet.py │ │ │ └── style_sheet_unittest.py │ │ │ └── third_party │ │ │ ├── rcssmin │ │ │ ├── LICENSE │ │ │ ├── MANIFEST │ │ │ ├── PKG-INFO │ │ │ ├── README.chromium │ │ │ ├── README.rst │ │ │ ├── bench │ │ │ │ ├── LICENSE.cssmin │ │ │ │ ├── __init__.py │ │ │ │ ├── cssmin.py │ │ │ │ ├── main.py │ │ │ │ ├── wikipedia.css │ │ │ │ ├── wikipedia.min.css │ │ │ │ └── write.py │ │ │ ├── docs │ │ │ │ ├── BENCHMARKS │ │ │ │ ├── CHANGES │ │ │ │ ├── CLASSIFIERS │ │ │ │ ├── DESCRIPTION │ │ │ │ ├── PROVIDES │ │ │ │ ├── SUMMARY │ │ │ │ └── apidoc │ │ │ │ │ ├── api-objects.txt │ │ │ │ │ ├── crarr.png │ │ │ │ │ ├── epydoc.css │ │ │ │ │ ├── epydoc.js │ │ │ │ │ ├── help.html │ │ │ │ │ ├── identifier-index.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── module-tree.html │ │ │ │ │ ├── rcssmin-module.html │ │ │ │ │ ├── rcssmin-pysrc.html │ │ │ │ │ └── redirect.html │ │ │ ├── package.cfg │ │ │ ├── rcssmin.c │ │ │ ├── rcssmin.py │ │ │ ├── run_tests.py │ │ │ ├── setup.py │ │ │ └── tests │ │ │ │ ├── main │ │ │ │ ├── atgroup_00.css │ │ │ │ ├── atgroup_01.css │ │ │ │ ├── atgroup_02.css │ │ │ │ ├── atgroup_03.css │ │ │ │ ├── atgroup_04.css │ │ │ │ ├── atgroup_05.css │ │ │ │ ├── atgroup_06.css │ │ │ │ ├── atgroup_07.css │ │ │ │ ├── atgroup_08.css │ │ │ │ ├── atgroup_09.css │ │ │ │ ├── atgroup_10.css │ │ │ │ ├── atgroup_11.css │ │ │ │ ├── comment_00.css │ │ │ │ ├── comment_01.css │ │ │ │ ├── comment_02.css │ │ │ │ ├── comment_03.css │ │ │ │ ├── comment_04.css │ │ │ │ ├── escape_00.css │ │ │ │ ├── escape_01.css │ │ │ │ ├── escape_02.css │ │ │ │ ├── escape_03.css │ │ │ │ ├── escape_04.css │ │ │ │ ├── escape_05.css │ │ │ │ ├── escape_06.css │ │ │ │ ├── first_00.css │ │ │ │ ├── first_01.css │ │ │ │ ├── first_02.css │ │ │ │ ├── url_00.css │ │ │ │ ├── url_01.css │ │ │ │ ├── url_02.css │ │ │ │ ├── url_03.css │ │ │ │ ├── url_04.css │ │ │ │ ├── url_05.css │ │ │ │ ├── url_06.css │ │ │ │ ├── url_07.css │ │ │ │ ├── url_08.css │ │ │ │ └── url_09.css │ │ │ │ └── yui │ │ │ │ ├── README │ │ │ │ ├── background-position.css │ │ │ │ ├── background-position.css.min │ │ │ │ ├── border-none.css │ │ │ │ ├── border-none.css.min │ │ │ │ ├── box-model-hack.css │ │ │ │ ├── box-model-hack.css.min │ │ │ │ ├── bug2527974.css │ │ │ │ ├── bug2527974.css.min │ │ │ │ ├── bug2527991.css │ │ │ │ ├── bug2527991.css.min │ │ │ │ ├── bug2527998.css │ │ │ │ ├── bug2527998.css.min │ │ │ │ ├── bug2528034.css │ │ │ │ ├── bug2528034.css.min │ │ │ │ ├── charset-media.css │ │ │ │ ├── charset-media.css.min │ │ │ │ ├── color-simple.css │ │ │ │ ├── color-simple.css.min │ │ │ │ ├── color.css │ │ │ │ ├── color.css.min │ │ │ │ ├── comment.css │ │ │ │ ├── comment.css.min │ │ │ │ ├── concat-charset.css │ │ │ │ ├── concat-charset.css.min │ │ │ │ ├── dataurl-base64-doublequotes.css │ │ │ │ ├── dataurl-base64-doublequotes.css.min │ │ │ │ ├── dataurl-base64-eof.css │ │ │ │ ├── dataurl-base64-eof.css.min │ │ │ │ ├── dataurl-base64-linebreakindata.css │ │ │ │ ├── dataurl-base64-linebreakindata.css.min │ │ │ │ ├── dataurl-base64-noquotes.css │ │ │ │ ├── dataurl-base64-noquotes.css.min │ │ │ │ ├── dataurl-base64-singlequotes.css │ │ │ │ ├── dataurl-base64-singlequotes.css.min │ │ │ │ ├── dataurl-base64-twourls.css │ │ │ │ ├── dataurl-base64-twourls.css.min │ │ │ │ ├── dataurl-dbquote-font.css │ │ │ │ ├── dataurl-dbquote-font.css.min │ │ │ │ ├── dataurl-nonbase64-doublequotes.css │ │ │ │ ├── dataurl-nonbase64-doublequotes.css.min │ │ │ │ ├── dataurl-nonbase64-noquotes.css │ │ │ │ ├── dataurl-nonbase64-noquotes.css.min │ │ │ │ ├── dataurl-nonbase64-singlequotes.css │ │ │ │ ├── dataurl-nonbase64-singlequotes.css.min │ │ │ │ ├── dataurl-noquote-multiline-font.css │ │ │ │ ├── dataurl-noquote-multiline-font.css.min │ │ │ │ ├── dataurl-realdata-doublequotes.css │ │ │ │ ├── dataurl-realdata-doublequotes.css.min │ │ │ │ ├── dataurl-realdata-noquotes.css │ │ │ │ ├── dataurl-realdata-noquotes.css.min │ │ │ │ ├── dataurl-realdata-singlequotes.css │ │ │ │ ├── dataurl-realdata-singlequotes.css.min │ │ │ │ ├── dataurl-realdata-yuiapp.css │ │ │ │ ├── dataurl-realdata-yuiapp.css.min │ │ │ │ ├── dataurl-singlequote-font.css │ │ │ │ ├── dataurl-singlequote-font.css.min │ │ │ │ ├── decimals.css │ │ │ │ ├── decimals.css.min │ │ │ │ ├── dollar-header.css │ │ │ │ ├── dollar-header.css.min │ │ │ │ ├── font-face.css │ │ │ │ ├── font-face.css.min │ │ │ │ ├── ie5mac.css │ │ │ │ ├── ie5mac.css.min │ │ │ │ ├── media-empty-class.css │ │ │ │ ├── media-empty-class.css.min │ │ │ │ ├── media-multi.css │ │ │ │ ├── media-multi.css.min │ │ │ │ ├── media-test.css │ │ │ │ ├── media-test.css.min │ │ │ │ ├── opacity-filter.css │ │ │ │ ├── opacity-filter.css.min │ │ │ │ ├── preserve-case.css │ │ │ │ ├── preserve-case.css.min │ │ │ │ ├── preserve-new-line.css │ │ │ │ ├── preserve-new-line.css.min │ │ │ │ ├── preserve-strings.css │ │ │ │ ├── preserve-strings.css.min │ │ │ │ ├── pseudo-first.css │ │ │ │ ├── pseudo-first.css.min │ │ │ │ ├── pseudo.css │ │ │ │ ├── pseudo.css.min │ │ │ │ ├── special-comments.css │ │ │ │ ├── special-comments.css.min │ │ │ │ ├── star-underscore-hacks.css │ │ │ │ ├── star-underscore-hacks.css.min │ │ │ │ ├── string-in-comment.css │ │ │ │ ├── string-in-comment.css.min │ │ │ │ ├── webkit-transform.css │ │ │ │ ├── webkit-transform.css.min │ │ │ │ ├── zeros.css │ │ │ │ └── zeros.css.min │ │ │ └── rjsmin │ │ │ ├── LICENSE │ │ │ ├── MANIFEST │ │ │ ├── PKG-INFO │ │ │ ├── README.chromium │ │ │ ├── README.rst │ │ │ ├── bench │ │ │ ├── DateTimeShortcuts.js │ │ │ ├── __init__.py │ │ │ ├── apiviewer.js │ │ │ ├── bootstrap.js │ │ │ ├── jquery-1.7.1.js │ │ │ ├── jsmin.c │ │ │ ├── jsmin.py │ │ │ ├── jsmin_2_0_9.py │ │ │ ├── knockout-2.0.0.js │ │ │ ├── main.py │ │ │ ├── markermanager.js │ │ │ └── write.py │ │ │ ├── docs │ │ │ ├── BENCHMARKS │ │ │ ├── CHANGES │ │ │ ├── CLASSIFIERS │ │ │ ├── DESCRIPTION │ │ │ ├── PROVIDES │ │ │ ├── SUMMARY │ │ │ └── apidoc │ │ │ │ ├── api-objects.txt │ │ │ │ ├── crarr.png │ │ │ │ ├── epydoc.css │ │ │ │ ├── epydoc.js │ │ │ │ ├── help.html │ │ │ │ ├── identifier-index.html │ │ │ │ ├── index.html │ │ │ │ ├── module-tree.html │ │ │ │ ├── redirect.html │ │ │ │ ├── rjsmin-module.html │ │ │ │ └── rjsmin-pysrc.html │ │ │ ├── package.cfg │ │ │ ├── rjsmin.c │ │ │ ├── rjsmin.py │ │ │ └── setup.py │ ├── dependency_manager │ │ ├── PRESUBMIT.py │ │ ├── dependency_manager │ │ │ ├── __init__.py │ │ │ ├── archive_info.py │ │ │ ├── base_config.py │ │ │ ├── base_config_unittest.py │ │ │ ├── cloud_storage_info.py │ │ │ ├── cloud_storage_info_unittest.py │ │ │ ├── dependency_info.py │ │ │ ├── dependency_info_unittest.py │ │ │ ├── dependency_manager_unittest.py │ │ │ ├── dependency_manager_util.py │ │ │ ├── dependency_manager_util_unittest.py │ │ │ ├── exceptions.py │ │ │ ├── local_path_info.py │ │ │ ├── local_path_info_unittest.py │ │ │ ├── manager.py │ │ │ ├── uploader.py │ │ │ └── uploader_unittest.py │ │ └── pylintrc │ ├── devil │ │ ├── BUILD.gn │ │ ├── DIR_METADATA │ │ ├── PRESUBMIT.py │ │ ├── README.md │ │ ├── build │ │ │ └── cipd.yaml │ │ ├── devil │ │ │ ├── __init__.py │ │ │ ├── android │ │ │ │ ├── __init__.py │ │ │ │ ├── apk_helper.py │ │ │ │ ├── apk_helper_test.py │ │ │ │ ├── app_ui.py │ │ │ │ ├── app_ui_test.py │ │ │ │ ├── battery_utils.py │ │ │ │ ├── battery_utils_test.py │ │ │ │ ├── constants │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── chrome.py │ │ │ │ │ ├── file_system.py │ │ │ │ │ └── webapk.py │ │ │ │ ├── cpu_temperature.py │ │ │ │ ├── cpu_temperature_test.py │ │ │ │ ├── crash_handler.py │ │ │ │ ├── crash_handler_devicetest.py │ │ │ │ ├── decorators.py │ │ │ │ ├── decorators_test.py │ │ │ │ ├── device_denylist.py │ │ │ │ ├── device_denylist_test.py │ │ │ │ ├── device_errors.py │ │ │ │ ├── device_errors_test.py │ │ │ │ ├── device_list.py │ │ │ │ ├── device_signal.py │ │ │ │ ├── device_temp_file.py │ │ │ │ ├── device_test_case.py │ │ │ │ ├── device_utils.py │ │ │ │ ├── device_utils_devicetest.py │ │ │ │ ├── device_utils_test.py │ │ │ │ ├── fastboot_utils.py │ │ │ │ ├── fastboot_utils_test.py │ │ │ │ ├── flag_changer.py │ │ │ │ ├── flag_changer_devicetest.py │ │ │ │ ├── flag_changer_test.py │ │ │ │ ├── forwarder.py │ │ │ │ ├── install_commands.py │ │ │ │ ├── logcat_monitor.py │ │ │ │ ├── logcat_monitor_test.py │ │ │ │ ├── md5sum.py │ │ │ │ ├── md5sum_test.py │ │ │ │ ├── ndk │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── abis.py │ │ │ │ ├── perf │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── cache_control.py │ │ │ │ │ ├── perf_control.py │ │ │ │ │ ├── perf_control_devicetest.py │ │ │ │ │ ├── perf_control_test.py │ │ │ │ │ ├── surface_stats_collector.py │ │ │ │ │ ├── surface_stats_collector_test.py │ │ │ │ │ └── thermal_throttle.py │ │ │ │ ├── ports.py │ │ │ │ ├── sdk │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── aapt.py │ │ │ │ │ ├── adb_compatibility_devicetest.py │ │ │ │ │ ├── adb_wrapper.py │ │ │ │ │ ├── adb_wrapper_devicetest.py │ │ │ │ │ ├── adb_wrapper_test.py │ │ │ │ │ ├── build_tools.py │ │ │ │ │ ├── bundletool.py │ │ │ │ │ ├── dexdump.py │ │ │ │ │ ├── fastboot.py │ │ │ │ │ ├── gce_adb_wrapper.py │ │ │ │ │ ├── intent.py │ │ │ │ │ ├── keyevent.py │ │ │ │ │ ├── shared_prefs.py │ │ │ │ │ ├── shared_prefs_test.py │ │ │ │ │ ├── split_select.py │ │ │ │ │ ├── test │ │ │ │ │ │ └── data │ │ │ │ │ │ │ ├── push_directory │ │ │ │ │ │ │ └── push_directory_contents.txt │ │ │ │ │ │ │ └── push_file.txt │ │ │ │ │ └── version_codes.py │ │ │ │ ├── settings.py │ │ │ │ ├── tools │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── adb_run_shell_cmd.py │ │ │ │ │ ├── cpufreq.py │ │ │ │ │ ├── device_monitor.py │ │ │ │ │ ├── device_monitor_test.py │ │ │ │ │ ├── device_recovery.py │ │ │ │ │ ├── device_status.py │ │ │ │ │ ├── flash_device.py │ │ │ │ │ ├── keyboard.py │ │ │ │ │ ├── provision_devices.py │ │ │ │ │ ├── screenshot.py │ │ │ │ │ ├── script_common.py │ │ │ │ │ ├── script_common_test.py │ │ │ │ │ ├── system_app.py │ │ │ │ │ ├── system_app_devicetest.py │ │ │ │ │ ├── system_app_test.py │ │ │ │ │ ├── unlock_bootloader.py │ │ │ │ │ ├── video_recorder.py │ │ │ │ │ ├── wait_for_devices.py │ │ │ │ │ └── webview_app.py │ │ │ │ └── valgrind_tools │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_tool.py │ │ │ ├── base_error.py │ │ │ ├── constants │ │ │ │ ├── __init__.py │ │ │ │ └── exit_codes.py │ │ │ ├── devil_dependencies.json │ │ │ ├── devil_env.py │ │ │ ├── devil_env_test.py │ │ │ └── utils │ │ │ │ ├── __init__.py │ │ │ │ ├── cmd_helper.py │ │ │ │ ├── cmd_helper_test.py │ │ │ │ ├── decorators.py │ │ │ │ ├── decorators_test.py │ │ │ │ ├── file_utils.py │ │ │ │ ├── find_usb_devices.py │ │ │ │ ├── find_usb_devices_test.py │ │ │ │ ├── geometry.py │ │ │ │ ├── geometry_test.py │ │ │ │ ├── host_utils.py │ │ │ │ ├── lazy │ │ │ │ ├── __init__.py │ │ │ │ ├── weak_constant.py │ │ │ │ └── weak_constant_test.py │ │ │ │ ├── logging_common.py │ │ │ │ ├── lsusb.py │ │ │ │ ├── lsusb_test.py │ │ │ │ ├── markdown.py │ │ │ │ ├── markdown_test.py │ │ │ │ ├── mock_calls.py │ │ │ │ ├── mock_calls_test.py │ │ │ │ ├── parallelizer.py │ │ │ │ ├── parallelizer_test.py │ │ │ │ ├── reraiser_thread.py │ │ │ │ ├── reraiser_thread_unittest.py │ │ │ │ ├── reset_usb.py │ │ │ │ ├── run_tests_helper.py │ │ │ │ ├── signal_handler.py │ │ │ │ ├── timeout_retry.py │ │ │ │ ├── timeout_retry_unittest.py │ │ │ │ ├── update_dependencies.py │ │ │ │ ├── usb_hubs.py │ │ │ │ ├── watchdog_timer.py │ │ │ │ ├── zip_utils.py │ │ │ │ └── zip_utils_test.py │ │ ├── docs │ │ │ ├── adb_wrapper.md │ │ │ ├── device_denylist.md │ │ │ ├── device_utils.md │ │ │ ├── markdown.md │ │ │ └── persistent_device_list.md │ │ └── pylintrc │ ├── systrace │ │ ├── PRESUBMIT.py │ │ ├── README.md │ │ ├── atrace_helper │ │ │ ├── README.md │ │ │ └── jni │ │ │ │ ├── Application.mk │ │ │ │ ├── atrace_process_dump.cc │ │ │ │ ├── atrace_process_dump.h │ │ │ │ ├── file_utils.cc │ │ │ │ ├── file_utils.h │ │ │ │ ├── libmemtrack_wrapper.cc │ │ │ │ ├── libmemtrack_wrapper.h │ │ │ │ ├── logging.h │ │ │ │ ├── main.cc │ │ │ │ ├── process_info.h │ │ │ │ ├── process_memory_stats.cc │ │ │ │ ├── process_memory_stats.h │ │ │ │ ├── procfs_utils.cc │ │ │ │ ├── procfs_utils.h │ │ │ │ ├── time_utils.cc │ │ │ │ └── time_utils.h │ │ ├── profile_chrome │ │ │ ├── __init__.py │ │ │ ├── chrome_startup_tracing_agent.py │ │ │ ├── chrome_startup_tracing_agent_unittest.py │ │ │ ├── chrome_tracing_agent.py │ │ │ ├── chrome_tracing_agent_unittest.py │ │ │ ├── ddms_tracing_agent.py │ │ │ ├── ddms_tracing_agent_unittest.py │ │ │ ├── fake_agent_1.py │ │ │ ├── fake_agent_2.py │ │ │ ├── flags.py │ │ │ ├── main.py │ │ │ ├── perf_tracing_agent.py │ │ │ ├── perf_tracing_agent_unittest.py │ │ │ ├── profiler.py │ │ │ ├── profiler_unittest.py │ │ │ ├── run_tests │ │ │ ├── third_party │ │ │ │ ├── COPYING │ │ │ │ ├── README.chromium │ │ │ │ └── perf_to_tracing.py │ │ │ ├── ui.py │ │ │ └── util.py │ │ ├── pylintrc │ │ └── systrace │ │ │ ├── AUTHORS │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── decorators.py │ │ │ ├── monitor_unittest.py │ │ │ ├── output_generator.py │ │ │ ├── output_generator_unittest.py │ │ │ ├── prefix.html.template │ │ │ ├── run_systrace.py │ │ │ ├── suffix.html │ │ │ ├── systrace_runner.py │ │ │ ├── systrace_trace_viewer.html │ │ │ ├── test_data │ │ │ ├── atrace_data │ │ │ ├── atrace_data_raw │ │ │ ├── atrace_data_stripped │ │ │ ├── atrace_extracted_tgids │ │ │ ├── atrace_extracted_threads │ │ │ ├── atrace_fixed_tgids │ │ │ ├── atrace_missing_tgids │ │ │ ├── atrace_procfs_dump │ │ │ ├── cgroup_dump │ │ │ ├── compressed_atrace_data.txt │ │ │ ├── decompressed_atrace_data.txt │ │ │ └── profile-chrome_systrace_perf_chrome_data │ │ │ ├── trace_result.py │ │ │ ├── tracing_agents │ │ │ ├── __init__.py │ │ │ ├── agents_unittest.py │ │ │ ├── android_cgroup_agent.py │ │ │ ├── android_process_data_agent.py │ │ │ ├── atrace_agent.py │ │ │ ├── atrace_agent_unittest.py │ │ │ ├── atrace_from_file_agent.py │ │ │ ├── atrace_from_file_agent_unittest.py │ │ │ ├── atrace_process_dump.py │ │ │ ├── ftrace_agent.py │ │ │ ├── ftrace_agent_unittest.py │ │ │ ├── walt_agent.py │ │ │ └── walt_agent_unittest.py │ │ │ ├── tracing_controller.py │ │ │ ├── update_systrace_trace_viewer.py │ │ │ └── util.py │ ├── third_party │ │ ├── polymer │ │ │ ├── LICENSE.polymer │ │ │ ├── README.chromium │ │ │ ├── bower.json │ │ │ └── components │ │ │ │ ├── app-route │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── app-location.html │ │ │ │ ├── app-route-converter-behavior.html │ │ │ │ ├── app-route-converter.html │ │ │ │ ├── app-route.html │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── data-loading-demo.html │ │ │ │ │ ├── data-loading-demo │ │ │ │ │ │ ├── flickr-image-page.html │ │ │ │ │ │ ├── flickr-search-demo.html │ │ │ │ │ │ └── flickr-search-page.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── simple-demo.html │ │ │ │ │ └── youtube-demo │ │ │ │ │ │ ├── route-info.html │ │ │ │ │ │ ├── search-results.html │ │ │ │ │ │ ├── video-viewer.html │ │ │ │ │ │ ├── youtube-lite.html │ │ │ │ │ │ ├── youtube-search.html │ │ │ │ │ │ └── youtube-toolbar.html │ │ │ │ ├── index.html │ │ │ │ └── test │ │ │ │ │ ├── app-example-1.html │ │ │ │ │ ├── app-location.html │ │ │ │ │ ├── app-route-converter.html │ │ │ │ │ ├── app-route.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── observer-tester.html │ │ │ │ │ ├── redirection.html │ │ │ │ │ ├── test-app-example-1.html │ │ │ │ │ └── test-observer-app.html │ │ │ │ ├── core-tooltip │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── core-tooltip.css │ │ │ │ ├── core-tooltip.html │ │ │ │ ├── demo.html │ │ │ │ ├── index.html │ │ │ │ └── metadata.html │ │ │ │ ├── font-roboto │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── package.json │ │ │ │ └── roboto.html │ │ │ │ ├── google-apis │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── google-apis.html │ │ │ │ ├── google-client-loader.html │ │ │ │ ├── google-js-api.html │ │ │ │ ├── google-legacy-loader.html │ │ │ │ ├── google-maps-api.html │ │ │ │ ├── google-plusone-api.html │ │ │ │ ├── google-realtime-api.html │ │ │ │ ├── google-youtube-api.html │ │ │ │ └── index.html │ │ │ │ ├── google-signin │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── google-icons.html │ │ │ │ ├── google-signin-aware.html │ │ │ │ ├── google-signin-styles.html │ │ │ │ ├── google-signin.html │ │ │ │ └── index.html │ │ │ │ ├── iron-a11y-announcer │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ └── x-announces.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-a11y-announcer.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ └── iron-a11y-announcer.html │ │ │ │ ├── iron-a11y-keys-behavior │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ └── x-key-aware.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-a11y-keys-behavior.html │ │ │ │ └── test │ │ │ │ │ ├── basic-test.html │ │ │ │ │ └── index.html │ │ │ │ ├── iron-ajax │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── iron-ajax.html │ │ │ │ ├── iron-request.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ ├── iron-ajax.html │ │ │ │ │ └── iron-request.html │ │ │ │ ├── iron-autogrow-textarea │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── iron-autogrow-textarea.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ └── index.html │ │ │ │ ├── iron-behaviors │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ └── simple-button.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-button-state.html │ │ │ │ ├── iron-control-state.html │ │ │ │ └── test │ │ │ │ │ ├── active-state.html │ │ │ │ │ ├── disabled-state.html │ │ │ │ │ ├── focused-state.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── test-elements.html │ │ │ │ ├── iron-checked-element-behavior │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ └── simple-checkbox.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-checked-element-behavior.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── simple-checkbox.html │ │ │ │ ├── iron-collapse │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── iron-collapse.html │ │ │ │ └── test │ │ │ │ │ ├── a11y.html │ │ │ │ │ ├── basic.html │ │ │ │ │ ├── flex.html │ │ │ │ │ ├── horizontal.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── nested.html │ │ │ │ ├── iron-dropdown │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── grow-height-animation.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── x-select.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-dropdown-scroll-manager.html │ │ │ │ ├── iron-dropdown.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ ├── iron-dropdown-scroll-manager.html │ │ │ │ │ ├── iron-dropdown.html │ │ │ │ │ └── x-scrollable-element.html │ │ │ │ ├── iron-fit-behavior │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ └── simple-fit.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-fit-behavior.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ ├── iron-fit-behavior.html │ │ │ │ │ └── test-fit.html │ │ │ │ ├── iron-flex-layout │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── GUIDE.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── classes │ │ │ │ │ ├── iron-flex-layout.html │ │ │ │ │ └── iron-shadow-flex-layout.html │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-flex-layout-classes.html │ │ │ │ ├── iron-flex-layout.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ ├── iron-flex-layout-classes.html │ │ │ │ │ └── iron-flex-layout.html │ │ │ │ ├── iron-form-element-behavior │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ ├── simple-element.html │ │ │ │ │ └── simple-form.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-form-element-behavior.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── simple-element.html │ │ │ │ │ └── simple-form.html │ │ │ │ ├── iron-form │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── cats-only.html │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-form.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ └── index.html │ │ │ │ ├── iron-icon │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── async.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── location.png │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── iron-icon.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ └── iron-icon.html │ │ │ │ ├── iron-icons │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── av-icons.html │ │ │ │ ├── bower.json │ │ │ │ ├── communication-icons.html │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── device-icons.html │ │ │ │ ├── editor-icons.html │ │ │ │ ├── hardware-icons.html │ │ │ │ ├── hero.svg │ │ │ │ ├── image-icons.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-icons.html │ │ │ │ ├── maps-icons.html │ │ │ │ ├── notification-icons.html │ │ │ │ ├── places-icons.html │ │ │ │ ├── social-icons.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ └── iron-icons.html │ │ │ │ ├── iron-iconset-svg │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ └── svg-sample-icons.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-iconset-svg.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ └── iron-iconset-svg.html │ │ │ │ ├── iron-image │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ ├── loading.png │ │ │ │ │ └── polymer.svg │ │ │ │ ├── index.html │ │ │ │ ├── iron-image.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ └── iron-image.html │ │ │ │ ├── iron-input │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── iron-input.html │ │ │ │ └── test │ │ │ │ │ ├── disabled-input.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── iron-input.html │ │ │ │ │ └── letters-only.html │ │ │ │ ├── iron-jsonp-library │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ └── iron-jsonp-library.html │ │ │ │ ├── iron-location │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ └── iron-query-params.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-location.html │ │ │ │ ├── iron-query-params.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ ├── initialization-cases.html │ │ │ │ │ ├── initialization-iframe.html │ │ │ │ │ ├── initialization-tests.html │ │ │ │ │ ├── integration.html │ │ │ │ │ ├── iron-location.html │ │ │ │ │ ├── iron-query-params.html │ │ │ │ │ └── redirection.html │ │ │ │ ├── iron-menu-behavior │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ ├── simple-menu.html │ │ │ │ │ └── simple-menubar.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-menu-behavior.html │ │ │ │ ├── iron-menubar-behavior.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ ├── iron-menu-behavior.html │ │ │ │ │ ├── iron-menubar-behavior.html │ │ │ │ │ ├── test-menu.html │ │ │ │ │ ├── test-menubar.html │ │ │ │ │ └── test-nested-menu.html │ │ │ │ ├── iron-meta │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── iron-meta.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── iron-meta.html │ │ │ │ ├── iron-overlay-behavior │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ └── simple-overlay.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-focusables-helper.html │ │ │ │ ├── iron-overlay-backdrop.html │ │ │ │ ├── iron-overlay-behavior.html │ │ │ │ ├── iron-overlay-manager.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ ├── iron-focusables-helper.html │ │ │ │ │ ├── iron-overlay-backdrop.html │ │ │ │ │ ├── iron-overlay-behavior.html │ │ │ │ │ ├── test-buttons-wrapper.html │ │ │ │ │ ├── test-buttons.html │ │ │ │ │ ├── test-menu-button.html │ │ │ │ │ ├── test-overlay.html │ │ │ │ │ └── test-overlay2.html │ │ │ │ ├── iron-pages │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── iron-pages.html │ │ │ │ └── test │ │ │ │ │ ├── attr-for-selected.html │ │ │ │ │ ├── basic.html │ │ │ │ │ └── index.html │ │ │ │ ├── iron-range-behavior │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-range-behavior.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── x-progressbar.html │ │ │ │ ├── iron-resizable-behavior │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ └── src │ │ │ │ │ │ └── x-app.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-resizable-behavior.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── iron-resizable-behavior.html │ │ │ │ │ └── test-elements.html │ │ │ │ ├── iron-selector │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-multi-selectable.html │ │ │ │ ├── iron-selectable.html │ │ │ │ ├── iron-selection.html │ │ │ │ ├── iron-selector.html │ │ │ │ └── test │ │ │ │ │ ├── activate-event.html │ │ │ │ │ ├── attr-for-selected-elements.html │ │ │ │ │ ├── attr-for-selected.html │ │ │ │ │ ├── basic.html │ │ │ │ │ ├── content-element.html │ │ │ │ │ ├── content.html │ │ │ │ │ ├── excluded-local-names.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── multi.html │ │ │ │ │ ├── next-previous.html │ │ │ │ │ ├── numeric-ids.html │ │ │ │ │ ├── selected-attribute.html │ │ │ │ │ └── template-repeat.html │ │ │ │ ├── iron-validatable-behavior │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── cats-only.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── validatable-input.html │ │ │ │ ├── index.html │ │ │ │ ├── iron-validatable-behavior.html │ │ │ │ └── test │ │ │ │ │ ├── cats-only.html │ │ │ │ │ ├── dogs-only.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── iron-validatable-behavior.html │ │ │ │ │ └── test-validatable.html │ │ │ │ ├── neon-animation │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── animations │ │ │ │ │ ├── cascaded-animation.html │ │ │ │ │ ├── fade-in-animation.html │ │ │ │ │ ├── fade-out-animation.html │ │ │ │ │ ├── hero-animation.html │ │ │ │ │ ├── opaque-animation.html │ │ │ │ │ ├── reverse-ripple-animation.html │ │ │ │ │ ├── ripple-animation.html │ │ │ │ │ ├── scale-down-animation.html │ │ │ │ │ ├── scale-up-animation.html │ │ │ │ │ ├── slide-down-animation.html │ │ │ │ │ ├── slide-from-bottom-animation.html │ │ │ │ │ ├── slide-from-left-animation.html │ │ │ │ │ ├── slide-from-right-animation.html │ │ │ │ │ ├── slide-from-top-animation.html │ │ │ │ │ ├── slide-left-animation.html │ │ │ │ │ ├── slide-right-animation.html │ │ │ │ │ ├── slide-up-animation.html │ │ │ │ │ └── transform-animation.html │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── card │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── x-card.html │ │ │ │ │ │ └── x-cards-list.html │ │ │ │ │ ├── declarative │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── doc │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── my-animatable.html │ │ │ │ │ │ └── my-dialog.html │ │ │ │ │ ├── dropdown │ │ │ │ │ │ ├── animated-dropdown.html │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── grid │ │ │ │ │ │ ├── animated-grid.html │ │ │ │ │ │ ├── fullsize-page-with-card.html │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── list │ │ │ │ │ │ ├── full-view.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── list-demo.html │ │ │ │ │ │ └── list-view.html │ │ │ │ │ ├── load │ │ │ │ │ │ ├── animated-grid.html │ │ │ │ │ │ ├── full-page.html │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── reprojection │ │ │ │ │ │ ├── animated-grid.html │ │ │ │ │ │ ├── fullsize-page-with-card.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── reprojected-pages.html │ │ │ │ │ ├── shared-styles.html │ │ │ │ │ └── tiles │ │ │ │ │ │ ├── circles-page.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── squares-page.html │ │ │ │ ├── guides │ │ │ │ │ └── neon-animation.md │ │ │ │ ├── index.html │ │ │ │ ├── neon-animatable-behavior.html │ │ │ │ ├── neon-animatable.html │ │ │ │ ├── neon-animated-pages.html │ │ │ │ ├── neon-animation-behavior.html │ │ │ │ ├── neon-animation-runner-behavior.html │ │ │ │ ├── neon-animation.html │ │ │ │ ├── neon-animations.html │ │ │ │ ├── neon-shared-element-animatable-behavior.html │ │ │ │ ├── neon-shared-element-animation-behavior.html │ │ │ │ ├── test │ │ │ │ │ ├── index.html │ │ │ │ │ ├── neon-animated-pages-descendant-selection.html │ │ │ │ │ ├── neon-animated-pages-lazy.html │ │ │ │ │ ├── neon-animated-pages.html │ │ │ │ │ └── test-resizable-pages.html │ │ │ │ └── web-animations.html │ │ │ │ ├── paper-behaviors │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ ├── paper-button.html │ │ │ │ │ └── paper-radio-button.html │ │ │ │ ├── index.html │ │ │ │ ├── paper-button-behavior.html │ │ │ │ ├── paper-checked-element-behavior.html │ │ │ │ ├── paper-inky-focus-behavior.html │ │ │ │ ├── paper-ripple-behavior.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ ├── paper-button-behavior.html │ │ │ │ │ ├── paper-checked-element-behavior.html │ │ │ │ │ ├── paper-radio-button-behavior.html │ │ │ │ │ ├── paper-ripple-behavior.html │ │ │ │ │ ├── shadowed-ripple.html │ │ │ │ │ ├── test-button.html │ │ │ │ │ └── test-radio-button.html │ │ │ │ ├── paper-button │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── package.json │ │ │ │ ├── paper-button.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ └── paper-button.html │ │ │ │ ├── paper-card │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── cafe.png │ │ │ │ │ ├── donuts.png │ │ │ │ │ ├── house.png │ │ │ │ │ ├── index.html │ │ │ │ │ ├── travel.png │ │ │ │ │ └── trip.png │ │ │ │ ├── index.html │ │ │ │ ├── paper-card.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ └── index.html │ │ │ │ ├── paper-checkbox │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── paper-checkbox.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ └── index.html │ │ │ │ ├── paper-dialog-behavior │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ └── simple-dialog.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── paper-dialog-behavior.html │ │ │ │ ├── paper-dialog-common.css │ │ │ │ ├── paper-dialog-shared-styles.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ ├── paper-dialog-behavior.html │ │ │ │ │ ├── test-buttons.html │ │ │ │ │ └── test-dialog.html │ │ │ │ ├── paper-dialog │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── paper-dialog.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ └── paper-dialog.html │ │ │ │ ├── paper-dropdown-menu │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── paper-dropdown-menu-icons.html │ │ │ │ ├── paper-dropdown-menu-light.html │ │ │ │ ├── paper-dropdown-menu-shared-styles.html │ │ │ │ ├── paper-dropdown-menu.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ ├── paper-dropdown-menu-light.html │ │ │ │ │ └── paper-dropdown-menu.html │ │ │ │ ├── paper-fab │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── paper-fab.html │ │ │ │ └── test │ │ │ │ │ ├── a11y.html │ │ │ │ │ ├── basic.html │ │ │ │ │ └── index.html │ │ │ │ ├── paper-icon-button │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ └── paper-icon-button-light.html │ │ │ │ ├── index.html │ │ │ │ ├── paper-icon-button-light.html │ │ │ │ ├── paper-icon-button.html │ │ │ │ └── test │ │ │ │ │ ├── a11y.html │ │ │ │ │ ├── basic.html │ │ │ │ │ └── index.html │ │ │ │ ├── paper-input │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── all-imports.html │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ ├── ssn-input.html │ │ │ │ │ └── ssn-validator.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── paper-input-addon-behavior.html │ │ │ │ ├── paper-input-behavior.html │ │ │ │ ├── paper-input-char-counter.html │ │ │ │ ├── paper-input-container.html │ │ │ │ ├── paper-input-error.html │ │ │ │ ├── paper-input.html │ │ │ │ ├── paper-textarea.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ ├── letters-only.html │ │ │ │ │ ├── paper-input-char-counter.html │ │ │ │ │ ├── paper-input-container.html │ │ │ │ │ ├── paper-input-error.html │ │ │ │ │ ├── paper-input.html │ │ │ │ │ └── paper-textarea.html │ │ │ │ ├── paper-item │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── all-imports.html │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── paper-icon-item.html │ │ │ │ ├── paper-item-behavior.html │ │ │ │ ├── paper-item-body.html │ │ │ │ ├── paper-item-shared-styles.html │ │ │ │ ├── paper-item.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ └── paper-item.html │ │ │ │ ├── paper-listbox │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── paper-listbox.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ └── paper-listbox.html │ │ │ │ ├── paper-material │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── paper-material-shared-styles.html │ │ │ │ ├── paper-material.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ └── paper-material.html │ │ │ │ ├── paper-menu-button │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── paper-menu-button-animations.html │ │ │ │ ├── paper-menu-button.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ └── paper-menu-button.html │ │ │ │ ├── paper-menu │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── paper-menu-shared-styles.html │ │ │ │ ├── paper-menu.html │ │ │ │ ├── paper-submenu.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ ├── paper-menu.html │ │ │ │ │ └── paper-submenu.html │ │ │ │ ├── paper-progress │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── paper-progress.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ └── index.html │ │ │ │ ├── paper-radio-button │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── paper-radio-button.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ └── index.html │ │ │ │ ├── paper-radio-group │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── paper-radio-group.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ └── index.html │ │ │ │ ├── paper-ripple │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── paper-ripple.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ └── paper-ripple.html │ │ │ │ ├── paper-spinner │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── paper-spinner-behavior.html │ │ │ │ ├── paper-spinner-lite.html │ │ │ │ ├── paper-spinner-styles.html │ │ │ │ ├── paper-spinner.html │ │ │ │ └── test │ │ │ │ │ ├── index.html │ │ │ │ │ └── paper-spinner.html │ │ │ │ ├── paper-styles │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── classes │ │ │ │ │ ├── global.html │ │ │ │ │ ├── shadow-layout.html │ │ │ │ │ ├── shadow.html │ │ │ │ │ └── typography.html │ │ │ │ ├── color.html │ │ │ │ ├── default-theme.html │ │ │ │ ├── demo-pages.html │ │ │ │ ├── demo.css │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── element-styles │ │ │ │ │ ├── paper-item-styles.html │ │ │ │ │ └── paper-material-styles.html │ │ │ │ ├── index.html │ │ │ │ ├── paper-styles-classes.html │ │ │ │ ├── paper-styles.html │ │ │ │ ├── shadow.html │ │ │ │ └── typography.html │ │ │ │ ├── paper-tabs │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── paper-tab.html │ │ │ │ ├── paper-tabs-icons.html │ │ │ │ ├── paper-tabs.html │ │ │ │ └── test │ │ │ │ │ ├── attr-for-selected.html │ │ │ │ │ ├── basic.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── links.html │ │ │ │ ├── paper-toast │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ └── index.html │ │ │ │ ├── hero.svg │ │ │ │ ├── index.html │ │ │ │ ├── paper-toast.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ └── index.html │ │ │ │ ├── paper-tooltip │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── demo │ │ │ │ │ ├── index.html │ │ │ │ │ └── test-button.html │ │ │ │ ├── index.html │ │ │ │ ├── paper-tooltip.html │ │ │ │ └── test │ │ │ │ │ ├── basic.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── test-button.html │ │ │ │ │ └── test-icon.html │ │ │ │ ├── polymer │ │ │ │ ├── LICENSE.txt │ │ │ │ ├── bower.json │ │ │ │ ├── polymer-micro.html │ │ │ │ ├── polymer-mini.html │ │ │ │ └── polymer.html │ │ │ │ ├── promise-polyfill │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── Gruntfile.js │ │ │ │ ├── LICENSE │ │ │ │ ├── Promise-Statics.js │ │ │ │ ├── Promise.js │ │ │ │ ├── Promise.min.js │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── package.json │ │ │ │ ├── promise-polyfill-lite.html │ │ │ │ └── promise-polyfill.html │ │ │ │ ├── shadycss │ │ │ │ ├── LICENSE.md │ │ │ │ ├── README.md │ │ │ │ ├── apply-shim.html │ │ │ │ ├── apply-shim.min.js │ │ │ │ ├── custom-style-interface.html │ │ │ │ ├── custom-style-interface.min.js │ │ │ │ ├── entrypoints │ │ │ │ │ ├── apply-shim.js │ │ │ │ │ ├── custom-style-interface.js │ │ │ │ │ └── scoping-shim.js │ │ │ │ ├── examples │ │ │ │ │ ├── custom-style-element.js │ │ │ │ │ └── document-style-lib.js │ │ │ │ ├── externs │ │ │ │ │ └── shadycss-externs.js │ │ │ │ ├── gulpfile.js │ │ │ │ ├── package.json │ │ │ │ ├── scoping-shim.min.js │ │ │ │ ├── src │ │ │ │ │ ├── apply-shim-utils.js │ │ │ │ │ ├── apply-shim.js │ │ │ │ │ ├── common-regex.js │ │ │ │ │ ├── common-utils.js │ │ │ │ │ ├── css-parse.js │ │ │ │ │ ├── custom-style-interface.js │ │ │ │ │ ├── document-wait.js │ │ │ │ │ ├── document-watcher.js │ │ │ │ │ ├── scoping-shim.js │ │ │ │ │ ├── style-cache.js │ │ │ │ │ ├── style-info.js │ │ │ │ │ ├── style-placeholder.js │ │ │ │ │ ├── style-properties.js │ │ │ │ │ ├── style-settings.js │ │ │ │ │ ├── style-transformer.js │ │ │ │ │ ├── style-util.js │ │ │ │ │ ├── template-map.js │ │ │ │ │ └── unscoped-style-handler.js │ │ │ │ ├── tests │ │ │ │ │ ├── apply-shim.html │ │ │ │ │ ├── async-loading.html │ │ │ │ │ ├── chrome-devtools.html │ │ │ │ │ ├── complicated-mixin-ordering.html │ │ │ │ │ ├── css-parse.html │ │ │ │ │ ├── custom-style-import.html │ │ │ │ │ ├── custom-style-late.html │ │ │ │ │ ├── custom-style-only.html │ │ │ │ │ ├── custom-style.html │ │ │ │ │ ├── deferred-apply.html │ │ │ │ │ ├── dynamic-scoping.html │ │ │ │ │ ├── html-imports │ │ │ │ │ │ └── custom-style-import.html │ │ │ │ │ ├── lazy-init.html │ │ │ │ │ ├── media-query.html │ │ │ │ │ ├── mixin-fallbacks.html │ │ │ │ │ ├── mixin-ordering.html │ │ │ │ │ ├── module │ │ │ │ │ │ ├── css-parse.js │ │ │ │ │ │ ├── custom-style-element.js │ │ │ │ │ │ ├── make-element.js │ │ │ │ │ │ ├── style-cache.js │ │ │ │ │ │ ├── style-info.js │ │ │ │ │ │ ├── style-placeholder.js │ │ │ │ │ │ ├── style-properties.js │ │ │ │ │ │ ├── style-settings.js │ │ │ │ │ │ ├── style-transformer.js │ │ │ │ │ │ ├── style-util.js │ │ │ │ │ │ └── svg-in-shadow.js │ │ │ │ │ ├── no-applyshim │ │ │ │ │ │ ├── custom-style-late.html │ │ │ │ │ │ ├── custom-style-only.html │ │ │ │ │ │ └── custom-style.html │ │ │ │ │ ├── no-scopingshim │ │ │ │ │ │ ├── apply-shim.html │ │ │ │ │ │ ├── complicated-mixin-ordering.html │ │ │ │ │ │ ├── custom-style-late.html │ │ │ │ │ │ ├── custom-style-only.html │ │ │ │ │ │ ├── custom-style.html │ │ │ │ │ │ └── mixin-ordering.html │ │ │ │ │ ├── ordering.html │ │ │ │ │ ├── placeholder-ordering.html │ │ │ │ │ ├── runner.html │ │ │ │ │ ├── scoping-api.html │ │ │ │ │ ├── scoping.html │ │ │ │ │ ├── settings.html │ │ │ │ │ ├── style-transformer.html │ │ │ │ │ ├── svg.html │ │ │ │ │ ├── test-flags.js │ │ │ │ │ ├── wc-1.html │ │ │ │ │ └── workarounds.html │ │ │ │ └── wct.conf.json │ │ │ │ ├── web-animations-js │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── COPYING │ │ │ │ ├── History.md │ │ │ │ ├── README.md │ │ │ │ ├── bower.json │ │ │ │ ├── docs │ │ │ │ │ ├── examples.md │ │ │ │ │ ├── experimental.md │ │ │ │ │ └── support.md │ │ │ │ ├── externs │ │ │ │ │ ├── README.md │ │ │ │ │ ├── web-animations-next.js │ │ │ │ │ └── web-animations.js │ │ │ │ ├── src │ │ │ │ │ ├── animation.js │ │ │ │ │ ├── apply-preserving-inline-style.js │ │ │ │ │ ├── apply.js │ │ │ │ │ ├── box-handler.js │ │ │ │ │ ├── color-handler.js │ │ │ │ │ ├── deprecation.js │ │ │ │ │ ├── dev.js │ │ │ │ │ ├── dimension-handler.js │ │ │ │ │ ├── effect-callback.js │ │ │ │ │ ├── element-animatable.js │ │ │ │ │ ├── font-weight-handler.js │ │ │ │ │ ├── group-constructors.js │ │ │ │ │ ├── handler-utils.js │ │ │ │ │ ├── interpolation.js │ │ │ │ │ ├── keyframe-effect-constructor.js │ │ │ │ │ ├── keyframe-effect.js │ │ │ │ │ ├── keyframe-interpolations.js │ │ │ │ │ ├── matrix-decomposition.js │ │ │ │ │ ├── matrix-interpolation.js │ │ │ │ │ ├── normalize-keyframes.js │ │ │ │ │ ├── number-handler.js │ │ │ │ │ ├── position-handler.js │ │ │ │ │ ├── property-interpolation.js │ │ │ │ │ ├── property-names.js │ │ │ │ │ ├── scope.js │ │ │ │ │ ├── shadow-handler.js │ │ │ │ │ ├── shape-handler.js │ │ │ │ │ ├── tick.js │ │ │ │ │ ├── timeline.js │ │ │ │ │ ├── timing-utilities.js │ │ │ │ │ ├── transform-handler.js │ │ │ │ │ ├── visibility-handler.js │ │ │ │ │ ├── web-animations-bonus-cancel-events.js │ │ │ │ │ ├── web-animations-bonus-object-form-keyframes.js │ │ │ │ │ └── web-animations-next-animation.js │ │ │ │ ├── web-animations-next-lite.min.html │ │ │ │ ├── web-animations-next-lite.min.js │ │ │ │ ├── web-animations-next.min.html │ │ │ │ ├── web-animations-next.min.js │ │ │ │ ├── web-animations.html │ │ │ │ ├── web-animations.min.html │ │ │ │ └── web-animations.min.js │ │ │ │ └── webcomponentsjs │ │ │ │ ├── CustomElements.js │ │ │ │ ├── CustomElements.min.js │ │ │ │ ├── HTMLImports.js │ │ │ │ ├── HTMLImports.min.js │ │ │ │ ├── MutationObserver.js │ │ │ │ ├── MutationObserver.min.js │ │ │ │ ├── README.md │ │ │ │ ├── ShadowDOM.js │ │ │ │ ├── ShadowDOM.min.js │ │ │ │ ├── bower.json │ │ │ │ ├── package.json │ │ │ │ ├── webcomponents-lite.js │ │ │ │ ├── webcomponents-lite.min.js │ │ │ │ ├── webcomponents.js │ │ │ │ └── webcomponents.min.js │ │ └── pyserial │ │ │ ├── LICENSE.txt │ │ │ ├── README.chromium │ │ │ ├── linux-product_info.patch │ │ │ └── serial │ │ │ ├── __init__.py │ │ │ ├── rfc2217.py │ │ │ ├── serialcli.py │ │ │ ├── serialjava.py │ │ │ ├── serialposix.py │ │ │ ├── serialutil.py │ │ │ ├── serialwin32.py │ │ │ ├── sermsdos.py │ │ │ ├── tools │ │ │ ├── __init__.py │ │ │ ├── list_ports.py │ │ │ ├── list_ports_linux.py │ │ │ ├── list_ports_osx.py │ │ │ ├── list_ports_posix.py │ │ │ ├── list_ports_windows.py │ │ │ └── miniterm.py │ │ │ ├── urlhandler │ │ │ ├── __init__.py │ │ │ ├── protocol_hwgrep.py │ │ │ ├── protocol_loop.py │ │ │ ├── protocol_rfc2217.py │ │ │ └── protocol_socket.py │ │ │ └── win32.py │ └── tracing │ │ ├── tracing │ │ ├── __init__.py │ │ └── trace_data │ │ │ ├── __init__.py │ │ │ ├── trace_data.py │ │ │ └── trace_data_unittest.py │ │ └── tracing_project.py │ └── systrace.py ├── README.md ├── StarSharksTool.sln ├── StarSharksTool ├── ADBLogin.Designer.cs ├── ADBLogin.cs ├── ADBLogin.resx ├── AccountControl.Designer.cs ├── AccountControl.cs ├── AccountControl.resx ├── AccountManagement.Designer.cs ├── AccountManagement.cs ├── AccountManagement.resx ├── AddAccount.Designer.cs ├── AddAccount.cs ├── AddAccount.resx ├── BatchRentPage.Designer.cs ├── BatchRentPage.cs ├── BatchRentPage.resx ├── BlackListListenerForm.Designer.cs ├── BlackListListenerForm.cs ├── BlackListListenerForm.resx ├── Contracts │ ├── ERC20Contract.cs │ └── ERC721Contract.cs ├── Enums │ ├── SharkStatus.cs │ └── SharkType.cs ├── Exceptions │ └── BusinessException.cs ├── Extensions │ ├── AESHelper.cs │ ├── ImangExtension.cs │ ├── MD5Helper.cs │ ├── QRCode.cs │ └── StreamExtension.cs ├── Global.cs ├── Main.Designer.cs ├── Main.cs ├── Main.resx ├── ManualRentShark.Designer.cs ├── ManualRentShark.cs ├── ManualRentShark.resx ├── Models │ ├── AccountInfo.cs │ ├── AppSettings.cs │ ├── BuyModels │ │ └── MarketBuyResponseModel.cs │ ├── FuckStarsharkModels │ │ └── HistoryResponseModel.cs │ ├── JSONRPCModels │ │ ├── JSONRPCResponseModel.cs │ │ ├── LogModel.cs │ │ └── RequestModel.cs │ ├── Model.cs │ ├── RentModels │ │ ├── MarketRentRequestModel.cs │ │ ├── MarketRentResponseModel.cs │ │ ├── RentLock.cs │ │ └── RentModel.cs │ ├── SharkDetailModels │ │ └── SharkDetailModel.cs │ ├── TransferEventArgs.cs │ ├── TransferRecord.cs │ └── WithdrawModels │ │ └── WithdrawResponseModel.cs ├── Program.cs ├── Refactor │ └── Models │ │ ├── StarsharkAccount.cs │ │ └── User.cs ├── RentCenter.Designer.cs ├── RentCenter.cs ├── RentCenter.resx ├── RentPage.Designer.cs ├── RentPage.cs ├── RentPage.resx ├── Services │ └── Service.cs ├── SharkInfoUC.Designer.cs ├── SharkInfoUC.cs ├── SharkInfoUC.resx ├── SharkManagement.Designer.cs ├── SharkManagement.cs ├── SharkManagement.resx ├── StarSharksTool.csproj ├── TokenSender.Designer.cs ├── TokenSender.cs ├── TokenSender.resx ├── favicon.ico └── sss.png ├── sss.png ├── wechatgroup.png └── wechatgroup1.png /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | # https://www.davidlaing.com/2012/09/19/customise-your-gitattributes-to-become-a-git-ninja/ 3 | * text=auto 4 | 5 | *.cs text diff=csharp -------------------------------------------------------------------------------- /Library/ADB/AdbWinApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/AdbWinApi.dll -------------------------------------------------------------------------------- /Library/ADB/AdbWinUsbApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/AdbWinUsbApi.dll -------------------------------------------------------------------------------- /Library/ADB/adb.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/adb.exe -------------------------------------------------------------------------------- /Library/ADB/dmtracedump.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/dmtracedump.exe -------------------------------------------------------------------------------- /Library/ADB/etc1tool.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/etc1tool.exe -------------------------------------------------------------------------------- /Library/ADB/fastboot.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/fastboot.exe -------------------------------------------------------------------------------- /Library/ADB/hprof-conv.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/hprof-conv.exe -------------------------------------------------------------------------------- /Library/ADB/libwinpthread-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/libwinpthread-1.dll -------------------------------------------------------------------------------- /Library/ADB/make_f2fs.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/make_f2fs.exe -------------------------------------------------------------------------------- /Library/ADB/make_f2fs_casefold.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/make_f2fs_casefold.exe -------------------------------------------------------------------------------- /Library/ADB/mke2fs.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/mke2fs.exe -------------------------------------------------------------------------------- /Library/ADB/source.properties: -------------------------------------------------------------------------------- 1 | Pkg.UserSrc=false 2 | Pkg.Revision=32.0.0 -------------------------------------------------------------------------------- /Library/ADB/sqlite3.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/sqlite3.exe -------------------------------------------------------------------------------- /Library/ADB/systrace/UPSTREAM_REVISION: -------------------------------------------------------------------------------- 1 | ab9d330fe2a32f84b4b5fe141958c0a0a857c5c9 2 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/eslint/README.md: -------------------------------------------------------------------------------- 1 | This directory contains the Catapult eslint config, custom Catapult eslint rules, 2 | and tests for those rules. 3 | 4 | Some of our custom rules are modified versions of those included with eslint, as 5 | suggested in https://goo.gl/uAxFHq. 6 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/lab/keychain_unlock.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright 2016 The Chromium Authors. All rights reserved. 3 | # Use of this source code is governed by a BSD-style license that can be 4 | # found in the LICENSE file. 5 | # 6 | # Script to SSH into a list of bots and set up their keychains for Telemetry. 7 | # https://www.chromium.org/developers/telemetry/telemetry-mac-keychain-setup 8 | 9 | for hostname in "$@" 10 | do 11 | ssh -t "$hostname" 'security unlock-keychain login.keychain 12 | security delete-generic-password -s "Chrome Safe Storage" login.keychain 13 | security add-generic-password -a Chrome -w "+NTclOvR4wLMgRlLIL9bHQ==" \ 14 | -s "Chrome Safe Storage" -A login.keychain' 15 | done 16 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/node_runner/node_runner/README.md: -------------------------------------------------------------------------------- 1 | Update binaries: 2 | 3 | 1. Download archives pre-compiled binaries. 4 | 2. Unzip archives. 5 | 3. Re-zip just the binary: 6 | `zip new.zip node-v10.14.1-linux-x64/bin/node` 7 | 4. Use the update script: 8 | `./dependency_manager/bin/update --config 9 | common/node_runner/node_runner/node_binaries.json --dependency node --path 10 | new.zip --platform linux_x86_64` 11 | 5. Mail out the automated change to `node_binaries.json` for review and CQ. 12 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/node_runner/node_runner/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/node_runner/node_runner/minifyjs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict'; 3 | /* 4 | Copyright 2019 The Chromium Authors. All rights reserved. 5 | Use of this source code is governed by a BSD-style license that can be 6 | found in the LICENSE file. 7 | 8 | This script strips whitespace and comments from Javascript. 9 | */ 10 | const escodegen = require('escodegen'); 11 | const espree = require('espree'); 12 | const fs = require('fs'); 13 | const nopt = require('nopt'); 14 | 15 | const args = nopt(); 16 | const filename = args.argv.remain[0]; 17 | 18 | let text = fs.readFileSync(filename).toString('utf8'); 19 | const ast = espree.parse(text, {ecmaVersion: 2018}); 20 | text = escodegen.generate(ast, {format: {indent: {style: ''}}}); 21 | fs.writeFileSync(filename, text); 22 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_trace_event/README.txt: -------------------------------------------------------------------------------- 1 | py_trace_event allows low-overhead instrumentation of a multi-threaded, 2 | multi-process application in order to study its global performance 3 | characteristics. It uses the trace event format used in Chromium/Chrome's 4 | about:tracing system. 5 | 6 | Trace files generated by py_trace_event can be viewed and manipulated by 7 | trace_event_viewer. 8 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_trace_event/py_trace_event/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | import os 5 | import sys 6 | 7 | SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__)) 8 | PY_UTILS = os.path.abspath(os.path.join(SCRIPT_DIR, '..', '..', 'py_utils')) 9 | PROTOBUF = os.path.abspath(os.path.join( 10 | SCRIPT_DIR, '..', 'third_party', 'protobuf')) 11 | sys.path.append(PY_UTILS) 12 | sys.path.append(PROTOBUF) 13 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_trace_event/py_trace_event/setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # Copyright 2011 The Chromium Authors. All rights reserved. 3 | # Use of this source code is governed by a BSD-style license that can be 4 | # found in the LICENSE file. 5 | from distutils.core import setup 6 | setup( 7 | name='py_trace_event', 8 | packages=['trace_event_impl'], 9 | version='0.1.0', 10 | description='Performance tracing for python', 11 | author='Nat Duca' 12 | ) 13 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | from log import * 5 | from decorators import * 6 | from meta_class import * 7 | import multiprocessing_shim 8 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/meta_class.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | import types 6 | 7 | from py_trace_event.trace_event_impl import decorators 8 | 9 | 10 | class TracedMetaClass(type): 11 | def __new__(cls, name, bases, attrs): 12 | for attr_name, attr_value in attrs.iteritems(): 13 | if (not attr_name.startswith('_') and 14 | isinstance(attr_value, types.FunctionType)): 15 | attrs[attr_name] = decorators.traced(attr_value) 16 | 17 | return super(TracedMetaClass, cls).__new__(cls, name, bases, attrs) 18 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_trace_event/third_party/protobuf/README.chromium: -------------------------------------------------------------------------------- 1 | Name: Protobuf 2 | URL: https://developers.google.com/protocol-buffers/ 3 | Version: 3.0.0 4 | License: BSD 5 | 6 | Description: 7 | Protocol buffers are Google's language-neutral, platform-neutral, 8 | extensible mechanism for serializing structured data. 9 | 10 | Local Modifications: 11 | Removed pretty much everything except functions necessary to write 12 | bools, ints, floats and strings. 13 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_utils/py_utils/atexit_with_log.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | import atexit 6 | import logging 7 | 8 | 9 | def _WrapFunction(function): 10 | def _WrappedFn(*args, **kwargs): 11 | logging.debug('Try running %s', repr(function)) 12 | try: 13 | function(*args, **kwargs) 14 | logging.debug('Did run %s', repr(function)) 15 | except Exception: # pylint: disable=broad-except 16 | logging.exception('Exception running %s', repr(function)) 17 | return _WrappedFn 18 | 19 | 20 | def Register(function, *args, **kwargs): 21 | atexit.register(_WrapFunction(function), *args, **kwargs) 22 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_utils/py_utils/cloud_storage_global_lock.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | # This file is used by cloud_storage._FileLock implementation, don't delete it! 6 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_utils/py_utils/constants/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/systrace/catapult/common/py_utils/py_utils/constants/__init__.py -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_utils/py_utils/constants/exit_codes.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | # Lint as: python3 5 | """Common exit codes for catapult tools.""" 6 | 7 | SUCCESS = 0 8 | TEST_FAILURE = 1 9 | FATAL_ERROR = 2 10 | # See crbug.com/1019139#c8 for history on this exit code. 11 | # Note that some test runners (for example: typ) may continue to return SUCCESS 12 | # for cases where all tests are skipped. 13 | ALL_TESTS_SKIPPED = 111 14 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_utils/py_utils/contextlib_ext_unittest.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | import unittest 6 | 7 | from py_utils import contextlib_ext 8 | 9 | 10 | class OptionalUnittest(unittest.TestCase): 11 | 12 | class SampleContextMgr(object): 13 | 14 | def __init__(self): 15 | self.entered = False 16 | self.exited = False 17 | 18 | def __enter__(self): 19 | self.entered = True 20 | 21 | def __exit__(self, exc_type, exc_val, exc_tb): 22 | self.exited = True 23 | 24 | def testConditionTrue(self): 25 | c = self.SampleContextMgr() 26 | with contextlib_ext.Optional(c, True): 27 | self.assertTrue(c.entered) 28 | self.assertTrue(c.exited) 29 | 30 | def testConditionFalse(self): 31 | c = self.SampleContextMgr() 32 | with contextlib_ext.Optional(c, False): 33 | self.assertFalse(c.entered) 34 | self.assertFalse(c.exited) 35 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_utils/py_utils/file_util.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | import errno 6 | import os 7 | import shutil 8 | 9 | 10 | def CopyFileWithIntermediateDirectories(source_path, dest_path): 11 | """Copies a file and creates intermediate directories as needed. 12 | 13 | Args: 14 | source_path: Path to the source file. 15 | dest_path: Path to the destination where the source file should be copied. 16 | """ 17 | assert os.path.exists(source_path) 18 | try: 19 | os.makedirs(os.path.dirname(dest_path)) 20 | except OSError as e: 21 | if e.errno != errno.EEXIST: 22 | raise 23 | shutil.copy(source_path, dest_path) 24 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_utils/py_utils/logging_util_unittest.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | import logging 5 | import unittest 6 | 7 | try: 8 | from six import StringIO 9 | except ImportError: 10 | from io import StringIO 11 | 12 | from py_utils import logging_util 13 | 14 | 15 | class LoggingUtilTest(unittest.TestCase): 16 | def testCapture(self): 17 | s = StringIO() 18 | with logging_util.CaptureLogs(s): 19 | logging.fatal('test') 20 | 21 | # Only assert ends with, since the logging message by default has the date 22 | # in it. 23 | self.assertTrue(s.getvalue().endswith('test\n')) 24 | 25 | 26 | if __name__ == '__main__': 27 | unittest.main() 28 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_utils/py_utils/refactor/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2015 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | """Style-preserving Python code transforms. 6 | 7 | This module provides components for modifying and querying Python code. They can 8 | be used to build custom refactorings and linters. 9 | """ 10 | 11 | import functools 12 | import multiprocessing 13 | 14 | # pylint: disable=wildcard-import 15 | from py_utils.refactor.annotated_symbol import * # pylint: disable=redefined-builtin 16 | from py_utils.refactor.module import Module 17 | 18 | 19 | def _TransformFile(transform, file_path): 20 | module = Module(file_path) 21 | result = transform(module) 22 | module.Write() 23 | return result 24 | 25 | 26 | def Transform(transform, file_paths): 27 | transform = functools.partial(_TransformFile, transform) 28 | return multiprocessing.Pool().map(transform, file_paths) 29 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_utils/py_utils/refactor_util/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirov-opensource/starsharks_tools/26b33cc518b487a8b67718df10c123ad399e6d1c/Library/ADB/systrace/catapult/common/py_utils/py_utils/refactor_util/__init__.py -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_utils/py_utils/test_data/discoverable_classes/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2013 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_utils/py_utils/test_data/discoverable_classes/discover_dummyclass.py: -------------------------------------------------------------------------------- 1 | # Copyright 2013 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | """A dummy exception subclass used by core/discover.py's unit tests.""" 6 | 7 | class DummyException(Exception): 8 | def __init__(self): 9 | super(DummyException, self).__init__() 10 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_utils/py_utils/test_data/discoverable_classes/parameter_discover_dummyclass.py: -------------------------------------------------------------------------------- 1 | # Copyright 2015 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | """A dummy exception subclass used by core/discover.py's unit tests.""" 6 | from discoverable_classes import discover_dummyclass 7 | 8 | class DummyExceptionWithParameterImpl2(discover_dummyclass.DummyException): 9 | def __init__(self, parameter1, parameter2): 10 | super(DummyExceptionWithParameterImpl2, self).__init__() 11 | del parameter1, parameter2 12 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_utils/py_utils/test_data/foo.txt: -------------------------------------------------------------------------------- 1 | This file is not executable. 2 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_vulcanize/README.chromium: -------------------------------------------------------------------------------- 1 | Name: py_vulcanize 2 | URL: N/A 3 | Version: N/A 4 | 5 | Description: 6 | Py-vulcanize, formerly known as TVCM (trace-viewer component model). 7 | This code doesn't actually live anywhere else currently, but it may 8 | be split out into a separate repository in the future. 9 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_vulcanize/py_vulcanize/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2014 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | """Trace-viewer component model. 6 | 7 | This module implements trace-viewer's component model. 8 | """ 9 | 10 | from py_vulcanize.generate import * # pylint: disable=wildcard-import 11 | from py_vulcanize.project import Project 12 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_vulcanize/py_vulcanize/js_utils.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | 6 | def EscapeJSIfNeeded(js): 7 | return js.replace('', '<\/script>') 8 | -------------------------------------------------------------------------------- /Library/ADB/systrace/catapult/common/py_vulcanize/py_vulcanize/js_utils_unittest.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | import unittest 6 | 7 | from py_vulcanize import js_utils 8 | 9 | 10 | class ValidateStrictModeTests(unittest.TestCase): 11 | 12 | def testEscapeJSIfNeeded(self): 13 | self.assertEqual( 14 | '')) 16 | self.assertEqual( 17 | ' 19 | 20 | 21 | 22 |
23 | 24 |