Contribute to Open Source. Search issue labels to find the right project for you!

Code coverage w/ istanbul & wct

growingabit/pwa-frontend

Actually there isn’t a simple and clean way to do code coverage on web components of Polymer 2.

So we leave this issue with links of blocking issues.

https://github.com/Polymer/web-component-tester/issues/61

https://github.com/thedeeno/web-component-tester-istanbul/issues/38

https://github.com/t2ym/web-component-tester/issues/1

Updated 19/08/2017 16:56

Framework

wolf1996/MSM

Вынести фреймворк в отдельный модуль. Вынести midleware в него. Придумать хоть чтонибудь с базами.

Updated 19/08/2017 21:48

Some notes for myself comparing vnstat (1.12) with Data Usage Monitor app on Android

hub2git/vnstat_notes

Hi. It’s 3:25 AM on Saturday morning, and I just wanted to test the accuracy of vnstat. I get my Android (on which I’ve installed an app called Data Usage Monitor. I turn on the wifi (wifi’s been off overnight, for more than 8 hours) on my Android and make it sync a little bit. After 5 minutes I turn Android’s wifi off.

The Data Usage Monitor app says I used 5.8MB (Send: 1.1 MB, Receive: 4.7 MB). screenshot_2017-08-19-03-43-01note_color_optimized

Vnstat, however, says I used 6.39 MiB, which Google tells me is 6.7 megabytes. screenshot_2017-08-19_03-34-47

Vnstat has a bit of a bigger number, which makes sense, since it also measures “local talk”.

My Lede router is on vnstat version 1.12. If the problem is related to this older version, please let me know

Updated 19/08/2017 10:56

Key's not getting logged when using Karabiner on mac

SkrewEverything/Swift-Keylogger

Hi, thank you so much for making this! I learned a lot by going through your code!

I was able to get it to compile after upgrading to Swift 4 and Xcode 9.0 beta.

I use Karabiner-Element to remap the keys on my keyboard.

When Karabiner is turned on, the Keylogger is writing logs to Data/Apps and Data/Devices but nothing in Data/Keys.

Here is the the output of Data/Devices

cat Data/Devices/19-8-2017/Time\ Stamps
Connected - Saturday, August 19, 2017 at 7:46:18 PM Japan Standard Time <IOHIDDevice 0x7ff675601220 [0x7fffe4f0bda0] 'ClassName=AppleHSSPIHIDDriver'  Transport=SPI VendorID=1452 ProductID=627 Product=Apple Internal Keyboard / Trackpad PrimaryUsagePage=1 PrimaryUsage=6 ReportInterval=8000>
Connected - Saturday, August 19, 2017 at 7:46:18 PM Japan Standard Time <IOHIDDevice 0x7ff6756009d0 [0x7fffe4f0bda0] 'ClassName=org_pqrs_driver_Karabiner_VirtualHIDDevice_VirtualHIDKeyboard_v040600'  VendorID=0 ProductID=0 Manufacturer=pqrs.org Product=Karabiner VirtualHIDKeyboard PrimaryUsagePage=1 PrimaryUsage=6 ReportInterval=8000>

I will try to debug this on my own time as soon as possible. If you have any idea on top of your head about where the problem may lie, any advice would be greatly appreciated!

Thanks again for this amazing program!

Updated 19/08/2017 18:02 3 Comments

ネット環境無しでの build

crest-cassia/CrowdWalk

現在、ネットに繋がっていない状態での build ができない。

gradle で、利用しているライブラリのバージョンチェックをするためなのか、オフライン状態で build すると、失敗する。

移動中にデバッグする際など不便なので、できれば、オフラインではチェックしないとか、あるいはオプションで、ライブラリのバージョンチェックをしないとかにできないか?

Updated 18/08/2017 13:31

A wild corgi appears! А у нас внезапный фриз на карты и код который хоть как-то связан со словом атмос.

TauCetiStation/TauCetiClassic

Это относится ко всем ПРам которые будут созданы ровно после этого.

  • Коротко о главном

    • ПРы в которых задеты карты - не принимаются и даже после снятия фриза не будут приняты, решить такого рода конфликт и при этом не испортить карту - будет крайне сложно.
    • ПРы в которых задет код конфликтующий с изменениями - решение будет вынесено индивидуально, т.к напрямую зависит от того, что изменено.
    • Не затевайте ПРы в которых вам надо задеть карту, даже если это вида - надо поправить 1 турф. Касательно кода - с ним проще, но если ваши фичи хоть как-то пересекаются с машинерией, атмосом, вы можете поймать тонну конфликтов.
  • О времени

    • Длительность фриза зависит как минимум от #1712 #1730 #1744 и пока они не будут смержены + когда будет закончена работа из-за которой вообще возникла потребность этого события.
  • О картах

    • Т.к. я в курсе того, что у нас там занимаются переделыванием карт, то в принципе текущие ваши планы с изменением карт (которые еще на гит не попали, но в процессе работы) можно пропустить конечно, но это все будет удлинять фриз. Я не буду даже браться за карты, пока их не перестанут трогать, т.к перемапливать весь трубопровод с нуля - задача не из приятных.
  • Под карты попадает попросту папка .../maps. Причина проста - решить конфликты когда половина карты будет задето, задача не из приятных. Собственно фриз по большей части именно из-за карт.

  • Под атмос - любой код в котором хоть какая-то есть связь с атмосом, его машинерией, газами и конечно же папкой .../code/modules/atmospherics.

  • Что принесет этот фриз и то из-за чего он затеян

    • Подробности пока не раскрою, но думаю, выше, подсказок полно.
    • Почему с картами так сложно? Потому что бъенд, и потому что мапмержер, и решение конфликтов может привести к потере данных на карте, если человек решающий их не имеет опыта, да и тут изменений будет очень не мало, особенно в z1.dmm.

Что-то еще хотел написать, да из головы вылетело как обычно…

<!– Описание ПРа: Пожалуйста, опишите в теле ПРа суть изменений, причину и чего вы хотите добиться.

Работа с чейнджлогом:

ВАЖНО! Чейнджлог должен быть в КОНЦЕ описания вашего ПРа. Всё что идёт после :cl: (эмодзи значка) будет парсится как чейнджлог. Изменения должны описываться в формате списка. Используйте шаблон ниже.

Просьба писать чейнджлог с большой буквы и хотя бы с минимальным количеством знаков препинания, типа точки в конце предложения.

Шаблон для чейнджлога: :cl: Здесь вы можете вставить свой/чужой ник (Необязательно. При пустом поле в чейнджлог пойдёт ник из гитхаба.) - bugfix: Фиксы описываются тут. - rscadd: Разные добавления и новшества (например фичи). - rscdel: Откаты фичь, удаление старого и т.д. - image: Изменения со спрайтами и изображениями. - sound: Звуки и всё что с ними связано. - spellcheck: Небольшие или не очень исправления в тексте. - tweak: Преимущественно небольшие изменение чего-то готового. - balance: Изменения связанные с балансом. - map: Изменения на карте. - performance: Производительность, скорость работы и т.д. - experiment: Экспериментальные изменения, шанс отката которых выше обычного.

Если изменений много, то вы можете ограничиться парой слов и добавить метку [link]. С ней, в конец строчки чейнджлога, будет автоматически добавлена ссылка на ваш ПР. Важно: [link] - это маркер для обработчика, которая даёт ему понять, что нужно вставить ссылку на ваш ПР. В саму метку НИЧЕГО помещать не надо, ссылка получается АВТОМАТИЧЕСКИ обработчиком в процессе генерации чейнджлога.

Пример: :cl: - bugfix: Какой-то фикс. (Ссылка добавлена не будет.) - performance[link]: Огромные изменения, слов не хватит описать. (Будет добавлена ссылка, текст в игре будет выглядеть так: “Огромные изменения, слов не хватит описать. - подробнее -”, где ‘- подробнее -’ будет ссылкой на ПР.)

Чейнджлог генерируется автоматически, сразу после мержа вашего ПРа. –>

Updated 18/08/2017 04:37

[suggestion] coalblock config

EnderiumSmith/CharcoalPit

please will you add a config setting to allow other blocks and oredict entries to be treated as coal blocks for the purpose of making coke? charcoal pit doesn’t recognise dyed coal blocks from moredyes mod (oredict as blockCoal, same as minecraft:coal_block), and quark’s charcoal block (oredict as charcoalBlock).

Updated 18/08/2017 18:59 1 Comments

Strange graphical glitches

singalen/wesnoth

Only in one occasion, the graphical interface totally messed up: scrolling the map made sprite traces appearing all over the screen, while the right status panel was completely unusable. Unfortunately, I could not reproduce this error, it only happened once, but to resolve it I had to uninstall and re-install the latest beta again. img_0546

Updated 19/08/2017 12:38 2 Comments

Store pthread_* return values in Event_POSIX usages that may throw exceptions

pocoproject/poco

In order to assist with debugging, it would be helpful in Event_POSIX if calls to pthread_* functions that are used in if conditions, that the return values were stored as a local variable. For example, in Event_POSIX, something like the following may be useful:

inline void EventImpl::setImpl() { int error = 0; if ((error = pthread_mutex_lock(&_mutex))) throw SystemException("cannot signal event (lock)"); _state = true; if ((error = pthread_cond_broadcast(&_cond))) { pthread_mutex_unlock(&_mutex); throw SystemException("cannot signal event"); } pthread_mutex_unlock(&_mutex); }

If in the debugger we can see the error value from pthread_mutex_lock or pthread_cond_broadcast, that may help debug exceptions.

Updated 17/08/2017 18:10 1 Comments

Modulize annotation resources

OpenWebslides/OpenWebslides

When JSONAPI-Resources updates to 0.10.0, it will support cross-module relationships in resources. As of now, namespaces are used only for versioning, therefore all resources (and controllers) must remain in the same module.

References: - cerebris/jsonapi-resources#927 - cerebris/jsonapi-resources#1028 - cerebris/jsonapi-resources#893

Updated 17/08/2017 11:33

当前登录环境异常。为了你的帐号安全,暂时不能登录web微信。你可以通过手机客户端或者windows微信登录。

blueset/ehForwarderBot
2017-08-17 07:00:02,784: itchat [ERROR]
    Your wechat account may be LIMITED to log in WEB wechat, error info:
<error><ret>1203</ret><message>当前登录环境异常。为了你的帐号安全,暂时不能登录web微信。你可以通过手机客户端或者windows微信登录。</message></error>
Updated 17/08/2017 22:27 2 Comments

dumb

tetra-fox/rbwhneg7ty-ml89o6k0-j.ip-ew54dsfaxcno-lmk0.jip-r6t5e4dfwsxaconlv-kmpi.-4wazlf-.bmnko-0p9th8d675vec

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

Updated 17/08/2017 17:06 3 Comments

Problem with T10 dependency injection

Windows-XAML/Template10

Hi, I’m using dependency injection in my app but the way that Template10 use to resolve ViewModels is not suitable, Why do I say that? Cause : I needed to set a ViewModel for the Shell (the one with HamburgurMenu Template) and I created one (just for the case if you ask why : cause I needed to Show The User Profile in the HamburgurMenu as all the other apps do) but I found out that the ResolveForPage is not getting called any more! so I read Template10 Source Code and I found out that after navigation it checks for whether the DataContext is null or cannot be Casted to INavigable then if it passes it calls the ResolveForPage Method and sets the datacontext. And here is the problem! the datacontext of the shell is coming down to every page so their DataContext is Never null!

isn’t it a better approach to set the ViewModel similar to the way that Prism does? after all they are the Experts of MVVM!

Workaround : We can set DataContext to null in the Page Constructor.

Updated 17/08/2017 06:43 5 Comments

Group names must be unique

JabRef/jabref

JabRef versions 3.8.2, 4.0-dev (snapshot–2017-08-16–master–37d4b2502)

I originally posted this as #1873. There I described two problems. One of these has been solved so the original issue was closed. As the other still prevails I create a new issue.

General Problem: Group memberships are decided by name only. If there are two groups with the same name (anywhere in the group tree) an entry can either be a member of all these groups or a member of none.

Steps to reproduce: 1. Create two groups with the same name. 2. Assign an entry to one of the groups.

Example Files: for version 3.8.2 for version 4.0

Updated 17/08/2017 14:12 3 Comments

Inequalities of sequence lengths

panacekcz/checker-framework

In some cases, it might help to have information about inequalities between lengths of sequences. For equalities, @SameLen already exists. For example @LongerThanEq("shorter") String longer; would mean that @IndexFor("shorter") can be converted to @IndexFor("longer").

Updated 16/08/2017 17:30 1 Comments

Rename text to string

Microsoft/AL

Somehow the description “Text” disturbs me. In the classic AL, I could resign myself because the SQL type “text” was called. Nowadays the SQL type “Text” is obsolete. Meanwhile, he says, according to my opinion, the wrong. These are not texts or a text, but a string. Moreover, the term string is more sophisticated in computer science.

Updated 16/08/2017 11:46 2 Comments

Paste does not work in Internet Explorer

ministryofjustice/analytics-platform

For some reason you cannot paste stuff into R studio when accessing through internet explorer. Tried pasting text into the console, shell and script editor and none worked. Mozilla Firefox seems to work normally on dom1 so suggest for time being that the guidance recommends accessing the platform from Mozilla (if not already doing so)

Updated 17/08/2017 09:32

.NET Core 2.0 final release & netpkg-tool v0.3.5

phil-harmoniq/netpkg-tool

Microsoft has released the final version of .NET Core 2.0, and with it comes a breaking change in dependencies. It seems that apps compiled with the preview of .NET Core 2.0 are unable to be launched with the final version. As such, all releases prior to 0.3.5 will be unable to run without also having the preview release installed of .NET Core 2.0. Recompilation using source packages may remedy this, however.

To clarify, if you are using .NET Core 2.0, the minimum version of netpkg-tool you can use is 0.3.5. If you are still using preview2 of .NET Core 2.0, only versions 0.3.1-0.3.4 will be compatible

(This issue is merely for public record)

Updated 16/08/2017 02:29

Tests fail in Python 3.6 (unicode function not found)

ukgovdatascience/govukurllookup

This may not be important if we never plan to run this code on 3.6, but it’s worth knowing!

govukurllookup.py:123: NameError
During handling of the above exception, another exception occurred:
self = <test_urllookup.TestGovukurls object at 0x7fd778455048>
    def test_extract_text(self):
        """
            Test the extract_text() method.

            """

        # Run lookup and extract_text methods

        self.urlsclass.lookup()
>       self.urlsclass.extract_texts()
tests/test_urllookup.py:99: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
govukurllookup.py:43: in extract_texts
    self.urltxt = self.urldicts.apply(extract_text)
../../../virtualenv/python3.6.2/lib/python3.6/site-packages/pandas/core/series.py:2355: in apply
    mapped = lib.map_infer(values, f, convert=convert_dtype)
pandas/_libs/src/inference.pyx:1574: in pandas._libs.lib.map_infer (pandas/_libs/lib.c:66645)
    ???
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
page = {'analytics_identifier': None, 'base_path': '/business-support-helpline', 'content_id': '42b1ec32-8258-4f42-8d1c-38510...', 'description': 'Get business support and advice over the phone and online - setting up and running a business', ...}
    def extract_text(page):
        """
        For each dictionary extract the url and all content items.

        Concatenate content items and clean.
        Give back a dict containing url and text
        """
        urltext = dict.fromkeys(['url', 'text'])

        try:

            page_path = safeget(page, 'base_path').encode('utf-8').strip()
            page_title = safeget(page, 'title')
            page_desc = safeget(page, 'description')

            page_body = safeget(page, 'details', 'body')

            if page_body is None:
                page_body = unicode("", "utf-8")

            page_parts = safeget(page, 'details', 'parts')

            if page_parts is None:
                page_parts = unicode("", "utf-8")

            page_text = page_body + page_parts

            soup = BeautifulSoup(page_text, 'html.parser')

             # Remove all script and style elements using BeautifulSoup

            for script in soup(["script", "style"]):
                script.extract()

            # Concatenate the unicode text fields including all text from soup

            txt = u' '.join((page_title, page_desc, soup.getText())).encode('utf-8').strip()

            # Format string by replacing tabs, new lines and commas

            txt = txt.strip().replace("\t", " ").replace("\r", " ")
            txt = txt.replace('\n', ' ').replace(',', ' ')

            urltext['url'] = page_path
            urltext['text'] = txt

        except Exception as exc:
            print(exc)
>           print('Error extracting text from ' + page_path)
E           TypeError: must be str, not bytes
govukurllookup.py:148: TypeError
----------------------------- Captured stdout call -----------------------------
name 'unicode' is not defined

Failing test: https://travis-ci.org/ukgovdatascience/govukurllookup/jobs/264928343

Updated 15/08/2017 22:23 1 Comments

Too big to fail

thpeder/HookTest

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae augue nisl. Sed varius vitae nisl ac aliquam. Quisque sed turpis sit amet nibh dapibus ullamcorper volutpat quis eros. Duis sed bibendum felis. Integer erat erat, congue ac quam quis, fringilla hendrerit lorem. Integer vulputate, risus nec viverra tincidunt, velit nisi blandit erat, ut dignissim ex justo eu purus. Morbi eu fringilla enim, hendrerit tempus nulla. Nunc congue vitae enim in venenatis. Nulla dictum quam ipsum, at cursus libero porta vel. Proin lobortis porttitor consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Curabitur nec nulla a erat tincidunt imperdiet et id lorem. Quisque est lectus, iaculis ut elit at, aliquam convallis enim. Duis auctor et lacus vitae pretium. Curabitur dictum sem accumsan tellus venenatis, consectetur efficitur lacus lacinia. Ut tellus arcu, hendrerit vel sem in, dapibus sodales nisi. Aliquam tincidunt rutrum ornare. Fusce ac tellus ligula. Phasellus ullamcorper mollis nibh, eu tempor diam laoreet nec. Integer enim nulla, tempor tristique pellentesque ut, auctor quis nibh. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac ipsum tempus, gravida nibh eget, suscipit tellus. Proin commodo tristique nisl, eu blandit justo tincidunt vel.

Vestibulum lobortis vestibulum nunc non vehicula. Nam molestie luctus ex tempus malesuada. Praesent sapien augue, auctor in libero et, lobortis pharetra lacus. Nam consequat augue ac efficitur condimentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer accumsan lacinia lectus, non suscipit massa rhoncus ut. Sed cursus vehicula consectetur. Sed congue finibus bibendum. Nunc sodales tellus vel magna varius viverra.

Nunc at dui in mauris feugiat feugiat id et orci. Nam malesuada tempus nisi. Morbi pharetra congue eleifend. Praesent quam elit, imperdiet vehicula pretium ac, imperdiet vitae neque. Donec porta gravida porta. Vestibulum sed arcu suscipit, faucibus metus vel, dapibus magna. Vivamus gravida neque arcu, nec varius massa dapibus eget. Maecenas commodo libero et dolor lacinia consectetur ut quis nisi. Phasellus dictum non metus egestas sagittis. Vivamus id dolor lobortis, sodales felis in, malesuada augue. Proin non cursus dui.

Mauris tincidunt metus tincidunt dictum rhoncus. Donec faucibus consectetur urna, at blandit nisi varius in. Nullam elit nunc, vulputate non euismod in, sagittis ac orci. Cras sit amet pellentesque ipsum, non condimentum nisl. Suspendisse dictum est id mauris egestas, vel mattis ex bibendum. Quisque sit amet libero ornare, lacinia velit dictum, commodo dui. Integer quis maximus mauris, a placerat nunc. In sollicitudin luctus mi, at tincidunt purus efficitur ut. Sed molestie massa id iaculis imperdiet. Sed eu elementum mauris.

Updated 17/08/2017 09:46

出力ゲインを編集した時にR128_TRACK_GAINを併せて更新すべきか?

hcmiya/opuscomment

今の時点のManual.mdの一番下にも書いてるんだけど、出力ゲインを編集したら表題のことをしないといけないというのはRFC 7845 § 5.2.1に書いてある。

If a tool modifies the ID header’s ‘output gain’ field, it MUST also update or remove the R128_TRACK_GAIN and R128_ALBUM_GAIN comment tags if present. A muxer SHOULD place the gain it wants other tools to use by default into the ‘output gain’ field, and not the comment tag.

「MUST」です。opuscommentはこの規定に基いた動作をするべきだろうか? 確かにこの規定のような配慮が無ければ、音量均一化のつもりで設定していた再生ゲインが出力ゲインの編集で変わってしまうのは当然の事。

だけどopuscommentは出来れば中のメタデータをありのまま扱えるようにしたくて、出力ゲインの編集を行ったら音量均一化用のタグ編集を更新させるのは利用者の方が仕様を把握した上で責任を持つべきだと考えていて、自分で使う時もそうしているわけです。

それで、音量均一化タグ編集をopuscommentで受け持つことになった場合、結構考える事が多い。

  • もしトラックとアルバムの片方しかタグが無かった場合、もう片方はタグを設定するのか? 設定するとしたら値は?
  • もしそのタグが複数回指定されていたとか値のパースに失敗したとかで編集を続行できなくなった時に、そのフィールドはどうなる? 残すのか捨てるのか?
  • もしそのタグがOpus内に存在していて更に編集入力にそれらタグがあったらどちらを適用するのか? 入力側を受け入れる場合、その値は出力ゲインの差を当てるのか?

opuscommentは他スクリプトとの連携をすることが前提のユーティリティーでプレイヤーじゃないから、エラー回復でデータを予想外に変化させるなんて事は出来ればしたくはないんですね。自分自身では直すというか対応することは考えてないけど、そういう仕様もあるんだよーってのを広報したいのでIssueとして立てておきます。

Updated 16/08/2017 13:43 1 Comments

RakLib crash after xxx time of running

jasonwynn10/CrossOnlineCount

This sadly is related to a pmmp bug @dktapps is noticed about it. Its caused via queries opening but not closing connections properly for some reason. The pinged/queried server will likely crash after several minutes - RakLib out of memory.

You can exploit the PMQuery library to ddos a server with 2gb ram assigned with 1 request per tick within 20 minutes - increase count of queries and ddos faster.

I’d not specifically call the issue on the plugin, the issue actually is pmmp/RakLib

Updated 15/08/2017 15:32 2 Comments

SIGSEGV while executing native code when initWithFormat:arguments: when building for 64 bit

rubo/missinkit

This code causes app crash on ‘iPhone 7 Plus iOS 10.3’ simulator with x64 build:

var testString = NSStringUtility.LocalizedFormat(NSBundle.MainBundle.LocalizedNSString("cb_reminders_detail_repeat_untiloccurrences"), 110, 1.508, 10);

It seems, it relates to this bug Stacktrace:

2017-08-14 20:22:34.310 App.iOS[86905:5189452] critical: Stacktrace:

2017-08-14 20:22:34.311 App.iOS[86905:5189452] critical: at <unknown> <0xffffffff> 2017-08-14 20:22:34.311 App.iOS[86905:5189452] critical: at (wrapper managed-to-native) App.iOS.Classes.LocalizationUtility.NSStringUtility.NSStringInitWithFormatArguments (intptr,intptr,intptr,intptr) [0x0000c] in <316d4c67b02147a5bd23e98bd7553ede>:0 2017-08-14 20:22:34.312 App.iOS[86905:5189452] critical: at App.iOS.Classes.LocalizationUtility.NSStringUtility.LocalizedFormat (Foundation.NSString,App.iOS.Classes.LocalizationUtility.VariadicArguments.VariadicArgument[]) [0x00046] in F:\Git\CB.MobileIOS\App.iOS\Classes\LocalizationUtility\NSStringUtility.cs:40 2017-08-14 20:22:34.312 App.iOS[86905:5189452] critical: at App.iOS.Pages.SignIn.SignInViewController.CreateKeepMeSignView () [0x00061] in F:\Git\CB.MobileIOS\App.iOS\Pages\SignIn\SignInViewController.cs:154 2017-08-14 20:22:34.312 App.iOS[86905:5189452] critical: at App.iOS.Pages.SignIn.SignInViewController.CreateMarkUp () [0x00154] in F:\Git\CB.MobileIOS\App.iOS\Pages\SignIn\SignInViewController.cs:107 2017-08-14 20:22:34.313 App.iOS[86905:5189452] critical: at App.iOS.Pages.SignIn.SignInViewController.OnViewDidLoad () [0x00008] in F:\Git\CB.MobileIOS\App.iOS\Pages\SignIn\SignInViewController.cs:55 2017-08-14 20:22:34.313 App.iOS[86905:5189452] critical: at BusinessLogic.Classes.CatchExceptionHelper.CatchException (System.Action) [0x00002] in F:\Git\CB.MobileIOS\Libraries\BusinessLogic\Classes\CatchExceptionHelper.cs:23 2017-08-14 20:22:34.314 App.iOS[86905:5189452] critical: at App.iOS.Pages.ABaseViewController`2<TParameter_REF, TData_REF>.ViewDidLoad () [0x0000f] in F:\Git\CB.MobileIOS\App.iOS\Pages\ABaseViewController.cs:133 2017-08-14 20:22:34.314 App.iOS[86905:5189452] critical: at (wrapper runtime-invoke) object.runtime_invoke_voidthis (object,intptr,intptr,intptr) [0x0004f] in <2f4074c3120b4d80802e10af84b67d41>:0 2017-08-14 20:22:34.314 App.iOS[86905:5189452] critical: at <unknown> <0xffffffff> 2017-08-14 20:22:34.315 App.iOS[86905:5189452] critical: at (wrapper managed-to-native) UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) [0x0005c] in <58a9bd8a3cbb4d0092bc0a767ff66c0f>:0 2017-08-14 20:22:34.316 App.iOS[86905:5189452] critical: at UIKit.UIApplication.Main (string[],intptr,intptr) [0x00005] in /Users/builder/data/lanes/4691/d2270eec/source/xamarin-macios/src/UIKit/UIApplication.cs:79 2017-08-14 20:22:34.317 App.iOS[86905:5189452] critical: at UIKit.UIApplication.Main (string[],string,string) [0x00038] in /Users/builder/data/lanes/4691/d2270eec/source/xamarin-macios/src/UIKit/UIApplication.cs:63 2017-08-14 20:22:34.317 App.iOS[86905:5189452] critical: at App.iOS.Application.Main (string[]) [0x00336] in F:\Git\CB.MobileIOS\App.iOS\Main.cs:121 2017-08-14 20:22:34.317 App.iOS[86905:5189452] critical: at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) [0x00051] in <316d4c67b02147a5bd23e98bd7553ede>:0 2017-08-14 20:22:34.318 App.iOS[86905:5189452] critical: Native stacktrace: 2017-08-14 20:22:34.334 App.iOS[86905:5189452] critical: 0 App.iOS 0x000000010223f2b1 mono_handle_native_crash + 257 2017-08-14 20:22:34.335 App.iOS[86905:5189452] critical: 1 App.iOS 0x000000010224c380 mono_sigsegv_signal_handler + 288 2017-08-14 20:22:34.335 App.iOS[86905:5189452] critical: 2 libsystem_platform.dylib 0x000000010f340bba sigtramp + 26 2017-08-14 20:22:34.335 App.iOS[86905:5189452] critical: 3 ??? 0x0000000000000000 0x0 + 0 2017-08-14 20:22:34.336 App.iOS[86905:5189452] critical: 4 CoreFoundation 0x000000010da77d83 CFStringCreateWithFormatAndArgumentsAux2 + 243 2017-08-14 20:22:34.336 App.iOS[86905:5189452] critical: 5 App.iOS 0x0000000102411009 xamarin_dyn_objc_msgSend + 217 2017-08-14 20:22:34.336 App.iOS[86905:5189452] critical: 6 ??? 0x000000012983b528 0x0 + 4991464744

2017-08-14 20:22:34.337 App.iOS[86905:5189452] critical:

Got a SIGSEGV while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries

used by your application.

Updated 18/08/2017 04:19 2 Comments

Can break when using Shadowplay with Desktop Capture

ataraxie/Eyeflow

Shadowplay is a feature on Nvidia graphics cards that passively records the screen so you can retroactively save a video of the last N minutes. One setting allows it to also record the desktop, not just game windows. Well apparently it uses an overlay, because once I turned that on the overlay became the shown window. Somehow the command prompt for eyeflow didn’t fade, but presumably because the overlay was forced to the forergound, I couldn’t actually close eyeflow either (no keystrokes would register), had to restart computer.

Not worth finding a way to fix I don’t think, so I would just advise people to avoid using them at the same time.

I’ll try and test later to make sure something like f.lux doesn’t do something similar.

Updated 15/08/2017 00:09

Getting more done in GitHub with ZenHub

informedia-kolb/mpulse

Hola! @informedia-kolb has created a ZenHub account for the informedia-kolb organization. ZenHub is the only project management tool integrated natively in GitHub – created specifically for fast-moving, software-driven teams.


How do I use ZenHub?

To get set up with ZenHub, all you have to do is download the browser extension and log in with your GitHub account. Once you do, you’ll get access to ZenHub’s complete feature-set immediately.

What can ZenHub do?

ZenHub adds a series of enhancements directly inside the GitHub UI:

  • Real-time, customizable task boards for GitHub issues;
  • Multi-Repository burndown charts, estimates, and velocity tracking based on GitHub Milestones;
  • Personal to-do lists and task prioritization;
  • Time-saving shortcuts – like a quick repo switcher, a “Move issue” button, and much more.

Add ZenHub to GitHub

Still curious? See more ZenHub features or read user reviews. This issue was written by your friendly ZenHub bot, posted by request from @informedia-kolb.

ZenHub Board

Updated 14/08/2017 15:15

Berkeley dependency parser fails on punctuation

vered1986/OKR

Turns out that that Berkeley fails on sentences containing 3 subsequent ‘?’!‘ marks.
@kleinay overcame this problem by wrapping the single-sentence parsing stage with “try-except” block, logging and then ignoring sentences that it couldn’t parse.
@kleinay, can you please post a problematic example sentence?

Thanks!

Updated 14/08/2017 14:56 1 Comments

Rev: Modul Admin

infomugi/irecruitment

Admin 1. Daftar File Lamaran kan itu bentuknya List View yah a, bisa engga kalo dijadiin table terus nantinya bisa di filter, soalnya kalo misalkan datanya ribuan, harus terus nge scroll ke bawah atau nge tab. Jadi Kalo ada filter mah nanti ketauan yang ngelamar tanggal hari ini yang mana aja, yang kemarin mana. Tabelnya yang kaya account setting a. 2. Data File lamaran kan disitu ada sorting perstatus, bisa ngga a ditambahin lagi status seudah di verifikasi, ada status “Dipanggil” sama “Belum Dipanggil”. Jadi nanti kerjanya buat bikin cetakan/print daftar untuk panggilan calon pelamar, sama buat pemisah antara yang udah di panggil sama yang belum. 3. Job Order bisa diadain fitur Search ngga a, kalo engga di samain kaya point C-1. 4. Admin bisa liat dokumen pelamar yang diupload. 5. Untuk Laporan opik lagi mikir dulu yang lebih Informatif kaya gimana 6. Oh itu a di referensi pas di tambah bagian kenapa ada upload soal psikotes a. 7. SAWnya mah sambal berjalan aja a.

Updated 19/08/2017 16:23 25 Comments

Rev: Modul Pelamar

infomugi/irecruitment
  1. Dokumen lamaran bisa ditampilin
  2. Foto a hehe
  3. A yang data keluarga, Jabatan Pekerjaanya di jadiin “Pekerjaan” terus input manual aja ga pake referensi a, soalnya ada anak.
  4. Pengajuan lamaran :
  5. 1 Pelamar 1 Lowongan, kalo pelamar itu ditolak atau melakukan pembatalan lamaran baru bias ngelamar lowongan yang lain
  6. Karyawan kontraknya typo a hehe kontraknya jadi kontak
  7. Didaftar lowongan kan itu diklik si nama lowongannya a, bisa ngga a di tambahin tombol “Detail Lowongan”, takutnya kalo orang awam yang pake ngga ngerti kalo harus klik nama lowongannya.
  8. Terus yang tadi masalah “L/P” ternyata belum beres a, tadi teh kan bikin lowongan yang enis kelaminnya “L/P” nah pas opik nyobain mau ngajuin masih ada peringatan ”Maaf, Lowongan Ini Diprioritaskan untuk Perempuan”
  9. Account Setting dijadiin Edit Data Pribadi aja a.
  10. Cetak ID Pengajuan Lamaran
  11. Notifikasi status Pengajuan
  12. Edit password, pas kita masukin password baru, bisa dishow dulu ga a, takutna salah nginputin password
Updated 19/08/2017 16:24 9 Comments

Force stop occurs in certain situation

TonnyL/PaperPlane

How to reproduce 1:Open the app once, then return to the launcher. 2:Do anything you like without killing(Force Close) the app’s process 3:After some time(don’t know how much exactly), maybe hours or a day, relaunch the app and probably need open an article, the app will then be crashed several seconds after. 4:Relaunch the app again, it will work fine.

Related logcat when the crash occured:

It seems to be related to the CacheService.

08-14 09:29:25.529 3425-3655/? I/ActivityManager: Displayed com.marktony.zhihudaily/.details.DetailsActivity: +1s548ms 08-14 09:29:25.548 2015-2191/? E/AndroidRuntime: FATAL EXCEPTION: Thread-37 Process: com.marktony.zhihudaily, PID: 2015 java.lang.NullPointerException: Attempt to invoke virtual method ‘int com.marktony.zhihudaily.b.q.i()’ on a null object reference at com.marktony.zhihudaily.database.b.j$2.a(Unknown Source:1) at com.marktony.zhihudaily.database.b.j$2.a(Unknown Source:2) at android.a.b.b.b.a(Unknown Source:4) at com.marktony.zhihudaily.database.b.j.b(Unknown Source:7) at com.marktony.zhihudaily.service.CacheService.a(Unknown Source:83) at com.marktony.zhihudaily.service.e.run(Unknown Source:4) at java.lang.Thread.run(Thread.java:764) 08-14 09:29:25.559 3425-6845/? W/ActivityManager: Force finishing activity com.marktony.zhihudaily/.details.DetailsActivity 08-14 09:29:25.562 3425-6845/? W/ActivityManager: Force finishing activity com.marktony.zhihudaily/.ui.MainActivity 08-14 09:29:25.574 3425-3631/? I/ActivityManager: Showing crash dialog for package com.marktony.zhihudaily u0 08-14 09:29:25.623 3425-6590/? I/OpenGLRenderer: Initialized EGL, version 1.4 08-14 09:29:25.623 3425-6590/? D/OpenGLRenderer: Swap behavior 2 08-14 09:29:25.671 3425-3628/? W/BroadcastQueue: Skipping deliver [background] BroadcastRecord{f93ab1a u-1 android.net.conn.CONNECTIVITY_CHANGE} to ReceiverList{9ebc43c 2015 com.marktony.zhihudaily/10107/u0 remote:afb262f}: process gone or crashing 08-14 09:29:25.751 3425-8587/? D/ConnectivityService: ConnectivityService NetworkRequestInfo binderDied(NetworkRequest [ LISTEN id=283, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&FOREGROUND] ], android.os.BinderProxy@6cee828) 08-14 09:29:25.752 3425-15271/? D/ConnectivityService: ConnectivityService NetworkRequestInfo binderDied(NetworkRequest [ LISTEN id=284, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&FOREGROUND] ], android.os.BinderProxy@7c53941) 08-14 09:29:25.752 3425-15279/? I/ActivityManager: Process com.marktony.zhihudaily (pid 2015) has died: vis +99TOP 08-14 09:29:25.752 3425-15834/? I/WindowManager: WIN DEATH: Window{9764075 u0 com.marktony.zhihudaily/com.marktony.zhihudaily.details.DetailsActivity} 08-14 09:29:25.752 3425-4026/? E/ConnectivityService: RemoteException caught trying to send a callback msg for NetworkRequest [ LISTEN id=283, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&FOREGROUND] ] 08-14 09:29:25.752 3425-15279/? W/ActivityManager: Scheduling restart of crashed service com.marktony.zhihudaily/.service.CacheService in 19280ms 08-14 09:29:25.753 3425-4026/? E/ConnectivityService: RemoteException caught trying to send a callback msg for NetworkRequest [ LISTEN id=284, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&FOREGROUND] ] 08-14 09:29:25.756 3425-3912/? W/InputDispatcher: channel ‘3db5433 com.marktony.zhihudaily/com.marktony.zhihudaily.ui.MainActivity (server)’ ~ Consumer closed input channel or an error occurred. events=0x9 08-14 09:29:25.756 3425-3912/? E/InputDispatcher: channel ‘3db5433 com.marktony.zhihudaily/com.marktony.zhihudaily.ui.MainActivity (server)’ ~ Channel is unrecoverably broken and will be disposed! 08-14 09:29:25.756 3425-4851/? I/WindowManager: WIN DEATH: Window{3db5433 u0 com.marktony.zhihudaily/com.marktony.zhihudaily.ui.MainActivity}

Updated 15/08/2017 08:50 2 Comments

Can't add link to image in tinymce

evolution-cms/evolution

I’ve got a couple of Evo sites where I’m unable to add a link to an image in TinyMCE. With the image selected, I click on the link button to add a URL, type in the URL, then click on OK and nothing happens. The dialogue box just stays there.

tinymce 4.3.7.2 Modx Evo 1.2

I googled around and found mention of this issue on other CMSs and it seems the bug has been fixed in the tinymce source but I don’t know how to fix this in Modx

My clients use this quite often so I really need a fix for this.

Alternatively, is there is another editor that I could use? Where do I find one?

I’ve just read about the evo mgmt change and this issues list. So I apologize if this appears to be a double posting, but after several days on the modx forum no one has responded. I’m hoping you can help.

Thank you!

Updated 17/08/2017 08:49 8 Comments

add command pre_build

yext/edward

Sometimes before building i have to launch some scripts . It will be nice to have this possibility to be sure everything is up to date before building.

For example : - generate my config files - update vendor dependcies - launching protoc to generate go api for my grpc services

"commands": { "pre_build": ["./manage_dependencies.sh", "./generate_private_key.sh"], "build": "go install", "launch": "authserver" },

Updated 13/08/2017 21:49 4 Comments

Youtube-bridge gives wrong time

RSS-Bridge/rss-bridge

I’m using youtube-bridge with the search option. I use the keyword “jessica” for example. Half of the feeds show the time is today 8:00 AM and the rest shows time is yesterday 8:00 AM. All of the entries have different upload times.

The feeds should reflect the correct time based on the time uploaded.

Updated 19/08/2017 17:21 1 Comments

Agent の Color

crest-cassia/CrowdWalk

Agent の、歩行速度による色について、現状では、2D と 3D でほぼ同じコードが別々に書かれている。 これを統一することはできないか?

すくなくとも、スピードから、HSB値への変換の部分は共通化したい。

共通化できた後、Link や Node と同じく、Agent の色付けも、設定ファイル (linkApp や nodeApp と同等) で設定できるようにしたい。 具体的には、エージェントのスピードによる色付け以外に、混み具合(エージェントの前の空きスペースの大きさなど)に依存した色付けや、色変化のバリエーションを持たせたい。

Updated 13/08/2017 13:42

Unable to cross compile

skx/puppet-summary

I love the xcc capabilities of Go usually. I run several daemons on ARM, however, I can’t XCC this project, I think due to https://github.com/mattn/go-sqlite3. I don’t know how tied to this SQLite binding you are, but I believe there are others that do work during a cross compile.

(I realize this a fringe request and feel free to close it if don’t really care to spend time on it. I’ve been there as a maintainer)

Updated 14/08/2017 08:48 4 Comments

Fork me on GitHub