text:
Transparent support for 64-bit indexing in device algorithms

Summary
The user-friendly cub::Device* entry points into the CUB device algorithms assume that the problem size can be indexed with a 32-bit int. As evidenced by a slew of bug report against both CUB and Thrust, this often surprises users.
Current Workarounds
In #129, the recommendation is made to have users reach into the implementation details of CUB to directly instantiate and use the underlying cub::Dispatch* interfaces with 64-bit OffsetT types. This is what Thrust has been doing with its THRUST_INDEX_TYPE_DISPATCH macros.
Details
⚠ Note: this section is out of date and under active discussion. See the comments below for the current proposal. ⚠
Currently, the CUB device algorithms will fail if the problem size cannot be indexed using 32-bit integers. Users must reach past the public APIs and into the Dispatch layer to directly instantiate the algorithms with 64-bit index types if they want to use larger inputs. CUB's test harness does not check whether that these instantiations yield correct results, and while performance is expected to suffer with 64-bit indices, this impact is not quantified.
This situation is confusing for users and fragile. Large problem sizes are not uncommon in modern HPC applications, and we should fully support, test, and evaluate the performance of these usecases.
Some concerns have been raised about increasing compile times. Since the algorithm implementations must be instantiated twice, once for each index type, the build time is expected to roughly double. This can be worked around by controlling the instantiation with preprocessor macros. Users that will primarily target large datasets may only want to instantiate the 64-bit indexed path, while users who exclusively deal with smaller data can safely restrict the instantiations to the 32-bit indexed path.
Disabling either of the 32-bit or 64-bit indexed paths will limit the capability of the algorithm at runtime, and users should be able to detect if their problem size is inappropriate for the available indexing options. If the problem size is too large for 32-bit indexing and 64-bit indexing is disabled, the algorithm will fail gracefully with a clearly explained diagnostic. If the problem size is appropriate for 32-bit indexing but only 64-bit indexing is available, the user will be able to request that a warning is written to the CubLog diagnostic stream.
An additional concern is that this will require changes to the device algorithm call signatures, which exclusively use int parameters to pass problem sizes. These will need to be updated to size_t or cuda::std::int64_t. This change will be source compatible with existing usage, and is safe to do in a minor release.
Deliverables

[ ] Device algorithms will detect problem sizes at runtime and dispatch to either 32-bit or 64-bit indexed instantiations.

Use a mechanism similar to what Thrust does with the indexing macros.

[ ] Opt-out of 64-bit or 32-bit instantiations via preprocessor macros.

Save compile time for power users who are able to restrict problem sizes.

[ ] Preprocessor option to log warnings when 32-bit indexing could be used but is disabled.
[ ] Graceful failure with clearly explained diagnostic when 64-bit indexing is required but disabled.
[ ] Test all device algorithms with large problem sizes.
[ ] Unit test for '64-bit indexing required but disabled' diagnostic.
[ ] Remove dispatching code from Thrust and just call CUB device algorithms directly.

Makes Thrust code easier to read, write, and maintain.

Thank you for raising this concern @allisonvacanti. A point of reference for this discussion can be found in https://github.com/cupy/cupy/issues/3309, which in turn points to #129 that you already referenced. An acceptable compromise to me is to keep cub::Dispatch* documented as a public API. Downstream libraries like CuPy need to get this kind of strong guarantee in order to move on and actually use it. We don't have the bandwidth to chase after changes in CUB if it's considered private. Thanks.

@leofang My suggestion was to keep the Dispatch layer private, but automatically switch to 64-bit indices in the Device layer when needed. This way, there's only one entry point that users should need to worry about and they won't have to even consider their input size when calling into CUB -- we'll just do "The Right Thing" for the provided inputs.
Is there a reason you would prefer to continue using the Dispatch layer instead?

I was merely summarizing my thoughts from cupy/cupy#3309. As I said it's a compromise, so if there's an alternative way (like what you suggested) it would be certainly better! 🙂 We haven't done any work using the dispatch layer yet.

Related: #215 from @RAMitchell fixed a number of index truncations in the Agent layer.

It is certainly true that adding int64_t instantiations increases compile time, and that they come with a non-trivial performance penalty. In pytorch land we are working around both these problem by splitting inputs into the chunks that can be processed with int32_t indexing. This may be hard to impossible to do for some algorithms (e.g. sort), but other (reduction, scan, compaction) lend themselves very well to this optimization. In fact, pytorch has its own wrapper around scan that allows it to use int32_t scan from cub for arbitrarily large inputs  https://github.com/pytorch/pytorch/blob/d9e6750759b78c68e7d98b80202c67bea7ba24ec/aten/src/ATen/native/cuda/ScanKernels.cu#L474-L518

Just to update the status of this issue, it's been pushed back to the 1.13-1.14 milestone. I'm working on a new performance monitoring and tuning framework for Thrust/CUB, and I'd like to have that in place before I make any large changes that could impact performance. 64-bit indexing is still one of my top priorities once I can safely start making sweeping changes like this.
@ngimel Thanks for sharing that example -- it sounds an approach that we should explore to optimize these.

This came up in the context of #340, making a note here.
The "preprocessor macros to control 32-bit vs 64-bit vs both code paths" implementation could be something like:
// Create cub/detail/offset_dispatch.cuh and define this CUB_OFFSET_DISPATCH
// macro:

#if defined(CUB_NO_32BIT_OFFSETS) // Always 64-bit offsets

#define CUB_OFFSET_DISPATCH(impl32, impl64, num_items) impl64

#elif defined(CUB_NO_64BIT_OFFSETS) // Always 32-bit offsets

#define CUB_OFFSET_DISPATCH(impl32, impl64, num_items) impl32

#else // Default; Runtime check + select best offsets

#define CUB_OFFSET_DISPATCH(impl32, impl64, num_items)                         \
  do                                                                           \
  {                                                                            \
    if (num_items <= cub::NumericTraits<std::int32_t>::Max())                  \
    {                                                                          \
      impl32;                                                                  \
    }                                                                          \
    else                                                                       \
    {                                                                          \
      impl64;                                                                  \
    }                                                                          \
  } while (false)
#endif

// Use CUB_OFFSET_DISPATCH in the Device layer to pick a Dispatch
// implementation:
struct DeviceRadixSort
{
  template <typename KeyT>
  CUB_RUNTIME_FUNCTION static cudaError_t SortKeys(...,
                                                   std::size_t num_items,
                                                   ...)
  {
    using Dispatch32 = DispatchRadixSort<false, KeyT, NullType, std::int32_t>;
    using Dispatch64 = DispatchRadixSort<false, KeyT, NullType, std::int64_t>;

    CUB_OFFSET_DISPATCH(
      return Dispatch32::Dispatch(...,
                                  static_cast<std::int32_t>(num_items),
                                  ...),
      return Dispatch64::Dispatch(...,
                                  static_cast<std::int64_t>(num_items),
                                  ...),
      num_items);
  }
};

Other notes:

The Device layer functions should accept std::size_t num_items.
Internally we'll use OffsetT = std::int64_t or std::int32_t when instantiating the Dispatch layer templates.

We can revisit this later, but for now stick with signed types. The current implementations are written and tested using signed types, and we'd risk introducing regressions by switching to unsigned.

We should leave the Device layer functions that accept int num_items in place.

This way users won't have to work-around signed-vs-unsigned warnings in code that currently passes int.
Once we have all CUB device algorithms ported to support std::size_t num_items, we can deprecate all of the int num_items overloads at once.

I think other libraries were using int64_t or long long int rather than size_t with the thought being that 2^63 was sufficiently large to handle all cases, and the sign bit could help with sentinels or error codes. If I'm understanding correctly, is the user going to be exposed to a size_t, but internally it was cast to a signed 64-bit? Can the exposed API just be signed 64?

It is certainly true that adding int64_t instantiations increases compile time, and that they come with a non-trivial performance penalty. In pytorch land we are working around both these problem by splitting inputs into the chunks that can be processed with int32_t indexing.

To add more context, in RAPIDS cuDF our input sizes are also limited to int32_t (but this is not without a lot of consternation from users).
This requirement largely comes from the Apache Arrow spec, which historically limited the size of a column to an int32_t.
I'd be curious to look at how various STL implementations handle this problem in various std:: algorithms. Maybe they just always use size_t and don't worry about it.

Looking at something like std::for_each_n, the size parameter type is a template, so that allows configuration and avoids any double instantiation without any macro stuff.
It wouldn't work for existing code, but one option would be making all CUB algorithms be *_n algorithms where the size type is a template.
This is much further out, but we could also look at solving this problem with a ranges like interface for CUB algorithms. The return type of ranges::size is deduced from the static properties of the viewed range. So users could select the CUB instantiation implicitly based on the size_type of their container/range.

Can the exposed API just be signed 64?

I'm concerned about signed/unsigned warnings in the common case of using a container (e.g. std::size_t thrust::device_vector<T>::size()) to produce num_items. If we want to use the extra bit for sentinals, etc, that'd be an implementation detail that shouldn't be exposed in the public API.

Could this be a template parameter?

I haven't thought this through completely, but I'm not opposed to this idea. The int case for existing users would still work, and we can use runtime checks to ensure that the passed in type can be converted to a known-good OffsetT, erroring out if needed.
Since the STL handles it this way I imagine it should be fairly robust. Maybe @brycelelbach @griwes or @ericniebler have thoughts on this.
One potential issue is that if a user calls the same function with different types for the size, they'll instantiate multiple instances of what is essentially the same function. Since pretty much everything in CUB is marked __forceinline__, this could be surprisingly problematic. But maybe this will just motivate us to remove some of those annotations...

Couldn't the index type also be inferred from the std::iterator_traits<It>::difference_type?

This would be correct, but I'd prefer the template over this, mainly for the simpler API :P The "64-bit ptrdiff_t" issue shouldn't be a problem, since we'd check at runtime whether 32 or 64 bit indices should be used in the actual implementation based on the value of num_items.

Updating with an offline conversation, we may want to replace the macros with a per-call solution via a policy class. This would prevent surprises (like changing the behavior of Thrust/stdpar).
It would also open the door for additional customizations, like tuning parameter overrides, launch bounds, etc.

Another update from an offline conversation:
Currently the preferred approach is to use the SizeT provided by the user (that is, the inferred type of num_items), and use that to statically deduce OffsetT, adjusting for signedness, etc as required by the algorithm's implementation:
struct DeviceRadixSort
{
  template <..., typename SizeT, ...>
  CUB_RUNTIME_FUNCTION static
  cudaError_t SortKeys(..., SizeT num_items, ...)
  {

    using OffsetT = /* Either int32 or int64 depending on whether or not int32 can represent the full range of SizeT */
    using Dispatch = DispatchRadixSort<..., OffsetT>;
    return Dispatch::Dispatch(..., static_cast<OffsetT>(num_items), ...);
  }
};

This is a much simpler approach than I previously proposed, and provides the user with the most control and flexibility. For each call into a CUB algorithm, the user can choose the exact behavior they desire:

Don't care about peak performance and just want decent performance, ease of use, fast(ish) compiles, and reliability? Just pass std::size_t.
Don't care about 64-bit support and want maximum performance for your smallish datasets? Just pass an int.
Want the right tool for the job under variable conditions, no matter the cost? Explicitly use runtime dispatch.

If we properly document this as a performance consideration, users should be able to get exactly what they want out of it.
Additional considerations:

Avoiding unnecessary template instantiations is important.

Compiling CUB code is slow. For instance, Thrust's test suite takes 2-3 minutes to build for the CPU threaded backends, but 20-60 minutes for the CUB backend (depending on arch flags).
Consumers of CUB often instantiate our algorithms for at least a dozen types in generic template code. According to @jrhemstad, RAPIDS needs to support 25 distinct types. Other libraries I've worked on stick with the 14 built-in numeric types, and face frequent user complaints about compile times and memory requirements when building the CUB-based backends.

Initial benchmarks show that the overhead of using 64-bit indices for inputs that could be indexed with int32 is roughly 10%.

This isn't great, but it isn't catastrophic. Users can write their own runtime dispatch if they're concerned about this.

How many OffsetT should we support in the deduction?

We'll need to explicitly add tests for each type we support, so I think two should be plenty: int32 and int64.
Use signed types (for now) because we've had issues with some algorithm implementations breaking when OffsetT is unsigned.

This means we technically won't support the case where num_items falls between int64_t and uint64_t (e.g. std::size_t on most platforms).
I don't think this is a real issue, we can kick support for num_items > 2^63 this down the road a little longer :)

We need a way to determine the maximum value of a SizeT at compile-time from host/device code.

std::numeric_limits<T>::max() is not usable from device code.
cub::NumericTraits<T>::Max() is not constexpr (We can change this -- this is likely the short term fix)
Eventually we'll be adding dependency on libcu++, so we can use their numeric_limits implementation when that happens. This is the best long-term fix.

There will be some odd issues around 32-bit SizeT signedness: SizeT = int32_t -> OffsetT = int32_t, but SizeT = uint32_t -> OffsetT = int64_t.

This can be addressed via documentation.
We can also add more tests and make the implementations robust against unsigned OffsetT, but this may be a lot of work for some algorithms.

Updated previous comment to incorporate additional feedback from @canonizer @jrhemstad and @dumerrill.
Changes:

Added static_assert(std::is_integral<SizeT>::value) to Device function body.
Use unsigned offsets instead of signed -- since we'll be porting these algorithms incrementally, we can afford to spend some time fixing any issues that arise from the change in signedness. This avoids surprises when SizeT is uint32 vs int32 (the former would be forced to use int64 signed offsets otherwise).
Added note that there's no point in optimizing for sizeof(OffsetT) < 4, since hardware will promote to 4B anyway.

Use unsigned offsets instead of signed -- since we'll be porting these algorithms incrementally, we can afford to spend some time fixing any issues that arise from the change in signedness. This avoids surprises when SizeT is uint32 vs int32 (the former would be forced to use int64 signed offsets otherwise).

I just happened to be re-reviewing this issue and noticed this.
We should be very careful about forcing things to unsigned. Using unsigned types for loops/indexing can impact performance as the compiler isn't usually able to unroll a loop that uses an unsigned loop variable as it has to allow for the unsigned type to overflow whereas it can assume a signed type will not overflow.

I'm going to close this in favor of https://github.com/NVIDIA/cccl/issues/47 where we will be distill the relevant conclusions from the discussion here.

authors: allisonvacanti cliffburdick jrhemstad leofang ngimel

repo: NVIDIA/cub


text:
[BUG] Document overriding the spark rapids jar in docker image and name used

Describe the bug
Using the released docker image with the Job Workflow options in databricks, the Spark UI doesn't load.   It first goes to the master UI and then if still try to click through to the application UI, it gives a bad gateway.

it turns out I had conflicting spark rapids jars. not sure why this caused UI issues but it did.
We should document how to properly override the spark rapids jar in the docker image.

the docker image has the jar at /databricks/jars/rapids-4-spark_2.12-22.10.0-cuda11.jar    The dockerfile in this repo has default as rapids-4-spark_2.12-22.10.0.jar

so to override the jar file the user would just need to specify their own init script and then add lines like:
They would want to start with the script file:/opt/spark-rapids/init.sh (see https://github.com/NVIDIA/spark-rapids-container/tree/dev/Databricks)
and then add lines like:
rm -f /databricks/jars/rapids-4-spark_*
cp /dbfs/user/foo/rapids-4-spark_2.12-22.12.0-SNAPSHOT-cuda11-something.jar /databricks/jars

source: gharchive/issue

repo: NVIDIA/spark-rapids-container

license_type: permissive

license_source: github-api


text:
[submodule-sync] bot-submodule-sync-branch-23.06 to branch-23.06 [skip ci] [bot]

submodule-sync to create a PR keeping thirdparty/cudf up-to-date.
HEAD commit SHA: 538772d9dcd161d05eba9a40418a604648340678, cudf commit SHA: https://github.com/rapidsai/cudf/commit/12060af1d9c3f0d1400feca9cb8b9656ccc3ca2a
This PR will be auto-merged if test passed. If failed, it will remain open until test pass or manually fix.

HEAD commit SHA: 538772d9dcd161d05eba9a40418a604648340678, CUDF commit SHA: https://github.com/rapidsai/cudf/commit/12060af1d9c3f0d1400feca9cb8b9656ccc3ca2a
Test passed: False

HEAD commit SHA: 4c31cc56278f3f91d0f6eedd3bbfaa989e3f42ae, CUDF commit SHA: https://github.com/rapidsai/cudf/commit/e883a119bacda999532c382190d80f634fcf21fb
Test passed: True

SUCCESS - auto-merge

source: gharchive/pull-request

repo: NVIDIA/spark-rapids-jni


text:
[submodule-sync] bot-submodule-sync-branch-23.10 to branch-23.10 [skip ci] [bot]

submodule-sync to create a PR keeping thirdparty/cudf up-to-date.
HEAD commit SHA: 1d1a4f2c5d37d2d965803721a255c1ca3d80f2df, cudf commit SHA: https://github.com/rapidsai/cudf/commit/4fd6dd7b960e497abd13127e8eb7939f168bce08
This PR will be auto-merged if test passed. If failed, it will remain open until test pass or manually fix.

HEAD commit SHA: 1d1a4f2c5d37d2d965803721a255c1ca3d80f2df, CUDF commit SHA: https://github.com/rapidsai/cudf/commit/4fd6dd7b960e497abd13127e8eb7939f168bce08
Test passed: True

SUCCESS - auto-merge


text:
[submodule-sync] bot-submodule-sync-branch-24.10 to branch-24.10 [skip ci] [bot]

submodule-sync to create a PR keeping thirdparty/cudf up-to-date.
HEAD commit SHA: e78fc56b690054d195befc010f935c4405854f04, cudf commit SHA: https://github.com/rapidsai/cudf/commit/24997fda194d5b8af34048a8bf275830cabbff8c
This PR will be auto-merged if test passed. If failed, it will remain open until test pass or manually fix.

HEAD commit SHA: e78fc56b690054d195befc010f935c4405854f04, CUDF commit SHA: https://github.com/rapidsai/cudf/commit/24997fda194d5b8af34048a8bf275830cabbff8c
Test passed: True

SUCCESS - auto-merge


text:
[submodule-sync] bot-submodule-sync-branch-22.04 to branch-22.04 [skip ci] [bot]

submodule-sync to create a PR keeping thirdparty/cudf up-to-date.
HEAD commit SHA: b89ac17e5e74947d2af2bb3b841b28874f4c8737, cudf commit SHA: https://github.com/rapidsai/cudf/commit/a4f2e10c6c04b6b032cca944ab2ebd1111e3866a
This PR will be auto-merged if test passed. If failed, it will remain open until test pass or manually fix.

HEAD commit SHA: b89ac17e5e74947d2af2bb3b841b28874f4c8737, CUDF commit SHA: https://github.com/rapidsai/cudf/commit/a4f2e10c6c04b6b032cca944ab2ebd1111e3866a
Test passed: True

SUCCESS - auto-merge


text:
[AUDIT][SPARK-48215][SQL] Extending support for collated strings on date_format expression

Is your feature request related to a problem? Please describe.
Below PR extends support for collated strings on date_format function.
We may have to test it and update the datatype to match this for Spark-4.0.
Apache Spark commit - https://github.com/apache/spark/commit/e04d3d7c430

Similar to https://github.com/NVIDIA/spark-rapids/issues/10876.

From @revans2: "The plan is explicitly to not support collated strings and to fallback to the CPU if we see them. This is a very large amount of work to try and support it, and I don't think we want to try and tackle it would a clear customer need."

repo: NVIDIA/spark-rapids


text:
Revert "Add Support for Multiple Filtering Keys for Subquery Broadcast "

Reverts NVIDIA/spark-rapids#10858
Considering this is burn down, this shouldn't have been merged in 24.06 branch

build


text:
Skip test_hash_groupby_approx_percentile byte and double tests tempor…

…arily
Unblocking CI for now due to https://github.com/NVIDIA/spark-rapids/issues/11463.
Once the cuDF issue is done we should revert this PR.

build


text:
Fix bug: add timeout for cache deps steps

Add timeout to cache-dependency steps of mvn-verify workflow to avoid hanging in exception.
Add continue-on-error option for steps requires cache key to ensure these steps can work well even cannot find cache key

Test with sleep + timeout: https://github.com/YanxuanLiu/spark-rapids/actions/runs/12408709912/job/34640896278#step:6:2

build


text:
The tone of syn wav is wrong, sound like dialects.

have anyone got the same problem
syn:

origin:

Closing due to inactivity.

authors: hdmjdp rafaelvalle


text:
Does TRTIS support model parallelism?

Hi all, does TRTIS support model parallelism?, I mean, if a single model is copied in several GPUs to maximize inference throughput. Thanks,

Yes, you can serve multiple different models, multiple instances of the same model, or multiple instances of multiple models, on one or more CPUs and GPUs, simultaneously.
The docs discuss it here: https://docs.nvidia.com/deeplearning/sdk/tensorrt-inference-server-master-branch-guide/docs/model_configuration.html?highlight=batching#instance-groups
As does this blog post (in the Performance section): https://devblogs.nvidia.com/nvidia-serves-deep-learning-inference/

@deadeyegoodwin, thanks for your prompt reply

@deadeyegoodwin for a large model that doesn't fit on a single GPU, how does triton split the model onto mutlple GPUs then?

Triton may not support this case based on my experience.

authors: deadeyegoodwin shanshanpt vilmara

repo: NVIDIA/tensorrt-inference-server


text:
TRITON cannot access MINIO

Description
I did setup MINIO server and set policy on bucket to public. I have verified the access (event without secret key).
example setup MINIO:
docker run -p 9000:9000 --name minio1 -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" -v /home/model_bucket:/data minio/minio server /data
I am able to connect to MINIO using MINIO client:
docker run -it --entrypoint=/bin/sh minio/mc
mc config host add minio http://xx.xxx.x.xxx:9000 AKIAIOSFODNN7EXAMPLE wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY --api S3v4
mc --debug ls minio //command works fine - list my buckets
I did setup public permission for my bucket:
mc policy set download minio/inference/
Works fine, I can access server using curl. (no secret key)
I tried to run TRITON:
nvidia-docker run --rm --shm-size=1g --ulimit memlock=-1 -p8000:8000 -p8001:8001 -p8002:8002 nvcr.io/nvidia/tritonserver:20.03-py3 trtserver --model-repository=s3://xx.xxx.x.xxx:9000/inference/
Error message:
I0409 23:40:33.851714 1 server.cc:120] Initializing Triton Inference Server error: creating server: INTERNAL - Could not get MetaData for bucket with name xx.xxx.x.xxx:9000 Failed to load.
I have verified the connection to minio from 2 desktops (works fine).
Based on the documentation MINIO should be supported.
Triton Information
nvcr.io/nvidia/tritonserver:20.03-py3
Are you using the Triton container or did you build it yourself?
Container
Expected behavior
Connect to MINIO and sync models.

The error above describes a failure to recognize that the url is a MINIO s3 url. The above issue was resolved when we fixed the s3_regex to detect MINIO buckets from
s3_regex("s3://([a-z]+):([0-9]+)/([0-9a-z.-]+)(((/[0-9a-zA-Z.-_]+)*)?)") to
s3_regex("s3://([0-9a-zA-Z-.]+):([0-9]+)/([0-9a-z.-]+)(((/[0-9a-zA-Z.-_]+)*)?)" in this PR: https://github.com/NVIDIA/triton-inference-server/pull/1175

Fixed by #1175.

authors: CoderHam deadeyegoodwin maondra

repo: NVIDIA/triton-inference-server


text:
models can't be loaded

~/Sana$ DEMO_PORT=15432 python app/app_sana.py       --config=configs/sana_config/1024ms/Sana_1600M_img1024.yaml       --model_path=hf://Efficient-Large-Model/Sana_1600M_1024px/checkpoints/Sana_1600M_1024px.pth
2024-11-24 23:37:37 - [Sana] - INFO - Sampler flow_dpm-solver, flow_shift: 3.0
2024-11-24 23:37:37 - [Sana] - INFO - Inference with torch.float16, PAG guidance layer: [8]
[DC-AE] Loading model from mit-han-lab/dc-ae-f32c32-sana-1.0
Loading checkpoint shards: 100%|██████████████████████████████████████████████████████████| 2/2 [00:00<00:00,  4.50it/s]
2024-11-24 23:37:58 - [Sana] - WARNING - use pe: False, position embed interpolation: 1.0, base size: 32
2024-11-24 23:37:58 - [Sana] - WARNING - attention type: linear; ffn type: glumbconv; autocast linear attn: False
2024-11-24 23:38:09 - [Sana] - INFO - use_fp32_attention: True
2024-11-24 23:38:09 - [Sana] - INFO - SanaMS:SanaMS_1600M_P1_D20,Model Parameters: 1,604,462,752
Fetching 4 files: 100%|█████████████████████████████████████████████████████████████████| 4/4 [00:00<00:00, 4848.91it/s]
[Sana] Loading model from /home/moon/.cache/huggingface/hub/models--Efficient-Large-Model--Sana_1600M_1024px/snapshots/bc305d7162d18570064236b17a3732dff1d57861/checkpoints/Sana_1600M_1024px.pth
2024-11-24 23:38:15 - [Sana] - INFO - Generating sample from ckpt: hf://Efficient-Large-Model/Sana_1600M_1024px/checkpoints/Sana_1600M_1024px.pth
2024-11-24 23:38:15 - [Sana] - WARNING - Missing keys: ['pos_embed']
2024-11-24 23:38:15 - [Sana] - WARNING - Unexpected keys: []
Loading checkpoint shards: 100%|██████████████████████████████████████████████████████████| 2/2 [00:01<00:00,  1.25it/s]
Some parameters are on the meta device because they were offloaded to the cpu.
You shouldn't move a model that is dispatched using accelerate hooks.
Traceback (most recent call last):
File "/home/moon/Sana/app/app_sana.py", line 203, in
).to(device)
File "/home/moon/miniconda3/envs/sana/lib/python3.10/site-packages/accelerate/big_modeling.py", line 456, in wrapper
raise RuntimeError("You can't move a model that has some modules offloaded to cpu or disk.")
RuntimeError: You can't move a model that has some modules offloaded to cpu or disk.
I did reinstalling conda, git pull and git stash and it didn't work with the same error.

removing safety checker fixed this

still happening, I have to remove safety_checker from demo

repo: NVlabs/Sana


text:
The constructor does not work for windows server 2012 R2

Use the constructor, try it in windows 2012 R2 and it did not work, only all the modules in win 7

is it works in windows server 2008!

You means plugins? You need to install 2.0 framework, or compile the plugins to 4.0

windows 2012 = Plugins 4.0
windows 2008 = Plugins 2.0

authors: NYAN-x-CAT sercoss

repo: NYAN-x-CAT/Lime-RAT

license: MIT


text:
Design Land Use Map + Metrics

Should be one "subsection" under "Land Use & Zoning" section in the CD layout, contains Contextual land use map + land use metrics for the CD.

Closed by #33

repo: NYCPlanning/labs-community-portal

license: mit

license_source: bigquery


text:
[WIP] DSD-555: Structured Content

Fixes JIRA ticket DSD-555
This PR does the following:

Adds the StructuredContent component. Still a work-in-progress.

@bigfishdesign13  can you check the progress so far before I proceed? I'm more worried about the Image's aspect ratio in whenever the imageAspectRatio prop is not set to ImageRatios.Original. The following screenshots use ImageRatios.Square (the default) and you can see it takes the width of the caption (and credit), otherwise, it displays in its desired size:

with a longish caption/credit

with a short caption/credit

no caption/credit

How has this been tested?

No tests yet!
Accessibility concerns or updates

Should we use the section and article HTML elements?

Checklist:

[ ] I have updated the Storybook documentation accordingly.
[ ] I have added relevant accessibility documentation for this pull request.
[ ] All new and existing tests passed.

Front End Review:

[ ] View the example in Storybook

Tugboat has finished building the preview for this pull request!
Link:

https://pr827-2iyp0sq7qauranirqe2bkusz7k72oja8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/61d36bed7499db65228b92ef

@EdwinGuzman Sorry, I submitted my review before adding my comment.
Overall, this looks pretty good.  I left a few code comments, but I also wanted to talk about the image size issue that you noted.  Similar to Card, when imageSize is set to default, this component needs to set a specific width value and not simply use 100%.  Card sets the image to the medium size when imageSize is set to default.  StructuredContent should do the same.

Tugboat has finished building the preview for this pull request!
Link:

https://pr827-2iyp0sq7qauranirqe2bkusz7k72oja8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/61d36bed7499db65228b92ef

@bigfishdesign13 This is now ready to be fully reviewed. The image is now rendering correctly, on either the left or right side, when the size and aspect ratio are updated.

I mentioned this in the spec doc but I changed the callout content heading from the initial level 4 to level 3 with the display size as "callout". Otherwise, we get this accessibility warning:

Tugboat has finished building the preview for this pull request!
Link:

https://pr827-2iyp0sq7qauranirqe2bkusz7k72oja8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/61d36bed7499db65228b92ef

Tugboat has finished building the preview for this pull request!
Link:

https://pr827-2iyp0sq7qauranirqe2bkusz7k72oja8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/61d36bed7499db65228b92ef

Tugboat has finished building the preview for this pull request!
Link:

https://pr827-2iyp0sq7qauranirqe2bkusz7k72oja8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/61d36bed7499db65228b92ef

@bigfishdesign13 updated.

Tugboat has finished building the preview for this pull request!
Link:

https://pr827-2iyp0sq7qauranirqe2bkusz7k72oja8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/61d36bed7499db65228b92ef

Tugboat has finished building the preview for this pull request!
Link:

https://pr827-2iyp0sq7qauranirqe2bkusz7k72oja8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/61d36bed7499db65228b92ef

Tugboat has finished building the preview for this pull request!
Link:

https://pr827-2iyp0sq7qauranirqe2bkusz7k72oja8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/61d36bed7499db65228b92ef

Updated.

Tugboat has finished building the preview for this pull request!
Link:

https://pr827-2iyp0sq7qauranirqe2bkusz7k72oja8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/61d36bed7499db65228b92ef

Tugboat has finished building the preview for this pull request!
Link:

https://pr827-2iyp0sq7qauranirqe2bkusz7k72oja8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/61d36bed7499db65228b92ef

Tugboat has finished building the preview for this pull request!
Link:

https://pr827-2iyp0sq7qauranirqe2bkusz7k72oja8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/61d36bed7499db65228b92ef

repo: NYPL/nypl-design-system


text:
Introduce RecordPersisterFactory

As there is a SourcePersisterFactory, I thought it would be great if there is also one for the RecordPersister.
Let me know what do you think.

Thanks for contribution! I just merged FileSystemRecordPersister mind adding a factory for that as well?

@digitalbuddha Since this is something that we also need, I am making a PR for it. Do you have any ETA when these could be released on Maven?

In that case let me merge this PR first and then you can make yours.  2.0.1-SNAPSHOT will be up within 15 min of me merging the pr.  If you need a release I can do one monday.

authors: charbgr digitalbuddha pavlospt

repo: NYTimes/Store


text:
Completed Restful API Model ML

Insya Allah that code is completed for API Model, but the PR is connect with cloud storage

oke,.. bentar aku cek yaa,.. biar gak conflik

okee mantap

Oke siapp

authors: NafMn chocolatecodelab

repo: NafMn/peoplemissing-project


text:
reset(mock1, mock2) expects that mock1 and mock2 have the same type.

I am not sure if this is an error or a feature request, so I did not trusted my self to do a PR
The definition for reset is:
https://github.com/NagRock/ts-mockito/blob/6637048fdc72b676efcf210bc5be8d432c4ce1b1/src/ts-mockito.ts#L76-L79
That means, that we can just use multiple mocks if they have the same type. Is this the expected behavior? I thought the idea was to be able to do:
const mock1 = mock(MyWonderClass);
const mock2 = mock(ThisIsAnotherClass);

reset(mock1, mock2)

as workaround one can set the reset as  any but this feels dirty
reset<any>(mock1, mock2)

This certainly seems like a mistake with the types.

authors: distante fgblomqvist

repo: NagRock/ts-mockito


text:
How to send some date to the runInlineMenu callback?

Have generate inlineMenu from some json-array. Code:
var sectionTitles=[];
var layoutList=[];
for(data in someArray){
     sectionTitles.push({
          text: data,
          callback: (mes) => {
               console.log(data)
          }
     })
     layoutList.push('1');
}
tg.runInlineMenu(tgUser, 'sendMessage', 'Press some button:', {}, sectionTitles, layoutList)

Buttons name from JSON-array put correctly. But in console.log show me "undefined".
How I can send data from JSON-array in runInlineMenu callback?

I have same question, you fix it?

Yes. But use other way:
I use callback_data field when build buttons array with some parameter (id, short_string and other) and then check callbacks with callbackQueries.
Something like this:
var kb=[]
for(var i=0;i<5;i++){
  kb.push([{text:i, callback_data:i}]) //generate buttons array with callback_data field
}
$.sendMessage('Some message', {
  reply_markup: JSON.stringify({
    inline_keyboard: kb //input buttons
  })
});

and then
tg.callbackQueries(($) => { //wait callbacks
  console.log($.data) //then find what you need
})

It's work for me.

Nice, Thanks a lot. In my code instead of the "i" I'm using the controller's and command /yes that is in the tutorial. You have some idea how does this work? I want to go from the keyboard button to another command/controller with different code.

I think you can use callback_data with command and args (if need it).
Something like this:
{text:'Button text', callback_data:'/command, args'};
And then parse it in callbackQueries.
I'm not shure that is the correct way. But I think it's can work.

authors: RobotCharly dangear

repo: Naltox/telegram-node-bot


text:
Cannot hook pipeline for static files

I've added this to the pipeline:
ApplicationPipelines.BeforeRequest += ((ctx) => {
    LogTo.Info($"{ctx.Request.UserHostAddress} - {ctx.Request.Method} {ctx.Request.Path}");
    return null;
});

Which works great for everything apart from static files. Nothing I've tried allows to me see the static files in the before or after request pipelines.  I'm hosting Nancy in Nowin and its the only middleware. Am I missing something? Version: 1.4.3

Hi,
This is not possible because the static content handler is executed before the request pipeline. There would be a substantial performance overhead if each request, for a static file, would have to be put through the pipelines. The only way you could get this behaviour was if you didn't use the IStaticContentProvider and used a module to handle static content

then this contradicts with the documentation that states it is part of the pipeline?

Nancy supports multiple static content conventions at once and is shipped with a default convention that will look for files in the /Content path of your application. The static content handler in Nancy is executed as a BeforeRequest filter in the application pipeline.

https://github.com/NancyFx/Nancy/wiki/Managing-static-content

Yes, that used to be true but was changed quite a while ago. Thanks for
pointing it out, I will update the documentation ASAP
On Mar 1, 2016 7:03 PM, "Meirion Hughes" notifications@github.com wrote:

then this contradicts with the documentation that states it is part of the
pipeline?
Nancy supports multiple static content conventions at once and is shipped
with a default convention that will look for files in the /Content path of
your application. The static content handler in Nancy is executed as a
BeforeRequest filter in the application pipeline.
https://github.com/NancyFx/Nancy/wiki/Managing-static-content
—
Reply to this email directly or view it on GitHub
https://github.com/NancyFx/Nancy/issues/2328#issuecomment-190835417.

Okay cool, no problem. I suppose I can add owin middleware to do the logging before Nancy.

This may help https://github.com/VQComms/TracingMiddleware
On 1 March 2016 at 18:16, Meirion Hughes notifications@github.com wrote:

Okay cool, no problem. I suppose I can add owin middleware to do the
logging before Nancy.
—
Reply to this email directly or view it on GitHub
https://github.com/NancyFx/Nancy/issues/2328#issuecomment-190839259.

If useful, I solved for the AfterReques case with a hook into OnSendingHeaders owin event.
app.Use(new Func<AppFunc, AppFunc>(next => (async context =>
{
    var sendingHeaders = (Action<Action<object>, object>) context["server.OnSendingHeaders"];

    sendingHeaders(state =>
    {
        var ip = context["server.RemoteIpAddress"];
        var port = context["server.RemotePort"];
        var method = context["owin.RequestMethod"];
        var path = context["owin.RequestPath"];
        var status = context["owin.ResponseStatusCode"];

        LogTo.Info($"{ip}:{port} - {method} {path} - {status}");

    }, context);

    await next.Invoke(context);
})));

authors: MeirionHughes jchannon thecodejunkie

repo: NancyFx/Nancy


text:
I confuse

Prerequisites

[x] Did you read FAQ section?
[x] Did you test with the latest releases or commit ?

Description
[Description of the bug or feature]
Steps to Reproduce

[First Step]
[Second Step]
[and so on...]

Expected behavior: [What you expected to happen]
Actual behavior: [What actually happened]
Versions
You can get this information from executing PixivUtil2.py --help.

So how to put password? pls...

you can just type it in the console (it won't be show as *, just type and press enter)
or, https://github.com/Nandaka/PixivUtil2/blob/master/readme.txt#L252

i still confuse...

why you are still confused? please tell me what you tried?

Run the application (PixivUtil2.exe)
Key in your username is asked and press enter.
Key in your password (it won't be shown in the UI) and press enter.
Wait for the reply from the server.

I a meme actually in need of answers, I made a brand new account installed pixivdownloader and tried my luck at typing in the password and username but it says that the pivix ID and Email Adress may be incorrect not the actual username nor password, I just want to know what I'm doing wrong.

try to key in you username/password in config.ini?
Or try: https://github.com/Nandaka/PixivUtil2/blob/master/readme.txt#L69

Yeah don't worry anymore nandaka, I checked your read me folder, it helped ALLOT, you're script is working wonders, I can finally get that loli porn 24/7 x)) ur the man

authors: Nandaka WandererZero afuckingcat


text:
Renombrar archivos (quizá hacer que el nombre difiera de su id, como los grupos)

Relacionado con #76

Esto esta deprecado en favor de agricultura de precision

Esto se logra cargando el archivo pero con el nombre modificado

repo: Narvalex/Agrobook


text:
Dynamic Roles deferred authorization

Firstly I like this project very much, so thanks everyone working on this!
I'm using your project but in my use case the "Roles" are loaded dynamically on app run. Now I'm running into a situation where my roles are not yet defined but authorize was called.  Naturally this causes a "Error: undefined role or invalid role validation".
What would be nice is to defer the authorization until all roles have been defined. Maybe if one could pass a promise to this method that will resolve the array of roles one could accomplish such a feat?
Permission.defineManyRoles(arrayOfRoleNamesPromise, function (stateParams, roleName) {
    return User.hasRole(roleName);
  });

Thanks for the tip.
Got it working doing the following.
 this.run(['$rootScope', '$state', 'AuthenticationService','$log',
            ($rootScope:ng.IRootScopeService, $state, AuthenticationService:auth.IAuthenticationService, $log) => {
                $rootScope.$on('$stateChangePermissionStart', (event, toSate, toParams) => {
                    if (!AuthenticationService.isUserSetup()) {
                        event.preventDefault();
                        AuthenticationService.getCurrentUser() //Initialize user permissions and returns user.
                            .then(() => {
                                $state.go(toSate.name, toParams);
                            })
                            .catch((e) => {
                                $log.error(e);
                                $state.go('authentication.login');
                            })
                    }
                });
            }]);

repo: Narzerus/angular-permission


text:
Error when importing files inside chroot env

Describe the bug
Ghidra fails to load any file (headless or not) when running inside a chroot environnement.
To Reproduce
Steps to reproduce the behavior:

Create a chroot environnement
Try to import file
Fails with java.lang.RuntimeException: Failed to init global cache /tmp/<user>-Ghidra/fscache2.
From research, the issue may be coming from here
Caused by: java.io.IOException: Mount point not found sun.nio.fs.LinuxFileStore.findMountEntry(LinuxFileStore.java:105)

Expected behavior
File get imported in project without issue
Environment (please complete the following information):

OS: Arch Linux (chroot)
Java Version: openjdk-11.0.15
Ghidra Version: 10.2
Ghidra Origin: binaries from pacman

Can you paste the full stack traces?

and also, in the same chroot, could you try running jshell and pasting in the following and reporting what it displays:
File cacheDir = new File("/tmp/username-Ghidra/fscache2");
cacheDir.mkdirs();
cacheDir.exists();

Hello,
Thanks for your response; here the full stack trace from this error window :
`java.lang.ExceptionInInitializerError
at ghidra.plugin.importer.ImporterPlugin.initializeChooser(ImporterPlugin.java:321)
at ghidra.plugin.importer.ImporterPlugin.doSingleImportAction(ImporterPlugin.java:337)
at ghidra.plugin.importer.ImporterPlugin$1.actionPerformed(ImporterPlugin.java:217)
at docking.ExecutableAction.execute(ExecutableAction.java:40)
at docking.action.MultipleKeyAction.actionPerformed(MultipleKeyAction.java:142)
at java.desktop/javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1810)
at docking.KeyBindingOverrideKeyEventDispatcher.actionInProgress(KeyBindingOverrideKeyEventDispatcher.java:219)
at docking.KeyBindingOverrideKeyEventDispatcher.dispatchKeyEvent(KeyBindingOverrideKeyEventDispatcher.java:117)
at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1133)
at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1009)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:835)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4892)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2772)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.RuntimeException: Failed to init global cache /tmp/zbaboum-Ghidra/fscache2
at ghidra.formats.gfilesystem.FileSystemService.(FileSystemService.java:180)
at ghidra.formats.gfilesystem.FileSystemService.(FileSystemService.java:160)
at ghidra.formats.gfilesystem.FileSystemService.getInstance(FileSystemService.java:64)
at ghidra.plugin.importer.ImporterUtilities.(ImporterUtilities.java:75)
... 32 more
Caused by: java.io.IOException: Mount point not found
at java.base/sun.nio.fs.LinuxFileStore.findMountEntry(LinuxFileStore.java:105)
at java.base/sun.nio.fs.UnixFileStore.(UnixFileStore.java:69)
at java.base/sun.nio.fs.LinuxFileStore.(LinuxFileStore.java:49)
at java.base/sun.nio.fs.LinuxFileSystemProvider.getFileStore(LinuxFileSystemProvider.java:51)
at java.base/sun.nio.fs.LinuxFileSystemProvider.getFileStore(LinuxFileSystemProvider.java:39)
at java.base/sun.nio.fs.UnixFileSystemProvider.getFileStore(UnixFileSystemProvider.java:373)
at java.base/java.nio.file.Files.getFileStore(Files.java:1488)
at ghidra.formats.gfilesystem.FileCache.(FileCache.java:105)
at ghidra.formats.gfilesystem.FileSystemService.(FileSystemService.java:175)
... 35 more

Build Date: 2022-May-27 1648 GMT
Ghidra Version: 10.2
Java Home: /usr/lib/jvm/java-11-openjdk
JVM Version: Oracle Corporation 11.0.15
OS: Linux 5.17.9-zen1-1-zen amd64
For the jshell commands :
|  Welcome to JShell -- Version 11.0.15
|  For an introduction type: /help intro
jshell> File cacheDir = new File("/tmp/username-Ghidra/fscache2");
File cacheDir = new File("/tmp/username-Ghidra/fscache2")cacheDir ==> /tmp/username-Ghidra/fscache2
jshell> cacheDir.mkdirs();
cacheDir.mkdirs()$2 ==> true
jshell> cacheDir.exists();
cacheDir.exists()$3 ==> true
`

repo: NationalSecurityAgency/ghidra


text:
Decompilation failure due to overlapping input varnodes

Describe the bug
When decompiling the attached function, the decompiler fails with the error "Low-level Error: Overlapping input varnodes". I've attached the debug function decompilation output, which hopefully should be enough to replicate it, but i can upload the repo or other outputs as needed.
Hex-Rays does successfully decompile this function, the output of which i have also attached.
Attachments
Ghidra debug output
Hex-Rays decompilation output
Environment:

OS: Windows 10 Pro Version 1809
Java Version: 11.0.3
Ghidra Version: 9.0.4

Duplicating this. Here is a workaround patch. It should work either on a distribution (i.e. 9.0.4) or on a pull of the repo.  From the root direction
patch -p1 < ~/killedbycallpatch.txt
killedbycallpatch.txt

Implemented a more complete fix, which should be in master with the next update.

authors: caheckman metal-crow


text:
Update 6502 flags handling.

Some instructions did not set the appropriate flags and some others did set flags where they shouldn't.
I checked this against a few datasheets from 6502.org and they all seem to agree.

These look very reasonable. I'll review them shortly. Thanks @agatti

authors: GhidorahRex agatti


text:
Build error: gradlew.bat failed with exit code 1

Hi,
After a few months of doing other projects and enjoying the summer I decided to get back to work on my Nativescript project. Reading the documentation, I decided to update to version 2.2.1. Armed with the update manual I followed the instuctions. But when building my project for the first time I noticed a build error:  /gradlew.bat failed with exit code 1
Reading similar issues on stackoverflow.com and here I tried several options to resolve the issue, but no luck so far. Things I tried:

Instructions on Android plugins and Windows path size issues
Removing and adding the android platform (tns platform remove android, tns platform add android)
Removing the node_modules folder
Updating the Andoid SDK
gradlew clean in folder /platforms/android

Nothing helped. Anyone for a good hint?
Version numbers:
tns: 2.2.1
Cross-platform modules: 2.2.1
Package.json of project:
{
  "nativescript": {
    "id": "nl.progig.handsonlifesupport",
    "tns-android": {
      "version": "2.2.0"
    }
  },
  "dependencies": {
    "dateformat": "^1.0.12",
    "intl": "^1.1.0",
    "tns-android": "^2.2.0",
    "tns-core-modules": "^2.2.1"
  },
  "devDependencies": {
    "babel-traverse": "6.14.0",
    "babel-types": "6.14.0",
    "babylon": "6.9.1",
    "lazy": "1.0.11"
  }
}

--log trace output:
$ tns build android --log trace
execFile: D:\android-sdk\platform-tools\adb "help"
execFile: D:\android-sdk\platform-tools\adb "help"
spawn: D:\android-sdk\platform-tools\adb "--help"
Socket {
  _connecting: false,
  _hadError: false,
  _handle:
   Pipe {
     bytesRead: 0,
     _externalStream: {},
     fd: -1,
     writeQueueSize: 0,
     owner: [Circular],
     onread: [Function: onread],
     reading: true },
  _parent: null,
  _host: null,
  _readableState:
   ReadableState {
     objectMode: false,
     highWaterMark: 16384,
     buffer: [],
     length: 0,
     pipes: null,
     pipesCount: 0,
     flowing: null,
     ended: false,
     endEmitted: false,
     reading: true,
     sync: false,
     needReadable: true,
     emittedReadable: false,
     readableListening: false,
     resumeScheduled: false,
     defaultEncoding: 'utf8',
     ranOut: false,
     awaitDrain: 0,
     readingMore: false,
     decoder: null,
     encoding: null },
  readable: true,
  domain: null,
  _events:
   { end: { [Function: g] listener: [Function: onend] },
     finish: [Function: onSocketFinish],
     _socketEnd: [Function: onSocketEnd],
     close: [Function] },
  _eventsCount: 4,
  _maxListeners: undefined,
  _writableState:
   WritableState {
     objectMode: false,
     highWaterMark: 16384,
     needDrain: false,
     ending: false,
     ended: false,
     finished: false,
     decodeStrings: false,
     defaultEncoding: 'utf8',
     length: 0,
     writing: false,
     corked: 0,
     sync: true,
     bufferProcessing: false,
     onwrite: [Function],
     writecb: null,
     writelen: 0,
     bufferedRequest: null,
     lastBufferedRequest: null,
     pendingcb: 0,
     prefinished: false,
     errorEmitted: false,
     bufferedRequestCount: 0,
     corkedRequestsFree: CorkedRequest { next: null, entry: null, finish: [Function] } },
  writable: false,
  allowHalfOpen: false,
  destroyed: false,
  _bytesDispatched: 0,
  _sockname: null,
  _writev: null,
  _pendingData: null,
  _pendingEncoding: '',
  server: null,
  _server: null }
Exec npm -v
 stdout: 2.15.9

 stderr:
spawn: java "-version"
Exec node-gyp -v
 stdout:
 stderr: 'node-gyp' is not recognized as an internal or external command,
operable program or batch file.

Exec "D:\android-sdk\platform-tools\adb" version
 stdout: Android Debug Bridge version 1.0.36
Revision 8f855a3d9b35-android

 stderr:
spawn: D:\android-sdk\tools\android.bat "-h"
Result when throw error is false:
{ stdout: '\n       Usage:\n       android [global options] action [action options]\n       Global options:\n  -s --silent     : Silent mode, shows errors only.\n  -v --verbose    : Verbose mode, shows errors, warnings and all messages.\n     --clear-cache: Clear the SDK Manager repository manifest cache.\n  -h --help       : Help on a specific command.\n\n                                                                    Valid\n                                                                    actions\n                                                                    are\n                                                                    composed\n                                                                    of a verb\n                                                                    and an\n                                                                    optional\n                                                                    direct\n                                                                    object:\n-    sdk              : Displays the SDK Manager window.\n-    avd              : Displays the AVD Manager window.\n-   list              : Lists existing targets or virtual devices.\n-   list avd          : Lists existing Android Virtual Devices.\n-   list target       : Lists existing targets.\n-   list device       : Lists existing devices.\n-   list sdk          : Lists remote SDK repository.\n- create avd          : Creates a new Android Virtual Device.\n-   move avd          : Moves or renames an Android Virtual Device.\n- delete avd          : Deletes an Android Virtual Device.\n- update avd          : Updates an Android Virtual Device to match the folders\n                        of a new SDK.\n- create project      : Creates a new Android project.\n- update project      : Updates an Android project (must already have an\n                        AndroidManifest.xml).\n- create test-project : Creates a new Android project for a test package.\n- update test-project : Updates the Android project for a test package (must\n                        already have an AndroidManifest.xml).\n- create lib-project  : Creates a new Android library project.\n- update lib-project  : Updates an Android library project (must already have\n                        an AndroidManifest.xml).\n- create uitest-project: Creates a new UI test project.\n- update adb          : Updates adb to support the USB devices declared in the\n                        SDK add-ons.\n- update sdk          : Updates the SDK by suggesting new platforms to install\n                        if available.\n',
  stderr: '',
  exitCode: 0 }
Exec mono --version
 stdout:
 stderr: 'mono' is not recognized as an internal or external command,
operable program or batch file.

Exec git --version
 stdout: git version 2.6.1.windows.1

 stderr:
Exec gradle -v
 stdout:
 stderr: 'gradle' is not recognized as an internal or external command,
operable program or batch file.

Exec "C:\Program Files\Java\jdk1.8.0_31\bin\javac" -version
 stdout:
 stderr: javac 1.8.0_31

System information:
{ procInfo: 'nativescript/2.2.1',
  platform: 'win32',
  os: 'Windows 8.1 Pro 6.3.9600',
  shell: 'C:\\WINDOWS\\system32\\cmd.exe',
  dotNetVer: '4.5.51650',
  procArch: 'x64',
  nodeVer: 'v4.5.0',
  npmVer: '2.15.9',
  javaVer: '1.8.0',
  nodeGypVer: null,
  xcodeVer: null,
  xcodeprojGemLocation: null,
  itunesInstalled: false,
  cocoapodVer: null,
  adbVer: 'Android Debug Bridge version 1.0.36',
  androidInstalled: true,
  monoVer: null,
  gitVer: '2.6.1.windows.1',
  gradleVer: null,
  javacVersion: '1.8.0_31' }
Starting watch on killswitch C:\Users\MyUserName\AppData\Local\Temp\MyUserName\KillSwitches\cli
Initializing analytics statuses.
Analytics statuses:
{ TrackFeatureUsage: 1, TrackExceptions: 0 }
Trying to track feature 'Non-interactive' with value 'build'.
Looking for project in 'D:\git\holsa-app'
Project directory is 'D:\git\holsa-app'.
Analytics statuses:
{ TrackFeatureUsage: 1, TrackExceptions: 0 }
Trying to track feature 'Non-interactive' with value 'build|android'.
Hooks directories: [ 'C:\\Users\\MyUserName\\AppData\\Roaming\\npm\\node_modules\\nativescript\\lib\\hooks',
  'C:\\Users\\MyUserName\\AppData\\Roaming\\npm\\node_modules\\nativescript\\lib\\common\\hooks',
  'D:\\git\\holsa-app\\hooks' ]
BeforeHookName for command prepare is before-prepare
Existing AndroidManifest.xml is correct.
Existing AndroidManifest.xml is correct.
spawn: D:\android-sdk\tools\android.bat "list" "targets"
Result when throw error is false:
{ stdout: 'Available Android targets:\n----------\nid: 1 or "android-23"\n     Name: Android 6.0\n     Type: Platform\n     API level: 23\n     Revision: 3\n     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in, AndroidWearRound, AndroidWearRound360x360, AndroidWearRound400x400, AndroidWearRound480x480, AndroidWearRoundChin320x290, AndroidWearRoundChin320x300, AndroidWearRoundChin360x325, AndroidWearRoundChin360x326, AndroidWearRoundChin360x330, AndroidWearSquare, AndroidWearSquare240x240, AndroidWearSquare320x320, AndroidWearRound, AndroidWearRound360x360, AndroidWearRound400x400, AndroidWearRound480x480, AndroidWearRoundChin320x290, AndroidWearRoundChin320x300, AndroidWearRoundChin360x325, AndroidWearRoundChin360x326, AndroidWearRoundChin360x330, AndroidWearSquare, AndroidWearSquare240x240, AndroidWearSquare320x320\n Tag/ABIs : android-tv/armeabi-v7a, android-tv/x86, android-wear/armeabi-v7a, android-wear/x86, default/armeabi-v7a, default/x86, default/x86_64\n----------\nid: 2 or "android-24"\n     Name: Android 7.0\n     Type: Platform\n     API level: 24\n     Revision: 2\n     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in, AndroidWearRound, AndroidWearRound360x360, AndroidWearRound400x400, AndroidWearRound480x480, AndroidWearRoundChin320x290, AndroidWearRoundChin320x300, AndroidWearRoundChin360x325, AndroidWearRoundChin360x326, AndroidWearRoundChin360x330, AndroidWearSquare, AndroidWearSquare240x240, AndroidWearSquare320x320, AndroidWearRound, AndroidWearRound360x360, AndroidWearRound400x400, AndroidWearRound480x480, AndroidWearRoundChin320x290, AndroidWearRoundChin320x300, AndroidWearRoundChin360x325, AndroidWearRoundChin360x326, AndroidWearRoundChin360x330, AndroidWearSquare, AndroidWearSquare240x240, AndroidWearSquare320x320\n Tag/ABIs : android-tv/x86, android-wear/armeabi-v7a, android-wear/x86, default/arm64-v8a, default/armeabi-v7a, default/x86, default/x86_64\n----------\nid: 3 or "Google Inc.:Google APIs:23"\n     Name: Google APIs\n     Type: Add-On\n     Vendor: Google Inc.\n     Revision: 1\n     Description: Android + Google APIs\n     Based on Android 6.0 (API level 23)\n     Libraries:\n      * com.android.future.usb.accessory (usb.jar)\n          API for USB Accessories\n      * com.google.android.media.effects (effects.jar)\n          Collection of video effects\n      * com.google.android.maps (maps.jar)\n          API for Google Maps\n     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in, AndroidWearRound, AndroidWearRound360x360, AndroidWearRound400x400, AndroidWearRound480x480, AndroidWearRoundChin320x290, AndroidWearRoundChin320x300, AndroidWearRoundChin360x325, AndroidWearRoundChin360x326, AndroidWearRoundChin360x330, AndroidWearSquare, AndroidWearSquare240x240, AndroidWearSquare320x320, AndroidWearRound, AndroidWearRound360x360, AndroidWearRound400x400, AndroidWearRound480x480, AndroidWearRoundChin320x290, AndroidWearRoundChin320x300, AndroidWearRoundChin360x325, AndroidWearRoundChin360x326, AndroidWearRoundChin360x330, AndroidWearSquare, AndroidWearSquare240x240, AndroidWearSquare320x320\n Tag/ABIs : google_apis/armeabi-v7a, google_apis/x86, google_apis/x86_64\n',
  stderr: '',
  exitCode: 0 }
Available Android targets:
----------
id: 1 or "android-23"
     Name: Android 6.0
     Type: Platform
     API level: 23
     Revision: 3
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in, AndroidWearRound, AndroidWearRound360x360, AndroidWearRound400x400, AndroidWearRound480x480, AndroidWearRoundChin320x290, AndroidWearRoundChin320x300, AndroidWearRoundChin360x325, AndroidWearRoundChin360x326, AndroidWearRoundChin360x330, AndroidWearSquare, AndroidWearSquare240x240, AndroidWearSquare320x320, AndroidWearRound, AndroidWearRound360x360, AndroidWearRound400x400, AndroidWearRound480x480, AndroidWearRoundChin320x290, AndroidWearRoundChin320x300, AndroidWearRoundChin360x325, AndroidWearRoundChin360x326, AndroidWearRoundChin360x330, AndroidWearSquare, AndroidWearSquare240x240, AndroidWearSquare320x320
 Tag/ABIs : android-tv/armeabi-v7a, android-tv/x86, android-wear/armeabi-v7a, android-wear/x86, default/armeabi-v7a, default/x86, default/x86_64
----------
id: 2 or "android-24"
     Name: Android 7.0
     Type: Platform
     API level: 24
     Revision: 2
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in, AndroidWearRound, AndroidWearRound360x360, AndroidWearRound400x400, AndroidWearRound480x480, AndroidWearRoundChin320x290, AndroidWearRoundChin320x300, AndroidWearRoundChin360x325, AndroidWearRoundChin360x326, AndroidWearRoundChin360x330, AndroidWearSquare, AndroidWearSquare240x240, AndroidWearSquare320x320, AndroidWearRound, AndroidWearRound360x360, AndroidWearRound400x400, AndroidWearRound480x480, AndroidWearRoundChin320x290, AndroidWearRoundChin320x300, AndroidWearRoundChin360x325, AndroidWearRoundChin360x326, AndroidWearRoundChin360x330, AndroidWearSquare, AndroidWearSquare240x240, AndroidWearSquare320x320
 Tag/ABIs : android-tv/x86, android-wear/armeabi-v7a, android-wear/x86, default/arm64-v8a, default/armeabi-v7a, default/x86, default/x86_64
----------
id: 3 or "Google Inc.:Google APIs:23"
     Name: Google APIs
     Type: Add-On
     Vendor: Google Inc.
     Revision: 1
     Description: Android + Google APIs
     Based on Android 6.0 (API level 23)
     Libraries:
      * com.android.future.usb.accessory (usb.jar)
          API for USB Accessories
      * com.google.android.media.effects (effects.jar)
          Collection of video effects
      * com.google.android.maps (maps.jar)
          API for Google Maps
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in, AndroidWearRound, AndroidWearRound360x360, AndroidWearRound400x400, AndroidWearRound480x480, AndroidWearRoundChin320x290, AndroidWearRoundChin320x300, AndroidWearRoundChin360x325, AndroidWearRoundChin360x326, AndroidWearRoundChin360x330, AndroidWearSquare, AndroidWearSquare240x240, AndroidWearSquare320x320, AndroidWearRound, AndroidWearRound360x360, AndroidWearRound400x400, AndroidWearRound480x480, AndroidWearRoundChin320x290, AndroidWearRoundChin320x300, AndroidWearRoundChin360x325, AndroidWearRoundChin360x326, AndroidWearRoundChin360x330, AndroidWearSquare, AndroidWearSquare240x240, AndroidWearSquare320x320
 Tag/ABIs : google_apis/armeabi-v7a, google_apis/x86, google_apis/x86_64

Directories found in D:\android-sdk\build-tools are 23.0.2, 23.0.3, 24.0.0, 24.0.2
Versions found in D:\android-sdk\build-tools are 23.0.2, 23.0.3, 24.0.0, 24.0.2
Selected version is:  23.0.3
Selected targetSdk is: 23
Directories found in D:\android-sdk\extras\android\m2repository\com\android\support\appcompat-v7 are 18.0.0, 19.0.0, 19.0.1, 19.1.0, 20.0.0, 21.0.0, 21.0.2, 21.0.3, 22.0.0, 22.1.0, 22.1.1, 22.2.0, 22.2.1, 23.0.0, 23.0.1, 23.1.0, 23.1.1, 23.2.0, 23.2.1, 23.3.0, 23.4.0, 24.0.0, 24.0.0-alpha1, 24.0.0-alpha2, 24.0.0-beta1, 24.1.0, 24.1.1, 24.2.0, maven-metadata.xml, maven-metadata.xml.md5, maven-metadata.xml.sha1
Versions found in D:\android-sdk\extras\android\m2repository\com\android\support\appcompat-v7 are 18.0.0, 19.0.0, 19.0.1, 19.1.0, 20.0.0, 21.0.0, 21.0.2, 21.0.3, 22.0.0, 22.1.0, 22.1.1, 22.2.0, 22.2.1, 23.0.0, 23.0.1, 23.1.0, 23.1.1, 23.2.0, 23.2.1, 23.3.0, 23.4.0, 24.0.0, 24.0.0, 24.0.0, 24.0.0, 24.1.0, 24.1.1, 24.2.0
Selected version is:  23.4.0
Selected AppCompat version is: 23.4.0
Project successfully prepared (android)
AfterHookName for command prepare is after-prepare
spawn: D:\git\holsa-app\platforms\android\gradlew.bat "buildapk" "-PcompileSdk=android-23" "-PtargetSdk=23" "-PbuildToolsVersion=23.0.3" "-PsupportVersion=23.4.0"

:config phase:  createDefaultIncludeFiles
        +found plugins: tns-core-modules-widgets

:config phase:  createPluginsConfigFile
         Creating product flavors include.gradle file in D:\git\holsa-app\platforms\android/configurations folder...

:config phase:  pluginExtend
        +applying configuration from: D:\git\holsa-app\platforms\android\configurations\include.gradle
        +applying configuration from: D:\git\holsa-app\platforms\android\configurations\tns-core-modules-widgets\include.gradle

:config phase:  copyAarDependencies

:config phase:  addAarDependencies
        +adding dependency: D:\git\holsa-app\platforms\android\libs\aar\nativescript.aar
        +adding dependency: D:\git\holsa-app\platforms\android\libs\aar\widgets-release.aar
Incremental java compilation is an incubating feature.
:preBuild UP-TO-DATE
:preF0DebugBuild UP-TO-DATE
:checkF0DebugManifest
:preF0ReleaseBuild UP-TO-DATE
:prepareComAndroidSupportAnimatedVectorDrawable2340Library UP-TO-DATE
:prepareComAndroidSupportAppcompatV72340Library UP-TO-DATE
:prepareComAndroidSupportSupportV42340Library UP-TO-DATE
:prepareComAndroidSupportSupportVectorDrawable2340Library UP-TO-DATE
:prepareAppCompanyNameRuntimeUnspecifiedLibrary UP-TO-DATE
:prepareNativescriptLibrary UP-TO-DATE
:prepareWidgetsReleaseLibrary UP-TO-DATE
:prepareF0DebugDependencies
:compileF0DebugAidl UP-TO-DATE
:compileF0DebugRenderscript UP-TO-DATE
:generateF0DebugBuildConfig UP-TO-DATE
:cleanLocalAarFiles
:ensureMetadataOutDir
:collectAllJars
:setProperties
:asbg:generateInterfaceNamesList
:asbg:runAstParser UP-TO-DATE
:asbg:generateBindings UP-TO-DATE
:mergeF0DebugShaders UP-TO-DATE
:compileF0DebugShaders UP-TO-DATE
:generateF0DebugAssets UP-TO-DATE
:mergeF0DebugAssets UP-TO-DATE
:generateF0DebugResValues UP-TO-DATE
:generateF0DebugResources UP-TO-DATE
:mergeF0DebugResources UP-TO-DATE
:processF0DebugManifest UP-TO-DATE
:processF0DebugResources UP-TO-DATE
:generateF0DebugSources UP-TO-DATE
:incrementalF0DebugJavaCompilationSafeguard UP-TO-DATE
:compileF0DebugJavaWithJavac UP-TO-DATE
:compileF0DebugNdk UP-TO-DATE
:compileF0DebugSources UP-TO-DATE
:buildMetadataException in thread "main" java.lang.IllegalArgumentException: Class com.tns.TypeIDs conflict: D:\git\holsa-app\platforms\android\build\intermediates\exploded-aar\nativescript\jars\classes.jar and D:\git\holsa-app\platforms\android\build\intermediates\exploded-aar\AppCompanyName\runtime\unspecified\jars\classes.jar
        at com.telerik.metadata.ClassRepo.cacheJarFile(ClassRepo.java:21)
        at com.telerik.metadata.Builder.build(Builder.java:39)
        at com.telerik.metadata.Generator.main(Generator.java:44)
 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':buildMetadata'.
> Process 'command 'C:\Program Files\Java\jdk1.8.0_31\bin\java.exe'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 17.428 secs
Error: Command D:\git\holsa-app\platforms\android\gradlew.bat failed with exit code 1
    at FiberFuture.Future.wait (C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\node_modules\fibers\future.js:566:15)
    at C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\lib\common\errors.js:128:33
    at Function.settle (C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\node_modules\fibers\future.js:249:26)
    at FiberFuture.Future.wait (C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\node_modules\fibers\future.js:565:10)
    at C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\lib\common\services\commands-service.js:84:106
    at Function.settle (C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\node_modules\fibers\future.js:249:26)
    at FiberFuture.Future.wait (C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\node_modules\fibers\future.js:565:10)
    at C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\lib\common\yok.js:208:124
    at Function.settle (C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\node_modules\fibers\future.js:249:26)
    at FiberFuture.Future.wait (C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\node_modules\fibers\future.js:565:10)
    at C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\lib\common\services\commands-service.js:51:55
    at Function.settle (C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\node_modules\fibers\future.js:249:26)
    at FiberFuture.Future.wait (C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\node_modules\fibers\future.js:565:10)
    at C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\lib\common\errors.js:128:33
    at Function.settle (C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\node_modules\fibers\future.js:249:26)
    at FiberFuture.Future.wait (C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\node_modules\fibers\future.js:565:10)
    - - - - -
    at ChildProcess.<anonymous> (C:\Users\MyUserName\AppData\Roaming\npm\node_modules\nativescript\lib\common\child-process.js:91:38)
    at emitTwo (events.js:87:13)
    at ChildProcess.emit (events.js:172:7)
    at maybeClose (internal/child_process.js:829:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
Analytics statuses:
{ TrackFeatureUsage: 1, TrackExceptions: 0 }
Trying to track feature 'Non-interactive' with value 'help'.
List of registered commands: /?, appstore, appstore|upload, autocomplete, autocomplete|disable, autocomplete|enable, autocomplete|status, build, build|android, build|ios, create, debug, debug|android, debug|ios, deploy, dev-generate-help, dev-generate-messages, dev-post-install, dev-preuninstall, dev-test, dev-test|android, dev-test|ios, device, device|android, device|get-file, device|ios, device|list-applications, device|list-files, device|log, device|put-file, device|run, device|stop, device|uninstall, doctor, emulate, emulate|android, emulate|ios, error-reporting, help, info, init, install, livesync, platform, platform|add, platform|clean, platform|remove, platform|update, plugin, plugin|add, plugin|find, plugin|install, plugin|remove, plugin|search, plugin|update, prepare, publish, publish|ios, run, run|android, run|ios, test, test|android, test|init, test|ios, usage-reporting
Reading help for command 'build|android'. FileName is 'build-android.md'.
# build android
┌─────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Usage   │ Synopsis                                                                                │
│ General │ $ tns build android [--compileSdk <API Level>] [--key-store-path <File Path> --key-store-password <Password> --key-store-alias <Name> --key-store-alias-password <Password>] [--release] [--static-bindings] [--copy-to <File Path>] │
└─────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Builds the project for Android and produces an APK that you can manually deploy on device or in the native emulator.

### Options

    * --compileSdk - Sets the Android SDK that will be used to build the project.
    * --release - If set, produces a release build. Otherwise, produces a debug build. When set, you must also specify the --key-store-* options.
    * --key-store-path - Specifies the file path to the keystore file (P12) which you want to use to code sign your APK. You can use the --key-store-* options along with --release to produce a signed release build. You need to specify all --key-store-* options.
    * --key-store-password - Provides the password for the keystore file specified with --key-store-path. You can use the --key-store-* options along with --release to produce a signed release build. You need to specify all --key-store-* options.
    * --key-store-alias - Provides the alias for the keystore file specified with --key-store-path. You can use the --key-store-* options along with --release to produce a signed release build. You need to specify all --key-store-* options.
    * --key-store-alias-password - Provides the password for the alias specified with --key-store-alias-password. You can use the --key-store-* options along with --release to produce a signed release build. You need to specify all --key-store-* options.
    * --copy-to - Specifies the file path where the built .apk will be copied. If it points to a non-existent directory, it will be created. If the specified value is directory, the original file name will be used.

### Attributes
<API Level> is a valid Android API level. For example: 22, 23.

Analytics statuses:
{ TrackFeatureUsage: 1, TrackExceptions: 0 }
Trying to track exception with message 'Command D:\git\holsa-app\platforms\android\gradlew.bat failed with exit code 1'.
AnalyticsInstallationID: 3ff34634-399a-4aa1-98da-ed65577f3ec6
monitor not started
monitor not started
monitor not started
monitor has started, connecting to http://5752dabccfc54c4ab82aea9626b7338e.monitor-eqatec.com/json.ashx
Analytics statuses:
{ TrackFeatureUsage: 1, TrackExceptions: 0 }
Trying to track feature 'NodeJSVersion' with value '4_5_0'.
Waiting for analytics to send information. Will check in a 1000ms.
Statistics was sent successfully (xhr).
Statistics was sent successfully (xhr).
Waiting for analytics to send information. Will check in a 1000ms. Remaining time is: 29000

Hi @progig,
The error you're seeing:
Class com.tns.TypeIDs conflict:
build\intermediates\exploded-aar\nativescript\jars\classes.jar and
build\intermediates\exploded-aar\AppCompanyName\runtime\unspecified\jars\classes.jar

means you have two competing jars. Try searching for nativescript.jar and if you find it delete it and run the build again.
It would be really helpful if you to send us a way to reproduce your problem so we can help you. For future reference please follow the issue template we provided to help us help you.

Hi Plamen5kov,
Thanks for responding. I searched for nativescript.jar on my machine, but couldn't find it.
To reproduce the problem, upgrade nativescript from version 1.7 to 2.2.1 and try to (re)build an existing project with tns build android
I also tried to build the old version of sample-Groceries I had on disk, same problem occurred. After deleting it and cloning it again (newest version) , it built just fine.

Sorry @progig, I couldn't reproduce your problem. The steps I followed wre:

tns create oldapp (using cli 1.7.0)
cd oldapp
tns paltform add android (using cli 1.7.0)
tns build android (using cli 2.2.1)

I successfully reproduced your problem only when I forcefully moved the /platforms/android/libs/nativescript.jar into the new project template by doing:

tns create oldapp (using cli 1.7.0)
cd oldapp
tns paltform add android (using cli 2.2.1)
cp nativescript.jar ./platforms/android/ (nativescript jar came from the 1.7.0 template)
tns build android (using cli 2.2.1)

That means you have a nativescript.jar or classes.jar leftover in platforms/android or node_modules folder.
How you can try and fix this issue?

Try searching nativescript.jar inside of your projects folder and delete it.
Try to find which two jars contain: com.tns.TypeIDs class and remove the file not in /pltforms/android/ folder.
Provide us with a sample repo that reproduces the problem, so we can figure it out.

@Plamen5kov, thanks for taking the time to help me.

That means you have a nativescript.jar or classes.jar leftover in platforms/android or node_modules folder.

How can that be? I've removed both the platforms/android and node_modules folder with tns platform remove android and rm -Rf node_modules before building.

Try searching nativescript.jar inside of your projects folder and delete it.

I couldn't find such a file on my machine

Try to find which two jars contain: com.tns.TypeIDs class and remove the file not in /pltforms/android/ folder.

I tried to find that class in the jars in my project folder, but there's no such class in the jar files I found.

Provide us with a sample repo that reproduces the problem, so we can figure it out.

Please see the attachment for the repo
holsa-app.zip

@Plamen5kov
FYI and what it's worth: after building I see 2 different classes.jar files of different size:
/platforms/android/src/F0/widgets-release.aar size: 86.562 bytes
/platforms/android/libs/runtime-libs/nativescript.aar size: 86.424 bytes

@progig I was able to reproduce this erroneous behavior - as it turns out, you had the android runtime as both a platform, and a dependency of your project.
A simple way to fix this is to delete "tns-android": "^2.2.0" from your dependencies object in your package.json.
Make sure to delete both node_modules and the platforms dirs before running your app to delete any leftovers of the faulty module.

@Pip3r4o
Thanks! You made my day!
Still I wonder how "tns-android": "^2.2.0" ended up as a dependency object in my package.json.
I'm pretty sure I didn't put it there myself...

I have the same issue and deleting  "nativescript": {
"id": "org.nativescript.HelloWorld",
"tns-android": {
"version": "2.5.0"
} no fixe like this
`C:\Users\cvega.BI\Desktop@NGAndroid\HelloWorld>tns run android
Executing before-prepare hook from C:\Users\cvega.BI\Desktop@NGAndroid\HelloWorld\hooks\before-prepare\nativescript-dev-android-snapshot.js
Preparing project...
Unzipping C:\Users\cvega.BI.gradle\wrapper\dists\gradle-2.10-bin\baigpnfu14tdk6ztbfwcl8275\gradle-2.10-bin.zip to C:\Users\cvega.BI.gradle\wrapper\dists\gradle-2.10-bin\baigpnfu14tdk6ztbfwcl8275
Exception in thread "main" java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.(ZipFile.java:219)
at java.util.zip.ZipFile.(ZipFile.java:149)
at java.util.zip.ZipFile.(ZipFile.java:163)
at org.gradle.wrapper.Install.unzip(Install.java:159)
at org.gradle.wrapper.Install.access$500(Install.java:26)
at org.gradle.wrapper.Install$1.call(Install.java:69)
at org.gradle.wrapper.Install$1.call(Install.java:46)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
at org.gradle.wrapper.Install.createDist(Install.java:46)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:126)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
Processing node_modules failed. Error: Command C:\Users\cvega.BI\Desktop@NGAndroid\HelloWorld\platforms\android\gradlew.bat failed with exit code 1
Sending exception report (press Ctrl+C to stop).....
C:\Users\cvega.BI\Desktop@NGAndroid\HelloWorld>`

@cesarvega looks like you have a faulty archive of the gradle wrapper, it happens at times as a result of poor connection. Navigate to your %USER_HOME%.gradle/ and delete the wrapper/dists/gradle-2.10-bin directory to allow the wrapper to be redownloaded.

Thanks that fixed it
On Thu, Apr 20, 2017 at 3:09 PM, Peter Kanev notifications@github.com
wrote:

@cesarvega https://github.com/cesarvega looks like you have a faulty
archive of the gradle wrapper, it happens at times as a result of poor
connection. Navigate to your %USER_HOME%.gradle/ and delete the
wrapper/dists/gradle-2.10-bin directory to allow the wrapper to be
redownloaded.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/NativeScript/android-runtime/issues/553#issuecomment-295862685,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABwmodjphedy-3XEMKdqskiZ2QXKLrNJks5rx61YgaJpZM4J4B6y
.

--
Cesar Vega
Software Engineer
Where Great Brands Begin®
http://www.brandinstitute.com/images/logo.jpg
http://www.brandinstitute.com/images/logo.jpg

@cesarvega had the same problem just now. Used the sdk 22 with nativescript 2.5.0. Did what @Pip3r4o said but had the same exact problem. No problems building for sdk 23.

@Dimitrievskislavcho What cesarvega described has little to do with the sdk used to build a project.
As for the gradle.bat exited with error code 1 - this is the generic message output whenever an android build fails.

tns run android
Executing before-prepare hook from C:\projet\hello-world\hooks\before-prepare\nativescript-dev-android-snapshot.js
Preparing project...
Unzipping C:\Users\Khouloud.gradle\wrapper\dists\gradle-2.10-bin\baigpnfu14tdk6ztbfwcl8275\gradle-2.10-bin.zip to C:\Users\Khouloud.gradle\wrapper\dists\gradle-2.10-bin\baigpnfu14tdk6ztbfwcl8275
Exception in thread "main" java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.(ZipFile.java:219)
at java.util.zip.ZipFile.(ZipFile.java:149)
at java.util.zip.ZipFile.(ZipFile.java:163)
at org.gradle.wrapper.Install.unzip(Install.java:159)
at org.gradle.wrapper.Install.access$500(Install.java:26)
at org.gradle.wrapper.Install$1.call(Install.java:69)
at org.gradle.wrapper.Install$1.call(Install.java:46)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
at org.gradle.wrapper.Install.createDist(Install.java:46)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:126)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
Processing node_modules failed. Error: Command C:\projet\hello-world\platforms\android\gradlew.bat failed with exit code 1
I have the same issue :(

@khalkhaloud I've already explained the fix above. Simply follow the steps and you are good to go.

@Pip3r4o  i have  delete "tns-android": "^2.2.0" from your dependencies object in my  package.json But I have the same problem :(

@khalkhaloud you aren't reading correctly.
https://github.com/NativeScript/android-runtime/issues/553#issuecomment-295862685

can you explain more  please

C:\prjt\Groceries
λ tns run android
Skipping prepare.
Searching for devices...
Starting Android emulator with image Nexus_5X_API_25
Waiting for emulator device initialization.......
Building project...
Downloading https://services.gradle.org/distributions/gradle-2.10-bin.zip
..........................................................................................................................................................................................................................................................................................
Unzipping C:\Users\Khouloud.gradle\wrapper\dists\gradle-2.10-bin\baigpnfu14tdk6ztbfwcl8275\gradle-2.10-bin.zip to C:\Users\Khouloud.gradle\wrapper\dists\gradle-2.10-bin\baigpnfu14tdk6ztbfwcl8275
Exception in thread "main" java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.(ZipFile.java:219)
at java.util.zip.ZipFile.(ZipFile.java:149)
at java.util.zip.ZipFile.(ZipFile.java:163)
at org.gradle.wrapper.Install.unzip(Install.java:159)
at org.gradle.wrapper.Install.access$500(Install.java:26)
at org.gradle.wrapper.Install$1.call(Install.java:69)
at org.gradle.wrapper.Install$1.call(Install.java:46)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
at org.gradle.wrapper.Install.createDist(Install.java:46)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:126)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
Command C:\prjt\Groceries\platforms\android\gradlew.bat failed with exit code 1
plz help me :(

i redownloaded the wrapper but nothing change !! the same error again
2017-04-28 14:06 GMT+02:00 Peter Kanev notifications@github.com:

@khalkhaloud https://github.com/khalkhaloud I am repeating myself here,
but there you go -> #553 (comment)
https://github.com/NativeScript/android-runtime/issues/553#issuecomment-295862685
looks like you have a faulty archive of the gradle wrapper, it happens at
times as a result of poor connection. Navigate to your %USER_HOME%.gradle/
and delete the wrapper/dists/gradle-2.10-bin directory to allow the wrapper
to be redownloaded.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/NativeScript/android-runtime/issues/553#issuecomment-297981130,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AavpyD1j_WALr7qCc1VWQ3Uv8SSNC2p-ks5r0dYrgaJpZM4J4B6y
.

@khalkhaloud Unfortunately corrupted gradle wrapper archives is not something that we can fix, since we do not manage them - https://discuss.gradle.org/t/making-the-wrapper-more-resilient-to-corrupted-downloads/22066/4. Gradle are aware of these issues, and are working on resolving them.
Your best bet is to try to redownload the wrapper multiple times, or follow the gradle wrapper guidelines at https://docs.gradle.org/current/userguide/gradle_wrapper.html.
If you wish to, you could also install the release candidate version 3.0 tns platform add android@rc which distributes a different version of the gradle wrapper. We cannot guarantee however that the wrapper package will be valid.

I had the same issue and with gradle 3.3. Apparently, when I installed nativescript cli it wasn't downloaded properly. To fix the problem I removed entire folder .grandle in my USER_HOME directory and run the command 'tsn run' again. It downloaded new gradle and it works just fine now.

@Nogostradamus  Yeah that works for me some times but sometimes it does not , I keep getting errors for no reason I delete the gradle but my app its mot working anymore this is so frustrating
      `* What went wrong:
      Execution failed for task ':mergeF0F1F2F3F4DebugResources'.
      > Error: Failed to crunch file C:\Users\cvega.BI\Desktop\@SIDEKICK\nativescript-marketplace-
        demo\platforms\android\build\intermediates\exploded-aar\com.google.android.gms\play-services-
         base\10.2.6\res\drawable-xxhdpi-
         v4\common_google_signin_btn_icon_light_normal_background.9.png into
       C:\Users\cvega.BI\Desktop\@SIDEKICK\nativescript-marketplace-
       demo\platforms\android\build\intermediates\res\merged\F0F1F2F3F4\debug\drawable-xxhdpi-
       v4\common_google_signin_btn_icon_light_normal_background.9.png

     * Try:
     Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more
     log output.
     Unable to apply changes on device: emulator-5554. Error is: Command gradlew.bat failed with exit
     code 1.`

@cesarvega we are in the process of updating the Gradle version, which supposedly has fixes for those problems you are facing. I'll let you know when they hit the master branch so you can test the changes!

Any ideas?
G:\Escritorio\nativescript\test-firebase\dist>tns run android
Searching for devices...
Skipping prepare.
Building project...
Gradle build...
         + setting applicationId
         + applying user-defined configuration from G:\Escritorio\nativescript\test-firebase\dist\app\App_Resources\Android\app.gradle
         + adding nativescript runtime package dependency: nativescript-optimized-with-inspector
         + adding aar plugin dependency: G:\Escritorio\nativescript\test-firebase\dist\node_modules\nativescript-plugin-firebase\platforms\android\firebase-release.aar
         + adding aar plugin dependency: G:\Escritorio\nativescript\test-firebase\dist\node_modules\nativescript-plugin-firebase-common\platforms\android\nativescript_plugin_firebase_common.aar
         + adding jar plugin dependency: G:\Escritorio\nativescript\test-firebase\dist\node_modules\nativescript-plugin-firebase-common\platforms\android\firebase-client-android-2.5.2.jar
         + adding aar plugin dependency: G:\Escritorio\nativescript\test-firebase\dist\node_modules\tns-core-modules-widgets\platforms\android\widgets-release.aar
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
C:\Users\Manuel\.gradle\caches\transforms-1\files-1.1\appcompat-v7-27.0.2.aar\a1f2d02a605d5a2aaa25afeb26781598\res\values-v26\values-v26.xml:9:5-12:13: AAPT: error: resource android:attr/colorError not found.

C:\Users\Manuel\.gradle\caches\transforms-1\files-1.1\appcompat-v7-27.0.2.aar\a1f2d02a605d5a2aaa25afeb26781598\res\values-v26\values-v26.xml:13:5-16:13: AAPT: error: resource android:attr/colorError not found.

C:\Users\Manuel\.gradle\caches\transforms-1\files-1.1\appcompat-v7-27.0.2.aar\a1f2d02a605d5a2aaa25afeb26781598\res\values-v26\values-v26.xml:17:5-93: AAPT: error: style attribute 'android:attr/keyboardNavigationCluster' not found.

C:\Users\Manuel\.gradle\caches\transforms-1\files-1.1\appcompat-v7-27.0.2.aar\a1f2d02a605d5a2aaa25afeb26781598\res\values\values.xml:252:5-69: AAPT: error: resource android:attr/fontStyle not found.

C:\Users\Manuel\.gradle\caches\transforms-1\files-1.1\appcompat-v7-27.0.2.aar\a1f2d02a605d5a2aaa25afeb26781598\res\values\values.xml:252:5-69: AAPT: error: resource android:attr/font not found.

C:\Users\Manuel\.gradle\caches\transforms-1\files-1.1\appcompat-v7-27.0.2.aar\a1f2d02a605d5a2aaa25afeb26781598\res\values\values.xml:252:5-69: AAPT: error: resource android:attr/fontWeight not found.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processDebugResources'.
> Failed to process resources, see aapt output above for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 3s
Unable to apply changes on device: 1018679f. Error is: Command gradlew.bat failed with exit code 1.

G:\Escritorio\nativescript\test-firebase\dist>

Same problem here.. I deleted all the gradle files in C:/%USER/.gradle but no solution..
        + applying user-defined configuration from C:\wamp\www\ns-vue-tabs-auth                         \dist\app\App_Resources\Android\app.gradle          + add include.gradle from C:\wamp\www\ns-vue-tabs-auth\dist\node_module                         s\nativescript-background-http\platforms\android\include.gradle          + add include.gradle from C:\wamp\www\ns-vue-tabs-auth\dist\node_module                         s\nativescript-camera\platforms\android\include.gradle          + add include.gradle from C:\wamp\www\ns-vue-tabs-auth\dist\node_module                         s\nativescript-google-maps-sdk\platforms\android\include.gradle          + applying plugin configuration from C:\wamp\www\ns-vue-tabs-auth\dist\                         platforms\android\app\build\configurations\nativescript-background-http\include.                         gradle          + applying plugin configuration from C:\wamp\www\ns-vue-tabs-auth\dist\                         platforms\android\app\build\configurations\nativescript-camera\include.gradle          + applying plugin configuration from C:\wamp\www\ns-vue-tabs-auth\dist\                         platforms\android\app\build\configurations\nativescript-google-maps-sdk\include.                         gradle          + adding nativescript runtime package dependency: nativescript-optimize                         d          + adding aar plugin dependency: C:\wamp\www\ns-vue-tabs-auth\dist\node_                         modules\nativescript-background-http\platforms\android\nativescript_background_h                         ttp.aar          + adding aar plugin dependency: C:\wamp\www\ns-vue-tabs-auth\dist\node_                         modules\nativescript-camera\platforms\android\nativescript_camera.aar          + adding aar plugin dependency: C:\wamp\www\ns-vue-tabs-auth\dist\node_                         modules\nativescript-google-maps-sdk\platforms\android\nativescript_google_maps_                         sdk.aar          + adding aar plugin dependency: C:\wamp\www\ns-vue-tabs-auth\dist\node_                         modules\tns-core-modules-widgets\platforms\android\widgets-release.aar false Unable to apply changes on device: emulator-5554. Error is: Command gradlew.bat                          failed with exit code 1.
I'll remove the nativescript-google-maps-sdk plugin and try with the other one...

Hi @wa05 , I think I have found a solution, but I have to try more deeply.
Steps

npm run clean
template\app\App_Resources\Android\app.gradle

android {
  compileSdkVersion 26
  buildToolsVersion "26.0.0-beta2"
  defaultConfig {
    multiDexEnabled true
    generatedDensities = []
    applicationId = "___XXX___"
  }
  aaptOptions {
    additionalParameters "--no-version-vectors"
  }
}

Being XXX whatever you have.
As you can see, I have added compileSdkVersion and buildToolsVersion. Also multiDexEnabled  because with SDK a new error appears.
Try it!

I continue having the same error

I still have this issue. I can't build for android. I've tried all the solutions above. Any idea?

Getting the same error here.

authors: Dimitrievskislavcho Globerada HugoAntares Nogostradamus Pip3r4o Plamen5kov cesarvega falk-stefan khalkhaloud progig wa05

repo: NativeScript/android


text:
Debugging doesn't launch/attach when app is not in workspace root

I have my nativescript app in a subfolder (game-client) one level down from my workspace (/home/dev/source/wordgame).  When I try to launch or attach the debugger using:

"appRoot": "${workspaceRoot}/game-client"

nothing happens.  Turning on diagnostic logging gives me:
Console:

initialize({"clientID":"vscode","adapterID":"nativescript","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"locale":"en-gb"})
attach({"name":"Android App","type":"nativescript","request":"attach","platform":"android","appRoot":"/home/dev/source/wordgame/game-client","sourceMaps":true,"watch":false,"diagnosticLogging":true,"__sessionId":"8d7f5f81-e6b3-4a65-b188-fd05717ebee8"})

And it just hangs there forever.
If I remove the /game-client from appRoot, the debugger tries to run but can't find the app.
Console:

initialize({"clientID":"vscode","adapterID":"nativescript","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"locale":"en-gb"})
attach({"name":"Android App","type":"nativescript","request":"attach","platform":"android","appRoot":"/home/dev/source/wordgame","sourceMaps":true,"watch":false,"diagnosticLogging":true,"__sessionId":"aa614a26-048a-411b-9e52-0a7d63470658"})
[NativeScriptCli] execute: tns --analyticsClient VSCode --version
[NSDebugAdapter] Using tns CLI v3.2.1 on path 'tns'
[NSDebugAdapter] Running tns command...
[NativeScriptCli] execute: tns --analyticsClient VSCode debug android --no-client --start
[NSDebugAdapter] Watching the tns CLI output to receive a connection token
[31;1mNo project found at or above '/home/dev/source/wordgame' and neither was a --path specified.

I've tried passing in the --path via "tnsArgs" and the debugger will launch and attach but no breakpoints will be hit because it cannot find any of the files since the appRoot is still incorrect.
Console:

initialize({"clientID":"vscode","adapterID":"nativescript","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"locale":"en-gb"})
attach({"name":"Android App","type":"nativescript","request":"attach","platform":"android","appRoot":"/home/dev/source/wordgame","sourceMaps":true,"watch":false,"diagnosticLogging":true,"tnsArgs":["--path=./game-client"],"__sessionId":"bf66e185-83c7-4aca-a9ff-ae7e71915a60"})
[NativeScriptCli] execute: tns --analyticsClient VSCode --version
[NSDebugAdapter] Using tns CLI v3.2.1 on path 'tns'
[NSDebugAdapter] Running tns command...
[NativeScriptCli] execute: tns --analyticsClient VSCode debug android --no-client --start --path=./game-client
[NSDebugAdapter] Watching the tns CLI output to receive a connection token
Searching for devices...
device: emulator-5554 debug port: 40000
To start debugging, open the following URL in Chrome:
chrome-devtools://devtools/bundled/inspector.html?experiments=true&ws=localhost:40000
[NSDebugAdapter] The tns command finished its execution with code 0.
[NSDebugAdapter] Ready to attach to application on 40000

Duplicate of #104