text:
The ups and downs of the female partner's life trajectory were very clear in the book: Fail to manage Chenxing (the female lead loses face)-return to Yinda to plan again- fail to manage Yinda (face female lead loses)- return to Qisheng to plan again- fail to manage it( female lead defeated face slaps)-disfigured.
Although there were many external causes for Qisheng's fall in the book, similar to the stalking of the male lead and male partner, it was more of internal corruption.
A healthy business empire would not be so vulnerable.
At present, there were still two or three years before Qisheng fell in the book.
Chu Yanyin now wanted to transfer back Zhang Jianian which proved that the problem had arisen.
Chu Chu would not wait for Qisheng to collapse before acting.
She would simply kick the door open to see what the huge group was doing.
A few days later, in Yinda Investment, Chu Chu sat at her desk and finally waited for Chu Yanyin's notice.
She looked at the various terms and frowned, "Isn't he cunning"
Zhang Jianian euphemistically said, "Director Chu is also afraid that you have to work too hard…"
Chu Chu raised her eyebrows and said with dissatisfaction, "Obviously taking over Qisheng and taking over part of Qi Sheng's industry are two different things, right He's really good at playing with words."
As soon as Chu Yanyin's anger and impulse at the scene passed, he began scheming at every step.
He put aside important work for the next three months, leaving only the part of Qisheng Film to be taken over by Chu Chu and at the same time listed harsh conditions.
Every provision of the clause restricted Chu Chu's behavior, restricted her major decisions that lead to losses that would require financial compensation and couldn't sell assets rashly, lest she do what she did with Shiye shares.
Qisheng Film could contribute one-third of the group's revenue each year, which could be regarded as a pillar, but it was still far from the entire Qisheng.
The most annoying thing was that Chu Yanyin deliberately put the affairs of Miracle Pictures on the agenda.
He obviously intended to let Chu Chu handle it.
After Chu Chu read the financial report of Miracle Pictures, the first sentence she blurted out was, "What kind of sh*t is this"
She had never seen such a bad account.
After all, the companies she had handled, whether it was Yinda, Chenxing, Laughter culture and Light World, were all profitable.
The net profit obtained by Light World Entertainment from "Win the War" had surpassed many listed companies and the upward trend was rapid.
Miracle Pictures last year's net profit was 12.3 billion yuan and last year's net loss was -21.7 billion yuan.
Before it was acquired by Qisheng, it had been losing money for two consecutive years, so there was no need to wait for Chu Chu to make it collapse.
It would have lost 4 years in a row.
Chu Chu felt cheated.
Chu Yanyin confiscated her pocket money in disguise and asked her to pay for it
Zhang Jianian explained it with a good temper, "President Chu, the company generally acquires a company that is not doing well and turning it back into profit is also a common investment method."
Although Miracle Pictures was a well-known film production company at home and abroad, it had created many classic IPs in the past.
Under the impact of the decline of the overseas economic situation, its business conditions had gotten poor.
It was impossible for a healthy company to agree to an acquisition by a large group, such as the thriving Light World Entertainment, for fear of being trapped by others.
Chu Chu's eyelids jumped, "How much did Qi Sheng spend to acquire it"
Zhang Jianian: "23 billions."
Chu Chu felt incredible, "It almost lost the purchase price last year"
Zhang Jianian added, "The purchase price was 23 billions and the loss last year was RMB 21.7 billion."
Chu Chu made a mental calculation, collapsed on her chair and muttered, "This broken company is not even worth a ten billion goal"
Zhang Jianian added objectively, "With the current exchange rate, to be precise, it is worth 15 billion."
Chu Chu:""
Chu Chu angrily said, "Why didn't he give me 15 billion"
Chu Chu had a sense of untimely life.
If she met such a person in reality with a lot of stupid money, she would have cash out and run away, with hundreds of millions of fortunes!
She would ask for 23 billion, she would just take the 23 billion RMB!


text:
Individuals and Families > Victims > SCOPE > Tools & resources
Behind the science
These resource links provide a more in-depth look at what factors power the opioid epidemic and the search for solutions. The research was among the sources the Attorney General's SCOPE team used in evaluating what recommendations to make to improve Ohio's response to the crisis.
Drug use in the U.S.: Every year, the Substance Abuse and Mental Health Services Administration, a section of the U.S. Department of Health & Human Services, sends field agents nationwide to conduct comprehensive household interviews on substance use and disorders, mental health and treatment services.
https://www.samhsa.gov/data/data-we-collect/nsduh-national-survey-drug-use-and-health
Unintended consequences of help: This working paper from the National Bureau of Economic Research looked at how interventions to decrease the abuse of prescription opioids — such as the introduction of an abuse-deterrent version of OxyContin in 2010 — had the unintended consequence of increasing the use of illegal opioids, such as heroin.
https://www.nber.org/papers/w23031
Medical school recommendations: A task force of medical school leaders and government officials in Massachusetts developed 10 core competencies that every doctor should know about prescribing opioids.
https://journals.lww.com/academicmedicine/FullText/2016/10000/Developing_Core_Competencies_for_the_Prevention.13.aspx
Patient use patterns: Both of these studies look at patients who have surgery and then are prescribed opioids, including how many of the pills are taken and how they are stored.
https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0147972
https://jamanetwork.com/journals/jamasurgery/article-abstract/2644905
The inside job: An advocacy group launched by a medical technology company commissioned this study of hospital executives and medical providers to better understand the issue of health care workers who divert opiates away from patients for personal use or sale, including how to solve the problem.
https://go.bd.com/BD-Institute-for-Medication-Management-Excellence-Drug-Diversion.html
Repairing pathologies: In this analysis based in behavioral economics, researchers examine the internal and environmental factors that keep a drug abuser coming back to his or her drug of choice, including how to counter those "reinforcement pathologies."
A cost for business: Human resources professionals reported in this survey that their companies are generally unprepared to deal with workers' opioid addictions.
https://www.hartfordbusiness.com/article/survey-hr-pros-not-equipped-to-address-opioids-in-the-workplace
Caught in the tide: Child hospitalizations for opioid poisonings increased nearly twofold from 1997 to 2012 as opioid prescriptions nationwide saw significant increases, according to this study published in JAMA Pediatrics.
https://jamanetwork.com/journals/jamapediatrics/fullarticle/2571466
Brain diagnosis: This research compiles what is known about how addiction changes brain activity — including compromising the reward system and overactivating stress systems — in an effort to find ways to diagnose drug use disorder in its various intensities.
https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1360-0443.2006.01586.x?sid=nlm%3Apubmed
Trusted sources of additional information on opioids:
Recovery Ohio, the state's coordinator of the fight to end the drug crisis
Ohio Pharmacy Board's Drug Disposal Resources
Drug Enforcement Administration's Get Smart About Drugs program
Publications available for download

redpajama_set_name: RedPajamaCommonCrawl


Chris Rozelle teaches English and literacy in a rural Pennsylvania public high school. He loves infusing his classroom with technology and play to center student learning through choice. Chris is a Minecraft Certified Educator and is being considered for the Minecraft Global Mentor position.


Have you ever been to The Great Pyramids of Egypt? Or did these make into your list? Great Pyramids will probably be one of the top bucket list item for most of us and they sure live up to the expectation. The Great Pyramids were built around 4500 years ago and still are among the tallest structures in the world. 4500 years and scientists still believe there is lot to explore inside these gigantic structures. Being the only structures remaining fully intact from the ancient wonders, an honorary allotment is provided for The Great Pyramids in the New 7 Wonders of the World along with 7 other amazing structures. No surprise there! ya?
The Great Pyramids are located in El Giza, Egypt. There are three major pyramids of which Pharaoh(King) Khufu Pyramid is the largest one. The other two major ones belong to Khufu's son – Khafre and the subsequent King – Menkaure. There is still no firm theory regarding the construction mode of The Great Pyramids. These are built as cemeteries with all the favorite items and amenities of Pharaohs as Egyptians believed in life after death. There were paintings on walls along with the scripts which provide an insight into their amazing life. But today there is hardly anything left in The Great Pyramids. They have been looted several times in the history. It is believed that there are other entrances to The Khufu Pyramid which might be closed following loots and are never identified. With so much more to learn, these massive structures are beautiful yet mysterious.
Can you see I am excited already? Lets read about my experience.
What did I love most about Pyramids?
Undoubtedly, their massive structure. The panoramic view of The Great Pyramids is so satisfying. Its a complete picture. There are so many ancient structures in the world holding the secret of how they were put together and then there are Pyramids. It is unbelievable that those giant rocks were arranged at such a great heights and yet in the perfectly possible triangle shape. The accuracy was close to 100% and it is not known if the Egyptians were aware of Pi yet could have used it. Source – My Guide. He mentioned he studied ancient history in the local college. We are lucky to have a well-informed guide. Overall, everything together made our trip lovely. Its a picture that stays in heart forever.
Did Pyramids meet my expectations?
Of course yes. The view is amazing and the pictures with these in background are so overwhelming. I wouldn't dive into Pyramids as they are built for a reason but I wish there is a way to learn more about them. On those lines, Egyptian Museum is a must visit as there are thousands of items on display excavated from Pyramids. It is also home for the several items discovered from the Pyramid of King Tutankhamun which is possibly the most intact tomb ever found in this age. There are mummies too. They all throw us back in time and it is such a wonderful experience.
Recently, scientists discovered there is another inaccessible hidden chamber apart from the already known three major chambers in The Pyramid of Khufu. Who knows what else this mysterious structure has in its store.
Oh! Are local people not sweetest almost everywhere? Egypt is no exception. We had one of our sweet experiences when we walked on the streets of Old Cairo Bazaar and classic little alleys on the way to The Hanging Church. People recognize us as Indians(thanks to our looks) and the way they confirmed was sweet 😀 They ask "Shah Rukh Khan? Amitabh Bachan???" who are the Big Stars of Indian Cinema. Since Egypt speaks Arabic, some of the Indian movies release here and looks like people are big fans of those stars. Some kids even asked for a photograph as we, Indian kids ask for pictures with foreigners back in India. That is indeed a happiest moment. People really treated us with respect and welcomed with a smile.
The Great Pyramid. Hard to imagine how it was put together.
What are the food options around here?
First thing to mention is breakfast buffet in our Hotel Fairmont Nile. That is one of the best and largest breakfast buffet I ever had. From American cheese, French pastries to local varieties, it covered almost everything. My personal favorites are Egyptian pita bread with fava beans, taameya or falafel and eggs cooked in Ghee. Also there is a stall which is a direct honey hive and picking honey from it felt so good.
When we are out for lunch, we ate Koshary which is rice with chickpeas, lentils, fried onions and lemon. It is the most common food in Egypt and is so delicious. And every restaurant almost commonly served grilled meat(chicken, pork and camel too) with rice and vegetables.
When it comes to deserts, try Basbousa or perhaps any other sweet in Talaat harb street which will be most possibly the best sweet ever tasted.
On top of Cairo Tower, we tasted 'Omm Ali', another authentic Egyptian desert which is a puff pastry with milk and nuts. It is different and definitely worth trying.
How to reach Great Pyramids?
Today, Pyramids are no more in the middle of the desert. A short walk from tallest pyramid is McDonalds and there are several hotels around Pyramids. But it is always best to book a tour in advance. There is very minimal public transportation and even if you manage, it might be extremely crowded. A tour may have a transportation of its own and it is much easy to commute from Pyramids to Sphinx and other spots around. A tour may also include a camel ride and quad bike around Pyramids which will sure be a memorable experience. Our tour cab even has wi-fi, they sure scored a bonus point as it did help a lot to search places or words to communicate with driver without spending on cellular data all the time.
What are the recommended hotels?
We stayed in Fairmont Nile which is about an hour from airport and half hour ride from Pyramids. It is a great location with Nile river view and several shopping places around. There are hotels with Pyramid view as well but those can be far from city center. AirBnb is not very much popular in the area.
There is something with Sphinx. It elevates the view to whole new level.
A single answer from almost any local guide is Khan El-Khalili. It is a great place to buy souvenirs and other local made stuff provided you are good at bargain and fake walking away to grab a good deal. There are hundreds of shops here and all of them carry similar items. So good luck!
A guided tour always makes stop at their affiliated shops and we loved their choice this time. We were taken to Papyrus Scrolls with night illuminated graphics(the making of it boggled us) , Perfume store and Khartouche, a personal oval shaped souvenir with embedded Egyptian symbols which is meant to protect from evil spirits.
Definitely. These are Pyramids, the greatest man made structures ever. Also Egypt carries so much history and it feels incredible to stand amid those giant structures and statues. However, Egypt is not that costly after all, well after flying into mainland. But I wish I had more time to cover all the surrounding places. 4 days would be ideal to cover all the places around Cairo. And 10 days at least, if bundled with Luxor and Aswan, two other important historic and must see cities in Egypt.
Check travel/terror alerts before making any plans.
Book a tour for easy commute and it helps in avoiding long lines.
It is not really advisable to walk at nights.
I wouldn't prefer street food. It doesn't look completely hygienic.
Carry water as it might cost lot more for foreigners.
Please be aware of dress code. Yes it might be extremely hot but covering until knees and shoulders can be mandatory to enter certain historic places.
People do not speak English. Learn basic Arabic words. naaam – yes, laa – No, min faDlik – Please, shukraan – Thank you, sabaaH alkhayr – Good morning.
Not really. There is more to experience in Egypt apart from Pyramids. It is once in a lifetime experience and I was extremely satisfied the way we did it. Moreover, there is lot more in this beautiful world awaiting me.


text:
Miroslav Pavlović (en serbio cirílico: Мирослав Павловић; 23 de octubre de 1942, en Požega – 19 de enero de 2004, en Belgrado) fue un futbolista serbio. Fue internacional con , con quien llegó a la final de la Eurocopa 1968 que perdieron ante , y disputó la Copa Mundial de Fútbol de 1974. Jugaba como centrocampista y jugó, principalmente, en el Estrella Roja de Belgrado, con quien disputó más de doscientos partidos oficiales de liga.

Enlaces externos
 Miroslav Pavlović en Reprezentacija

Futbolistas de Yugoslavia
Futbolistas de Serbia
Futbolistas del FK Sloboda Užice
Futbolistas del Estrella Roja de Belgrado
Futbolistas del San Jose Earthquakes (NASL)
Futbolistas de la selección de fútbol de Yugoslavia en los años 1960
Futbolistas de la selección de fútbol de Yugoslavia en los años 1970
Futbolistas de Yugoslavia en la Eurocopa 1968
Futbolistas de Yugoslavia en la Copa Mundial de 1974
Fallecidos en Belgrado

redpajama_set_name: RedPajamaWikipedia


Color-challenged? Become a confident color designer by learning how color works.
Welcome to Warp & Weave!
If picking colors for your handwoven projects makes you nervous, you've experienced a color disaster, or you're afraid of what your finished project will look like…Help is here!


text:
import netaddr
from oslo_log import helpers as log_helpers
from oslo_log import log as logging

from neutron.agent.l3 import namespaces
from neutron.agent.linux import ip_lib
from neutron.agent.linux import iptables_manager
from neutron.agent.linux import ra
from neutron.common import constants as l3_constants
from neutron.common import exceptions as n_exc
from neutron.common import ipv6_utils
from neutron.common import utils as common_utils
from neutron.i18n import _LW

from networking_fortinet.common import constants as consts

LOG = logging.getLogger(__name__)
INTERNAL_DEV_PORT = consts.INTERNAL_DEV_PORT
EXTERNAL_DEV_PORT = consts.EXTERNAL_DEV_PORT
INTERNAL_DEV_PREFIX = INTERNAL_DEV_PORT
EXTERNAL_DEV_PREFIX = EXTERNAL_DEV_PORT

FLOATINGIP_STATUS_NOCHANGE = object()

class RouterInfo(object):

    def __init__(self,
                 router_id,
                 router,
                 agent_conf,
                 interface_driver,
                 use_ipv6=False):
        self.router_id = router_id
        self.ex_gw_port = None
        self._snat_enabled = None
        self.internal_ports = []
        self.floating_ips = set()
        # Invoke the setter for establishing initial SNAT action
        self.router = router
        self.use_ipv6 = use_ipv6
        self.ns_name = None
        self.router_namespace = None
        ##samsu
        #if agent_conf.use_namespaces:
            #ns = namespaces.RouterNamespace(
            #    router_id, agent_conf, interface_driver, use_ipv6)
            #self.router_namespace = ns
            #self.ns_name = ns.name
        #self.iptables_manager = iptables_manager.IptablesManager(
        #    use_ipv6=use_ipv6,
        #    namespace=self.ns_name)
        self.routes = []
        self.agent_conf = agent_conf
        self.driver = interface_driver
        # radvd is a neutron.agent.linux.ra.DaemonMonitor
        self.radvd = None

    @log_helpers.log_method_call
    def initialize(self, process_monitor):
        """Initialize the router on the system.

        This differs from __init__ in that this method actually affects the
        system creating namespaces, starting processes, etc.  The other merely
        initializes the python object.  This separates in-memory object
        initialization from methods that actually go do stuff to the system.

        :param process_monitor: The agent's process monitor instance.
        """
        self.process_monitor = process_monitor
        self.radvd = ra.DaemonMonitor(self.router_id,
                                      self.ns_name,
                                      process_monitor,
                                      self.get_internal_device_name)

        if self.router_namespace:
            self.router_namespace.create()

    @property
    def router(self):
        return self._router

    @router.setter
    def router(self, value):
        self._router = value
        if not self._router:
            return
        # enable_snat by default if it wasn't specified by plugin
        self._snat_enabled = self._router.get('enable_snat', True)

    @property
    def is_ha(self):
        # TODO(Carl) Refactoring should render this obsolete.  Remove it.
        return False

    @log_helpers.log_method_call
    def get_internal_device_name(self, port_id):
        #return (INTERNAL_DEV_PREFIX + port_id)[:self.driver.DEV_NAME_LEN]
        LOG.debug('### get_internal_device_name*() port_id %(port_id)s', {'port_id': port_id})
        print "### get_internal_device_name*() port_id = %s" % port_id
        return INTERNAL_DEV_PORT

    @log_helpers.log_method_call
    def get_external_device_name(self, port_id):
        #return (EXTERNAL_DEV_PREFIX + port_id)[:self.driver.DEV_NAME_LEN]
        LOG.debug('### get_external_device_name*() port_id %(port_id)s',
                  {'port_id': port_id})
        return EXTERNAL_DEV_PORT

    @log_helpers.log_method_call
    def get_external_device_interface_name(self, ex_gw_port):
        return self.get_external_device_name(ex_gw_port['id'])

    @log_helpers.log_method_call
    def _update_routing_table(self, operation, route, namespace):
        cmd = ['ip', 'route', operation, 'to', route['destination'],
               'via', route['nexthop']]
        ip_wrapper = ip_lib.IPWrapper(namespace=namespace)
        ip_wrapper.netns.execute(cmd, check_exit_code=False)

    @log_helpers.log_method_call
    def update_routing_table(self, operation, route, namespace=None):
        if namespace is None:
            namespace = self.ns_name
        self._update_routing_table(operation, route, namespace)

    @log_helpers.log_method_call
    def routes_updated(self):
        new_routes = self.router['routes']

        old_routes = self.routes
        adds, removes = common_utils.diff_list_of_dict(old_routes,
                                                       new_routes)
        for route in adds:
            LOG.debug("Added route entry is '%s'", route)
            # remove replaced route from deleted route
            for del_route in removes:
                if route['destination'] == del_route['destination']:
                    removes.remove(del_route)
            #replace success even if there is no existing route
            self.update_routing_table('replace', route)
        for route in removes:
            LOG.debug("Removed route entry is '%s'", route)
            self.update_routing_table('delete', route)
        self.routes = new_routes

    @log_helpers.log_method_call
    def get_ex_gw_port(self):
        return self.router.get('gw_port')

    @log_helpers.log_method_call
    def get_floating_ips(self):
        """Filter Floating IPs to be hosted on this agent."""
        return self.router.get(l3_constants.FLOATINGIP_KEY, [])

    @log_helpers.log_method_call
    def floating_forward_rules(self, floating_ip, fixed_ip):
        return [('PREROUTING', '-d %s -j DNAT --to %s' %
                 (floating_ip, fixed_ip)),
                ('OUTPUT', '-d %s -j DNAT --to %s' %
                 (floating_ip, fixed_ip)),
                ('float-snat', '-s %s -j SNAT --to %s' %
                 (fixed_ip, floating_ip))]

    @log_helpers.log_method_call
    def process_floating_ip_nat_rules(self):
        """Configure NAT rules for the router's floating IPs.

        Configures iptables rules for the floating ips of the given router
        """
        # Clear out all iptables rules for floating ips
        self.iptables_manager.ipv4['nat'].clear_rules_by_tag('floating_ip')

        floating_ips = self.get_floating_ips()
        # Loop once to ensure that floating ips are configured.
        for fip in floating_ips:
            # Rebuild iptables rules for the floating ip.
            fixed = fip['fixed_ip_address']
            fip_ip = fip['floating_ip_address']
            for chain, rule in self.floating_forward_rules(fip_ip, fixed):
                self.iptables_manager.ipv4['nat'].add_rule(chain, rule,
                                                           tag='floating_ip')

        self.iptables_manager.apply()

    @log_helpers.log_method_call
    def process_snat_dnat_for_fip(self):
        try:
            self.process_floating_ip_nat_rules()
        except Exception:
            # TODO(salv-orlando): Less broad catching
            raise n_exc.FloatingIpSetupException(
                'L3 agent failure to setup NAT for floating IPs')

    @log_helpers.log_method_call
    def _add_fip_addr_to_device(self, fip, device):
        """Configures the floating ip address on the device.
        """
        try:
            ip_cidr = common_utils.ip_to_cidr(fip['floating_ip_address'])
            device.addr.add(ip_cidr)
            return True
        except RuntimeError:
            # any exception occurred here should cause the floating IP
            # to be set in error state
            LOG.warn(_LW("Unable to configure IP address for "
                         "floating IP: %s"), fip['id'])

    @log_helpers.log_method_call
    def add_floating_ip(self, fip, interface_name, device):
        raise NotImplementedError()

    @log_helpers.log_method_call
    def remove_floating_ip(self, device, ip_cidr):
        device.delete_addr_and_conntrack_state(ip_cidr)

    @log_helpers.log_method_call
    def remove_external_gateway_ip(self, device, ip_cidr):
        device.delete_addr_and_conntrack_state(ip_cidr)

    @log_helpers.log_method_call
    def get_router_cidrs(self, device):
        return set([addr['cidr'] for addr in device.addr.list()])

    @log_helpers.log_method_call
    def process_floating_ip_addresses(self, interface_name):
        """Configure IP addresses on router's external gateway interface.

        Ensures addresses for existing floating IPs and cleans up
        those that should not longer be configured.
        """

        fip_statuses = {}
        if interface_name is None:
            LOG.debug('No Interface for floating IPs router: %s',
                      self.router['id'])
            return fip_statuses

        device = ip_lib.IPDevice(interface_name, namespace=self.ns_name)
        existing_cidrs = self.get_router_cidrs(device)
        new_cidrs = set()

        floating_ips = self.get_floating_ips()
        # Loop once to ensure that floating ips are configured.
        for fip in floating_ips:
            fip_ip = fip['floating_ip_address']
            ip_cidr = common_utils.ip_to_cidr(fip_ip)
            new_cidrs.add(ip_cidr)
            fip_statuses[fip['id']] = l3_constants.FLOATINGIP_STATUS_ACTIVE
            if ip_cidr not in existing_cidrs:
                fip_statuses[fip['id']] = self.add_floating_ip(
                    fip, interface_name, device)
                LOG.debug('Floating ip %(id)s added, status %(status)s',
                          {'id': fip['id'],
                           'status': fip_statuses.get(fip['id'])})
            elif fip_statuses[fip['id']] == fip['status']:
                # mark the status as not changed. we can't remove it because
                # that's how the caller determines that it was removed
                fip_statuses[fip['id']] = FLOATINGIP_STATUS_NOCHANGE
        fips_to_remove = (
            ip_cidr for ip_cidr in existing_cidrs - new_cidrs
            if common_utils.is_cidr_host(ip_cidr))
        for ip_cidr in fips_to_remove:
            LOG.debug("Removing floating ip %s from interface %s in "
                      "namespace %s", ip_cidr, interface_name, self.ns_name)
            self.remove_floating_ip(device, ip_cidr)

        return fip_statuses

    @log_helpers.log_method_call
    def configure_fip_addresses(self, interface_name):
        try:
            return self.process_floating_ip_addresses(interface_name)
        except Exception:
            # TODO(salv-orlando): Less broad catching
            raise n_exc.FloatingIpSetupException('L3 agent failure to setup '
                'floating IPs')

    @log_helpers.log_method_call
    def put_fips_in_error_state(self):
        fip_statuses = {}
        for fip in self.router.get(l3_constants.FLOATINGIP_KEY, []):
            fip_statuses[fip['id']] = l3_constants.FLOATINGIP_STATUS_ERROR
        return fip_statuses

    @log_helpers.log_method_call
    def delete(self, agent):
        self.router['gw_port'] = None
        self.router[l3_constants.INTERFACE_KEY] = []
        self.router[l3_constants.FLOATINGIP_KEY] = []
        self.process(agent)
        self.disable_radvd()
        #import ipdb;ipdb.set_trace()
        self.driver.del_namespace(namespace=self.ns_name)
        if self.router_namespace:
            self.router_namespace.delete()

    @log_helpers.log_method_call
    def _internal_network_updated(self, port, subnet_id, prefix, old_prefix,
                                  updated_cidrs):
        interface_name = self.get_internal_device_name(port['id'])
        if prefix != l3_constants.PROVISIONAL_IPV6_PD_PREFIX:
            fixed_ips = port['fixed_ips']
            for fixed_ip in fixed_ips:
                if fixed_ip['subnet_id'] == subnet_id:
                    v6addr = common_utils.ip_to_cidr(fixed_ip['ip_address'],
                                                     fixed_ip.get('prefixlen'))
                    if v6addr not in updated_cidrs:
                        self.driver.add_ipv6_addr(interface_name, v6addr,
                                                  self.ns_name)
        else:
            self.driver.delete_ipv6_addr_with_prefix(interface_name,
                                                     old_prefix,
                                                     self.ns_name)

    @log_helpers.log_method_call
    def _internal_network_added(self, ns_name, network_id, port_id,
                                fixed_ips, mac_address,
                                interface_name):
        LOG.debug("adding internal network: port(%s)", port_id)
        #import ipdb;ipdb.set_trace()
        self.driver.plug_new(network_id, port_id, interface_name, fixed_ips,
                             mac_address, namespace=ns_name)
        ip_cidrs = common_utils.fixed_ip_cidrs(fixed_ips)
        self.driver.init_router_port(
            interface_name, ip_cidrs, namespace=ns_name)
        if interface_name not in consts.FTNT_PORTS:
            for fixed_ip in fixed_ips:
                # samsu: arp maynot needed in this case
                ip_lib.send_ip_addr_adv_notif(ns_name,
                                              interface_name,
                                              fixed_ip['ip_address'],
                                              self.agent_conf)

    @log_helpers.log_method_call
    def internal_network_added(self, port):
        """
        :param port:
        example format:
        {
            u'allowed_address_pairs': [],
            u'extra_dhcp_opts': [],
            u'device_owner': u'network:router_interface_distributed',
            u'binding:profile': {},
            u'binding:vnic_type': u'normal',
            u'fixed_ips': [{
                u'subnet_id': u'6356d82a-9f4d-477c-91ca-25e8f24639a1',
                u'prefixlen': 24,
                u'ip_address': u'192.168.10.254'}],
            u'id': u'02fe7cb3-a812-47e3-817a-1f30dfb79702',
            u'security_groups': [],
            u'binding:vif_details': {},
            u'binding:vif_type': u'distributed',
            u'mac_address': u'90:6c:ac:aa:bb:cc',
            u'status': u'DOWN',
            u'subnets': [{
                u'ipv6_ra_mode': None,
                u'cidr': u'192.168.10.0/24',
                u'gateway_ip': u'192.168.10.254',
                u'id': u'6356d82a-9f4d-477c-91ca-25e8f24639a1',
                u'subnetpool_id': None}],
            u'binding:host_id': u'',
            u'device_id': u'6d0f940c-a779-4761-ac57-e642076ceb0f',
            u'name': u'',
            u'admin_state_up': True,
            u'network_id': u'9cf7617f-e528-49ae-b6bc-10a8d5957d73',
            u'dns_name': u'',
            u'mtu': 0,
            u'tenant_id': u'a1aaba9826b74fb58c7fd3e71a926ff6',
            u'extra_subnets': []
        }
        :return:
        """
        network_id = port['network_id']
        port_id = port['id']
        fixed_ips = port['fixed_ips']
        mac_address = port['mac_address']

        interface_name = self.get_internal_device_name(port_id)

        self._internal_network_added(self.ns_name,
                                     network_id,
                                     port_id,
                                     fixed_ips,
                                     mac_address,
                                     interface_name)

    @log_helpers.log_method_call
    def internal_network_removed(self, port):
        interface_name = self.get_internal_device_name(port['id'])
        LOG.debug("### removing internal network: port(%s) interface(%s)",
                  port, interface_name)
        if interface_name in consts.FTNT_PORTS:
            self.driver.unplug(interface_name, port_id=port['id'],
                               namespace=self.ns_name)
        else:
            if ip_lib.device_exists(interface_name, namespace=self.ns_name):
                self.driver.unplug(interface_name, namespace=self.ns_name)

    @log_helpers.log_method_call
    def _ftnt_namespace(self):
        return consts.FTNT_NS_SPL in self.ns_name

    @log_helpers.log_method_call
    def _get_existing_devices(self):
        """
        check existing route ports
        :return:
        """
        if self._ftnt_namespace():
            return INTERNAL_DEV_PORT
        else:
            ip_wrapper = ip_lib.IPWrapper(namespace=self.ns_name)
            ip_devs = ip_wrapper.get_devices(exclude_loopback=True)
            return [ip_dev.name for ip_dev in ip_devs]

    @staticmethod
    def _get_updated_ports(existing_ports, current_ports):
        updated_ports = dict()
        current_ports_dict = {p['id']: p for p in current_ports}
        for existing_port in existing_ports:
            current_port = current_ports_dict.get(existing_port['id'])
            if current_port:
                if (sorted(existing_port['fixed_ips'],
                           key=common_utils.safe_sort_key) !=
                        sorted(current_port['fixed_ips'],
                               key=common_utils.safe_sort_key)):
                    updated_ports[current_port['id']] = current_port
        return updated_ports

    @staticmethod
    def _port_has_ipv6_subnet(port):
        if 'subnets' in port:
            for subnet in port['subnets']:
                if (netaddr.IPNetwork(subnet['cidr']).version == 6 and
                subnet['cidr'] != l3_constants.PROVISIONAL_IPV6_PD_PREFIX):
                    return True

    @log_helpers.log_method_call
    def enable_radvd(self, internal_ports=None):
        LOG.debug('Spawning radvd daemon in router device: %s', self.router_id)
        if not internal_ports:
            internal_ports = self.internal_ports
        self.radvd.enable(internal_ports)

    @log_helpers.log_method_call
    def disable_radvd(self):
        if self.radvd:
            LOG.debug('Terminating radvd daemon in router device: %s',
                      self.router_id)
            self.radvd.disable()

    @log_helpers.log_method_call
    def internal_network_updated(self, interface_name, ip_cidrs):
        self.driver.init_l3(interface_name, ip_cidrs=ip_cidrs,
            namespace=self.ns_name)

    @log_helpers.log_method_call
    def _process_internal_ports(self, pd):
        existing_port_ids = set(p['id'] for p in self.internal_ports)

        internal_ports = self.router.get(l3_constants.INTERFACE_KEY, [])
        current_port_ids = set(p['id'] for p in internal_ports
                               if p['admin_state_up'])

        new_port_ids = current_port_ids - existing_port_ids
        new_ports = [p for p in internal_ports if p['id'] in new_port_ids]
        old_ports = [p for p in self.internal_ports
                     if p['id'] not in current_port_ids]
        updated_ports = self._get_updated_ports(self.internal_ports,
                                                internal_ports)
        #import ipdb;ipdb.set_trace()
        enable_ra = False
        for p in new_ports:
            self.internal_network_added(p)
            LOG.debug("appending port %s to internal_ports cache", p)
            self.internal_ports.append(p)
            enable_ra = enable_ra or self._port_has_ipv6_subnet(p)
            for subnet in p['subnets']:
                if ipv6_utils.is_ipv6_pd_enabled(subnet):
                    interface_name = self.get_internal_device_name(p['id'])
                    pd.enable_subnet(self.router_id, subnet['id'],
                                     subnet['cidr'],
                                     interface_name, p['mac_address'])

        for p in old_ports:
            self.internal_network_removed(p)
            LOG.debug("removing port %s from internal_ports cache", p)
            self.internal_ports.remove(p)
            enable_ra = enable_ra or self._port_has_ipv6_subnet(p)
            for subnet in p['subnets']:
                if ipv6_utils.is_ipv6_pd_enabled(subnet):
                    pd.disable_subnet(self.router_id, subnet['id'])

        updated_cidrs = []
        if updated_ports:
            for index, p in enumerate(internal_ports):
                if not updated_ports.get(p['id']):
                    continue
                self.internal_ports[index] = updated_ports[p['id']]
                interface_name = self.get_internal_device_name(p['id'])
                ip_cidrs = common_utils.fixed_ip_cidrs(p['fixed_ips'])
                LOG.debug("updating internal network for port %s", p)
                updated_cidrs += ip_cidrs
                self.internal_network_updated(interface_name, ip_cidrs)
                enable_ra = enable_ra or self._port_has_ipv6_subnet(p)

        # Check if there is any pd prefix update
        for p in internal_ports:
            if p['id'] in (set(current_port_ids) & set(existing_port_ids)):
                for subnet in p.get('subnets', []):
                    if ipv6_utils.is_ipv6_pd_enabled(subnet):
                        old_prefix = pd.update_subnet(self.router_id,
                                                      subnet['id'],
                                                      subnet['cidr'])
                        if old_prefix:
                            self._internal_network_updated(p, subnet['id'],
                                                           subnet['cidr'],
                                                           old_prefix,
                                                           updated_cidrs)
                            enable_ra = True

        # Enable RA
        if enable_ra:
            self.enable_radvd(internal_ports)
        existing_devices = self._get_existing_devices()
        if existing_devices in consts.FTNT_PORTS:
            current_internal_pids = self.driver.get_associated_pid(
                existing_devices)
            current_internal_pids = set(current_internal_pids) if isinstance(
                current_internal_pids, dict) else set([current_internal_pids])
            stale_devs = current_internal_pids - set(current_port_ids)
            for stale_dev in stale_devs:
                LOG.debug('Deleting stale internal router device: %s',
                          stale_dev)
                #if pd:
                    #TODO: samsu: may add fgt related data deletion here
                    #pd.remove_stale_ri_ifname(self.router_id, stale_dev)
                self.driver.unplug(existing_devices, stale_dev,
                                   namespace=self.ns_name)
        else:
            current_internal_devs = set(n for n in existing_devices
                                        if n.startswith(INTERNAL_DEV_PREFIX))
            current_port_devs = set(self.get_internal_device_name(port_id)
                                    for port_id in current_port_ids)
            stale_devs = current_internal_devs - current_port_devs
            for stale_dev in stale_devs:
                LOG.debug('Deleting stale internal router device: %s',
                          stale_dev)
                if pd:
                    pd.remove_stale_ri_ifname(self.router_id, stale_dev)
                    self.driver.unplug(stale_dev,
                                       namespace=self.ns_name,
                                       prefix=INTERNAL_DEV_PREFIX)

    @log_helpers.log_method_call
    def _list_floating_ip_cidrs(self):
        # Compute a list of addresses this router is supposed to have.
        # This avoids unnecessarily removing those addresses and
        # causing a momentarily network outage.
        floating_ips = self.get_floating_ips()
        return [common_utils.ip_to_cidr(ip['floating_ip_address'])
                for ip in floating_ips]

    @log_helpers.log_method_call
    def _plug_external_gateway(self, ex_gw_port, interface_name, ns_name):
        self.driver.plug(ex_gw_port['network_id'],
                         ex_gw_port['id'],
                         interface_name,
                         ex_gw_port['mac_address'],
                         bridge=self.agent_conf.external_network_bridge,
                         namespace=ns_name,
                         prefix=EXTERNAL_DEV_PREFIX)

    @log_helpers.log_method_call
    def _get_external_gw_ips(self, ex_gw_port):
        gateway_ips = []
        if 'subnets' in ex_gw_port:
            gateway_ips = [subnet['gateway_ip']
                           for subnet in ex_gw_port['subnets']
                           if subnet['gateway_ip']]
        if self.use_ipv6 and not self.is_v6_gateway_set(gateway_ips):
            # No IPv6 gateway is available, but IPv6 is enabled.
            if self.agent_conf.ipv6_gateway:
                # ipv6_gateway configured, use address for default route.
                gateway_ips.append(self.agent_conf.ipv6_gateway)
        return gateway_ips

    @log_helpers.log_method_call
    def _external_gateway_added(self, ex_gw_port, interface_name,
                                ns_name, preserve_ips):
        LOG.debug("External gateway added: port(%s), interface(%s), ns(%s)",
                  ex_gw_port, interface_name, ns_name)
        self._plug_external_gateway(ex_gw_port, interface_name, ns_name)

        # Build up the interface and gateway IP addresses that
        # will be added to the interface.
        ip_cidrs = common_utils.fixed_ip_cidrs(ex_gw_port['fixed_ips'])

        gateway_ips = self._get_external_gw_ips(ex_gw_port)
        enable_ra_on_gw = False
        if self.use_ipv6 and not self.is_v6_gateway_set(gateway_ips):
            # There is no IPv6 gw_ip, use RouterAdvt for default route.
            enable_ra_on_gw = True

        self.driver.init_router_port(
            interface_name,
            ip_cidrs,
            namespace=ns_name,
            gateway_ips=gateway_ips,
            extra_subnets=ex_gw_port.get('extra_subnets', []),
            preserve_ips=preserve_ips,
            enable_ra_on_gw=enable_ra_on_gw,
            clean_connections=True)

        if interface_name not in consts.FTNT_PORTS:
            for fixed_ip in ex_gw_port['fixed_ips']:
                ip_lib.send_ip_addr_adv_notif(ns_name,
                                              interface_name,
                                              fixed_ip['ip_address'],
                                              self.agent_conf)

    @log_helpers.log_method_call
    def is_v6_gateway_set(self, gateway_ips):
        """Check to see if list of gateway_ips has an IPv6 gateway.
        """
        # Note - don't require a try-except here as all
        # gateway_ips elements are valid addresses, if they exist.
        return any(netaddr.IPAddress(gw_ip).version == 6
                   for gw_ip in gateway_ips)

    @log_helpers.log_method_call
    def external_gateway_added(self, ex_gw_port, interface_name):
        preserve_ips = self._list_floating_ip_cidrs()
        self._external_gateway_added(
            ex_gw_port, interface_name, self.ns_name, preserve_ips)

    @log_helpers.log_method_call
    def external_gateway_updated(self, ex_gw_port, interface_name):
        preserve_ips = self._list_floating_ip_cidrs()
        self._external_gateway_added(
            ex_gw_port, interface_name, self.ns_name, preserve_ips)

    @log_helpers.log_method_call
    def external_gateway_removed(self, ex_gw_port, interface_name):
        LOG.debug("External gateway removed: port(%s), interface(%s)",
                  ex_gw_port, interface_name)
        device = ip_lib.IPDevice(interface_name, namespace=self.ns_name)
        for ip_addr in ex_gw_port['fixed_ips']:
            self.remove_external_gateway_ip(device,
                                            common_utils.ip_to_cidr(
                                                ip_addr['ip_address'],
                                                ip_addr['prefixlen']))
        self.driver.unplug(interface_name,
                           bridge=self.agent_conf.external_network_bridge,
                           namespace=self.ns_name,
                           prefix=EXTERNAL_DEV_PREFIX)

    @staticmethod
    def _gateway_ports_equal(port1, port2):
        return port1 == port2

    @log_helpers.log_method_call
    def _process_external_gateway(self, ex_gw_port, pd):
        # TODO(Carl) Refactor to clarify roles of ex_gw_port vs self.ex_gw_port
        ex_gw_port_id = (ex_gw_port and ex_gw_port['id'] or
                         self.ex_gw_port and self.ex_gw_port['id'])

        interface_name = None
        if ex_gw_port_id:
            interface_name = self.get_external_device_name(ex_gw_port_id)
        if interface_name == consts.EXTERNAL_DEV_PORT:
            ## TODO: not handle external gateway yet
            return
        if ex_gw_port:
            if not self.ex_gw_port:
                self.external_gateway_added(ex_gw_port, interface_name)
                pd.add_gw_interface(self.router['id'], interface_name)
            elif not self._gateway_ports_equal(ex_gw_port, self.ex_gw_port):
                self.external_gateway_updated(ex_gw_port, interface_name)
        elif not ex_gw_port and self.ex_gw_port:
            self.external_gateway_removed(self.ex_gw_port, interface_name)
            pd.remove_gw_interface(self.router['id'])

        existing_devices = self._get_existing_devices()
        stale_devs = [dev for dev in existing_devices
                      if dev.startswith(EXTERNAL_DEV_PREFIX)
                      and dev != interface_name]
        for stale_dev in stale_devs:
            LOG.debug('Deleting stale external router device: %s', stale_dev)
            pd.remove_gw_interface(self.router['id'])
            self.driver.unplug(stale_dev,
                               bridge=self.agent_conf.external_network_bridge,
                               namespace=self.ns_name,
                               prefix=EXTERNAL_DEV_PREFIX)

        # Process SNAT rules for external gateway
        gw_port = self._router.get('gw_port')
        self._handle_router_snat_rules(gw_port, interface_name)

    @log_helpers.log_method_call
    def external_gateway_nat_rules(self, ex_gw_ip, interface_name):
        dont_snat_traffic_to_internal_ports_if_not_to_floating_ip = (
            'POSTROUTING', '! -i %(interface_name)s '
                           '! -o %(interface_name)s -m conntrack ! '
                           '--ctstate DNAT -j ACCEPT' %
                           {'interface_name': interface_name})

        snat_normal_external_traffic = (
            'snat', '-o %s -j SNAT --to-source %s' %
                    (interface_name, ex_gw_ip))

        # Makes replies come back through the router to reverse DNAT
        ext_in_mark = self.agent_conf.external_ingress_mark
        snat_internal_traffic_to_floating_ip = (
            'snat', '-m mark ! --mark %s/%s '
                    '-m conntrack --ctstate DNAT '
                    '-j SNAT --to-source %s'
                    % (ext_in_mark, l3_constants.ROUTER_MARK_MASK, ex_gw_ip))

        return [dont_snat_traffic_to_internal_ports_if_not_to_floating_ip,
                snat_normal_external_traffic,
                snat_internal_traffic_to_floating_ip]

    @log_helpers.log_method_call
    def external_gateway_mangle_rules(self, interface_name):
        mark = self.agent_conf.external_ingress_mark
        mark_packets_entering_external_gateway_port = (
            'mark', '-i %s -j MARK --set-xmark %s/%s' %
                    (interface_name, mark, l3_constants.ROUTER_MARK_MASK))
        return [mark_packets_entering_external_gateway_port]

    @log_helpers.log_method_call
    def _empty_snat_chains(self, iptables_manager):
        iptables_manager.ipv4['nat'].empty_chain('POSTROUTING')
        iptables_manager.ipv4['nat'].empty_chain('snat')
        iptables_manager.ipv4['mangle'].empty_chain('mark')

    @log_helpers.log_method_call
    def _add_snat_rules(self, ex_gw_port, iptables_manager,
                        interface_name):
        if self._snat_enabled and ex_gw_port:
            # ex_gw_port should not be None in this case
            # NAT rules are added only if ex_gw_port has an IPv4 address
            for ip_addr in ex_gw_port['fixed_ips']:
                ex_gw_ip = ip_addr['ip_address']
                if netaddr.IPAddress(ex_gw_ip).version == 4:
                    rules = self.external_gateway_nat_rules(ex_gw_ip,
                                                            interface_name)
                    for rule in rules:
                        iptables_manager.ipv4['nat'].add_rule(*rule)
                    rules = self.external_gateway_mangle_rules(interface_name)
                    for rule in rules:
                        iptables_manager.ipv4['mangle'].add_rule(*rule)
                    break

    @log_helpers.log_method_call
    def _handle_router_snat_rules(self, ex_gw_port, interface_name):
        self._empty_snat_chains(self.iptables_manager)

        self.iptables_manager.ipv4['nat'].add_rule('snat', '-j $float-snat')

        self._add_snat_rules(ex_gw_port,
                             self.iptables_manager,
                             interface_name)

    @log_helpers.log_method_call
    def process_external(self, agent):
        fip_statuses = {}
        existing_floating_ips = self.floating_ips
        ## samsu: not handle yet, return to continue
        if True:
            return
        try:
            with self.iptables_manager.defer_apply():
                ex_gw_port = self.get_ex_gw_port()
                self._process_external_gateway(ex_gw_port, agent.pd)
                if not ex_gw_port:
                    return

                # Process SNAT/DNAT rules and addresses for floating IPs
                self.process_snat_dnat_for_fip()

            # Once NAT rules for floating IPs are safely in place
            # configure their addresses on the external gateway port
            interface_name = self.get_external_device_interface_name(
                ex_gw_port)
            fip_statuses = self.configure_fip_addresses(interface_name)

        except (n_exc.FloatingIpSetupException,
                n_exc.IpTablesApplyException) as e:
                # All floating IPs must be put in error state
                LOG.exception(e)
                fip_statuses = self.put_fips_in_error_state()
        finally:
            agent.update_fip_statuses(
                self, existing_floating_ips, fip_statuses)

    @common_utils.exception_logger()
    def process(self, agent):
        """Process updates to this router

        This method is the point where the agent requests that updates be
        applied to this router.

        :param agent: Passes the agent in order to send RPC messages.
        """
        LOG.debug("process router updates")
        self._process_internal_ports(agent.pd)
        ## samsu: todo later
        #agent.pd.sync_router(self.router['id'])
        self.process_external(agent)
        # Process static routes for router
        self.routes_updated()

        # Update ex_gw_port and enable_snat on the router info cache
        self.ex_gw_port = self.get_ex_gw_port()
        # TODO(Carl) FWaaS uses this.  Why is it set after processing is done?
        self.enable_snat = self.router.get('enable_snat')

redpajama_set_name: RedPajamaGithub


text:
A trojan horse on dutch grounds
The Eighty Years' War resulted from the revolt of the Seventeen United Provinces of the Netherlands against the political and religious supremacy of Philip II of Spain. The War started in 1566 with an iconoclastic fury known as 'Beeldenstorm'. During the Beeldenstorm, Calvinists in Europe destroyed icons and other religious outings in Catholic churches.
Despite it being interesting, I won't go into the details of the war, but pick out a fascinating event that happened in 1590.
In February 1590, a nobleman named Charles de Heraugiere was ordered by Maurice of Nassau to explore the conditions of Breda, and to discover possible weaknesses. With help of a bargeman who was loyal to the Dutch by trade, he entered the city in his barge: hidden between peat for winter along with a small group of soldiers. To his surprise, no one checked the barge upon entering town. Heraugiere (who apparently knew his classics), recognized the Trojan Horse style trick was the ideal opportunity for smuggling soldiers beyond the city walls.
Reporting back to Maurice, it was decided to station 1700 Dutch and English soldiers near Breda. Despite difficulties caused by wintry conditions, De Heraugiere and a small group of soldiers managed to enter the city hidden under piles of peat at night, March 3, 1590. The following day, they left their hiding places at dawn and took the guards by surprise and gained control over the city very rapidly. By the time Maurice and his troops arrived, the city was ready to surrender.
The capture of Breda marked a turning point in the War. After years of defensive strategy, the Dutch and English forces had at last achieved an offensive success. Maurice used Breda as an operational base and conquered other cities quickly afterwards.
And the bargemen? They were given subsidy for life :).


Screenwriter Joe Nienalt is launching a campaign to fight heart disease & stroke by raising money for the American Heart Association Heart Walk, and has once again partnered with Daniel Vang, a manager at Benderspink – one of Hollywood's top production and management companies. This partnership will incentivize aspiring screenwriters to donate to the campaign and get their screenplays read by Daniel Vang and possibly receive representation from Benderspink. Last year they raised close to $45,000. This year's goal is $50K.
In exchange for your donation, Daniel Vang will consider you for representation.
-If you donate $25, Daniel will read the first ten pages of your script or pilot.
-If you donate $50, Daniel will read the first 50 pages (if it's great, he won't want to put it down after 10 or 50 pages).
-If you donate $100, Daniel will read your entire script or pilot (good or bad).
I first heard about this from listening to the Scriptnotes Podcast by screenwriters John August (IMDB) and Craig Mazin (IMDB). You can hear the episode here (it's mentioned towards the end of the podcast at around 44:45), download it: AAC, MP3, iTunes or read the transcript here.
Please note that your donation does not guarantee you'll get notes or feedback on your screenplay. From what I read, you'll likely get a rejection response – but you never know. You should go into this like you play the lottery, but you'll be donating to a good cause. Karma points may be all you'll get out of it, but this is a tough business and this is a small window of opportunity that in its worst case scenario will contribute to possibly saving lives.
Go to the official donation page for all the information: Joe Nienalt's Personal Page for Heart Walk 2013-2014. The deadline to make donations is Friday, October 4th, 2013.


Reptile mini is a chair that begins at a seat and back, to be used on a swivel base at a desk, by adding arms and a tubular steel leg frame it progresses the chair into one that can be used for meeting, or dining situations. According to David Fox, the designer of Reptile Mini, this family covers meeting area`s / hotel rooms /even some domestic applications, and synergizes with the changing workplace but opens up new areas of specification. The chair is a combination of the design and the ergonomics to offer a beautiful, yet comfortable family for products. These chairs are environment specific, and the user would feel comfortable with them in a hotel, a corporate environment, or even in the home.


Juventus coach Massimiliano Allegri was visibly disappointed after losing the Italian Super Cup, in Doha, against Napoli.
The Bianconeri were twice in the lead and had three chances to win the cup in the penalty shoot-out but failed to bring home the trophy, much to the disappointment of their manager.
"It was a beautiful game, which we failed to win despite having three 'match points' in the penalty shoot-out," Allegri told RaiSport.
"It's a shame, with the exception of the first part of the second half we played a very good game.
"After the 1-1 we were again on the attack but it wasn't easy because Napoli is a very technical side."
"We were under pressure, we needed cover," Allegri said.


text:
NRC Assam: Detention Camps cut food ration for detainees of over three years CJP helps those in detention camps for over 3 years to secure release even as a hostile administration denies them fair nutrition
13, Feb 2020 | CJP Team
People who have been in Assam's detention camps for over three years were given some relief in May 2019 when the Supreme Court directed that those who have spent more than three years in captivity be set free subject to certain conditions which included personal bond of Rs 1,00,000. This was during the course of hearing a petition on the state of detention camps in Assam. At the time of this judgement there were a total of 1,136 people in six detention camps in Assam, among them were 376 people have been in captivity for three years.
It has been nine months since this judgment was passed, but since then the number of people who have been in captivity has gone up to 500. It is a matter of great concern that more than half have not been released due to the absence of competent representation and most importantly due to the questionable responses from the Assam state Home department, Government of Assam. The Home department has been rejecting outright, or keeping pending, a significant number of these bail applications.
Now that the final NRC has been published, and 19,06,657 people have been excluded from the final list, CJP's campaign has become even more focused. Our objective now, is to help these excluded people defend their citizenship before Foreigners' Tribunals. For this we have already started conducting a series of workshops to train paralegals to assist people at FTs. We will also be publishing a multi-media training manual containing simplified aspects of legal procedure, evidentiary rules, and judicial precedents that will ensure the appeals filed against the NRC exclusions in the FTs are comprehensive and sound, both in fact and in law. This will assist our paralegals, lawyers and the wider community in Assam to negotiate this tortuous process. For this we need your continued support. Please donate now to help us help Assam.
This is happening on the legal front. Along with this there have been reports of various superintendents of jails who are reportedly pressurizing family members of those in captivity for over three years to take prompt action for them to be released.
CJP's volunteer motivator from lower Assam, Nandu Ghosh reported that the conditions of the detainees in these detention camps are pathetic. The jail superintendents have said to him that, as per the law, these detainees must be released and hence the government has made (unlawful) cuts to their food expenditure. On humanitarian grounds they (jail superintendants are serving them half of the quantity of food they were originally getting). Family members are very concerned. Many family members often fail to provide representation due to the expensive nature of the process. Some cases have been rejected due to minor techinal reasons.
The crucial question is, if the Home department who does not allow these detainees to be released –on technical grounds– how can they, at the same time, refuse them minimum food? CJP's Team Assam is trying to help family members of detainees so that they can be released at the earliest, but there is a problem of acute poverty, illiteracy and lack of knowledge is a very big problem. Many people do not understand the complexity of the process and what procedures to follow. Due to the lack of money, they have to work for their livelihood having no time for this legal process.
Team CJP in Assam has intensified their work on all fronts. The process of data collection of all those excluded from the NRC is ongoing. CJP Volunteer Motivator for Nagaon, Morigaon and Karbi Anglong District Faruk Ahmed, CJP Volunteer Motivators for Darrang District, Chirang District, Bongaigaon District, Barpeta District, Kamrup District, Goalpara District Joynal Abedin, Abul kalam Azad, Pranay Tarafdar, Majidul Islam, Anish Ahmed Bhuyan and Rashminara Begum are working day and night to collect data of all those who have been excluded. So that CJP's national legal team can agitate the matter in the Supreme Court of India.
NRC anxiety allegedly leads to one more suicide in Assam
Mere absence after filing documents not justification for FT order against proceedee: Gauhati HC
Person with two names confuses NRC officials
#assam #citizenship-assam #cjp-dc-assam #cjpinaction #cjp-nrc-assam #national-register-of-citizens #national-register-of-citizens-assam #nrc
CJP's criminal complaint against Shankar Gaikar's hate speech at Shaurya Sanchalan
On January 20, Citizens for Justice and Peace complained to


Our little Owls are still around, we didn't see much of them last summer, but we have realised that the tree they nested in has fallen over, In September 2015 I took delivery of two Little Owl nest boxes and within days of putting them in their place they were visited by an owl. Another first, in 2015 we had a pair of Swallows nest in the Hostel Courtyard and they returned this last year, we really are hoping they will return you may notice our new logo features Swallows. Remember the old saying "One Swallow doesn't make a summer"?


text:
The Full Guide To 4K Resolution and UHD Displays
May 5, 2020 8:45:00 AM
TV displays are made of pixels, creating the resolution of the image we see today in the form of tiny dots coming together to create moving pictures. There are many different types of resolutions, and most of them are the result of advanced technology over the last few decades with improved image quality.
Today, there are 4K and UHD resolution TVs everywhere you look, which is a big difference compared to the main predecessor of 1080p resolution. While 8K TVs are also being sold today, 4K and UHD continue to be the most used technology.
Choosing the Right Resolution
Your choice of resolution is vital to your TV experience. It's the difference between having an incredible time watching a game with crystal-clear images, to not being sure what you're looking at in confusion. It's not fun looking at a low-resolution TV.
4K and UHD displays are great options and are the most popular in the market, offering some of the best deals around. But what's the difference? You'll find that these displays have more in common than you think and understanding the slightest differences can determine the quality of your experience.
Not sure what TV to install? Here's your go-to-guide for understanding 4K and UHD!
What to Look for in a Good TV
If you're researching 4K vs. UHD, you're in the right place. Both are good TV choices and can add significant value to viewers.
What are some things to consider when looking for a good TV?
1. A price range you're comfortable with
How many TVs do you need? What's your budget? Find out how much you're willing to pay for quality and features.
2. Strong resolution
The most important thing about a TV is its resolution. Do you want to see tiny dots or pixels when watching from far away? Does the picture look crisp or does it run together? Check your resolution to make sure you're getting the right hardware.
3. Great color and image
Every TV has its unique final image. Make sure the color and appearance of your TV match your taste. Does it make you excited or unsure? Something as simple as a gut feeling can go a long way.
4. The size of the TV
It's not often you hear someone claim they wish they'd gotten a smaller TV. Try not to fall short on this step and find the size that works best for your space.
5. Trusted brand
Is the maker of your TV someone you can trust? What does their warranty cover? Do they have a reputation for great products?
What You Need to Know About 4K Resolution
4K resolution TVs are one of the latest forms of technology for displays. 4K resolution at the store is about 3840 x 2160 pixels. However, true 4K means that the horizontal pixels reach about four thousand. All these pixels form a powerful image.
4K is a big step from previous technology like full HD 1080p with 1920x1080 resolution. This gives people about four times better quality!
At its release, just like most new technology, there weren't many options to see things in 4K. Today, it's everywhere. Netflix, Prime Video, and other streaming services provide 4K viewing that enhances your experience through great images and videos.
Remember when Apple came out with a retina display for their phones? They claimed that if someone looked at their display at a normal angle, individual pixels could not be seen. 4K is the same way with their screens. With so many pixels, image clarity is second to none.
True or "real" 4K is cinematic, meaning it's designed for commercial businesses to display the best quality for their viewers.
What You Need to Know About UHD Resolution
4K and UHD are very similar. In fact, the terms are used interchangeably. The way to identify UHD is by its pixels, 3840x2160. When a store advertises 4K with this resolution, it's technically UHD.
The benefits of UHD is its affordable cost. Today, you can buy a UHD resolution TV for only a few hundred dollars. While this is affordable, you'll sacrifice the potential for quality and a clear picture for your customers.
So, how do you know if you're buying a 4K or UHD TV? Check the resolution on the box. While a brand might not give you the actual name of the resolution, they'll always include the pixels. If it's below 4,000 for the horizontal pixels, then it's not 4K, regardless of what the box says. At 3840x2160, you're looking at UHD.
4K Resolution vs. UHD Resolution
While both resolutions can offer a great TV experience, there is one clear identifier.
True 4K resolution means that the horizontal pixels reach four thousand, which is referred to as "cinematic" 4K. When shopping for a 4K and comparing prices, consider that the real 4K quality makes a difference even though cheaper TVs might have the same name.
The UHD resolution is slightly below 4K at 3840x2160. While it's almost the same, there can be a difference in lower picture quality.
The next time you're searching for a TV, rather than looking at "4K" and other names, check out their resolution to get a better idea of the quality you're getting.
Choosing Between 4K and UHD
When it's 4K vs. UHD, which should you pick? It depends. UHD resolution is a great option for a secondary TV or an affordable alternative. Do you need something in a smaller room? Or a TV in a place where there's high foot traffic? UHD be the right choice for you.
If you want the best quality between the two of them, go with 4K. You can have confidence that people can enjoy a clear and crisp resolution. If you're showing something with a lot of information and text, it's even more important to pick a better resolution.
To help you understand some of the commercial capabilities, ask yourself these questions:
Can you rotate your home TV 90 degrees to a portrait orientation?
Do you have a loop-out that allows you to pass the same image along to other displays to mirror the video content?
Does your TV have a spot to hide a PC or other media player?
Can your TV be scheduled to automatically turn on and off at specified hours?
Does your TV have a built-in amplifier so you can simply wire up a set of speakers?
Entertain Customers in High-Resolution Today
With all the possibilities of 4K and UHD commercial displays, it can be challenging to know where to begin. To unlock the true potential, you need someone to help you understand 4K and UHD resolutions, how displays work, and how to create an integrated system to meet the goals of your physical space.
In business for more than 30 years, Promotion Technology Group has the experience in the cutting-edge field of commercial displays to bring digital to life for your retail environment.
Ready to find the best display solutions to fit your needs? We'll work with you to sort out all the details and help with installation, training, maintenance, and upgrades. When you're ready to join the digital revolution, we're here to help.
Topics: Video
Written by Deborah Zupancic
Deb is the Executive Director at Promotion Technology Group. She drives and leads internal teams, ensuring a productive, consistent, and cohesive workplace. She believes in taking care of her team members both professionally and personally and is an advocate for training and development and helping her team reach their full potential. Deep relationships, strong company culture and process excellence are key to the success of any organization, and Deb strives to integrate these cornerstones in every part of the workplace. She is responsible for overseeing day-to-day activities, improving performance, developing organizational culture, supervising heads of departments, reporting on revenue, and directing the overall organizational strategy of PTG.
[fa icon="linkedin-square"]
Coronavirus: Returning to Work Soon? Read This Before Powering Up Your AV Equipment.
5 Things to Consider when Repurposing Content for DOOH
Interactives (17)


text:
Grant number like: PG-50059-07
PG-50059-07
Rocky Mountain College (Billings, MT 59102-1796)
William L. Kehler (Project Director: May 2006 to July 2008)
Implementing Preservation Assessment Recommendations
The purchase of storage units and supplies for manuscripts, records, photographs, and other materials that document the settlement of and education in central and eastern Montana during the late 19th and early 20th centuries.
The goals of the Heritage Archives of Rocky Mountain College (RMC) in this implementation project are to preserve its collections consistent with accepted archival practices and to increase the accessibility of its holdings to the community. In pursuance of these goals, RMC plans to purchase eleven shelving units, a storage cabinet, and supplies for proper handling and storage of a wide variety of materials. A grant from the National Endowment for the Humanities in the amount of $4,976 will ensure the completion of these activities. The new shelving, storage cabinet, and supplies will augment our already full to capacity units and will allow for materials currently kept in cardboard boxes and plastic containers to be properly assessed, handled, and stored, thus increasing their life and their accessibility to the community. Patrons include members of the campus community and historians, theologians, archivists, writers, artists, educators, and hobbyists.
Archival Management and Conservation
Preservation Assistance Grants
Preservation and Access


WILL DELIVER CAR TO YOU IN THE SURREY AREA.
Delta Car and Truck Rentals is now servicing the Surrey Area. Our reputation as a friendly and efficient car rental company has allowed us to cultivate a large and loyal customer base. We are providing mobile car rental service in Surrey—we will deliver a rental car right to you! We also offer free pick up and drop off service to our office.


A lot about the economy can be predicted by human behavior. Demographics predicts behavior. Yet few economists look at this. They look to government as the driver for the economy. In truth, they're missing one of the biggest sources of economic activity.


text:
Effects of metformin use in pregnant patients with polycystic ovary syndrome
Kashif Khan, Pratap Kumar
Department of Obstetrics and Gynaecology, Kasturba Medical College, Manipal
Use of metformin throughout pregnancy in women with polycystic ovary syndrome (PCOS) has shown to reduce the rates of early pregnancy loss, preterm labor, and prevention of fetal growth restriction. Metformin has been shown to have encouraging effects on several metabolic aspects of polycystic ovarian syndrome, such as insulin sensitivity, plasma glucose concentration and lipid profile and since women with PCOS are more likely than healthy women to suffer from pregnancy-related problems like early pregnancy loss, gestational diabetes mellitus and hypertensive states in pregnancy, the use of metformin therapy in these patients throughout pregnancy may have beneficial effects on early pregnancy loss and development of gestational diabetes.
Journal of Human Reproductive Sciences
https://doi.org/10.4103/0974-1208.101012
Premature Obstetric Labor
Pregnancy Rate
Khan, K., & Kumar, P. (2012). Effects of metformin use in pregnant patients with polycystic ovary syndrome. Journal of Human Reproductive Sciences, 5(2), 166-169. https://doi.org/10.4103/0974-1208.101012
Khan, Kashif ; Kumar, Pratap. / Effects of metformin use in pregnant patients with polycystic ovary syndrome. In: Journal of Human Reproductive Sciences. 2012 ; Vol. 5, No. 2. pp. 166-169.
@article{961b52b586f44fe1892f9a0d4bbcae79,
title = "Effects of metformin use in pregnant patients with polycystic ovary syndrome",
abstract = "Use of metformin throughout pregnancy in women with polycystic ovary syndrome (PCOS) has shown to reduce the rates of early pregnancy loss, preterm labor, and prevention of fetal growth restriction. Metformin has been shown to have encouraging effects on several metabolic aspects of polycystic ovarian syndrome, such as insulin sensitivity, plasma glucose concentration and lipid profile and since women with PCOS are more likely than healthy women to suffer from pregnancy-related problems like early pregnancy loss, gestational diabetes mellitus and hypertensive states in pregnancy, the use of metformin therapy in these patients throughout pregnancy may have beneficial effects on early pregnancy loss and development of gestational diabetes.",
author = "Kashif Khan and Pratap Kumar",
doi = "10.4103/0974-1208.101012",
journal = "Journal of Human Reproductive Sciences",
publisher = "Medknow Publications and Media Pvt. Ltd",
Khan, K & Kumar, P 2012, 'Effects of metformin use in pregnant patients with polycystic ovary syndrome', Journal of Human Reproductive Sciences, vol. 5, no. 2, pp. 166-169. https://doi.org/10.4103/0974-1208.101012
Effects of metformin use in pregnant patients with polycystic ovary syndrome. / Khan, Kashif; Kumar, Pratap.
In: Journal of Human Reproductive Sciences, Vol. 5, No. 2, 01.05.2012, p. 166-169.
T1 - Effects of metformin use in pregnant patients with polycystic ovary syndrome
AU - Khan, Kashif
AU - Kumar, Pratap
N2 - Use of metformin throughout pregnancy in women with polycystic ovary syndrome (PCOS) has shown to reduce the rates of early pregnancy loss, preterm labor, and prevention of fetal growth restriction. Metformin has been shown to have encouraging effects on several metabolic aspects of polycystic ovarian syndrome, such as insulin sensitivity, plasma glucose concentration and lipid profile and since women with PCOS are more likely than healthy women to suffer from pregnancy-related problems like early pregnancy loss, gestational diabetes mellitus and hypertensive states in pregnancy, the use of metformin therapy in these patients throughout pregnancy may have beneficial effects on early pregnancy loss and development of gestational diabetes.
AB - Use of metformin throughout pregnancy in women with polycystic ovary syndrome (PCOS) has shown to reduce the rates of early pregnancy loss, preterm labor, and prevention of fetal growth restriction. Metformin has been shown to have encouraging effects on several metabolic aspects of polycystic ovarian syndrome, such as insulin sensitivity, plasma glucose concentration and lipid profile and since women with PCOS are more likely than healthy women to suffer from pregnancy-related problems like early pregnancy loss, gestational diabetes mellitus and hypertensive states in pregnancy, the use of metformin therapy in these patients throughout pregnancy may have beneficial effects on early pregnancy loss and development of gestational diabetes.
U2 - 10.4103/0974-1208.101012
DO - 10.4103/0974-1208.101012
JO - Journal of Human Reproductive Sciences
JF - Journal of Human Reproductive Sciences
Khan K, Kumar P. Effects of metformin use in pregnant patients with polycystic ovary syndrome. Journal of Human Reproductive Sciences. 2012 May 1;5(2):166-169. https://doi.org/10.4103/0974-1208.101012


text:
Fredric Jameson Bookshelf
A collection of literary critic, philosopher and political theorist Fredric Jameson's best books.
Until January 4, 2021 at 11:59PM EST we have 40% off ALL our books! See our End of Year Highlights, and our Gift Guide: packed full of recommendations.
The Benjamin Files offers a comprehensive new reading of all of Benjamin's major works and a great number of his shorter book reviews, notes and letters. Benjamin's corpus is an anticipation of contemporary theory in the priority it gives language and representation over philosophical or conceptual unity; and its political motivations are clarified by attention to the omnipresence of history throughout his writing, from the shortest articles to the most ambitious projects.
High modernism is now as far from us as antiquity was for the Renaissance. Such is the premise of Fredric Jameson's major new work in which modernist works, this time in painting and music, are pitted against late-modernist ones (in film) as well as a variety of postmodern experiments: all of which attempt, in their different ways, to invent new forms to grasp a specific social totality. Throughout these historical periods, argues Jameson, the question of narrative persists through its multiple formal changes and metamorphoses.
This major new work by Fredric Jameson is not a book about "method," but it does propose a dialectic capable of holding together in one breath the heterogeneities that reflect our biological individualities, our submersion in collective history and class struggle, and our alienation to a disembodied new world of information and abstraction.
Raymond Chandler, a dazzling stylist and portrayer of American life, holds a unique place in literary history, straddling both pulp fiction and modernism. With The Big Sleep, published in 1939, he left an indelible imprint on the detective novel. Fredric Jameson offers an interpretation of Chandler's work that reconstructs both the context in which it was written and the social world or totality it projects.
Fredric Jameson's pathbreaking essay "An American Utopia" radically questions standard leftist notions of what constitutes an emancipated society. Advocated here are—among other things—universal conscription, the full acknowledgment of envy and resentment as a fundamental challenge to any communist society, and the acceptance that the division between work and leisure cannot be overcome.
An intense and lively debate on literature and art between thinkers who became some of the great figures of twentieth-century philosophy and literature
In this major new study, the philosopher and cultural theorist Fredric Jameson offers a new reading of Hegel's foundational text Phenomenology of Spirit.
The Antinomies of Realism is a history of the nineteenth-century realist novel and its legacy told without a glimmer of nostalgia for artistic achievements that the movement of history makes it impossible to recreate.
The Modernist Papers is a tour de force of analysis and criticism, in which Jameson brings his dynamic and acute thought to bear on the modernist literature of the nineteenth and twentieth centuries. Jameson discusses modernist poetics, including intensive discussions of the work of Baudelaire, Rimbaud, Mallarmé, Wallace Stevens, Joyce, Proust, and Thomas Mann.
The concepts of modernity and modernism are amongst the most controversial and vigorously debated in contemporary philosophy and cultural theory. In this intervention, Fredric Jameson—perhaps the most influential and persuasive theorist of postmodernity—excavates and explores these notions in a fresh and illuminating manner.
In his most wide-ranging and accessible work, Frederic Jameson argues that postmodernism is the cultural response to the latest systemic change in world capitalism. He seeks here to crystallize a definition of a term which has taken on so many meanings that it has virtually lost all historical significance.
After half a century exploring dialectical thought, renowned cultural critic Fredric Jameson presents a comprehensive study of a misunderstood yet vital strain in Western philosophy. The dialectic, the concept of the evolution of an idea through conflicts arising from its inherent contradictions, transformed two centuries of Western philosophy.
In an age of globalization characterized by the dizzying technologies of the First World, and the social disintegration of the Third, is the concept of utopia still meaningful? Archaeologies of the Future, Jameson's most substantial work since Postmodernism, Or, the Cultural Logic of Late Capitalism, investigates the development of this form since Thomas More, and interrogates the functions of utopian thinking in a post-Communist age.
In the name of an assault on "totalization" and "identity," a number of contemporary theorists have been busily washing Marxism's dialectical and utopian projects down the plug-hole of postmodernism and "post-politics." A case in point is recent interpretation of one of the greatest twentieth-century philosophers, Theodor Adorno. In this powerful book, Fredric Jameson proposes a radically different reading of Adorno's work, especially of his major works on philosophy and aesthetics: Negative Dialectics and Aesthetic Theory.
The legacy of Bertolt Brecht is much contested, whether by those who wish to forget or to vilify his politics, but his stature as the outstanding political playwright and poet of the twentieth century is unforgettably established in this major critical work. Fredric Jameson elegantly dissects the intricate connections between Brecht's drama and politics, demonstrating the way these combined to shape a unique and powerful influence on a profoundly troubled epoch.
An accessible introduction to the key writings on postmodernism by the influential Marxist critic.
Representing Capital, Fredric Jameson's first book-length engagement with Marx's magnum opus, is a unique work of scholarship that records the progression of Marx's thought as if it were a musical score.
Ideologies of Theory, updated and available for the first time in a single volume, brings together theoretical essays that span Fredric Jameson's long career as a critic. They chart a body of work suspended by the twin poles of literary scholarship and political history, occupying a space vibrant with the tension between critical exegesis and the Marxist intellectual tradition.
VersoReadingLists
The Benjamin Files
by Fredric Jameson
Allegory and Ideology
The Ancients and the Postmoderns
An American Utopia
Brecht and Method
Aesthetics and Politics
by Theodor Adorno, Walter Benjamin, et al.
The Hegel Variations
The Antinomies of Realism
The Modernist Papers
A Singular Modernity
Valences of the Dialectic
Archaeologies of the Future
Late Marxism


Having acne-prone skin isn't fun, and when you buy a new product you want to make sure it doesn't make your acne worse.
Here are my top 5 all-time favoritefacial cleansersfor acne and every skin care concern in between!
This is a great product for literally any skin type – gentle enough for sensitive skin, but effective enough for oily skin. It has minimal ingredients and is pH-balanced, meaning it won't strip your skin but it will leave it in the best condition possible! It also contains tea tree oil which fights acne while you cleanse.
COSRX is so amazing they make this list twice.
If you have oily, acne-prone skin, adding this cleanser to your routine can help fight pimples before they start. The low concentration of salicylic acid means it's even suitable for sensitive skin types! Its creamy texture rinses off without leaving a residue or dryness behind.
While not everyone is a fan of the bar soap style, nothing beats this sulfur soap for persistent, stubborn acne. When my skin is acting up, this little baby takes care ofit no problem.
I love how affordable it is, and that it doesn't leave my skin dry and parched like most bar soaps do.
Dry and sensitive skin, meet your match.This is perfect for aging skin types, too, because it works using skin-friendly oils.This cleanser is formulated so the oils do the hard work removing gunk from your pores, and then wash away with water, leaving your skin feeling hydratedandclean.
Other than a few essential oils, this cleanser is pretty basic and perfect for anyone with skin sensitive to additives and perfumes. While this cleanser doesn't have many bells and whistles, that may be exactly what you need for your skin.
If you found this list helpful, feel free to share it with your friends so they can find the rightfacial cleansersfor their skin, too!


text:
Now reading: Glycerin Might Be The Holy Grail Ingredient for Treating Dry SkinHere's How to Use It
Glycerin Might Be The Holy Grail Ingredient for Treating Dry SkinHere's How to Use It
Chances are, you're most likely familiar with popular moisturizing skincare ingredients like cocoa butter, hyaluronic acid, and squalane, but there is one intense hydrator that offers incredible benefits for those with dry skin and is not given proper credit. We're talking about glycerin.
You've probably heard of glycerin, even if you don't know exactly what it is or where it comes from. It's a time-tested skincare ingredient present in a slew of products—perhaps some you're already using. In fact, it's so widely used that Joshua Zeichner, MD, director of cosmetic and clinical research in dermatology at Mount Sinai Hospital in New York City, notes that it's a mainstay on the ingredient lists of almost all skincare products, ranging from cleansers to moisturizers to sunscreens.
What is glycerin?
Simply put, glycerin is a clear, oily, odorless liquid that comes from a variety of animal, chemical, or plant sources, says Dr. Zeichner. It can be derived from animal fats, synthetically from petroleum, or from plant oils such as soybean, coconut, or palm, he adds.
In the beauty and skincare world, vegetable glycerin—which means it comes from plant oils—and glycerin are essentially interchangeable. Whether a product contains vegetable glycerin or glycerin, the actual molecule (and function) is the same, explains Morgan Rabach, MD, dermatologist and co-founder of LM Medical NYC.
It really just boils down to personal preference. For example, vegans will want to look for products that use vegetable glycerin. And luckily, this isn't super difficult, considering vegetable glycerin is the most commonly used form, because it can be responsibly produced from natural sources, says Dr. Zeichner.
The benefits of glycerin for your skin
Glycerin is a humectant, which means that it brings moisture to an area (namely, the top layer of your skin) by attracting water from the air to the area and keeping it there, says Dr. Rabach. In other words, it effectively works like a sponge, helping skin retain moisture and keeping it hydrated.
Derms are nearly universally in favor of this moisturizing ingredient. Even though it's an intense hydrator, glycerin is still lightweight, non-comedogenic (translation: it won't clog your pores), and gentle enough for all skin types. "Glycerin is extremely mild and well-tolerated, and can be used by all skin types," says Dr. Zeichner. He notes that it's particularly useful for people with seriously dry skin.
Dermatologist-approved products with glycerin
If you take a look at the ingredient label of any skincare product in your medicine cabinet, you're almost guaranteed to find glycerin. Glycerin is combined with other hardworking ingredients in your moisturizers, cleansers, and serums, which help to harness its hydrating benefits to moisturize skin.
While it's more than likely already a part of your skincare routine, derms offer up their favorite products featuring glycerin that you can add to your beauty haul.
Elizabeth Arden Ceramide Lift and Firm Night Cream
Glycerin and ceramides are both high on the ingredient list of this deeply hydrating night cream, of which Debra Jaliman, MD, a dermatologist based in New York City, is a fan. The result: a moisturizer that works to protect the skin's barrier while you sleep and helps skin appear firmer and more lifted.
To buy: Elizabeth Arden Ceramide Lift and Firm Night Cream ($82; dermstore.com)
Neutrogena Facial Cleansing Bar For Acne-Prone Skin
A favorite of Dr. Rabach, this mild cleansing bar removes excess oil from skin and won't clog pores, but also, thanks to glycerin's hydrating properties, won't leave skin dry either.
To buy: Neutrogena Facial Cleansing Bar For Acne-Prone Skin ($4 for 3-pack, target.com)
Burt's Bees Burt's Bees Renewal Intensive Firming Serum
Boasting skin-firming bakuchiol—a botanical ingredient often compared to retinol—and a combination of glycerin, sunflower seed oil, and vitamin E, this affordable serum hydrates, nourishes, and protects skin, says Dr. Zeichner. Plus, it's safe enough for those who are more sensitive to harsh ingredients.
To buy: Burt's Bees Burt's Bees Renewal Intensive Firming Serum ($20, target.com)
Lancôme Eau Fraiche Douceur Micellar Cleansing Water
Another pick from Dr. Jaliman, this glycerin-fortified micellar water keeps skin hydrated even when taking off makeup. It lifts and removes dirt, grime, and even pesky waterproof mascara, while purifying and toning skin.
To buy: Lancome Eau Fraiche Douceur Micellar Cleansing Water ($40, sephora.com)
La Roche Posay Lipikar Balm AP+
To buy: La Roche Posay Lipikar Balm AP+ (from $15, dermstore.com)
Solara Clean Freak Nutrient Boosted Daily Unscented Sunscreen
Dr. Zeichner is a fan of this mineral sunscreen with SPF 30, which feels like a creamy moisturizer. It features a blend of antioxidants, botanical actives, and glycerin to hydrate and protect skin from environmental stressors and sun damage.
To buy: Solara Clean Freak Nutrient Boosted Daily Unscented Sunscreen ($40, freepeople.com)
Vanicream Unscented Gentle Facial Cleanser
This cleanser is a standby for Dr. Jaliman, because of it's hydrating properties and fragrance-free, noncomedogenic formula—making it safe for even the most sensitive skin. It'll remove your makeup and get rid of shine without drying out your skin.
To buy: Vanicream Unscented Gentle Facial Cleanser ($9, target.com)
Inn Beauty Project Electrify Lightning Bolt Eye Mask
To buy: innbeautyproject.com/collections/products/products/electrify-4pk' target='_blank' rel='noopener noreferrer' >Inn Beauty Project Electrify Lightning Bolt Eye Mask ($20 for 4-pack, innbeautyproject.com)


In period from January 2009 until May 2010, EELC participated as a partner in a project carried out by Justice & Environment (J&E) - a network of European environmental law organizations - titled "Aarhus Convention – practical meaning for EU Citizens. Promoting and harmonizing access to environmental justice in Europe".
EELC participated in the activities of the project aimed at giving an overview of the practice of implementation of Aarhus Convention in Member States.
Report about Price of Justice, comparing costs of administrative and judicial procedures in different European countries.
The materials of the project are also available on the homepage of Justice & Environment.
The project was supported by the Dutch Ministry of Housing, Spatial Planning and Environment (VROM).


We are looking for an ASO (App Store Optimization) Expert. Applicant should be capable of marketing Apps and Games to get Increased downloads, Stable ratings and Top ranking on Google Play Store and Apple App Store. A good analyst of different apps store markets who can recommend and suggest games relevant to top trends and user demands.
A MUST! Writing for digital marketing, marketing, technology or similar fields Experience with SEO tactics and strategies is a plus Must be able to write and edit a large amount of content at a time. Content writing. Description writing for games/apps. and how each platform can be deployed in different scenarios.
A mobile games publishing company.


text:
Educational and Cultural Resources
The mission of the Office for Diversity, Equity, & Inclusion (ODEI) at SRSU is to create a campus environment where all students, staff, and faculty are welcome and included. ODEI creates a network of support programs for students, staff, and faculty that provide opportunities for meaningful cross-cultural interactions and discourse that promote respect for diversity and equity. We strive to create a campus climate in which the benefits of multiculturalism, diversity, and equity are appreciated and valued. Additionally, we work with offices, departments, programs, and student organizations across our campuses to host cultural celebrations and activities that are educational and that enhance our students' abilities to succeed in a global community.
Office for Diversity, Equity, & Inclusion
Savannah L. Williamson, Ph.D.
Coordinator for Diversity, Equity, & Inclusion
Morgan University Center, UC 212
odei@sulross.edu
Phone: New Ext# Coming Soon
About the Office – Our Objectives:
Development of Cultural Competence: Promote understanding and appreciation of cultural differences and similarities
Focus on Identity and Culture: Concentration on specific targeted communities related to ability, status, age, ethnicity, gender, national origin, native language, race, religion, sexual orientation, globalization, and socioeconomic background.
Commitment to Diversity Issues Today: Programs celebrate differences and sameness, and bring awareness to matters of social reform.
Living the Dream Mural:
"Living the Dream" brochure
Division of Educational and Cultural Resources / Office for Diversity, Equity, & Inclusion
Alpine TX 79832
New Ext# Coming Soon
The President's Office
Center for Big Bend Studies