[Bug Report] GPU Memory is leaked when HookedTransformer goes out of scope.

I was iterating some operations over the Pythia model suite and realized that each time I loaded a model, the GPU memory usage would increase. Because the memory usage as reported by torch and nvidia-smi is several GB, I'm guessing there are some arrays that are attached to a cache or class rather than to an instance of HookedTransformer. I would be happy to debug when I get a chance. For now, I'm able to just use transformers without TransformerLens. I was originally just using HookedTransformer out of habit.
Here's a minimal reproducing example:
import os
import time
import transformers
import torch
from transformer_lens import HookedTransformer

model_param_str = ['70m', '160m', '410m']
model_names = {mps: f"EleutherAI/pythia-{mps}-deduped" for mps in model_param_str}

# GPU memory usage is 0 (as checked by nvidia-smi) after each model is loaded and garbage collected.
for param_str, model_name in model_names.items():
    model = transformers.GPTNeoXForCausalLM.from_pretrained(model_name)
    model.cuda()

del model
import gc
gc.collect()
torch.cuda.empty_cache()

print(torch.cuda.memory_summary())
# Give the GPU some time to update its memory usage.
time.sleep(1)
os.system('nvidia-smi')

# GPU memory usage accumulates from past models.
for param_str, model_name in model_names.items():
    model = HookedTransformer.from_pretrained(model_name)

del model
import gc
gc.collect()
torch.cuda.empty_cache()

print(torch.cuda.memory_summary())
time.sleep(1)
os.system('nvidia-smi')

and the output is:
|===========================================================================|
|                  PyTorch CUDA memory summary, device ID 0                 |
|---------------------------------------------------------------------------|
|            CUDA OOMs: 0            |        cudaMalloc retries: 0         |
|===========================================================================|
|        Metric         | Cur Usage  | Peak Usage | Tot Alloc  | Tot Freed  |
|---------------------------------------------------------------------------|
| Allocated memory      |      0 B   |   1642 MiB |   2608 MiB |   2608 MiB |
|       from large pool |      0 B   |   1641 MiB |   2600 MiB |   2600 MiB |
|       from small pool |      0 B   |      6 MiB |      7 MiB |      7 MiB |
|---------------------------------------------------------------------------|
| Active memory         |      0 B   |   1642 MiB |   2608 MiB |   2608 MiB |
|       from large pool |      0 B   |   1641 MiB |   2600 MiB |   2600 MiB |
|       from small pool |      0 B   |      6 MiB |      7 MiB |      7 MiB |
|---------------------------------------------------------------------------|
| Requested memory      |      0 B   |   1642 MiB |   2602 MiB |   2602 MiB |
|       from large pool |      0 B   |   1641 MiB |   2594 MiB |   2594 MiB |
|       from small pool |      0 B   |      6 MiB |      7 MiB |      7 MiB |
|---------------------------------------------------------------------------|
| GPU reserved memory   |      0 B   |   1664 MiB |   1664 MiB |   1664 MiB |
|       from large pool |      0 B   |   1656 MiB |   1656 MiB |   1656 MiB |
|       from small pool |      0 B   |      8 MiB |      8 MiB |      8 MiB |
|---------------------------------------------------------------------------|
| Non-releasable memory |      0 B   | 207716 KiB |   2128 MiB |   2128 MiB |
|       from large pool |      0 B   | 206336 KiB |   2114 MiB |   2114 MiB |
|       from small pool |      0 B   |   4053 KiB |     13 MiB |     13 MiB |
|---------------------------------------------------------------------------|
| Allocations           |       0    |     364    |     642    |     642    |
|       from large pool |       0    |     122    |     210    |     210    |
|       from small pool |       0    |     242    |     432    |     432    |
|---------------------------------------------------------------------------|
| Active allocs         |       0    |     364    |     642    |     642    |
|       from large pool |       0    |     122    |     210    |     210    |
|       from small pool |       0    |     242    |     432    |     432    |
|---------------------------------------------------------------------------|
| GPU reserved segments |       0    |      53    |      53    |      53    |
|       from large pool |       0    |      49    |      49    |      49    |
|       from small pool |       0    |       4    |       4    |       4    |
|---------------------------------------------------------------------------|
| Non-releasable allocs |       0    |      12    |     159    |     159    |
|       from large pool |       0    |       9    |     106    |     106    |
|       from small pool |       0    |       5    |      53    |      53    |
|---------------------------------------------------------------------------|
| Oversize allocations  |       0    |       0    |       0    |       0    |
|---------------------------------------------------------------------------|
| Oversize GPU segments |       0    |       0    |       0    |       0    |
|===========================================================================|

Tue May 30 22:15:35 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.30.02              Driver Version: 530.30.02    CUDA Version: 12.1     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                  Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf            Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  Tesla V100-PCIE-16GB            On | 00000001:00:00.0 Off |                  Off |
| N/A   28C    P0               41W / 250W|    370MiB / 16384MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
+---------------------------------------------------------------------------------------+
Using pad_token, but it is not set yet.
Loaded pretrained model EleutherAI/pythia-70m-deduped into HookedTransformer
Using pad_token, but it is not set yet.
Loaded pretrained model EleutherAI/pythia-160m-deduped into HookedTransformer
Using pad_token, but it is not set yet.
Loaded pretrained model EleutherAI/pythia-410m-deduped into HookedTransformer
|===========================================================================|
|                  PyTorch CUDA memory summary, device ID 0                 |
|---------------------------------------------------------------------------|
|            CUDA OOMs: 0            |        cudaMalloc retries: 0         |
|===========================================================================|
|        Metric         | Cur Usage  | Peak Usage | Tot Alloc  | Tot Freed  |
|---------------------------------------------------------------------------|
| Allocated memory      |   2699 MiB |   6969 MiB |  13621 MiB |  10921 MiB |
|       from large pool |   2663 MiB |   6895 MiB |  13477 MiB |  10813 MiB |
|       from small pool |     36 MiB |     80 MiB |    144 MiB |    107 MiB |
|---------------------------------------------------------------------------|
| Active memory         |   2699 MiB |   6969 MiB |  13621 MiB |  10921 MiB |
|       from large pool |   2663 MiB |   6895 MiB |  13477 MiB |  10813 MiB |
|       from small pool |     36 MiB |     80 MiB |    144 MiB |    107 MiB |
|---------------------------------------------------------------------------|
| Requested memory      |   2698 MiB |   6958 MiB |  13600 MiB |  10901 MiB |
|       from large pool |   2662 MiB |   6884 MiB |  13456 MiB |  10794 MiB |
|       from small pool |     36 MiB |     80 MiB |    144 MiB |    107 MiB |
|---------------------------------------------------------------------------|
| GPU reserved memory   |   3120 MiB |   7078 MiB |   8742 MiB |   5622 MiB |
|       from large pool |   3072 MiB |   6996 MiB |   8652 MiB |   5580 MiB |
|       from small pool |     48 MiB |     82 MiB |     90 MiB |     42 MiB |
|---------------------------------------------------------------------------|
| Non-releasable memory | 430167 KiB | 610561 KiB |   9217 MiB |   8797 MiB |
|       from large pool | 418176 KiB | 599936 KiB |   9072 MiB |   8664 MiB |
|       from small pool |  11991 KiB |  13838 KiB |    144 MiB |    132 MiB |
|---------------------------------------------------------------------------|
| Allocations           |     430    |    1503    |    3658    |    3228    |
|       from large pool |     307    |     706    |    1306    |     999    |
|       from small pool |     123    |     797    |    2352    |    2229    |
|---------------------------------------------------------------------------|
| Active allocs         |     430    |    1503    |    3658    |    3228    |
|       from large pool |     307    |     706    |    1306    |     999    |
|       from small pool |     123    |     797    |    2352    |    2229    |
|---------------------------------------------------------------------------|
| GPU reserved segments |     141    |     252    |     305    |     164    |
|       from large pool |     117    |     211    |     260    |     143    |
|       from small pool |      24    |      41    |      45    |      21    |
|---------------------------------------------------------------------------|
| Non-releasable allocs |     178    |     182    |    1528    |    1350    |
|       from large pool |      80    |      84    |     481    |     401    |
|       from small pool |      98    |     100    |    1047    |     949    |
|---------------------------------------------------------------------------|
| Oversize allocations  |       0    |       0    |       0    |       0    |
|---------------------------------------------------------------------------|
| Oversize GPU segments |       0    |       0    |       0    |       0    |
|===========================================================================|

Tue May 30 22:15:48 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.30.02              Driver Version: 530.30.02    CUDA Version: 12.1     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                  Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf            Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  Tesla V100-PCIE-16GB            On | 00000001:00:00.0 Off |                  Off |
| N/A   28C    P0               41W / 250W|   3500MiB / 16384MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
+---------------------------------------------------------------------------------------+

Thanks Ben. Much appreciated. I'll look into it and see what I can find.

Hi @tbenthompson, what version of TransformerLens did you use to produce this?

Great! Glad the repro works! I produced this on 1.2.2.

Have been investigating this with @pranavgade20 today. We haven't got to the bottom of the issue, but leaving some notes here for anybody to pick up
Circular reference
The HookedTransformer contains a circular reference, as proven in this snippet:
model = HookedTransformer.from_pretrained("gpt2-small")
assert model.mod_dict[""] == model

We attempted to patch this with the following patch, but it surprisingly did not have any effect on the memory usage:
diff --git a/transformer_lens/hook_points.py b/transformer_lens/hook_points.py
index 2802943..dd4f93b 100644
--- a/transformer_lens/hook_points.py
+++ b/transformer_lens/hook_points.py
@@ -139,10 +139,11 @@ class HookedRootModule(nn.Module):
         self.mod_dict = {}
         self.hook_dict: Dict[str, HookPoint] = {}
         for name, module in self.named_modules():
-            module.name = name
-            self.mod_dict[name] = module
-            if "HookPoint" in str(type(module)):
-                self.hook_dict[name] = module
+            if name != "":
+                module.name = name
+                self.mod_dict[name] = module
+                if "HookPoint" in str(type(module)):
+                    self.hook_dict[name] = module

     def hook_points(self):
         return self.hook_dict.values()

Dangling tensors
The following snippet shows that many tensors are still in scope after deleting the model and running the garbage collector:
import torch
import gc
from pympler import  refbrowser
from transformer_lens import HookedTransformer

assert len(gc.get_objects()) == 0

print("========Loading model=========")

model = HookedTransformer.from_pretrained("gpt2-small")
del model
gc.collect()
torch.cuda.empty_cache()

count = 0
for obj in gc.get_objects():
    try:
        if torch.is_tensor(obj) or (hasattr(obj, 'data') and torch.is_tensor(obj.data)):
            count += 1
            print(type(obj), obj.size())
            cb = refbrowser.ConsoleBrowser(obj)
            cb.print_tree()

    except Exception as e:
        pass

print(f"Found {count} dangling objects")

Output:
<class 'torch.nn.parameter.Parameter'> torch.Size([768, 2304])
torch.nn.parameter.Parameter-+-dict-+-module(__main__)-+-dict
                             |      |                  +-dict
                             |      |                  +-dict
                             |      |                  +-dict
                             |      |                  +-list
                             |      |
                             |      +-list--list_iterator
                             |
                             +-list--list_iterator
<class 'torch.nn.parameter.Parameter'> torch.Size([768, 2304])
<class 'torch.nn.parameter.Parameter'> torch.Size([768, 2304])
<class 'torch.nn.parameter.Parameter'> torch.Size([768, 2304])
<class 'torch.nn.parameter.Parameter'> torch.Size([768, 2304])
<class 'torch.nn.parameter.Parameter'> torch.Size([768, 2304])
<class 'torch.nn.parameter.Parameter'> torch.Size([768, 2304])
<class 'torch.nn.parameter.Parameter'> torch.Size([768, 2304])
<class 'torch.nn.parameter.Parameter'> torch.Size([768, 2304])
<class 'torch.nn.parameter.Parameter'> torch.Size([768, 2304])
<class 'torch.nn.parameter.Parameter'> torch.Size([768, 2304])
torch.nn.parameter.Parameter-+-dict-+-module(__main__)-+-dict
                             |      |                  +-dict
                             |      |                  +-dict
                             |      |                  +-dict
                             |      |                  +-list
                             |      |
                             |      +-list--list_iterator
                             |
                             +-list--list_iterator
<class 'torch.nn.parameter.Parameter'> torch.Size([768, 2304])
<class 'torch.nn.parameter.Parameter'> torch.Size([50257, 768])
<class 'torch.nn.parameter.Parameter'> torch.Size([768])
...

Possible next steps

dig into the ConsoleBrowser to find out where the dangling references are coming from

a useful pattern to use here is refbrowser.ConsoleBrowser(obj, str_func=lambda x: pdb.set_trace() or str(x)), which will launch the debugger inside the ConsoleBrowser

maybe try to to reproduce all of this on CPU in order to use refbrowser.InteractiveBrowser
???

I couldn't reduce the issue on CPU:
import transformers
import psutil
from time import sleep
import gc

process = psutil.Process()
print(f"PID: {process.pid}")

def print_memory_usage():
    print(f"Memory usage: {process.memory_info().rss / 1024 // 1024} MiB")

model_param_str = ['70m', '160m', '410m']
model_names = {mps: f"EleutherAI/pythia-{mps}-deduped" for mps in model_param_str}

print_memory_usage()

print("Loading huggingface models")
for param_str, model_name in model_names.items():
    model = transformers.GPTNeoXForCausalLM.from_pretrained(model_name)
sleep(1)
print_memory_usage()

print("Cleaning up huggingface models")
del model
gc.collect()
sleep(1)
print_memory_usage()

print("Loading TransformerLens models")
for param_str, model_name in model_names.items():
    model = HookedTransformer.from_pretrained(model_name, device="cpu")
sleep(1)
print_memory_usage()

print("Cleaning up TransformerLens models")
del model
gc.collect()
sleep(1)
print_memory_usage()

Output:
PID: 23096
Memory usage: 270.0 MiB
Loading huggingface models
Memory usage: 2051.0 MiB
Cleaning up huggingface models
Memory usage: 992.0 MiB
Loading TransformerLens models
Using pad_token, but it is not set yet.
Loaded pretrained model EleutherAI/pythia-70m-deduped into HookedTransformer
Using pad_token, but it is not set yet.
Loaded pretrained model EleutherAI/pythia-160m-deduped into HookedTransformer
Using pad_token, but it is not set yet.
Loaded pretrained model EleutherAI/pythia-410m-deduped into HookedTransformer
Memory usage: 1019.0 MiB
Cleaning up TransformerLens models
Memory usage: 852.0 MiB

OK, after playing around with various tools, I ran the fil profiler which I'm pretty sure is telling us which lines of code are responsible for the majority of memory allocation at the peak usage!
For example it shows that the line state_dict[k] = v.to(  was responsible for 3GB or 25% of the allocated memory at peak usage when I ran this script. (Note: the line numbers reported by the tool seem to be slightly out of sync so i'm not yet sure exactly which occurrence of this expression is responsible.)
It seems like the issues are mostly related to creating new tensors, so maybe we are doing something wrong when we create them (e.g. not detaching them from the computational graph??)
If anyone wants to look into this with me tomorrow then lmk!
Screenshot
I've included screenshot here, but this is best viewed interactively. Download this folder and index.html to do that: https://www.file.io/dCWH/download/LnE5aU1j0Ftt

Steps to repro
Code
# detect-leak.py

from transformer_lens import HookedTransformer
from tqdm import tqdm

for _ in tqdm(range(10)):
    model = HookedTransformer.from_pretrained("gpt2-small", device="cpu")

Command
pip install filprofiler
fil-profile run detect-leak.py

Update! I've managed to get the memory usage down from 15GB to 5GB in my test.
If you compare the diagram below with the one from my previous post, all of the overhead from load_and_process_state_dict is now gone for GPT2. The cause was that we weren't calling detach() when adding the weights from the reference model to the state dict!

I will raise a PR for this. The next step is to tackle the next-worst offender: move_model_modules_to_device

Sweet!! Glad you're getting to the root of the issue. This will be very helpful for anyone using TransformerLens with larger models.

Unfortunately when I reran @tbenthompson's reproducing example, the GPU usage is unchanged. Seems like this is a real issue, but it might be a separate one

Oh man, sorry about that! (and the other inevitable bugs in the guts of
core TL code...) I appreciate the heroic effort!
On Sun, 4 Jun 2023, 6:05 pm Rusheb Shah, @.***> wrote:

Unfortunately when I reran @tbenthompson https://github.com/tbenthompson's
reproducing example, the GPU usage is unchanged. Seems like this is a real
issue, but it might be a separate one
—
Reply to this email directly, view it on GitHub
https://github.com/neelnanda-io/TransformerLens/issues/290#issuecomment-1575640719,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASRPNKPIVWB72R5CEEWFLJ3XJS54JANCNFSM6AAAAAAYUT4MQE
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

I think this is mostly because py/torch.cuda is being lazy and not freeing up memory because it doesn't need it. You can force it to free memory by limiting the amount of memory it has with something like this:
import torch
torch.cuda.set_per_process_memory_fraction(0.4, 0)   # adjust this fraction to correspond to ~2.5gigs of vram
from transformer_lens import HookedTransformer

model = HookedTransformer.from_pretrained("gpt2-small")
gc.collect()
gc.collect()  # two calls are sometimes necessary because of unfortunate timing
torch.cuda.empty_cache()
print("===================================== peak usage")
os.system('nvidia-smi')  # this says 1.7 GiB is taken up

This uses ~2322MiB of vram on my 3060. Removing the set_per_process_memory_fraction call takes up ~3050MiB.
This is probably not the whole story, but some of it does appear to be just cuda not freeing up memory because it is slightly faster.
Speculation:
If I set gc.set_debug(gc.DEBUG_STATS), I can see a lot of gc passes in the young generation, but since the program footprint in RAM is just a few megabytes, it almost never tries to clean up the old generation. This means that the pointer to a GiB in VRAM is a handful of bytes, and thus not a good target for getting cleaned up.
Possibly unrelated, I can get torch.cuda to release t = torch.zeros((2000,1000,1000), device='cuda', dtype=torch.uint8) 2 GB of memory - it should be just 1.3 GB if we consider the peak usage after deleting the model, so doing this does force some more memory to be released. If I delete t immediately after it is allocated, it does get cleaned up, probably because it is still in the young generation.
Since this causes the memory usage to drop down to ~1 GiB for gpt-2, this is probably the best patch to force torch to free at least some memory until more details are figured out.


Provide a toned down theme

The feedback (please check it!) on reddit was great. But some of the users indicated that the colors are too bright for them.
The idea is to provide a theme that's less bright (@smartapant: more calm) but generally the same. Might be more dull, so enterprise/corporate guys could use it.
You can play with color pickers on https://vuestic.epicmax.co/, then pass @asvae or @smartapant these variables with a couple screenshots.

@asvae @smartapant I think the main issue is not about original colours but rather the generated ones: gradients and hover state. My eyes start to hurt when I hover a button as well :D Let's fix that.

Let's make the left 'generated' gradient colours less saturated and resembling the original colour more.

Let's fix the hover state by referring to https://xx13.github.io/vuestic_redesign/#colors and making sure that we use scale-color rather than lighten or darken.

Then we can consider having an alternative pastel palette.

@asvae @smartapant here is the example. I used a very dark variation of the green colour and (1) the hover is pretty hardcore and (2) gradient is generated in a strange way so the main colour is not here :D:D The basic idea was that the original colour is one of the colours in the gradient and the lighter one with a slight hue shift is being generated.

@asvae

@xx13

the original colour is used as it is and the lighter one with a slight hue shift is being generated
What you're saying doesn't correspond to zeplin colors (which was the source material for color models): https://app.zeplin.io/project/5bcd9657767a220982a4ab61/screen/5bd8629215d2791b64732487

I think correct way of actions would be to fix zeplin, then to update solution in code.

@asvae @smartapant
Colours, Gradients, Zeplin
Current version has gradients that consist of 2 colours: an original one and a modified version. That works for all main colours, except for the green (oops).
Two Green Colours
For some reason green gradient has a slightly different green shade on the right, and I think that caused some confusion about the way gradients should be built though there are no drastic visual differences. Instead of #40e583 colour #23e066 was used.

One Green To Rule Them All
Let’s use #23e066 as the main green colour. It adds a little more contrast that will be appreciated by users. Here are some examples of this minor update:

If it works for you, I will updated all styles with the green in Zeplin.
Gradients
Let’s stick to the following structure: a modified colour on the left and the original colour on the right. Here are some examples:

Current implementation needs a fix because both colours are modified and the original colour barely impacts the way the gradient will look like.

Hover
Let’s fix hover effect. I believe the issue is about using absolute lighten values instead of relative ones. That might be the reason why the hover effect looks so rough. Let’s be sure to use scale-color instead. I'm good to go with any other solution as long as it solves the issue. Please compare:

@smartapant @asvae please review the updated scheme. I made shadows smaller so the themes have more differences (but I also have a screen with the same shadows). It will be pretty cool to have different basic colors, but not sure whether we can pull that out keeping in mind variables that we defined (not have updated blue, green, yellow but rather purple, blue, red). Please feel free to comment :)

@xx13 looks much calmer now.
What do you think of:

Making top-left logo calmer too (green gradient might be no good)
paler primary color
play with sidebar/navbar colors? (shades of gray instead of blue?)

@smartapant

it isn't a big deal as another logotypes will be used there :)
kk
I tried dark grey colours and then decided to go with something colorful. I'll explore grey options.

@xx13

for demo purposes :D
have you also tried white (like widgets)?

@smartapant
yep, I tried lots of different stuff :) I'd show all different options then.

@smartapant here are some options, we can combine them to pick an accent colour you like

Buttons moved to https://github.com/epicmaxco/vuestic-ui/issues/28

@asvae @smartapant please review the updated alternative theme:
Update Log:

Shadows became smaller and lighter (buttons, cards).
Main buttons don’t have gradients rather solid colors.
Updated colors.
Theme switcher added to the color management tool (top bar). Recover defaults button becomes active if any changes to the themes occur.
Alternative theme has a different set of default colors with a single accent color.
Top bar has a shadow.

Updated Colors:

primary #6E85E8
success #8FDB8B
info #74BBFF
error #F67170
warning #FFD55E
black #34495E
secondary #8396A5

The screen was uploaded to Zeplin and can be found by 'Dashboard' tag.

@xx13 looks great!


Add option to synchronize updating lambda w/ the gradient step

This is a natural follow-up to bastings/interpretable_predictions#4,
Before:
lambda is updated whilst the loss is being computed, effectively leading up to an asynchronous parameter update schema, i.e.

After:
synchronize both updates, i.e.
From my limited testing, this doesn't seem to make a big difference empirically though.
@bastings What do you reckon?

Closing as I think the original asynchronous update maps closer to the "mini-max" formulation of the Lagrangian optimization.


make postgres backend work again; use in memory db for datasets

 Persistenter Workflow-Storage

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

2 of 33 (6.06%)  changed or added relevant lines in 3 files are covered.
2 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.08%) to 83.622%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

services/src/projects/project.rs
0
2
0.0%

services/src/pro/server.rs
0
4
0.0%

services/src/pro/contexts/postgres.rs
2
27
7.41%

Files with Coverage Reduction
New Missed Lines
%

services/src/projects/project.rs
1
85.06%

services/src/server.rs
1
66.67%

Totals

Change from base Build<PHONE_NUMBER>:
-0.08%

Covered Lines:
24349

Relevant Lines:
29118

💛  - Coveralls


24h TIME

We are using 24h time format. How to make it show 24h time and get rid of AM/PM symbols?

I subscrie to this, we need 24h time format

It's already possible by either setting your correct locale in your home assistant profile or by setting the property 'locale' correctly.

Hi Fabian,
Thanks a lot for your quick answer!
Unless I'm doing something wrong or there's something I do not undestand, my setup looks like this:
[cid:25506b1d-1e7a-47ee-ba91-0df068dcadc7]    this is the clock card
[cid:b9ee33fc-4528-4b89-8a58-b9f3243bb843]  and this is my profile setup.
As you can see the time is set in 24H format. Any idea what could be wrong?
Thanks in advance!
Best regards,
Gabriel

From: Fabian @.>
Sent: Sunday, July 30, 2023 11:12 PM
To: wassy92x/lovelace-digital-clock @.>
Cc: gabimal @.>; Comment @.>
Subject: Re: [wassy92x/lovelace-digital-clock] 24h TIME (Issue #34)
It's already possible by either setting your correct locale in your home assistant profile or by setting the property 'locale' correctly.
—
Reply to this email directly, view it on GitHubhttps://github.com/wassy92x/lovelace-digital-clock/issues/34#issuecomment-1657256434, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AJUU6SJESF5FQJRPBZ5LWULXS252TANCNFSM6AAAAAA2EKSIEE.
You are receiving this because you commented.Message ID: @.***>

Unfortuntaly I can't see the pictures.

I can use a file transfer service to send you the pictures. Is this address ok?
@.***
Thank you!

From: Fabian @.>
Sent: Sunday, July 30, 2023 11:27 PM
To: wassy92x/lovelace-digital-clock @.>
Cc: gabimal @.>; Comment @.>
Subject: Re: [wassy92x/lovelace-digital-clock] 24h TIME (Issue #34)
Unfortuntaly I can't see the pictures.
—
Reply to this email directly, view it on GitHubhttps://github.com/wassy92x/lovelace-digital-clock/issues/34#issuecomment-1657260311, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AJUU6SLTMNHCHNWBYGUGNNTXS27UZANCNFSM6AAAAAA2EKSIEE.
You are receiving this because you commented.Message ID: @.***>


Add travis to rsparkling

This PR enables travis CI for rsparkling.
Also, some cosmetic changes to the README

You can even try to upload results somewhere to s3 if it is a build for the master branch.


Handle paNoDevice

#142
Added PA_NO_DEVICE to the possible errors portaudio errors.

On second thought...
Maybe I should explicitly handle this in the return values for Pa_GetDefault...Device instead, that way it may be easier to debug if something else returns -1 for some reason.


-      Occuring species: {biodiv} \

          `-      Occuring species: {biodiv} \`

disappeared from the climsight.py  in content_message after PR #66 was merged.
Originally posted by @kuivi in https://github.com/CliDyn/climsight/issues/66#issuecomment-2113300467

closed by PR #87


Remove console.logs

Remove dev time console.logs added with the service worker code.

Coverage increased (+0.06%) to 34.271% when pulling e89b624694c5cf8a8f0acbf1bdb6eb1b08b00886 on arunoda:prefetcher-no-logs into aa6870a4e6266d48c43b6418addde16b0e977326 on zeit:master.

Coverage increased (+0.06%) to 34.271% when pulling e89b624694c5cf8a8f0acbf1bdb6eb1b08b00886 on arunoda:prefetcher-no-logs into aa6870a4e6266d48c43b6418addde16b0e977326 on zeit:master.


chore: bump to CDN jQuery from 2.0.3 to 3.4.1

jsDelivr has good coverage in China. Since hexo has many chinese users, may I suggest to switch to it?
It is also possible to specify a major version (https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js), which works like npm "jquery": "^3.4.1".
fancybox and fontawesome could also be CDN-ed, maybe consider after https://github.com/hexojs/hexo-theme-landscape/pull/126.

@weyusi
I think it's a good idea ;)
I add commit to change jsDeliver CDN.

Does the theme still work?
Did someone tested it? on various browser (IE, Chrome & Firefox at least)

Just found an issue with IE11

Link
Status

//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js
Works

//ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
No

<EMAIL_ADDRESS>No

/js/jquery.v3.4.1.min.js
Works

https://stackoverflow.com/questions/20214242/jquery-is-undefined-exception-in-ie11
https://stackoverflow.com/questions/40178845/ie11-jquery-error
To fix it, add
<script>
window.jQuery || document.write('<script src="/js/jquery.min.js"><\/script>')
</script>

and the jquery.min.js file to source/js/.

Thanks @curbengh !
I think we should self-host it. Because, it seems other (e.g. fontawesome, fancybox) resources will be self-host #126 & as say @curbengh  IE11 will work if self-host.
I will close once & re-create PR after merge #126 If there is no opposite opinion.
@tomap

Does the theme still work?

Your point out is theme or this PR? Maybe no problem if that specified theme. Because sometimes I use this theme for investigate issue in my repository :)

self-host is fine, users who prefer CDN can easily modify the theme.
btw, could you also replace '

@YoshinoriN
any update?

@curbengh
Sorry, I forgot this PR. I create another PR #142


[BUG] BLOQUER SUR CONFIGURATION DE ROBLOX

Acknowledgement of preliminary instructions

[X] I have read the preliminary instructions, and I am certain that my problem has not already been addressed.
[X] I have thoroughly looked through the available Wiki articles and could not find a solution to my problem.
[X] I am using the latest version of Bloxstrap.
[ ] I did not answer truthfully to all the above checkboxes.

What problem did you encounter?
J'installe bloxstrap quand j'installe sa mets installé etc et ensuite sa mets configuration de roblox j'attends et sa affiche rien d'autre que sa

Bloxstrap Log
N/A

Update to 2.8.0.

TY !!
Le dim. 20 oct. 2024 à 20:33, Matt @.***> a écrit :

Update to 2.8.0.
—
Reply to this email directly, view it on GitHub
https://github.com/bloxstraplabs/bloxstrap/issues/3371#issuecomment-2425171209,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BMI4N263YUIS23ZB5536VYDZ4PZQBAVCNFSM6AAAAABQIWSOCOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMRVGE3TCMRQHE
.
You are receiving this because you authored the thread.Message ID:
@.***>


Inconsistency in version 1.32.1 with ostree installations

In trying to execute ltp-lite tests on an ostree system, consistently in the prepare stage, tmt uses dnf to install the required packages and so it fails.
11:18:18 tmt version: 1.32.1
...
11:19:10             cmd: rpm -q --whatprovides rpm-build rng-tools rsyslog procmail bzip2 automake util-linux /usr/bin/flock libcap-devel ntpsec strace wget python3 bc autoconf gcc numactl libaio-devel bison numactl-devel flex || dnf install -y  rpm-build rng-tools rsyslog procmail bzip2 automake util-linux /usr/bin/flock libcap-devel ntpsec strace wget python3 bc autoconf gcc numactl libaio-devel bison numactl-devel flex
...
11:19:12             out: Extra Packages for Enterprise Linux 9 - aarch64 1.6 MB/s | 1.6 kB     00:00
11:19:12             err: Importing GPG key 0x3228467C:
11:19:12             err:  Userid     : "Fedora (epel9<EMAIL_ADDRESS>11:19:12             err:  Fingerprint: FF8A D134 4597 106E CE81 3B91 8A38 72BF 3228 467C
11:19:12             err:  From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
11:19:12             err: error: can't create transaction lock on /usr/share/rpm/.rpm.lock (Read-only file system)
11:19:12             err: Key import failed (code 2). Failing package is: libbsd-0.12.2-1.el9.aarch64
11:19:12             err:  GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
11:19:12             err: Public key for libmd-1.1.0-1.el9.aarch64.rpm is not installed. Failing package is: libmd-1.1.0-1.el9.aarch64
11:19:12             err:  GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
11:19:12             out: The downloaded packages were saved in cache until the next successful transaction.
11:19:12             err: Public key for ntpsec-1.2.2a-1.el9.aarch64.rpm is not installed. Failing package is: ntpsec-1.2.2a-1.el9.aarch64
11:19:12             out: You can remove cached packages by executing 'dnf clean packages'.
11:19:12             err:  GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
11:19:12             err: Error: GPG check FAILED

Using 1.31.0 with the same test against the same environment works without issue.

There is difference in package manager fact - on 1.28.0 we detect rpm-ostree but 1.32.1 detect dnf.
Did we change the order in which rpm-ostree vs dnf is evaluated?  It shouldn't matter, but it does :(

What provision plugin and image did you use? We do have a test that runs prepare/install against a fedora-coreos VM, https://github.com/teemtee/tmt/blob/main/tests/prepare/install/test.sh#L32. I will dig into it, because I would expect it to fail from time to time should the problem be even remotely reproducible. Maybe the image used by @sbertramrh and @lukaszachy is slightly different, more prone to the failure.

What provision plugin and image did you use? We do have a test that runs prepare/install against a fedora-coreos VM, https://github.com/teemtee/tmt/blob/main/tests/prepare/install/test.sh#L32. I will dig into it, because I would expect it to fail from time to time should the problem be even remotely reproducible. Maybe the image used by @sbertramrh and @lukaszachy is slightly different, more prone to the failure.

This was a rhel/rhivos image on the target board, not VM.

From what I found out: fedora coreos doesn't have dnf installed. That machine has, even though it is rpmostree type.

From what I found out: fedora coreos doesn't have dnf installed. That machine has, even though it is rpmostree type.

Yeah, that will be the problem, images I had for testing did not contain dnf, hence no problem.
I'm going to extend https://github.com/teemtee/tmt/blob/main/tests/prepare/install/test.sh with few more cases, including this one, if possible. This should be reproducible.

@happz could we consider cherry pick that to 1.32, this will break RHIVOS AFAIU :( and we cannot break them

@thrix IMO it should be doable. And packit release might be easier to done than rpm only patch. We'll see once we merge the fix.

@lukaszachy another benefit of the copr :)

Should we allow user to provide the package manager fact? It would workaround similar problems in the future (e.g. if machine has manager X installed for some reason but Y has to be used)

Should we allow user to provide the package manager fact? It would workaround similar problems in the future (e.g. if machine has manager X installed for some reason but Y has to be used)

This is indeed a bug and should be fixed, I should have a patch ready today, /me hopes.
That said, yep, opening (some) facts up, and letting user force their value might be useful. Are there already other facts we might open together with the package manager? We should probably do it in a way that would allow us to open up additional facts, like "selinux" or "superuser".
BTW should we have some kind of priorities? If dnf5, dnf and yum are all installed on a guest, what should be the package manager used?

Attempted a fix in https://github.com/teemtee/tmt/pull/2861. The bug should be reported by the new test which uses a custom CoreOS image with pre-installed dnf5 (https://github.com/teemtee/tmt/pull/2861/files#diff-b934e59dfcc3fe535c15739bb6afa87ed8600bd913005bf866960229edbfd115 + https://github.com/teemtee/tmt/pull/2861/files#diff-73ef46a5e318f561d83a865ab25a3cefe3fce01585c4e49f4b53ae194f84c608R182)


Exclude source-overrides from checkStyle javadocPackage

Fix spotless github action
Please add a meaningful description for your change here

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI or the workflows README to see a list of phrases to trigger workflows.

R: @damccorm
apparently there was some racing condition but not triggered on Jenkins, only in GItHub Action failing since today (flink code did not change in last week though)

test suite back green: https://github.com/apache/beam/actions/runs/6163352740/job/16726718835?pr=28419


Create a native desktop client for Windows Admin Center

When will windows admin center be coming as a native app, or at least a web wrapper, using WebView2 like the way the teams client is migrating to.
This has been a feature request since windows admin center had been announce and the response has always been in the future, but there have been no further updates.
This would also allow for a smaller install on the desktop, allow the Windows admin center to be cross platform/mobile if the WebView2 approach is taken. Also, this would allow for password-less authentication using a YubiKey, Smartcard, or other such device.

I support understand the idea. Hence this approach should also consider security and how to allow and block management. Currently you can manage Defender Firewall to pinpoint WAC gateway <> objects via WinRM and delegation.
If you allow a broader access from other devices we also increase the risk for attacks to WAC, which would be devastating because not only WAC could be attacked but in consequence anything an attacker will love to have:
high privilege
PowerShell Remote Access
WinRM access
etc.

also please consider the initial design:


tsc throw  error TS2307: Cannot find module '@vue-macros/reactivity-transform/vite' or its corresponding type declarations.

Describe the bug
using<EMAIL_ADDRESS>tsc throw error at  code below<EMAIL_ADDRESS>is fine
import ReactivityTransform from '@vue-macros/reactivity-transform/vite'
electron.vite.config.ts:21:33 - error TS2307: Cannot find module '@vue-macros/reactivity-transform/vite' or its corresponding type declarations.
Reproduction
not provided  at the moment
System Info
System:
    OS: macOS 10.15.7
    CPU: (4) x64 Intel(R) Core(TM) i5-4258U CPU @ 2.40GHz
    Memory: 18.88 MB / 8.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 16.19.1 - ~/.nvm/versions/node/v16.19.1/bin/node
    Yarn: 1.22.19 - ~/.nvm/versions/node/v16.19.1/bin/yarn
    npm: 8.19.3 - ~/.nvm/versions/node/v16.19.1/bin/npm
  Browsers:
    Chrome: 111.0.5563.64
    Firefox: 86.0
    Safari: 15.6.1
  npmPackages:
    @vitejs/plugin-vue: ^4.1.0 => 4.1.0
    vite: ^4.2.0 => 4.2.0

Used Package Manager
yarn
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
[X] The provided reproduction is a minimal reproducible of the bug.

{
  "compilerOptions": {
    "moduleResolution": "bundler"
    // ...
  }
}

It's a main feature of TS 5. Please follow the configuration above.


Your plugin break material_select

HI I'm using Materializecss for my project and integrated parsley validation in it
Everything working file no problem in validation. But after parsley validation run if we call $('select').material_select() . Select label is coincide with option .Screenshot attached here.
calling material_select() before parsley validation

calling material_select() after parsley validation

I'm sorry you are having issues.
I'm also sorry that you didn't read that without a minimal running example we can not investigate further.
Closing until then.

Did you need to be so aggressive?

I'm sorry you read my message as aggressive.
Here is a more detailed message.
My name is Marc-André and I'd like to help. I'm not the original author but I liked the project so much I started contributing more and more. Now I'm the (only) maintainer.
How you can help
I'd like you to help me by doing everything you can on your end so I have to do less on my end. As you can imagine, I have already spent a lot of time making this project better, and given the price you're paying to use it or the efforts you have made contributing to this project, I think it's fair to ask that.
To serve that goal, I wrote that bug reports should provide a working example in the READ ME file. Still, some people don't provide a working example here.
I requested the same in the Contributing Guidelines. Even though GitHub has a paragraph saying "Please review the guidelines for contributing to this repository." that shows up whenever someone creates an issue, some people don't provide a working example.
Finally, GitHub allowed us to write a template issue, in which I wrote

you must provide a minimal example in a CodePen
starting from http://jsfiddle.net/JNsu6/15/.

Still, some people like you delete this text and report a bug without a working example. So I am wondering: why did you feel it was the right thing to do? What could I possibly have done so that this basic wish was respected? I must admit that I feel disrespected whenever someone completely ignores my requests. I understand that most developers don't feel the urge to help by digging in, inspecting the code and contributing back with great bug reports or pull requests, but it saddens me when people show little care and disregard maintainer wishes.
It would help me a lot if you helped me find a solution so that bug reports are posted with working examples.
Why Working Examples?
A working example is a great opportunity to minimize the problem, have the least amount of dependencies, etc.
Maybe by doing this, you will figure out what is going on. Or maybe the issue is something else than what you thought it was.
Or maybe the issue exists and this way, I can see it with a few clicks. If I only get partial code, I need to guess what the issue could be. Sometimes my understanding of the code is enough, I'll think about it and "ha ha", I know what the issue is. Usually I don't though, so then I have to copy-paste the bits and pieces given to me and try to reproduce the issue. This takes me some time that you could have spent.
So, if you have hints on how to avoid bug reports without working example, please let me know.
More to the point, provide a working example, for this project or any other where you can. I'm closing this and will reopen when there is a working example. Thank you for your understanding.

PS: It may just be because Parsley adds a div to put errors in and that div confuses the other library. There's an option to specify the error div which might alleviate this, or some tweaks to Materializecss so it's CSS is more robust.

Thanks guys, i fixed it by using below css
.select-wrapper+ul.parsley-errors-list+label
{
	position: absolute;
    top: -14px;
    font-size: .8rem;
}


SDL2 build failure

Host Environment

OS: Kubuntu 20.04 LTS
Compiler: gcc version 9.3.0

To Reproduce
Steps to reproduce the behavior:
sudo ./vcpkg install sdl2
Failure logs
Computing installation plan...
The following packages will be built and installed:
    sdl2[core]:x64-linux -> 2.0.12#8
Detecting compiler hash for triplet x64-linux...
Could not locate cached archive: /root/.cache/vcpkg/archives/71/712fc710a377b02d83e8fcae0b3e43996d692c33.zip
Starting package 1/1: sdl2:x64-linux
Building package sdl2[core]:x64-linux...
-- Using cached /home/myname/vcpkg/downloads/SDL2-2.0.12.tar.gz
-- Cleaning sources at /home/myname/vcpkg/buildtrees/sdl2/src/SDL2-2-54c5df58ab.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source /home/myname/vcpkg/downloads/SDL2-2.0.12.tar.gz
-- Applying patch export-symbols-only-in-shared-build.patch
-- Applying patch enable-winrt-cmake.patch
-- Applying patch disable-hidapi-for-uwp.patch
-- Applying patch fix-space-in-path.patch
-- Applying patch disable-wcslcpy-and-wcslcat-for-windows.patch
-- Applying patch fix-EventToken-header-reference.patch
-- Applying patch 0006-sdl2-Enable-creation-of-pkg-cfg-file-on-windows.patch
-- Applying patch 0007-sdl2-skip-ibus-on-linux.patch
-- Applying patch 0008-fix-macos-metal-test.patch
-- Applying patch no-propagate-shared-link-options.patch
-- Using source at /home/myname/vcpkg/buildtrees/sdl2/src/SDL2-2-54c5df58ab.clean
-- Configuring x64-linux-dbg
CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:108 (message):
    Command failed: /home/myname/vcpkg/downloads/tools/cmake-3.19.2-linux/cmake-3.19.2-Linux-x86_64/bin/cmake /home/myname/vcpkg/buildtrees/sdl2/src/SDL2-2-54c5df58ab.clean -DVIDEO_VULKAN=OFF -DSDL_STATIC=1 -DSDL_SHARED=0 -DFORCE_STATIC_VCRT=0 -DLIBC=ON -DCMAKE_MAKE_PROGRAM=/home/myname/vcpkg/downloads/tools/ninja-1.10.1-linux/ninja -DCMAKE_SYSTEM_NAME=Linux -DBUILD_SHARED_LIBS=OFF -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=/home/myname/vcpkg/scripts/toolchains/linux.cmake -DVCPKG_TARGET_TRIPLET=x64-linux -DVCPKG_SET_CHARSET_FLAG=ON -DVCPKG_PLATFORM_TOOLSET=external -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY=ON -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=TRUE -DCMAKE_VERBOSE_MAKEFILE=ON -DVCPKG_APPLOCAL_DEPS=OFF -DCMAKE_TOOLCHAIN_FILE=/home/myname/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION=ON -DVCPKG_CXX_FLAGS= -DVCPKG_CXX_FLAGS_RELEASE= -DVCPKG_CXX_FLAGS_DEBUG= -DVCPKG_C_FLAGS= -DVCPKG_C_FLAGS_RELEASE= -DVCPKG_C_FLAGS_DEBUG= -DVCPKG_CRT_LINKAGE=dynamic -DVCPKG_LINKER_FLAGS= -DVCPKG_LINKER_FLAGS_RELEASE= -DVCPKG_LINKER_FLAGS_DEBUG= -DVCPKG_TARGET_ARCHITECTURE=x64 -DCMAKE_INSTALL_LIBDIR:STRING=lib -DCMAKE_INSTALL_BINDIR:STRING=bin -D_VCPKG_ROOT_DIR=/home/myname/vcpkg -D_VCPKG_INSTALLED_DIR=/home/myname/vcpkg/installed -DVCPKG_MANIFEST_INSTALL=OFF -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/home/myname/vcpkg/packages/sdl2_x64-linux/debug
    Working Directory: /home/myname/vcpkg/buildtrees/sdl2/x64-linux-dbg
    Error code: 1
    See logs for more information:
      /home/myname/vcpkg/buildtrees/sdl2/config-x64-linux-dbg-out.log
      /home/myname/vcpkg/buildtrees/sdl2/config-x64-linux-dbg-err.log

Call Stack (most recent call first):
  scripts/cmake/vcpkg_configure_cmake.cmake:328 (vcpkg_execute_required_process)
  ports/sdl2/portfile.cmake:32 (vcpkg_configure_cmake)
  scripts/ports.cmake:136 (include)

Error: Building package sdl2:x64-linux failed with: BUILD_FAILED
Please ensure you're using the latest portfiles with `./vcpkg update`, then
submit an issue at https://github.com/Microsoft/vcpkg/issues including:
  Package: sdl2:x64-linux
  Vcpkg version: 2020.11.12-unknownhash

Additionally, attach any relevant sections from the log files above.

config-x64-linux-dbg-out.log:
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Performing Test HAVE_GCC_WALL
-- Performing Test HAVE_GCC_WALL - Success
-- Performing Test HAVE_GCC_NO_STRICT_ALIASING
-- Performing Test HAVE_GCC_NO_STRICT_ALIASING - Success
-- Performing Test HAVE_GCC_WDECLARATION_AFTER_STATEMENT
-- Performing Test HAVE_GCC_WDECLARATION_AFTER_STATEMENT - Success
-- Performing Test HAVE_GCC_WERROR_DECLARATION_AFTER_STATEMENT
-- Performing Test HAVE_GCC_WERROR_DECLARATION_AFTER_STATEMENT - Success
-- Performing Test HAVE_GCC_ATOMICS
-- Performing Test HAVE_GCC_ATOMICS - Success
-- Performing Test HAVE_GCC_PREFERRED_STACK_BOUNDARY
-- Performing Test HAVE_GCC_PREFERRED_STACK_BOUNDARY - Failed
-- Performing Test HAVE_GCC_FVISIBILITY
-- Performing Test HAVE_GCC_FVISIBILITY - Success
-- Performing Test HAVE_GCC_WSHADOW
-- Performing Test HAVE_GCC_WSHADOW - Success
-- Performing Test HAVE_NO_UNDEFINED
-- Performing Test HAVE_NO_UNDEFINED - Success
-- Performing Test HAVE_MMX
-- Performing Test HAVE_MMX - Success
-- Performing Test HAVE_3DNOW
-- Performing Test HAVE_3DNOW - Success
-- Performing Test HAVE_SSE
-- Performing Test HAVE_SSE - Success
-- Performing Test HAVE_SSE2
-- Performing Test HAVE_SSE2 - Success
-- Performing Test HAVE_SSE3
-- Performing Test HAVE_SSE3 - Success
-- Looking for immintrin.h
-- Looking for immintrin.h - found
-- Performing Test HAVE_ALTIVEC_H_HDR
-- Performing Test HAVE_ALTIVEC_H_HDR - Failed
-- Performing Test HAVE_ALTIVEC
-- Performing Test HAVE_ALTIVEC - Failed
-- Performing Test ARMSIMD_FOUND
-- Performing Test ARMSIMD_FOUND - Failed
-- Performing Test ARMNEON_FOUND
-- Performing Test ARMNEON_FOUND - Failed
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdio.h
-- Looking for stdio.h - found
-- Looking for stdlib.h
-- Looking for stdlib.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Looking for stdarg.h
-- Looking for stdarg.h - found
-- Looking for malloc.h
-- Looking for malloc.h - found
-- Looking for memory.h
-- Looking for memory.h - found
-- Looking for string.h
-- Looking for string.h - found
-- Looking for limits.h
-- Looking for limits.h - found
-- Looking for strings.h
-- Looking for strings.h - found
-- Looking for wchar.h
-- Looking for wchar.h - found
-- Looking for inttypes.h
-- Looking for inttypes.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for ctype.h
-- Looking for ctype.h - found
-- Looking for math.h
-- Looking for math.h - found
-- Looking for iconv.h
-- Looking for iconv.h - found
-- Looking for signal.h
-- Looking for signal.h - found
-- Looking for libunwind.h
-- Looking for libunwind.h - not found
-- Looking for 8 include files dlfcn.h, ..., float.h
-- Looking for 8 include files dlfcn.h, ..., float.h - found
-- Check size of size_t
-- Check size of size_t - done
-- Looking for M_PI
-- Looking for M_PI - found
-- Performing Test HAVE_MPROTECT
-- Performing Test HAVE_MPROTECT - Success
-- Looking for strtod
-- Looking for strtod - found
-- Looking for malloc
-- Looking for malloc - found
-- Looking for calloc
-- Looking for calloc - found
-- Looking for realloc
-- Looking for realloc - found
-- Looking for free
-- Looking for free - found
-- Looking for getenv
-- Looking for getenv - found
-- Looking for setenv
-- Looking for setenv - found
-- Looking for putenv
-- Looking for putenv - found
-- Looking for unsetenv
-- Looking for unsetenv - found
-- Looking for qsort
-- Looking for qsort - found
-- Looking for abs
-- Looking for abs - found
-- Looking for bcopy
-- Looking for bcopy - found
-- Looking for memset
-- Looking for memset - found
-- Looking for memcpy
-- Looking for memcpy - found
-- Looking for memmove
-- Looking for memmove - found
-- Looking for memcmp
-- Looking for memcmp - found
-- Looking for strlen
-- Looking for strlen - found
-- Looking for strlcpy
-- Looking for strlcpy - not found
-- Looking for strlcat
-- Looking for strlcat - not found
-- Looking for _strrev
-- Looking for _strrev - not found
-- Looking for _strupr
-- Looking for _strupr - not found
-- Looking for _strlwr
-- Looking for _strlwr - not found
-- Looking for strchr
-- Looking for strchr - found
-- Looking for strrchr
-- Looking for strrchr - found
-- Looking for strstr
-- Looking for strstr - found
-- Looking for strtok_r
-- Looking for strtok_r - found
-- Looking for itoa
-- Looking for itoa - not found
-- Looking for _ltoa
-- Looking for _ltoa - not found
-- Looking for _uitoa
-- Looking for _uitoa - not found
-- Looking for _ultoa
-- Looking for _ultoa - not found
-- Looking for strtol
-- Looking for strtol - found
-- Looking for strtoul
-- Looking for strtoul - found
-- Looking for _i64toa
-- Looking for _i64toa - not found
-- Looking for _ui64toa
-- Looking for _ui64toa - not found
-- Looking for strtoll
-- Looking for strtoll - found
-- Looking for strtoull
-- Looking for strtoull - found
-- Looking for atoi
-- Looking for atoi - found
-- Looking for atof
-- Looking for atof - found
-- Looking for strcmp
-- Looking for strcmp - found
-- Looking for strncmp
-- Looking for strncmp - found
-- Looking for _stricmp
-- Looking for _stricmp - not found
-- Looking for strcasecmp
-- Looking for strcasecmp - found
-- Looking for _strnicmp
-- Looking for _strnicmp - not found
-- Looking for strncasecmp
-- Looking for strncasecmp - found
-- Looking for wcscmp
-- Looking for wcscmp - found
-- Looking for wcsdup
-- Looking for wcsdup - found
-- Looking for wcslcat
-- Looking for wcslcat - not found
-- Looking for wcslcpy
-- Looking for wcslcpy - not found
-- Looking for wcslen
-- Looking for wcslen - found
-- Looking for wcsncmp
-- Looking for wcsncmp - found
-- Looking for wcsstr
-- Looking for wcsstr - found
-- Looking for sscanf
-- Looking for sscanf - found
-- Looking for vsscanf
-- Looking for vsscanf - found
-- Looking for vsnprintf
-- Looking for vsnprintf - found
-- Looking for fopen64
-- Looking for fopen64 - found
-- Looking for fseeko
-- Looking for fseeko - found
-- Looking for fseeko64
-- Looking for fseeko64 - found
-- Looking for sigaction
-- Looking for sigaction - found
-- Looking for setjmp
-- Looking for setjmp - found
-- Looking for nanosleep
-- Looking for nanosleep - found
-- Looking for sysconf
-- Looking for sysconf - found
-- Looking for sysctlbyname
-- Looking for sysctlbyname - not found
-- Looking for getauxval
-- Looking for getauxval - found
-- Looking for poll
-- Looking for poll - found
-- Looking for _Exit
-- Looking for _Exit - found
-- Looking for pow in m
-- Looking for pow in m - found
-- Looking for atan
-- Looking for atan - found
-- Looking for atan2
-- Looking for atan2 - found
-- Looking for atanf
-- Looking for atanf - found
-- Looking for atan2f
-- Looking for atan2f - found
-- Looking for ceil
-- Looking for ceil - found
-- Looking for ceilf
-- Looking for ceilf - found
-- Looking for copysign
-- Looking for copysign - found
-- Looking for copysignf
-- Looking for copysignf - found
-- Looking for cos
-- Looking for cos - found
-- Looking for cosf
-- Looking for cosf - found
-- Looking for exp
-- Looking for exp - found
-- Looking for expf
-- Looking for expf - found
-- Looking for fabs
-- Looking for fabs - found
-- Looking for fabsf
-- Looking for fabsf - found
-- Looking for floor
-- Looking for floor - found
-- Looking for floorf
-- Looking for floorf - found
-- Looking for fmod
-- Looking for fmod - found
-- Looking for fmodf
-- Looking for fmodf - found
-- Looking for log
-- Looking for log - found
-- Looking for logf
-- Looking for logf - found
-- Looking for log10
-- Looking for log10 - found
-- Looking for log10f
-- Looking for log10f - found
-- Looking for pow
-- Looking for pow - found
-- Looking for powf
-- Looking for powf - found
-- Looking for scalbn
-- Looking for scalbn - found
-- Looking for scalbnf
-- Looking for scalbnf - found
-- Looking for sin
-- Looking for sin - found
-- Looking for sinf
-- Looking for sinf - found
-- Looking for sqrt
-- Looking for sqrt - found
-- Looking for sqrtf
-- Looking for sqrtf - found
-- Looking for tan
-- Looking for tan - found
-- Looking for tanf
-- Looking for tanf - found
-- Looking for acos
-- Looking for acos - found
-- Looking for acosf
-- Looking for acosf - found
-- Looking for asin
-- Looking for asin - found
-- Looking for asinf
-- Looking for asinf - found
-- Looking for iconv_open in iconv
-- Looking for iconv_open in iconv - not found
-- Looking for alloca.h
-- Looking for alloca.h - found
-- Looking for alloca
-- Looking for alloca - not found
-- Performing Test HAVE_SA_SIGACTION
-- Performing Test HAVE_SA_SIGACTION - Success
-- Looking for dlopen
-- Looking for dlopen - not found
-- Looking for dlopen in dl
-- Looking for dlopen in dl - found
-- Performing Test OSS_FOUND
-- Performing Test OSS_FOUND - Success
-- Looking for alsa/asoundlib.h
-- Looking for alsa/asoundlib.h - not found
-- Checking for module 'jack'
--   No package 'jack' found
-- Checking for module 'libpulse-simple'
--   No package 'libpulse-simple' found
-- Checking for module 'esound'
--   No package 'esound' found
-- Looking for audio/audiolib.h
-- Looking for audio/audiolib.h - not found
-- Looking for sndio.h
-- Looking for sndio.h - not found
-- Looking for samplerate.h
-- Looking for samplerate.h - not found
-- Checking for modules 'bcm_host;brcmegl'
--   No package 'bcm_host' found
--   No package 'brcmegl' found
-- Performing Test HAVE_VIDEO_RPI
-- Performing Test HAVE_VIDEO_RPI - Failed
-- dynamic libX11 -> libX11.so.6
-- Looking for X11/Xcursor/Xcursor.h
-- Looking for X11/Xcursor/Xcursor.h - not found
-- Looking for X11/extensions/Xinerama.h
-- Looking for X11/extensions/Xinerama.h - not found
-- Looking for X11/extensions/XInput2.h
-- Looking for X11/extensions/XInput2.h - not found
-- Looking for X11/extensions/Xrandr.h
-- Looking for X11/extensions/Xrandr.h - not found
-- Looking for X11/extensions/Xrender.h
-- Looking for X11/extensions/Xrender.h - not found
-- Looking for X11/extensions/scrnsaver.h
-- Looking for X11/extensions/scrnsaver.h - not found
-- Looking for X11/extensions/shape.h
-- Looking for X11/extensions/shape.h - not found
-- Looking for include files X11/Xlib.h, X11/extensions/xf86vmode.h
-- Looking for include files X11/Xlib.h, X11/extensions/xf86vmode.h - not found
-- Looking for 3 include files X11/Xlib.h, ..., X11/extensions/Xext.h
-- Looking for 3 include files X11/Xlib.h, ..., X11/extensions/Xext.h - not found
-- Configuring incomplete, errors occurred!

config-x64-linux-dbg-err.log:
CMake Deprecation Warning at CMakeLists.txt:5 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

CMake Error at cmake/macros.cmake:28 (message):
  *** ERROR: Missing Xext.h, maybe you need to install the libxext-dev
  package?
Call Stack (most recent call first):
  cmake/sdlchecks.cmake:413 (message_error)
  CMakeLists.txt:1139 (CheckX11)

vcpkg/buildtrees/sdl2/x64-linux-dbg/CmakeFiles/CMakeOutput.log:
CMakeOutput.log
vcpkg/buildtrees/sdl2/x64-linux-dbg/CMakeFiles/CMakeError.log:
CMakeError.log
Additional context
vcpkg is up to date

  *** ERROR: Missing Xext.h, maybe you need to install the libxext-dev
  package?

Can you please install libxext-dev using command sudo apt-get install libxext-dev and try again?
Thanks.

  *** ERROR: Missing Xext.h, maybe you need to install the libxext-dev
  package?

Can you please install libxext-dev using command sudo apt-get install libxext-dev and try again?
Thanks.

Computing installation plan...
The following packages will be built and installed:
    sdl2[core]:x64-linux -> 2.0.12#8
Detecting compiler hash for triplet x64-linux...
Could not locate cached archive: /root/.cache/vcpkg/archives/71/712fc710a377b02d83e8fcae0b3e43996d692c33.zip
Starting package 1/1: sdl2:x64-linux
Building package sdl2[core]:x64-linux...
-- Using cached /home/myname/vcpkg/downloads/SDL2-2.0.12.tar.gz
-- Cleaning sources at /home/myname/vcpkg/buildtrees/sdl2/src/SDL2-2-54c5df58ab.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source /home/myname/vcpkg/downloads/SDL2-2.0.12.tar.gz
-- Applying patch export-symbols-only-in-shared-build.patch
-- Applying patch enable-winrt-cmake.patch
-- Applying patch disable-hidapi-for-uwp.patch
-- Applying patch fix-space-in-path.patch
-- Applying patch disable-wcslcpy-and-wcslcat-for-windows.patch
-- Applying patch fix-EventToken-header-reference.patch
-- Applying patch 0006-sdl2-Enable-creation-of-pkg-cfg-file-on-windows.patch
-- Applying patch 0007-sdl2-skip-ibus-on-linux.patch
-- Applying patch 0008-fix-macos-metal-test.patch
-- Applying patch no-propagate-shared-link-options.patch
-- Using source at /home/myname/vcpkg/buildtrees/sdl2/src/SDL2-2-54c5df58ab.clean
-- Configuring x64-linux-dbg
-- Configuring x64-linux-rel
-- Building x64-linux-dbg
-- Building x64-linux-rel
-- Fixing pkgconfig file: /home/myname/vcpkg/packages/sdl2_x64-linux/lib/pkgconfig/sdl2.pc
-- Fixing pkgconfig file: /home/myname/vcpkg/packages/sdl2_x64-linux/debug/lib/pkgconfig/sdl2.pc
-- Performing post-build validation
-- Performing post-build validation done
Stored binary cache: /root/.cache/vcpkg/archives/71/712fc710a377b02d83e8fcae0b3e43996d692c33.zip
Building package sdl2[core]:x64-linux... done
Installing package sdl2[core]:x64-linux...
Installing package sdl2[core]:x64-linux... done
Elapsed time for package sdl2:x64-linux: 36.66 s

Total elapsed time: 37.32 s

The package sdl2:x64-linux provides CMake targets:

    find_package(SDL2 CONFIG REQUIRED)
    target_link_libraries(main PRIVATE SDL2::SDL2main SDL2::SDL2-static)
``` no errors this time, but VSCode still says, that it can't find `<SDL2/SDL.h>`, althoug I did `./vcpkg integrate install`(no errors either)...

Computing installation plan...
The following packages will be built and installed:
    sdl2[core]:x64-linux -> 2.0.12#8
Detecting compiler hash for triplet x64-linux...
Could not locate cached archive: /root/.cache/vcpkg/archives/71/712fc710a377b02d83e8fcae0b3e43996d692c33.zip
Starting package 1/1: sdl2:x64-linux
Building package sdl2[core]:x64-linux...
-- Using cached /home/myname/vcpkg/downloads/SDL2-2.0.12.tar.gz
-- Cleaning sources at /home/myname/vcpkg/buildtrees/sdl2/src/SDL2-2-54c5df58ab.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source /home/myname/vcpkg/downloads/SDL2-2.0.12.tar.gz
-- Applying patch export-symbols-only-in-shared-build.patch
-- Applying patch enable-winrt-cmake.patch
-- Applying patch disable-hidapi-for-uwp.patch
-- Applying patch fix-space-in-path.patch
-- Applying patch disable-wcslcpy-and-wcslcat-for-windows.patch
-- Applying patch fix-EventToken-header-reference.patch
-- Applying patch 0006-sdl2-Enable-creation-of-pkg-cfg-file-on-windows.patch
-- Applying patch 0007-sdl2-skip-ibus-on-linux.patch
-- Applying patch 0008-fix-macos-metal-test.patch
-- Applying patch no-propagate-shared-link-options.patch
-- Using source at /home/myname/vcpkg/buildtrees/sdl2/src/SDL2-2-54c5df58ab.clean
-- Configuring x64-linux-dbg
-- Configuring x64-linux-rel
-- Building x64-linux-dbg
-- Building x64-linux-rel
-- Fixing pkgconfig file: /home/myname/vcpkg/packages/sdl2_x64-linux/lib/pkgconfig/sdl2.pc
-- Fixing pkgconfig file: /home/myname/vcpkg/packages/sdl2_x64-linux/debug/lib/pkgconfig/sdl2.pc
-- Performing post-build validation
-- Performing post-build validation done
Stored binary cache: /root/.cache/vcpkg/archives/71/712fc710a377b02d83e8fcae0b3e43996d692c33.zip
Building package sdl2[core]:x64-linux... done
Installing package sdl2[core]:x64-linux...
Installing package sdl2[core]:x64-linux... done
Elapsed time for package sdl2:x64-linux: 36.66 s

Total elapsed time: 37.32 s

The package sdl2:x64-linux provides CMake targets:

    find_package(SDL2 CONFIG REQUIRED)
    target_link_libraries(main PRIVATE SDL2::SDL2main SDL2::SDL2-static)
``` no errors this time, but VSCode still says, that it can't find `<SDL2/SDL.h>`, althoug I did `./vcpkg integrate install`(no errors either)...

If I try to compile with g++ main.cpp -lSDL2 it can't find it either, do I need to add the vcpkg folder to PATH?

If I try to compile with g++ main.cpp -lSDL2 it can't find it either, do I need to add the vcpkg folder to PATH?

@Kakiking We don't need to do that.
I think we should add some warning message.

@Kakiking We don't need to do that.
I think we should add some warning message.


Style fixes 2

More tweaks for mobile.
Changes proposed in this pull request:

Fixed the squished posters in libraries
Centered the library entry rating on mobile
Added more space around modals so they can be closed properly on mobile
Adjust text in import buttons (looks better on mobile)
Adjust spacing on browse page to prevent cutoff

/cc @hummingbird-me/staff

This looks good with exception to the library posters. What would be better would be to add a width and height of 40px to .drop-thumb and remove it from the poster (like you already have in the pr) this prevents the posters from being gigantic while keeping them from squishing.

Ok, added in 2206c8b

Awesome! Thanks for the help here!


Add support for additional escape characters

This patch adds support for the escapes \xHH and \e which will be part of the next TOML release.

I'm not sure what toml-rs' concrete policy on additions before the next official toml release is, but I found https://github.com/toml-rs/toml/issues/397 and thought contributions might be welcome.
These escapes would be extremely useful to me already, since they make specifying escape sequences like \e[?1049h significantly easier compared to using unicode \u001b[?1029h. So my goal is to make use of these upcoming TOML features even before official standardization.

As it isn't released yet, things can change.  I would like to wait until there is a release


operators.share is not a function

@tscislo commented on Mon Nov 19 2018
After migration to Angular 6.2 from 5.0 my project complies however it throws an error in launch time.
Here is my package.json
{
"nativescript": {
    "id": "eu.scislo.ScanAndFind",
    "tns-ios": {
      "version": "3.2.0"
    },
    "tns-android": {
      "version": "4.1.3"
    }
  },
  "dependencies": {
    "@angular/animations": "~6.1.0",
    "@angular/common": "~6.1.0",
    "@angular/compiler": "~6.1.0",
    "@angular/core": "~6.1.0",
    "@angular/forms": "~6.1.0",
    "@angular/http": "~6.1.0",
    "@angular/platform-browser": "~6.1.0",
    "@angular/platform-browser-dynamic": "~6.1.0",
    "@angular/router": "~6.0.0",
    "@types/lodash": "^4.14.118",
    "animate.css": "^3.6.1",
    "lodash": "~4.17.11",
    "nativescript-admob": "^1.3.2",
    "nativescript-angular": "~6.2.0",
    "nativescript-barcodescanner": "^2.6.1",
    "nativescript-dev-sass": "^1.3.0",
    "nativescript-google-analytics": "^0.4.4",
    "nativescript-i18n": "^0.2.4",
    "nativescript-material-icons": "^1.0.3",
    "nativescript-ng2-fonticon": "^1.3.4",
    "nativescript-secure-storage": "^2.2.0",
    "nativescript-theme-core": "~1.0.2",
    "reflect-metadata": "~0.1.8",
    "rxjs": "~6.3.3",
    "tns-core-modules": "^4.2.1",
    "tns-platform-declarations": "^4.2.1",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@angular/compiler-cli": "~5.0.0",
    "@ngtools/webpack": "~1.8.2",
    "babel-traverse": "6.25.0",
    "babel-types": "6.25.0",
    "babylon": "6.17.3",
    "copy-webpack-plugin": "~4.0.1",
    "css-loader": "~0.28.7",
    "extract-text-webpack-plugin": "~3.0.0",
    "lazy": "1.0.11",
    "nativescript-css-loader": "~0.26.0",
    "nativescript-dev-sass": "https://registry.npmjs.org/nativescript-dev-sass/-/nativescript-dev-sass-1.2.0.tgz",
    "nativescript-dev-typescript": "~0.7.0",
    "nativescript-dev-webpack": "^0.9.0",
    "nativescript-worker-loader": "~0.8.1",
    "raw-loader": "~0.5.1",
    "resolve-url-loader": "~2.1.0",
    "sass-loader": "~6.0.6",
    "typescript": "~2.7.2",
    "webpack": "~3.8.1",
    "webpack-bundle-analyzer": "^2.8.2",
    "webpack-sources": "~1.0.1"
  }
}

@tsonevn commented on Mon Nov 19 2018
Hi @tscislo,
I noticed that you are using an old tns-core-modules. Can you try updating the NativeScript CLI, tns-android, tns-ios and the modules as well on your side? Check out the update instruction here.
If the problem persists, please build the project with tns run <platform_name> --log trace and send us the full log from the console. Also, it will help if you can send us the project.

Unfortunately after upgrading to
"tns-core-modules": "^5.0.3",
"tns-platform-declarations": "^5.0.3"
error does not go away.
@tsonevn how can I provide you with the log and more details?

Finally after upgrading platform to 5.0.0 it started to work!


How to fire an event when app is in background in flutter?

I am using firebase for push notification in my application. The app is working perfectly when in foreground but when app goes to background the event did not fire like he do when app is in foreground.
Can you suggest me some solution that how can i fire event even my app is in background?

Hi @umair-ilyas
This platform is not meant for assistance on personal code. Please see https://flutter.dev/community for resources and asking questions like this, you may also get some help if you post it on Stack Overflow. Closing, as this isn't an issue with Flutter itself,
if you disagree please write in the comments and I will reopen it
Thank you


Added comments for clarity on each function and vital lines of code."

Added comments for clarity on each function and vital lines of code."

Additional commits:
"Removed unused Marvel images. Added sources to README. Added comments to HTML file."


econdata_tidy_release()

When using read_release( tidy = TRUE) in version 2.0.0, I get the error

Empty data.table (0 rows and 1 cols): date

Can you please double-check econdata_tidy_release()?

@byrongibby are you still working on this?

Please try version 2.0.4


jsii compiler should error when @internal types attempt to expose public methods

:rocket: Feature Request
An @internal type that is inherited into a public type must not implement public APIs that are not already declared as a public API (via an interface or such).
This results in a situation where the public API(s) are not actually available, which is unintended.
Example:
RestApi inherits an @internal type RestApiBase which declares a new (previously undeclared) public API domainName.
The error message from a consuming API is so -
lib/api-gateway-domain-name.ts:30:14 - error TS2339: Property 'domainName' does not exist on type 'RestApi'.

30     if (!api.domainName) {
                ~~~~~~~~~~

I guess alternatively, public APIs introduced on erased types must be "moved up" to the visible types.

Feels like a poorer experience / unintended side effect
If it was intended to be 'moved up', might as well do it explicitly at source rather than being implicit.

@nija-at I am thinking of this as a way to sugar up adding public methods to all children, but after reading your comment I'm actually thinking those methods probably should then be introduced by a visible type below the @internal one... In which case yeah, @internal types may not introduce new non-@internal members (but they're still free to implement or override existing visible members as necessary).


re_datastore: index bucket compaction

(mentioned by @jondo2010 during retro)
Compact sparse index buckets (because they were filled on a per-component basis rather than multiple components at a time).
Basically automatically going from this
┌──────┬───────────┬───────┬───────────┐
│ time ┆ instances ┆ rects ┆ positions │
│ ---  ┆ ---       ┆ ---   ┆ ---       │
│ str  ┆ u64       ┆ u64   ┆ u64       │
╞══════╪═══════════╪═══════╪═══════════╡
│ #42  ┆ null      ┆ 1     ┆ null      │
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ #42  ┆ 3         ┆ null  ┆ null      │
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ #42  ┆ null      ┆ null  ┆ 2         │
└──────┴───────────┴───────┴───────────┘

to this
┌──────┬───────────┬───────┬───────────┐
│ time ┆ instances ┆ rects ┆ positions │
│ ---  ┆ ---       ┆ ---   ┆ ---       │
│ str  ┆ u64       ┆ u64   ┆ u64       │
╞══════╪═══════════╪═══════╪═══════════╡
│ #42  ┆ 3         ┆ 1     ┆ 2         │
└──────┴───────────┴───────┴───────────┘

TODO:

[ ] decide when (on write? on read? both? neither?)
[ ] implement
[ ] test

Doesn't make much sense in the new chunk based model.
It does make sense to do in the range cache, but it is in fact already done there.


Add a test to check if tblproperties works on snapshots.

Description
Adds a test to check if tblproperties works on snapshots.

Thanks! merging.


Higher payload size not working as described in doc

I have deployed a model using custom MLServer runtime. The gRPC inferencing is working as expected with small size payload.
I modified the configurations to make it works with large payload size:

In the runtime configuration:

- name: MLSERVER_GRPC_MAX_MESSAGE_LENGTH
value: "300000000"

as well as:
2, In the global configmap:
grpcMaxMessageSizeBytes: 300000000
But still is giving error and showing the default exceed limits:
io.grpc.StatusRuntimeException: RESOURCE_EXHAUSTED: gRPC message exceeds maximum size 16777216: 65844251
        at io.grpc.Status.asRuntimeException(Status.java:530)
        at io.grpc.internal.MessageDeframer.processHeader(MessageDeframer.java:392)
        at io.grpc.internal.MessageDeframer.deliver(MessageDeframer.java:272)
        at io.grpc.internal.MessageDeframer.request(MessageDeframer.java:162)
        at io.grpc.internal.AbstractStream$TransportState$1RequestRunnable.run(AbstractStream.java:236)
        at io.grpc.netty.NettyServerStream$TransportState$1.run(NettyServerStream.java:198)
        at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:403)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:833)

Client side error:
Traceback (most recent call last):
  File "/temp/docker/grpc_call.py", line 66, in <module>
    response = grpc_stub.ModelInfer(inference_request_g)
  File "/usr/local/lib/python3.9/site-packages/grpc/_channel.py", line 946, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "/usr/local/lib/python3.9/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking
    raise _InactiveRpcError(state)
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
        status = StatusCode.CANCELLED
        details = "Received RST_STREAM with error code 8"
        debug_error_string = "UNKNOWN:Error received from peer ipv4:<IP_ADDRESS>:8033 {grpc_message:"Received RST_STREAM with error code 8", grpc_status:1, created_time:"2022-11-03T18:47:46.142301977+00:00"}"

How can I overcome this situation?

@njhill  Based on the stacktrace, the error is  a Java one, which suggests it's coming from the KServe stack. Any help, please?

Hello @njhill here is the container logs, Seems like it is still 16Mb :(:
{"instant":{"epochSecond":1667835721,"nanoOfSecond":163712277},"thread":"ll-svc-events-3","level":"INFO","loggerName":"com.ibm.watson.modelmesh.ModelMesh","message":"Maximum grpc request message size set to 16777216 bytes","endOfBatch":false,"loggerFqcn":"org.apache.logging.log4j.spi.AbstractLogger","contextMap":{},"threadId":20,"threadPriority":5}
Also the env also saying 16 Mb:
 mm:
    Container ID:   containerd://d41c5e33e90e16c95ecf25b74746d6754e68270c1f1cb59119496e8d9df6c807
    Image:          kserve/modelmesh:latest
    Image ID:       docker.io/kserve/modelmesh@sha256:7f68c5f7b494ae752ab03b2bae37966bf144435ed711ee9d184ae9fe23758a90
    Ports:          8033/TCP, 2112/TCP
    Host Ports:     0/TCP, 0/TCP
    State:          Running
      Started:      Mon, 07 Nov 2022 10:41:56 -0500
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     3
      memory:  448Mi
    Requests:
      cpu:      300m
      memory:   448Mi
    Liveness:   http-get http://:8089/live delay=90s timeout=5s period=30s #success=1 #failure=2
    Readiness:  http-get http://:8089/ready delay=5s timeout=1s period=5s #success=1 #failure=3
    Environment:
      MM_SERVICE_NAME:             modelmesh-serving
      MM_SVC_GRPC_PORT:            8033
      WKUBE_POD_NAME:              modelmesh-serving-custom-mlserver-grpc-1.x.1-588c6b9bf6-rjx6n (v1:metadata.name)
      WKUBE_POD_IPADDR:             (v1:status.podIP)
      MM_LOCATION:                  (v1:status.hostIP)
      KV_STORE:                    etcd:/opt/kserve/mmesh/etcd/etcd_connection
      MM_METRICS:                  prometheus:port=2112;scheme=https
      SHUTDOWN_TIMEOUT_MS:         90000
      INTERNAL_SERVING_GRPC_PORT:  8001
      INTERNAL_GRPC_PORT:          8085
      MM_SVC_GRPC_MAX_MSG_SIZE:    16777216
      MM_KVSTORE_PREFIX:           mm
      MM_DEFAULT_VMODEL_OWNER:     ksp
      MM_LABELS:                   mt:custom-grpc-01,mt:custom-grpc-01:1,rt:custom-mlserver-grpc-1.x.1
      MM_TYPE_CONSTRAINTS_PATH:    /etc/watson/mmesh/config/type_constraints
      MM_DATAPLANE_CONFIG_PATH:    /etc/watson/mmesh/config/dataplane_api_config

How can I overwrite the value? Although, I already changed the config values.

@MLHafizur could you share your ConfigMap contents i.e. kubectl get configmap model-serving-config -oyaml

@njhill Here it is:
apiVersion: v1
data:
  config-defaults.yaml: |
    # Copyright 2021 IBM Corporation
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    # These are the system defaults which users can override with a user config
    podsPerRuntime: 2
    grpcMaxMessageSizeBytes: 300000000
    headlessService: true
    modelMeshImage:
      name: kserve/modelmesh
      tag: latest
    modelMeshResources:
      requests:
        cpu: "300m"
        memory: "448Mi"
      limits:
        cpu: "3"
        memory: "448Mi"
    scaleToZero:
      enabled: true
    restProxy:
      enabled: true
      port: 8008
      image:
        name: kserve/rest-proxy
        tag: latest
      resources:
        requests:
          cpu: "50m"
          memory: "96Mi"
        limits:
          cpu: "1"
          memory: "512Mi"
    storageHelperImage:
      name: kserve/modelmesh-runtime-adapter
      tag: latest
      command: ["/opt/app/puller"]
    storageHelperResources:
      requests:
        cpu: "50m"
        memory: "96Mi"
      limits:
        cpu: "2"
        memory: "512Mi"
    serviceAccountName: ""
    metrics:
      enabled: true
    builtInServerTypes:
      - triton
      - mlserver
      - ovms
kind: ConfigMap
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","data":{"config-defaults.yaml":"# Copyright 2021 IBM Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# These are the system defaults which users can override with a user config\npodsPerRuntime: 2\nheadlessService: true\nmodelMeshImage:\n  name: kserve/modelmesh\n  tag: latest\nmodelMeshResources:\n  requests:\n    cpu: \"300m\"\n    memory: \"448Mi\"\n  limits:\n    cpu: \"3\"\n    memory: \"448Mi\"\nrestProxy:\n  enabled: true\n  port: 8008\n  image:\n    name: kserve/rest-proxy\n    tag: latest\n  resources:\n    requests:\n      cpu: \"50m\"\n      memory: \"96Mi\"\n    limits:\n      cpu: \"1\"\n      memory: \"512Mi\"\nstorageHelperImage:\n  name: kserve/modelmesh-runtime-adapter\n  tag: latest\n  command: [\"/opt/app/puller\"]\nstorageHelperResources:\n  requests:\n    cpu: \"50m\"\n    memory: \"96Mi\"\n  limits:\n    cpu: \"2\"\n    memory: \"512Mi\"\nserviceAccountName: \"\"\nmetrics:\n  enabled: true\nbuiltInServerTypes:\n  - triton\n  - mlserver\n  - ovms\n"},"kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/instance":"modelmesh-controller","app.kubernetes.io/managed-by":"modelmesh-controller","app.kubernetes.io/name":"modelmesh-controller"},"name":"model-serving-config-defaults","namespace":"modelmesh-serving-dev"}}
  creationTimestamp: "2022-09-16T07:11:23Z"
  labels:
    app.kubernetes.io/instance: modelmesh-controller
    app.kubernetes.io/managed-by: modelmesh-controller
    app.kubernetes.io/name: modelmesh-controller
  name: model-serving-config-defaults
  namespace: modelmesh-serving-dev
  resourceVersion: "153142341"
  uid: 773fb0ee-5c6c-4e2f-b574-459aa9bdbb95

@MLHafizur that is model-serving-config-defaults, it's not intended to be changed. You should create a new configmap called model-serving-config with a key config.yaml containing yaml with any parameters that you want to set/override, as described in the docs here. It should then be picked up automatically.

Oh I see, Thanks a lot. Only grpcMaxMessageSizeBytes should be enough to overwrite the values everywhere needed?

@njhill  Thanks for your support. It is working as expected now.


Issue with resolver feature that requires nightly.

I'm trying to move from the older cucumber_rust crate to this crate but running into an issue with a nightly feature being required in the sealed  crate.
To reproduce, I simply add the following (ignoring ellipses) to my Cargo.toml, and no further code.
[dependencies]
...
"cucumber" = "0.10.2"

Rust and Cargo versions on linux:
rustc 1.50.0 (cb75ad5db 2021-02-10)
cargo 1.50.0 (f04e7fab7 2021-02-04)

Get the following error
error: failed to download `sealed v0.3.0`

Caused by:
  unable to get packages from source

Caused by:
  failed to parse manifest at `/home/joneil/.cargo/registry/src/github.com-1ecc6299db9ec823/sealed-0.3.0/Cargo.toml`

Caused by:
  feature `resolver` is required

  this Cargo does not support nightly features, but if you
  switch to nightly channel you can add
  `cargo-features = ["resolver"]` to enable this feature

I don't see anything in the  README.md in this repo that says nightly is required, so is this just an oversight? Can it be fixed by manipulating features?
Can't really look at this again for a while.

@johnoneil

I don't see anything in the README.md in this repo that says nightly is require

Nightly isn't actually required, but README.md has badge about minimum supported Rust version, which is 1.56.


Remove Jasmine from sbtPluginTest.

Review by @sjrd

That's all.

LGTM

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/3045/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/3950/
Test PASSed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/3046/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/3951/
Test PASSed.


[5.3] Use Carbon modifiers and comparisons functions.

Add consistency to Carbon related add-, sub- and comparisons operations.
It also adds more understanding concerning what the comparison or operation actually does.

Hmm, I don't find this more readable to be honest and it makes the code longer in every case.


feat: Retain query parameters in nav menu

The home link is broken in the GitHub Pages dev environment deployment:

The home link is broken in the GitHub Pages dev environment deployment:

This was fixed with 6d0c10264c4be96c995b00747178b5d0b7038523:
https://github.com/jjliggett/CurrentTimeApp/compare/6902149532e9a0745895652ffa522eb98eb5704d..6d0c10264c4be96c995b00747178b5d0b7038523


Failed scan-vulnerabilityreport Job : read-only filesystem

Hello everybody, I just experienced an issue with trivy-operator :
What steps did you take and what happened:
After installing trivy-operator (in client/server mode), all the images in my cluster are scanned.
But 2 of these images constantly create an error in trivy-operator.
The error message evokes a temporary file writing problem but this is not clear to me, here is the error in trivy-operator's logs :
{
   "level":"error",
   "ts":1666776971.8307042,
   "logger":"reconciler.vulnerabilityreport",
   "msg":"Scan job container",
   "job":"trivy-system/scan-vulnerabilityreport-798488c974",
   "container":"my-container",
   "status.reason":"Error",
   "status.message":"2022-10-26T09:36:10.861Z\t\u001b[31mFATAL\u001b[0m\timage scan error: scan error: scan failed: failed analysis: analyze error: failed to analyze layer: sha256:0848bc0012cb9f2005677b3daf3a5e5fe3e8ad944eaad35d680a9a2fc36135e3 : walk error: failed to process the file: failed to analyze file: failed to analyze opt/job/node_modules/puppeteer/.local-chromium/linux-624492/chrome-linux/chrome: unable to open opt/job/node_modules/puppeteer/.local-chromium/linux-624492/chrome-linux/chrome: failed to open: failed to create the temp file: open /tmp/fanal-2646250566: read-only file system\n",
   "stacktrace":"github.com/aquasecurity/trivy-operator/pkg/vulnerabilityreport.(*WorkloadController).processFailedScanJob\n\t/home/runner/work/trivy-operator/trivy-operator/pkg/vulnerabilityreport/controller.go:539\ngithub.com/aquasecurity/trivy-operator/pkg/vulnerabilityreport.(*WorkloadController).reconcileJobs.func1\n\t/home/runner/work/trivy-operator/trivy-operator/pkg/vulnerabilityreport/controller.go:370\nsigs.k8s.io/controller-runtime/pkg/reconcile.Func.Reconcile\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.13.0/pkg/reconcile/reconcile.go:102\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.13.0/pkg/internal/controller/controller.go:121\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.13.0/pkg/internal/controller/controller.go:320\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.13.0/pkg/internal/controller/controller.go:273\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.13.0/pkg/internal/controller/controller.go:234"
}

PS: the two images that have this issues are custom ones pulled from private registry.
What did you expect to happen:
I expect the Job to succeed like all the others.
Anything else you would like to add:

What filesystem is in read-only and why trivy want to create temp file on it ?
Why the error message mention "failed to open" and also "failed to create the temp file" ?

Environment:

Trivy-Operator : v0.2.0
Kubernetes : v1.20.15
Nodes OS : Ubuntu 18.04.6

Thanks in advance for your help :love_you_gesture:

@LucasVanHaaren thanks for reporting , we will check it out.

I just tested to run trivy image (and fs) scans from my host system instead of k8s cluster and trivy successfully scanned the same image.
NB: I tested both standalone trivy v0.33.0 on my host system and ser trivy server v0.30.4.

@LucasVanHaaren I see where the problem is.
When trivy scan large files it saving it  into /tmp folder (to avoid loading it to memory) for analysis purposes.
Trivy-operator in client /server mode do not mount /tmp folder  in scanjob container.
I'll create a PR with a fix for next release

Nice ! Thank you so much for your efficiency @chen-keinan :smiley:


Docs????

The Docs site from PhoneGap (http://docs.phonegap.com) gives me only a simple step-by-step guide for Noobs, but as an developer, i search for the JavaScript-API as an reasonable documentation.
I usually expect more than just some information on a documentation page. That makes Phonegap pretty unappealing.
How i can find the real documentation on the site from PhoneGap?

If you are looking for the interfaces between PhoneGap/Cordova and the native device, you might look here: https://cordova.apache.org/docs/en/latest/guide/hybrid/plugins/
However, many of the things you might consider doing may have already been done and you would just need to integrate the plugin into your app. I would review the Cordova plugin registry first.

Thanks, but these are not listen on the PhoneGap site. That's annoying.


IE11 - Prev/Next arrow Icons not displaying

This is a (multiple allowed):

[x] bug

[ ] enhancement

[ ] feature-discussion (RFC)

Swiper Version: 5.4.0 .

Platform/Target and Browser Versions:  IE11 (see snapshot below) , Windows 10

Live Link or JSFiddle/Codepen or website with isssue: https://jsfiddle.net/syedongit/sk97xr2L/1/

What you did
I have tried checking if my IE11 settings are set to Enable Font downloads and they 're enabled
I've tried adding woff font file as a source to the font-face "swiper-icons"
I've tried adding the display:block and inline-block to the swiper-button-prev and swiper-button-next as per stackoverflow below:
https://stackoverflow.com/questions/27875232/ie-crossing-out-pseudo-element-css
as you can see from snapshot below : display:inline-block and display:block on pseudo ::after elements get crossed out even though they're marked as "!important"
.horizontal_wrap .swiper-button-next::after, .horizontal_wrap .swiper-button-prev::after {     display: block !important; }
#swipe-next::after, #swipe-prev::after{     display:inline-block !important; }

There is something in IE11, which doesn't honor the swiper-icons fonts and are striked out. please see below snapshots for completed picture of Styles tab in IE11 Browser hierarchy:

Expected Behavior
I was hoping that the prev/next icon shows up on the slider  for IE 11

Actual Behavior
The icons do not display on the front end for only IE 11, ( works on Edge, chrome and firefox )

P.S. Remember, an issue is not the place to ask questions. You can use Stack Overflow
for that.
Before you open an issue, please check if a similar issue already exists or has been closed before.

Sorry, but IE is not supported by Swiper v5

@nolimits4web  Hey there, we created an application without knowing IE 11 was not supported as it's not mentioned anywhere other than the issue(s) here. it would be helpful if you include a type of "browser support" section within your documentation. Thanks!

@syedongit ,
Try this. I've been debugging this for a bit - everything  seems to work except for the arrows now. I've fixed it by adding some CSS:
@media all and (-ms-high-contrast:none) {
    .swiper-button-prev,
    .swiper-button-next {
      position: absolute;
      top: 50%;
      width: 27px;
      height: 44px;
      margin-top: -22px;
      z-index: 10;
      cursor: pointer;
      background-size: 27px 44px;
      background-position: center;
      background-repeat: no-repeat;
    }
    .swiper-button-prev.swiper-button-disabled,
    .swiper-button-next.swiper-button-disabled {
      opacity: 0.35;
      cursor: auto;
      pointer-events: none;
    }
    .swiper-button-prev,
    .swiper-container-rtl .swiper-button-next {
      background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");
      left: 10px;
      right: auto;
    }
    .swiper-button-next,
    .swiper-container-rtl .swiper-button-prev {
      background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");
      right: 10px;
      left: auto;
    }
    .swiper-button-prev.swiper-button-white,
    .swiper-container-rtl .swiper-button-next.swiper-button-white {
      background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
    }
    .swiper-button-next.swiper-button-white,
    .swiper-container-rtl .swiper-button-prev.swiper-button-white {
      background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
    }
    .swiper-button-prev.swiper-button-black,
    .swiper-container-rtl .swiper-button-next.swiper-button-black {
      background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E");
    }
    .swiper-button-next.swiper-button-black,
    .swiper-container-rtl .swiper-button-prev.swiper-button-black {
      background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E");
    }
    .swiper-button-lock {
      display: none;
    }
}