exshome

Build log

nerves_system_trellis

exshome 0.1.7 · fail · run exshome-0.1.7-1791181754346
2669 of 2669 lines
1Resolving Hex dependencies...2Resolution completed in 0.449s3Unchanged:4  castore 0.1.225  cc_precompiler 0.1.116  circular_buffer 1.1.07  cowboy 2.19.08  cowboy_telemetry 0.4.09  cowlib 2.20.0 VULNERABLE!10    EEF-CVE-2026-43966 (MEDIUM)11    aka: CVE-2026-43966, GHSA-w4f7-4cxr-rv3c12    HTTP Response Splitting via Non-VCHAR Bytes in cow_http_struct_hd:escape_string/213    https://osv.dev/vulnerability/EEF-CVE-2026-439661415    EEF-CVE-2026-43969 (LOW)16    aka: CVE-2026-43969, GHSA-g2wm-735q-3f5617    Cookie Request Header Injection via Unvalidated Encoder in cow_cookie:cookie/118    https://osv.dev/vulnerability/EEF-CVE-2026-4396919  db_connection 2.10.220  decimal 2.4.1 VULNERABLE!21    EEF-CVE-2026-32686 (MEDIUM)22    aka: CVE-2026-32686, GHSA-rhv4-8758-jx7v23    Unbounded exponent in decimal enables unauthenticated DoS24    https://osv.dev/vulnerability/EEF-CVE-2026-3268625  ecto 3.13.626  ecto_sql 3.13.527  ecto_sqlite3 0.7.728  elixir_make 0.10.029  erlexec 1.21.0 RETIRED!30    (deprecated) Deprecated31  esbuild 0.10.032  expo 1.1.133  exqlite 0.42.034  exshome 0.1.735  gettext 0.26.236  interactive_cmd 0.1.437  jason 1.4.538  mime 2.0.739  nerves 2.0.0-pre.240  nerves_discovery 0.1.541  nerves_logging 0.2.442  nerves_runtime 0.13.1343  nerves_system_bbb 2.30.244  nerves_system_br 1.34.445  nerves_system_mangopi_mq_pro 0.17.246  nerves_system_qemu_aarch64 0.4.247  nerves_system_rpi0 2.1.248  nerves_system_rpi4 2.1.249  nerves_system_rpi5 2.1.250  nerves_system_trellis 0.5.051  nerves_system_x86_64 1.34.252  nerves_toolchain_aarch64_nerves_linux_gnu 15.3.153  nerves_toolchain_armv6_nerves_linux_gnueabihf 15.3.154  nerves_toolchain_armv7_nerves_linux_gnueabihf 15.3.155  nerves_toolchain_riscv64_nerves_linux_gnu 15.3.156  nerves_toolchain_x86_64_nerves_linux_musl 15.3.157  nerves_uevent 0.1.758  nimble_options 0.4.059  phoenix 1.6.1760  phoenix_ecto 4.7.061  phoenix_html 3.3.462  phoenix_live_dashboard 0.6.563  phoenix_live_view 0.17.14 VULNERABLE!64    EEF-CVE-2026-64941 (LOW)65    aka: CVE-2026-64941, GHSA-36m4-rm57-3prf66    Open redirect in Phoenix.LiveView.validate_local_url!/2 via ASCII tab, LF and CR67    https://osv.dev/vulnerability/EEF-CVE-2026-6494168  phoenix_pubsub 2.3.069  phoenix_template 1.1.070  phoenix_view 2.0.471  plug 1.20.372  plug_cowboy 2.9.073  plug_crypto 1.2.574  property_table 0.3.475  ranch 2.3.076  ring_logger 0.11.777  tablet 0.3.378  tailwind 0.5.179  telemetry 1.4.280  telemetry_metrics 0.6.281  telemetry_poller 1.3.082  toolshed 0.5.083  tz 0.20.184  tz_extra 0.20.185  uboot_env 1.0.286* Getting exshome (Hex package)87* Getting nerves (Hex package)88* Getting ring_logger (Hex package)89* Getting toolshed (Hex package)90* Getting nerves_runtime (Hex package)91* Getting nerves_system_bbb (Hex package)92* Getting nerves_system_mangopi_mq_pro (Hex package)93* Getting nerves_system_qemu_aarch64 (Hex package)94* Getting nerves_system_rpi0 (Hex package)95* Getting nerves_system_rpi4 (Hex package)96* Getting nerves_system_rpi5 (Hex package)97* Getting nerves_system_trellis (Hex package)98* Getting nerves_system_x86_64 (Hex package)99* Getting nerves_system_br (Hex package)100* Getting nerves_toolchain_x86_64_nerves_linux_musl (Hex package)101* Getting nerves_toolchain_armv7_nerves_linux_gnueabihf (Hex package)102* Getting nerves_toolchain_aarch64_nerves_linux_gnu (Hex package)103* Getting nerves_toolchain_armv6_nerves_linux_gnueabihf (Hex package)104* Getting nerves_toolchain_riscv64_nerves_linux_gnu (Hex package)105* Getting nerves_logging (Hex package)106* Getting nerves_uevent (Hex package)107* Getting uboot_env (Hex package)108* Getting elixir_make (Hex package)109* Getting property_table (Hex package)110* Getting circular_buffer (Hex package)111* Getting interactive_cmd (Hex package)112* Getting nerves_discovery (Hex package)113* Getting tablet (Hex package)114* Getting ecto (Hex package)115* Getting ecto_sqlite3 (Hex package)116* Getting erlexec (Hex package)117* Getting esbuild (Hex package)118* Getting gettext (Hex package)119* Getting jason (Hex package)120* Getting nimble_options (Hex package)121* Getting phoenix (Hex package)122* Getting phoenix_ecto (Hex package)123* Getting phoenix_html (Hex package)124* Getting phoenix_live_dashboard (Hex package)125* Getting phoenix_live_view (Hex package)126* Getting plug_cowboy (Hex package)127* Getting tailwind (Hex package)128* Getting telemetry_metrics (Hex package)129* Getting telemetry_poller (Hex package)130* Getting tz (Hex package)131* Getting tz_extra (Hex package)132* Getting telemetry (Hex package)133* Getting cowboy (Hex package)134* Getting cowboy_telemetry (Hex package)135* Getting plug (Hex package)136* Getting mime (Hex package)137* Getting plug_crypto (Hex package)138* Getting cowlib (Hex package)139* Getting ranch (Hex package)140* Getting castore (Hex package)141* Getting phoenix_pubsub (Hex package)142* Getting phoenix_view (Hex package)143* Getting phoenix_template (Hex package)144* Getting expo (Hex package)145* Getting decimal (Hex package)146* Getting ecto_sql (Hex package)147* Getting exqlite (Hex package)148* Getting cc_precompiler (Hex package)149* Getting db_connection (Hex package)150Found retired packages, see above for details151Found packages with security advisories, see above for details152You have added/upgraded packages you could sponsor, run `mix hex.sponsor` to learn more153==> nerves_system_br154Generated nerves_system_br app155==> mime156Compiling 1 file (.ex)157Generated mime app158==> circular_buffer159Compiling 1 file (.ex)160Generated circular_buffer app161==> nimble_options162Compiling 3 files (.ex)163Generated nimble_options app164==> plug_crypto165Compiling 5 files (.ex)166Generated plug_crypto app167==> nerves_compatibility_test168===> Analyzing applications...169===> Compiling ranch170==> tablet171Compiling 2 files (.ex)172Generated tablet app173==> nerves_compatibility_test174===> Fetching pc v1.15.0175===> Analyzing applications...176===> Compiling pc177===> Compiling c_src/ei++.cpp178===> Compiling c_src/exec.cpp179===> Compiling c_src/exec_impl.cpp180===> Linking /work/proj/_build/trellis/lib/erlexec/priv/armv7-nerves-linux-gnueabihf/exec-port181===> Analyzing applications...182===> Compiling erlexec183==> elixir_make184Compiling 8 files (.ex)185Generated elixir_make app186==> nerves_logging187 CC kmsg_tailer.o188 LD kmsg_tailer189Compiling 5 files (.ex)190Generated nerves_logging app191warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"192  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2193  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1194  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5195  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2196  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4197  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2198199==> castore200Compiling 1 file (.ex)201Generated castore app202==> nerves_compatibility_test203===> Analyzing applications...204===> Compiling cowlib205==> nerves_discovery206Compiling 5 files (.ex)207Generated nerves_discovery app208==> ring_logger209Compiling 7 files (.ex)210Generated ring_logger app211==> decimal212Compiling 4 files (.ex)213      warning: this clause of defp check_dbl_min_max/1 is never used (or it will always fail/warn when invoked)214      │215 2842 │   defp check_dbl_min_max(%Decimal{coef: :inf} = infinity), do: infinity216      │        ~217      │218      └─ lib/decimal.ex:2842:8: Decimal.check_dbl_min_max/1219220Generated decimal app221==> jason222Compiling 10 files (.ex)223Generated jason app224==> esbuild225Compiling 4 files (.ex)226Generated esbuild app227==> interactive_cmd228Compiling 1 file (.ex)229Generated interactive_cmd app230==> nerves231Compiling 65 files (.ex)232    warning: redefining module Mix.Tasks.Nerves.Init (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Mix.Tasks.Nerves.Init.beam)233    │234  6 │ defmodule Mix.Tasks.Nerves.Init do235    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~236    │237    └─ lib/mix/tasks/nerves.init.ex:6: Mix.Tasks.Nerves.Init (module)238239    warning: redefining module Nerves (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.beam)240    │241  6 │ defmodule Nerves do242    │ ~~~~~~~~~~~~~~~~~~~243    │244    └─ lib/nerves.ex:6: Nerves (module)245246    warning: redefining module Nerves.ArtifactResolver (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.ArtifactResolver.beam)247    │248  5 │ defmodule Nerves.ArtifactResolver do249    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~250    │251    └─ lib/nerves/artifact_resolver.ex:5: Nerves.ArtifactResolver (module)252253    warning: redefining module Nerves.BuildAction.AppModes (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.AppModes.beam)254    │255  6 │ defmodule Nerves.BuildAction.AppModes do256    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~257    │258    └─ lib/nerves/build_action/app_modes.ex:6: Nerves.BuildAction.AppModes (module)259260    warning: redefining module Nerves.BuildAction.CheckExecutables (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.CheckExecutables.beam)261    │262  5 │ defmodule Nerves.BuildAction.CheckExecutables do263    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~264    │265    └─ lib/nerves/build_action/check_executables.ex:5: Nerves.BuildAction.CheckExecutables (module)266267    warning: redefining module Nerves.BuildAction.Erlinit (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.Erlinit.beam)268    │269  8 │ defmodule Nerves.BuildAction.Erlinit do270    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~271    │272    └─ lib/nerves/build_action/erlinit.ex:8: Nerves.BuildAction.Erlinit (module)273274    warning: redefining module Nerves.BuildAction.Firmware (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.Firmware.beam)275    │276  5 │ defmodule Nerves.BuildAction.Firmware do277    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~278    │279    └─ lib/nerves/build_action/firmware.ex:5: Nerves.BuildAction.Firmware (module)280281    warning: redefining module Nerves.BuildAction.IExStartupCheck (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.IExStartupCheck.beam)282    │283  7 │ defmodule Nerves.BuildAction.IExStartupCheck do284    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~285    │286    └─ lib/nerves/build_action/iex_startup_check.ex:7: Nerves.BuildAction.IExStartupCheck (module)287288    warning: redefining module Nerves.BuildAction.NervesV1System (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.NervesV1System.beam)289    │290  5 │ defmodule Nerves.BuildAction.NervesV1System do291    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~292    │293    └─ lib/nerves/build_action/nerves_v1_system.ex:5: Nerves.BuildAction.NervesV1System (module)294295    warning: redefining module Nerves.BuildAction.NervesV1Toolchain (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.NervesV1Toolchain.beam)296    │297  5 │ defmodule Nerves.BuildAction.NervesV1Toolchain do298    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~299    │300    └─ lib/nerves/build_action/nerves_v1_toolchain.ex:5: Nerves.BuildAction.NervesV1Toolchain (module)301302    warning: redefining module Nerves.BuildAction.Rootfs (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.Rootfs.beam)303    │304  5 │ defmodule Nerves.BuildAction.Rootfs do305    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~306    │307    └─ lib/nerves/build_action/rootfs.ex:5: Nerves.BuildAction.Rootfs (module)308309    warning: redefining module Nerves.BuildAction.SortApps (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.SortApps.beam)310    │311  6 │ defmodule Nerves.BuildAction.SortApps do312    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~313    │314    └─ lib/nerves/build_action/sort_apps.ex:6: Nerves.BuildAction.SortApps (module)315316    warning: redefining module Nerves.BuildAction.StripAll (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.StripAll.beam)317    │318  5 │ defmodule Nerves.BuildAction.StripAll do319    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~320    │321    └─ lib/nerves/build_action/strip_all.ex:5: Nerves.BuildAction.StripAll (module)322323    warning: redefining module Nerves.BuildAction.Trimmer (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.Trimmer.beam)324    │325  5 │ defmodule Nerves.BuildAction.Trimmer do326    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~327    │328    └─ lib/nerves/build_action/trimmer.ex:5: Nerves.BuildAction.Trimmer (module)329330    warning: redefining module Nerves.BuildPlan (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildPlan.beam)331    │332  5 │ defmodule Nerves.BuildPlan do333    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~334    │335    └─ lib/nerves/build_plan.ex:5: Nerves.BuildPlan (module)336337    warning: redefining module Nerves.BuildPlan.Checks (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildPlan.Checks.beam)338    │339  5 │ defmodule Nerves.BuildPlan.Checks do340    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~341    │342    └─ lib/nerves/build_plan/checks.ex:5: Nerves.BuildPlan.Checks (module)343344    warning: redefining module Nerves.Container (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.Container.beam)345    │346  6 │ defmodule Nerves.Container do347    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~348    │349    └─ lib/nerves/container.ex:6: Nerves.Container (module)350351    warning: redefining module Nerves.Fingerprint (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.Fingerprint.beam)352    │353  5 │ defmodule Nerves.Fingerprint do354    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~355    │356    └─ lib/nerves/fingerprint.ex:5: Nerves.Fingerprint (module)357358    warning: redefining module Nerves.MixPackage (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.MixPackage.beam)359    │360  5 │ defmodule Nerves.MixPackage do361    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~362    │363    └─ lib/nerves/mix_package.ex:5: Nerves.MixPackage (module)364365    warning: redefining module Nerves.Paths (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.Paths.beam)366    │367  5 │ defmodule Nerves.Paths do368    │ ~~~~~~~~~~~~~~~~~~~~~~~~~369    │370    └─ lib/nerves/paths.ex:5: Nerves.Paths (module)371372    warning: redefining module Nerves.TargetTuple (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.TargetTuple.beam)373    │374  5 │ defmodule Nerves.TargetTuple do375    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~376    │377    └─ lib/nerves/target_tuple.ex:5: Nerves.TargetTuple (module)378379Generated nerves app380==> nerves_toolchain_armv7_nerves_linux_gnueabihf381Compiling 1 file (.ex)382Generated nerves_toolchain_armv7_nerves_linux_gnueabihf app383==> nerves_system_trellis384Generated nerves_system_trellis app385==> nerves_compatibility_test386===> Analyzing applications...387===> Compiling telemetry388==> ecto389Compiling 56 files (.ex)390     warning: this clause of defp field_source!/2 is never used (or it will always fail/warn when invoked)391     │392 968 │   defp field_source!(nil, field) do393     │        ~394     │395     └─ lib/ecto/repo/schema.ex:968:8: Ecto.Repo.Schema.field_source!/2396397Generated ecto app398==> telemetry_metrics399Compiling 7 files (.ex)400     warning: unused require Logger401     │402 391 │   require Logger403     │   ~404     │405     └─ lib/telemetry_metrics.ex:391:3406407Generated telemetry_metrics app408==> nerves_compatibility_test409===> Analyzing applications...410===> Compiling telemetry_poller411==> db_connection412Compiling 18 files (.ex)413Generated db_connection app414warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"415  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2416  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1417  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5418  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2419  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4420  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2421422==> ecto_sql423Compiling 25 files (.ex)424     warning: unused require Ecto.Query425     │426 140 │   require Ecto.Query427     │   ~428     │429     └─ lib/ecto/adapters/tds.ex:140:3430431     warning: unused require Logger432     │433 139 │   require Logger434     │   ~435     │436     └─ lib/ecto/adapters/tds.ex:139:3437438     warning: unused require Ecto.Query439     │440 107 │   require Ecto.Query441     │   ~442     │443     └─ lib/ecto/migrator.ex:107:3444445      warning: this clause of defp validate_index_opts!/1 is never used (or it will always fail/warn when invoked)446      │447 1724 │   defp validate_index_opts!(opts), do: opts448      │        ~449      │450      └─ lib/ecto/migration.ex:1724:8: Ecto.Migration.validate_index_opts!/1451452Generated ecto_sql app453==> nerves_compatibility_test454===> Analyzing applications...455===> Compiling cowboy456==> expo457Compiling 2 files (.erl)458Compiling 22 files (.ex)459Generated expo app460==> gettext461Compiling 18 files (.ex)462     warning: unused require Gettext.Macros463     │464 594 │   require Gettext.Macros465     │   ~466     │467     └─ lib/gettext.ex:594:3468469     warning: Kernel.ParallelCompiler.async/1 is deprecated. Use `pmap/2` instead470     │471 426 │               Kernel.ParallelCompiler.async(fn ->472     │                                       ~473     │474     └─ lib/gettext/compiler.ex:426:39: Gettext.Compiler.compile_po_files/3475476     warning: the following clause is redundant:477478         defp ensure_empty_msgstr!(%Expo.Message.Plural{} = message)479480     it has type:481482         dynamic(%Expo.Message.Plural{})483484     previous clauses have already matched on the following types:485486         %Expo.Message.Singular{}487         %Expo.Message.Plural{}488489     │490 391 │   defp ensure_empty_msgstr!(%Message.Plural{} = message) do491     │        ~492     │493     └─ lib/gettext/extractor.ex:391:8: Gettext.Extractor.ensure_empty_msgstr!/1494495Generated gettext app496==> phoenix_pubsub497Compiling 12 files (.ex)498Generated phoenix_pubsub app499==> plug500Compiling 1 file (.erl)501Compiling 42 files (.ex)502Generated plug app503==> phoenix_html504Compiling 9 files (.ex)505    warning: comparison between distinct types found:506507        id == nil508509    given types:510511        dynamic(not false and not nil and not binary()) == nil512513    where "id" was given the types:514515        # type: dynamic(not false and not nil)516        # from: lib/phoenix_html/form_data.ex:92:8517        id = Keyword.get(opts, :id) || name518519        # type: dynamic(not false and not nil and not binary())520        # from: lib/phoenix_html/form_data.ex:94:12521        is_binary(id)522523    While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false524525    type warning found at:526    │527 94 │     unless is_binary(id) or is_nil(id) do528    │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~529    │530    └─ lib/phoenix_html/form_data.ex:94: Phoenix.HTML.FormData.Atom.to_form/2531532    warning: the 1st pattern in clause will never match:533534        60535536    because it is expected to receive type:537538        dynamic(empty_list() or non_empty_list(term(), term()))539540    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())541542    type warning found at:543    │544 56 │   def to_iodata(?<), do: "&lt;"545    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~546    │547    └─ lib/phoenix_html/safe.ex:56: Phoenix.HTML.Safe.List.to_iodata/1548549    warning: the 1st pattern in clause will never match:550551        62552553    because it is expected to receive type:554555        dynamic(empty_list() or non_empty_list(term(), term()))556557    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())558559    type warning found at:560    │561 57 │   def to_iodata(?>), do: "&gt;"562    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~563    │564    └─ lib/phoenix_html/safe.ex:57: Phoenix.HTML.Safe.List.to_iodata/1565566    warning: the 1st pattern in clause will never match:567568        38569570    because it is expected to receive type:571572        dynamic(empty_list() or non_empty_list(term(), term()))573574    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())575576    type warning found at:577    │578 58 │   def to_iodata(?&), do: "&amp;"579    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~580    │581    └─ lib/phoenix_html/safe.ex:58: Phoenix.HTML.Safe.List.to_iodata/1582583    warning: the 1st pattern in clause will never match:584585        34586587    because it is expected to receive type:588589        dynamic(empty_list() or non_empty_list(term(), term()))590591    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())592593    type warning found at:594    │595 59 │   def to_iodata(?"), do: "&quot;"596    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~597    │598    └─ lib/phoenix_html/safe.ex:59: Phoenix.HTML.Safe.List.to_iodata/1599600    warning: the 1st pattern in clause will never match:601602        39603604    because it is expected to receive type:605606        dynamic(empty_list() or non_empty_list(term(), term()))607608    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())609610    type warning found at:611    │612 60 │   def to_iodata(?'), do: "&#39;"613    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~614    │615    └─ lib/phoenix_html/safe.ex:60: Phoenix.HTML.Safe.List.to_iodata/1616617    warning: the 1st pattern in clause will never match:618619        {:safe, data}620621    because it is expected to receive type:622623        dynamic(empty_list() or non_empty_list(term(), term()))624625    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())626627    type warning found at:628    │629 76 │   def to_iodata({:safe, data}) do630    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~631    │632    └─ lib/phoenix_html/safe.ex:76: Phoenix.HTML.Safe.List.to_iodata/1633634    warning: the following clause is redundant:635636        def to_iodata(other)637638    it has type:639640        dynamic(empty_list() or non_empty_list(term(), term()))641642    previous clauses have already matched on the following types:643644        non_empty_list(term(), term())645        empty_list()646647    │648 80 │   def to_iodata(other) do649    │       ~650    │651    └─ lib/phoenix_html/safe.ex:80:7: Phoenix.HTML.Safe.List.to_iodata/1652653    warning: the 1st pattern in clause will never match:654655        h656657    because it is expected to receive type:658659        dynamic(empty_list() or non_empty_list(term(), term()))660661    where "h" was given the type:662663        # type: integer()664        # from: lib/phoenix_html/safe.ex:62:25665        is_integer(h)666667    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())668669    type warning found at:670    │671 62 │   def to_iodata(h) when is_integer(h) and h <= 255 do672    │                 ~673    │674    └─ lib/phoenix_html/safe.ex:62:17: Phoenix.HTML.Safe.List.to_iodata/1675676    warning: the 1st pattern in clause will never match:677678        h679680    because it is expected to receive type:681682        dynamic(empty_list() or non_empty_list(term(), term()))683684    where "h" was given the type:685686        # type: integer()687        # from: lib/phoenix_html/safe.ex:66:25688        is_integer(h)689690    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())691692    type warning found at:693    │694 66 │   def to_iodata(h) when is_integer(h) do695    │                 ~696    │697    └─ lib/phoenix_html/safe.ex:66:17: Phoenix.HTML.Safe.List.to_iodata/1698699    warning: the 1st pattern in clause will never match:700701        h702703    because it is expected to receive type:704705        dynamic(empty_list() or non_empty_list(term(), term()))706707    where "h" was given the type:708709        # type: binary()710        # from: lib/phoenix_html/safe.ex:72:25711        is_binary(h)712713    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())714715    type warning found at:716    │717 72 │   def to_iodata(h) when is_binary(h) do718    │                 ~719    │720    └─ lib/phoenix_html/safe.ex:72:17: Phoenix.HTML.Safe.List.to_iodata/1721722Generated phoenix_html app723warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"724  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2725  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1726  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5727  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2728  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4729  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2730731==> phoenix_ecto732Compiling 7 files (.ex)733Generated phoenix_ecto app734==> phoenix_template735Compiling 4 files (.ex)736Generated phoenix_template app737==> phoenix_view738Compiling 1 file (.ex)739     warning: the variable "prefix_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator740     │741 655 │       <<prefix::binary-size(prefix_size), ^suffix::binary>> -> prefix742     │                             ~743     │744     └─ lib/phoenix_view.ex:655:29: Phoenix.View.unsuffix/2745746Generated phoenix_view app747==> tz748Compiling 15 files (.ex)749    warning: Application.fetch_env/2 is discouraged in the module body, use Application.compile_env/3 instead750    │751  3 │     case Application.fetch_env(:tz, :http_client) do752    │                      ~753    │754    └─ lib/http/http.ex:3:22: Tz.HTTP (module)755756    warning: using single-quoted strings to represent charlists is deprecated.757    Use ~c"" if you indeed want a charlist or use "" instead.758    You may run "mix format --migrate" to change all single-quoted759    strings to use the ~c sigil and fix this warning.760    │761 55 │       'africa',762    │       ~763    │764    └─ lib/iana_data_dir.ex:55:7765766    warning: using single-quoted strings to represent charlists is deprecated.767    Use ~c"" if you indeed want a charlist or use "" instead.768    You may run "mix format --migrate" to change all single-quoted769    strings to use the ~c sigil and fix this warning.770    │771 56 │       'antarctica',772    │       ~773    │774    └─ lib/iana_data_dir.ex:56:7775776    warning: using single-quoted strings to represent charlists is deprecated.777    Use ~c"" if you indeed want a charlist or use "" instead.778    You may run "mix format --migrate" to change all single-quoted779    strings to use the ~c sigil and fix this warning.780    │781 57 │       'asia',782    │       ~783    │784    └─ lib/iana_data_dir.ex:57:7785786    warning: using single-quoted strings to represent charlists is deprecated.787    Use ~c"" if you indeed want a charlist or use "" instead.788    You may run "mix format --migrate" to change all single-quoted789    strings to use the ~c sigil and fix this warning.790    │791 58 │       'australasia',792    │       ~793    │794    └─ lib/iana_data_dir.ex:58:7795796    warning: using single-quoted strings to represent charlists is deprecated.797    Use ~c"" if you indeed want a charlist or use "" instead.798    You may run "mix format --migrate" to change all single-quoted799    strings to use the ~c sigil and fix this warning.800    │801 59 │       'backward',802    │       ~803    │804    └─ lib/iana_data_dir.ex:59:7805806    warning: using single-quoted strings to represent charlists is deprecated.807    Use ~c"" if you indeed want a charlist or use "" instead.808    You may run "mix format --migrate" to change all single-quoted809    strings to use the ~c sigil and fix this warning.810    │811 60 │       'etcetera',812    │       ~813    │814    └─ lib/iana_data_dir.ex:60:7815816    warning: using single-quoted strings to represent charlists is deprecated.817    Use ~c"" if you indeed want a charlist or use "" instead.818    You may run "mix format --migrate" to change all single-quoted819    strings to use the ~c sigil and fix this warning.820    │821 61 │       'europe',822    │       ~823    │824    └─ lib/iana_data_dir.ex:61:7825826    warning: using single-quoted strings to represent charlists is deprecated.827    Use ~c"" if you indeed want a charlist or use "" instead.828    You may run "mix format --migrate" to change all single-quoted829    strings to use the ~c sigil and fix this warning.830    │831 62 │       'northamerica',832    │       ~833    │834    └─ lib/iana_data_dir.ex:62:7835836    warning: using single-quoted strings to represent charlists is deprecated.837    Use ~c"" if you indeed want a charlist or use "" instead.838    You may run "mix format --migrate" to change all single-quoted839    strings to use the ~c sigil and fix this warning.840    │841 63 │       'southamerica',842    │       ~843    │844    └─ lib/iana_data_dir.ex:63:7845846    warning: using single-quoted strings to represent charlists is deprecated.847    Use ~c"" if you indeed want a charlist or use "" instead.848    You may run "mix format --migrate" to change all single-quoted849    strings to use the ~c sigil and fix this warning.850    │851 64 │       'iso3166.tab',852    │       ~853    │854    └─ lib/iana_data_dir.ex:64:7855856    warning: using single-quoted strings to represent charlists is deprecated.857    Use ~c"" if you indeed want a charlist or use "" instead.858    You may run "mix format --migrate" to change all single-quoted859    strings to use the ~c sigil and fix this warning.860    │861 65 │       'zone1970.tab'862    │       ~863    │864    └─ lib/iana_data_dir.ex:65:7865866    warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead867    │868  3 │   @custom_data_dir Application.get_env(:tz, :data_dir)869    │                                ~870    │871    └─ lib/iana_data_dir.ex:3:32: Tz.IanaDataDir (module)872873    warning: Application.get_env/3 is discouraged in the module body, use Application.compile_env/3 instead874    │875  5 │   @build_periods_with_ongoing_dst_changes_until_year Application.get_env(:tz, :build_time_zone_periods_with_ongoing_dst_changes_until_year, 5 + NaiveDateTime.utc_now().year)876    │                                                                  ~877    │878    └─ lib/iana_file_parser.ex:5:66: Tz.IanaFileParser (module)879880    warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead881    │882 11 │   @reject_periods_before_year Application.get_env(:tz, :reject_time_zone_periods_before_year)883    │                                           ~884    │885    └─ lib/compiler.ex:11:43: Tz.Compiler (module)886887    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead888    │889 15 │           Logger.warn("Tz found a more recent time zone database available for download at #{link}")890    │                  ~891    │892    └─ lib/watch_periodically.ex:15:18: Tz.WatchPeriodically.watch/0893894    warning: unused require Tz.IanaFileParser895    │896  4 │   require Tz.IanaFileParser897    │   ~898    │899    └─ lib/compiler.ex:4:3900901    warning: unused require Tz.PeriodsBuilder902    │903  5 │   require Tz.PeriodsBuilder904    │   ~905    │906    └─ lib/compiler.ex:5:3907908Compiling lib/compiler_runner.ex (it's taking more than 10s)909    warning: this clause of defp reject_periods_before_year/2 is never used (or it will always fail/warn when invoked)910    │911 65 │   defp reject_periods_before_year(periods, reject_before_year) do912    │        ~913    │914    └─ lib/compiler.ex:65:8: Tz.Compiler.reject_periods_before_year/2915916    warning: nil.request/2 is undefined (module nil is not available or is yet to be defined)917    │918 27 │     case HTTP.get_http_client!().request("data.iana.org", "/time-zones/tzdb/version") do919    │                                  ~920    │921    └─ lib/updater.ex:27:34: Tz.Updater.fetch_iana_tz_version/0922    └─ lib/updater.ex:75:34: Tz.Updater.download_tz_database/1923924     warning: this clause of defp add_to_and_convert_date_tuple/4 is never used (or it will always fail/warn when invoked)925     │926 250 │   defp add_to_and_convert_date_tuple(:min, _, _, _), do: :min927     │        ~928     │929     └─ lib/periods_builder.ex:250:8: Tz.PeriodsBuilder.add_to_and_convert_date_tuple/4930931     warning: this clause of defp add_to_and_convert_date_tuple/4 is never used (or it will always fail/warn when invoked)932     │933 251 │   defp add_to_and_convert_date_tuple(:max, _, _, _), do: :max934     │        ~935     │936     └─ lib/periods_builder.ex:251:8: Tz.PeriodsBuilder.add_to_and_convert_date_tuple/4937938Generated tz app939==> tz_extra940Compiling 7 files (.ex)941    warning: unused require TzExtra.IanaFileParser942    │943  4 │   require TzExtra.IanaFileParser944    │   ~945    │946    └─ lib/compiler.ex:4:3947948    warning: unused require TzExtra.Compiler949    │950  3 │     require TzExtra.Compiler951    │     ~952    │953    └─ lib/changeset.ex:3:5954955Generated tz_extra app956==> uboot_env957Compiling 5 files (.ex)958Generated uboot_env app959==> cc_precompiler960Compiling 3 files (.ex)961Generated cc_precompiler app962==> exqlite963 CC sqlite3_nif.o964 CC sqlite3.o965 LD sqlite3_nif.so966Compiling 12 files (.ex)967Generated exqlite app968==> ecto_sqlite3969Compiling 4 files (.ex)970     warning: using single-quoted strings to represent charlists is deprecated.971     Use ~c"" if you indeed want a charlist or use "" instead.972     You may run "mix format --migrate" to change all single-quoted973     strings to use the ~c sigil and fix this warning.974     │975 778 │         {['?'], counter + 1}976     │           ~977     │978     └─ lib/ecto/adapters/sqlite3/connection.ex:778:11979980      warning: using single-quoted strings to represent charlists is deprecated.981      Use ~c"" if you indeed want a charlist or use "" instead.982      You may run "mix format --migrate" to change all single-quoted983      strings to use the ~c sigil and fix this warning.984      │985 1177 │     '?'986      │     ~987      │988      └─ lib/ecto/adapters/sqlite3/connection.ex:1177:5989990    warning: function dump_cmd/3 required by behaviour Ecto.Adapter.Structure is not implemented (in module Ecto.Adapters.SQLite3)991    │992  1 │ defmodule Ecto.Adapters.SQLite3 do993    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~994    │995    └─ lib/ecto/adapters/sqlite3.ex:1: Ecto.Adapters.SQLite3 (module)996997    warning: function query_many/4 required by behaviour Ecto.Adapters.SQL.Connection is not implemented (in module Ecto.Adapters.SQLite3.Connection)998    │999  1 │ defmodule Ecto.Adapters.SQLite3.Connection do1000    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1001    │1002    └─ lib/ecto/adapters/sqlite3/connection.ex:1: Ecto.Adapters.SQLite3.Connection (module)10031004     warning: the following clause is redundant:10051006         def execute_ddl({:create, %Ecto.Migration.Index{} = index})10071008     it has type:10091010         dynamic({:create, %Ecto.Migration.Index{}})10111012     previous clauses have already matched on the following types:10131014         {:create, %Ecto.Migration.Table{}, term()}1015         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}1016         {:drop, %Ecto.Migration.Table{}}1017         {:drop, %Ecto.Migration.Table{}, term()}1018         {:drop_if_exists, %Ecto.Migration.Table{}}1019         {:drop_if_exists, %Ecto.Migration.Table{}, term()}1020         {:alter, %Ecto.Migration.Table{}, term()}1021         {:create, %Ecto.Migration.Index{}}1022         {:create_if_not_exists, %Ecto.Migration.Index{}}1023         {:drop, %Ecto.Migration.Index{}}1024         {:drop, %Ecto.Migration.Index{}, term()}1025         {:drop_if_exists, %Ecto.Migration.Index{}}1026         {:drop_if_exists, %Ecto.Migration.Index{}, term()}1027         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}1028         {:rename, %Ecto.Migration.Table{}, term(), term()}10291030     │1031 560 │   def execute_ddl({:create, %Index{} = index}) do1032     │       ~1033     │1034     └─ lib/ecto/adapters/sqlite3/connection.ex:560:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/110351036     warning: the following clause is redundant:10371038         def execute_ddl({:create_if_not_exists, %Ecto.Migration.Index{} = index})10391040     it has type:10411042         dynamic({:create_if_not_exists, %Ecto.Migration.Index{}})10431044     previous clauses have already matched on the following types:10451046         {:create, %Ecto.Migration.Table{}, term()}1047         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}1048         {:drop, %Ecto.Migration.Table{}}1049         {:drop, %Ecto.Migration.Table{}, term()}1050         {:drop_if_exists, %Ecto.Migration.Table{}}1051         {:drop_if_exists, %Ecto.Migration.Table{}, term()}1052         {:alter, %Ecto.Migration.Table{}, term()}1053         {:create, %Ecto.Migration.Index{}}1054         {:create_if_not_exists, %Ecto.Migration.Index{}}1055         {:drop, %Ecto.Migration.Index{}}1056         {:drop, %Ecto.Migration.Index{}, term()}1057         {:drop_if_exists, %Ecto.Migration.Index{}}1058         {:drop_if_exists, %Ecto.Migration.Index{}, term()}1059         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}1060         {:rename, %Ecto.Migration.Table{}, term(), term()}10611062     │1063 582 │   def execute_ddl({:create_if_not_exists, %Index{} = index}) do1064     │       ~1065     │1066     └─ lib/ecto/adapters/sqlite3/connection.ex:582:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/110671068     warning: the following clause is redundant:10691070         def execute_ddl({:drop, %Ecto.Migration.Index{} = index})10711072     it has type:10731074         dynamic({:drop, %Ecto.Migration.Index{}})10751076     previous clauses have already matched on the following types:10771078         {:create, %Ecto.Migration.Table{}, term()}1079         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}1080         {:drop, %Ecto.Migration.Table{}}1081         {:drop, %Ecto.Migration.Table{}, term()}1082         {:drop_if_exists, %Ecto.Migration.Table{}}1083         {:drop_if_exists, %Ecto.Migration.Table{}, term()}1084         {:alter, %Ecto.Migration.Table{}, term()}1085         {:create, %Ecto.Migration.Index{}}1086         {:create_if_not_exists, %Ecto.Migration.Index{}}1087         {:drop, %Ecto.Migration.Index{}}1088         {:drop, %Ecto.Migration.Index{}, term()}1089         {:drop_if_exists, %Ecto.Migration.Index{}}1090         {:drop_if_exists, %Ecto.Migration.Index{}, term()}1091         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}1092         {:rename, %Ecto.Migration.Table{}, term(), term()}1093         {:create, %Ecto.Migration.Constraint{}}10941095     │1096 609 │   def execute_ddl({:drop, %Index{} = index}) do1097     │       ~1098     │1099     └─ lib/ecto/adapters/sqlite3/connection.ex:609:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/111001101     warning: the following clause is redundant:11021103         def execute_ddl({:drop, %Ecto.Migration.Index{} = index, _mode})11041105     it has type:11061107         dynamic({:drop, %Ecto.Migration.Index{}, term()})11081109     previous clauses have already matched on the following types:11101111         {:create, %Ecto.Migration.Table{}, term()}1112         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}1113         {:drop, %Ecto.Migration.Table{}}1114         {:drop, %Ecto.Migration.Table{}, term()}1115         {:drop_if_exists, %Ecto.Migration.Table{}}1116         {:drop_if_exists, %Ecto.Migration.Table{}, term()}1117         {:alter, %Ecto.Migration.Table{}, term()}1118         {:create, %Ecto.Migration.Index{}}1119         {:create_if_not_exists, %Ecto.Migration.Index{}}1120         {:drop, %Ecto.Migration.Index{}}1121         {:drop, %Ecto.Migration.Index{}, term()}1122         {:drop_if_exists, %Ecto.Migration.Index{}}1123         {:drop_if_exists, %Ecto.Migration.Index{}, term()}1124         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}1125         {:rename, %Ecto.Migration.Table{}, term(), term()}1126         {:create, %Ecto.Migration.Constraint{}}11271128     │1129 619 │   def execute_ddl({:drop, %Index{} = index, _mode}) do1130     │       ~1131     │1132     └─ lib/ecto/adapters/sqlite3/connection.ex:619:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/111331134     warning: the following clause is redundant:11351136         def execute_ddl({:drop_if_exists, %Ecto.Migration.Index{} = index})11371138     it has type:11391140         dynamic({:drop_if_exists, %Ecto.Migration.Index{}})11411142     previous clauses have already matched on the following types:11431144         {:create, %Ecto.Migration.Table{}, term()}1145         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}1146         {:drop, %Ecto.Migration.Table{}}1147         {:drop, %Ecto.Migration.Table{}, term()}1148         {:drop_if_exists, %Ecto.Migration.Table{}}1149         {:drop_if_exists, %Ecto.Migration.Table{}, term()}1150         {:alter, %Ecto.Migration.Table{}, term()}1151         {:create, %Ecto.Migration.Index{}}1152         {:create_if_not_exists, %Ecto.Migration.Index{}}1153         {:drop, %Ecto.Migration.Index{}}1154         {:drop, %Ecto.Migration.Index{}, term()}1155         {:drop_if_exists, %Ecto.Migration.Index{}}1156         {:drop_if_exists, %Ecto.Migration.Index{}, term()}1157         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}1158         {:rename, %Ecto.Migration.Table{}, term(), term()}1159         {:create, %Ecto.Migration.Constraint{}}11601161     │1162 624 │   def execute_ddl({:drop_if_exists, %Index{} = index}) do1163     │       ~1164     │1165     └─ lib/ecto/adapters/sqlite3/connection.ex:624:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/111661167     warning: the following clause is redundant:11681169         def execute_ddl({:drop_if_exists, %Ecto.Migration.Index{} = index, _mode})11701171     it has type:11721173         dynamic({:drop_if_exists, %Ecto.Migration.Index{}, term()})11741175     previous clauses have already matched on the following types:11761177         {:create, %Ecto.Migration.Table{}, term()}1178         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}1179         {:drop, %Ecto.Migration.Table{}}1180         {:drop, %Ecto.Migration.Table{}, term()}1181         {:drop_if_exists, %Ecto.Migration.Table{}}1182         {:drop_if_exists, %Ecto.Migration.Table{}, term()}1183         {:alter, %Ecto.Migration.Table{}, term()}1184         {:create, %Ecto.Migration.Index{}}1185         {:create_if_not_exists, %Ecto.Migration.Index{}}1186         {:drop, %Ecto.Migration.Index{}}1187         {:drop, %Ecto.Migration.Index{}, term()}1188         {:drop_if_exists, %Ecto.Migration.Index{}}1189         {:drop_if_exists, %Ecto.Migration.Index{}, term()}1190         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}1191         {:rename, %Ecto.Migration.Table{}, term(), term()}1192         {:create, %Ecto.Migration.Constraint{}}11931194     │1195 634 │   def execute_ddl({:drop_if_exists, %Index{} = index, _mode}) do1196     │       ~1197     │1198     └─ lib/ecto/adapters/sqlite3/connection.ex:634:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/111991200     warning: the following clause is redundant:12011202         def execute_ddl(1203               {:rename, %Ecto.Migration.Table{} = current_table, %Ecto.Migration.Table{} = new_table}1204             )12051206     it has type:12071208         dynamic({:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}})12091210     previous clauses have already matched on the following types:12111212         {:create, %Ecto.Migration.Table{}, term()}1213         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}1214         {:drop, %Ecto.Migration.Table{}}1215         {:drop, %Ecto.Migration.Table{}, term()}1216         {:drop_if_exists, %Ecto.Migration.Table{}}1217         {:drop_if_exists, %Ecto.Migration.Table{}, term()}1218         {:alter, %Ecto.Migration.Table{}, term()}1219         {:create, %Ecto.Migration.Index{}}1220         {:create_if_not_exists, %Ecto.Migration.Index{}}1221         {:drop, %Ecto.Migration.Index{}}1222         {:drop, %Ecto.Migration.Index{}, term()}1223         {:drop_if_exists, %Ecto.Migration.Index{}}1224         {:drop_if_exists, %Ecto.Migration.Index{}, term()}1225         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}1226         {:rename, %Ecto.Migration.Table{}, term(), term()}1227         {:create, %Ecto.Migration.Constraint{}}1228         {:drop, %Ecto.Migration.Constraint{}, term()}1229         {:drop_if_exists, %Ecto.Migration.Constraint{}, term()}12301231     │1232 649 │   def execute_ddl({:rename, %Table{} = current_table, %Table{} = new_table}) do1233     │       ~1234     │1235     └─ lib/ecto/adapters/sqlite3/connection.ex:649:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/112361237     warning: the following clause is redundant:12381239         def execute_ddl({:rename, %Ecto.Migration.Table{} = table, current_column, new_column})12401241     it has type:12421243         dynamic({:rename, %Ecto.Migration.Table{}, term(), term()})12441245     previous clauses have already matched on the following types:12461247         {:create, %Ecto.Migration.Table{}, term()}1248         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}1249         {:drop, %Ecto.Migration.Table{}}1250         {:drop, %Ecto.Migration.Table{}, term()}1251         {:drop_if_exists, %Ecto.Migration.Table{}}1252         {:drop_if_exists, %Ecto.Migration.Table{}, term()}1253         {:alter, %Ecto.Migration.Table{}, term()}1254         {:create, %Ecto.Migration.Index{}}1255         {:create_if_not_exists, %Ecto.Migration.Index{}}1256         {:drop, %Ecto.Migration.Index{}}1257         {:drop, %Ecto.Migration.Index{}, term()}1258         {:drop_if_exists, %Ecto.Migration.Index{}}1259         {:drop_if_exists, %Ecto.Migration.Index{}, term()}1260         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}1261         {:rename, %Ecto.Migration.Table{}, term(), term()}1262         {:create, %Ecto.Migration.Constraint{}}1263         {:drop, %Ecto.Migration.Constraint{}, term()}1264         {:drop_if_exists, %Ecto.Migration.Constraint{}, term()}12651266     │1267 661 │   def execute_ddl({:rename, %Table{} = table, current_column, new_column}) do1268     │       ~1269     │1270     └─ lib/ecto/adapters/sqlite3/connection.ex:661:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/112711272Generated ecto_sqlite3 app1273==> property_table1274Compiling 8 files (.ex)1275Generated property_table app1276==> nerves_uevent1277 CC uevent.o1278 LD uevent1279Compiling 5 files (.ex)1280Generated nerves_uevent app1281==> nerves_runtime1282Compiling 14 files (.ex)1283Generated nerves_runtime app1284==> toolshed1285Compiling 5 files (.ex)1286Generated toolshed app1287==> tailwind1288Compiling 3 files (.ex)1289Generated tailwind app1290==> nerves_compatibility_test1291===> Analyzing applications...1292===> Compiling cowboy_telemetry1293==> plug_cowboy1294Compiling 5 files (.ex)1295Generated plug_cowboy app1296warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"1297  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/21298  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/11299  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51300  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21301  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41302  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/213031304==> phoenix1305Compiling 69 files (.ex)1306     warning: using single-quoted strings to represent charlists is deprecated.1307     Use ~c"" if you indeed want a charlist or use "" instead.1308     You may run "mix format --migrate" to change all single-quoted1309     strings to use the ~c sigil and fix this warning.1310     │1311 258 │           notBefore: {:utcTime, '#{not_before}000000Z'},1312     │                                 ~1313     │1314     └─ lib/mix/tasks/phx.gen.cert.ex:258:3313151316     warning: using single-quoted strings to represent charlists is deprecated.1317     Use ~c"" if you indeed want a charlist or use "" instead.1318     You may run "mix format --migrate" to change all single-quoted1319     strings to use the ~c sigil and fix this warning.1320     │1321 259 │           notAfter: {:utcTime, '#{not_after}000000Z'}1322     │                                ~1323     │1324     └─ lib/mix/tasks/phx.gen.cert.ex:259:3213251326    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1327    │1328 50 │             Logger.warn(1329    │                    ~1330    │1331    └─ lib/phoenix/code_reloader/server.ex:50:20: Phoenix.CodeReloader.Server.handle_call/313321333    warning: unused require Logger1334    │1335  9 │   require Logger1336    │   ~1337    │1338    └─ lib/phoenix/config.ex:9:313391340     warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.13411342     This error happens when you have function calls without parentheses inside keywords. For example:13431344         function(arg, one: nested_call a, b, c)1345         function(arg, one: if expr, do: :this, else: :that)13461347     In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses:13481349         function(arg, one: if(expr, do: :this, else: :that))1350         function(arg, one: nested_call(a, b, c))13511352     Ambiguity found at:1353     │1354 998 │   defp get_disposition_type(other), do: raise ArgumentError, "expected :disposition to be :attachment or :inline, got: #{inspect(other)}"1355     │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1356     │1357     └─ lib/phoenix/controller.ex:99813581359     warning: unused require Logger1360     │1361 259 │   require Logger1362     │   ~1363     │1364     └─ lib/phoenix/endpoint.ex:259:313651366      warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1367      │1368 1009 │       Logger.warn "send_download/3 has been invoked during an AJAX request. " <>1369      │              ~1370      │1371      └─ lib/phoenix/controller.ex:1009:14: Phoenix.Controller.warn_if_ajax/113721373    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1374    │1375 34 │             Logger.warn("no configuration found for otp_app #{inspect(otp_app)} and module #{inspect(mod)}")1376    │                    ~1377    │1378    └─ lib/phoenix/endpoint/supervisor.ex:34:20: Phoenix.Endpoint.Supervisor.init/113791380    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1381    │1382 57 │       Logger.warn(":instrumenters configuration for #{inspect(mod)} is deprecated and has no effect")1383    │              ~1384    │1385    └─ lib/phoenix/endpoint/supervisor.ex:57:14: Phoenix.Endpoint.Supervisor.init/113861387    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1388    │1389 78 │       Logger.warn """1390    │              ~1391    │1392    └─ lib/phoenix/endpoint/supervisor.ex:78:14: Phoenix.Endpoint.Supervisor.pubsub_children/213931394     warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1395     │1396 264 │       Logger.warn("url: [host: ...] configuration value #{inspect(host)} for #{inspect(endpoint)} is invalid")1397     │              ~1398     │1399     └─ lib/phoenix/endpoint/supervisor.ex:264:14: Phoenix.Endpoint.Supervisor.build_url/214001401    warning: unused require Phoenix.Endpoint1402    │1403  6 │   require Phoenix.Endpoint1404    │   ~1405    │1406    └─ lib/phoenix/controller.ex:6:314071408    warning: the variable "prefix_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1409    │1410 46 │       <<prefix::binary-size(prefix_size), ^suffix::binary>> -> prefix1411    │                             ~1412    │1413    └─ lib/phoenix/naming.ex:46:29: Phoenix.Naming.unsuffix/214141415    warning: unused require Phoenix.Endpoint1416    │1417 19 │   require Phoenix.Endpoint1418    │   ~1419    │1420    └─ lib/phoenix/endpoint/render_errors.ex:19:314211422    warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.14231424    This error happens when you have function calls without parentheses inside keywords. For example:14251426        function(arg, one: nested_call a, b, c)1427        function(arg, one: if expr, do: :this, else: :that)14281429    In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses:14301431        function(arg, one: if(expr, do: :this, else: :that))1432        function(arg, one: nested_call(a, b, c))14331434    Ambiguity found at:1435    │1436 71 │     unless actions -- supported_actions == [], do: raise ArgumentError, """1437    │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1438    │1439    └─ lib/phoenix/router/resource.ex:7114401441     warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1442     │1443 653 │         Logger.warn fn -> "Ignoring unmatched topic \"#{topic}\" in #{inspect(socket.handler)}" end1444     │                ~1445     │1446     └─ lib/phoenix/socket.ex:653:16: Phoenix.Socket.handle_in/414471448     warning: unused require Phoenix.Endpoint1449     │1450 192 │   require Phoenix.Endpoint1451     │   ~1452     │1453     └─ lib/phoenix/socket.ex:192:314541455    warning: unused require Phoenix.Endpoint1456    │1457  6 │   require Phoenix.Endpoint1458    │   ~1459    │1460    └─ lib/phoenix/channel/server.ex:6:314611462    warning: unused require Logger1463    │1464 93 │   require Logger1465    │   ~1466    │1467    └─ lib/phoenix/token.ex:93:314681469     warning: comparison between distinct types found:14701471         merge_all != []14721473     given types:14741475         dynamic(non_empty_list({atom(), term()})) != empty_list()14761477     where "merge_all" was given the type:14781479         # type: dynamic(non_empty_list({atom(), term()}))1480         # from: lib/phoenix/router/route.ex:111:151481         merge_all = merge_params ++ merge_private ++ merge_assigns14821483     While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false14841485     type warning found at:1486     │1487 113 │     if merge_all != [] do1488     │                  ~1489     │1490     └─ lib/phoenix/router/route.ex:113:18: Phoenix.Router.Route.build_prepare/114911492    warning: a struct for Plug.Conn is expected on struct update:14931494        %Plug.Conn{conn | state: :sent}14951496    but got type:14971498        dynamic()14991500    where "conn" was given the type:15011502        # type: dynamic()1503        # from: lib/phoenix/endpoint/render_errors.ex:57:171504        conn15051506    when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"15071508    type warning found at:1509    │1510 61 │         %Plug.Conn{conn | state: :sent}1511    │         ~1512    │1513    └─ lib/phoenix/endpoint/render_errors.ex:61:9: Phoenix.Endpoint.RenderErrors.__catch__/515141515     warning: a struct for Plug.Conn is expected on struct update:15161517         %Plug.Conn{conn | query_params: %{}, params: %{}}15181519     but got type:15201521         dynamic(%{..., params: %Plug.Conn.Unfetched{}})15221523     where "conn" was given the types:15241525         # type: dynamic(%{..., params: term()})1526         # from: lib/phoenix/endpoint/render_errors.ex:124:171527         conn.params15281529         # type: dynamic(%{..., params: %Plug.Conn.Unfetched{}})1530         # from: lib/phoenix/endpoint/render_errors.ex:124:171531         conn.params15321533     when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"15341535     type warning found at:1536     │1537 125 │         %Plug.Conn.Unfetched{} -> %Plug.Conn{conn | query_params: %{}, params: %{}}1538     │                                   ~1539     │1540     └─ lib/phoenix/endpoint/render_errors.ex:125:35: Phoenix.Endpoint.RenderErrors.maybe_fetch_query_params/115411542    warning: incompatible types given to socket_children/1:15431544        socket_children(mod)15451546    given types:15471548        -dynamic(atom())-15491550    but expected one of:15511552        %{..., __sockets__: term()}15531554    where "mod" was given the types:15551556        # type: dynamic(atom() or binary())1557        # from: lib/phoenix/endpoint/supervisor.ex:27:411558        defaults(otp_app, mod)15591560        # type: dynamic(atom())1561        # from: lib/phoenix/endpoint/supervisor.ex:31:161562        mod.init(:supervisor, env_conf)15631564    type warning found at:1565    │1566 67 │       socket_children(mod) ++1567    │       ~1568    │1569    └─ lib/phoenix/endpoint/supervisor.ex:67:7: Phoenix.Endpoint.Supervisor.init/115701571     warning: a struct for Plug.Conn is expected on struct update:15721573         %Plug.Conn{conn | query_params: %{}, params: params}15741575     but got type:15761577         dynamic(%{..., params: not %Plug.Conn.Unfetched{}})15781579     where "conn" was given the types:15801581         # type: dynamic(%{..., params: term()})1582         # from: lib/phoenix/endpoint/render_errors.ex:124:171583         conn.params15841585         # type: dynamic(%{..., params: not %Plug.Conn.Unfetched{}})1586         # from: lib/phoenix/endpoint/render_errors.ex:124:171587         conn.params15881589     when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"15901591     type warning found at:1592     │1593 126 │         params -> %Plug.Conn{conn | query_params: %{}, params: params}1594     │                   ~1595     │1596     └─ lib/phoenix/endpoint/render_errors.ex:126:19: Phoenix.Endpoint.RenderErrors.maybe_fetch_query_params/115971598      warning: a struct for Plug.Conn is expected on struct update:15991600          %Plug.Conn{conn | params: params}16011602      but got type:16031604          dynamic(%{..., params: map()})16051606      where "conn" was given the type:16071608          # type: dynamic(%{..., params: map()})1609          # from: lib/phoenix/controller.ex:1036:171610          Map.get(conn.params, required_key)16111612      when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"16131614      type warning found at:1615      │1616 1043 │     %Plug.Conn{conn | params: params}1617      │     ~1618      │1619      └─ lib/phoenix/controller.ex:1043:5: Phoenix.Controller.scrub_params/216201621     warning: expected a module (an atom) when invoking compress_file/2 in expression:16221623         compressor.compress_file(file.digested_filename, file.digested_content)16241625     where "compressor" was given the type:16261627         # type: dynamic(%{..., file_extensions: non_empty_list(term(), term())})1628         # from: lib/phoenix/digester.ex:167:281629         [file_extension | _] = compressor.file_extensions16301631     where "file" was given the type:16321633         # type: dynamic(%{..., relative_path: term()})1634         # from: lib/phoenix/digester.ex:161:171635         Path.join(output_path, file.relative_path)16361637     type warning found at:1638     │1639 170 │              compressor.compress_file(file.digested_filename, file.digested_content) do1640     │                         ~1641     │1642     └─ lib/phoenix/digester.ex:170:25: Phoenix.Digester.write_to_disk/216431644Generated phoenix app1645warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"1646  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/21647  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/11648  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51649  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21650  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41651  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/216521653==> phoenix_live_view1654Compiling 31 files (.ex)1655     warning: using single-quoted strings to represent charlists is deprecated.1656     Use ~c"" if you indeed want a charlist or use "" instead.1657     You may run "mix format --migrate" to change all single-quoted1658     strings to use the ~c sigil and fix this warning.1659     │1660 319 │         {'LiveView', view},1661     │          ~1662     │1663     └─ lib/phoenix_live_view/channel.ex:319:1016641665     warning: using single-quoted strings to represent charlists is deprecated.1666     Use ~c"" if you indeed want a charlist or use "" instead.1667     You may run "mix format --migrate" to change all single-quoted1668     strings to use the ~c sigil and fix this warning.1669     │1670 320 │         {'Parent pid', parent_pid},1671     │          ~1672     │1673     └─ lib/phoenix_live_view/channel.ex:320:1016741675     warning: using single-quoted strings to represent charlists is deprecated.1676     Use ~c"" if you indeed want a charlist or use "" instead.1677     You may run "mix format --migrate" to change all single-quoted1678     strings to use the ~c sigil and fix this warning.1679     │1680 321 │         {'Transport pid', transport_pid},1681     │          ~1682     │1683     └─ lib/phoenix_live_view/channel.ex:321:1016841685     warning: using single-quoted strings to represent charlists is deprecated.1686     Use ~c"" if you indeed want a charlist or use "" instead.1687     You may run "mix format --migrate" to change all single-quoted1688     strings to use the ~c sigil and fix this warning.1689     │1690 322 │         {'Topic', topic},1691     │          ~1692     │1693     └─ lib/phoenix_live_view/channel.ex:322:1016941695     warning: using single-quoted strings to represent charlists is deprecated.1696     Use ~c"" if you indeed want a charlist or use "" instead.1697     You may run "mix format --migrate" to change all single-quoted1698     strings to use the ~c sigil and fix this warning.1699     │1700 323 │         {'Components count', map_size(cid_to_component)}1701     │          ~1702     │1703     └─ lib/phoenix_live_view/channel.ex:323:1017041705     warning: using single-quoted strings to represent charlists is deprecated.1706     Use ~c"" if you indeed want a charlist or use "" instead.1707     You may run "mix format --migrate" to change all single-quoted1708     strings to use the ~c sigil and fix this warning.1709     │1710 329 │     [data: [{'State', state}]]1711     │              ~1712     │1713     └─ lib/phoenix_live_view/channel.ex:329:1417141715     warning: using single-quoted strings to represent charlists is deprecated.1716     Use ~c"" if you indeed want a charlist or use "" instead.1717     You may run "mix format --migrate" to change all single-quoted1718     strings to use the ~c sigil and fix this warning.1719     │1720 112 │   @codepoints '\s\n\r\t'1721     │               ~1722     │1723     └─ lib/phoenix_live_view/html_algebra.ex:112:1517241725     warning: using single-quoted strings to represent charlists is deprecated.1726     Use ~c"" if you indeed want a charlist or use "" instead.1727     You may run "mix format --migrate" to change all single-quoted1728     strings to use the ~c sigil and fix this warning.1729     │1730 125 │     do: :binary.first(text) in '\n\r'1731     │                                ~1732     │1733     └─ lib/phoenix_live_view/html_algebra.ex:125:3217341735     warning: using single-quoted strings to represent charlists is deprecated.1736     Use ~c"" if you indeed want a charlist or use "" instead.1737     You may run "mix format --migrate" to change all single-quoted1738     strings to use the ~c sigil and fix this warning.1739     │1740 130 │     do: :binary.last(text) in '\n\r'1741     │                               ~1742     │1743     └─ lib/phoenix_live_view/html_algebra.ex:130:3117441745     warning: using single-quoted strings to represent charlists is deprecated.1746     Use ~c"" if you indeed want a charlist or use "" instead.1747     You may run "mix format --migrate" to change all single-quoted1748     strings to use the ~c sigil and fix this warning.1749     │1750 503 │   defp count_newlines_until_text(<<char, rest::binary>>, counter) when char in '\s\t\r',1751     │                                                                                ~1752     │1753     └─ lib/phoenix_live_view/html_formatter.ex:503:8017541755     warning: using single-quoted strings to represent charlists is deprecated.1756     Use ~c"" if you indeed want a charlist or use "" instead.1757     You may run "mix format --migrate" to change all single-quoted1758     strings to use the ~c sigil and fix this warning.1759     │1760 536 │     do: if(String.trim_leading(text) == "", do: false, else: !(:binary.last(text) in '\s\t'))1761     │                                                                                      ~1762     │1763     └─ lib/phoenix_live_view/html_formatter.ex:536:8617641765     warning: using single-quoted strings to represent charlists is deprecated.1766     Use ~c"" if you indeed want a charlist or use "" instead.1767     You may run "mix format --migrate" to change all single-quoted1768     strings to use the ~c sigil and fix this warning.1769     │1770 546 │       if String.trim_leading(text) != "" and :binary.first(text) not in '\s\t\n\r' do1771     │                                                                         ~1772     │1773     └─ lib/phoenix_live_view/html_formatter.ex:546:7317741775    warning: using single-quoted strings to represent charlists is deprecated.1776    Use ~c"" if you indeed want a charlist or use "" instead.1777    You may run "mix format --migrate" to change all single-quoted1778    strings to use the ~c sigil and fix this warning.1779    │1780  3 │   @space_chars '\s\t\f'1781    │                ~1782    │1783    └─ lib/phoenix_live_view/html_tokenizer.ex:3:1617841785    warning: using single-quoted strings to represent charlists is deprecated.1786    Use ~c"" if you indeed want a charlist or use "" instead.1787    You may run "mix format --migrate" to change all single-quoted1788    strings to use the ~c sigil and fix this warning.1789    │1790  4 │   @quote_chars '"\''1791    │                ~1792    │1793    └─ lib/phoenix_live_view/html_tokenizer.ex:4:1617941795    warning: using single-quoted strings to represent charlists is deprecated.1796    Use ~c"" if you indeed want a charlist or use "" instead.1797    You may run "mix format --migrate" to change all single-quoted1798    strings to use the ~c sigil and fix this warning.1799    │1800  5 │   @stop_chars '>/=\r\n' ++ @quote_chars ++ @space_chars1801    │               ~1802    │1803    └─ lib/phoenix_live_view/html_tokenizer.ex:5:1518041805    warning: unused require Logger1806    │1807 25 │   require Logger1808    │   ~1809    │1810    └─ lib/phoenix_live_view/socket.ex:25:318111812     warning: unused require Phoenix.ChannelTest1813     │1814 179 │   require Phoenix.ChannelTest1815     │   ~1816     │1817     └─ lib/phoenix_live_view/test/live_view_test.ex:179:318181819     warning: unused require Phoenix.ConnTest1820     │1821 178 │   require Phoenix.ConnTest1822     │   ~1823     │1824     └─ lib/phoenix_live_view/test/live_view_test.ex:178:318251826    warning: unused require Phoenix.ChannelTest1827    │1828  4 │   require Phoenix.ChannelTest1829    │   ~1830    │1831    └─ lib/phoenix_live_view/test/upload_client.ex:4:318321833    warning: unused require Logger1834    │1835  6 │   require Logger1836    │   ~1837    │1838    └─ lib/phoenix_live_view/upload_channel.ex:6:318391840     warning: a struct for Phoenix.LiveView.Socket is expected on struct update:18411842         %Phoenix.LiveView.Socket{1843           socket1844           | private: Map.put(socket.private, :phoenix_live_layout, {mod, template})1845         }18461847     but got type:18481849         dynamic()18501851     where "socket" was given the type:18521853         # type: dynamic()1854         # from: lib/phoenix_live_view/utils.ex:459:211855         socket18561857     when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"18581859     type warning found at:1860     │1861 460 │     %Socket{socket | private: Map.put(socket.private, :phoenix_live_layout, {mod, template})}1862     │     ~1863     │1864     └─ lib/phoenix_live_view/utils.ex:460:5: Phoenix.LiveView.Utils.do_mount_opt/318651866     warning: a struct for Phoenix.LiveView.Socket is expected on struct update:18671868         %Phoenix.LiveView.Socket{socket | private: Map.put(socket.private, :phoenix_live_layout, false)}18691870     but got type:18711872         dynamic()18731874     where "socket" was given the type:18751876         # type: dynamic()1877         # from: lib/phoenix_live_view/utils.ex:463:211878         socket18791880     when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"18811882     type warning found at:1883     │1884 464 │     %Socket{socket | private: Map.put(socket.private, :phoenix_live_layout, false)}1885     │     ~1886     │1887     └─ lib/phoenix_live_view/utils.ex:464:5: Phoenix.LiveView.Utils.do_mount_opt/318881889     warning: a struct for Phoenix.LiveView.Socket is expected on struct update:18901891         %Phoenix.LiveView.Socket{1892           socket1893           | assigns: Map.merge(temp_assigns, socket.assigns),1894             private: Map.put(socket.private, :temporary_assigns, temp_assigns)1895         }18961897     but got type:18981899         dynamic()19001901     where "socket" was given the type:19021903         # type: dynamic()1904         # from: lib/phoenix_live_view/utils.ex:473:211905         socket19061907     when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"19081909     type warning found at:1910     │1911 480 │     %Socket{1912     │     ~1913     │1914     └─ lib/phoenix_live_view/utils.ex:480:5: Phoenix.LiveView.Utils.do_mount_opt/319151916     warning: a struct for Phoenix.LiveView.Socket is expected on struct update:19171918         %Phoenix.LiveView.Socket{1919           socket1920           | assigns: %Phoenix.LiveView.Socket.AssignsNotInSocket{__assigns__: assigns}1921         }19221923     but got type:19241925         dynamic(%{..., assigns: term()})19261927     where "socket" was given the type:19281929         # type: dynamic(%{..., assigns: term()})1930         # from: lib/phoenix_live_view/utils.ex:491:431931         %{assigns: assigns} = socket19321933     when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"19341935     type warning found at:1936     │1937 492 │     socket = %Socket{socket | assigns: %Socket.AssignsNotInSocket{__assigns__: assigns}}1938     │              ~1939     │1940     └─ lib/phoenix_live_view/utils.ex:492:14: Phoenix.LiveView.Utils.render_assigns/119411942     warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:19431944         %Phoenix.LiveView.UploadEntry{entry | preflighted?: true}19451946     but got type:19471948         dynamic()19491950     where "entry" was given the type:19511952         # type: dynamic()1953         # from: lib/phoenix_live_view/upload_config.ex:339:281954         entry <- conf.entries19551956     when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"19571958     type warning found at:1959     │1960 339 │       | entries: for(entry <- conf.entries, do: %UploadEntry{entry | preflighted?: true})1961     │                                                 ~1962     │1963     └─ lib/phoenix_live_view/upload_config.ex:339:49: Phoenix.LiveView.UploadConfig.mark_preflighted/119641965     warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:19661967         %Phoenix.LiveView.UploadEntry{entry | valid?: true, uuid: generate_uuid()}19681969     but got type:19701971         dynamic()19721973     where "entry" was given the type:19741975         # type: dynamic()1976         # from: lib/phoenix_live_view/upload_config.ex:539:301977         entry19781979     when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"19801981     type warning found at:1982     │1983 540 │     entry = %UploadEntry{entry | valid?: true, uuid: generate_uuid()}1984     │             ~1985     │1986     └─ lib/phoenix_live_view/upload_config.ex:540:13: Phoenix.LiveView.UploadConfig.put_valid_entry/219871988      warning: a struct for Phoenix.HTML.Form is expected on struct update:19891990          %Phoenix.HTML.Form{Phoenix.HTML.FormData.to_form(form_for, form_options) | action: action || "#"}19911992      but got type:19931994          dynamic()19951996      where "form_for" was given the type:19971998          # type: dynamic(not false and not nil)1999          # from: lib/phoenix_live_view/helpers.ex:1101:142000          form_for = assigns[:for] || :erlang.error(ArgumentError.exception("missing :for assign to form"))20012002      where "form_options" was given the type:20032004          # type: dynamic(list({term(), term()}))2005          # from: lib/phoenix_live_view/helpers.ex:1102:182006          form_options = assigns_to_attributes(assigns, [:action, :for])20072008      you must assign "Phoenix.HTML.FormData.to_form(form_for, form_options)" to variable and pattern match on "%Phoenix.HTML.Form{}"20092010      type warning found at:2011      │2012 1106 │       form = %Phoenix.HTML.Form{2013      │              ~2014      │2015      └─ lib/phoenix_live_view/helpers.ex:1106:14: Phoenix.LiveView.Helpers.form/120162017     warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:20182019         %Phoenix.LiveView.UploadEntry{entry | valid?: false}20202021     but got type:20222023         dynamic()20242025     where "entry" was given the type:20262027         # type: dynamic()2028         # from: lib/phoenix_live_view/upload_config.ex:552:322029         entry20302031     when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"20322033     type warning found at:2034     │2035 553 │     entry = %UploadEntry{entry | valid?: false}2036     │             ~2037     │2038     └─ lib/phoenix_live_view/upload_config.ex:553:13: Phoenix.LiveView.UploadConfig.put_invalid_entry/320392040     warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:20412042         %Phoenix.LiveView.UploadEntry{entry | cancelled?: true}20432044     but got type:20452046         dynamic()20472048     where "entry" was given the type:20492050         # type: dynamic()2051         # from: lib/phoenix_live_view/upload_config.ex:635:422052         entry20532054     when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"20552056     type warning found at:2057     │2058 635 │         update_entry(conf, entry.ref, fn entry -> %UploadEntry{entry | cancelled?: true} end)2059     │                                                   ~2060     │2061     └─ lib/phoenix_live_view/upload_config.ex:635:51: Phoenix.LiveView.UploadConfig.cancel_entry/220622063    warning: Logger.disable/1 is deprecated. Use Logger.put_process_level(pid, :none) instead2064    │2065 72 │     Logger.disable(self())2066    │            ~2067    │2068    └─ lib/phoenix_live_view/test/client_proxy.ex:72:12: Phoenix.LiveViewTest.ClientProxy.init/120692070     warning: a struct for Phoenix.LiveViewTest.ClientProxy is expected on struct update:20712072         %Phoenix.LiveViewTest.ClientProxy{view | rendered: rendered}20732074     but got type:20752076         dynamic(%{..., rendered: map()})20772078     where "view" was given the type:20792080         # type: dynamic(%{..., rendered: map()})2081         # from: lib/phoenix_live_view/test/client_proxy.ex:701:242082         Phoenix.LiveViewTest.DOM.merge_diff(view.rendered, diff)20832084     when defining the variable "view", you must also pattern match on "%Phoenix.LiveViewTest.ClientProxy{}"20852086     type warning found at:2087     │2088 702 │         new_view = %ClientProxy{view | rendered: rendered}2089     │                    ~2090     │2091     └─ lib/phoenix_live_view/test/client_proxy.ex:702:20: Phoenix.LiveViewTest.ClientProxy.merge_rendered/320922093     warning: the right-hand side of || (shown as ... below) will never be executed:20942095         conn.private[:live_view_connect_info] || prune_conn(conn) || ...20962097     because the left-hand side always evaluates to:20982099         dynamic(not false and not nil)21002101     where "conn" was given the types:21022103         # type: dynamic(%Plug.Conn{assigns: %{..., live_module: term()}, status: integer()})2104         # from: lib/phoenix_live_view/test/live_view_test.ex:320:722105         %Plug.Conn{status: 200, assigns: %{live_module: live_module}} = conn21062107         # type: dynamic(%Plug.Conn{2108           assigns: %{..., live_module: term()},2109           private:2110             %{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or2111               non_struct_map(),2112           status: integer()2113         })2114         # from: lib/phoenix_live_view/test/live_view_test.ex:334:352115         conn.private[:live_view_connect_params]21162117     type warning found at:2118     │2119 335 │       connect_info: conn.private[:live_view_connect_info] || prune_conn(conn) || %{},2120     │       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2121     │2122     └─ lib/phoenix_live_view/test/live_view_test.ex:335: Phoenix.LiveViewTest.connect_from_static_token/221232124      warning: Plug.Conn.Query.decode_pair/2 is deprecated. Use decode_init/0, decode_each/2, and decode_done/2 instead2125      │2126 1095 │       Plug.Conn.Query.decode_pair({name, DOM.attribute(selected, "value")}, acc)2127      │                       ~2128      │2129      └─ lib/phoenix_live_view/test/client_proxy.ex:1095:23: Phoenix.LiveViewTest.ClientProxy.form_defaults/32130      └─ lib/phoenix_live_view/test/client_proxy.ex:1100:21: Phoenix.LiveViewTest.ClientProxy.form_defaults/32131      └─ lib/phoenix_live_view/test/client_proxy.ex:1110:27: Phoenix.LiveViewTest.ClientProxy.form_defaults/32132      └─ lib/phoenix_live_view/test/client_proxy.ex:1119:25: Phoenix.LiveViewTest.ClientProxy.form_defaults/321332134     warning: the following clause is redundant:21352136         def update(assigns, _key, fun) when is_function(fun, 1) or is_function(fun, 2)21372138     it has type:21392140         dynamic(), dynamic(), dynamic((none() -> term()) or (none(), none() -> term()))21412142     previous clauses have already matched on the following types:21432144         %Phoenix.LiveView.Socket{}, term(), (none(), none() -> term())2145         %Phoenix.LiveView.Socket{}, term(), (none() -> term())2146         term(), term(), (none(), none() -> term())2147         term(), term(), (none() -> term())21482149     │2150 952 │   def update(assigns, _key, fun) when is_function(fun, 1) or is_function(fun, 2) do2151     │       ~2152     │2153     └─ lib/phoenix_live_view.ex:952:7: Phoenix.LiveView.update/321542155     warning: this clause of defp class_names/1 is never used (or it will always fail/warn when invoked)2156     │2157 603 │   defp class_names(nil), do: []2158     │        ~2159     │2160     └─ lib/phoenix_live_view/js.ex:603:8: Phoenix.LiveView.JS.class_names/121612162     warning: the following clause is redundant:21632164         def to_iodata(%_{} = struct)21652166     it has type:21672168         dynamic(%Phoenix.LiveView.Rendered{})21692170     previous clauses have already matched on the following types:21712172         %Phoenix.LiveView.Rendered{}21732174     │2175 127 │     def to_iodata(%_{} = struct) do2176     │         ~2177     │2178     └─ lib/phoenix_live_view/engine.ex:127:9: Phoenix.HTML.Safe.Phoenix.LiveView.Rendered.to_iodata/121792180     warning: the 1st pattern in clause will never match:21812182         nil21832184     because it is expected to receive type:21852186         dynamic(%Phoenix.LiveView.Rendered{})21872188     hint: defimpl for Phoenix.LiveView.Rendered requires its callbacks to match exclusively on %Phoenix.LiveView.Rendered{}21892190     type warning found at:2191     │2192 131 │     def to_iodata(nil) do2193     │     ~~~~~~~~~~~~~~~~~~~~~2194     │2195     └─ lib/phoenix_live_view/engine.ex:131: Phoenix.HTML.Safe.Phoenix.LiveView.Rendered.to_iodata/121962197     warning: the following clause is redundant:21982199         def to_iodata(other)22002201     it has type:22022203         dynamic(%Phoenix.LiveView.Rendered{})22042205     previous clauses have already matched on the following types:22062207         %Phoenix.LiveView.Rendered{}22082209     │2210 135 │     def to_iodata(other) do2211     │         ~2212     │2213     └─ lib/phoenix_live_view/engine.ex:135:9: Phoenix.HTML.Safe.Phoenix.LiveView.Rendered.to_iodata/122142215Generated phoenix_live_view app2216warning: Phoenix now requires you to explicitly list which engine to use2217for Phoenix JSON encoding. We recommend everyone to upgrade to2218Jason by setting in your config/config.exs:22192220    config :phoenix, :json_library, Jason22212222And then adding {:jason, "~> 1.0"} as a dependency.22232224If instead you would rather continue using Poison, then add to2225your config/config.exs:22262227    config :phoenix, :json_library, Poison22282229  (phoenix 1.6.17) lib/phoenix.ex:56: Phoenix.start/22230  (kernel 11.0.4) application_master.erl:299: :application_master.start_it_old/422312232warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"2233  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/22234  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/12235  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/52236  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/22237  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/42238  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/222392240==> phoenix_live_dashboard2241Compiling 40 files (.ex)2242     warning: using single-quoted strings to represent charlists is deprecated.2243     Use ~c"" if you indeed want a charlist or use "" instead.2244     You may run "mix format --migrate" to change all single-quoted2245     strings to use the ~c sigil and fix this warning.2246     │2247 709 │     '#Port' ++ rest = :erlang.port_to_list(ref)2248     │     ~2249     │2250     └─ lib/phoenix/live_dashboard/page_builder.ex:709:522512252     warning: using single-quoted strings to represent charlists is deprecated.2253     Use ~c"" if you indeed want a charlist or use "" instead.2254     You may run "mix format --migrate" to change all single-quoted2255     strings to use the ~c sigil and fix this warning.2256     │2257 728 │     '#Ref' ++ rest = :erlang.ref_to_list(ref)2258     │     ~2259     │2260     └─ lib/phoenix/live_dashboard/page_builder.ex:728:522612262     warning: using single-quoted strings to represent charlists is deprecated.2263     Use ~c"" if you indeed want a charlist or use "" instead.2264     You may run "mix format --migrate" to change all single-quoted2265     strings to use the ~c sigil and fix this warning.2266     │2267 446 │   @inet_ports ['tcp_inet', 'udp_inet', 'sctp_inet']2268     │                ~2269     │2270     └─ lib/phoenix/live_dashboard/system_info.ex:446:1622712272     warning: using single-quoted strings to represent charlists is deprecated.2273     Use ~c"" if you indeed want a charlist or use "" instead.2274     You may run "mix format --migrate" to change all single-quoted2275     strings to use the ~c sigil and fix this warning.2276     │2277 446 │   @inet_ports ['tcp_inet', 'udp_inet', 'sctp_inet']2278     │                            ~2279     │2280     └─ lib/phoenix/live_dashboard/system_info.ex:446:2822812282     warning: using single-quoted strings to represent charlists is deprecated.2283     Use ~c"" if you indeed want a charlist or use "" instead.2284     You may run "mix format --migrate" to change all single-quoted2285     strings to use the ~c sigil and fix this warning.2286     │2287 446 │   @inet_ports ['tcp_inet', 'udp_inet', 'sctp_inet']2288     │                                        ~2289     │2290     └─ lib/phoenix/live_dashboard/system_info.ex:446:4022912292     warning: using single-quoted strings to represent charlists is deprecated.2293     Use ~c"" if you indeed want a charlist or use "" instead.2294     You may run "mix format --migrate" to change all single-quoted2295     strings to use the ~c sigil and fix this warning.2296     │2297 654 │         [{'none', 0, 0}] -> []2298     │           ~2299     │2300     └─ lib/phoenix/live_dashboard/system_info.ex:654:1123012302warning: 0..-2 has a default step of -1, please write 0..-2//-1 instead2303  lib/phoenix/live_dashboard/page_live.ex:178: Phoenix.LiveDashboard.PageLive.dashboard_mount_path/323042305warning: 0..-3 has a default step of -1, please write 0..-3//-1 instead2306  lib/phoenix/live_dashboard/page_live.ex:178: Phoenix.LiveDashboard.PageLive.dashboard_mount_path/323072308     warning: expected a module (an atom) when invoking __live__/0 in expression:23092310         Map.put(component_assigns, :page, page).__live__()23112312     but got type:23132314         dynamic(%{..., page: term()})23152316     where "component_assigns" was given the type:23172318         # type: dynamic(map())2319         # from: lib/phoenix/live_dashboard/components/nav_bar_component.ex:218:392320         Map.put(component_assigns, :page, page)23212322     where "page" was given the type:23232324         # type: dynamic()2325         # from: lib/phoenix/live_dashboard/components/nav_bar_component.ex:215:232326         page23272328     hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()23292330     type warning found at:2331     │2332 218 │         live_component(component, Map.put(component_assigns, :page, page))2333     │         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2334     │2335     └─ lib/phoenix/live_dashboard/components/nav_bar_component.ex:218: Phoenix.LiveDashboard.NavBarComponent.render_content/223362337     warning: expected a module (an atom) when invoking __live__/0 in expression:23382339         component_assigns.__live__()23402341     where "component_assigns" was given the type:23422343         # type: dynamic(%{..., page: term()})2344         # from: lib/phoenix/live_dashboard/page_live.ex:238:232345         component_assigns = Map.put(component_assigns, :page, assigns.page)23462347     hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()23482349     type warning found at:2350     │2351 239 │     live_component(component, component_assigns)2352     │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2353     │2354     └─ lib/phoenix/live_dashboard/page_live.ex:239: Phoenix.LiveDashboard.PageLive.render_page/223552356     warning: Postgrex.Interval.to_string/1 is undefined (module Postgrex.Interval is not available or is yet to be defined)2357     │2358 276 │     do: struct.to_string(value)2359     │                ~2360     │2361     └─ lib/phoenix/live_dashboard/pages/ecto_stats_page.ex:276:16: Phoenix.LiveDashboard.EctoStatsPage.format/223622363    warning: Logger.add_backend/1 is deprecated. Use LoggerBackends.add/2 from :logger_backends dependency2364    │2365  8 │     Logger.add_backend(Phoenix.LiveDashboard.LoggerPubSubBackend)2366    │            ~2367    │2368    └─ lib/phoenix/live_dashboard/application.ex:8:12: Phoenix.LiveDashboard.Application.start/223692370Generated phoenix_live_dashboard app2371warning: the :gettext compiler is no longer required in your mix.exs.23722373Please find the following line in your mix.exs and remove the :gettext entry:23742375    compilers: [..., :gettext, ...] ++ Mix.compilers(),23762377  (gettext 0.26.2) lib/mix/tasks/compile.gettext.ex:5: Mix.Tasks.Compile.Gettext.run/12378  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/52379  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/22380  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/42381  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/22382  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/523832384==> exshome2385Compiling 68 files (.ex)2386    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2387    │2388  5 │   use Exshome.Dependency.GenServerDependency, name: "utc_time"2389    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2390    │2391    └─ lib/exshome_clock/services/utc_time.ex:5: ExshomeClock.Services.UtcTime.handle_dependency_change/123922393    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2394    │2395  5 │   use Exshome.Dependency.GenServerDependency, name: "utc_time"2396    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2397    │2398    └─ lib/exshome_clock/services/utc_time.ex:5: ExshomeClock.Services.UtcTime.handle_event/223992400    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2401    │2402  6 │   use Exshome.Dependency.GenServerDependency,2403    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2404    │2405    └─ lib/exshome_clock/services/local_time.ex:6: ExshomeClock.Services.LocalTime.handle_dependency_change/124062407    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2408    │2409  6 │   use Exshome.Dependency.GenServerDependency,2410    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2411    │2412    └─ lib/exshome_clock/services/local_time.ex:6: ExshomeClock.Services.LocalTime.handle_event/224132414    warning: using single-quoted strings to represent charlists is deprecated.2415    Use ~c"" if you indeed want a charlist or use "" instead.2416    You may run "mix format --migrate" to change all single-quoted2417    strings to use the ~c sigil and fix this warning.2418    │2419 80 │       '--no-video',2420    │       ~2421    │2422    └─ lib/exshome_player/services/mpv_server.ex:80:724232424    warning: using single-quoted strings to represent charlists is deprecated.2425    Use ~c"" if you indeed want a charlist or use "" instead.2426    You may run "mix format --migrate" to change all single-quoted2427    strings to use the ~c sigil and fix this warning.2428    │2429 81 │       '--idle',2430    │       ~2431    │2432    └─ lib/exshome_player/services/mpv_server.ex:81:724332434    warning: using single-quoted strings to represent charlists is deprecated.2435    Use ~c"" if you indeed want a charlist or use "" instead.2436    You may run "mix format --migrate" to change all single-quoted2437    strings to use the ~c sigil and fix this warning.2438    │2439 82 │       '--no-cache',2440    │       ~2441    │2442    └─ lib/exshome_player/services/mpv_server.ex:82:724432444    warning: using single-quoted strings to represent charlists is deprecated.2445    Use ~c"" if you indeed want a charlist or use "" instead.2446    You may run "mix format --migrate" to change all single-quoted2447    strings to use the ~c sigil and fix this warning.2448    │2449 83 │       '--no-terminal',2450    │       ~2451    │2452    └─ lib/exshome_player/services/mpv_server.ex:83:724532454    warning: using single-quoted strings to represent charlists is deprecated.2455    Use ~c"" if you indeed want a charlist or use "" instead.2456    You may run "mix format --migrate" to change all single-quoted2457    strings to use the ~c sigil and fix this warning.2458    │2459 84 │       '--input-ipc-server=#{socket_path()}'2460    │       ~2461    │2462    └─ lib/exshome_player/services/mpv_server.ex:84:724632464    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2465    │2466  5 │   use Exshome.Dependency.GenServerDependency, name: "mpv_server"2467    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2468    │2469    └─ lib/exshome_player/services/mpv_server.ex:5: ExshomePlayer.Services.MpvServer.handle_dependency_change/124702471    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2472    │2473  5 │   use Exshome.Dependency.GenServerDependency, name: "mpv_server"2474    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2475    │2476    └─ lib/exshome_player/services/mpv_server.ex:5: ExshomePlayer.Services.MpvServer.handle_event/224772478    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2479    │2480  5 │   use Exshome.Dependency.GenServerDependency, name: "mpv_socket"2481    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2482    │2483    └─ lib/exshome_player/services/mpv_socket.ex:5: ExshomePlayer.Services.MpvSocket.handle_dependency_change/124842485    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2486    │2487  5 │   use Exshome.Dependency.GenServerDependency, name: "mpv_socket"2488    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2489    │2490    └─ lib/exshome_player/services/mpv_socket.ex:5: ExshomePlayer.Services.MpvSocket.handle_event/224912492    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2493    │2494 11 │   use Exshome.Dependency.GenServerDependency,2495    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2496    │2497    └─ lib/exshome_player/services/player_state.ex:11: ExshomePlayer.Services.PlayerState.handle_dependency_change/124982499    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2500    │2501 11 │   use Exshome.Dependency.GenServerDependency,2502    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2503    │2504    └─ lib/exshome_player/services/player_state.ex:11: ExshomePlayer.Services.PlayerState.handle_event/225052506    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2507    │2508 11 │   use Exshome.Dependency.GenServerDependency,2509    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2510    │2511    └─ lib/exshome_player/services/playlist.ex:11: ExshomePlayer.Services.Playlist.handle_dependency_change/125122513    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2514    │2515 11 │   use Exshome.Dependency.GenServerDependency,2516    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2517    │2518    └─ lib/exshome_player/services/playlist.ex:11: ExshomePlayer.Services.Playlist.handle_event/225192520    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2521    │2522  8 │   use Exshome.Dependency.GenServerDependency,2523    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2524    │2525    └─ lib/exshome_player/variables/duration.ex:8: ExshomePlayer.Variables.Duration.handle_dependency_change/125262527    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2528    │2529  8 │   use Exshome.Dependency.GenServerDependency,2530    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2531    │2532    └─ lib/exshome_player/variables/duration.ex:8: ExshomePlayer.Variables.Duration.handle_event/225332534    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2535    │2536  8 │   use Exshome.Dependency.GenServerDependency,2537    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2538    │2539    └─ lib/exshome_player/variables/path.ex:8: ExshomePlayer.Variables.Path.handle_dependency_change/125402541    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2542    │2543  8 │   use Exshome.Dependency.GenServerDependency,2544    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2545    │2546    └─ lib/exshome_player/variables/path.ex:8: ExshomePlayer.Variables.Path.handle_event/225472548    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2549    │2550  8 │   use Exshome.Dependency.GenServerDependency,2551    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2552    │2553    └─ lib/exshome_player/variables/pause.ex:8: ExshomePlayer.Variables.Pause.handle_dependency_change/125542555    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2556    │2557  8 │   use Exshome.Dependency.GenServerDependency,2558    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2559    │2560    └─ lib/exshome_player/variables/pause.ex:8: ExshomePlayer.Variables.Pause.handle_event/225612562    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2563    │2564  8 │   use Exshome.Dependency.GenServerDependency,2565    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2566    │2567    └─ lib/exshome_player/variables/position.ex:8: ExshomePlayer.Variables.Position.handle_dependency_change/125682569    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2570    │2571  8 │   use Exshome.Dependency.GenServerDependency,2572    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2573    │2574    └─ lib/exshome_player/variables/position.ex:8: ExshomePlayer.Variables.Position.handle_event/225752576    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2577    │2578  8 │   use Exshome.Dependency.GenServerDependency,2579    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2580    │2581    └─ lib/exshome_player/variables/title.ex:8: ExshomePlayer.Variables.Title.handle_dependency_change/125822583    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2584    │2585  8 │   use Exshome.Dependency.GenServerDependency,2586    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2587    │2588    └─ lib/exshome_player/variables/title.ex:8: ExshomePlayer.Variables.Title.handle_event/225892590    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2591    │2592  8 │   use Exshome.Dependency.GenServerDependency,2593    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2594    │2595    └─ lib/exshome_player/variables/volume.ex:8: ExshomePlayer.Variables.Volume.handle_dependency_change/125962597    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2598    │2599  8 │   use Exshome.Dependency.GenServerDependency,2600    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2601    │2602    └─ lib/exshome_player/variables/volume.ex:8: ExshomePlayer.Variables.Volume.handle_event/226032604warning: defining a Gettext backend by calling26052606    use Gettext, otp_app: ...26072608is deprecated. To define a backend, call:26092610    use Gettext.Backend, otp_app: :my_app26112612Then, instead of importing your backend, call this in your module:26132614    use Gettext, backend: MyApp.Gettext26152616  lib/exshome_web/gettext.ex:23: ExshomeWeb.Gettext (module)26172618    warning: using single-quoted strings to represent charlists is deprecated.2619    Use ~c"" if you indeed want a charlist or use "" instead.2620    You may run "mix format --migrate" to change all single-quoted2621    strings to use the ~c sigil and fix this warning.2622    │2623 21 │             class={"text-4xl #{if @deps.playlist.current_id == track.id, do: 'playing'}"}2624    │                                                                              ~2625    │2626    └─ lib/exshome_player/web/templates/playlist.html.heex:21:7826272628    warning: using single-quoted strings to represent charlists is deprecated.2629    Use ~c"" if you indeed want a charlist or use "" instead.2630    You may run "mix format --migrate" to change all single-quoted2631    strings to use the ~c sigil and fix this warning.2632    │2633 26 │             "#{if @deps.playlist.current_id == track.id, do: 'font-bold dark:text-yellow-200'} flex flex-col flex-grow pl-4 text-left justify-center overflow-x-auto overflow-y-hidden"2634    │                                                              ~2635    │2636    └─ lib/exshome_player/web/templates/playlist.html.heex:26:6226372638    warning: using single-quoted strings to represent charlists is deprecated.2639    Use ~c"" if you indeed want a charlist or use "" instead.2640    You may run "mix format --migrate" to change all single-quoted2641    strings to use the ~c sigil and fix this warning.2642    │2643  6 │     <div class={"icon mt-[15%] #{if @deps.pause, do: 'play', else: 'pause'}"}>2644    │                                                      ~2645    │2646    └─ lib/exshome_player/web/templates/preview.html.heex:6:5426472648    warning: using single-quoted strings to represent charlists is deprecated.2649    Use ~c"" if you indeed want a charlist or use "" instead.2650    You may run "mix format --migrate" to change all single-quoted2651    strings to use the ~c sigil and fix this warning.2652    │2653  6 │     <div class={"icon mt-[15%] #{if @deps.pause, do: 'play', else: 'pause'}"}>2654    │                                                                    ~2655    │2656    └─ lib/exshome_player/web/templates/preview.html.heex:6:68265726582659== Compilation error in file lib/exshome_web/endpoint.ex ==2660** (ArgumentError) invalid :json_decoder option. The module Poison is not loaded and could not be found2661    (plug 1.20.3) lib/plug/parsers/json.ex:48: Plug.Parsers.JSON.validate_decoder!/12662    (plug 1.20.3) lib/plug/parsers/json.ex:35: Plug.Parsers.JSON.init/12663    (plug 1.20.3) lib/plug/parsers.ex:283: anonymous fn/2 in Plug.Parsers.convert_parsers/22664    (elixir 1.20.3) lib/enum.ex:1725: Enum."-map/2-lists^map/1-1-"/22665    (elixir 1.20.3) lib/enum.ex:1725: Enum."-map/2-lists^map/1-1-"/22666    (plug 1.20.3) lib/plug/parsers.ex:263: Plug.Parsers.init/12667    (plug 1.20.3) lib/plug/builder.ex:358: Plug.Builder.init_module_plug/42668    (plug 1.20.3) lib/plug/builder.ex:339: anonymous fn/5 in Plug.Builder.compile/32669could not compile dependency :exshome, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile exshome --force", update it with "mix deps.update exshome" or clean it with "mix deps.clean exshome"