gitextract_dl9na5eh/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── enhancement.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── pull_request.yml │ └── release.yml ├── .gitignore ├── .vscode/ │ └── extensions.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── README.md ├── SECURITY.md ├── data/ │ ├── ballot_in_simple.json │ ├── election_manifest_simple.json │ ├── manifest-full.json │ ├── manifest-hamilton-general.json │ ├── manifest-minimal.json │ ├── manifest-small.json │ ├── plaintext_ballots_simple.json │ ├── plaintext_two_ballots_minimal.json │ └── plaintext_two_ballots_small.json ├── docs/ │ ├── 0_Configure_Election.ipynb │ ├── 1_Key_Ceremony.md │ ├── 2_Encrypt_Ballots.md │ ├── 3_Cast_and_Spoil.md │ ├── 4_Decrypt_Tally.md │ ├── 5_Publish_and_Verify.md │ ├── Build_and_Run.md │ ├── Design_and_Architecture.md │ ├── Election_Manifest.md │ ├── Project_Workflow.md │ ├── Tablet Setup.md │ └── index.md ├── mkdocs.yml ├── pyproject.toml ├── src/ │ ├── electionguard/ │ │ ├── __init__.py │ │ ├── ballot.py │ │ ├── ballot_box.py │ │ ├── ballot_code.py │ │ ├── ballot_compact.py │ │ ├── ballot_validator.py │ │ ├── big_integer.py │ │ ├── byte_padding.py │ │ ├── chaum_pedersen.py │ │ ├── constants.py │ │ ├── data_store.py │ │ ├── decrypt_with_secrets.py │ │ ├── decrypt_with_shares.py │ │ ├── decryption.py │ │ ├── decryption_mediator.py │ │ ├── decryption_share.py │ │ ├── discrete_log.py │ │ ├── election.py │ │ ├── election_object_base.py │ │ ├── election_polynomial.py │ │ ├── elgamal.py │ │ ├── encrypt.py │ │ ├── group.py │ │ ├── guardian.py │ │ ├── hash.py │ │ ├── hmac.py │ │ ├── key_ceremony.py │ │ ├── key_ceremony_mediator.py │ │ ├── logs.py │ │ ├── manifest.py │ │ ├── nonces.py │ │ ├── proof.py │ │ ├── py.typed │ │ ├── scheduler.py │ │ ├── schnorr.py │ │ ├── serialize.py │ │ ├── singleton.py │ │ ├── tally.py │ │ ├── type.py │ │ └── utils.py │ ├── electionguard_cli/ │ │ ├── __init__.py │ │ ├── cli_models/ │ │ │ ├── __init__.py │ │ │ ├── cli_decrypt_results.py │ │ │ ├── cli_election_inputs_base.py │ │ │ ├── e2e_build_election_results.py │ │ │ ├── encrypt_results.py │ │ │ ├── mark_results.py │ │ │ └── submit_results.py │ │ ├── cli_steps/ │ │ │ ├── __init__.py │ │ │ ├── cli_step_base.py │ │ │ ├── decrypt_step.py │ │ │ ├── election_builder_step.py │ │ │ ├── encrypt_votes_step.py │ │ │ ├── input_retrieval_step_base.py │ │ │ ├── key_ceremony_step.py │ │ │ ├── mark_ballots_step.py │ │ │ ├── output_step_base.py │ │ │ ├── print_results_step.py │ │ │ ├── submit_ballots_step.py │ │ │ └── tally_step.py │ │ ├── e2e/ │ │ │ ├── __init__.py │ │ │ ├── e2e_command.py │ │ │ ├── e2e_election_builder_step.py │ │ │ ├── e2e_input_retrieval_step.py │ │ │ ├── e2e_inputs.py │ │ │ ├── e2e_publish_step.py │ │ │ └── submit_votes_step.py │ │ ├── encrypt_ballots/ │ │ │ ├── __init__.py │ │ │ ├── encrypt_ballot_inputs.py │ │ │ ├── encrypt_ballots_election_builder_step.py │ │ │ ├── encrypt_ballots_input_retrieval_step.py │ │ │ ├── encrypt_ballots_publish_step.py │ │ │ └── encrypt_command.py │ │ ├── import_ballots/ │ │ │ ├── __init__.py │ │ │ ├── import_ballot_inputs.py │ │ │ ├── import_ballots_command.py │ │ │ ├── import_ballots_election_builder_step.py │ │ │ ├── import_ballots_input_retrieval_step.py │ │ │ └── import_ballots_publish_step.py │ │ ├── mark_ballots/ │ │ │ ├── __init__.py │ │ │ ├── mark_ballot_inputs.py │ │ │ ├── mark_ballots_election_builder_step.py │ │ │ ├── mark_ballots_input_retrieval_step.py │ │ │ ├── mark_ballots_publish_step.py │ │ │ └── mark_command.py │ │ ├── setup_election/ │ │ │ ├── __init__.py │ │ │ ├── output_setup_files_step.py │ │ │ ├── setup_election_builder_step.py │ │ │ ├── setup_election_command.py │ │ │ ├── setup_input_retrieval_step.py │ │ │ └── setup_inputs.py │ │ ├── start.py │ │ └── submit_ballots/ │ │ ├── __init__.py │ │ ├── submit_ballot_inputs.py │ │ ├── submit_ballots_election_builder_step.py │ │ ├── submit_ballots_input_retrieval_step.py │ │ ├── submit_ballots_publish_step.py │ │ └── submit_command.py │ ├── electionguard_db/ │ │ ├── docker-compose.db.yml │ │ └── mongo-init.js │ ├── electionguard_gui/ │ │ ├── .dockerignore │ │ ├── Dockerfile │ │ ├── __init__.py │ │ ├── components/ │ │ │ ├── __init__.py │ │ │ ├── component_base.py │ │ │ ├── create_decryption_component.py │ │ │ ├── create_election_component.py │ │ │ ├── create_key_ceremony_component.py │ │ │ ├── election_list_component.py │ │ │ ├── export_election_record_component.py │ │ │ ├── export_encryption_package_component.py │ │ │ ├── guardian_home_component.py │ │ │ ├── key_ceremony_details_component.py │ │ │ ├── upload_ballots_component.py │ │ │ ├── view_decryption_component.py │ │ │ ├── view_election_component.py │ │ │ ├── view_spoiled_ballot_component.py │ │ │ └── view_tally_component.py │ │ ├── containers.py │ │ ├── docker-compose.yml │ │ ├── eel_utils.py │ │ ├── main_app.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── decryption_dto.py │ │ │ ├── election_dto.py │ │ │ ├── key_ceremony_dto.py │ │ │ └── key_ceremony_states.py │ │ ├── services/ │ │ │ ├── __init__.py │ │ │ ├── authorization_service.py │ │ │ ├── ballot_upload_service.py │ │ │ ├── configuration_service.py │ │ │ ├── db_serialization_service.py │ │ │ ├── db_service.py │ │ │ ├── db_watcher_service.py │ │ │ ├── decryption_service.py │ │ │ ├── decryption_stages/ │ │ │ │ ├── __init__.py │ │ │ │ ├── decryption_s1_join_service.py │ │ │ │ ├── decryption_s2_announce_service.py │ │ │ │ └── decryption_stage_base.py │ │ │ ├── directory_service.py │ │ │ ├── eel_log_service.py │ │ │ ├── election_service.py │ │ │ ├── export_service.py │ │ │ ├── guardian_service.py │ │ │ ├── gui_setup_input_retrieval_step.py │ │ │ ├── key_ceremony_service.py │ │ │ ├── key_ceremony_stages/ │ │ │ │ ├── __init__.py │ │ │ │ ├── key_ceremony_s1_join_service.py │ │ │ │ ├── key_ceremony_s2_announce_service.py │ │ │ │ ├── key_ceremony_s3_make_backup_service.py │ │ │ │ ├── key_ceremony_s4_share_backup_service.py │ │ │ │ ├── key_ceremony_s5_verify_backup_service.py │ │ │ │ ├── key_ceremony_s6_publish_key_service.py │ │ │ │ └── key_ceremony_stage_base.py │ │ │ ├── key_ceremony_state_service.py │ │ │ ├── plaintext_ballot_service.py │ │ │ ├── service_base.py │ │ │ └── version_service.py │ │ ├── start.py │ │ └── web/ │ │ ├── components/ │ │ │ ├── admin/ │ │ │ │ ├── admin-home-component.js │ │ │ │ ├── create-decryption-component.js │ │ │ │ ├── create-election-component.js │ │ │ │ ├── create-key-ceremony-component.js │ │ │ │ ├── export-election-record-component.js │ │ │ │ ├── export-encryption-package-component.js │ │ │ │ ├── upload-ballots-component.js │ │ │ │ ├── upload-ballots-legacy-component.js │ │ │ │ ├── upload-ballots-success-component.js │ │ │ │ ├── upload-ballots-wizard-component.js │ │ │ │ ├── view-decryption-admin-component.js │ │ │ │ ├── view-election-component.js │ │ │ │ ├── view-key-ceremony-component.js │ │ │ │ ├── view-spoiled-ballot-component.js │ │ │ │ └── view-tally-component.js │ │ │ ├── guardian/ │ │ │ │ ├── decryption-list-component.js │ │ │ │ ├── guardian-home-component.js │ │ │ │ ├── view-decryption-guardian-component.js │ │ │ │ └── view-key-ceremony-component.js │ │ │ └── shared/ │ │ │ ├── election-list-component.js │ │ │ ├── footer-component.js │ │ │ ├── home-component.js │ │ │ ├── key-ceremony-details-component.js │ │ │ ├── key-ceremony-list-component.js │ │ │ ├── login-component.js │ │ │ ├── navbar-component.js │ │ │ ├── not-found-component.js │ │ │ ├── spinner-component.js │ │ │ └── view-plaintext-ballot-component.js │ │ ├── css/ │ │ │ ├── bootstrap-icons.css │ │ │ ├── bootstrap-overrides.css │ │ │ ├── eg-styles.css │ │ │ └── spinner.css │ │ ├── index.html │ │ ├── js/ │ │ │ └── vue.esm-browser.prod.js │ │ ├── services/ │ │ │ ├── authorization-service.js │ │ │ └── router-service.js │ │ └── site.webmanifest │ ├── electionguard_tools/ │ │ ├── __init__.py │ │ ├── factories/ │ │ │ ├── __init__.py │ │ │ ├── ballot_factory.py │ │ │ └── election_factory.py │ │ ├── helpers/ │ │ │ ├── __init__.py │ │ │ ├── election_builder.py │ │ │ ├── export.py │ │ │ ├── key_ceremony_orchestrator.py │ │ │ ├── tally_accumulate.py │ │ │ └── tally_ceremony_orchestrator.py │ │ ├── scripts/ │ │ │ ├── __init__.py │ │ │ └── sample_generator.py │ │ └── strategies/ │ │ ├── __init__.py │ │ ├── election.py │ │ ├── elgamal.py │ │ └── group.py │ └── electionguard_verify/ │ ├── __init__.py │ └── verify.py ├── stubs/ │ └── gmpy2.pyi └── tests/ ├── __init__.py ├── base_test_case.py ├── bench/ │ ├── __init__.py │ └── bench_chaum_pedersen.py ├── integration/ │ ├── __init__.py │ ├── test_create_schema.py │ ├── test_end_to_end_election.py │ ├── test_functional_key_ceremony.py │ └── test_hamilton_county_election.py ├── property/ │ ├── __init__.py │ ├── test_ballot.py │ ├── test_chaum_pedersen.py │ ├── test_decrypt_with_secrets.py │ ├── test_decryption_mediator.py │ ├── test_discrete_log.py │ ├── test_elgamal.py │ ├── test_encrypt.py │ ├── test_encrypt_hypotheses.py │ ├── test_group.py │ ├── test_hash.py │ ├── test_nonces.py │ ├── test_schnorr.py │ ├── test_tally.py │ └── test_verify.py └── unit/ ├── __init__.py ├── electionguard/ │ ├── __init__.py │ ├── test_ballot.py │ ├── test_ballot_box.py │ ├── test_ballot_code.py │ ├── test_ballot_compact.py │ ├── test_constants.py │ ├── test_decrypt_with_shares.py │ ├── test_decryption.py │ ├── test_election_polynomial.py │ ├── test_elgamal.py │ ├── test_encrypt.py │ ├── test_guardian.py │ ├── test_hmac.py │ ├── test_key_ceremony.py │ ├── test_key_ceremony_mediator.py │ ├── test_logs.py │ ├── test_manifest.py │ ├── test_scheduler.py │ ├── test_singleton.py │ └── test_utils.py └── electionguard_gui/ ├── __init__.py ├── test_decryption_dto.py ├── test_eel_utils.py ├── test_election_dto.py └── test_plaintext_ballot_service.py